diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19092ce..8b4dd84 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,11 @@ -# Release: push a tag v* and this builds the sqlshape binary for each platform, packs it, -# and publishes a GitHub Release with checksums. +# Release: push a tag v* and this cross-compiles the sqlshape binary for every platform, +# packs it, and publishes a GitHub Release with checksums. # # git tag v0.1.0 && git push origin v0.1.0 # -# The binary links libpg_query through cgo, so every platform is built on its own runner -# rather than cross-compiled. Windows is not built here (libpg_query does not build reliably -# with the toolchains on the Windows runners); `go install` still works there with a C -# compiler installed. +# The binary is a plain Go build (libpg_query runs as WebAssembly, no cgo), so one runner +# builds every target; the smoke test runs the runner's own (linux/amd64) binary as a +# vettool over the examples, the only one it can execute. # # `go install github.com/kr9ly/sqlshape/cmd/sqlshape@` needs nothing from this # workflow: it reads the tag straight from the module proxy. @@ -20,14 +19,8 @@ permissions: contents: write jobs: - build: - strategy: - matrix: - include: - - { os: ubuntu-latest, goos: linux, goarch: amd64 } - - { os: ubuntu-24.04-arm, goos: linux, goarch: arm64 } - - { os: macos-14, goos: darwin, goarch: arm64 } - runs-on: ${{ matrix.os }} + release: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 @@ -36,41 +29,32 @@ jobs: - name: Build env: - CGO_ENABLED: "1" - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} + CGO_ENABLED: "0" run: | - go build -trimpath \ - -ldflags "-s -w -X github.com/kr9ly/sqlshape/internal/cli.version=${GITHUB_REF_NAME}" \ - -o sqlshape ./cmd/sqlshape + mkdir dist + for target in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64; do + goos=${target%/*}; goarch=${target#*/} + bin=sqlshape; [ "$goos" = windows ] && bin=sqlshape.exe + GOOS=$goos GOARCH=$goarch go build -trimpath \ + -ldflags "-s -w -X github.com/kr9ly/sqlshape/internal/cli.version=${GITHUB_REF_NAME}" \ + -o "build/$goos-$goarch/$bin" ./cmd/sqlshape + name="sqlshape_${GITHUB_REF_NAME}_${goos}_${goarch}" + mkdir "$name" + cp "build/$goos-$goarch/$bin" LICENSE NOTICE README.md "$name"/ + if [ "$goos" = windows ]; then + zip -qr "dist/$name.zip" "$name" + else + tar -czf "dist/$name.tar.gz" "$name" + fi + rm -r "$name" + done + ls -la dist - name: Smoke test - run: .github/scripts/smoke.sh ./sqlshape "$GITHUB_REF_NAME" - - - name: Pack - run: | - name="sqlshape_${GITHUB_REF_NAME}_${{ matrix.goos }}_${{ matrix.goarch }}" - mkdir "$name" - cp sqlshape LICENSE NOTICE README.md "$name"/ - tar -czf "$name.tar.gz" "$name" - - - uses: actions/upload-artifact@v4 - with: - name: sqlshape_${{ matrix.goos }}_${{ matrix.goarch }} - path: sqlshape_*.tar.gz - - release: - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - path: dist - merge-multiple: true + run: .github/scripts/smoke.sh ./build/linux-amd64/sqlshape "$GITHUB_REF_NAME" - name: Checksums - run: cd dist && sha256sum sqlshape_*.tar.gz > checksums.txt + run: cd dist && sha256sum sqlshape_* > checksums.txt - name: Publish env: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 590defe..231de79 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -49,11 +49,16 @@ jobs: run: go build -o sqlshape ./cmd/sqlshape && .github/scripts/smoke.sh ./sqlshape # coverage counts every package except the catalog generator (a manual tool run - # against a PostgreSQL) and the 5-statement main + # against a PostgreSQL) and the 5-statement main; the generated protobuf node types + # (internal/pgparse/pg_query.pb.go, 40k lines of accessors) are dropped from the profile. + # -count=1: a cached test result replays the profile it recorded, with block positions + # from the sources of that run; after an edit to a package the cached package does not + # depend on, the stale blocks no longer line up and the merged total drops by ten points - name: Test run: | pkgs=$(go list ./... | grep -v -e /internal/catalog/gen -e /cmd/sqlshape | paste -sd,) - go test ./... -coverpkg="$pkgs" -coverprofile=cover.out -timeout 20m + go test ./... -count=1 -coverpkg="$pkgs" -coverprofile=cover.out -timeout 20m + grep -v '/pg_query\.pb\.go:' cover.out > cover.filtered && mv cover.filtered cover.out # coverage badge: statement coverage of the whole module, committed as an SVG so the # README can show it without a third-party service; --min makes it a regression gate @@ -70,3 +75,30 @@ jobs: git commit -m "CI: coverage badge [skip ci]" git push fi + + # The analyzer against PostgreSQL 18: the embedded catalog loads, the oracle boots, and + # the regress probe replays 18's corpus (asserting its baseline once there is one). + pg18: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + + - name: Cache PostgreSQL 18 binaries and regress corpus + uses: actions/cache@v4 + with: + path: ~/.cache/sqlshape + key: sqlshape-pg18-${{ hashFiles('internal/oracle/oracle.go', 'internal/analyze/testdata/tools/fetch-regress.sh') }} + + - name: Fetch regress corpus + run: internal/analyze/testdata/tools/fetch-regress.sh REL_18_3 + + - name: Test + env: + SQLSHAPE_PG: "18" + run: | + go test ./internal/catalog ./internal/oracle -count=1 + go test ./internal/analyze -run 'TestRegress$' -count=1 -v -timeout 25m 2>&1 | grep -E 'statements:|hits|PASS|FAIL|ok ' diff --git a/CHANGELOG.md b/CHANGELOG.md index af2f4cf..e899e00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,38 @@ release it is a candidate for. ## [Unreleased] +## [1.2.0] - 2026-09-09 + +### Added + +- PostgreSQL 18. `schema.sql` declares its version with `-- sqlshape: postgres 18`, and the schema + and every statement are judged with 18's grammar and catalog: `RETURNING old` / `new` (with + `WITH (OLD AS ..., NEW AS ...)`), `WITHOUT OVERLAPS` keys and `PERIOD` foreign keys, `NOT ENFORCED` + constraints (which are no failure mode), named `NOT NULL` constraints, `VIRTUAL` generated columns, + and 18's own checks (a JSON_VALUE DEFAULT whose collation is not the RETURNING type's, a JSON path + that is not a jsonpath, stricter datetime and aclitem input, an outer-level aggregate over a nested + CTE). `pgtest` and the migration commands run the declared version's PostgreSQL; `diff`, `apply` + and `verify-schema` warn when the database runs another major version than the schema declares. +- `One` proves a single row through a temporal key: the scalar columns fixed by equality and the + range column equal to a known value or containing a known point (`valid_at @> {{.Day}}::date`). + +### Fixed + +- `SELECT DISTINCT ON` expressions are matched to the leading `ORDER BY` expressions by expression, + not by where each was written; the same expression in both no longer fails with 42P10. +- An UPDATE that assigns a generated column reports PostgreSQL's message (`column "b" can only be + updated to DEFAULT`) rather than INSERT's. + +### Changed + +- `schema.sql` must declare its PostgreSQL version (`-- sqlshape: postgres 17`); a schema without + the line is not read. Add the line to move from 1.1. +- The parser (libpg_query) is compiled to WebAssembly and run by wazero instead of being linked + through cgo. `go install` no longer needs a C compiler, and the binary is a plain Go build. + Parse trees, error messages and positions are unchanged. +- Prebuilt binaries for every platform, cross-compiled by one job: Linux, macOS and Windows, amd64 + and arm64 each (Windows and Intel macOS are new). + ## [1.1.0] - 2026-09-08 ### Added @@ -64,6 +96,7 @@ First release: `sqlshape.Query[R, P]` / `One[R, P]` templates checked by `go vet test oracle), the runtime on pgx, and `sqlshape diff` / `apply` / `verify-schema` for migrations from a declared schema. -[Unreleased]: https://github.com/kr9ly/sqlshape/compare/v1.1.0...HEAD +[Unreleased]: https://github.com/kr9ly/sqlshape/compare/v1.2.0...HEAD +[1.2.0]: https://github.com/kr9ly/sqlshape/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/kr9ly/sqlshape/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/kr9ly/sqlshape/releases/tag/v1.0.0 diff --git a/README.ja.md b/README.ja.md index 030ecb0..a796960 100644 --- a/README.ja.md +++ b/README.ja.md @@ -22,14 +22,16 @@ u, err := ByEmail.Get(ctx, db, struct{ Email string }{Email: email}) ## インストール -検査器とマイグレーションコマンドは1つのバイナリになっている: +検査器とマイグレーションコマンドは1つのバイナリになっている。Go 1.26以上で: ``` $ go install github.com/kr9ly/sqlshape/cmd/sqlshape@latest $ sqlshape version ``` -PostgreSQLのパーサ(libpg_query)をcgoでリンクするので、`go install`にはCコンパイラ(gccかclang)が必要。ビルド済みのバイナリ(Linuxはamd64とarm64、macOSはApple Silicon)は[releasesページ](https://github.com/kr9ly/sqlshape/releases)にある。Intel Macは`go install`でビルドする。 +ビルド済みのバイナリは[releasesページ](https://github.com/kr9ly/sqlshape/releases)にある。Linux・macOS・Windowsそれぞれamd64とarm64で、`sqlshape___.tar.gz`(Windowsは`.zip`)と`checksums.txt`。展開して`sqlshape`を`PATH`に置く。 + +検査に他の準備は要らない。PostgreSQLのパーサ(libpg_query、対応するメジャー版ごとに1つ)はWebAssemblyとして埋め込まれwazeroで動くので、Cコンパイラもリンクするライブラリも無い。初回だけモジュールのコンパイルに1秒ほどかかり、結果はユーザーのキャッシュディレクトリ(Linuxでは`~/.cache/sqlshape`)に置かれる。`pgtest`とマイグレーション系コマンドは本物のPostgreSQLでスキーマを動かすので、初回に宣言した版のサーババイナリを同じキャッシュにダウンロードする([migrations.ja.md](docs/migrations.ja.md)の要件を参照)。 ランタイムは通常のGoモジュール: @@ -43,6 +45,7 @@ $ go get github.com/kr9ly/sqlshape ```sql -- schema.sql +-- sqlshape: postgres 17 CREATE TABLE users ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email text NOT NULL UNIQUE, @@ -51,6 +54,8 @@ CREATE TABLE users ( ); ``` +`schema.sql`の最初の行が、どの版のPostgreSQL向けのスキーマかを名乗る。すべての文はその版の文法とカタログで判定される(17と18に対応)。 + ```go // users.go type User struct { @@ -152,9 +157,9 @@ $ sqlshape verify-schema -db "$DSN" # ドリフト検出: データベ ## 互換性 -PostgreSQL 17の構文はすべて扱える。SELECTとDML、MERGE、CTE、ウィンドウ関数、GROUPING SETS、SQL/JSON、範囲型、citextやhstoreなどの拡張、ビュー・関数(SQLとPL/pgSQLの本体まで)・トリガー・ポリシーを含むDDL。アナライザーはPostgreSQL自身のカタログから組み上げたpure Goの実装で、検査時にPostgreSQLへ接続することはない。 +PostgreSQL 17と18に対応し、どちらかは`schema.sql`が宣言する。構文はPostgreSQL自身のものである。パーサはその版のlibpg_queryなので、サーバが読める文は検査器も同じように読む。SELECTとDML、MERGE、CTE、ウィンドウ関数、GROUPING SETS、SQL/JSON、範囲型、18の`RETURNING old` / `new`と時制キー、citextやhstoreなどの拡張、ビュー・関数(SQLとPL/pgSQLの本体まで)・トリガー・ポリシーを含むDDL。アナライザーはその版のカタログから組み上げたpure Goの実装で、検査時にPostgreSQLへ接続することはない。 -「すべて」の裏付けはPostgreSQL自身の回帰テストである。`src/test/regress`の22,000文を本物のPostgreSQL 17と並走させ、パラメータの型・結果列・エラーの判定が一致することを確認している。一致しないのは19件で、行レベルセキュリティの再帰、権限、サーバー内部のエラーなど、静的解析では判定できないもの。この突き合わせは`go test ./...`の一部なので、新しい不一致が出ればテストが失敗する。 +判定の裏付けはPostgreSQL自身の回帰テストである。`src/test/regress`の文を、アナライザーと同じ版の本物のPostgreSQLに並走させ、パラメータの型・結果列・エラーの判定が一致することを確認している。一致しないのは17で22,103文のうち19件、18で23,384文のうち31件。全件を`internal/analyze/testdata/regress_baseline_.txt`に列挙してあり、どれも静的解析では判定できないもの(行レベルセキュリティの再帰、権限、サーバー内部のエラー)か、検査器が正しくサーバのDescribeには見えないもの(INSERTの`RETURNING old`がNULLであること)である。この突き合わせは`go test ./...`の一部なので、新しい不一致が出ればテストが失敗する。 ## License diff --git a/README.md b/README.md index 717e29f..a104004 100644 --- a/README.md +++ b/README.md @@ -31,17 +31,23 @@ u, err := ByEmail.Get(ctx, db, struct{ Email string }{Email: email}) ## Install -The checker and the migration commands are one binary: +The checker and the migration commands are one binary. With Go 1.26 or newer: ``` $ go install github.com/kr9ly/sqlshape/cmd/sqlshape@latest $ sqlshape version ``` -It links PostgreSQL's parser (libpg_query) through cgo, so `go install` needs a C compiler (gcc or -clang) on the machine. Prebuilt binaries for Linux (amd64, arm64) and macOS (Apple Silicon) are on -the [releases page](https://github.com/kr9ly/sqlshape/releases); an Intel Mac builds it with -`go install`. +Or take a prebuilt binary from the [releases page](https://github.com/kr9ly/sqlshape/releases): +Linux, macOS and Windows, amd64 and arm64 each, as `sqlshape___.tar.gz` (`.zip` +on Windows) with `checksums.txt` beside them. Unpack and put `sqlshape` on your `PATH`. + +Nothing else is needed to check code. PostgreSQL's parser (libpg_query, one per supported major +version) is embedded as WebAssembly and runs on wazero, so there is no C compiler to install and no +library to link; the first run compiles the module (about a second) and caches the result under the +user cache directory (`~/.cache/sqlshape` on Linux). `pgtest` and the migration commands, which run +your schema on a real PostgreSQL, download the declared version's server binaries into the same +cache on first use (see [migrations.md](docs/migrations.md#requirements)). The runtime is an ordinary Go module: @@ -57,6 +63,7 @@ compatible; what the checker reports may grow with minor versions. ```sql -- schema.sql +-- sqlshape: postgres 17 CREATE TABLE users ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email text NOT NULL UNIQUE, @@ -65,6 +72,9 @@ CREATE TABLE users ( ); ``` +The first line of `schema.sql` names the PostgreSQL version the schema is written for; every +statement is judged with that version's grammar and catalog (17 and 18 are supported). + ```go // users.go type User struct { @@ -195,15 +205,20 @@ rename or the removal of an enum label, are declared in `schema.sql` with `-- @m ## Compatibility -All of PostgreSQL 17's syntax is understood: SELECT and DML, MERGE, CTEs, window functions, -GROUPING SETS, SQL/JSON, ranges, extensions such as citext and hstore, and DDL including views, -functions (SQL and PL/pgSQL bodies), triggers and policies. The analyzer is a pure-Go implementation built from PostgreSQL's -own catalog; checking never connects to a PostgreSQL. - -"All" is backed by PostgreSQL's own regression suite: the 22,000 statements of `src/test/regress` -are run through the analyzer and a real PostgreSQL 17 side by side, and parameter types, result -columns and errors must agree. They disagree on 19, all of them things static analysis cannot -decide (row-level security recursion, permissions, server internals). The comparison is part of +PostgreSQL 17 and 18; `schema.sql` declares which. The syntax is PostgreSQL's own: the parser is +libpg_query of that version, so everything the server parses, the checker parses the same way — +SELECT and DML, MERGE, CTEs, window functions, GROUPING SETS, SQL/JSON, ranges, `RETURNING old` / +`new` and temporal keys on 18, extensions such as citext and hstore, and DDL including views, +functions (SQL and PL/pgSQL bodies), triggers and policies. The analyzer is a pure-Go implementation +built from that version's catalog; checking never connects to a PostgreSQL. + +The judgment is backed by PostgreSQL's own regression suite: the statements of `src/test/regress` +are run through the analyzer and a real PostgreSQL of the same version side by side, and parameter +types, result columns and errors must agree. On 17 they disagree on 19 of 22,103 statements, on 18 +on 31 of 23,384; every one is listed (`internal/analyze/testdata/regress_baseline_.txt`), +and each is either something static analysis cannot decide (row-level security recursion, +permissions, server internals) or a case where the checker is right and the server's Describe +cannot say (the NULLs of `RETURNING old` after an INSERT). The comparison is part of `go test ./...`, so a new disagreement fails the build. ## License diff --git a/docs/checks.ja.md b/docs/checks.ja.md index d72014a..5010b04 100644 --- a/docs/checks.ja.md +++ b/docs/checks.ja.md @@ -29,6 +29,7 @@ - [呼び出し元ごとに規約を変える(`context`)](#呼び出し元ごとに規約を変えるcontext) - [Goの外のSQLにも同じ規約を適用する(`sqlshape check`)](#goの外のsqlにも同じ規約を適用するsqlshape-check) - [第3部 — 文の外側](#第3部--文の外側) + - [スキーマはPostgreSQLの版を名乗る(`postgres`)](#スキーマはpostgresqlの版を名乗るpostgres) - [sqlshapeを通さないSQLを書かない(`-raw-sql`)](#sqlshapeを通さないsqlを書かない-raw-sql) - [パッケージは自分のスキーマだけを参照する(`-schemas`)](#パッケージは自分のスキーマだけを参照する-schemas) - [スキーマ自体の問題](#スキーマ自体の問題) @@ -115,7 +116,7 @@ type User struct { } ``` -補足。列がNULLになりうるかは、NOT NULL制約と主キー、WHERE句(`deleted_at IS NOT NULL`や`deleted_at = ...`があればNULLではない)、外部結合(内側の列はNULLになりうる)、関数(引数がNULLでない`strict`関数の結果はNULLでない、`coalesce(x, 0)`はNULLでない。ただし一部のstrictな組み込み関数・演算子は報告するものが無いとNULLを返す。`meta ->> 'key'`もその一つ)、ビュー自身のWHERE句から判定する。ビューは下敷きの列のNOT NULLをPostgreSQL自身と同じように動的に追いかける。後から`ALTER TABLE ... DROP NOT NULL`がベーステーブルに入れば、ビューの連鎖を通じても、ビュー自身のWHERE句をくぐり抜けても反映される。判定より自分の方が正しいと分かっているなら、Go側は`col:",notnull"`タグ、SQL側はテンプレートの`-- sqlshape: not null deleted_at`行で上書きできる。関数の戻り値は`schema.sql`の`CREATE FUNCTION`の直上に`-- sqlshape: not null`と書く。 +補足。列がNULLになりうるかは、NOT NULL制約と主キー、WHERE句(`deleted_at IS NOT NULL`や`deleted_at = ...`があればNULLではない)、外部結合(内側の列はNULLになりうる)、関数(引数がNULLでない`strict`関数の結果はNULLでない、`coalesce(x, 0)`はNULLでない。ただし一部のstrictな組み込み関数・演算子は報告するものが無いとNULLを返す。`meta ->> 'key'`もその一つ)、ビュー自身のWHERE句から判定する。ビューは下敷きの列のNOT NULLをPostgreSQL自身と同じように動的に追いかける。後から`ALTER TABLE ... DROP NOT NULL`がベーステーブルに入れば、ビューの連鎖を通じても、ビュー自身のWHERE句をくぐり抜けても反映される。判定より自分の方が正しいと分かっているなら、Go側は`col:",notnull"`タグ、SQL側はテンプレートの`-- sqlshape: not null deleted_at`行で上書きできる。関数の戻り値は`schema.sql`の`CREATE FUNCTION`の直上に`-- sqlshape: not null`と書く。 `RETURNING`の`old.col`はINSERTの後、`new.col`はDELETEの後(PostgreSQL 18)、列の宣言に関わらずNULLになりうる。書き込みのその側には行が無い。 #### 一部の分岐だけが選ぶ列はNULLを受けられる型で受ける @@ -593,7 +594,7 @@ _, err := CreateCustomer.First(ctx, db, p) if sqlshape.Violates(err, "customers_email_key") { ... } ``` -補足。列挙されるのは、一意制約と主キー、外部キーの両方向(挿入する行が存在しない親を参照する、削除する行がまだ子から参照されている)、EXCLUDE制約、CHECK、ドメインのCHECK、書き込む値がNULLになりうる場合のNOT NULL。パラメータ由来のNULLは、そのフィールドがnilを表せない型(`string`など)なら候補から外れる。 +補足。列挙されるのは、一意制約と主キー、外部キーの両方向(挿入する行が存在しない親を参照する、削除する行がまだ子から参照されている)、EXCLUDE制約、CHECK、ドメインのCHECK、書き込む値がNULLになりうる場合のNOT NULL。パラメータ由来のNULLは、そのフィールドがnilを表せない型(`string`など)なら候補から外れる。 `NOT ENFORCED`と宣言したCHECKと外部キー(PostgreSQL 18)は決して失敗しないので、列挙されない。 参照される側のキーを変えるDELETEやUPDATEは、外部キー自体が変更を拒む場合(`NO ACTION` / `RESTRICT`)だけでなく、その`ON DELETE` / `ON UPDATE`アクションが参照する側の行に対して行うことを通じても失敗しうる。`SET NULL`は参照列のNOT NULL制約に触れうる、`SET DEFAULT`は同じ外部キーに再び触れうる(デフォルト値が親に存在するとは限らない)うえデフォルトが無ければ同じNOT NULLにも触れうる、`CASCADE`は参照する側の行を削除(または更新)し、それはさらに一段下で同じように検査される——したがって`ON DELETE CASCADE`が連鎖する外部キーは、何段も先のテーブルで失敗することがある。 @@ -695,7 +696,7 @@ var ByEmail = sqlshape.One[User, struct{ Email string }](` SELECT id, email FROM users WHERE email = {{.Email}}`) ``` -補足。1行以下と言えるのは、FROMに現れるすべてのテーブルについて、その一意キー(主キー、`UNIQUE`、一意インデックス、またはWHERE句が同じ条件を含む部分一意インデックス)がリテラル・パラメータ・外側の参照・相関の無いスカラーサブクエリのいずれかと等値で固定されているとき。等値はJOIN(外部結合のON句はNULLになりうる側だけを固定する)、ビュー、サブクエリ、CTEを通して追跡する。`GROUP BY`の無い集約、定数の`LIMIT 0` / `LIMIT 1`、FROMの無いSELECT、1行の`VALUES`、1行の`INSERT ... RETURNING`も1行以下と見なす。`FULL JOIN`は決して1行以下にならない。`DEFERRABLE`と宣言したキーも同様——一意性がコミットまで検査されないため、そのトランザクションが生きている間は同じ値を持つ2行が存在しうる。 +補足。1行以下と言えるのは、FROMに現れるすべてのテーブルについて、その一意キー(主キー、`UNIQUE`、一意インデックス、またはWHERE句が同じ条件を含む部分一意インデックス)がリテラル・パラメータ・外側の参照・相関の無いスカラーサブクエリのいずれかと等値で固定されているとき。等値はJOIN(外部結合のON句はNULLになりうる側だけを固定する)、ビュー、サブクエリ、CTEを通して追跡する。`GROUP BY`の無い集約、定数の`LIMIT 0` / `LIMIT 1`、FROMの無いSELECT、1行の`VALUES`、1行の`INSERT ... RETURNING`も1行以下と見なす。`FULL JOIN`は決して1行以下にならない。`DEFERRABLE`と宣言したキーも同様——一意性がコミットまで検査されないため、そのトランザクションが生きている間は同じ値を持つ2行が存在しうる。時制キー(`PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)`、PostgreSQL 18)は、スカラー列が等値で固定され、範囲列が既知の値と等しいか、要素型の既知の点を含む(`valid_at @> {{.Day}}::date`)ときに固定される。同じ`id`の行どうしは範囲が重ならないので、1つの点を含む行は多くても1つである。既知側が範囲だと足りない(空の範囲はどの範囲にも含まれる)。重なり(`&&`)でも足りない。 #### すべての分岐で証明できなければならない @@ -1028,6 +1029,27 @@ sqlshape: 2 finding(s) ## 第3部 — 文の外側 +### スキーマはPostgreSQLの版を名乗る(`postgres`) + +`schema.sql`は、どの版のPostgreSQL向けに書かれているかを1回宣言する。この宣言が判定の土台になる。スキーマと全部の文を読む文法、型・関数・演算子を解決するカタログ、`pgtest`とマイグレーション系コマンドが起動するPostgreSQLの版が、ここで決まる。宣言の無いスキーマは読まない。 + +```sql +-- sqlshape: postgres 18 +CREATE TABLE ... +``` + +NG + +- `schema.sql`(ディレクトリなら`*.sql`のどれか)に宣言が無い +- sqlshapeが持っていない版(メッセージが対応版を列挙する。17と18) +- 値の違う宣言が2つある + +OK + +- ファイルのどこに書いてもよい。同じ値なら繰り返しもよい + +新しい版だけが受け付ける構文(`RETURNING old.*`、`WITHOUT OVERLAPS`、`NOT ENFORCED`、`VIRTUAL`な生成列は18のもの)は、古い版を宣言していれば構文エラーになる。その版のサーバに流したときと同じ結果である。PostgreSQLの版を上げる作業は、この数字を変えて検査器の報告を読むことになる。 + ### sqlshapeを通さないSQLを書かない(`-raw-sql`) 実行時に組み立てた文字列でpgxや`database/sql`の`Query` / `Exec`を呼ぶことは、テンプレートの保証が届かない穴になる。 diff --git a/docs/checks.md b/docs/checks.md index 1af7cfc..2b1976c 100644 --- a/docs/checks.md +++ b/docs/checks.md @@ -42,6 +42,7 @@ statement: the Go code around it, and the schema itself. - [Different callers, different rules (`context`)](#different-callers-different-rules-context) - [The same rules for SQL outside Go (`sqlshape check`)](#the-same-rules-for-sql-outside-go-sqlshape-check) - [Part 3 — Outside the statement](#part-3--outside-the-statement) + - [The schema names its PostgreSQL version (`postgres`)](#the-schema-names-its-postgresql-version-postgres) - [Do not run SQL that bypasses sqlshape (`-raw-sql`)](#do-not-run-sql-that-bypasses-sqlshape--raw-sql) - [A package references only its schemas (`-schemas`)](#a-package-references-only-its-schemas--schemas) - [Problems in the schema itself](#problems-in-the-schema-itself) @@ -142,7 +143,7 @@ tracks its underlying column's NOT NULL live, the way PostgreSQL itself does: a and past whatever the view's own WHERE clause does. If you know better than the checker, override it on the Go side with the `col:",notnull"` tag or on the SQL side with a `-- sqlshape: not null deleted_at` line in the template. For a function's result, put -`-- sqlshape: not null` above its `CREATE FUNCTION` in `schema.sql`. +`-- sqlshape: not null` above its `CREATE FUNCTION` in `schema.sql`. In a `RETURNING` list, `old.col` after an INSERT and `new.col` after a DELETE (PostgreSQL 18) may be NULL whatever the column declares: the row does not exist on that side of the write. #### A column only some branches select needs a field that can hold NULL @@ -673,7 +674,7 @@ if sqlshape.Violates(err, "customers_email_key") { ... } Listed are unique constraints and primary keys, foreign keys in both directions (the inserted row references a missing parent; the deleted row is still referenced by a child), EXCLUDE constraints, CHECKs, domain CHECKs, and NOT NULL where the value written may be NULL. A NULL that would come from -a parameter is dropped when the field's Go type cannot be nil (a `string`, for instance). +a parameter is dropped when the field's Go type cannot be nil (a `string`, for instance). A CHECK or foreign key declared `NOT ENFORCED` (PostgreSQL 18) never raises and is not listed. A DELETE or an UPDATE that changes a referenced key can also fail through what its foreign keys' `ON DELETE` / `ON UPDATE` actions do to the referencing rows, not just through a foreign key that @@ -814,7 +815,12 @@ through joins (an outer join's ON fixes only the nullable side), views, subqueri aggregate without `GROUP BY`, a constant `LIMIT 0` / `LIMIT 1`, a SELECT without FROM, a one-row `VALUES` and a one-row `INSERT ... RETURNING` are single too. A `FULL JOIN` never is, and neither is a key declared `DEFERRABLE`: its uniqueness is not enforced until commit, so a transaction can hold -two rows sharing it for its own lifetime. +two rows sharing it for its own lifetime. A temporal key (`PRIMARY KEY (id, valid_at WITHOUT +OVERLAPS)`, PostgreSQL 18) is fixed when its scalar columns are fixed by equality and its range +column either equals a known value or contains a known point of the element type (`valid_at @> +{{.Day}}::date`): no two rows with the same `id` have overlapping ranges, so one point lies in at +most one of them. A range on the known side does not do (it could be empty, which every range +contains), nor does an overlap. #### Every branch must be provable @@ -1240,6 +1246,33 @@ accepted as in vet. ## Part 3 — Outside the statement +### The schema names its PostgreSQL version (`postgres`) + +`schema.sql` declares, once, the PostgreSQL major version it is written for. The declaration +decides how everything else is judged: the grammar that parses the schema and every statement, the +catalog of types, functions and operators they resolve against, and the PostgreSQL `pgtest` and the +migration commands boot. A schema without it is not read. + +```sql +-- sqlshape: postgres 18 +CREATE TABLE ... +``` + +Rejected + +- no declaration anywhere in `schema.sql` (or in the directory's `*.sql` files) +- a version sqlshape does not embed (the message lists the supported ones: 17 and 18) +- two declarations that disagree + +OK + +- the declaration anywhere in the file, repeated with the same value + +A statement that only a newer version accepts (`RETURNING old.*`, `WITHOUT OVERLAPS`, `NOT +ENFORCED`, `VIRTUAL` generated columns are 18's) is a syntax error under an older declaration, as +it is on that server. Moving to a new PostgreSQL is changing the number and reading what the +checker reports. + ### Do not run SQL that bypasses sqlshape (`-raw-sql`) template guarantee does not cover. diff --git a/docs/design.md b/docs/design.md index c10a3bc..d195e1e 100644 --- a/docs/design.md +++ b/docs/design.md @@ -104,6 +104,18 @@ RDBMSを使うアプリケーションに要るのは4つ。SQLの構文と型 棄てた案。文をまたぐ規則(トランザクション内の対)を扱う層(分析の単位は文、という核の裁定と衝突する)。方言をまたぐ義務DSL(SQL式と少数の構造述語で足りる)。opt-outの命名規則によるパッケージ→文脈の写像(暗黙は読めない。パッケージコメントの`// sqlshape: context`とフラグで明示する)。 +### PostgreSQLの版は`schema.sql`が宣言し、版ごとに本物の文法とカタログで判定する + +決めたこと。`schema.sql`は`-- sqlshape: postgres 18`と1行で、どの版のPostgreSQL向けかを宣言する。宣言は必須で、無いファイルは読まない。この1行が、スキーマと全部の文を読む文法、型・関数・演算子を解決するカタログ、`pgtest`とマイグレーション系コマンドが起動するPostgreSQLの版を決める。パーサはlibpg_queryを版ごとにWebAssemblyへビルドして埋め込み、wazeroで実行する(`internal/pgparse`)。カタログは版ごとにその版の埋め込みPostgreSQLからdumpしたTSV(`internal/catalog/data//`)、オラクルとregressコーパスも版ごと。ノードのGo型は最新版の`pg_query.proto`から生成した1組だけを持ち、どの版の木もパーサのJSON出力をprotojsonで読む。古い版で名前が違うフィールドは読む前にJSON上で最新版の形に書き換える(`pgparse/upgrade.go`。17→18は`returningList`→`returningClause.exprs`、`is_enforced=true`、`generated_kind="s"`と、生の木には現れない3フィールドの削除)。版で判定が変わる規則はアナライザー内の版分岐(RETURNING old/new、セッションTZの略称、数値フィールドの厳格化、aclitemの引用符、JSON_VALUEの照合衝突、jsonpath引数の型、CTE越しの外側集約)。`diff` / `apply` / `verify-schema`は接続先の`server_version`が宣言と違うメジャー版なら警告して続行する。 + +理由。宣言版より新しい構文をその版の本物の文法が拒否するので、gram.yの差分表を持たずに済む。cgoが消えて`go install`にCツールチェーンが要らず、1つのランナーで全プラットフォームをクロスコンパイルできる。wasmモジュールは隔離されるので版ごとのパーサを同じバイナリに複数積める。JSON経路を選んだのは、protobufのフィールド番号をlibpg_queryが版ごとに振り直すためで(17→18で267フィールド、enum値434が変わった)、JSON経路のほうがprotobuf経路より速くもあった(1文215µs対273µs)。書き換え漏れはprotojsonが未知フィールドとして拒否するので黙って消えない。 + +棄てた案。① pg_query_goをforkしてcgoのまま版を積む(版ごとに別バイナリになる。pg_query_goのリリースを待つ形も変わらない)。② 版を宣言しないスキーマに最新のサポート版を既定として当てる(当初案。「既定が動いて何が判定されたか分からない」より、1行足してもらう方がよい。既定`pgparse.Default`はコードから組むスキーマ用のAPI上のフォールバックとして残る)。③ 版ごとのGo型を持つ(アナライザーを型で分岐させることになる)。④ 版ごとにprotobufのフィールド番号を変換する(JSONで済む)。 + +忠実度。regressコーパスをその版の本物と並走させた結果、17は22,103文で既知の不一致35、18は23,384文で47(`testdata/regress_baseline_.txt`)。18の47は17の既知集合と、RETURNING old/newのnullability 10件(INSERTのold・DELETEのnewはアナライザーがnullable、オラクルは列のNOT NULLしか見えない)、DO INSTEADルール付きDELETE RETURNINGの1件(アナライザーはPGと同じ0A000、オラクルのDescribeが空を返す)。pgparseの`TestCorpus`は17の43,226文が書き換え経由で読め、18のJSON経路がprotobuf経路と全一致することを検問する。 + +追従。新しいメジャー版は「版を1つ足す」作業で、手順は[`internal/pgparse/README.md`](../internal/pgparse/README.md)にまとめてある。libpg_queryのリリースを待つ形は変わらない(18は8か月遅れた)。サポート窓はPGの5年に合わせるが、まず17と18の2版でこの構造を作った。メジャー間で判定が変わるのは、構文の追加、カタログの追加・オーバーロードによる曖昧化・稀な削除、予約語の追加、ごく稀な型規則の変更で、regressコーパスの差分がそれを列挙する。 + ### スコープ外 FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(embedded PGの統計は本番と違う。性能の助言は構造的に判定できるもの、インデックスの先頭列とビューへの述語押し込みに限る)。初期リリースではPostgreSQL以外のRDBMS(下記「検討中」のMySQL参照)。 @@ -115,8 +127,9 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em | `sqlshape` | 公開API: `Query[R, P]` / `One[R, P]` / `Batch` / `Copy[R]` / `MatView`、pgx上のランタイム(行マッパー、型登録、`ConstraintError`、描画のバイト比較) | | `pgtest` | schema.sqlを適用した本物のPGをアプリケーションのテストに提供する。`Verify`がアナライザーとPGを突き合わせる | | `internal/expand` | テンプレートの全展開。`{{.X}}` → `$n`と`P`上のパス | +| `internal/pgparse` | パーサ。libpg_queryを版ごとにWebAssemblyへビルドして埋め込み、wazeroで実行する。`Version.Parse` / `Deparse` / `SplitWithScanner` / `ParsePlPgSqlToJSON`と、最新版のprotoから生成したノード型 | | `internal/schema` | libpg_queryでschema.sqlをカタログの上に載せる。テーブル・ビュー・enum・ドメイン・複合型・関数・制約・ポリシー・seed | -| `internal/catalog` | 埋め込みのpg_catalog(PG 17の型・関数・演算子・キャスト・集約)と拡張のdump | +| `internal/catalog` | 埋め込みのpg_catalog(版ごとの型・関数・演算子・キャスト・集約、`data//`)と拡張のdump | | `internal/analyze` | アナライザー本体。10章の型変換、スコープ、DML、`$n`推論、nullability、カーディナリティ、違反の列挙、PG互換のエラー。文の事実(`facts.Facts`)の生産と、義務の述語を事実の言語に落とす`Lower` | | `internal/facts` | アナライザーと義務検査の間のデータ契約。文種・スコープの木・葉・正規化述語・等値の辺・固定列・代入集合。パーサのノードを含まず、方言を知らない | | `internal/obligation` | 境界の規則。schema.sqlの`require` / `visible where`とvetのフラグを義務に読み、事実に対して履行を判定する([obligations.md](obligations.md))。`analyze`にも`vet`にも依存しない | @@ -127,8 +140,13 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em ## 検討中 - MySQLを、PostgreSQLとは別の実装としてサポートする。初期リリースの範囲外。方言をまたぐ共通DSLは作らない(作った瞬間にSQLをDSLに翻訳させる形に戻る)。代わりにプラットフォームごとに、そのDBの構文と型規則を実装したアナライザーと、そのDBのdumpを使うマイグレーション支援を持つ。共有するのはテンプレートの展開、`go/analysis`のフロントエンド、Go側の型照合の枠組み + - ライセンス(裁定 2026-09-09): MySQLサーバはGPLv2で、Apache 2.0のsqlshapeと同じ成果物には混ぜられない(libpg_queryの形が成立したのはPostgreSQL Licenseが寛容だったから)。文法・字句解析器・`strings/`を切り出したwasmは明確にGPLの派生物なので、MySQL対応は別モジュール・別リポジトリの`sqlshape-mysql`(vettoolのバイナリ)としてGPLv2で出す。ユーザーのアプリにリンクされるランタイム`sqlshape`パッケージはApacheのまま、パーサはツールの実行時にしか要らないので、GPLがユーザーのコードに及ばない(開発ツールがGPLなのはgccと同じ)。共有部分(analyzeの枠組み・expand・obligation・vetのフロントエンド)はApacheで公開し、GPL側がimportする — Apache→GPLの一方向は互換。関数表など「事実」のTSVはApache側にも置けるが、線引きの争いを避けるためまとめてGPL側に置く。退けた案: パーサを別プロセスにしてパイプで木を渡す(FSFは密なデータ交換を結合とみなし得るとしていて灰色、構造も歪む)、Apache 2.0の互換パーサ(TiDB parser / Vitess)を使う(原則を捨てる)、抽出を事実に限定して文法を手書きする(一番品質が欲しい文法が手書きになる) + - パーサと字句解析器(裁定 2026-09-09): MySQLサーバのソースから機械的に切り出し、libpg_queryと同じ形でwasmにする。原則は「本物から機械的に抽出したものを土台にし、手で書く部分を最小にする」。文法は`sql/sql_yacc.yy`(bison、18k行、`%expect 59`)からC++のアクション(`NEW_PTN`が923箇所)を剥がして規則・優先順位・トークンだけを残し、規則名と子要素だけの素の構文木(CST)を組む汎用アクションを機械生成してbisonに通す。字句解析器は`sql/sql_lex.cc`の`lex_one_token`(726行)と2トークン先読みの`MYSQLlex`(`WITH ROLLUP`等の合成)、`Lex_input_stream`(440行)、`find_keyword`(`sql/lex.h`の784語の表から`gen_lex_hash`が生成する完全ハッシュ)、`consume_comment`・`int_token`をそのまま使う。測ったところ、字句解析器がサーバ状態を読むのは5点だけ — `sql_mode`(`ANSI_QUOTES`の1箇所)、`default_collation_for_utf8mb4`、接続文字集合、コメント収集の`m_parser_state`、非推奨文字集合の`push_warning`(2箇所)— なのでTHDはこの5点を持つ数十行のshimで置き換える。文字の分類(`state_map` / `ident_map`)は`strings/sql_chars.cc`が文字集合のctype表から作るもので、`strings/`ライブラリごと取り込む(PGの`src/port`をlibpg_queryが抱えるのと同じ)。バージョンコメント`/*!80000 ... */`は`MYSQL_VERSION_ID`との比較なので、版ごとにビルドすれば自然に正しい。sqlshape用のASTへの変換だけが手書きで、CSTの規則名を読む。生成手段はこの裁定でbison + emccに決まる(goyaccでpure Goに持つ案は字句解析器の書き直しを伴うので原則に反する)。残る確認はスパイク: shimの表面積が本当に5点で閉じるか、抽出した文法とlexerがemccで通るか、`mysql-test/t`(1810ファイル)の受理率 + - `sql_mode`は判定を変えるので、版と同じくschema.sqlが宣言する(`-- sqlshape: mysql 8.4 sql_mode=...`の形は未決)。字句では`ANSI_QUOTES`、文法のアクションを剥がすので`PIPES_AS_CONCAT`(`||`)の意味はCST→ASTの変換で`sql_mode`を見て決める + - オプティマイザヒント(`/*+ ... */`)は別の文法`sql/sql_hints.yy`(725行)と`Hint_scanner`を持つ。同じ手順で後から足せる。sqlshapeの判定には効かないので初期は読み飛ばす + - カタログ(裁定 2026-09-09、測定に基づく): MySQLには`pg_proc`に当たる表がないが、組み込み関数の定義はソースにまとまっていて機械抽出できる。①関数表`sql/item_create.cc`の`func_array`(347エントリ): 名前 → Itemクラス × 引数個数(固定 / 最小・最大 / 偶奇)。②キーワード構文の関数(`CAST`・`TRIM`・`DATE_ADD`等、81クラス)は`sql_yacc.yy`のアクションの`NEW_PTN Item_func_*`に書かれているので、アクションを剥がす前に「規則 → Itemクラス」として拾う。③結果型の種別はItemクラスの継承から取れる: 登録277クラスの直接の基底は`Item_int_func`(77、LONGLONG)・`Item_str_func`(53、文字列)・`Item_dec_func` / `Item_real_func`(21、DOUBLE)・`Item_json_func`(10)・`Item_bool_func`(8)・日時系(9)・空間系(33)で大半が決まる。④引数型・NULL可・正確な結果型は各クラスの`resolve_type`(257個)にあり、その多くが宣言的な呼び出し — `param_type_is_default(from, to, TYPE)`(97箇所、引数の既定型)、`set_data_type_string / longlong / double / decimal / datetime / date / time / json`、`set_nullable`(82)、`aggregate_type`(引数型の合成)— で書かれているので、本体を字句的に読んで表にできる。⑤宣言的でない残り(`unsigned_flag`の伝播、長さ計算、引数で結果型が変わるもの)と④の検算は、本物のmysqld(配布tarballを`--initialize`で起こす。embedded-postgresの役)に①②から生成した`SELECT f(?, ...)`をプリペアドステートメントで問い、結果メタデータで埋める。「何が存在し何個の引数を取るか」を手で列挙しないのが要点で、抽出した表が計測の入力になる。型規則(暗黙変換・数値の昇格・文字列と数値の比較)は`Item_func::aggregate_type`と`item_cmpfunc.cc`の比較種別決定(`get_cmp_type`相当)を読んで移し、mysqldとの差分テストで検算する + - 回帰コーパスはMySQL自身の`mysql-test/t/*.test`。パーサの受理率と、オラクルとの差分probeの両方に使う + - 順序: パーサのスパイク(受理率で手段を裁定)→ 字句解析器 → CST→AST → スキーマローダー(CREATE TABLEの部分集合、`mysqldump`の正準形)→ アナライザーの型規則(mysqldをオラクルに差分テスト)→ テンプレート・vet・義務の結線(ここは共有部分なので薄い)。1.2の後 - TypeScriptフロントエンド。2つ目の言語フロントエンドで「核はSQLしか見ない」構想を検証する。言語非依存で共有するのは`internal/analyze`、`internal/schema`、マイグレーション一式、失敗モード・`One`の証明・境界の規則。言語依存はその言語のデファクトに合わせる: 呼び出し箇所の発見(TypeScript Compiler APIかtsc plugin、ESLintルール)、`R` / `P`相当の型解決(`query(sql)`)、PG型とTS型の対応表(pg / postgres.jsが実際に返す型)、ランタイム。最初の設計論点はテンプレート構文で、Goの`text/template`を持ち込まず、`sql\`...\``のタグ付きテンプレートと`${}`の断片で「有限の展開集合」を保つ方法(断片をリテラルの選択肢に限る、など)を決める。MySQLと同じく、`internal/vet`のPG固有型の切り出しが前提。横展開の見立て: 検査の大半(列と型の存在、失敗モード、`One`の証明、境界の規約、インジェクション保証、マイグレーション)はSQL側だけで閉じていてホスト言語の型を見ない。言語ごとに必須なのは「lintの口」「テンプレート定数の取り出し」「ランタイム」の3つで、`R` / `P`の型照合は静的型がある言語で足す層(動的型の言語では実行時の行マッピング検査か、型ヒントがあれば静的に) - 2-way SQL構文(`/*{{.X}}*/'lit'`)。psqlでそのまま流せるテンプレート。expandとRenderの前段で同じ変換を入れる - ORMからの移行支援。ORMが発行したSQLを観測して`Query[R, P]`に起こす -- PGのバージョンを`schema.sql`が宣言し(`-- sqlshape: postgres 18`)、アナライザーはその版の規則で判定する。既定は最新のサポート版(宣言はスキーマに1行なので、新版利用者に毎回書かせない)。パーサはlibpg_queryをWebAssemblyにビルドしてwazeroで実行する(スパイクで成立: longjmpはemscriptenのエミュレーションで動き、protobuf出力はcgo版とバイト一致、速度は3.6倍遅いが解析全体では誤差)。cgoが消えて`go install`にCツールチェーンが要らなくなり、wasmモジュールは隔離されるので版ごとのパーサを同じバイナリに複数積める。宣言版より新しい構文は、その版の本物の文法が拒否する(gram.y差分の表は要らない)。カタログは版ごとの生成TSVを埋め込み、型規則の版分岐は§10実装内の分岐で差分表を持つ。オラクルとregressコーパスは版別のCIマトリクス。`dump` / `apply`は接続先の`server_version`と宣言版のずれを警告する。サポート窓はPGの5年に合わせるが、まず17と18の2版でこの構造を作り、以後は年1回のメジャーリリース直後に追従する(マイナー版は判定に影響しないので埋め込みPGを上げるだけ)。メジャー間で判定が変わるのは、構文の追加、カタログの追加・オーバーロードによる曖昧化・稀な削除、予約語の追加、ごく稀な型規則の変更 -- PGの新バージョンへの追従を機械化する。回帰コーパスの取り込み → 差分 → 修正のループ。上の版指定があれば、追従は「版を1つ足す」作業になる。libpg_queryのリリースを待つ形は変わらない(18は8か月遅れた)。pg_query_goを待つ必要はなくなる diff --git a/docs/migrations.ja.md b/docs/migrations.ja.md index 3df54c0..05a3528 100644 --- a/docs/migrations.ja.md +++ b/docs/migrations.ja.md @@ -82,7 +82,7 @@ INSERTそのものを消すと、そのテーブルは普通のテーブルに ## 必要な環境 - `pg_dump`。`PATH`にあるか、`$SQLSHAPE_PG_DUMP`で指定する。メジャーバージョンは対象データベース以上であること。 -- 比較のために、`sqlshape`は専用のPostgreSQL 17を初回にダウンロードして`~/.cache/sqlshape`(`$SQLSHAPE_PG_CACHE`)にキャッシュし、そこで`schema.sql`を実行する。初回はダウンロードに数秒かかり、以後は0.25秒程度で起動する。利用者のデータベースはこの用途には使わない。 +- 比較のために、`sqlshape`はスキーマが宣言した版(`-- sqlshape: postgres 17`)の専用PostgreSQLを初回にダウンロードして`~/.cache/sqlshape`(`$SQLSHAPE_PG_CACHE`)にキャッシュし、そこで`schema.sql`を実行する。接続先のデータベースが宣言と違うメジャー版で動いているときは、その旨をstderrに出して続行する。DDLは宣言した版の規則で判定される。初回はダウンロードに数秒かかり、以後は0.25秒程度で起動する。利用者のデータベースはこの用途には使わない。 - `-schema PATH`で`schema.sql`、または`*.sql`を名前順に適用する`schema/`ディレクトリを指定できる。既定は作業ディレクトリから上に辿って最初に見つかるもの。 終了コードは、0が差分なし、1が何かを見つけた(差分、ドリフト、拒否されたapply)、2が使い方か環境のエラー。 diff --git a/docs/migrations.md b/docs/migrations.md index 48fe704..6f6896b 100644 --- a/docs/migrations.md +++ b/docs/migrations.md @@ -139,10 +139,12 @@ a one-row change and a `MERGE`, where an enum needs the type recreated under eve - `pg_dump` on `PATH` or named by `$SQLSHAPE_PG_DUMP`; its major version must be at least the database's. -- The comparisons run `schema.sql` on a private PostgreSQL 17 that `sqlshape` downloads on first - use and caches under `~/.cache/sqlshape` (`$SQLSHAPE_PG_CACHE`). The first run takes a few - seconds for the download; afterwards it starts in a quarter of a second. Your database is - never used for this. +- The comparisons run `schema.sql` on a private PostgreSQL of the major version the schema + declares (`-- sqlshape: postgres 17`), which `sqlshape` downloads on first use and caches under + `~/.cache/sqlshape` (`$SQLSHAPE_PG_CACHE`). The first run takes a few seconds for the download; + afterwards it starts in a quarter of a second. Your database is never used for this. When the + database runs another major version than the schema declares, the commands say so on stderr + and go on: the DDL is judged by the declared version's rules. - `-schema PATH` names `schema.sql`, or a `schema/` directory whose `*.sql` files apply in name order; the default is the nearest one from the working directory up. diff --git a/examples/1-tables/schema.sql b/examples/1-tables/schema.sql index 6b83b66..b1987cf 100644 --- a/examples/1-tables/schema.sql +++ b/examples/1-tables/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- Stage 1: plain tables, the ground an ORM also covers. Everything the application -- does is a statement against these tables; sqlshape checks each statement's columns, -- parameters and failure modes against this file. diff --git a/examples/2-views/schema.sql b/examples/2-views/schema.sql index 7c1cdd5..cd77a71 100644 --- a/examples/2-views/schema.sql +++ b/examples/2-views/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- Stage 2: views as the read model. The tables are stage 1's; the application still -- writes them with plain INSERT / UPDATE, but everything it reads is a view. A view -- decides once what a thing is called (customer_email, status_label), which joins make diff --git a/examples/3-database-api/schema.sql b/examples/3-database-api/schema.sql index 5b8fa2c..4da1a3e 100644 --- a/examples/3-database-api/schema.sql +++ b/examples/3-database-api/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- Stage 3: the database as an API. Tables are the database's private side; the -- application reads views and calls functions. Meaning lives in the schema — domains -- for units, an enum and a CHECK value set for closed sets, a composite for a value diff --git a/examples/4-everything/schema.sql b/examples/4-everything/schema.sql index 156e1a7..87e3a3d 100644 --- a/examples/4-everything/schema.sql +++ b/examples/4-everything/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- Stage 3: everything. A multi-tenant room booking service. The `core` schema is the -- database's private side, `app` is the API the application may reference (-schemas=app); -- every table row belongs to a tenant and every statement pins it (-require-columns). diff --git a/go.mod b/go.mod index b1e63f0..e0fc65c 100644 --- a/go.mod +++ b/go.mod @@ -5,9 +5,9 @@ go 1.26.1 require ( github.com/fergusstrange/embedded-postgres v1.34.0 github.com/jackc/pgx/v5 v5.10.0 - github.com/pganalyze/pg_query_go/v6 v6.2.2 + github.com/tetratelabs/wazero v1.12.0 golang.org/x/tools v0.49.0 - google.golang.org/protobuf v1.31.0 + google.golang.org/protobuf v1.36.12 ) require ( @@ -18,5 +18,6 @@ require ( github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect golang.org/x/mod v0.39.0 // indirect golang.org/x/sync v0.22.0 // indirect + golang.org/x/sys v0.47.0 // indirect golang.org/x/text v0.29.0 // indirect ) diff --git a/go.sum b/go.sum index c2a1a94..0a2512d 100644 --- a/go.sum +++ b/go.sum @@ -3,10 +3,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fergusstrange/embedded-postgres v1.34.0 h1:c6RKhPKFsLVU+Tdxsx8q0UxCHsvZZ/iShAnljRBXs6s= github.com/fergusstrange/embedded-postgres v1.34.0/go.mod h1:w0YvnCgf19o6tskInrOOACtnqfVlOvluz3hlNLY7tRk= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= @@ -17,8 +15,6 @@ github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/pganalyze/pg_query_go/v6 v6.2.2 h1:O0L6zMC226R82RF3X5n0Ki6HjytDsoAzuzp4ATVAHNo= -github.com/pganalyze/pg_query_go/v6 v6.2.2/go.mod h1:Cn6+j4870kJz3iYNsb0VsNG04vpSWgEvBwc590J4qD0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -26,6 +22,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU= +github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -34,14 +32,14 @@ golang.org/x/mod v0.39.0 h1:UF5zwQdCRRUpHfyPwr7d4UrGiVeldIsogtzWVnczL74= golang.org/x/mod v0.39.0/go.mod h1:bvIbwjQ0HUFFf5AKukeeYQG4ZBUG9yxQbR9aEweIwYY= golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI= golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/internal/analyze/README.md b/internal/analyze/README.md index f2ef169..267a232 100644 --- a/internal/analyze/README.md +++ b/internal/analyze/README.md @@ -93,7 +93,10 @@ SET / SHOW / transaction control / DO / VACUUM / ANALYZE / COPY / DECLARE CURSOR - `testdata/queries/*.sql` + `.golden`: goldens come from the real PG (`go test ./internal/analyze -update`); the default run compares the analyzer to them without starting PG - `regress_test.go`: `-regress /path/to/postgres/src/test/regress` replays PG's own regression corpus against a - live PG and the analyzer side by side and writes every disagreement to `-regress-report`, grouped by kind + live PG and the analyzer side by side and writes every disagreement to `-regress-report`, grouped by kind. + `SQLSHAPE_PG=18` probes another major version: its oracle, its corpus checkout (`regress-18`), its catalog + (the probe writes the version declaration above the corpus DDL) and its baseline + (`testdata/regress_baseline_.txt`) (DIFF column name / type / nullability, STRICT = analyzer rejects what PG takes, LENIENT = the reverse, CODE = different SQLSTATE). A discovery tool, not a gate: `-regress-tests select,join` limits it to some files. A full run takes about half a minute: the schedule's first 8 lines build the shared database in order @@ -104,7 +107,7 @@ SET / SHOW / transaction control / DO / VACUUM / ANALYZE / COPY / DECLARE CURSOR (`\set filename` before each COPY), `\c` is a DISCARD ALL, and DISCARD / DEALLOCATE ALL reset pgx's statement cache so the oracle's helper queries survive them. `SQLSHAPE_ORACLE_LOG=/path` keeps the server log (one MERGE in merge.sql segfaults PG 17's Prepare and is - skipped by `reCrash`). `testdata/tools/bucket.sh` / `hits.py` slice a report by bucket. The oracle is PG's Describe, so errors PG + skipped by `reCrash` on 17; 18 takes it). `testdata/tools/bucket.sh` / `hits.py` slice a report by bucket. The oracle is PG's Describe, so errors PG only raises at execution (assignment length coercion of a literal into varchar(n) / bit(n) / numeric(p,s), view updatability decided by view-column defaults) count as STRICT there even though the analyzer is right - `probe_test.go` runs one statement against one schema (`PROBE_SCHEMA=f PROBE_SQL=f [PROBE_ORACLE=1]`) for diff --git a/internal/analyze/analyze.go b/internal/analyze/analyze.go index 25cf22a..47622cc 100644 --- a/internal/analyze/analyze.go +++ b/internal/analyze/analyze.go @@ -7,11 +7,11 @@ import ( "sort" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/facts" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -106,9 +106,9 @@ type analyzer struct { // funcParams: when analyzing a SQL function body, its parameters (by name and position) funcParams []funcParam // funcVolatility remembers the volatility of each resolved function call (card.go) - funcVolatility map[*pg_query.FuncCall]byte + funcVolatility map[*pgparse.FuncCall]byte // dmlCTEs are the data-modifying statements inside WITH (their failure modes count) - dmlCTEs []*pg_query.Node + dmlCTEs []*pgparse.Node // waived are the obligations the statement opts out of, by table (`-- sqlshape: // unfiltered t1, t2` and `-- sqlshape: waive t1 pinned(x), t2` in the SQL text; see // schema.Relation.Waived for the spec strings). Carried on the facts, judged by @@ -124,9 +124,9 @@ type analyzer struct { // factBySel / factOutBySel are the facts of that level and the leaf columns its target // list projects plainly, so a parent level can attach an EXISTS / IN subquery's body // to its own predicate; claimed marks the bodies so attached - scopeSel map[*scope]*pg_query.SelectStmt - factBySel map[*pg_query.SelectStmt]*facts.Scope - factOutBySel map[*pg_query.SelectStmt][]*facts.ColRef + scopeSel map[*scope]*pgparse.SelectStmt + factBySel map[*pgparse.SelectStmt]*facts.Scope + factOutBySel map[*pgparse.SelectStmt][]*facts.ColRef claimed map[*facts.Scope]bool } @@ -136,7 +136,11 @@ type analyzer struct { // as the view is created (PG fixes them at CREATE VIEW; see schema.Relation.Frozen). Use // this rather than schema.Load for a schema the analyzer will read. func Load(schemaSQL string) (*schema.Schema, error) { - cat, err := catalog.Load() + v, err := schema.DeclaredVersion(schemaSQL) + if err != nil { + return nil, err + } + cat, err := catalog.Load(int(v)) if err != nil { return nil, err } @@ -227,7 +231,7 @@ func refreezeDependentNullability(s *schema.Schema, rel *schema.Relation) { } func Analyze(s *schema.Schema, sql string) (*Result, error) { - tree, err := pg_query.Parse(sql) + tree, err := s.Version.Parse(sql) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } @@ -289,12 +293,12 @@ func newAnalyzer(s *schema.Schema, fp []funcParam, waived map[string][]string) * viewScopes: map[*schema.Relation]*subquery{}, viewBusy: map[*schema.Relation]bool{}, viewFactScopes: map[*schema.Relation]*facts.Scope{}, - scopeSel: map[*scope]*pg_query.SelectStmt{}, - factBySel: map[*pg_query.SelectStmt]*facts.Scope{}, - factOutBySel: map[*pg_query.SelectStmt][]*facts.ColRef{}, + scopeSel: map[*scope]*pgparse.SelectStmt{}, + factBySel: map[*pgparse.SelectStmt]*facts.Scope{}, + factOutBySel: map[*pgparse.SelectStmt][]*facts.ColRef{}, claimed: map[*facts.Scope]bool{}, funcParams: fp, - funcVolatility: map[*pg_query.FuncCall]byte{}, + funcVolatility: map[*pgparse.FuncCall]byte{}, waived: waived, } for i, p := range fp { @@ -306,35 +310,35 @@ func newAnalyzer(s *schema.Schema, fp []funcParam, waived map[string][]string) * } // analyzeStmt analyzes one parsed statement; fp are the enclosing function's parameters. -func analyzeStmt(s *schema.Schema, stmt *pg_query.Node, fp []funcParam, waived map[string][]string) (*Result, error) { +func analyzeStmt(s *schema.Schema, stmt *pgparse.Node, fp []funcParam, waived map[string][]string) (*Result, error) { return analyzeStmtIn(s, stmt, fp, waived, map[*schema.Function]bool{}) } // analyzeStmtIn is analyzeStmt inside a function body: visited holds the functions on // the call chain so a recursive SQL function terminates. -func analyzeStmtIn(s *schema.Schema, stmt *pg_query.Node, fp []funcParam, waived map[string][]string, visited map[*schema.Function]bool) (*Result, error) { - tree := &pg_query.ParseResult{Stmts: []*pg_query.RawStmt{{Stmt: stmt}}} +func analyzeStmtIn(s *schema.Schema, stmt *pgparse.Node, fp []funcParam, waived map[string][]string, visited map[*schema.Function]bool) (*Result, error) { + tree := &pgparse.ParseResult{Stmts: []*pgparse.RawStmt{{Stmt: stmt}}} a := newAnalyzer(s, fp, waived) sc := newScope(nil) var cols []rteCol var aerr *Error switch st := tree.Stmts[0].Stmt.Node.(type) { - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: cols, aerr = a.selectStmt(st.SelectStmt, sc) if st.SelectStmt.IntoClause != nil { cols = nil // SELECT INTO creates a table and returns no rows } - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: cols, aerr = a.insertStmt(st.InsertStmt, sc) - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: cols, aerr = a.updateStmt(st.UpdateStmt, sc) - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: cols, aerr = a.deleteStmt(st.DeleteStmt, sc) - case *pg_query.Node_CallStmt: + case *pgparse.Node_CallStmt: cols, aerr = a.callStmt(st.CallStmt, sc) - case *pg_query.Node_MergeStmt: + case *pgparse.Node_MergeStmt: cols, aerr = a.mergeStmt(st.MergeStmt, sc) - case *pg_query.Node_TruncateStmt: + case *pgparse.Node_TruncateStmt: for _, rv := range st.TruncateStmt.Relations { rel, r, err := a.targetRTE(rv.GetRangeVar(), sc) if err != nil { @@ -343,13 +347,13 @@ func analyzeStmtIn(s *schema.Schema, stmt *pg_query.Node, fp []funcParam, waived // every row goes: a delete of the whole table, for the obligations a.writeRecs = append(a.writeRecs, writeRec{rel: rel, r: r, cmd: "delete from"}) } - case *pg_query.Node_LockStmt: + case *pgparse.Node_LockStmt: for _, rv := range st.LockStmt.Relations { if _, _, err := a.targetRTE(rv.GetRangeVar(), sc); err != nil { return nil, err } } - case *pg_query.Node_RefreshMatViewStmt: + case *pgparse.Node_RefreshMatViewStmt: rel, _, err := a.targetRTE(st.RefreshMatViewStmt.Relation, sc) if err != nil { return nil, err @@ -357,14 +361,14 @@ func analyzeStmtIn(s *schema.Schema, stmt *pg_query.Node, fp []funcParam, waived if rel.Kind != schema.MatView { return nil, errAt(codeWrongObjectType, st.RefreshMatViewStmt.Relation.Location, "%q is not a materialized view", rel.Name) } - case *pg_query.Node_NotifyStmt, *pg_query.Node_ListenStmt, *pg_query.Node_UnlistenStmt, - *pg_query.Node_VariableSetStmt, *pg_query.Node_DiscardStmt: + case *pgparse.Node_NotifyStmt, *pgparse.Node_ListenStmt, *pgparse.Node_UnlistenStmt, + *pgparse.Node_VariableSetStmt, *pgparse.Node_DiscardStmt: // no parameters, no result - case *pg_query.Node_VariableShowStmt: + case *pgparse.Node_VariableShowStmt: cols = []rteCol{{name: st.VariableShowStmt.Name, typ: ref(catalog.Text)}} - case *pg_query.Node_TransactionStmt, *pg_query.Node_DoStmt, *pg_query.Node_ClosePortalStmt, *pg_query.Node_CheckPointStmt: + case *pgparse.Node_TransactionStmt, *pgparse.Node_DoStmt, *pgparse.Node_ClosePortalStmt, *pgparse.Node_CheckPointStmt: // no parameters, no result - case *pg_query.Node_VacuumStmt: + case *pgparse.Node_VacuumStmt: for _, rn := range st.VacuumStmt.Rels { vr := rn.GetVacuumRelation() rel, _, err := a.targetRTE(vr.Relation, sc) @@ -377,7 +381,7 @@ func analyzeStmtIn(s *schema.Schema, stmt *pg_query.Node, fp []funcParam, waived } } } - case *pg_query.Node_CopyStmt: + case *pgparse.Node_CopyStmt: cp := st.CopyStmt if cp.Relation != nil { rel, _, err := a.targetRTE(cp.Relation, sc) @@ -405,18 +409,18 @@ func analyzeStmtIn(s *schema.Schema, stmt *pg_query.Node, fp []funcParam, waived return nil, err } } - case *pg_query.Node_DeclareCursorStmt: + case *pgparse.Node_DeclareCursorStmt: if _, err := a.subStatement(st.DeclareCursorStmt.Query, sc); err != nil { return nil, err } - case *pg_query.Node_CreateTableAsStmt: + case *pgparse.Node_CreateTableAsStmt: if _, err := a.subStatement(st.CreateTableAsStmt.Query, sc); err != nil { return nil, err } - case *pg_query.Node_CreateStmt: + case *pgparse.Node_CreateStmt: // CREATE [TEMP] TABLE from application code: nothing to type; the checker cannot see // the table in later statements (declare it in schema.sql for that) - case *pg_query.Node_FetchStmt: + case *pgparse.Node_FetchStmt: return nil, &Error{Code: codeFeatureNotSupported, Message: "FETCH: a cursor's columns are not known statically; read the DECLARE CURSOR query directly"} default: return nil, &Error{Code: codeFeatureNotSupported, Message: fmt.Sprintf("unsupported statement %T", tree.Stmts[0].Stmt.Node)} @@ -519,15 +523,15 @@ func (a *analyzer) column(c rteCol) Column { // subStatement analyzes a statement nested in another (COPY (query), DECLARE CURSOR ..., // CREATE TABLE AS ...) and returns its columns. -func (a *analyzer) subStatement(n *pg_query.Node, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) subStatement(n *pgparse.Node, sc *scope) ([]rteCol, *Error) { switch st := n.Node.(type) { - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: return a.selectStmt(st.SelectStmt, newScope(sc)) - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: return a.insertStmt(st.InsertStmt, newScope(sc)) - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: return a.updateStmt(st.UpdateStmt, newScope(sc)) - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: return a.deleteStmt(st.DeleteStmt, newScope(sc)) } return nil, errAt(codeFeatureNotSupported, -1, "unsupported nested statement %T", n.Node) @@ -537,7 +541,7 @@ func init() { // INSERT in schema.sql (seed rows): typed like any statement against the schema so far // so, and its certain failures (a NOT NULL column left out) and domain / policy // findings are problems too - schema.CheckStatement = func(s *schema.Schema, stmt *pg_query.Node) error { + schema.CheckStatement = func(s *schema.Schema, stmt *pgparse.Node) error { r, err := analyzeStmt(s, stmt, nil, nil) if err != nil { return err @@ -551,7 +555,7 @@ func init() { return nil } // PARTITION BY (expr): ComputePartitionAttrs' rules on the key expression - schema.PartitionKeyProblem = func(s *schema.Schema, rel *schema.Relation, expr *pg_query.Node) string { + schema.PartitionKeyProblem = func(s *schema.Schema, rel *schema.Relation, expr *pgparse.Node) string { a := newAnalyzer(s, nil, nil) switch { case a.aggregateIn(expr) != nil: @@ -585,11 +589,11 @@ func init() { } // CREATE TABLE AS / SELECT INTO in schema.sql: the loader asks the analyzer for the // query's columns - schema.QueryColumns = func(s *schema.Schema, query *pg_query.Node) ([]*schema.Column, error) { + schema.QueryColumns = func(s *schema.Schema, query *pgparse.Node) ([]*schema.Column, error) { if sel := query.GetSelectStmt(); sel != nil && sel.IntoClause != nil { - cp := proto.Clone(sel).(*pg_query.SelectStmt) + cp := proto.Clone(sel).(*pgparse.SelectStmt) cp.IntoClause = nil - query = &pg_query.Node{Node: &pg_query.Node_SelectStmt{SelectStmt: cp}} + query = &pgparse.Node{Node: &pgparse.Node_SelectStmt{SelectStmt: cp}} } r, err := analyzeStmt(s, query, nil, nil) if err != nil { diff --git a/internal/analyze/card.go b/internal/analyze/card.go index 9b10123..c720971 100644 --- a/internal/analyze/card.go +++ b/internal/analyze/card.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - + "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -30,7 +30,7 @@ import ( // subquery is the defining query of a FROM leaf that is not a table. type subquery struct { what string // "subquery" / "view" / "CTE" - sel *pg_query.SelectStmt + sel *pgparse.SelectStmt sc *scope } @@ -42,7 +42,7 @@ type colKey struct { type edge struct{ from, to colKey } type conjunct struct { - n *pg_query.Node + n *pgparse.Node allow map[*rte]bool // leaves this predicate restricts (nil: all) } @@ -52,37 +52,43 @@ type prover struct { leaves []*rte conjuncts []conjunct known map[colKey]bool - edges []edge - single map[*rte]bool - why map[*rte]string // leaf → why it could not be proved single - fail string // structural reason (FULL JOIN) + // pointIn: range / multirange columns that contain a known point (col @> $1::date, + // $1::date <@ col): with a WITHOUT OVERLAPS key, at most one row's range holds it + pointIn map[colKey]bool + // contains: `col @> point` where the point is another column; it counts once that + // column is known (fixpoint) + contains []edge + edges []edge + single map[*rte]bool + why map[*rte]string // leaf → why it could not be proved single + fail string // structural reason (FULL JOIN) } // cardinality decides whether the analyzed statement returns at most one row. -func (a *analyzer) cardinality(stmt *pg_query.Node, sc *scope) (bool, string) { +func (a *analyzer) cardinality(stmt *pgparse.Node, sc *scope) (bool, string) { switch st := stmt.Node.(type) { - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: return a.selectSingle(st.SelectStmt, sc, nil) - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: ins := st.InsertStmt if ins.SelectStmt == nil { return true, "" } sel := ins.SelectStmt.GetSelectStmt() - if len(sel.ValuesLists) > 0 && sel.Op == pg_query.SetOperation_SETOP_NONE && len(sel.FromClause) == 0 { + if len(sel.ValuesLists) > 0 && sel.Op == pgparse.SetOperation_SETOP_NONE && len(sel.FromClause) == 0 { if len(sel.ValuesLists) == 1 { return true, "" } return false, fmt.Sprintf("VALUES has %d rows", len(sel.ValuesLists)) } return a.selectSingle(sel, a.insertSelScope, nil) - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: return a.fromSingle(sc, st.UpdateStmt.WhereClause, nil, nil, nil) - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: return a.fromSingle(sc, st.DeleteStmt.WhereClause, nil, nil, nil) - case *pg_query.Node_CallStmt: + case *pgparse.Node_CallStmt: return true, "" - case *pg_query.Node_MergeStmt: + case *pgparse.Node_MergeStmt: if a.mergeScope != nil { return a.fromSingle(a.mergeScope, st.MergeStmt.JoinCondition, nil, nil, nil) } @@ -91,8 +97,8 @@ func (a *analyzer) cardinality(stmt *pg_query.Node, sc *scope) (bool, string) { } // selectSingle proves one SELECT level; knownOut are output columns fixed from outside. -func (a *analyzer) selectSingle(sel *pg_query.SelectStmt, sc *scope, knownOut []int) (bool, string) { - if sel.Op != pg_query.SetOperation_SETOP_NONE && sel.Op != pg_query.SetOperation_SET_OPERATION_UNDEFINED { +func (a *analyzer) selectSingle(sel *pgparse.SelectStmt, sc *scope, knownOut []int) (bool, string) { + if sel.Op != pgparse.SetOperation_SETOP_NONE && sel.Op != pgparse.SetOperation_SET_OPERATION_UNDEFINED { return false, setOpName(sel.Op) + " may combine rows" } if len(sel.ValuesLists) > 0 { @@ -120,7 +126,7 @@ func (a *analyzer) selectSingle(sel *pg_query.SelectStmt, sc *scope, knownOut [] // fromSingle runs the functional-dependency argument over sc.items. With groups (a GROUP // BY list) the question becomes whether every grouping expression is pinned, i.e. there // is at most one group. -func (a *analyzer) fromSingle(sc *scope, where *pg_query.Node, targets []*pg_query.Node, knownOut []int, groups []*pg_query.Node) (bool, string) { +func (a *analyzer) fromSingle(sc *scope, where *pgparse.Node, targets []*pgparse.Node, knownOut []int, groups []*pgparse.Node) (bool, string) { p := &prover{a: a, sc: sc, known: map[colKey]bool{}, single: map[*rte]bool{}, why: map[*rte]string{}} for _, it := range sc.items { p.addItem(it) @@ -179,12 +185,12 @@ func (p *prover) addItem(r *rte) { p.addItem(j.right) var allow map[*rte]bool switch j.jointype { - case pg_query.JoinType_JOIN_FULL: + case pgparse.JoinType_JOIN_FULL: p.fail = "FULL JOIN may keep unmatched rows of both sides" return - case pg_query.JoinType_JOIN_LEFT: + case pgparse.JoinType_JOIN_LEFT: allow = leavesOf(j.right) - case pg_query.JoinType_JOIN_RIGHT: + case pgparse.JoinType_JOIN_RIGHT: allow = leavesOf(j.left) } p.addQuals(j.quals, allow) @@ -198,7 +204,7 @@ func (p *prover) addItem(r *rte) { // addQuals records the equality conjuncts of a predicate; allow limits which leaves it // may restrict (an outer join's ON clause restricts only its nullable side). -func (p *prover) addQuals(n *pg_query.Node, allow map[*rte]bool) { +func (p *prover) addQuals(n *pgparse.Node, allow map[*rte]bool) { for _, c := range conjuncts(n) { p.conjuncts = append(p.conjuncts, conjunct{n: c, allow: allow}) l, r := equalitySides(c) @@ -216,6 +222,68 @@ func (p *prover) addQuals(n *pg_query.Node, allow map[*rte]bool) { p.fix(rk, allow) } } + for _, c := range conjuncts(n) { + p.addContainment(c, allow) + } +} + +// addContainment notes `col @> point` / `point <@ col` where the point is a known value of +// a non-range type (a range on the known side could be empty, which every range contains). +func (p *prover) addContainment(c *pgparse.Node, allow map[*rte]bool) { + x := c.GetAExpr() + if x == nil || x.Kind != pgparse.A_Expr_Kind_AEXPR_OP || x.Lexpr == nil || x.Rexpr == nil { + return + } + parts := strs(x.Name) + var col, point *pgparse.Node + switch parts[len(parts)-1] { + case "@>": + col, point = x.Lexpr, x.Rexpr + case "<@": + col, point = x.Rexpr, x.Lexpr + default: + return + } + k, ok := p.resolve(col) + if !ok || !p.scalarTyped(point) || (allow != nil && !allow[k.r]) { + return + } + if pk, isCol := p.resolve(point); isCol { + p.contains = append(p.contains, edge{from: pk, to: k}) + return + } + if p.isKnown(point) { + p.setPointIn(k) + } +} + +func (p *prover) setPointIn(k colKey) { + if p.pointIn == nil { + p.pointIn = map[colKey]bool{} + } + p.pointIn[k] = true +} + +// scalarTyped reports whether n's type is visibly not a range or multirange: a cast to +// such a type, or a column of one. A bare parameter or literal could be a range. +func (p *prover) scalarTyped(n *pgparse.Node) bool { + var oid catalog.OID + switch { + case n.GetTypeCast() != nil: + t, err := p.a.s.ResolveType(n.GetTypeCast().TypeName) + if err != nil { + return false + } + oid = t.OID + default: + k, ok := p.resolve(n) + if !ok { + return false + } + oid = k.r.cols[k.i].typ.OID + } + t := p.a.typ(p.a.baseType(oid)) + return t != nil && t.Kind != 'r' && t.Kind != 'm' } func (p *prover) fix(k colKey, allow map[*rte]bool) { @@ -233,32 +301,32 @@ func (p *prover) equate(x, y colKey, allow map[*rte]bool) { } } -func conjuncts(n *pg_query.Node) []*pg_query.Node { +func conjuncts(n *pgparse.Node) []*pgparse.Node { if n == nil { return nil } - if b := n.GetBoolExpr(); b != nil && b.Boolop == pg_query.BoolExprType_AND_EXPR { - var out []*pg_query.Node + if b := n.GetBoolExpr(); b != nil && b.Boolop == pgparse.BoolExprType_AND_EXPR { + var out []*pgparse.Node for _, arg := range b.Args { out = append(out, conjuncts(arg)...) } return out } - return []*pg_query.Node{n} + return []*pgparse.Node{n} } // equalitySides returns the operands of `x = y` (also `x IN (y)` with a single item). -func equalitySides(n *pg_query.Node) (*pg_query.Node, *pg_query.Node) { +func equalitySides(n *pgparse.Node) (*pgparse.Node, *pgparse.Node) { x := n.GetAExpr() if x == nil || x.Lexpr == nil { return nil, nil } switch x.Kind { - case pg_query.A_Expr_Kind_AEXPR_OP: + case pgparse.A_Expr_Kind_AEXPR_OP: if parts := strs(x.Name); len(parts) > 0 && parts[len(parts)-1] == "=" { return x.Lexpr, x.Rexpr } - case pg_query.A_Expr_Kind_AEXPR_IN: + case pgparse.A_Expr_Kind_AEXPR_IN: if items := x.Rexpr.GetList().GetItems(); len(items) == 1 { return x.Lexpr, items[0] } @@ -268,7 +336,7 @@ func equalitySides(n *pg_query.Node) (*pg_query.Node, *pg_query.Node) { // resolve maps a column reference to a leaf column of this level; col is false for // anything else (a known value, an outer reference, an expression). -func (p *prover) resolve(n *pg_query.Node) (colKey, bool) { +func (p *prover) resolve(n *pgparse.Node) (colKey, bool) { cr := n.GetColumnRef() if cr == nil { return colKey{}, false @@ -323,7 +391,7 @@ func (p *prover) resolveIn(r *rte, name string) []colKey { // outputKeys maps each output column of a target list to the leaf column it is a plain // reference to (nil otherwise), expanding stars like the analyzer does. -func (p *prover) outputKeys(targets []*pg_query.Node) []*colKey { +func (p *prover) outputKeys(targets []*pgparse.Node) []*colKey { var out []*colKey var expand func(r *rte) expand = func(r *rte) { @@ -385,31 +453,31 @@ func (p *prover) outputKeys(targets []*pg_query.Node) []*colKey { } // isKnown reports whether n has one value for the whole query (or per outer row). -func (p *prover) isKnown(n *pg_query.Node) bool { +func (p *prover) isKnown(n *pgparse.Node) bool { switch v := n.Node.(type) { - case *pg_query.Node_AConst, *pg_query.Node_ParamRef: + case *pgparse.Node_AConst, *pgparse.Node_ParamRef: return true - case *pg_query.Node_TypeCast: + case *pgparse.Node_TypeCast: return p.isKnown(v.TypeCast.Arg) - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: if _, ok := p.resolve(n); ok { return false } // an outer reference is a constant for this level return p.sc.parent != nil && p.resolvesOutside(v.ColumnRef) - case *pg_query.Node_SubLink: - return v.SubLink.SubLinkType == pg_query.SubLinkType_EXPR_SUBLINK && !p.correlated(v.SubLink.Subselect) - case *pg_query.Node_AExpr: + case *pgparse.Node_SubLink: + return v.SubLink.SubLinkType == pgparse.SubLinkType_EXPR_SUBLINK && !p.correlated(v.SubLink.Subselect) + case *pgparse.Node_AExpr: x := v.AExpr - return x.Kind == pg_query.A_Expr_Kind_AEXPR_OP && (x.Lexpr == nil || p.isKnown(x.Lexpr)) && p.isKnown(x.Rexpr) - case *pg_query.Node_CoalesceExpr: + return x.Kind == pgparse.A_Expr_Kind_AEXPR_OP && (x.Lexpr == nil || p.isKnown(x.Lexpr)) && p.isKnown(x.Rexpr) + case *pgparse.Node_CoalesceExpr: for _, arg := range v.CoalesceExpr.Args { if !p.isKnown(arg) { return false } } return true - case *pg_query.Node_FuncCall: + case *pgparse.Node_FuncCall: // a stable / immutable function of known values has one value per query; // volatile ones (random(), nextval()) are evaluated per row f := v.FuncCall @@ -427,7 +495,7 @@ func (p *prover) isKnown(n *pg_query.Node) bool { return false } -func (p *prover) resolvesOutside(cr *pg_query.ColumnRef) bool { +func (p *prover) resolvesOutside(cr *pgparse.ColumnRef) bool { var names []string for _, f := range cr.Fields { names = append(names, f.GetString_().GetSval()) @@ -443,10 +511,10 @@ func (p *prover) resolvesOutside(cr *pg_query.ColumnRef) bool { // correlated reports whether a subquery may refer to this level's leaves (conservatively: // any qualified reference to one of our aliases, or an unqualified name one of our leaves // has that the subquery's own FROM tables do not provide). -func (p *prover) correlated(sub *pg_query.Node) bool { +func (p *prover) correlated(sub *pgparse.Node) bool { found := false inner := p.a.fromColumns(sub.GetSelectStmt()) - schema.WalkNodes(sub, func(n *pg_query.Node) { + schema.WalkNodes(sub, func(n *pgparse.Node) { cr := n.GetColumnRef() if cr == nil || found { return @@ -477,15 +545,15 @@ func (p *prover) correlated(sub *pg_query.Node) bool { } // fromColumns is the set of column names the tables named directly in sel's FROM provide. -func (a *analyzer) fromColumns(sel *pg_query.SelectStmt) map[string]bool { +func (a *analyzer) fromColumns(sel *pgparse.SelectStmt) map[string]bool { out := map[string]bool{} if sel == nil { return out } - var walk func(n *pg_query.Node) - walk = func(n *pg_query.Node) { + var walk func(n *pgparse.Node) + walk = func(n *pgparse.Node) { switch v := n.Node.(type) { - case *pg_query.Node_RangeVar: + case *pgparse.Node_RangeVar: if rel := a.s.Relation(v.RangeVar.Schemaname, v.RangeVar.Relname); rel != nil { for _, c := range rel.Columns { out[c.Name] = true @@ -496,7 +564,7 @@ func (a *analyzer) fromColumns(sel *pg_query.SelectStmt) map[string]bool { } } } - case *pg_query.Node_JoinExpr: + case *pgparse.Node_JoinExpr: walk(v.JoinExpr.Larg) walk(v.JoinExpr.Rarg) } @@ -516,6 +584,12 @@ func (p *prover) fixpoint() { changed = true } } + for _, e := range p.contains { + if p.known[e.from] && !p.pointIn[e.to] { + p.setPointIn(e.to) + changed = true + } + } for _, l := range p.leaves { if p.single[l] { continue @@ -580,7 +654,13 @@ func (p *prover) keyFixed(r *rte, con *schema.Constraint) bool { break } } - if idx < 0 || !p.known[colKey{r, idx}] { + if idx < 0 { + return false + } + k := colKey{r, idx} + // a temporal key's range column: a row whose range holds a known point is the only + // one for those key values, since no two rows' ranges overlap + if !p.known[k] && !(con.WithoutOverlaps && name == con.Columns[len(con.Columns)-1] && p.pointIn[k]) { return false } } @@ -606,12 +686,12 @@ func (p *prover) keyFixed(r *rte, con *schema.Constraint) bool { // sameExpr compares an index predicate (unqualified column names) with a query // predicate whose columns may be qualified with the leaf's alias. -func sameExpr(pred, q *pg_query.Node, r *rte) bool { +func sameExpr(pred, q *pgparse.Node, r *rte) bool { if pred == nil || q == nil { return pred == nil && q == nil } switch pv := pred.Node.(type) { - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: qc := q.GetColumnRef() if qc == nil { return false @@ -621,14 +701,14 @@ func sameExpr(pred, q *pg_query.Node, r *rte) bool { return false } return len(pn) > 0 && len(qn) > 0 && pn[len(pn)-1] == qn[len(qn)-1] - case *pg_query.Node_AConst: + case *pgparse.Node_AConst: qc := q.GetAConst() return qc != nil && constText(pv.AConst) == constText(qc) - case *pg_query.Node_AExpr: + case *pgparse.Node_AExpr: qx := q.GetAExpr() return qx != nil && qx.Kind == pv.AExpr.Kind && strings.Join(strs(qx.Name), ".") == strings.Join(strs(pv.AExpr.Name), ".") && sameExpr(pv.AExpr.Lexpr, qx.Lexpr, r) && sameExpr(pv.AExpr.Rexpr, qx.Rexpr, r) - case *pg_query.Node_BoolExpr: + case *pgparse.Node_BoolExpr: qb := q.GetBoolExpr() if qb == nil || qb.Boolop != pv.BoolExpr.Boolop || len(qb.Args) != len(pv.BoolExpr.Args) { return false @@ -639,45 +719,45 @@ func sameExpr(pred, q *pg_query.Node, r *rte) bool { } } return true - case *pg_query.Node_NullTest: + case *pgparse.Node_NullTest: qn := q.GetNullTest() return qn != nil && qn.Nulltesttype == pv.NullTest.Nulltesttype && sameExpr(pv.NullTest.Arg, qn.Arg, r) - case *pg_query.Node_BooleanTest: + case *pgparse.Node_BooleanTest: qb := q.GetBooleanTest() return qb != nil && qb.Booltesttype == pv.BooleanTest.Booltesttype && sameExpr(pv.BooleanTest.Arg, qb.Arg, r) - case *pg_query.Node_TypeCast: + case *pgparse.Node_TypeCast: qt := q.GetTypeCast() return qt != nil && strings.Join(strs(qt.TypeName.Names), ".") == strings.Join(strs(pv.TypeCast.TypeName.Names), ".") && sameExpr(pv.TypeCast.Arg, qt.Arg, r) } return false } -func constText(c *pg_query.A_Const) string { +func constText(c *pgparse.A_Const) string { if c.Isnull { return "NULL" } switch v := c.Val.(type) { - case *pg_query.A_Const_Ival: + case *pgparse.A_Const_Ival: return fmt.Sprint("i", v.Ival.GetIval()) - case *pg_query.A_Const_Fval: + case *pgparse.A_Const_Fval: return "f" + v.Fval.GetFval() - case *pg_query.A_Const_Sval: + case *pgparse.A_Const_Sval: return "s" + v.Sval.GetSval() - case *pg_query.A_Const_Boolval: + case *pgparse.A_Const_Boolval: return fmt.Sprint("b", v.Boolval.GetBoolval()) - case *pg_query.A_Const_Bsval: + case *pgparse.A_Const_Bsval: return "x" + v.Bsval.GetBsval() } return "?" } // constInt returns the value of an integer constant node. -func constInt(n *pg_query.Node) (int32, bool) { +func constInt(n *pgparse.Node) (int32, bool) { c := n.GetAConst() if c == nil { return 0, false } - if v, ok := c.Val.(*pg_query.A_Const_Ival); ok { + if v, ok := c.Val.(*pgparse.A_Const_Ival); ok { return v.Ival.GetIval(), true } return 0, false @@ -718,7 +798,7 @@ func (p *prover) describe(r *rte) string { // WHERE; the fixed columns and the policies are the reader's concern). A RETURNING list // sees the rows just written: the policies were checked on the statement's own WHERE, or // do not apply to an INSERT. -func (a *analyzer) recordFixed(sc *scope, where *pg_query.Node) { +func (a *analyzer) recordFixed(sc *scope, where *pgparse.Node) { if len(sc.items) == 0 { return } @@ -761,21 +841,21 @@ func (a *analyzer) nullRejected(p *prover) []colKey { if c.allow != nil { continue } - var operands []*pg_query.Node + var operands []*pgparse.Node switch v := c.n.Node.(type) { - case *pg_query.Node_NullTest: - if v.NullTest.Nulltesttype == pg_query.NullTestType_IS_NOT_NULL { - operands = []*pg_query.Node{v.NullTest.Arg} + case *pgparse.Node_NullTest: + if v.NullTest.Nulltesttype == pgparse.NullTestType_IS_NOT_NULL { + operands = []*pgparse.Node{v.NullTest.Arg} } - case *pg_query.Node_AExpr: + case *pgparse.Node_AExpr: switch v.AExpr.Kind { - case pg_query.A_Expr_Kind_AEXPR_OP, pg_query.A_Expr_Kind_AEXPR_LIKE, pg_query.A_Expr_Kind_AEXPR_ILIKE, - pg_query.A_Expr_Kind_AEXPR_BETWEEN, pg_query.A_Expr_Kind_AEXPR_IN, pg_query.A_Expr_Kind_AEXPR_OP_ANY: + case pgparse.A_Expr_Kind_AEXPR_OP, pgparse.A_Expr_Kind_AEXPR_LIKE, pgparse.A_Expr_Kind_AEXPR_ILIKE, + pgparse.A_Expr_Kind_AEXPR_BETWEEN, pgparse.A_Expr_Kind_AEXPR_IN, pgparse.A_Expr_Kind_AEXPR_OP_ANY: // strict operators: NULL operands yield NULL, which WHERE rejects (IS DISTINCT FROM is not strict) if v.AExpr.Lexpr != nil { operands = append(operands, v.AExpr.Lexpr) } - if v.AExpr.Kind == pg_query.A_Expr_Kind_AEXPR_OP { + if v.AExpr.Kind == pgparse.A_Expr_Kind_AEXPR_OP { operands = append(operands, v.AExpr.Rexpr) } } @@ -791,7 +871,7 @@ func (a *analyzer) nullRejected(p *prover) []colKey { // underCondition analyzes n as if cond held: the columns cond proves non-NULL are not // nullable while n is typed (CASE WHEN x IS NOT NULL THEN x ...). -func (a *analyzer) underCondition(cond, n *pg_query.Node, sc *scope) (*expr, *Error) { +func (a *analyzer) underCondition(cond, n *pgparse.Node, sc *scope) (*expr, *Error) { p := &prover{a: a, sc: sc, known: map[colKey]bool{}, single: map[*rte]bool{}, why: map[*rte]string{}} for _, it := range sc.items { p.addItem(it) @@ -842,14 +922,14 @@ func (p *prover) predicateColumns(l *rte) []string { if c.allow != nil && !c.allow[l] { continue } - var sides []*pg_query.Node + var sides []*pgparse.Node switch v := c.n.Node.(type) { - case *pg_query.Node_AExpr: - sides = []*pg_query.Node{v.AExpr.Lexpr, v.AExpr.Rexpr} - case *pg_query.Node_NullTest: - sides = []*pg_query.Node{v.NullTest.Arg} - case *pg_query.Node_BooleanTest: - sides = []*pg_query.Node{v.BooleanTest.Arg} + case *pgparse.Node_AExpr: + sides = []*pgparse.Node{v.AExpr.Lexpr, v.AExpr.Rexpr} + case *pgparse.Node_NullTest: + sides = []*pgparse.Node{v.NullTest.Arg} + case *pgparse.Node_BooleanTest: + sides = []*pgparse.Node{v.BooleanTest.Arg} } for _, sd := range sides { if sd == nil { @@ -898,14 +978,14 @@ func (a *analyzer) indexLeads(rel *schema.Relation, cols []string) bool { func (a *analyzer) pushdownBlocker(l *rte, cols []string) string { sel := l.sub.sel switch { - case sel.Op != pg_query.SetOperation_SETOP_NONE && sel.Op != pg_query.SetOperation_SET_OPERATION_UNDEFINED: + case sel.Op != pgparse.SetOperation_SETOP_NONE && sel.Op != pgparse.SetOperation_SET_OPERATION_UNDEFINED: return "the view is a set operation" case sel.LimitCount != nil || sel.LimitOffset != nil: return "the view has LIMIT / OFFSET" } for _, tn := range sel.TargetList { hasWindow := false - schema.WalkNodes(tn, func(n *pg_query.Node) { + schema.WalkNodes(tn, func(n *pgparse.Node) { if f := n.GetFuncCall(); f != nil && f.Over != nil { hasWindow = true } diff --git a/internal/analyze/collation.go b/internal/analyze/collation.go index 33e9409..a5f1c17 100644 --- a/internal/analyze/collation.go +++ b/internal/analyze/collation.go @@ -3,9 +3,8 @@ package analyze import ( "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -227,12 +226,12 @@ func (a *analyzer) columnColl(c *schema.Column) collation { // setOpColl combines the collations of one output column of a set operation. PG resolves // it while parsing (select_common_collation), so unless the operation is UNION ALL, which // never compares rows, a conflict between implicit collations is an error too. -func (a *analyzer) setOpColl(l, r collation, op pg_query.SetOperation, all bool) (collation, *Error) { +func (a *analyzer) setOpColl(l, r collation, op pgparse.SetOperation, all bool) (collation, *Error) { acc := l if err := a.mergeColl(&acc, r); err != nil { return collation{}, err } - if acc.strength == collConflict && !(all && op == pg_query.SetOperation_SETOP_UNION) { + if acc.strength == collConflict && !(all && op == pgparse.SetOperation_SETOP_UNION) { return collation{}, errAt(codeCollationMismatch, acc.loc2, "collation mismatch between implicit collations %q and %q", collDisplay(acc.name), collDisplay(acc.name2)) } return acc, nil diff --git a/internal/analyze/datetime.go b/internal/analyze/datetime.go index 6af3308..570d9f9 100644 --- a/internal/analyze/datetime.go +++ b/internal/analyze/datetime.go @@ -12,6 +12,8 @@ import ( "strings" "time" _ "time/tzdata" // named zones without relying on the host's zoneinfo + + "github.com/kr9ly/sqlshape/internal/pgparse" ) const ( @@ -81,8 +83,17 @@ type dtSession struct { dateOrder string // "mdy" / "dmy" / "ymd" sqlStandard bool // IntervalStyle = sql_standard tz *time.Location + // sessionAbbrevs: an abbreviation the session time zone itself uses (LMT, or a local + // abbreviation not in the abbreviation file) is accepted as that zone (PostgreSQL 18) + sessionAbbrevs bool + // strictNumbers: a number field is digits and decimal points only, and a fraction is + // digits only (PostgreSQL 18; 17 let strtod read "X03456" or ".001e6") + strictNumbers bool } +// strict reports strictNumbers for a session that may be nil. +func (s *dtSession) strict() bool { return s != nil && s.strictNumbers } + type dtExtra struct { timezone string } @@ -419,10 +430,13 @@ func adjustYears(val int64, scale int, in *itmIn) bool { } // parseFraction parses ".ddd" to end of string. -func parseFraction(cp string) (float64, int) { +func parseFraction(cp string, strict bool) (float64, int) { if len(cp) == 1 { return 0, 0 } + if strict && strings.Trim(cp[1:], "0123456789") != "" { + return 0, dtErrBadFormat // 18: nothing but digits after the "." + } f, rest, ok := strtod(cp) if !ok || rest != "" { return 0, dtErrBadFormat @@ -430,8 +444,8 @@ func parseFraction(cp string) (float64, int) { return f, 0 } -func parseFractionalSecond(cp string) (int64, int) { - f, dterr := parseFraction(cp) +func parseFractionalSecond(cp string, strict bool) (int64, int) { + f, dterr := parseFraction(cp, strict) if dterr != 0 { return 0, dterr } @@ -600,13 +614,16 @@ func decodeUnits(lowtoken string) (typ, val int) { } // decodeTimezoneAbbrev: TZ / DTZ with offset, DYNTZ with its zone, or ftUnknown. -func decodeTimezoneAbbrev(lowtoken string, extra *dtExtra) (typ, offset int, tz *time.Location, dterr int) { +func decodeTimezoneAbbrev(lowtoken string, extra *dtExtra, sess *dtSession) (typ, offset int, tz *time.Location, dterr int) { key := lowtoken if len(key) > tokMaxLen { key = key[:tokMaxLen] } a, ok := tzAbbrevs[key] if !ok { + if sess != nil && sess.sessionAbbrevs && sess.tz != nil && zoneUsesAbbrev(sess.tz, lowtoken) { + return ftDynTZ, 0, sess.tz, 0 + } return ftUnknown, 0, nil, 0 } if a.typ == ftDynTZ { @@ -620,6 +637,20 @@ func decodeTimezoneAbbrev(lowtoken string, extra *dtExtra) (typ, offset int, tz return a.typ, a.offset, nil, 0 } +// zoneUsesAbbrev reports whether loc names one of its periods abbrev (case-insensitively): +// LMT before the zone's first transition, and the standard / daylight names since. The +// probe years cover every zone's history without walking its transition table. +func zoneUsesAbbrev(loc *time.Location, abbrev string) bool { + for _, y := range []int{1000, 1850, 1900, 1950, 2000, 2024} { + for _, m := range []time.Month{time.January, time.July} { + if name, _ := time.Date(y, m, 1, 12, 0, 0, 0, loc).Zone(); strings.EqualFold(name, abbrev) { + return true + } + } + } + return false +} + // decodeTimezone reads "+hh", "+hh:mm", "+hh:mm:ss", "+hhmm". The result follows PG's // sign convention (positive west of Greenwich). func decodeTimezone(str string) (tzp int, dterr int) { @@ -936,7 +967,7 @@ type itm struct { usec int64 } -func decodeTimeCommon(str string, rng int, tmask *int, it *itm) int { +func decodeTimeCommon(str string, rng int, tmask *int, it *itm, strict bool) int { *tmask = dtkTimeM var cp string var erange bool @@ -966,7 +997,7 @@ func decodeTimeCommon(str string, rng int, tmask *int, it *itm) int { } case cp[0] == '.': var dterr int - if fsec, dterr = parseFractionalSecond(cp); dterr != 0 { + if fsec, dterr = parseFractionalSecond(cp, strict); dterr != 0 { return dterr } if it.hour > math.MaxInt32 || it.hour < math.MinInt32 { @@ -984,7 +1015,7 @@ func decodeTimeCommon(str string, rng int, tmask *int, it *itm) int { cp = cp2 if cp != "" && cp[0] == '.' { var dterr int - if fsec, dterr = parseFractionalSecond(cp); dterr != 0 { + if fsec, dterr = parseFractionalSecond(cp, strict); dterr != 0 { return dterr } } else if cp != "" { @@ -1001,9 +1032,9 @@ func decodeTimeCommon(str string, rng int, tmask *int, it *itm) int { return 0 } -func decodeTime(str string, rng int, tmask *int, tm *pgTM, fsec *int64) int { +func decodeTime(str string, rng int, tmask *int, tm *pgTM, fsec *int64, strict bool) int { var it itm - if dterr := decodeTimeCommon(str, rng, tmask, &it); dterr != 0 { + if dterr := decodeTimeCommon(str, rng, tmask, &it, strict); dterr != 0 { return dterr } if it.hour > math.MaxInt32 { @@ -1013,9 +1044,9 @@ func decodeTime(str string, rng int, tmask *int, tm *pgTM, fsec *int64) int { return 0 } -func decodeTimeForInterval(str string, rng int, tmask *int, in *itmIn) int { +func decodeTimeForInterval(str string, rng int, tmask *int, in *itmIn, strict bool) int { var it itm - if dterr := decodeTimeCommon(str, rng, tmask, &it); dterr != 0 { + if dterr := decodeTimeCommon(str, rng, tmask, &it, strict); dterr != 0 { return dterr } in.usec = it.usec @@ -1039,12 +1070,12 @@ func decodeNumber(flen int, str string, haveTextMonth bool, fmask int, tmask *in val := int(v) if cp != "" && cp[0] == '.' { if len(str)-len(cp) > 2 { - if dterr := decodeNumberField(flen, str, fmask|dtkDateM, tmask, tm, fsec, is2digits); dterr < 0 { + if dterr := decodeNumberField(flen, str, fmask|dtkDateM, tmask, tm, fsec, is2digits, sess.strict()); dterr < 0 { return dterr } return 0 } - f, dterr := parseFractionalSecond(cp) + f, dterr := parseFractionalSecond(cp, sess.strict()) if dterr != 0 { return dterr } @@ -1108,7 +1139,7 @@ func decodeNumber(flen int, str string, haveTextMonth bool, fmask int, tmask *in *tmask = dtkM(ftYear) tm.year = val case dtkM(ftYear) | dtkM(ftMonth) | dtkM(ftDay): - if dterr := decodeNumberField(flen, str, fmask, tmask, tm, fsec, is2digits); dterr < 0 { + if dterr := decodeNumberField(flen, str, fmask, tmask, tm, fsec, is2digits, sess.strict()); dterr < 0 { return dterr } return 0 @@ -1122,15 +1153,20 @@ func decodeNumber(flen int, str string, haveTextMonth bool, fmask int, tmask *in } // decodeNumberField reads a run-together date or time; returns a DTK token or a DTERR. -func decodeNumberField(length int, str string, fmask int, tmask *int, tm *pgTM, fsec *int64, is2digits *bool) int { +func decodeNumberField(length int, str string, fmask int, tmask *int, tm *pgTM, fsec *int64, is2digits *bool, strict bool) int { + // 18: the field is digits and decimal points only (this also reads parts of DTK_DATE + // fields, which can carry letters); 17 let strtod sort it out + if strict && strings.Trim(str, "0123456789.") != "" { + return dtErrBadFormat + } if dot := strings.IndexByte(str, '.'); dot >= 0 { cp := str[dot:] if len(cp) == 1 { *fsec = 0 } else { - f, _, ok := strtod(cp) - if !ok { - return dtErrBadFormat + f, dterr := parseFraction(cp, strict) + if dterr != 0 { + return dterr } *fsec = int64(math.RoundToEven(f * 1000000)) } @@ -1220,7 +1256,7 @@ func decodeDateTime(fields []string, ftypes []int, sess *dtSession, extra *dtExt return dtype, tm, fsec, tzp, dterr } head := field[:dash] - if dterr = decodeNumberField(len(head), head, fmask, &tmask, &tm, &fsec, &is2digits); dterr < 0 { + if dterr = decodeNumberField(len(head), head, fmask, &tmask, &tm, &fsec, &is2digits, sess.strict()); dterr < 0 { return dtype, tm, fsec, tzp, dterr } tmask |= dtkM(ftTZ) @@ -1242,7 +1278,7 @@ func decodeDateTime(fields []string, ftypes []int, sess *dtSession, extra *dtExt } ptype = 0 } - if dterr := decodeTime(field, intervalFullRange, &tmask, &tm, &fsec); dterr != 0 { + if dterr := decodeTime(field, intervalFullRange, &tmask, &tm, &fsec, sess.strict()); dterr != 0 { return dtype, tm, fsec, tzp, dterr } if timeOverflows(tm.hour, tm.min, tm.sec, fsec) { @@ -1274,7 +1310,7 @@ func decodeDateTime(fields []string, ftypes []int, sess *dtSession, extra *dtExt tm.year, tm.mon, tm.mday = j2date(value) isjulian = true if cp != "" { - f, dterr := parseFraction(cp) + f, dterr := parseFraction(cp, sess.strict()) if dterr != 0 { return dtype, tm, fsec, tzp, dterr } @@ -1282,7 +1318,7 @@ func decodeDateTime(fields []string, ftypes []int, sess *dtSession, extra *dtExt tmask |= dtkTimeM } case dtkTime: - if dterr := decodeNumberField(len(field), field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits); dterr < 0 { + if dterr := decodeNumberField(len(field), field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits, sess.strict()); dterr < 0 { return dtype, tm, fsec, tzp, dterr } if tmask != dtkTimeM { @@ -1302,11 +1338,11 @@ func decodeDateTime(fields []string, ftypes []int, sess *dtSession, extra *dtExt return dtype, tm, fsec, tzp, dterr } case dot >= 0 && dot > 2: - if dterr := decodeNumberField(flen, field, fmask, &tmask, &tm, &fsec, &is2digits); dterr < 0 { + if dterr := decodeNumberField(flen, field, fmask, &tmask, &tm, &fsec, &is2digits, sess.strict()); dterr < 0 { return dtype, tm, fsec, tzp, dterr } case flen >= 6 && (fmask&dtkDateM == 0 || fmask&dtkTimeM == 0): - if dterr := decodeNumberField(flen, field, fmask, &tmask, &tm, &fsec, &is2digits); dterr < 0 { + if dterr := decodeNumberField(flen, field, fmask, &tmask, &tm, &fsec, &is2digits, sess.strict()); dterr < 0 { return dtype, tm, fsec, tzp, dterr } default: @@ -1316,7 +1352,7 @@ func decodeDateTime(fields []string, ftypes []int, sess *dtSession, extra *dtExt } } case dtkString, dtkSpecial: - typ, val, valtz, dterr := decodeTimezoneAbbrev(field, extra) + typ, val, valtz, dterr := decodeTimezoneAbbrev(field, extra, sess) if dterr != 0 { return dtype, tm, fsec, tzp, dterr } @@ -1487,7 +1523,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt return tm, fsec, tzp, dterr } head := field[:dash] - dterr = decodeNumberField(len(head), head, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits) + dterr = decodeNumberField(len(head), head, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits, sess.strict()) if dterr < 0 { return tm, fsec, tzp, dterr } @@ -1509,7 +1545,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt } ptype = 0 } - if dterr := decodeTime(field, intervalFullRange, &tmask, &tm, &fsec); dterr != 0 { + if dterr := decodeTime(field, intervalFullRange, &tmask, &tm, &fsec, sess.strict()); dterr != 0 { return tm, fsec, tzp, dterr } case dtkTZ: @@ -1538,7 +1574,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt tm.year, tm.mon, tm.mday = j2date(value) isjulian = true if cp != "" { - f, dterr := parseFraction(cp) + f, dterr := parseFraction(cp, sess.strict()) if dterr != 0 { return tm, fsec, tzp, dterr } @@ -1546,7 +1582,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt tmask |= dtkTimeM } case dtkTime: - dterr := decodeNumberField(len(field), field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits) + dterr := decodeNumberField(len(field), field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits, sess.strict()) if dterr < 0 { return tm, fsec, tzp, dterr } @@ -1568,7 +1604,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt return tm, fsec, tzp, dterr } } else if dot > 2 { - dterr := decodeNumberField(flen, field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits) + dterr := decodeNumberField(flen, field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits, sess.strict()) if dterr < 0 { return tm, fsec, tzp, dterr } @@ -1577,7 +1613,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt return tm, fsec, tzp, dtErrBadFormat } case flen > 4: - dterr := decodeNumberField(flen, field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits) + dterr := decodeNumberField(flen, field, fmask|dtkDateM, &tmask, &tm, &fsec, &is2digits, sess.strict()) if dterr < 0 { return tm, fsec, tzp, dterr } @@ -1589,7 +1625,7 @@ func decodeTimeOnly(fields []string, ftypes []int, sess *dtSession, extra *dtExt } } case dtkString, dtkSpecial: - typ, val, valtz, dterr := decodeTimezoneAbbrev(field, extra) + typ, val, valtz, dterr := decodeTimezoneAbbrev(field, extra, sess) if dterr != 0 { return tm, fsec, tzp, dterr } @@ -1764,7 +1800,7 @@ func decodeInterval(fields []string, ftypes []int, rng int, sess *dtSession) (dt ft := ftypes[i] if ft == dtkTZ && strings.IndexByte(field[1:], ':') >= 0 { var tm2 int - if decodeTimeForInterval(field[1:], rng, &tm2, &in) == 0 { + if decodeTimeForInterval(field[1:], rng, &tm2, &in, sess.strict()) == 0 { tmask = tm2 if field[0] == '-' { if in.usec == math.MinInt64 { @@ -1783,7 +1819,7 @@ func decodeInterval(fields []string, ftypes []int, rng int, sess *dtSession) (dt } switch ft { case dtkTime: - if dterr := decodeTimeForInterval(field, rng, &tmask, &in); dterr != 0 { + if dterr := decodeTimeForInterval(field, rng, &tmask, &in, sess.strict()); dterr != 0 { return dtype, in, dterr } if forceNegative && in.usec > 0 { @@ -1835,7 +1871,7 @@ func decodeInterval(fields []string, ftypes []int, rng int, sess *dtSession) (dt } case cp != "" && cp[0] == '.': var dterr int - if fval, dterr = parseFraction(cp); dterr != 0 { + if fval, dterr = parseFraction(cp, sess.strict()); dterr != 0 { return dtype, in, dterr } if field[0] == '-' { @@ -2344,6 +2380,8 @@ func (a *analyzer) dtSession() *dtSession { } s := &dtSession{dateOrder: "mdy", tz: time.Local} if a.s != nil { + s.sessionAbbrevs = a.s.Version.Or() >= pgparse.PG18 + s.strictNumbers = s.sessionAbbrevs order, style, zone := a.s.DateTimeSettings() if order != "" { s.dateOrder = order diff --git a/internal/analyze/expr.go b/internal/analyze/expr.go index 63ee151..93d5044 100644 --- a/internal/analyze/expr.go +++ b/internal/analyze/expr.go @@ -4,9 +4,8 @@ import ( "strconv" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -17,7 +16,7 @@ type expr struct { src *Source // rowOf is the FROM item this expression is the whole row of (a bare table alias) rowOf *rte - node *pg_query.Node + node *pgparse.Node // param is the parameter number when the expression is a bare $n param int32 // fparam is the 1-based position of the SQL function parameter this expression is, @@ -55,7 +54,7 @@ func (a *analyzer) bindTypmod(e *expr, target schema.TypeRef, loc int32) *Error return err } } else if c := e.node.GetAConst(); c != nil { - if sv, ok := c.Val.(*pg_query.A_Const_Sval); ok { + if sv, ok := c.Val.(*pgparse.A_Const_Sval); ok { if err := a.validateLiteralTypmod(sv.Sval.GetSval(), to, target.Typmod, c.Location); err != nil { return err } @@ -201,19 +200,19 @@ func (a *analyzer) typeNames(oids []catalog.OID) string { return strings.Join(parts, ", ") } -func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { +func (a *analyzer) analyzeExpr(n *pgparse.Node, sc *scope) (*expr, *Error) { if n == nil { return nil, errAt(codeSyntaxError, -1, "missing expression") } switch v := n.Node.(type) { - case *pg_query.Node_AConst: + case *pgparse.Node_AConst: if bs := v.AConst.GetBsval(); bs != nil { if err := validateBitConst(bs.GetBsval(), v.AConst.Location); err != nil { return nil, err } } return a.constExpr(v.AConst, n), nil - case *pg_query.Node_ParamRef: + case *pgparse.Node_ParamRef: num := v.ParamRef.Number if num > a.maxParam { a.maxParam = num @@ -226,15 +225,15 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { a.params[num] = catalog.Unknown } return e, nil - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: return a.columnRef(v.ColumnRef, sc) - case *pg_query.Node_TypeCast: + case *pgparse.Node_TypeCast: return a.typeCast(v.TypeCast, sc) - case *pg_query.Node_AExpr: + case *pgparse.Node_AExpr: return a.aExpr(v.AExpr, sc) - case *pg_query.Node_FuncCall: + case *pgparse.Node_FuncCall: return a.funcCall(v.FuncCall, sc) - case *pg_query.Node_BoolExpr: + case *pgparse.Node_BoolExpr: nullable := false for _, arg := range v.BoolExpr.Args { e, err := a.analyzeExpr(arg, sc) @@ -250,12 +249,12 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { nullable = nullable || e.nullable } return &expr{typ: ref(catalog.Bool), nullable: nullable, node: n}, nil - case *pg_query.Node_NullTest: + case *pgparse.Node_NullTest: if _, err := a.analyzeExpr(v.NullTest.Arg, sc); err != nil { return nil, err } return &expr{typ: ref(catalog.Bool), node: n}, nil - case *pg_query.Node_BooleanTest: + case *pgparse.Node_BooleanTest: e, err := a.analyzeExpr(v.BooleanTest.Arg, sc) if err != nil { return nil, err @@ -264,9 +263,9 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, err } return &expr{typ: ref(catalog.Bool), node: n}, nil - case *pg_query.Node_CaseExpr: + case *pgparse.Node_CaseExpr: return a.caseExpr(v.CaseExpr, sc) - case *pg_query.Node_CoalesceExpr: + case *pgparse.Node_CoalesceExpr: savedBan := a.srfBan a.srfBan = "COALESCE" defer func() { a.srfBan = savedBan }() @@ -285,13 +284,13 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { } } return &expr{typ: t, nullable: nullable, node: n, coll: coll}, nil - case *pg_query.Node_MinMaxExpr: + case *pgparse.Node_MinMaxExpr: es, err := a.analyzeList(v.MinMaxExpr.Args, sc) if err != nil { return nil, err } name := "GREATEST" - if v.MinMaxExpr.Op == pg_query.MinMaxOp_IS_LEAST { + if v.MinMaxExpr.Op == pgparse.MinMaxOp_IS_LEAST { name = "LEAST" } t, coll, err := a.unify(es, v.MinMaxExpr.Location, name) @@ -306,7 +305,7 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { } } return &expr{typ: t, nullable: nullable, node: n, coll: coll}, nil - case *pg_query.Node_AArrayExpr: + case *pgparse.Node_AArrayExpr: es, err := a.analyzeList(v.AArrayExpr.Elements, sc) if err != nil { return nil, err @@ -336,7 +335,7 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, errAt(codeUndefinedObject, v.AArrayExpr.Location, "could not find array type for data type %s", a.s.Types.Format(t)) } return &expr{typ: ref(arr), node: n, coll: coll}, nil - case *pg_query.Node_RowExpr: + case *pgparse.Node_RowExpr: args, err := a.analyzeList(v.RowExpr.Args, sc) if err != nil { return nil, err @@ -355,13 +354,13 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { fields = append(fields, rteCol{name: "f" + strconv.Itoa(i+1), typ: e.typ, nullable: e.nullable, src: e.src, fields: e.fields, lit: lit}) } return &expr{typ: ref(catalog.Record), node: n, fields: fields}, nil - case *pg_query.Node_SubLink: + case *pgparse.Node_SubLink: return a.subLink(v.SubLink, sc) - case *pg_query.Node_AIndirection: + case *pgparse.Node_AIndirection: return a.indirection(v.AIndirection, sc) - case *pg_query.Node_SqlvalueFunction: + case *pgparse.Node_SqlvalueFunction: return &expr{typ: ref(sqlValueType(v.SqlvalueFunction.Op)), node: n}, nil - case *pg_query.Node_CollateClause: + case *pgparse.Node_CollateClause: e, err := a.analyzeExpr(v.CollateClause.Arg, sc) if err != nil { return nil, err @@ -371,9 +370,9 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { } e.node = n return e, nil - case *pg_query.Node_NamedArgExpr: + case *pgparse.Node_NamedArgExpr: return a.analyzeExpr(v.NamedArgExpr.Arg, sc) - case *pg_query.Node_GroupingFunc: + case *pgparse.Node_GroupingFunc: // the arguments' level (the nearest one their columns resolve to) is the grouped // query the GROUPING belongs to fr := &aggFrame{sc: sc} @@ -391,11 +390,11 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, errAt(codeGroupingError, v.GroupingFunc.Location, "arguments to GROUPING must be grouping expressions of the associated query level") } return &expr{typ: ref(catalog.Int4), node: n}, nil - case *pg_query.Node_JsonObjectConstructor: + case *pgparse.Node_JsonObjectConstructor: return a.jsonConstructorList(v.JsonObjectConstructor.Exprs, v.JsonObjectConstructor.Output, sc, n) - case *pg_query.Node_JsonArrayConstructor: + case *pgparse.Node_JsonArrayConstructor: return a.jsonConstructorList(v.JsonArrayConstructor.Exprs, v.JsonArrayConstructor.Output, sc, n) - case *pg_query.Node_JsonArrayQueryConstructor: + case *pgparse.Node_JsonArrayQueryConstructor: q := v.JsonArrayQueryConstructor if sel := q.Query.GetSelectStmt(); sel != nil { cols, err := a.selectStmt(sel, newScope(sc)) @@ -411,10 +410,10 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, err } return &expr{typ: t, node: n}, nil - case *pg_query.Node_JsonArrayAgg: + case *pgparse.Node_JsonArrayAgg: ag := v.JsonArrayAgg return a.jsonAgg(ag.Constructor, sc, n, func() *Error { _, err := a.jsonValue(ag.Arg, sc); return err }) - case *pg_query.Node_JsonObjectAgg: + case *pgparse.Node_JsonObjectAgg: ag := v.JsonObjectAgg return a.jsonAgg(ag.Constructor, sc, n, func() *Error { k, err := a.analyzeExpr(ag.Arg.Key, sc) @@ -427,9 +426,9 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { _, err = a.jsonValue(ag.Arg.Value, sc) return err }) - case *pg_query.Node_JsonFuncExpr: + case *pgparse.Node_JsonFuncExpr: return a.jsonFuncExpr(v.JsonFuncExpr, sc, n) - case *pg_query.Node_JsonParseExpr: + case *pgparse.Node_JsonParseExpr: je, err := a.jsonValue(v.JsonParseExpr.Expr, sc) if err != nil { return nil, err @@ -450,7 +449,7 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, err } return &expr{typ: t, nullable: true, node: n}, nil - case *pg_query.Node_JsonScalarExpr: + case *pgparse.Node_JsonScalarExpr: if _, err := a.analyzeExpr(v.JsonScalarExpr.Expr, sc); err != nil { return nil, err } @@ -459,7 +458,7 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, err } return &expr{typ: t, nullable: true, node: n}, nil - case *pg_query.Node_JsonSerializeExpr: + case *pgparse.Node_JsonSerializeExpr: if _, err := a.jsonValue(v.JsonSerializeExpr.Expr, sc); err != nil { return nil, err } @@ -471,19 +470,19 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { return nil, errAt(codeDatatypeMismatch, v.JsonSerializeExpr.Location, "cannot use type %s in RETURNING clause of JSON_SERIALIZE()", a.s.Types.Format(t)) } return &expr{typ: t, nullable: true, node: n}, nil - case *pg_query.Node_XmlExpr: + case *pgparse.Node_XmlExpr: return a.xmlExpr(v.XmlExpr, sc, n) - case *pg_query.Node_XmlSerialize: + case *pgparse.Node_XmlSerialize: return a.xmlSerialize(v.XmlSerialize, sc, n) - case *pg_query.Node_CurrentOfExpr: + case *pgparse.Node_CurrentOfExpr: return &expr{typ: ref(catalog.Bool), node: n}, nil - case *pg_query.Node_MergeSupportFunc: + case *pgparse.Node_MergeSupportFunc: // merge_action() in MERGE ... RETURNING (PG 17) if !a.inMerge { return nil, errAt(codeSyntaxError, v.MergeSupportFunc.Location, "MERGE_ACTION() can only be used in the RETURNING list of a MERGE command") } return &expr{typ: ref(catalog.Text), node: n}, nil - case *pg_query.Node_JsonIsPredicate: + case *pgparse.Node_JsonIsPredicate: e, err := a.analyzeExpr(v.JsonIsPredicate.Expr, sc) if err != nil { return nil, err @@ -499,15 +498,15 @@ func (a *analyzer) analyzeExpr(n *pg_query.Node, sc *scope) (*expr, *Error) { } } return &expr{typ: ref(catalog.Bool), nullable: e.nullable, node: n}, nil - case *pg_query.Node_SetToDefault: + case *pgparse.Node_SetToDefault: return &expr{typ: unknownRef(), nullable: true, node: n}, nil - case *pg_query.Node_List: + case *pgparse.Node_List: return nil, errAt(codeSyntaxError, -1, "unexpected list expression") } return nil, errAt(codeFeatureNotSupported, loc(n), "unsupported expression %T", n.Node) } -func (a *analyzer) analyzeList(nodes []*pg_query.Node, sc *scope) ([]*expr, *Error) { +func (a *analyzer) analyzeList(nodes []*pgparse.Node, sc *scope) ([]*expr, *Error) { out := make([]*expr, 0, len(nodes)) for _, n := range nodes { e, err := a.analyzeExpr(n, sc) @@ -556,14 +555,14 @@ func (a *analyzer) unify(es []*expr, at int32, context string) (schema.TypeRef, return schema.TypeRef{OID: t, Typmod: typmod}, a.resultColl(c, t), nil } -func (a *analyzer) constExpr(c *pg_query.A_Const, n *pg_query.Node) *expr { +func (a *analyzer) constExpr(c *pgparse.A_Const, n *pgparse.Node) *expr { if c.Isnull { return &expr{typ: unknownRef(), nullable: true, node: n, lit: true} } switch v := c.Val.(type) { - case *pg_query.A_Const_Ival: + case *pgparse.A_Const_Ival: return &expr{typ: ref(catalog.Int4), node: n, lit: true} - case *pg_query.A_Const_Fval: + case *pgparse.A_Const_Fval: s := v.Fval.GetFval() if !strings.ContainsAny(s, ".eE") { if _, err := strconv.ParseInt(s, 10, 32); err == nil { @@ -574,16 +573,16 @@ func (a *analyzer) constExpr(c *pg_query.A_Const, n *pg_query.Node) *expr { } } return &expr{typ: ref(catalog.Numeric), node: n, lit: true} - case *pg_query.A_Const_Boolval: + case *pgparse.A_Const_Boolval: return &expr{typ: ref(catalog.Bool), node: n, lit: true} - case *pg_query.A_Const_Bsval: + case *pgparse.A_Const_Bsval: return &expr{typ: ref(a.s.Types.Lookup("pg_catalog", "bit").OID), node: n, lit: true} default: // string return &expr{typ: unknownRef(), node: n, lit: true} } } -func (a *analyzer) columnRef(c *pg_query.ColumnRef, sc *scope) (*expr, *Error) { +func (a *analyzer) columnRef(c *pgparse.ColumnRef, sc *scope) (*expr, *Error) { var names []string star := false for _, f := range c.Fields { @@ -602,7 +601,7 @@ func (a *analyzer) columnRef(c *pg_query.ColumnRef, sc *scope) (*expr, *Error) { if r != nil { if r.rowType != 0 { a.useAll(r.cols, c.Location) - return &expr{typ: ref(r.rowType), node: nodeOf(c), fields: r.cols}, nil + return &expr{typ: ref(r.rowType), nullable: r.rowNullable, node: nodeOf(c), fields: r.cols}, nil } cols := r.expand() a.useAll(cols, c.Location) @@ -639,7 +638,7 @@ func (a *analyzer) columnRef(c *pg_query.ColumnRef, sc *scope) (*expr, *Error) { a.noteVarScope(sc.scopeOf(r)) a.useAll(r.cols, c.Location) if r.rowType != 0 { - return &expr{typ: ref(r.rowType), node: nodeOf(c), fields: r.cols, rowOf: r}, nil + return &expr{typ: ref(r.rowType), nullable: r.rowNullable, node: nodeOf(c), fields: r.cols, rowOf: r}, nil } if r.scalarFn && len(r.cols) == 1 { return &expr{typ: r.cols[0].typ, nullable: true, node: nodeOf(c)}, nil @@ -678,7 +677,19 @@ func (a *analyzer) columnRef(c *pg_query.ColumnRef, sc *scope) (*expr, *Error) { return e, nil } -func (a *analyzer) typeCast(tc *pg_query.TypeCast, sc *scope) (*expr, *Error) { +func (a *analyzer) typeCast(tc *pgparse.TypeCast, sc *scope) (*expr, *Error) { + e, err := a.typeCastValue(tc, sc) + if err != nil { + return nil, err + } + // a domain declared with a collation gives the cast result that collation + if d := a.s.Types.Domains[e.oid()]; d != nil && d.Collation != "" && e.coll.strength <= collImplicit { + e.coll = collation{strength: collImplicit, name: d.Collation, loc: tc.Location} + } + return e, nil +} + +func (a *analyzer) typeCastValue(tc *pgparse.TypeCast, sc *scope) (*expr, *Error) { target, rerr := a.s.ResolveType(tc.TypeName) if rerr != nil { return nil, errAt(codeUndefinedObject, tc.TypeName.Location, "%v", rerr) @@ -758,15 +769,15 @@ func (a *analyzer) typeCast(tc *pg_query.TypeCast, sc *scope) (*expr, *Error) { return &expr{typ: target, nullable: e.nullable, node: nodeOf(tc), lit: isLit(e) && a.domainType(target.OID) == nil, src: src}, nil } -func (a *analyzer) opName(nodes []*pg_query.Node) string { +func (a *analyzer) opName(nodes []*pgparse.Node) string { parts := strs(nodes) return parts[len(parts)-1] } -func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { +func (a *analyzer) aExpr(x *pgparse.A_Expr, sc *scope) (*expr, *Error) { self := nodeOf(x) switch x.Kind { - case pg_query.A_Expr_Kind_AEXPR_OP, pg_query.A_Expr_Kind_AEXPR_LIKE, pg_query.A_Expr_Kind_AEXPR_ILIKE, pg_query.A_Expr_Kind_AEXPR_SIMILAR: + case pgparse.A_Expr_Kind_AEXPR_OP, pgparse.A_Expr_Kind_AEXPR_LIKE, pgparse.A_Expr_Kind_AEXPR_ILIKE, pgparse.A_Expr_Kind_AEXPR_SIMILAR: name := a.opName(x.Name) var l *expr var err *Error @@ -788,7 +799,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { if lr, rr := x.Lexpr.GetRowExpr(), x.Rexpr.GetRowExpr(); lr != nil && rr != nil && len(lr.Args) == 0 && len(rr.Args) == 0 { return nil, errAt(codeFeatureNotSupported, x.Location, "cannot compare rows of zero length") } - if lr, rr := x.Lexpr.GetRowExpr(), x.Rexpr.GetRowExpr(); lr != nil && rr != nil && !rowCompareOps[name] && !rowPatternOps[name] && x.Kind == pg_query.A_Expr_Kind_AEXPR_OP { + if lr, rr := x.Lexpr.GetRowExpr(), x.Rexpr.GetRowExpr(); lr != nil && rr != nil && !rowCompareOps[name] && !rowPatternOps[name] && x.Kind == pgparse.A_Expr_Kind_AEXPR_OP { // make_row_comparison_op: the operator must exist per column, and then have a // btree interpretation, which ~~ and friends have not if len(lr.Args) != len(rr.Args) { @@ -831,7 +842,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { } return &expr{typ: ref(catalog.Bool), nullable: l.nullable || r.nullable, node: self}, nil } - if x.Kind == pg_query.A_Expr_Kind_AEXPR_SIMILAR { + if x.Kind == pgparse.A_Expr_Kind_AEXPR_SIMILAR { // x SIMILAR TO y is x ~ similar_to_escape(y) if err := a.bind(r, catalog.Text, x.Location); err != nil { return nil, err @@ -840,7 +851,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { name = "~" } return a.applyOperator(name, l, r, x.Location, self) - case pg_query.A_Expr_Kind_AEXPR_OP_ANY, pg_query.A_Expr_Kind_AEXPR_OP_ALL: + case pgparse.A_Expr_Kind_AEXPR_OP_ANY, pgparse.A_Expr_Kind_AEXPR_OP_ALL: name := a.opName(x.Name) l, err := a.analyzeExpr(x.Lexpr, sc) if err != nil { @@ -873,7 +884,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { } } return &expr{typ: ref(catalog.Bool), nullable: l.nullable || r.nullable, node: self}, nil - case pg_query.A_Expr_Kind_AEXPR_IN: + case pgparse.A_Expr_Kind_AEXPR_IN: l, err := a.analyzeExpr(x.Lexpr, sc) if err != nil { return nil, err @@ -895,8 +906,8 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { } } return &expr{typ: ref(catalog.Bool), nullable: true, node: self}, nil - case pg_query.A_Expr_Kind_AEXPR_BETWEEN, pg_query.A_Expr_Kind_AEXPR_NOT_BETWEEN, - pg_query.A_Expr_Kind_AEXPR_BETWEEN_SYM, pg_query.A_Expr_Kind_AEXPR_NOT_BETWEEN_SYM: + case pgparse.A_Expr_Kind_AEXPR_BETWEEN, pgparse.A_Expr_Kind_AEXPR_NOT_BETWEEN, + pgparse.A_Expr_Kind_AEXPR_BETWEEN_SYM, pgparse.A_Expr_Kind_AEXPR_NOT_BETWEEN_SYM: l, err := a.analyzeExpr(x.Lexpr, sc) if err != nil { return nil, err @@ -912,7 +923,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { return nil, err } return &expr{typ: ref(catalog.Bool), nullable: true, node: self}, nil - case pg_query.A_Expr_Kind_AEXPR_DISTINCT, pg_query.A_Expr_Kind_AEXPR_NOT_DISTINCT: + case pgparse.A_Expr_Kind_AEXPR_DISTINCT, pgparse.A_Expr_Kind_AEXPR_NOT_DISTINCT: l, err := a.analyzeExpr(x.Lexpr, sc) if err != nil { return nil, err @@ -925,7 +936,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { return nil, err } return &expr{typ: ref(catalog.Bool), node: self}, nil - case pg_query.A_Expr_Kind_AEXPR_NULLIF: + case pgparse.A_Expr_Kind_AEXPR_NULLIF: l, err := a.analyzeExpr(x.Lexpr, sc) if err != nil { return nil, err @@ -943,7 +954,7 @@ func (a *analyzer) aExpr(x *pg_query.A_Expr, sc *scope) (*expr, *Error) { } // applyOperator resolves name(l, r) (l nil for prefix), binds unknowns, returns the result expr. -func (a *analyzer) applyOperator(name string, l, r *expr, at int32, self *pg_query.Node) (*expr, *Error) { +func (a *analyzer) applyOperator(name string, l, r *expr, at int32, self *pgparse.Node) (*expr, *Error) { var left catalog.OID if l != nil { left = l.oid() @@ -1033,7 +1044,7 @@ func firstParam(es ...*expr) int32 { return 1 } -func (a *analyzer) funcCall(f *pg_query.FuncCall, sc *scope) (*expr, *Error) { +func (a *analyzer) funcCall(f *pgparse.FuncCall, sc *scope) (*expr, *Error) { self := nodeOf(f) names := strs(f.Funcname) schemaName, name := "", names[len(names)-1] @@ -1097,7 +1108,7 @@ func (a *analyzer) funcCall(f *pg_query.FuncCall, sc *scope) (*expr, *Error) { if err := a.checkWindowDef(f.Over, sc); err != nil { return nil, err } - for _, n := range append(append([]*pg_query.Node{}, f.Over.PartitionClause...), f.Over.OrderClause...) { + for _, n := range append(append([]*pgparse.Node{}, f.Over.PartitionClause...), f.Over.OrderClause...) { if sb := n.GetSortBy(); sb != nil { n = sb.Node } @@ -1369,7 +1380,7 @@ func (a *analyzer) funcCall(f *pg_query.FuncCall, sc *scope) (*expr, *Error) { return &expr{typ: ref(res), nullable: nullable, node: self, fields: fields, coll: a.resultColl(coll, res)}, nil } -func (a *analyzer) caseExpr(c *pg_query.CaseExpr, sc *scope) (*expr, *Error) { +func (a *analyzer) caseExpr(c *pgparse.CaseExpr, sc *scope) (*expr, *Error) { a.inCase++ defer func() { a.inCase-- }() var arg *expr @@ -1427,7 +1438,7 @@ func (a *analyzer) caseExpr(c *pg_query.CaseExpr, sc *scope) (*expr, *Error) { return &expr{typ: t, nullable: nullable, node: nodeOf(c), coll: coll}, nil } -func (a *analyzer) subLink(s *pg_query.SubLink, sc *scope) (*expr, *Error) { +func (a *analyzer) subLink(s *pgparse.SubLink, sc *scope) (*expr, *Error) { sel := s.Subselect.GetSelectStmt() if sel == nil { return nil, errAt(codeFeatureNotSupported, s.Location, "unsupported subquery") @@ -1441,9 +1452,9 @@ func (a *analyzer) subLink(s *pg_query.SubLink, sc *scope) (*expr, *Error) { } self := nodeOf(s) switch s.SubLinkType { - case pg_query.SubLinkType_EXISTS_SUBLINK: + case pgparse.SubLinkType_EXISTS_SUBLINK: return &expr{typ: ref(catalog.Bool), node: self}, nil - case pg_query.SubLinkType_EXPR_SUBLINK: + case pgparse.SubLinkType_EXPR_SUBLINK: if len(cols) != 1 { return nil, errAt(codeSyntaxError, s.Location, "subquery must return only one column") } @@ -1451,7 +1462,7 @@ func (a *analyzer) subLink(s *pg_query.SubLink, sc *scope) (*expr, *Error) { // always yields one, so its column's own nullability stands (coalesce(max(x), 0)) nullable := cols[0].nullable || !a.plainAggregate(sel) return &expr{typ: cols[0].typ, nullable: nullable, node: self, coll: cols[0].coll.asVar()}, nil - case pg_query.SubLinkType_ARRAY_SUBLINK: + case pgparse.SubLinkType_ARRAY_SUBLINK: if len(cols) != 1 { return nil, errAt(codeSyntaxError, s.Location, "subquery must return only one column") } @@ -1466,7 +1477,7 @@ func (a *analyzer) subLink(s *pg_query.SubLink, sc *scope) (*expr, *Error) { return nil, errAt(codeUndefinedObject, s.Location, "could not find array type for data type %s", a.s.Types.Format(cols[0].typ)) } return &expr{typ: ref(arr), nullable: false, node: self}, nil - case pg_query.SubLinkType_ANY_SUBLINK, pg_query.SubLinkType_ALL_SUBLINK: + case pgparse.SubLinkType_ANY_SUBLINK, pgparse.SubLinkType_ALL_SUBLINK: name := "=" if len(s.OperName) > 0 { name = a.opName(s.OperName) @@ -1509,7 +1520,7 @@ func (a *analyzer) subLink(s *pg_query.SubLink, sc *scope) (*expr, *Error) { return nil, errAt(codeFeatureNotSupported, s.Location, "unsupported sublink type %v", s.SubLinkType) } -func (a *analyzer) indirection(x *pg_query.A_Indirection, sc *scope) (*expr, *Error) { +func (a *analyzer) indirection(x *pgparse.A_Indirection, sc *scope) (*expr, *Error) { // (t).field / t.field where t is a whole-row var: pg_query gives ColumnRef with 2 fields // for the latter, so here we mostly see array subscripts and (rowexpr).field e, err := a.analyzeExpr(x.Arg, sc) @@ -1520,7 +1531,7 @@ func (a *analyzer) indirection(x *pg_query.A_Indirection, sc *scope) (*expr, *Er for i := 0; i < len(x.Indirection); i++ { ind := x.Indirection[i] switch v := ind.Node.(type) { - case *pg_query.Node_AIndices: + case *pgparse.Node_AIndices: t := a.typ(a.baseType(cur.OID)) switch { case t != nil && t.OID == catalog.JSONB: @@ -1529,7 +1540,7 @@ func (a *analyzer) indirection(x *pg_query.A_Indirection, sc *scope) (*expr, *Er if v.AIndices.IsSlice { return nil, errAt(codeDatatypeMismatch, loc(x.Arg), "jsonb subscript does not support slices") } - for _, idx := range []*pg_query.Node{v.AIndices.Lidx, v.AIndices.Uidx} { + for _, idx := range []*pgparse.Node{v.AIndices.Lidx, v.AIndices.Uidx} { if idx == nil { continue } @@ -1560,7 +1571,7 @@ func (a *analyzer) indirection(x *pg_query.A_Indirection, sc *scope) (*expr, *Er return nil, errAt("54000", -1, "number of array dimensions (%d) exceeds the maximum allowed (%d)", dims, maxArrayDim) } slice = slice || ai.IsSlice - for _, idx := range []*pg_query.Node{ai.Lidx, ai.Uidx} { + for _, idx := range []*pgparse.Node{ai.Lidx, ai.Uidx} { if idx == nil { continue } @@ -1581,7 +1592,7 @@ func (a *analyzer) indirection(x *pg_query.A_Indirection, sc *scope) (*expr, *Er // raw_array_subscript_handler: a fixed-length type over elements (point, box, // name) subscripts to one element; no slices ai := v.AIndices - for _, idx := range []*pg_query.Node{ai.Lidx, ai.Uidx} { + for _, idx := range []*pgparse.Node{ai.Lidx, ai.Uidx} { if idx == nil { continue } @@ -1599,7 +1610,7 @@ func (a *analyzer) indirection(x *pg_query.A_Indirection, sc *scope) (*expr, *Er default: return nil, errAt(codeDatatypeMismatch, loc(x.Arg), "cannot subscript type %s because it does not support subscripting", a.s.Types.Format(cur)) } - case *pg_query.Node_String_: + case *pgparse.Node_String_: t := a.typ(a.baseType(cur.OID)) if t != nil && t.OID == catalog.Record { // (f(x)).name on a function returning record through OUT parameters, or on a @@ -1655,33 +1666,33 @@ func (a *analyzer) relByRowType(oid catalog.OID) *schema.Relation { return nil } -func sqlValueType(op pg_query.SQLValueFunctionOp) catalog.OID { +func sqlValueType(op pgparse.SQLValueFunctionOp) catalog.OID { switch op { - case pg_query.SQLValueFunctionOp_SVFOP_CURRENT_DATE: + case pgparse.SQLValueFunctionOp_SVFOP_CURRENT_DATE: return catalog.Date - case pg_query.SQLValueFunctionOp_SVFOP_CURRENT_TIME, pg_query.SQLValueFunctionOp_SVFOP_CURRENT_TIME_N: + case pgparse.SQLValueFunctionOp_SVFOP_CURRENT_TIME, pgparse.SQLValueFunctionOp_SVFOP_CURRENT_TIME_N: return catalog.TimeTZ - case pg_query.SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP, pg_query.SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP_N: + case pgparse.SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP, pgparse.SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP_N: return catalog.TimestampTZ - case pg_query.SQLValueFunctionOp_SVFOP_LOCALTIME, pg_query.SQLValueFunctionOp_SVFOP_LOCALTIME_N: + case pgparse.SQLValueFunctionOp_SVFOP_LOCALTIME, pgparse.SQLValueFunctionOp_SVFOP_LOCALTIME_N: return catalog.Time - case pg_query.SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP, pg_query.SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP_N: + case pgparse.SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP, pgparse.SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP_N: return catalog.Timestamp } return catalog.Name } -func boolOpName(op pg_query.BoolExprType) string { +func boolOpName(op pgparse.BoolExprType) string { switch op { - case pg_query.BoolExprType_AND_EXPR: + case pgparse.BoolExprType_AND_EXPR: return "AND" - case pg_query.BoolExprType_OR_EXPR: + case pgparse.BoolExprType_OR_EXPR: return "OR" } return "NOT" } -func strs(nodes []*pg_query.Node) []string { +func strs(nodes []*pgparse.Node) []string { out := make([]string, 0, len(nodes)) for _, n := range nodes { out = append(out, n.GetString_().GetSval()) @@ -1690,62 +1701,62 @@ func strs(nodes []*pg_query.Node) []string { } // loc returns the 0-based location of a node, or -1. -func loc(n *pg_query.Node) int32 { +func loc(n *pgparse.Node) int32 { if n == nil { return -1 } switch v := n.Node.(type) { - case *pg_query.Node_AConst: + case *pgparse.Node_AConst: return v.AConst.Location - case *pg_query.Node_ParamRef: + case *pgparse.Node_ParamRef: return v.ParamRef.Location - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: return v.ColumnRef.Location - case *pg_query.Node_TypeCast: + case *pgparse.Node_TypeCast: return v.TypeCast.Location - case *pg_query.Node_AExpr: + case *pgparse.Node_AExpr: return v.AExpr.Location - case *pg_query.Node_FuncCall: + case *pgparse.Node_FuncCall: return v.FuncCall.Location - case *pg_query.Node_BoolExpr: + case *pgparse.Node_BoolExpr: return v.BoolExpr.Location - case *pg_query.Node_CaseExpr: + case *pgparse.Node_CaseExpr: return v.CaseExpr.Location - case *pg_query.Node_SubLink: + case *pgparse.Node_SubLink: return v.SubLink.Location - case *pg_query.Node_AArrayExpr: + case *pgparse.Node_AArrayExpr: return v.AArrayExpr.Location - case *pg_query.Node_ResTarget: + case *pgparse.Node_ResTarget: return v.ResTarget.Location - case *pg_query.Node_RangeVar: + case *pgparse.Node_RangeVar: return v.RangeVar.Location - case *pg_query.Node_CoalesceExpr: + case *pgparse.Node_CoalesceExpr: return v.CoalesceExpr.Location - case *pg_query.Node_NullTest: + case *pgparse.Node_NullTest: return v.NullTest.Location - case *pg_query.Node_BooleanTest: + case *pgparse.Node_BooleanTest: return v.BooleanTest.Location } return -1 } // nodeOf wraps a concrete AST message back into a Node (for name figuring). -func nodeOf(m any) *pg_query.Node { +func nodeOf(m any) *pgparse.Node { switch v := m.(type) { - case *pg_query.ColumnRef: - return &pg_query.Node{Node: &pg_query.Node_ColumnRef{ColumnRef: v}} - case *pg_query.TypeCast: - return &pg_query.Node{Node: &pg_query.Node_TypeCast{TypeCast: v}} - case *pg_query.A_Expr: - return &pg_query.Node{Node: &pg_query.Node_AExpr{AExpr: v}} - case *pg_query.FuncCall: - return &pg_query.Node{Node: &pg_query.Node_FuncCall{FuncCall: v}} - case *pg_query.CaseExpr: - return &pg_query.Node{Node: &pg_query.Node_CaseExpr{CaseExpr: v}} - case *pg_query.SubLink: - return &pg_query.Node{Node: &pg_query.Node_SubLink{SubLink: v}} - case *pg_query.A_Indirection: - return &pg_query.Node{Node: &pg_query.Node_AIndirection{AIndirection: v}} + case *pgparse.ColumnRef: + return &pgparse.Node{Node: &pgparse.Node_ColumnRef{ColumnRef: v}} + case *pgparse.TypeCast: + return &pgparse.Node{Node: &pgparse.Node_TypeCast{TypeCast: v}} + case *pgparse.A_Expr: + return &pgparse.Node{Node: &pgparse.Node_AExpr{AExpr: v}} + case *pgparse.FuncCall: + return &pgparse.Node{Node: &pgparse.Node_FuncCall{FuncCall: v}} + case *pgparse.CaseExpr: + return &pgparse.Node{Node: &pgparse.Node_CaseExpr{CaseExpr: v}} + case *pgparse.SubLink: + return &pgparse.Node{Node: &pgparse.Node_SubLink{SubLink: v}} + case *pgparse.A_Indirection: + return &pgparse.Node{Node: &pgparse.Node_AIndirection{AIndirection: v}} } return nil } @@ -1815,14 +1826,14 @@ var zeroArgNullable = map[string]bool{ // plainAggregate reports whether sel is a single aggregate query without GROUP BY / HAVING / // LIMIT / set operations: it returns exactly one row. -func (a *analyzer) plainAggregate(sel *pg_query.SelectStmt) bool { - if sel.Op != pg_query.SetOperation_SETOP_NONE || len(sel.GroupClause) > 0 || sel.HavingClause != nil || +func (a *analyzer) plainAggregate(sel *pgparse.SelectStmt) bool { + if sel.Op != pgparse.SetOperation_SETOP_NONE || len(sel.GroupClause) > 0 || sel.HavingClause != nil || sel.LimitCount != nil || sel.LimitOffset != nil || len(sel.ValuesLists) > 0 || len(sel.DistinctClause) > 0 { return false } agg := false for _, tn := range sel.TargetList { - schema.WalkNodes(tn, func(n *pg_query.Node) { + schema.WalkNodes(tn, func(n *pgparse.Node) { if f := n.GetFuncCall(); f != nil && f.Over == nil && a.isAggregateName(funcNames(f)) { agg = true } @@ -1831,7 +1842,7 @@ func (a *analyzer) plainAggregate(sel *pg_query.SelectStmt) bool { return agg } -func funcNames(f *pg_query.FuncCall) []string { +func funcNames(f *pgparse.FuncCall) []string { var names []string for _, n := range f.Funcname { names = append(names, n.GetString_().GetSval()) @@ -1862,9 +1873,9 @@ func (a *analyzer) fieldOf(e *expr, name string) *expr { // rowSubquery analyzes a scalar subquery used as one side of a row comparison: its // columns form an anonymous record (ROWCOMPARE_SUBLINK). -func (a *analyzer) rowSubquery(s *pg_query.SubLink, sc *scope) (*expr, *Error) { +func (a *analyzer) rowSubquery(s *pgparse.SubLink, sc *scope) (*expr, *Error) { sel := s.Subselect.GetSelectStmt() - if s.SubLinkType != pg_query.SubLinkType_EXPR_SUBLINK || sel == nil { + if s.SubLinkType != pgparse.SubLinkType_EXPR_SUBLINK || sel == nil { return a.subLink(s, sc) } cols, err := a.selectStmt(sel, newScope(sc)) @@ -1891,8 +1902,8 @@ const ( // checkWindowDef resolves a named window and applies transformWindowDefinitions' frame // rules: an offset RANGE frame needs exactly one ORDER BY column, GROUPS mode needs an // ORDER BY at all. -func (a *analyzer) checkWindowDef(def *pg_query.WindowDef, sc *scope) *Error { - lookup := func(name string) *pg_query.WindowDef { +func (a *analyzer) checkWindowDef(def *pgparse.WindowDef, sc *scope) *Error { + lookup := func(name string) *pgparse.WindowDef { for s := sc; s != nil; s = s.parent { if w, ok := s.windows[name]; ok { return w @@ -1933,7 +1944,7 @@ func (a *analyzer) checkWindowDef(def *pg_query.WindowDef, sc *scope) *Error { case fo&frameOptionGroups != 0: mode = "GROUPS" } - for _, off := range []*pg_query.Node{def.StartOffset, def.EndOffset} { + for _, off := range []*pgparse.Node{def.StartOffset, def.EndOffset} { if off == nil { continue } @@ -2017,6 +2028,22 @@ type aggFrame struct { inDirect bool // nested: aggregates written inside the arguments, with the level each belongs to nested []nestedAgg + // cteRefs: CTEs referenced inside the arguments, with the scope defining each (an + // outer-level aggregate may not use a CTE defined below its level, PostgreSQL 18) + cteRefs []cteRef +} + +type cteRef struct { + def *scope + loc int32 +} + +// noteCTERef records, for every aggregate whose arguments are being analyzed, a CTE +// reference and the scope that defines the CTE. +func (a *analyzer) noteCTERef(def *scope, loc int32) { + for _, fr := range a.aggFrames { + fr.cteRefs = append(fr.cteRefs, cteRef{def: def, loc: loc}) + } } type nestedAgg struct { @@ -2051,7 +2078,7 @@ func (a *analyzer) noteVarScope(s *scope) { // of the same level inside the arguments is a nested aggregate, and an aggregate may not // sit in a FROM item of the level it belongs to. It returns the level the aggregate // belongs to (nil for the level it is written in). -func (a *analyzer) settleAggFrame(fr *aggFrame, f *pg_query.FuncCall) (*scope, *Error) { +func (a *analyzer) settleAggFrame(fr *aggFrame, f *pgparse.FuncCall) (*scope, *Error) { owner, depth := fr.owner, fr.ownerDepth if owner == nil { owner, depth = fr.sc.queryScope(), 0 @@ -2070,6 +2097,15 @@ func (a *analyzer) settleAggFrame(fr *aggFrame, f *pg_query.FuncCall) (*scope, * return nil, errAt(codeGroupingError, f.Location, "aggregate functions are not allowed in FROM clause of their own query level") } } + if a.s.Version.Or() >= pgparse.PG18 { + // the aggregate is evaluated at the outer level, where a CTE of the subquery + // between does not exist (18; 17 went on and failed the GROUP BY check) + for _, ref := range fr.cteRefs { + if d, ok := ref.def.levelsUp(owner); ok && d > 0 { + return nil, errAt(codeFeatureNotSupported, ref.loc, "outer-level aggregate cannot use a nested CTE") + } + } + } } for _, outer := range a.aggFrames { if outer != fr { @@ -2087,7 +2123,7 @@ const maxArrayDim = 6 // hasVarClause is contain_var_clause on a raw expression: a column reference outside any // subquery (a SubLink's own columns are not this level's variables). -func hasVarClause(n *pg_query.Node) bool { +func hasVarClause(n *pgparse.Node) bool { if n == nil || n.GetSubLink() != nil { return false } @@ -2102,7 +2138,7 @@ func hasVarClause(n *pg_query.Node) bool { return false } -func hasColumnRef(n *pg_query.Node) bool { +func hasColumnRef(n *pgparse.Node) bool { if n == nil { return false } diff --git a/internal/analyze/facts.go b/internal/analyze/facts.go index b3f6c59..a228f68 100644 --- a/internal/analyze/facts.go +++ b/internal/analyze/facts.go @@ -4,10 +4,10 @@ import ( "sort" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "github.com/kr9ly/sqlshape/internal/facts" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -35,7 +35,7 @@ type factScope struct { // newProver builds the equality closure for one level: the leaves of sc, the ON / USING // conjuncts of its joins and the conjuncts of where, with known values propagated along // the equalities (no single-row reasoning: that is fixpoint's, for the One proof). -func (a *analyzer) newProver(sc *scope, where *pg_query.Node) *prover { +func (a *analyzer) newProver(sc *scope, where *pgparse.Node) *prover { p := &prover{a: a, sc: sc, known: map[colKey]bool{}, single: map[*rte]bool{}, why: map[*rte]string{}} for _, it := range sc.items { p.addItem(it) @@ -240,14 +240,14 @@ func clearPositions(fs *facts.Scope) { // a policy's session-setting call was not analyzed by this analyzer, so its volatility is // not on record, but pinning by a policy has always meant exactly that (vet's former // pinsColumn). -func (a *analyzer) predFacts(p *prover, n *pg_query.Node, ref func(colKey) (facts.ColRef, bool), policy bool) facts.Pred { - known := func(x *pg_query.Node) bool { +func (a *analyzer) predFacts(p *prover, n *pgparse.Node, ref func(colKey) (facts.ColRef, bool), policy bool) facts.Pred { + known := func(x *pgparse.Node) bool { if policy { return !readsColumn(x) } return p.isKnown(x) } - term := func(x *pg_query.Node) facts.Term { + term := func(x *pgparse.Node) facts.Term { if o, ok := p.outerRef(x); ok { return facts.Term{Kind: facts.Outer, Col: o} } @@ -300,7 +300,7 @@ func (a *analyzer) predFacts(p *prover, n *pg_query.Node, ref func(colKey) (fact if k, ok := p.resolve(nt.Arg); ok { if r, ok := ref(k); ok { op := facts.IsNull - if nt.Nulltesttype == pg_query.NullTestType_IS_NOT_NULL { + if nt.Nulltesttype == pgparse.NullTestType_IS_NOT_NULL { op = facts.IsNotNull } return facts.Pred{Op: op, Col: r} @@ -308,9 +308,9 @@ func (a *analyzer) predFacts(p *prover, n *pg_query.Node, ref func(colKey) (fact } } // opaque: the text with this level's column references reduced to bare names - clone := proto.Clone(n).(*pg_query.Node) + clone := proto.Clone(n).(*pgparse.Node) var cols []facts.ColRef - schema.WalkNodes(clone, func(m *pg_query.Node) { + schema.WalkNodes(clone, func(m *pgparse.Node) { cr := m.GetColumnRef() if cr == nil || len(cr.Fields) < 2 { if cr != nil && len(cr.Fields) == 1 { @@ -335,19 +335,19 @@ func (a *analyzer) predFacts(p *prover, n *pg_query.Node, ref func(colKey) (fact // alternatives reads `x IN (a, b, ...)` (two or more items) and `x = a OR x = b OR ...` // (every arm an equality with the same left operand, by text) as x and its alternatives. -func (a *analyzer) alternatives(n *pg_query.Node) (*pg_query.Node, []*pg_query.Node, bool) { - if x := n.GetAExpr(); x != nil && x.Kind == pg_query.A_Expr_Kind_AEXPR_IN && x.Lexpr != nil { +func (a *analyzer) alternatives(n *pgparse.Node) (*pgparse.Node, []*pgparse.Node, bool) { + if x := n.GetAExpr(); x != nil && x.Kind == pgparse.A_Expr_Kind_AEXPR_IN && x.Lexpr != nil { if items := x.Rexpr.GetList().GetItems(); len(items) >= 2 { return x.Lexpr, items, true } return nil, nil, false } b := n.GetBoolExpr() - if b == nil || b.Boolop != pg_query.BoolExprType_OR_EXPR || len(b.Args) < 2 { + if b == nil || b.Boolop != pgparse.BoolExprType_OR_EXPR || len(b.Args) < 2 { return nil, nil, false } - var col *pg_query.Node - var alts []*pg_query.Node + var col *pgparse.Node + var alts []*pgparse.Node for _, arm := range b.Args { l, r := equalitySides(arm) if l == nil { @@ -372,15 +372,15 @@ func (a *analyzer) alternatives(n *pg_query.Node) (*pg_query.Node, []*pg_query.N // existsFacts turns an EXISTS (or a single-column `x IN (SELECT y ...)`) conjunct into an // Exists predicate carrying the subquery's own facts; the body was recorded when the // subquery was analyzed (factBySel). Anything else stays opaque. -func (a *analyzer) existsFacts(p *prover, sub *pg_query.SubLink, ref func(colKey) (facts.ColRef, bool)) (facts.Pred, bool) { +func (a *analyzer) existsFacts(p *prover, sub *pgparse.SubLink, ref func(colKey) (facts.ColRef, bool)) (facts.Pred, bool) { sel := sub.Subselect.GetSelectStmt() body := a.factBySel[sel] if body == nil { return facts.Pred{}, false } switch sub.SubLinkType { - case pg_query.SubLinkType_EXISTS_SUBLINK: - case pg_query.SubLinkType_ANY_SUBLINK: + case pgparse.SubLinkType_EXISTS_SUBLINK: + case pgparse.SubLinkType_ANY_SUBLINK: // x IN (SELECT y FROM ...) / x = ANY (SELECT y ...): a witness row with y = x if names := strs(sub.OperName); len(names) > 0 && names[len(names)-1] != "=" { return facts.Pred{}, false @@ -413,7 +413,7 @@ func (a *analyzer) existsFacts(p *prover, sub *pg_query.SubLink, ref func(colKey // outerRef places a column reference of an enclosing level: the leaf index it has in the // parent level's facts and its name. False for anything that is not such a reference. -func (p *prover) outerRef(n *pg_query.Node) (facts.ColRef, bool) { +func (p *prover) outerRef(n *pgparse.Node) (facts.ColRef, bool) { cr := n.GetColumnRef() if cr == nil || p.sc == nil || p.sc.parent == nil { return facts.ColRef{}, false @@ -439,7 +439,7 @@ func (p *prover) outerRef(n *pg_query.Node) (facts.ColRef, bool) { } // termFacts classifies the known side of an equality. -func termFacts(n *pg_query.Node) facts.Term { +func termFacts(n *pgparse.Node) facts.Term { inner := n for { tc := inner.GetTypeCast() @@ -449,18 +449,18 @@ func termFacts(n *pg_query.Node) facts.Term { inner = tc.Arg } switch v := inner.Node.(type) { - case *pg_query.Node_ParamRef: + case *pgparse.Node_ParamRef: return facts.Term{Kind: facts.Param, Param: v.ParamRef.Number} - case *pg_query.Node_AConst: + case *pgparse.Node_AConst: return facts.Term{Kind: facts.Const, Const: constText(v.AConst)} } return facts.Term{Kind: facts.Known, Text: strings.TrimPrefix(deparse(n), "SELECT ")} } // readsColumn reports whether an expression references any column. -func readsColumn(n *pg_query.Node) bool { +func readsColumn(n *pgparse.Node) bool { found := false - schema.WalkNodes(n, func(m *pg_query.Node) { + schema.WalkNodes(n, func(m *pgparse.Node) { if m.GetColumnRef() != nil { found = true } @@ -479,20 +479,20 @@ func sortRefs(rs []facts.ColRef) { // buildFacts assembles the statement's facts: the top level, the nested levels under // their nearest recorded ancestor, and the write set. -func (a *analyzer) buildFacts(stmt *pg_query.Node, top *scope) *facts.Facts { +func (a *analyzer) buildFacts(stmt *pgparse.Node, top *scope) *facts.Facts { f := &facts.Facts{} switch stmt.Node.(type) { - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: f.Kind = facts.Select - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: f.Kind = facts.Insert - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: f.Kind = facts.Update - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: f.Kind = facts.Delete - case *pg_query.Node_MergeStmt: + case *pgparse.Node_MergeStmt: f.Kind = facts.Merge - case *pg_query.Node_TruncateStmt: + case *pgparse.Node_TruncateStmt: f.Kind = facts.Delete default: return nil @@ -506,7 +506,7 @@ func (a *analyzer) buildFacts(stmt *pg_query.Node, top *scope) *facts.Facts { // INSERT (and a MERGE whose ON did not record): the target alone at the top; // TRUNCATE: every table named f.Top = &facts.Scope{At: -1} - if _, trunc := stmt.Node.(*pg_query.Node_TruncateStmt); trunc { + if _, trunc := stmt.Node.(*pgparse.Node_TruncateStmt); trunc { for _, w := range a.writeRecs { f.Top.Leaves = append(f.Top.Leaves, a.leafFacts(w.r, nil)) } @@ -588,7 +588,7 @@ func (a *analyzer) buildFacts(stmt *pg_query.Node, top *scope) *facts.Facts { // each conjunct becomes a facts.Pred whose ColRef.Leaf is 0, standing for the subject. // This is internal/obligation's Lowerer for PostgreSQL. func Lower(s *schema.Schema, expr string, rel *schema.Relation) ([]facts.Pred, error) { - tree, err := pg_query.Parse("SELECT " + expr) + tree, err := s.Version.Parse("SELECT " + expr) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } diff --git a/internal/analyze/function.go b/internal/analyze/function.go index d3c9566..b8515f8 100644 --- a/internal/analyze/function.go +++ b/internal/analyze/function.go @@ -4,10 +4,9 @@ import ( "fmt" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/facts" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -55,7 +54,7 @@ func AnalyzeFunction(s *schema.Schema, fn *schema.Function) (*FunctionResult, er } return out, nil } - stmts, err := functionBody(fn) + stmts, err := functionBody(s.Version, fn) if err != nil { return nil, err } @@ -68,8 +67,8 @@ func AnalyzeFunction(s *schema.Schema, fn *schema.Function) (*FunctionResult, er for i, st := range stmts { if rs := st.GetReturnStmt(); rs != nil { // BEGIN ATOMIC ... RETURN expr: analyze as SELECT expr - st = &pg_query.Node{Node: &pg_query.Node_SelectStmt{SelectStmt: &pg_query.SelectStmt{ - TargetList: []*pg_query.Node{{Node: &pg_query.Node_ResTarget{ResTarget: &pg_query.ResTarget{Val: rs.Returnval}}}}, + st = &pgparse.Node{Node: &pgparse.Node_SelectStmt{SelectStmt: &pgparse.SelectStmt{ + TargetList: []*pgparse.Node{{Node: &pgparse.Node_ResTarget{ResTarget: &pgparse.ResTarget{Val: rs.Returnval}}}}, }}} } r, err := analyzeStmt(s, st, fp, nil) @@ -128,16 +127,16 @@ func checkReturnShape(s *schema.Schema, fn *schema.Function, cols []Column) *Err } // functionBody parses a SQL function's statements (nil for other languages). -func functionBody(fn *schema.Function) ([]*pg_query.Node, error) { +func functionBody(v pgparse.Version, fn *schema.Function) ([]*pgparse.Node, error) { switch { case fn.SQLBody != nil: return flattenLists(fn.SQLBody), nil case fn.Body != "" && strings.EqualFold(fn.Language, "sql"): - tree, err := pg_query.Parse(fn.Body) + tree, err := v.Parse(fn.Body) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } - var stmts []*pg_query.Node + var stmts []*pgparse.Node for _, raw := range tree.Stmts { stmts = append(stmts, raw.Stmt) } @@ -159,7 +158,7 @@ func functionParams(fn *schema.Function) []funcParam { // calledFunc is a user function a statement calls, with the call's argument expressions. type calledFunc struct { fn *schema.Function - args []*pg_query.Node + args []*pgparse.Node } // functionViolations lists what a call to fn may violate: the SQLSTATEs it declares with @@ -182,7 +181,7 @@ func functionViolations(s *schema.Schema, cf calledFunc, visited map[*schema.Fun if isPLpgSQL(fn) { bodyViolations = analyzePLpgSQL(s, fn).violations } else { - stmts, err := functionBody(fn) + stmts, err := functionBody(s.Version, fn) if err != nil { return out } @@ -216,9 +215,9 @@ func functionViolations(s *schema.Schema, cf calledFunc, visited map[*schema.Fun v.Param = 0 if positional && pos <= len(cf.args) { switch arg := cf.args[pos-1].Node.(type) { - case *pg_query.Node_ParamRef: + case *pgparse.Node_ParamRef: v.Param = arg.ParamRef.Number - case *pg_query.Node_AConst: + case *pgparse.Node_AConst: if !arg.AConst.Isnull { continue } @@ -240,12 +239,12 @@ func relByRowType(s *schema.Schema, oid catalog.OID) *schema.Relation { } // flattenLists unwraps the nested List nodes of a BEGIN ATOMIC body into statements. -func flattenLists(n *pg_query.Node) []*pg_query.Node { +func flattenLists(n *pgparse.Node) []*pgparse.Node { l := n.GetList() if l == nil { - return []*pg_query.Node{n} + return []*pgparse.Node{n} } - var out []*pg_query.Node + var out []*pgparse.Node for _, it := range l.Items { out = append(out, flattenLists(it)...) } diff --git a/internal/analyze/grouping.go b/internal/analyze/grouping.go index 4ae44af..fb03aca 100644 --- a/internal/analyze/grouping.go +++ b/internal/analyze/grouping.go @@ -4,10 +4,10 @@ import ( "fmt" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -18,11 +18,11 @@ import ( // CUBE the check runs against the union of every set's expressions, as PG does. // checkGrouping reports an ungrouped column in a grouped SELECT level. -func (a *analyzer) checkGrouping(sel *pg_query.SelectStmt, sc *scope, cols []rteCol) *Error { +func (a *analyzer) checkGrouping(sel *pgparse.SelectStmt, sc *scope, cols []rteCol) *Error { if len(sel.GroupClause) == 0 && !sc.agg && sel.HavingClause == nil { return nil // HAVING alone makes the query grouped (one group) } - var groups []*pg_query.Node + var groups []*pgparse.Node for _, g := range groupingLeaves(sel.GroupClause) { resolved := a.groupExpr(g, sel, sc, cols) if w := windowIn(resolved); w != nil { @@ -69,7 +69,7 @@ func (a *analyzer) checkGrouping(sel *pg_query.SelectStmt, sc *scope, cols []rte // coercedUsingColumn reports whether n is an unqualified reference to a JOIN USING column // whose merged type differs from the left input's column (the merged column is then a // coercion of the input, not the input itself; flatten_join_alias_vars keeps them apart). -func (a *analyzer) coercedUsingColumn(n *pg_query.Node, sc *scope) bool { +func (a *analyzer) coercedUsingColumn(n *pgparse.Node, sc *scope) bool { cr := n.GetColumnRef() if cr == nil || len(cr.Fields) != 1 || cr.Fields[0].GetString_() == nil { return false @@ -99,7 +99,7 @@ func (a *analyzer) coercedUsingColumn(n *pg_query.Node, sc *scope) bool { // groupExpr resolves a GROUP BY item to the expression it groups by: an ordinal or an // output alias (when no input column has that name) stands for a target expression. -func (a *analyzer) groupExpr(n *pg_query.Node, sel *pg_query.SelectStmt, sc *scope, cols []rteCol) *pg_query.Node { +func (a *analyzer) groupExpr(n *pgparse.Node, sel *pgparse.SelectStmt, sc *scope, cols []rteCol) *pgparse.Node { if cr := n.GetColumnRef(); cr != nil && len(cr.Fields) == 1 { name := cr.Fields[0].GetString_().GetSval() a.probing = true @@ -117,9 +117,9 @@ func (a *analyzer) groupExpr(n *pg_query.Node, sel *pg_query.SelectStmt, sc *sco // outputRef returns the target expression an ORDER BY / GROUP BY item names by ordinal // or output alias, nil otherwise. -func (a *analyzer) outputRef(n *pg_query.Node, sel *pg_query.SelectStmt, cols []rteCol) *pg_query.Node { +func (a *analyzer) outputRef(n *pgparse.Node, sel *pgparse.SelectStmt, cols []rteCol) *pgparse.Node { if c := n.GetAConst(); c != nil { - if v, ok := c.Val.(*pg_query.A_Const_Ival); ok { + if v, ok := c.Val.(*pgparse.A_Const_Ival); ok { i := int(v.Ival.GetIval()) - 1 if i >= 0 && i < len(sel.TargetList) { return sel.TargetList[i].GetResTarget().GetVal() @@ -150,7 +150,7 @@ type grouping struct { } // check walks an expression and reports the first ungrouped column reference. -func (g *grouping) check(n *pg_query.Node) *Error { +func (g *grouping) check(n *pgparse.Node) *Error { if n == nil { return nil } @@ -158,9 +158,9 @@ func (g *grouping) check(n *pg_query.Node) *Error { return nil } switch v := n.Node.(type) { - case *pg_query.Node_AConst, *pg_query.Node_ParamRef, *pg_query.Node_SubLink, *pg_query.Node_SetToDefault: + case *pgparse.Node_AConst, *pgparse.Node_ParamRef, *pgparse.Node_SubLink, *pgparse.Node_SetToDefault: return nil - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: if len(v.ColumnRef.Fields) == 1 && g.usingKeys[v.ColumnRef.Fields[0].GetString_().GetSval()] { return nil } @@ -172,7 +172,7 @@ func (g *grouping) check(n *pg_query.Node) *Error { return nil } return errAt(codeGroupingError, v.ColumnRef.Location, "column %q must appear in the GROUP BY clause or be used in an aggregate function", strings.Join(strs(v.ColumnRef.Fields), ".")) - case *pg_query.Node_FuncCall: + case *pgparse.Node_FuncCall: if v.FuncCall.Over == nil && g.a.isAggregateName(strs(v.FuncCall.Funcname)) { if v.FuncCall.AggWithinGroup { // an ordered-set aggregate's direct arguments are evaluated once per group @@ -237,8 +237,8 @@ func (a *analyzer) isAggregateName(names []string) bool { } // children lists the direct child nodes of an expression node. -func children(n *pg_query.Node) []*pg_query.Node { - var out []*pg_query.Node +func children(n *pgparse.Node) []*pgparse.Node { + var out []*pgparse.Node inner := n.ProtoReflect() inner.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { if fd.Kind() != protoreflect.MessageKind { @@ -252,13 +252,13 @@ func children(n *pg_query.Node) []*pg_query.Node { if fd2.IsList() { l := v2.List() for i := 0; i < l.Len(); i++ { - if c, ok := l.Get(i).Message().Interface().(*pg_query.Node); ok { + if c, ok := l.Get(i).Message().Interface().(*pgparse.Node); ok { out = append(out, c) } } return true } - if c, ok := v2.Message().Interface().(*pg_query.Node); ok { + if c, ok := v2.Message().Interface().(*pgparse.Node); ok { out = append(out, c) } return true @@ -269,11 +269,11 @@ func children(n *pg_query.Node) []*pg_query.Node { } // deparse renders an expression to SQL text for structural comparison. -func deparse(n *pg_query.Node) string { - res := &pg_query.ParseResult{Stmts: []*pg_query.RawStmt{{Stmt: &pg_query.Node{Node: &pg_query.Node_SelectStmt{SelectStmt: &pg_query.SelectStmt{ - TargetList: []*pg_query.Node{{Node: &pg_query.Node_ResTarget{ResTarget: &pg_query.ResTarget{Val: n}}}}, +func deparse(n *pgparse.Node) string { + res := &pgparse.ParseResult{Stmts: []*pgparse.RawStmt{{Stmt: &pgparse.Node{Node: &pgparse.Node_SelectStmt{SelectStmt: &pgparse.SelectStmt{ + TargetList: []*pgparse.Node{{Node: &pgparse.Node_ResTarget{ResTarget: &pgparse.ResTarget{Val: n}}}}, }}}}}} - s, err := pg_query.Deparse(res) + s, err := pgparse.Deparse(res) if err != nil { return "" } @@ -281,8 +281,8 @@ func deparse(n *pg_query.Node) string { } // groupingLeaves flattens GROUPING SETS / ROLLUP / CUBE into the expressions they group by. -func groupingLeaves(items []*pg_query.Node) []*pg_query.Node { - var out []*pg_query.Node +func groupingLeaves(items []*pgparse.Node) []*pgparse.Node { + var out []*pgparse.Node for _, n := range items { if gs := n.GetGroupingSet(); gs != nil { out = append(out, groupingLeaves(gs.Content)...) @@ -292,7 +292,7 @@ func groupingLeaves(items []*pg_query.Node) []*pg_query.Node { out = append(out, groupingLeaves(l.Items)...) continue } - if re := n.GetRowExpr(); re != nil && re.RowFormat == pg_query.CoercionForm_COERCE_IMPLICIT_CAST { + if re := n.GetRowExpr(); re != nil && re.RowFormat == pgparse.CoercionForm_COERCE_IMPLICIT_CAST { out = append(out, groupingLeaves(re.Args)...) continue } @@ -302,7 +302,7 @@ func groupingLeaves(items []*pg_query.Node) []*pg_query.Node { } // hasGroupingSets reports whether GROUP BY uses GROUPING SETS / ROLLUP / CUBE. -func hasGroupingSets(items []*pg_query.Node) bool { +func hasGroupingSets(items []*pgparse.Node) bool { for _, n := range items { if n.GetGroupingSet() != nil { return true @@ -313,15 +313,15 @@ func hasGroupingSets(items []*pg_query.Node) bool { // key renders an expression for grouping comparison with every column reference // resolved, so GROUP BY t.a % 2 covers a % 2 and the other way round. -func (g *grouping) key(n *pg_query.Node) string { - cp := proto.Clone(n).(*pg_query.Node) +func (g *grouping) key(n *pgparse.Node) string { + cp := proto.Clone(n).(*pgparse.Node) var walk func(m protoreflect.Message) walk = func(m protoreflect.Message) { - if cr, ok := m.Interface().(*pg_query.ColumnRef); ok { - if k, ok := g.p.resolve(&pg_query.Node{Node: &pg_query.Node_ColumnRef{ColumnRef: cr}}); ok { - cr.Fields = []*pg_query.Node{ - {Node: &pg_query.Node_String_{String_: &pg_query.String{Sval: fmt.Sprintf("rte%p", k.r)}}}, - {Node: &pg_query.Node_String_{String_: &pg_query.String{Sval: fmt.Sprintf("c%d", k.i)}}}, + if cr, ok := m.Interface().(*pgparse.ColumnRef); ok { + if k, ok := g.p.resolve(&pgparse.Node{Node: &pgparse.Node_ColumnRef{ColumnRef: cr}}); ok { + cr.Fields = []*pgparse.Node{ + {Node: &pgparse.Node_String_{String_: &pgparse.String{Sval: fmt.Sprintf("rte%p", k.r)}}}, + {Node: &pgparse.Node_String_{String_: &pgparse.String{Sval: fmt.Sprintf("c%d", k.i)}}}, } } return diff --git a/internal/analyze/json.go b/internal/analyze/json.go index 43bb784..711b91c 100644 --- a/internal/analyze/json.go +++ b/internal/analyze/json.go @@ -1,9 +1,8 @@ package analyze import ( - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -17,7 +16,7 @@ import ( const xmlOID catalog.OID = 142 // jsonOutput resolves a RETURNING clause, def when there is none. -func (a *analyzer) jsonOutput(o *pg_query.JsonOutput, def catalog.OID) (schema.TypeRef, *Error) { +func (a *analyzer) jsonOutput(o *pgparse.JsonOutput, def catalog.OID) (schema.TypeRef, *Error) { if o == nil || o.TypeName == nil { return ref(def), nil } @@ -28,11 +27,11 @@ func (a *analyzer) jsonOutput(o *pg_query.JsonOutput, def catalog.OID) (schema.T if tt := a.typ(t.OID); tt != nil && tt.Kind == 'p' { return schema.TypeRef{}, errAt(codeFeatureNotSupported, o.TypeName.Location, "returning pseudo-types is not supported in SQL/JSON functions") } - if o.Returning != nil && o.Returning.Format != nil && o.Returning.Format.Encoding != pg_query.JsonEncoding_JS_ENC_DEFAULT { + if o.Returning != nil && o.Returning.Format != nil && o.Returning.Format.Encoding != pgparse.JsonEncoding_JS_ENC_DEFAULT { if a.baseType(t.OID) != catalog.Bytea { return schema.TypeRef{}, errAt(codeFeatureNotSupported, o.Returning.Format.Location, "cannot set JSON encoding for non-bytea output types") } - if o.Returning.Format.Encoding != pg_query.JsonEncoding_JS_ENC_UTF8 { + if o.Returning.Format.Encoding != pgparse.JsonEncoding_JS_ENC_UTF8 { return schema.TypeRef{}, errAt(codeFeatureNotSupported, o.Returning.Format.Location, "unsupported JSON encoding") } } @@ -40,7 +39,7 @@ func (a *analyzer) jsonOutput(o *pg_query.JsonOutput, def catalog.OID) (schema.T } // containsSubLink reports a subquery anywhere in the expression. -func containsSubLink(n *pg_query.Node) bool { +func containsSubLink(n *pgparse.Node) bool { if n == nil { return false } @@ -57,7 +56,7 @@ func containsSubLink(n *pg_query.Node) bool { // jsonValue types a JSON value expression (the context item of a query function, an // element of a constructor): an untyped literal becomes text. -func (a *analyzer) jsonValue(v *pg_query.JsonValueExpr, sc *scope) (*expr, *Error) { +func (a *analyzer) jsonValue(v *pgparse.JsonValueExpr, sc *scope) (*expr, *Error) { if v == nil { return nil, errAt(codeSyntaxError, -1, "missing JSON value") } @@ -68,12 +67,12 @@ func (a *analyzer) jsonValue(v *pg_query.JsonValueExpr, sc *scope) (*expr, *Erro if err := a.bind(e, catalog.Text, loc(v.RawExpr)); err != nil { return nil, err } - if v.Format != nil && v.Format.FormatType != pg_query.JsonFormatType_JS_FORMAT_DEFAULT { + if v.Format != nil && v.Format.FormatType != pgparse.JsonFormatType_JS_FORMAT_DEFAULT { // transformJsonValueExpr: an explicit FORMAT JSON wants a string / bytea / json // value, and ENCODING a bytea one base := a.baseType(e.oid()) cat, _ := a.category(base) - if v.Format.Encoding != pg_query.JsonEncoding_JS_ENC_DEFAULT && base != catalog.Bytea { + if v.Format.Encoding != pgparse.JsonEncoding_JS_ENC_DEFAULT && base != catalog.Bytea { return nil, errAt(codeDatatypeMismatch, v.Format.Location, "JSON ENCODING clause is only allowed for bytea input type") } if cat != 'S' && base != catalog.Bytea && base != catalog.JSON && base != catalog.JSONB { @@ -85,7 +84,7 @@ func (a *analyzer) jsonValue(v *pg_query.JsonValueExpr, sc *scope) (*expr, *Erro // jsonContext types the context item of JSON_EXISTS / JSON_QUERY / JSON_VALUE / JSON_TABLE: // json, jsonb, or a string / bytea with FORMAT JSON. -func (a *analyzer) jsonContext(v *pg_query.JsonValueExpr, sc *scope, at int32) (*expr, *Error) { +func (a *analyzer) jsonContext(v *pgparse.JsonValueExpr, sc *scope, at int32) (*expr, *Error) { if v == nil { return nil, errAt(codeSyntaxError, -1, "missing JSON value") } @@ -100,14 +99,14 @@ func (a *analyzer) jsonContext(v *pg_query.JsonValueExpr, sc *scope, at int32) ( } else if err := a.bind(e, catalog.JSONB, loc(v.RawExpr)); err != nil { return nil, err } - if v.Format != nil && v.Format.Encoding != pg_query.JsonEncoding_JS_ENC_DEFAULT && a.baseType(e.oid()) != catalog.Bytea { + if v.Format != nil && v.Format.Encoding != pgparse.JsonEncoding_JS_ENC_DEFAULT && a.baseType(e.oid()) != catalog.Bytea { return nil, errAt(codeDatatypeMismatch, v.Format.Location, "JSON ENCODING clause is only allowed for bytea input type") } switch a.baseType(e.oid()) { case catalog.JSON, catalog.JSONB: default: // anything else is parsed only with FORMAT JSON; otherwise PG tries to cast it to jsonb - formatted := v.Format != nil && v.Format.FormatType != pg_query.JsonFormatType_JS_FORMAT_DEFAULT + formatted := v.Format != nil && v.Format.FormatType != pgparse.JsonFormatType_JS_FORMAT_DEFAULT if c, _ := a.category(e.oid()); !(formatted && (c == 'S' || a.baseType(e.oid()) == catalog.Bytea)) { return nil, errAt(codeCannotCoerce, loc(v.RawExpr), "cannot cast type %s to jsonb", a.s.Types.Format(e.typ)) } @@ -115,7 +114,7 @@ func (a *analyzer) jsonContext(v *pg_query.JsonValueExpr, sc *scope, at int32) ( return e, nil } -func (a *analyzer) jsonPassing(args []*pg_query.Node, sc *scope) *Error { +func (a *analyzer) jsonPassing(args []*pgparse.Node, sc *scope) *Error { for _, n := range args { ja := n.GetJsonArgument() if ja == nil { @@ -128,17 +127,17 @@ func (a *analyzer) jsonPassing(args []*pg_query.Node, sc *scope) *Error { return nil } -func (a *analyzer) jsonBehavior(b *pg_query.JsonBehavior, sc *scope, want catalog.OID) *Error { +func (a *analyzer) jsonBehavior(b *pgparse.JsonBehavior, sc *scope, want catalog.OID) *Error { if b == nil || b.Expr == nil { return nil } - if b.Btype == pg_query.JsonBehaviorType_JSON_BEHAVIOR_DEFAULT && (containsSubLink(b.Expr) || a.aggregateIn(b.Expr) != nil || windowIn(b.Expr) != nil) { + if b.Btype == pgparse.JsonBehaviorType_JSON_BEHAVIOR_DEFAULT && (containsSubLink(b.Expr) || a.aggregateIn(b.Expr) != nil || windowIn(b.Expr) != nil) { return errAt(codeDatatypeMismatch, loc(b.Expr), "can only specify a constant, non-aggregate function, or operator expression for DEFAULT") } - if b.Btype == pg_query.JsonBehaviorType_JSON_BEHAVIOR_DEFAULT && a.srfIn(b.Expr) { + if b.Btype == pgparse.JsonBehaviorType_JSON_BEHAVIOR_DEFAULT && a.srfIn(b.Expr) { return errAt(codeDatatypeMismatch, loc(b.Expr), "DEFAULT expression must not return a set") } - if b.Btype == pg_query.JsonBehaviorType_JSON_BEHAVIOR_DEFAULT && hasVarClause(b.Expr) { + if b.Btype == pgparse.JsonBehaviorType_JSON_BEHAVIOR_DEFAULT && hasVarClause(b.Expr) { return errAt(codeDatatypeMismatch, loc(b.Expr), "DEFAULT expression must not contain column references") } e, err := a.analyzeExpr(b.Expr, sc) @@ -152,11 +151,22 @@ func (a *analyzer) jsonBehavior(b *pg_query.JsonBehavior, sc *scope, want catalo if !a.canCoerce(e.oid(), want, assignmentCoercion) { return errAt(codeCannotCoerce, loc(b.Expr), "cannot cast behavior expression of type %s to %s", a.s.Types.Format(e.typ), a.s.Types.Format(ref(want))) } + // 18: the DEFAULT keeps its own collation, which must be the RETURNING type's (a + // literal has none of its own and takes the type's) + if a.s.Version.Or() >= pgparse.PG18 && e.oid() != catalog.Unknown && a.collatable(want) && e.coll.strength != collNone { + retColl := "" + if d := a.s.Types.Domains[want]; d != nil { + retColl = d.Collation + } + if e.coll.name != retColl { + return errAt(codeCollationMismatch, loc(b.Expr), "collation of DEFAULT expression conflicts with RETURNING clause") + } + } } return nil } -func (a *analyzer) jsonPathspec(n *pg_query.Node, sc *scope) *Error { +func (a *analyzer) jsonPathspec(n *pgparse.Node, sc *scope) *Error { if n == nil { return nil } @@ -164,11 +174,18 @@ func (a *analyzer) jsonPathspec(n *pg_query.Node, sc *scope) *Error { if err != nil { return err } + if a.s.Version.Or() >= pgparse.PG18 { + // 18 coerces the path to jsonpath and refuses what cannot be: a string is read as + // one, anything else is an error (17 looked the type up later and failed oddly) + if t := a.typ(a.baseType(e.oid())); e.oid() != catalog.Unknown && e.oid() != catalog.JSONPath && (t == nil || t.Category != 'S') { + return errAt(codeDatatypeMismatch, loc(n), "JSON path expression must be of type jsonpath, not of type %s", a.s.Types.Format(e.typ)) + } + } return a.bind(e, catalog.Text, loc(n)) } // jsonFuncExpr is JSON_EXISTS / JSON_QUERY / JSON_VALUE. -func (a *analyzer) jsonFuncExpr(f *pg_query.JsonFuncExpr, sc *scope, n *pg_query.Node) (*expr, *Error) { +func (a *analyzer) jsonFuncExpr(f *pgparse.JsonFuncExpr, sc *scope, n *pgparse.Node) (*expr, *Error) { if _, err := a.jsonContext(f.ContextItem, sc, f.Location); err != nil { return nil, err } @@ -180,11 +197,11 @@ func (a *analyzer) jsonFuncExpr(f *pg_query.JsonFuncExpr, sc *scope, n *pg_query } def := catalog.OID(catalog.JSONB) switch f.Op { - case pg_query.JsonExprOp_JSON_EXISTS_OP: + case pgparse.JsonExprOp_JSON_EXISTS_OP: def = catalog.Bool - case pg_query.JsonExprOp_JSON_VALUE_OP: + case pgparse.JsonExprOp_JSON_VALUE_OP: def = catalog.Text - if r := f.Output.GetReturning(); r != nil && r.Format != nil && r.Format.FormatType != pg_query.JsonFormatType_JS_FORMAT_DEFAULT { + if r := f.Output.GetReturning(); r != nil && r.Format != nil && r.Format.FormatType != pgparse.JsonFormatType_JS_FORMAT_DEFAULT { return nil, errAt(codeSyntaxError, r.Format.Location, "cannot specify FORMAT JSON in RETURNING clause of JSON_VALUE()") } } @@ -195,11 +212,11 @@ func (a *analyzer) jsonFuncExpr(f *pg_query.JsonFuncExpr, sc *scope, n *pg_query if err := jsonBehaviorAllowed(f.Op, f.OnEmpty, f.OnError, "", f.Location); err != nil { return nil, err } - if (f.Wrapper == pg_query.JsonWrapper_JSW_CONDITIONAL || f.Wrapper == pg_query.JsonWrapper_JSW_UNCONDITIONAL) && - f.Quotes == pg_query.JsonQuotes_JS_QUOTES_OMIT { + if (f.Wrapper == pgparse.JsonWrapper_JSW_CONDITIONAL || f.Wrapper == pgparse.JsonWrapper_JSW_UNCONDITIONAL) && + f.Quotes == pgparse.JsonQuotes_JS_QUOTES_OMIT { return nil, errAt(codeSyntaxError, f.Location, "SQL/JSON QUOTES behavior must not be specified when WITH WRAPPER is used") } - for _, b := range []*pg_query.JsonBehavior{f.OnEmpty, f.OnError} { + for _, b := range []*pgparse.JsonBehavior{f.OnEmpty, f.OnError} { if err := a.jsonBehavior(b, sc, t.OID); err != nil { return nil, err } @@ -210,13 +227,13 @@ func (a *analyzer) jsonFuncExpr(f *pg_query.JsonFuncExpr, sc *scope, n *pg_query // the only case that needs nullable=true; JSON_VALUE / JSON_QUERY stay nullable in every // combination already (ON EMPTY / ON ERROR NULL is their default, and even the non-NULL // behaviors don't make them provably non-nullable). - nullable := f.Op != pg_query.JsonExprOp_JSON_EXISTS_OP || - (f.OnError != nil && f.OnError.Btype == pg_query.JsonBehaviorType_JSON_BEHAVIOR_UNKNOWN) + nullable := f.Op != pgparse.JsonExprOp_JSON_EXISTS_OP || + (f.OnError != nil && f.OnError.Btype == pgparse.JsonBehaviorType_JSON_BEHAVIOR_UNKNOWN) return &expr{typ: t, nullable: nullable, node: n}, nil } // jsonConstructor is JSON_OBJECT / JSON_ARRAY (with a list, or a subquery). -func (a *analyzer) jsonConstructorList(exprs []*pg_query.Node, out *pg_query.JsonOutput, sc *scope, n *pg_query.Node) (*expr, *Error) { +func (a *analyzer) jsonConstructorList(exprs []*pgparse.Node, out *pgparse.JsonOutput, sc *scope, n *pgparse.Node) (*expr, *Error) { def := catalog.OID(catalog.JSON) // jsonb once any input is jsonb (transformJsonConstructorOutput) note := func(e *expr) { if a.baseType(e.oid()) == catalog.JSONB { @@ -261,7 +278,7 @@ func (a *analyzer) jsonConstructorList(exprs []*pg_query.Node, out *pg_query.Jso } // jsonAgg is JSON_ARRAYAGG / JSON_OBJECTAGG: an aggregate with the constructor's clauses. -func (a *analyzer) jsonAgg(c *pg_query.JsonAggConstructor, sc *scope, n *pg_query.Node, analyzeArg func() *Error) (*expr, *Error) { +func (a *analyzer) jsonAgg(c *pgparse.JsonAggConstructor, sc *scope, n *pgparse.Node, analyzeArg func() *Error) (*expr, *Error) { if err := analyzeArg(); err != nil { return nil, err } @@ -280,7 +297,7 @@ func (a *analyzer) jsonAgg(c *pg_query.JsonAggConstructor, sc *scope, n *pg_quer } } if c.Over != nil { - for _, x := range append(append([]*pg_query.Node{}, c.Over.PartitionClause...), c.Over.OrderClause...) { + for _, x := range append(append([]*pgparse.Node{}, c.Over.PartitionClause...), c.Over.OrderClause...) { if sb := x.GetSortBy(); sb != nil { x = sb.Node } @@ -299,7 +316,7 @@ func (a *analyzer) jsonAgg(c *pg_query.JsonAggConstructor, sc *scope, n *pg_quer } // jsonTable is JSON_TABLE(context, path COLUMNS (...)) in FROM. -func (a *analyzer) jsonTable(jt *pg_query.JsonTable, sc *scope) (*rte, *Error) { +func (a *analyzer) jsonTable(jt *pgparse.JsonTable, sc *scope) (*rte, *Error) { if _, err := a.jsonContext(jt.ContextItem, sc, jt.Location); err != nil { return nil, err } @@ -311,7 +328,7 @@ func (a *analyzer) jsonTable(jt *pg_query.JsonTable, sc *scope) (*rte, *Error) { if err := a.jsonPassing(jt.Passing, sc); err != nil { return nil, err } - if err := jsonBehaviorAllowed(pg_query.JsonExprOp_JSON_TABLE_OP, nil, jt.OnError, "", jt.Location); err != nil { + if err := jsonBehaviorAllowed(pgparse.JsonExprOp_JSON_TABLE_OP, nil, jt.OnError, "", jt.Location); err != nil { return nil, err } if err := a.jsonBehavior(jt.OnError, sc, 0); err != nil { @@ -345,14 +362,14 @@ func (a *analyzer) jsonTable(jt *pg_query.JsonTable, sc *scope) (*rte, *Error) { // checkJsonTableNames is the column / path name uniqueness rule (registerAllJsonTableColumns): // every column name and every NESTED PATH name across the whole tree must be distinct, and // only one FOR ORDINALITY column is allowed per COLUMNS list. -func (a *analyzer) checkJsonTableNames(nodes []*pg_query.Node, seen map[string]bool) *Error { +func (a *analyzer) checkJsonTableNames(nodes []*pgparse.Node, seen map[string]bool) *Error { ordinality := false for _, n := range nodes { c := n.GetJsonTableColumn() if c == nil { continue } - if c.Coltype == pg_query.JsonTableColumnType_JTC_FOR_ORDINALITY { + if c.Coltype == pgparse.JsonTableColumnType_JTC_FOR_ORDINALITY { if ordinality { return errAt(codeSyntaxError, c.Location, "only one FOR ORDINALITY column is allowed") } @@ -370,7 +387,7 @@ func (a *analyzer) checkJsonTableNames(nodes []*pg_query.Node, seen map[string]b } seen[c.Name] = true } - if c.Coltype == pg_query.JsonTableColumnType_JTC_NESTED { + if c.Coltype == pgparse.JsonTableColumnType_JTC_NESTED { if err := a.checkJsonTableNames(c.Columns, seen); err != nil { return err } @@ -379,7 +396,7 @@ func (a *analyzer) checkJsonTableNames(nodes []*pg_query.Node, seen map[string]b return nil } -func (a *analyzer) jsonTableColumns(nodes []*pg_query.Node, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) jsonTableColumns(nodes []*pgparse.Node, sc *scope) ([]rteCol, *Error) { var cols, nestedCols []rteCol for _, n := range nodes { c := n.GetJsonTableColumn() @@ -387,9 +404,9 @@ func (a *analyzer) jsonTableColumns(nodes []*pg_query.Node, sc *scope) ([]rteCol continue } switch c.Coltype { - case pg_query.JsonTableColumnType_JTC_FOR_ORDINALITY: + case pgparse.JsonTableColumnType_JTC_FOR_ORDINALITY: cols = append(cols, rteCol{name: c.Name, typ: ref(catalog.Int4)}) - case pg_query.JsonTableColumnType_JTC_NESTED: + case pgparse.JsonTableColumnType_JTC_NESTED: if c.Pathspec != nil { if err := a.jsonPathspec(c.Pathspec.String_, sc); err != nil { return nil, err @@ -402,7 +419,7 @@ func (a *analyzer) jsonTableColumns(nodes []*pg_query.Node, sc *scope) ([]rteCol nestedCols = append(nestedCols, nested...) // appended after this level's own columns default: def := catalog.Text - if c.Coltype == pg_query.JsonTableColumnType_JTC_EXISTS { + if c.Coltype == pgparse.JsonTableColumnType_JTC_EXISTS { def = catalog.Bool } t := ref(def) @@ -417,21 +434,21 @@ func (a *analyzer) jsonTableColumns(nodes []*pg_query.Node, sc *scope) ([]rteCol return nil, err } } - op := pg_query.JsonExprOp_JSON_VALUE_OP + op := pgparse.JsonExprOp_JSON_VALUE_OP switch { - case c.Coltype == pg_query.JsonTableColumnType_JTC_EXISTS: - op = pg_query.JsonExprOp_JSON_EXISTS_OP - case c.Coltype == pg_query.JsonTableColumnType_JTC_FORMATTED, c.Format != nil && c.Format.FormatType != pg_query.JsonFormatType_JS_FORMAT_DEFAULT: - op = pg_query.JsonExprOp_JSON_QUERY_OP + case c.Coltype == pgparse.JsonTableColumnType_JTC_EXISTS: + op = pgparse.JsonExprOp_JSON_EXISTS_OP + case c.Coltype == pgparse.JsonTableColumnType_JTC_FORMATTED, c.Format != nil && c.Format.FormatType != pgparse.JsonFormatType_JS_FORMAT_DEFAULT: + op = pgparse.JsonExprOp_JSON_QUERY_OP } if err := jsonBehaviorAllowed(op, c.OnEmpty, c.OnError, c.Name, c.Location); err != nil { return nil, err } - if (c.Wrapper == pg_query.JsonWrapper_JSW_CONDITIONAL || c.Wrapper == pg_query.JsonWrapper_JSW_UNCONDITIONAL) && - c.Quotes == pg_query.JsonQuotes_JS_QUOTES_OMIT { + if (c.Wrapper == pgparse.JsonWrapper_JSW_CONDITIONAL || c.Wrapper == pgparse.JsonWrapper_JSW_UNCONDITIONAL) && + c.Quotes == pgparse.JsonQuotes_JS_QUOTES_OMIT { return nil, errAt(codeSyntaxError, c.Location, "SQL/JSON QUOTES behavior must not be specified when WITH WRAPPER is used") } - for _, b := range []*pg_query.JsonBehavior{c.OnEmpty, c.OnError} { + for _, b := range []*pgparse.JsonBehavior{c.OnEmpty, c.OnError} { if err := a.jsonBehavior(b, sc, t.OID); err != nil { return nil, err } @@ -443,8 +460,8 @@ func (a *analyzer) jsonTableColumns(nodes []*pg_query.Node, sc *scope) ([]rteCol } // xmlExpr types the SQL/XML constructors and predicates. -func (a *analyzer) xmlExpr(x *pg_query.XmlExpr, sc *scope, n *pg_query.Node) (*expr, *Error) { - if x.Op == pg_query.XmlExprOp_IS_XMLELEMENT { +func (a *analyzer) xmlExpr(x *pgparse.XmlExpr, sc *scope, n *pgparse.Node) (*expr, *Error) { + if x.Op == pgparse.XmlExprOp_IS_XMLELEMENT { // xmlattributes: an unnamed value must be a column reference (it names the // attribute), and no name twice seen := map[string]bool{} @@ -465,7 +482,7 @@ func (a *analyzer) xmlExpr(x *pg_query.XmlExpr, sc *scope, n *pg_query.Node) (*e seen[name] = true } } - for _, arg := range append(append([]*pg_query.Node{}, x.NamedArgs...), x.Args...) { + for _, arg := range append(append([]*pgparse.Node{}, x.NamedArgs...), x.Args...) { if ra := arg.GetResTarget(); ra != nil { arg = ra.Val // xmlattributes(expr AS name), xmlforest(expr AS name) } @@ -474,25 +491,25 @@ func (a *analyzer) xmlExpr(x *pg_query.XmlExpr, sc *scope, n *pg_query.Node) (*e return nil, err } switch x.Op { - case pg_query.XmlExprOp_IS_XMLPARSE: + case pgparse.XmlExprOp_IS_XMLPARSE: if err := a.bind(e, catalog.Text, loc(arg)); err != nil { return nil, err } - case pg_query.XmlExprOp_IS_DOCUMENT: + case pgparse.XmlExprOp_IS_DOCUMENT: if err := a.bind(e, xmlOID, loc(arg)); err != nil { return nil, err } if a.baseType(e.oid()) != xmlOID { return nil, errAt(codeDatatypeMismatch, loc(arg), "argument of IS DOCUMENT must be type xml, not type %s", a.s.Types.Format(e.typ)) } - case pg_query.XmlExprOp_IS_XMLCONCAT: + case pgparse.XmlExprOp_IS_XMLCONCAT: if err := a.bind(e, xmlOID, loc(arg)); err != nil { return nil, err } if a.baseType(e.oid()) != xmlOID { return nil, errAt(codeDatatypeMismatch, loc(arg), "argument of XMLCONCAT must be type xml, not type %s", a.s.Types.Format(e.typ)) } - case pg_query.XmlExprOp_IS_XMLROOT: + case pgparse.XmlExprOp_IS_XMLROOT: if err := a.bind(e, xmlOID, loc(arg)); err != nil { return nil, err } @@ -503,14 +520,14 @@ func (a *analyzer) xmlExpr(x *pg_query.XmlExpr, sc *scope, n *pg_query.Node) (*e } } switch x.Op { - case pg_query.XmlExprOp_IS_DOCUMENT: + case pgparse.XmlExprOp_IS_DOCUMENT: return &expr{typ: ref(catalog.Bool), nullable: true, node: n}, nil } return &expr{typ: ref(xmlOID), nullable: true, node: n}, nil } // xmlSerialize is XMLSERIALIZE (CONTENT | DOCUMENT expr AS type). -func (a *analyzer) xmlSerialize(x *pg_query.XmlSerialize, sc *scope, n *pg_query.Node) (*expr, *Error) { +func (a *analyzer) xmlSerialize(x *pgparse.XmlSerialize, sc *scope, n *pgparse.Node) (*expr, *Error) { e, err := a.analyzeExpr(x.Expr, sc) if err != nil { return nil, err @@ -527,8 +544,8 @@ func (a *analyzer) xmlSerialize(x *pg_query.XmlSerialize, sc *scope, n *pg_query // jsonBehaviorAllowed is transformJsonBehavior's table of which ON EMPTY / ON ERROR // behaviors each SQL/JSON function accepts (42601 otherwise). -func jsonBehaviorAllowed(op pg_query.JsonExprOp, onEmpty, onError *pg_query.JsonBehavior, column string, loc int32) *Error { - allowed := func(b *pg_query.JsonBehavior, ok ...pg_query.JsonBehaviorType) bool { +func jsonBehaviorAllowed(op pgparse.JsonExprOp, onEmpty, onError *pgparse.JsonBehavior, column string, loc int32) *Error { + allowed := func(b *pgparse.JsonBehavior, ok ...pgparse.JsonBehaviorType) bool { if b == nil { return true } @@ -539,25 +556,25 @@ func jsonBehaviorAllowed(op pg_query.JsonExprOp, onEmpty, onError *pg_query.Json } return false } - B := func(names ...string) []pg_query.JsonBehaviorType { - var out []pg_query.JsonBehaviorType + B := func(names ...string) []pgparse.JsonBehaviorType { + var out []pgparse.JsonBehaviorType for _, n := range names { - out = append(out, pg_query.JsonBehaviorType(pg_query.JsonBehaviorType_value["JSON_BEHAVIOR_"+n])) + out = append(out, pgparse.JsonBehaviorType(pgparse.JsonBehaviorType_value["JSON_BEHAVIOR_"+n])) } return out } - var emptyOK, errorOK []pg_query.JsonBehaviorType + var emptyOK, errorOK []pgparse.JsonBehaviorType switch op { - case pg_query.JsonExprOp_JSON_EXISTS_OP: + case pgparse.JsonExprOp_JSON_EXISTS_OP: emptyOK = nil errorOK = B("ERROR", "TRUE", "FALSE", "UNKNOWN") - case pg_query.JsonExprOp_JSON_QUERY_OP: + case pgparse.JsonExprOp_JSON_QUERY_OP: emptyOK = B("ERROR", "NULL", "EMPTY", "EMPTY_ARRAY", "EMPTY_OBJECT", "DEFAULT") errorOK = emptyOK - case pg_query.JsonExprOp_JSON_VALUE_OP: + case pgparse.JsonExprOp_JSON_VALUE_OP: emptyOK = B("ERROR", "NULL", "DEFAULT") errorOK = emptyOK - case pg_query.JsonExprOp_JSON_TABLE_OP: + case pgparse.JsonExprOp_JSON_TABLE_OP: errorOK = B("ERROR", "EMPTY", "EMPTY_ARRAY") } suffix := "" diff --git a/internal/analyze/literal.go b/internal/analyze/literal.go index d342b93..b63824c 100644 --- a/internal/analyze/literal.go +++ b/internal/analyze/literal.go @@ -13,8 +13,8 @@ import ( "unicode/utf8" "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" - pg_query "github.com/pganalyze/pg_query_go/v6" ) var uuidRe = regexp.MustCompile(`^\{?[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{12}\}?$`) @@ -119,6 +119,10 @@ func (a *analyzer) validateLiteralTypmod(s string, to catalog.OID, typmod int32, if !validTid(s) { return bad("tid") } + case catalog.Aclitem: + if msg := aclitemError(s, a.s.Version.Or() >= pgparse.PG18); msg != "" { + return errAt("22P02", loc, "%s", msg) + } case catalog.Xid, catalog.Xid8, catalog.OIDType, catalog.Cid: name := map[catalog.OID]string{catalog.Xid: "xid", catalog.Xid8: "xid8", catalog.OIDType: "oid", catalog.Cid: "cid"}[base] bits := 32 @@ -542,7 +546,7 @@ func (a *analyzer) validateRegtypeLiteral(s string, loc int32) *Error { if _, err := parsePGInt(v, 64); err == nil { return nil } - res, err := pg_query.Parse("SELECT NULL::" + v) + res, err := a.s.Version.Parse("SELECT NULL::" + v) if err != nil || len(res.Stmts) != 1 { return errAt("42601", loc, "syntax error at or near %q", v) } diff --git a/internal/analyze/literal_acl.go b/internal/analyze/literal_acl.go new file mode 100644 index 0000000..f89c6f7 --- /dev/null +++ b/internal/analyze/literal_acl.go @@ -0,0 +1,75 @@ +package analyze + +import "strings" + +// aclitemError is the syntax side of aclparse (acl.c): "" when the text is an aclitem, +// else PG's message. Role names are not checked (the checker has no roles: PG's 42704 +// there is a known lenient spot). Two readings of a quoted name: 17 read `""` as an +// escaped quote even when it opened the name, 18 opens and closes the name, so `/""` is +// an empty grantor there. +func aclitemError(s string, pg18 bool) string { + name, rest := aclGetID(s, pg18) + if !strings.HasPrefix(rest, "=") { + if name != "group" && name != "user" { + return "unrecognized key word: \"" + name + "\"" + } + name, rest = aclGetID(rest, pg18) + if name == "" { + return "missing name" + } + } + if !strings.HasPrefix(rest, "=") { + return "missing \"=\" sign" + } + rest = rest[1:] + const modes = "arwdDxtXUCTcsAm" + for len(rest) > 0 && (isASCIILetter(rest[0]) || rest[0] == '*') { + if rest[0] != '*' && !strings.ContainsRune(modes, rune(rest[0])) { + return "invalid mode character: must be one of \"" + modes + "\"" + } + rest = rest[1:] + } + if strings.HasPrefix(rest, "/") { + grantor, after := aclGetID(rest[1:], pg18) + if grantor == "" { + return "a name must follow the \"/\" sign" + } + rest = after + } + if strings.TrimSpace(rest) != "" { + return "extra garbage at the end of the ACL specification" + } + return "" +} + +// aclGetID is getid: a name of identifier characters, or double-quoted with "" for a +// quote inside; surrounding blanks are skipped. It returns the name and what follows. +func aclGetID(s string, pg18 bool) (string, string) { + s = strings.TrimLeft(s, " \t\n\r") + var b strings.Builder + inQuotes := false + i := 0 + for ; i < len(s); i++ { + c := s[i] + if !(inQuotes || c == '"' || isASCIILetter(c) || c >= '0' && c <= '9' || c == '_' || c >= 0x80) { + break + } + if c == '"' { + if pg18 && !inQuotes { + inQuotes = true + continue + } + if i+1 < len(s) && s[i+1] == '"' { + b.WriteByte('"') // an escaped quote + i++ + continue + } + inQuotes = !inQuotes + continue + } + b.WriteByte(c) + } + return b.String(), strings.TrimLeft(s[i:], " \t\n\r") +} + +func isASCIILetter(c byte) bool { return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' } diff --git a/internal/analyze/nodeeq.go b/internal/analyze/nodeeq.go new file mode 100644 index 0000000..36dc20b --- /dev/null +++ b/internal/analyze/nodeeq.go @@ -0,0 +1,38 @@ +package analyze + +import ( + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +// equalIgnoringLocation reports whether two parse-tree nodes are the same expression, +// wherever each was written (the same `b + 1` in DISTINCT ON and in ORDER BY). +func equalIgnoringLocation(x, y *pgparse.Node) bool { + if x == nil || y == nil { + return x == y + } + cx, cy := proto.Clone(x), proto.Clone(y) + clearLocations(cx.ProtoReflect()) + clearLocations(cy.ProtoReflect()) + return proto.Equal(cx, cy) +} + +// clearLocations zeroes every `location` field of m, recursively. +func clearLocations(m protoreflect.Message) { + m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { + switch { + case fd.Name() == "location" && fd.Kind() == protoreflect.Int32Kind: + m.Clear(fd) + case fd.IsList() && fd.Kind() == protoreflect.MessageKind: + l := v.List() + for i := 0; i < l.Len(); i++ { + clearLocations(l.Get(i).Message()) + } + case fd.Kind() == protoreflect.MessageKind && !fd.IsMap(): + clearLocations(v.Message()) + } + return true + }) +} diff --git a/internal/analyze/pg18_checks_test.go b/internal/analyze/pg18_checks_test.go new file mode 100644 index 0000000..a6bf3d3 --- /dev/null +++ b/internal/analyze/pg18_checks_test.go @@ -0,0 +1,88 @@ +package analyze + +import ( + "context" + "strings" + "testing" + "time" + + "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +const pg18ChecksSchema = ` +CREATE DOMAIN d1 AS text COLLATE "C"; +CREATE DOMAIN d2 AS text COLLATE "POSIX"; +CREATE TABLE int4_tbl (f1 int); +` + +// Checks PostgreSQL 18 added, each judged as 18 does and as 17 did. +func TestPG18Checks(t *testing.T) { + cases := []struct { + sql string + want17 string // "" = accepted; otherwise the SQLSTATE + want18 string + }{ + // JSON_VALUE: the DEFAULT's collation must be the RETURNING type's + {`SELECT JSON_VALUE('{"a": "A"}', '$.a' RETURNING d1 DEFAULT 'C'::d2 ON EMPTY) = 'a'`, "", "42P21"}, + {`SELECT JSON_VALUE('{"a": "A"}', '$.a' RETURNING d1 DEFAULT 'C' COLLATE "C" ON EMPTY) = 'a'`, "", ""}, + {`SELECT JSON_VALUE('{"a": "A"}', '$.a' RETURNING d1 DEFAULT 'C' ON EMPTY) = 'a'`, "", ""}, + // the path must be a jsonpath (a string is read as one) + {`SELECT JSON_QUERY(jsonb '{"a": 123}', ('$' || '.' || 'a' || NULL)::date WITH WRAPPER)`, "", "42804"}, + {`SELECT JSON_QUERY(jsonb '{"a": 123}', '$.a'::text)`, "", ""}, + // number fields are digits (and decimal points) only + {`SELECT timestamp with time zone 'J2452271 T X03456-08'`, "", "22007"}, + {`SELECT timestamp with time zone 'J2452271 T X03456.001e6-08'`, "", "22007"}, + {`SELECT timestamp with time zone 'J2452271T04:05:06'`, "", ""}, + // aclitem: "" opens and closes a name in 18, so the grantor is missing + {`SELECT '""=r*/""'::aclitem`, "", "22P02"}, + {`SELECT '=r'::aclitem`, "", ""}, + {`SELECT '=q'::aclitem`, "22P02", "22P02"}, + {`SELECT 'bob r'::aclitem`, "22P02", "22P02"}, + {`SELECT '=r/'::aclitem`, "22P02", "22P02"}, + // an outer-level aggregate may not use a CTE of the subquery it is written in + {`select f1, (with cte1(x,y) as (select 1,2) select count((select i4.f1 from cte1))) as ss from int4_tbl i4`, "42803", "0A000"}, + // not 18-specific, found by 18's corpus: DISTINCT ON matches ORDER BY by expression, not by position in the text + {`select distinct on (a, b+1) a, b+1 from (values (1, 0), (2, 1)) as t (a, b) where a = b+1 group by grouping sets((a, b+1), (a)) order by a, b+1`, "", ""}, + } + schemas := map[pgparse.Version]string{pgparse.PG17: pg18ChecksSchema, pgparse.PG18: "-- sqlshape: postgres 18\n" + pg18ChecksSchema} + for v, ddl := range schemas { + s, err := Load(ddl) + if err != nil { + t.Fatal(err) + } + for _, c := range cases { + want := c.want17 + if v == pgparse.PG18 { + want = c.want18 + } + got := renderAnalyzer(s, c.sql) + if want == "" && strings.HasPrefix(got, "error:") || want != "" && !strings.HasPrefix(got, "error: "+want) { + t.Errorf("%d: %s\n got %s want %q", int(v), c.sql, got, want) + } + } + } + if testing.Short() { + return + } + // the oracle of each version says the same (role checks aside: the checker has no roles) + ctx, cancel := context.WithTimeout(context.Background(), 4*time.Minute) + defer cancel() + for v, ddl := range schemas { + o, err := oracle.StartVersion(ctx, v, pg18ChecksSchema) + if err != nil { + t.Skipf("PostgreSQL %d oracle: %v", int(v), err) + } + s, _ := Load(ddl) + for _, c := range cases { + want, got := renderOracle(ctx, o, c.sql), renderAnalyzer(s, c.sql) + if strings.HasPrefix(want, "error: 42704") || strings.HasPrefix(want, "error: XX000") { + continue // roles, and 17's own bugs on these inputs + } + if (strings.HasPrefix(want, "error:") || strings.HasPrefix(got, "error:")) && !match(want, got) { + t.Errorf("%d: %s\n oracle %s analyzer %s", int(v), c.sql, want, got) + } + } + o.Close() + } +} diff --git a/internal/analyze/pg18_test.go b/internal/analyze/pg18_test.go new file mode 100644 index 0000000..50cf9b1 --- /dev/null +++ b/internal/analyze/pg18_test.go @@ -0,0 +1,93 @@ +package analyze + +import ( + "sort" + "strings" + "testing" +) + +const pg18Schema = `-- sqlshape: postgres 18 +CREATE TABLE p (id int4range, valid_at daterange, name text, + CONSTRAINT p_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)); +CREATE TABLE m (id int, valid_at datemultirange, name text, + CONSTRAINT m_uq UNIQUE (id, valid_at WITHOUT OVERLAPS)); +CREATE TABLE c (id int PRIMARY KEY, pid int4range, at daterange, day date, + CONSTRAINT c_fk FOREIGN KEY (pid, PERIOD at) REFERENCES p (id, PERIOD valid_at)); +CREATE TABLE g (a int PRIMARY KEY, b int GENERATED ALWAYS AS (a * 2) VIRTUAL, c int GENERATED ALWAYS AS (a * 2) STORED); +` + +// A temporal key (WITHOUT OVERLAPS) proves a single row when its scalar columns are fixed +// by equality and its range column either equals a known value or contains a known point: +// no two rows with the same scalar values have overlapping ranges. +func TestTemporalKeyOne(t *testing.T) { + s, err := Load(pg18Schema) + if err != nil { + t.Fatal(err) + } + cases := []struct { + sql string + one bool + }{ + {"SELECT name FROM p WHERE id = $1 AND valid_at = $2", true}, + {"SELECT name FROM p WHERE id = $1 AND valid_at @> $2::date", true}, + {"SELECT name FROM p WHERE id = $1 AND $2::date <@ valid_at", true}, + {"SELECT name FROM m WHERE id = $1 AND valid_at @> $2::date", true}, + {"SELECT p.name FROM p JOIN c ON c.pid = p.id AND p.valid_at @> c.day WHERE c.id = $1", true}, + // not enough: the scalar part alone, an overlap, a range on the known side (it could be empty), an untyped point + {"SELECT name FROM p WHERE id = $1", false}, + {"SELECT name FROM p WHERE id = $1 AND valid_at && $2::daterange", false}, + {"SELECT name FROM p WHERE id = $1 AND valid_at @> $2::daterange", false}, + {"SELECT name FROM p WHERE valid_at @> $1::date", false}, + {"SELECT p.name FROM p JOIN c ON c.pid = p.id AND p.valid_at @> c.at WHERE c.id = $1", false}, + } + for _, c := range cases { + r, err := Analyze(s, c.sql) + if err != nil { + t.Fatalf("%s: %v", c.sql, err) + } + if r.AtMostOne != c.one { + t.Errorf("%s: at most one = %v (%s), want %v", c.sql, r.AtMostOne, r.ManyRowsWhy, c.one) + } + } +} + +// PostgreSQL 18 columns and constraints in DML: a PERIOD foreign key raises 23503 like any +// other, a VIRTUAL generated column is read like a column and never assigned. +func TestPG18DML(t *testing.T) { + s, err := Load(pg18Schema) + if err != nil { + t.Fatal(err) + } + codes := func(sql string) string { + r, err := Analyze(s, sql) + if err != nil { + return "error: " + err.Error() + } + var got []string + for _, v := range r.Violations { + got = append(got, v.Code+" "+v.Key()) + } + sort.Strings(got) + return strings.Join(got, ", ") + } + for _, c := range []struct{ sql, want string }{ + {"INSERT INTO c (id, pid, at) VALUES ($1, $2, $3)", "23502 c.id, 23503 c_fk, 23505 c_pkey"}, + {"UPDATE c SET at = $2 WHERE id = $1", "23503 c_fk"}, + {"DELETE FROM p WHERE id = $1 AND valid_at = $2", "23503 c_fk"}, + {"INSERT INTO g (a) VALUES ($1)", "23502 g.a, 23505 g_pkey"}, + {"INSERT INTO g (a, b) VALUES ($1, $2)", `error: 428C9: cannot insert a non-DEFAULT value into column "b"`}, + {"UPDATE g SET b = 1 WHERE a = $1", `error: 428C9: column "b" can only be updated to DEFAULT`}, + {"UPDATE g SET b = DEFAULT WHERE a = $1", ""}, + } { + if got := codes(c.sql); got != c.want && !(strings.HasPrefix(c.want, "error:") && strings.HasPrefix(got, c.want)) { + t.Errorf("%s\n got %s\n want %s", c.sql, got, c.want) + } + } + r, err := Analyze(s, "SELECT b, c FROM g WHERE a = $1") + if err != nil { + t.Fatal(err) + } + if len(r.Columns) != 2 || r.Columns[0].Source == nil || r.Columns[0].Source.Column != "b" || !r.AtMostOne { + t.Errorf("reading a virtual column: %+v", r.Columns) + } +} diff --git a/internal/analyze/plpgsql.go b/internal/analyze/plpgsql.go index 6e68fb9..6bc1752 100644 --- a/internal/analyze/plpgsql.go +++ b/internal/analyze/plpgsql.go @@ -7,8 +7,6 @@ import ( "strings" "sync" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -199,7 +197,7 @@ func (b *plBody) run() (*FunctionResult, error) { kind = "PROCEDURE" } text := "CREATE " + kind + " " + plSignature(b.fn) + " LANGUAGE plpgsql AS $sqlshape$" + b.fn.Body + "$sqlshape$" - js, err := pg_query.ParsePlPgSqlToJSON(text) + js, err := b.s.Version.ParsePlPgSqlToJSON(text) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } @@ -443,7 +441,7 @@ func (b *plBody) resolveTypeName(tn string, line int) (schema.TypeRef, []rteCol, if rest, ok := strings.CutPrefix(tn, "pg_catalog."); ok && strings.HasPrefix(rest, `"`) && strings.HasSuffix(rest, `"`) && strings.Count(rest, `"`) == 2 { tn = rest[1 : len(rest)-1] } - tree, err := pg_query.Parse("SELECT NULL::" + tn) + tree, err := b.s.Version.Parse("SELECT NULL::" + tn) if err != nil { return schema.TypeRef{}, nil, b.errf(line, codeUndefinedObject, "type %q does not exist", tn) } @@ -968,7 +966,7 @@ func (b *plBody) sql(query string, line int) (*Result, error) { if strings.TrimSpace(query) == "" { return nil, nil } - tree, err := pg_query.Parse(query) + tree, err := b.s.Version.Parse(query) if err != nil { return nil, b.errf(line, codeSyntaxError, "%s", strings.TrimPrefix(err.Error(), "syntax error ")) } diff --git a/internal/analyze/policy.go b/internal/analyze/policy.go index ce2902d..85b2627 100644 --- a/internal/analyze/policy.go +++ b/internal/analyze/policy.go @@ -2,8 +2,8 @@ package analyze import ( "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" - pg_query "github.com/pganalyze/pg_query_go/v6" ) // AnalyzePolicy type-checks a row-level security policy's USING and WITH CHECK predicates @@ -14,7 +14,7 @@ func AnalyzePolicy(s *schema.Schema, rel *schema.Relation, pol *schema.Policy) ( var notes []Note for _, part := range []struct { what string - expr *pg_query.Node + expr *pgparse.Node }{{"USING", pol.Using}, {"WITH CHECK", pol.WithCheck}} { if part.expr == nil { continue @@ -51,11 +51,11 @@ func AnalyzePolicy(s *schema.Schema, rel *schema.Relation, pol *schema.Policy) ( // an error. func SettingReads(pol *schema.Policy) []string { var out []string - for _, e := range []*pg_query.Node{pol.Using, pol.WithCheck} { + for _, e := range []*pgparse.Node{pol.Using, pol.WithCheck} { if e == nil { continue } - schema.WalkNodes(e, func(n *pg_query.Node) { + schema.WalkNodes(e, func(n *pgparse.Node) { f := n.GetFuncCall() if f == nil { return @@ -68,7 +68,7 @@ func SettingReads(pol *schema.Policy) []string { return } if c := f.Args[0].GetAConst(); c != nil { - if sv, ok := c.Val.(*pg_query.A_Const_Sval); ok { + if sv, ok := c.Val.(*pgparse.A_Const_Sval); ok { out = append(out, sv.Sval.GetSval()) } } diff --git a/internal/analyze/recursive.go b/internal/analyze/recursive.go index be68347..d50f5a1 100644 --- a/internal/analyze/recursive.go +++ b/internal/analyze/recursive.go @@ -6,11 +6,12 @@ package analyze // aggregate. import ( - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/reflect/protoreflect" + + "github.com/kr9ly/sqlshape/internal/pgparse" ) -func (a *analyzer) checkRecursiveTerm(name string, term *pg_query.Node) *Error { +func (a *analyzer) checkRecursiveTerm(name string, term *pgparse.Node) *Error { w := &recursionWalker{a: a, name: name} if err := w.walk(term, false, false, ""); err != nil { return err @@ -21,7 +22,7 @@ func (a *analyzer) checkRecursiveTerm(name string, term *pg_query.Node) *Error { if w.refs > 1 { return errAt(codeInvalidRecursion, w.loc, "recursive reference to query %q must not appear more than once", name) } - if sel := term.GetSelectStmt(); sel != nil && sel.Op == pg_query.SetOperation_SETOP_NONE { + if sel := term.GetSelectStmt(); sel != nil && sel.Op == pgparse.SetOperation_SETOP_NONE { for _, tn := range sel.TargetList { if agg := a.aggregateIn(tn.GetResTarget().GetVal()); agg != nil { return errAt(codeInvalidRecursion, agg.Location, "aggregate functions are not allowed in a recursive query's recursive term") @@ -44,12 +45,12 @@ type recursionWalker struct { // walk descends the parse tree; inSub / inOuter say the current position is inside a // subquery / on the nullable side of an outer join, setop names the set operation whose // forbidden arm we are in. -func (w *recursionWalker) walk(n *pg_query.Node, inSub, inOuter bool, setop string) *Error { +func (w *recursionWalker) walk(n *pgparse.Node, inSub, inOuter bool, setop string) *Error { if n == nil { return nil } switch v := n.Node.(type) { - case *pg_query.Node_RangeVar: + case *pgparse.Node_RangeVar: if v.RangeVar.Schemaname == "" && v.RangeVar.Relname == w.name { switch { case inSub: @@ -63,17 +64,17 @@ func (w *recursionWalker) walk(n *pg_query.Node, inSub, inOuter bool, setop stri w.loc = v.RangeVar.Location } return nil - case *pg_query.Node_SubLink, *pg_query.Node_RangeSubselect: + case *pgparse.Node_SubLink, *pgparse.Node_RangeSubselect: for _, c := range children(n) { if err := w.walk(c, true, inOuter, setop); err != nil { return err } } return nil - case *pg_query.Node_JoinExpr: + case *pgparse.Node_JoinExpr: j := v.JoinExpr - lOuter := inOuter || j.Jointype == pg_query.JoinType_JOIN_RIGHT || j.Jointype == pg_query.JoinType_JOIN_FULL - rOuter := inOuter || j.Jointype == pg_query.JoinType_JOIN_LEFT || j.Jointype == pg_query.JoinType_JOIN_FULL + lOuter := inOuter || j.Jointype == pgparse.JoinType_JOIN_RIGHT || j.Jointype == pgparse.JoinType_JOIN_FULL + rOuter := inOuter || j.Jointype == pgparse.JoinType_JOIN_LEFT || j.Jointype == pgparse.JoinType_JOIN_FULL if err := w.walk(j.Larg, inSub, lOuter, setop); err != nil { return err } @@ -81,7 +82,7 @@ func (w *recursionWalker) walk(n *pg_query.Node, inSub, inOuter bool, setop stri return err } return w.walk(j.Quals, true, inOuter, setop) - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: sel := v.SelectStmt if wc := sel.WithClause; wc != nil { // a nested WITH: its items are walked in the same context; one defining the @@ -108,17 +109,17 @@ func (w *recursionWalker) walk(n *pg_query.Node, inSub, inOuter bool, setop stri } } switch sel.Op { - case pg_query.SetOperation_SETOP_EXCEPT: + case pgparse.SetOperation_SETOP_EXCEPT: if err := w.walk(selNode(sel.Larg), inSub, inOuter, setop); err != nil { return err } return w.walk(selNode(sel.Rarg), inSub, inOuter, "EXCEPT") - case pg_query.SetOperation_SETOP_INTERSECT: + case pgparse.SetOperation_SETOP_INTERSECT: if err := w.walk(selNode(sel.Larg), inSub, inOuter, "INTERSECT"); err != nil { return err } return w.walk(selNode(sel.Rarg), inSub, inOuter, "INTERSECT") - case pg_query.SetOperation_SETOP_UNION: + case pgparse.SetOperation_SETOP_UNION: if err := w.walk(selNode(sel.Larg), inSub, inOuter, setop); err != nil { return err } @@ -150,8 +151,8 @@ func (w *recursionWalker) walk(n *pg_query.Node, inSub, inOuter bool, setop stri // allNodes is children() that also looks through message fields that are not Nodes // themselves (WithClause, IntoClause, OnConflictClause, ...). -func allNodes(n *pg_query.Node) []*pg_query.Node { - var out []*pg_query.Node +func allNodes(n *pgparse.Node) []*pgparse.Node { + var out []*pgparse.Node var descend func(m protoreflect.Message) descend = func(m protoreflect.Message) { m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { @@ -159,7 +160,7 @@ func allNodes(n *pg_query.Node) []*pg_query.Node { return true } visit := func(mv protoreflect.Message) { - if c, ok := mv.Interface().(*pg_query.Node); ok { + if c, ok := mv.Interface().(*pgparse.Node); ok { out = append(out, c) return } @@ -186,17 +187,17 @@ func allNodes(n *pg_query.Node) []*pg_query.Node { return out } -func selNode(sel *pg_query.SelectStmt) *pg_query.Node { +func selNode(sel *pgparse.SelectStmt) *pgparse.Node { if sel == nil { return nil } - return &pg_query.Node{Node: &pg_query.Node_SelectStmt{SelectStmt: sel}} + return &pgparse.Node{Node: &pgparse.Node_SelectStmt{SelectStmt: sel}} } // topLevelRef reports whether the recursive term names the CTE directly in its own FROM // list (through joins, not inside a subquery or a nested WITH): where a SEARCH / CYCLE // clause needs it (analyzeCTE). -func (w *recursionWalker) topLevelRef(sel *pg_query.SelectStmt) bool { +func (w *recursionWalker) topLevelRef(sel *pgparse.SelectStmt) bool { if sel == nil { return false } @@ -207,8 +208,8 @@ func (w *recursionWalker) topLevelRef(sel *pg_query.SelectStmt) bool { } } } - var inFrom func(n *pg_query.Node) bool - inFrom = func(n *pg_query.Node) bool { + var inFrom func(n *pgparse.Node) bool + inFrom = func(n *pgparse.Node) bool { if rv := n.GetRangeVar(); rv != nil { return rv.Schemaname == "" && rv.Relname == w.name } @@ -226,7 +227,7 @@ func (w *recursionWalker) topLevelRef(sel *pg_query.SelectStmt) bool { } // mentions reports whether the tree names the CTE anywhere. -func (w *recursionWalker) mentions(n *pg_query.Node) bool { +func (w *recursionWalker) mentions(n *pgparse.Node) bool { if n == nil { return false } diff --git a/internal/analyze/regress_test.go b/internal/analyze/regress_test.go index 9e76fc6..0fade63 100644 --- a/internal/analyze/regress_test.go +++ b/internal/analyze/regress_test.go @@ -11,14 +11,14 @@ import ( "regexp" "runtime" "sort" + "strconv" "strings" "sync" "testing" "time" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -29,7 +29,7 @@ import ( // -regress / $SQLSHAPE_REGRESS); without it the test skips. // // The known disagreements — the ceiling: collation environment, RLS recursion, server -// internals, and the three deliberate differences — are listed in testdata/regress_baseline.txt, +// internals, and the three deliberate differences — are listed in testdata/regress_baseline_.txt, // and the test fails on any statement that joins or leaves that list (run with // -regress-update to rewrite it after reading the report). // @@ -40,14 +40,36 @@ var ( regressTests = flag.String("regress-tests", "", "comma-separated test names to run (default: parallel_schedule order; the baseline is not checked)") regressReport = flag.String("regress-report", "", "write the per-statement report here (default: stderr summary only)") regressJobs = flag.Int("regress-jobs", 0, "parallel workers for the non-promoted files (default: NumCPU, at most 8)") - regressUpdate = flag.Bool("regress-update", false, "rewrite testdata/regress_baseline.txt from this run's hits") + regressUpdate = flag.Bool("regress-update", false, "rewrite testdata/regress_baseline_.txt from this run's hits") ) -const regressBaseline = "testdata/regress_baseline.txt" +// regressVersion is the PostgreSQL major version the probe runs: $SQLSHAPE_PG, else the +// default. The oracle, the corpus checkout, the catalog and the baseline all follow it. +func regressVersion(t testing.TB) pgparse.Version { + if s := os.Getenv("SQLSHAPE_PG"); s != "" { + n, err := strconv.Atoi(s) + if err != nil { + t.Fatalf("SQLSHAPE_PG=%q: want a major version", s) + } + return pgparse.Version(n) + } + return pgparse.Default +} + +// regressBaseline is the baseline file of a version's probe. +func regressBaseline(v pgparse.Version) string { + return fmt.Sprintf("testdata/regress_baseline_%d.txt", int(v)) +} + +// regressDeclaration is the version declaration the probe writes above the corpus DDL, so +// the analyzer judges it with the probed version's grammar and catalog. +func regressDeclaration(v pgparse.Version) string { + return fmt.Sprintf("-- sqlshape: postgres %d\n", int(v)) +} // regressCorpus resolves the corpus directory: the flag, the environment, or the // fetch-regress.sh checkout under the user cache directory. -func regressCorpus() string { +func regressCorpus(v pgparse.Version) string { if *regressDir != "" { return *regressDir } @@ -58,8 +80,7 @@ func regressCorpus() string { if err != nil { return "" } - major, _, _ := strings.Cut(string(oracle.Version), ".") - p := filepath.Join(base, "sqlshape", "regress-"+major, "src", "test", "regress") + p := filepath.Join(base, "sqlshape", fmt.Sprintf("regress-%d", int(v)), "src", "test", "regress") if _, err := os.Stat(filepath.Join(p, "parallel_schedule")); err != nil { return "" } @@ -81,8 +102,8 @@ func (h regressHit) hitID() string { } // readBaseline returns the hit ids of the baseline file (nil when there is none). -func readBaseline(t *testing.T) map[string]bool { - data, err := os.ReadFile(regressBaseline) +func readBaseline(t *testing.T, v pgparse.Version) map[string]bool { + data, err := os.ReadFile(regressBaseline(v)) if err != nil { if os.IsNotExist(err) { return nil @@ -103,7 +124,7 @@ func readBaseline(t *testing.T) map[string]bool { // writeBaseline writes the hits as the new baseline, one per line: id fields, then the // first line of the statement for the reader. -func writeBaseline(t *testing.T, hits []regressHit) { +func writeBaseline(t *testing.T, v pgparse.Version, hits []regressHit) { lines := []string{"# regress probe: the statements on which the analyzer and PostgreSQL knowingly disagree.", "# test\tclass key\tsha1(sql)\tfirst line. Rewrite with: go test ./internal/analyze -run TestRegress -regress-update"} var body []string for _, h := range hits { @@ -118,7 +139,7 @@ func writeBaseline(t *testing.T, hits []regressHit) { } sort.Strings(body) lines = append(lines, body...) - if err := os.WriteFile(regressBaseline, []byte(strings.Join(lines, "\n")+"\n"), 0o644); err != nil { + if err := os.WriteFile(regressBaseline(v), []byte(strings.Join(lines, "\n")+"\n"), 0o644); err != nil { t.Fatal(err) } } @@ -138,9 +159,10 @@ type regressHit struct { } func TestRegress(t *testing.T) { - corpus := regressCorpus() + version := regressVersion(t) + corpus := regressCorpus(version) if corpus == "" { - t.Skip("no regress corpus: run internal/analyze/testdata/tools/fetch-regress.sh, or set -regress / $SQLSHAPE_REGRESS") + t.Skipf("no regress corpus for PostgreSQL %d: run internal/analyze/testdata/tools/fetch-regress.sh REL_%d_x, or set -regress / $SQLSHAPE_REGRESS", int(version), int(version)) } dir, err := filepath.Abs(corpus) if err != nil { @@ -175,13 +197,13 @@ func TestRegress(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 2*time.Hour) defer cancel() - o, err := oracle.Start(ctx, "") + o, err := oracle.StartVersion(ctx, version, "") if err != nil { t.Fatalf("oracle: %v", err) } defer o.Close() - p := ®ressProbe{t: t, ctx: ctx, o: o, dir: dir} + p := ®ressProbe{t: t, ctx: ctx, o: o, dir: dir, version: version} p.stats = map[string]int{} // Promoted files build the shared database in order; the rest each run in a // throwaway copy of it, so they run in parallel once the promoted ones are done. @@ -301,13 +323,13 @@ func TestRegress(t *testing.T) { return // a partial run cannot be compared } if *regressUpdate { - writeBaseline(t, p.hits) + writeBaseline(t, version, p.hits) t.Logf("baseline rewritten: %d hits", len(p.hits)) return } - base := readBaseline(t) + base := readBaseline(t, version) if base == nil { - t.Logf("no %s: nothing asserted (write one with -regress-update)", regressBaseline) + t.Logf("no %s: nothing asserted (write one with -regress-update)", regressBaseline(version)) return } seen := map[string]bool{} @@ -351,6 +373,8 @@ type regressProbe struct { ctx context.Context o *oracle.Oracle dir string + // version is the PostgreSQL major version being probed + version pgparse.Version baseDDL []string // DDL accepted by PG in the promoted tests; the analyzer's shared schema hits []regressHit @@ -369,9 +393,9 @@ var ( reGset = regexp.MustCompile(`\\g[a-z]*\b[^\n]*`) reTemp = regexp.MustCompile(`pg_temp_\d+\.`) reStdin = regexp.MustCompile(`(?i)\bfrom\s+std(in|out)\b`) - // reCrash matches statements whose Prepare segfaults the oracle (PG 17: MERGE ... - // INSERT into a partitioned table with a VALUES source referencing a target column); - // every crash restarts the server under all the workers, so they are skipped + // reCrash matches statements whose Prepare segfaults a PG 17 oracle (MERGE ... INSERT + // into a partitioned table with a VALUES source referencing a target column; 18 takes + // them); every crash restarts the server under all the workers, so they are skipped reCrash = regexp.MustCompile(`(?s)MERGE INTO measurement m\s+USING \(VALUES.*VALUES \(city_id - 1`) ) @@ -447,7 +471,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q if reStdin.MatchString(sql) { // would wait for client data continue } - tree, err := pg_query.Parse(sql) + tree, err := p.version.Parse(sql) if err != nil || len(tree.Stmts) == 0 { p.count("unparsed") exec(sql) @@ -455,12 +479,12 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q } node := tree.Stmts[0].Stmt if isRegressQuery(node) { - if reCrash.MatchString(sql) { + if p.version == pgparse.PG17 && reCrash.MatchString(sql) { p.count("crash-skipped") continue } if s == nil { - s = loadRegressSchema(&ddl) + s = loadRegressSchema(p.version, &ddl) } want := reTemp.ReplaceAllString(renderOracle(ctx, o, sql), "") if strings.Contains(want, "conn closed") || strings.Contains(want, "unexpected EOF") { // a backend crash took the connection: reconnect and retry @@ -484,12 +508,12 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q hits = append(hits, regressHit{test: name, n: i + 1, class: class, key: key, sql: sql, oracle: want, analyzer: got}) } } - if _, isSel := node.Node.(*pg_query.Node_SelectStmt); !isSel || node.GetSelectStmt().IntoClause != nil { + if _, isSel := node.Node.(*pgparse.Node_SelectStmt); !isSel || node.GetSelectStmt().IntoClause != nil { err := exec(sql) // keep data / SELECT INTO state moving; failures mirror psql if err == nil && node.GetSelectStmt().GetIntoClause() != nil { // SELECT INTO made a table: the analyzer's schema gets it too if s == nil { - s = loadRegressSchema(&ddl) + s = loadRegressSchema(p.version, &ddl) } if s.Apply(sql+";\n") == nil { ddl = append(ddl, sql) @@ -500,16 +524,16 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q } err = exec(sql) switch st := node.Node.(type) { - case *pg_query.Node_DiscardStmt: + case *pgparse.Node_DiscardStmt: // DISCARD ALL (a \c too) / TEMP: the temp relations made so far are gone, and // pgx must forget the statements the server deallocated if err == nil { conn.DeallocateAll(ctx) if s == nil { - s = loadRegressSchema(&ddl) + s = loadRegressSchema(p.version, &ddl) } - drops := dropTemps(stmts[:i]) - if st.DiscardStmt.Target == pg_query.DiscardMode_DISCARD_ALL { + drops := dropTemps(p.version, stmts[:i]) + if st.DiscardStmt.Target == pgparse.DiscardMode_DISCARD_ALL { drops = append(drops, sessionResets...) } for _, d := range drops { @@ -519,26 +543,26 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q } } continue - case *pg_query.Node_DeallocateStmt: + case *pgparse.Node_DeallocateStmt: if err == nil && st.DeallocateStmt.Isall { conn.DeallocateAll(ctx) } } - if ts, ok := node.Node.(*pg_query.Node_TransactionStmt); ok { + if ts, ok := node.Node.(*pgparse.Node_TransactionStmt); ok { switch ts.TransactionStmt.Kind { - case pg_query.TransactionStmtKind_TRANS_STMT_BEGIN, pg_query.TransactionStmtKind_TRANS_STMT_START: + case pgparse.TransactionStmtKind_TRANS_STMT_BEGIN, pgparse.TransactionStmtKind_TRANS_STMT_START: txSnap = len(ddl) saves = nil - case pg_query.TransactionStmtKind_TRANS_STMT_ROLLBACK, pg_query.TransactionStmtKind_TRANS_STMT_PREPARE: + case pgparse.TransactionStmtKind_TRANS_STMT_ROLLBACK, pgparse.TransactionStmtKind_TRANS_STMT_PREPARE: if txSnap >= 0 && len(ddl) > txSnap { ddl = ddl[:txSnap] s = nil } txSnap = -1 saves = nil - case pg_query.TransactionStmtKind_TRANS_STMT_SAVEPOINT: + case pgparse.TransactionStmtKind_TRANS_STMT_SAVEPOINT: saves = append(saves, savepoint{ts.TransactionStmt.SavepointName, len(ddl)}) - case pg_query.TransactionStmtKind_TRANS_STMT_ROLLBACK_TO: + case pgparse.TransactionStmtKind_TRANS_STMT_ROLLBACK_TO: for i := len(saves) - 1; i >= 0; i-- { if saves[i].name == ts.TransactionStmt.SavepointName { if len(ddl) > saves[i].n { @@ -549,7 +573,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q break } } - case pg_query.TransactionStmtKind_TRANS_STMT_RELEASE: + case pgparse.TransactionStmtKind_TRANS_STMT_RELEASE: for i := len(saves) - 1; i >= 0; i-- { if saves[i].name == ts.TransactionStmt.SavepointName { saves = saves[:i] @@ -560,7 +584,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q // COMMIT: the loader drops ON COMMIT DROP tables at transaction end if err == nil { if s == nil { - s = loadRegressSchema(&ddl) + s = loadRegressSchema(p.version, &ddl) } if s.Apply(sql+";\n") == nil { ddl = append(ddl, sql) @@ -576,12 +600,12 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q } // extend the analyzer's schema in place; only CREATE EXTENSION forces a rebuild if s == nil { - s = loadRegressSchema(&ddl) + s = loadRegressSchema(p.version, &ddl) } switch aerr := s.Apply(sql + ";\n"); { case aerr == nil: ddl = append(ddl, sql) - case errors.Is(aerr, schema.ErrNeedsReload) && loadsAlone(sql): + case errors.Is(aerr, schema.ErrNeedsReload) && loadsAlone(p.version, sql): ddl = append(ddl, sql) s = nil } @@ -592,7 +616,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q exec("DISCARD ALL") conn.DeallocateAll(ctx) conn.Exec(ctx, session) - ddl = append(ddl, dropTemps(stmts)...) + ddl = append(ddl, dropTemps(p.version, stmts)...) ddl = append(ddl, sessionResets...) p.baseDDL = ddl } @@ -604,10 +628,10 @@ var sessionResets = []string{"RESET search_path", "RESET datestyle", "RESET inte // dropTemps lists the DROPs for the temp tables and views the statements created and did // not drop (what the end of a session, or DISCARD TEMP, takes with it). -func dropTemps(stmts []string) []string { +func dropTemps(v pgparse.Version, stmts []string) []string { temps := map[string]string{} // name → TABLE / VIEW / SEQUENCE for _, sql := range stmts { - tree, err := pg_query.Parse(sql) + tree, err := v.Parse(sql) if err != nil || len(tree.Stmts) != 1 { continue } @@ -646,16 +670,16 @@ func dropTemps(stmts []string) []string { // loadsAlone reports whether the loader takes the statement without a hard error, so // appending it cannot poison the accumulated DDL. -func loadsAlone(sql string) bool { - _, err := Load(sql + ";\n") +func loadsAlone(v pgparse.Version, sql string) bool { + _, err := Load(regressDeclaration(v) + sql + ";\n") return err == nil } // loadRegressSchema loads the accumulated DDL; a statement the loader rejects // outright (not merely a Problem) is dropped so the rest still applies. -func loadRegressSchema(ddl *[]string) *schema.Schema { +func loadRegressSchema(v pgparse.Version, ddl *[]string) *schema.Schema { for { - s, err := Load(strings.Join(*ddl, ";\n") + ";\n") + s, err := Load(regressDeclaration(v) + strings.Join(*ddl, ";\n") + ";\n") if err == nil { return s } @@ -666,10 +690,10 @@ func loadRegressSchema(ddl *[]string) *schema.Schema { } } -func isRegressQuery(n *pg_query.Node) bool { +func isRegressQuery(n *pgparse.Node) bool { switch n.Node.(type) { - case *pg_query.Node_SelectStmt, *pg_query.Node_InsertStmt, *pg_query.Node_UpdateStmt, - *pg_query.Node_DeleteStmt, *pg_query.Node_MergeStmt: + case *pgparse.Node_SelectStmt, *pgparse.Node_InsertStmt, *pgparse.Node_UpdateStmt, + *pgparse.Node_DeleteStmt, *pgparse.Node_MergeStmt: return true } return false @@ -734,7 +758,7 @@ func (p *regressProbe) split(src string) []string { text := strings.Join(lines, "\n") text = reGset.ReplaceAllString(text, ";") text = reMeta.ReplaceAllString(text, "") - stmts, err := pg_query.SplitWithScanner(text, true) + stmts, err := p.version.SplitWithScanner(text, true) if err != nil { p.t.Logf("split: %v", err) return nil diff --git a/internal/analyze/returning18_test.go b/internal/analyze/returning18_test.go new file mode 100644 index 0000000..4cf0550 --- /dev/null +++ b/internal/analyze/returning18_test.go @@ -0,0 +1,100 @@ +package analyze + +import ( + "context" + "strings" + "testing" + "time" + + "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +const returning18Schema = `-- sqlshape: postgres 18 +CREATE TABLE foo (f1 int PRIMARY KEY, f2 text, f3 int NOT NULL DEFAULT 0); +CREATE TABLE zerocol (); +CREATE TABLE src (f1 int, f2 text); +` + +// RETURNING old / new (PostgreSQL 18): the row before and after the write, reached only +// by a qualified reference; old does not exist for an inserted row and new not for a +// deleted one, so those are nullable (the oracle reports the column's own NOT NULL there, +// which is what its Describe knows; the analyzer is right). +func TestReturningOldNew(t *testing.T) { + s, err := Load(returning18Schema) + if err != nil { + t.Fatal(err) + } + cases := []struct { + sql string + want string // the analyzer's rendering, or "error: " + }{ + {"INSERT INTO foo (f1) VALUES ($1) RETURNING old.f1, old.f3, new.f1, new.f3, f3", + "params:\n $1 integer\ncolumns:\n f1 integer <- foo.f1 null\n f3 integer <- foo.f3 null\n f1 integer <- foo.f1 not null\n f3 integer <- foo.f3 not null\n f3 integer <- foo.f3 not null\n"}, + {"UPDATE foo SET f3 = f3 + 1 WHERE f1 = $1 RETURNING old.f3, new.f3, old, new", + "params:\n $1 integer\ncolumns:\n f3 integer <- foo.f3 not null\n f3 integer <- foo.f3 not null\n old foo\n new foo\n"}, + {"DELETE FROM foo WHERE f1 = $1 RETURNING old.f3, new.f3, old, new", + "params:\n $1 integer\ncolumns:\n f3 integer <- foo.f3 not null\n f3 integer <- foo.f3 null\n old foo\n new foo\n"}, + {"UPDATE foo SET f3 = 1 RETURNING WITH (OLD AS o, NEW AS n) o.f3, n.f3, o.ctid", + "params:\ncolumns:\n f3 integer <- foo.f3 not null\n f3 integer <- foo.f3 not null\n ctid tid <- foo.ctid not null\n"}, + // unqualified names never mean the row variables; * does not expand them + {"UPDATE foo SET f3 = 1 RETURNING *", + "params:\ncolumns:\n f1 integer <- foo.f1 not null\n f2 text <- foo.f2 null\n f3 integer <- foo.f3 not null\n"}, + // a FROM item named old hides the default alias; a chosen alias may not clash with one + {"UPDATE foo SET f3 = old.f1 FROM src AS old WHERE foo.f1 = old.f1 RETURNING old.f2", + "params:\ncolumns:\n f2 text <- src.f2 null\n"}, + {"UPDATE foo SET f3 = 1 FROM src AS o RETURNING WITH (OLD AS o) o.f3", "error: 42712"}, + {"UPDATE foo SET f3 = 1 RETURNING WITH (OLD AS x, NEW AS x) x.f3", "error: 42712"}, + {"UPDATE foo SET f3 = 1 RETURNING WITH (OLD AS o, OLD AS p) o.f3", "error: 42601"}, + {"INSERT INTO zerocol SELECT RETURNING old.*, new.*, *", "error: 42601"}, + {"MERGE INTO foo USING src ON foo.f1 = src.f1 WHEN MATCHED THEN UPDATE SET f2 = src.f2 RETURNING old.f3, new.f3", + "params:\ncolumns:\n f3 integer <- foo.f3 not null\n f3 integer <- foo.f3 not null\n"}, + {"MERGE INTO foo USING src ON foo.f1 = src.f1 WHEN MATCHED THEN DELETE WHEN NOT MATCHED THEN INSERT (f1) VALUES (src.f1) RETURNING old.f3, new.f3", + "params:\ncolumns:\n f3 integer <- foo.f3 null\n f3 integer <- foo.f3 null\n"}, + } + for _, c := range cases { + got := renderAnalyzer(s, c.sql) + if strings.HasPrefix(c.want, "error:") { + if !strings.HasPrefix(got, c.want) { + t.Errorf("%s\n got %s want %s", c.sql, got, c.want) + } + } else if got != c.want { + t.Errorf("%s\n got:\n%s want:\n%s", c.sql, got, c.want) + } + } + // a 17 schema has no row variables + s17, err := Load(strings.TrimPrefix(returning18Schema, "-- sqlshape: postgres 18\n")) + if err != nil { + t.Fatal(err) + } + if got := renderAnalyzer(s17, "UPDATE foo SET f3 = 1 RETURNING old.f3"); !strings.HasPrefix(got, "error: 42P01") { + t.Errorf("17: %s", got) + } + + // the oracle agrees on every error code and on every column's name and type + if testing.Short() { + return + } + ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) + defer cancel() + o, err := oracle.StartVersion(ctx, pgparse.PG18, returning18Schema) + if err != nil { + t.Skipf("PostgreSQL 18 oracle: %v", err) + } + defer o.Close() + for _, c := range cases { + want := renderOracle(ctx, o, c.sql) + got := renderAnalyzer(s, c.sql) + if strings.HasPrefix(want, "error:") || strings.HasPrefix(got, "error:") { + if !match(want, got) { + t.Errorf("%s\n oracle %s analyzer %s", c.sql, want, got) + } + continue + } + // nullability aside (see above), the two agree + strip := func(s string) string { return strings.NewReplacer(" not null", "", " null", "").Replace(s) } + if strip(want) != strip(got) { + t.Errorf("%s\n oracle:\n%s analyzer:\n%s", c.sql, want, got) + } + } +} diff --git a/internal/analyze/scope.go b/internal/analyze/scope.go index bdeba77..2521844 100644 --- a/internal/analyze/scope.go +++ b/internal/analyze/scope.go @@ -1,9 +1,8 @@ package analyze import ( - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -43,6 +42,9 @@ type rte struct { single bool // outerNullable: an outer join made every column nullable (null-extended rows) outerNullable bool + // rowNullable: a whole-row reference to this item can be NULL (RETURNING old in an + // INSERT, new in a DELETE: the row does not exist) + rowNullable bool // pos is the 0-based location of the reference in the statement (relations only); // target marks the leaf an INSERT / UPDATE / DELETE / MERGE writes (facts.go) pos int32 @@ -71,8 +73,8 @@ type joinInfo struct { left, right *rte using []string usingCols []rteCol - jointype pg_query.JoinType - quals *pg_query.Node + jointype pgparse.JoinType + quals *pgparse.Node colAliases []string // (a JOIN b) AS x (c1, c2, ...): the output columns renamed in order usingAlias *rte // JOIN USING (...) AS x: x exposes the merged USING columns } @@ -186,8 +188,12 @@ type scope struct { parent *scope items []*rte ctes map[string]*cte + // retVars are RETURNING's old / new row variables (PostgreSQL 18): reached only by a + // qualified reference (old.col, old.*, the whole row old), never by a bare column name, + // and never expanded by a bare * + retVars []*rte // windows are this level's WINDOW clause definitions by name - windows map[string]*pg_query.WindowDef + windows map[string]*pgparse.WindowDef // agg: this level's target list / HAVING has an aggregate (one row without GROUP BY) agg bool // grouped: this level has a GROUP BY clause @@ -245,12 +251,18 @@ func newScope(parent *scope) *scope { } func (sc *scope) findCTE(name string) *cte { + c, _ := sc.findCTEScope(name) + return c +} + +// findCTEScope is findCTE returning the scope that defines the CTE too. +func (sc *scope) findCTEScope(name string) (*cte, *scope) { for s := sc; s != nil; s = s.parent { if c, ok := s.ctes[name]; ok { - return c + return c, s } } - return nil + return nil, nil } // byAlias finds a leaf rte by alias in this scope only. @@ -262,6 +274,11 @@ func (sc *scope) byAlias(alias string) *rte { } } } + for _, v := range sc.retVars { + if v.alias == alias { + return v + } + } return nil } @@ -282,6 +299,13 @@ func (sc *scope) aliasAt(alias string) (r *rte, ambiguous bool) { } } } + if r == nil { + for _, v := range s.retVars { + if v.alias == alias { + r = v + } + } + } if !s.passthrough { break } @@ -463,7 +487,7 @@ func (sc *scope) wholeRow(name string, loc int32) (*rte, *Error) { } // relationRTE builds a leaf rte for a table / view. -func (a *analyzer) relationRTE(rel *schema.Relation, alias *pg_query.Alias, loc int32) (*rte, *Error) { +func (a *analyzer) relationRTE(rel *schema.Relation, alias *pgparse.Alias, loc int32) (*rte, *Error) { if a.inView == 0 && rel.Kind != 'c' { dup := false for _, ref := range a.refs { @@ -649,8 +673,16 @@ func (a *analyzer) systemColumn(sc *scope, tbl, col string) (rteCol, bool) { } } } + if tbl != "" { + // old.ctid / new.tableoid in RETURNING (a row variable is only reached qualified) + for _, v := range s.retVars { + if v.alias == tbl && v.rel != nil { + hits = append(hits, v) + } + } + } if len(hits) == 1 { - return rteCol{name: col, typ: ref(oid), src: &Source{Table: hits[0].rel.FullName(), Column: col, NotNull: true}}, true + return rteCol{name: col, typ: ref(oid), nullable: hits[0].rowNullable, src: &Source{Table: hits[0].rel.FullName(), Column: col, NotNull: !hits[0].rowNullable}}, true } if len(hits) > 1 { return rteCol{}, false diff --git a/internal/analyze/stmt.go b/internal/analyze/stmt.go index abe18f7..b37c0bd 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -1,18 +1,16 @@ package analyze import ( - "google.golang.org/protobuf/proto" "strconv" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) // selectStmt analyzes a SELECT (incl. set operations and VALUES) and returns its output columns. -func (a *analyzer) selectStmt(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) selectStmt(sel *pgparse.SelectStmt, sc *scope) ([]rteCol, *Error) { keepUnknown := a.keepUnknown a.keepUnknown = false // a subquery is its own level for aggregate nesting and SRF placement @@ -32,10 +30,10 @@ func (a *analyzer) selectStmt(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *E } a.selectDepth++ defer func() { a.selectDepth-- }() - if len(sel.LockingClause) > 0 && sel.Op != pg_query.SetOperation_SETOP_NONE { + if len(sel.LockingClause) > 0 && sel.Op != pgparse.SetOperation_SETOP_NONE { return nil, errAt(codeFeatureNotSupported, -1, "%s is not allowed with UNION/INTERSECT/EXCEPT", lockStrength(sel.LockingClause[0])) } - if sel.Op != pg_query.SetOperation_SETOP_NONE && sel.Op != pg_query.SetOperation_SET_OPERATION_UNDEFINED { + if sel.Op != pgparse.SetOperation_SETOP_NONE && sel.Op != pgparse.SetOperation_SET_OPERATION_UNDEFINED { return a.setOp(sel, sc) } if len(sel.ValuesLists) > 0 { @@ -60,7 +58,7 @@ func (a *analyzer) selectStmt(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *E continue } if sc.windows == nil { - sc.windows = map[string]*pg_query.WindowDef{} + sc.windows = map[string]*pgparse.WindowDef{} } if _, dup := sc.windows[wd.Name]; dup { return nil, errAt(codeWindowingError, wd.Location, "window %q is already defined", wd.Name) @@ -169,7 +167,7 @@ func (a *analyzer) selectStmt(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *E node := sb.GetSortBy().GetNode() matched := false for _, d := range sel.DistinctClause { - if proto.Equal(d, node) || positionalMatch(d, node, cols) { + if equalIgnoringLocation(d, node) || positionalMatch(d, node, cols) { matched = true break } @@ -182,7 +180,7 @@ func (a *analyzer) selectStmt(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *E if err := a.checkGrouping(sel, sc, cols); err != nil { return nil, err } - for _, lim := range []*pg_query.Node{sel.LimitCount, sel.LimitOffset} { + for _, lim := range []*pgparse.Node{sel.LimitCount, sel.LimitOffset} { if lim == nil { continue } @@ -208,9 +206,9 @@ func (a *analyzer) selectStmt(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *E // orderOrGroupItem types an ORDER BY / GROUP BY item; a bare integer constant is an // output-column ordinal. Sorting or grouping compares values, so an indeterminate // collation is noted here (what names the clause). -func (a *analyzer) orderOrGroupItem(n *pg_query.Node, sc *scope, cols []rteCol, what string) *Error { +func (a *analyzer) orderOrGroupItem(n *pgparse.Node, sc *scope, cols []rteCol, what string) *Error { if c := n.GetAConst(); c != nil { - if iv, ok := c.Val.(*pg_query.A_Const_Ival); ok { + if iv, ok := c.Val.(*pgparse.A_Const_Ival); ok { i := int(iv.Ival.Ival) if i < 1 || i > len(cols) { return errAt(codeInvalidColumnRef, loc(n), "%s position %d is not in select list", what, i) @@ -243,7 +241,7 @@ func (a *analyzer) orderOrGroupItem(n *pg_query.Node, sc *scope, cols []rteCol, return a.checkComparable(e.typ, what, loc(n)) } -func (a *analyzer) boolClause(n *pg_query.Node, sc *scope, what string) *Error { +func (a *analyzer) boolClause(n *pgparse.Node, sc *scope, what string) *Error { if n == nil { return nil } @@ -272,11 +270,11 @@ func (a *analyzer) boolClause(n *pg_query.Node, sc *scope, what string) *Error { return nil } -func isStar(cr *pg_query.ColumnRef) bool { +func isStar(cr *pgparse.ColumnRef) bool { return len(cr.Fields) > 0 && cr.Fields[len(cr.Fields)-1].GetAStar() != nil } -func (a *analyzer) expandStar(cr *pg_query.ColumnRef, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) expandStar(cr *pgparse.ColumnRef, sc *scope) ([]rteCol, *Error) { if len(cr.Fields) == 1 { var out []rteCol for _, it := range sc.items { @@ -301,7 +299,7 @@ func (a *analyzer) expandStar(cr *pg_query.ColumnRef, sc *scope) ([]rteCol, *Err return cols, nil } -func (a *analyzer) withClause(w *pg_query.WithClause, sc *scope) *Error { +func (a *analyzer) withClause(w *pgparse.WithClause, sc *scope) *Error { if w.Recursive && len(w.Ctes) > 1 { // every item sees every other: a reference cycle through two or more items is // mutual recursion (makeDependencyGraph / TopologicalSort) @@ -334,7 +332,7 @@ func (a *analyzer) withClause(w *pg_query.WithClause, sc *scope) *Error { } pending := w.Ctes for len(pending) > 0 { - var deferred []*pg_query.Node + var deferred []*pgparse.Node var firstErr *Error progress := false for _, cn := range pending { @@ -363,7 +361,7 @@ func (a *analyzer) withClause(w *pg_query.WithClause, sc *scope) *Error { } // namesLaterCTE reports whether a "relation does not exist" error names one of w's CTEs. -func (a *analyzer) namesLaterCTE(err *Error, w *pg_query.WithClause) bool { +func (a *analyzer) namesLaterCTE(err *Error, w *pgparse.WithClause) bool { for _, cn := range w.Ctes { if strings.Contains(err.Message, "\""+cn.GetCommonTableExpr().Ctename+"\"") { return true @@ -373,7 +371,7 @@ func (a *analyzer) namesLaterCTE(err *Error, w *pg_query.WithClause) bool { } // defineCTE analyzes one WITH item and exposes it in sc. -func (a *analyzer) defineCTE(c *pg_query.CommonTableExpr, w *pg_query.WithClause, sc *scope) *Error { +func (a *analyzer) defineCTE(c *pgparse.CommonTableExpr, w *pgparse.WithClause, sc *scope) *Error { sel := c.Ctequery.GetSelectStmt() if sel == nil { // data-modifying CTE: its RETURNING rows are the CTE's columns @@ -386,13 +384,13 @@ func (a *analyzer) defineCTE(c *pg_query.CommonTableExpr, w *pg_query.WithClause a.inDMLCTE = true defer func() { a.inDMLCTE = false }() switch st := c.Ctequery.Node.(type) { - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: cols, err = a.insertStmt(st.InsertStmt, csc) - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: cols, err = a.updateStmt(st.UpdateStmt, csc) - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: cols, err = a.deleteStmt(st.DeleteStmt, csc) - case *pg_query.Node_MergeStmt: + case *pgparse.Node_MergeStmt: cols, err = a.mergeStmt(st.MergeStmt, csc) default: return errAt(codeFeatureNotSupported, c.Location, "unsupported CTE query %T", c.Ctequery.Node) @@ -411,7 +409,7 @@ func (a *analyzer) defineCTE(c *pg_query.CommonTableExpr, w *pg_query.WithClause return nil } def := &cte{name: c.Ctename, recursive: w.Recursive} - if w.Recursive && sel.Op == pg_query.SetOperation_SETOP_UNION && (&recursionWalker{a: a, name: c.Ctename}).mentions(c.Ctequery) { + if w.Recursive && sel.Op == pgparse.SetOperation_SETOP_UNION && (&recursionWalker{a: a, name: c.Ctename}).mentions(c.Ctequery) { // the recursive union itself takes no ORDER BY / LIMIT / OFFSET / FOR UPDATE switch { case len(sel.SortClause) > 0: @@ -423,14 +421,14 @@ func (a *analyzer) defineCTE(c *pg_query.CommonTableExpr, w *pg_query.WithClause case len(sel.LockingClause) > 0 || sel.Rarg != nil && len(sel.Rarg.LockingClause) > 0 || sel.Larg != nil && len(sel.Larg.LockingClause) > 0: return errAt(codeFeatureNotSupported, c.Location, "FOR UPDATE/SHARE in a recursive query is not implemented") } - if (c.SearchClause != nil || c.CycleClause != nil) && sel.Larg != nil && sel.Larg.Op != pg_query.SetOperation_SETOP_NONE { + if (c.SearchClause != nil || c.CycleClause != nil) && sel.Larg != nil && sel.Larg.Op != pgparse.SetOperation_SETOP_NONE { return errAt(codeFeatureNotSupported, c.Location, "with a SEARCH or CYCLE clause, the left side of the UNION must be a SELECT") } } - if w.Recursive && sel.Op != pg_query.SetOperation_SETOP_UNION && (&recursionWalker{a: a, name: c.Ctename}).mentions(c.Ctequery) { + if w.Recursive && sel.Op != pgparse.SetOperation_SETOP_UNION && (&recursionWalker{a: a, name: c.Ctename}).mentions(c.Ctequery) { return errAt(codeInvalidRecursion, c.Location, "recursive query %q does not have the form non-recursive-term UNION [ALL] recursive-term", c.Ctename) } - if w.Recursive && sel.Op == pg_query.SetOperation_SETOP_UNION { + if w.Recursive && sel.Op == pgparse.SetOperation_SETOP_UNION { // the CTE may not be referenced from its non-recursive term, nor from a WITH nested // in its body; expose it (forbidden) before either is analyzed def.forbidden = true @@ -456,7 +454,7 @@ func (a *analyzer) defineCTE(c *pg_query.CommonTableExpr, w *pg_query.WithClause return err } if c.SearchClause != nil || c.CycleClause != nil { - if sel.Rarg != nil && sel.Rarg.Op != pg_query.SetOperation_SETOP_NONE { + if sel.Rarg != nil && sel.Rarg.Op != pgparse.SetOperation_SETOP_NONE { return errAt(codeSyntaxError, c.Location, "with a SEARCH or CYCLE clause, the right side of the UNION must be a SELECT") } if rw := (&recursionWalker{a: a, name: c.Ctename}); rw.mentions(selNode(sel.Rarg)) && !rw.topLevelRef(sel.Rarg) { @@ -573,7 +571,7 @@ func (a *analyzer) defineCTE(c *pg_query.CommonTableExpr, w *pg_query.WithClause } // addSearchCycleCols appends the columns a SEARCH / CYCLE clause adds to a recursive CTE. -func (a *analyzer) addSearchCycleCols(def *cte, c *pg_query.CommonTableExpr, sc *scope) { +func (a *analyzer) addSearchCycleCols(def *cte, c *pgparse.CommonTableExpr, sc *scope) { { if sc2 := c.SearchClause; sc2 != nil { // SEARCH DEPTH FIRST ... SET seq is a record[] path, BREADTH FIRST a record @@ -599,7 +597,7 @@ func (a *analyzer) addSearchCycleCols(def *cte, c *pg_query.CommonTableExpr, sc } } -func (a *analyzer) aliasCols(cols []rteCol, aliases []*pg_query.Node) []rteCol { +func (a *analyzer) aliasCols(cols []rteCol, aliases []*pgparse.Node) []rteCol { out := make([]rteCol, len(cols)) copy(out, cols) for i, n := range aliases { @@ -610,7 +608,7 @@ func (a *analyzer) aliasCols(cols []rteCol, aliases []*pg_query.Node) []rteCol { return out } -func (a *analyzer) setOp(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) setOp(sel *pgparse.SelectStmt, sc *scope) ([]rteCol, *Error) { // each arm keeps its unknown literals (select null, 42 union all select x, y): the // common type of the pair types them, text only when every arm is unknown a.keepUnknown = true @@ -638,7 +636,7 @@ func (a *analyzer) setOp(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *Error) typmod = l.typ.Typmod } // an arm's untyped literal is read by the common type's input function - for j, arm := range []*pg_query.SelectStmt{sel.Larg, sel.Rarg} { + for j, arm := range []*pgparse.SelectStmt{sel.Larg, sel.Rarg} { if [2]catalog.OID{l.typ.OID, r.typ.OID}[j] != catalog.Unknown || t == catalog.Unknown { continue } @@ -659,7 +657,7 @@ func (a *analyzer) setOp(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *Error) for _, sn := range sel.SortClause { n := sn.GetSortBy().GetNode() if c := n.GetAConst(); c != nil { - if iv, ok := c.Val.(*pg_query.A_Const_Ival); ok { + if iv, ok := c.Val.(*pgparse.A_Const_Ival); ok { if i := int(iv.Ival.Ival); i < 1 || i > len(out) { return nil, errAt(codeInvalidColumnRef, c.Location, "ORDER BY position %d is not in select list", i) } @@ -680,7 +678,7 @@ func (a *analyzer) setOp(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *Error) return nil, errAt(codeFeatureNotSupported, loc(n), "invalid %s ORDER BY clause", "UNION/INTERSECT/EXCEPT") } // LIMIT on the whole set operation - for _, lim := range []*pg_query.Node{sel.LimitCount, sel.LimitOffset} { + for _, lim := range []*pgparse.Node{sel.LimitCount, sel.LimitOffset} { if lim == nil { continue } @@ -699,8 +697,8 @@ func (a *analyzer) setOp(sel *pg_query.SelectStmt, sc *scope) ([]rteCol, *Error) // armLiteral is the string constant at position i of a plain SELECT arm's target list // (nil when the arm is anything else, or a * makes the position uncertain). -func armLiteral(sel *pg_query.SelectStmt, i int) *pg_query.A_Const { - if sel == nil || sel.Op != pg_query.SetOperation_SETOP_NONE || len(sel.ValuesLists) > 0 || i >= len(sel.TargetList) { +func armLiteral(sel *pgparse.SelectStmt, i int) *pgparse.A_Const { + if sel == nil || sel.Op != pgparse.SetOperation_SETOP_NONE || len(sel.ValuesLists) > 0 || i >= len(sel.TargetList) { return nil } for _, tn := range sel.TargetList { @@ -714,17 +712,17 @@ func armLiteral(sel *pg_query.SelectStmt, i int) *pg_query.A_Const { return nil } -func setOpName(op pg_query.SetOperation) string { +func setOpName(op pgparse.SetOperation) string { switch op { - case pg_query.SetOperation_SETOP_INTERSECT: + case pgparse.SetOperation_SETOP_INTERSECT: return "INTERSECT" - case pg_query.SetOperation_SETOP_EXCEPT: + case pgparse.SetOperation_SETOP_EXCEPT: return "EXCEPT" } return "UNION" } -func (a *analyzer) values(lists []*pg_query.Node, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) values(lists []*pgparse.Node, sc *scope) ([]rteCol, *Error) { var rows [][]*expr for _, ln := range lists { // transformExpressionList: t.* in a VALUES row expands to t's columns (none for a @@ -773,12 +771,13 @@ func (a *analyzer) values(lists []*pg_query.Node, sc *scope) ([]rteCol, *Error) } // fromItem builds the rte for one FROM entry. -func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { +func (a *analyzer) fromItem(n *pgparse.Node, sc *scope) (*rte, *Error) { switch v := n.Node.(type) { - case *pg_query.Node_RangeVar: + case *pgparse.Node_RangeVar: rv := v.RangeVar if rv.Schemaname == "" { - if c := sc.findCTE(rv.Relname); c != nil { + if c, def := sc.findCTEScope(rv.Relname); c != nil { + a.noteCTERef(def, rv.Location) if c.forbidden { return nil, errAt(codeInvalidRecursion, rv.Location, "recursive reference to query %q must not appear within its non-recursive term", rv.Relname) } @@ -813,7 +812,7 @@ func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { return nil, errAt(codeObjectNotInPrerequisiteState, -1, "access to non-system view %q is restricted", rel.Name) } return a.relationRTE(rel, rv.Alias, rv.Location) - case *pg_query.Node_RangeSubselect: + case *pgparse.Node_RangeSubselect: sub := v.RangeSubselect if ss := sub.Subquery.GetSelectStmt(); ss != nil && ss.IntoClause != nil { return nil, errAt(codeSyntaxError, ss.IntoClause.Rel.GetLocation(), "SELECT ... INTO is not allowed here") @@ -837,7 +836,7 @@ func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { return nil, err } if sub.Alias == nil { - sub.Alias = &pg_query.Alias{Aliasname: "unnamed_subquery"} // optional since PG 16 + sub.Alias = &pgparse.Alias{Aliasname: "unnamed_subquery"} // optional since PG 16 } r := &rte{alias: sub.Alias.Aliasname, sub: &subquery{what: "subquery", sel: sub.Subquery.GetSelectStmt(), sc: child}} if len(sub.Alias.Colnames) > len(cols) { @@ -851,11 +850,11 @@ func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { r.cols = append(r.cols, c) } return r, nil - case *pg_query.Node_RangeFunction: + case *pgparse.Node_RangeFunction: return a.rangeFunction(v.RangeFunction, sc) - case *pg_query.Node_RangeTableFunc: + case *pgparse.Node_RangeTableFunc: return a.xmlTable(v.RangeTableFunc, sc) - case *pg_query.Node_JoinExpr: + case *pgparse.Node_JoinExpr: r, err := a.joinExpr(v.JoinExpr, sc) if err != nil { return nil, err @@ -874,9 +873,9 @@ func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { r.join.colAliases = strs(al.Colnames) } return r, nil - case *pg_query.Node_JsonTable: + case *pgparse.Node_JsonTable: return a.jsonTable(v.JsonTable, sc) - case *pg_query.Node_RangeTableSample: + case *pgparse.Node_RangeTableSample: ts := v.RangeTableSample r, err := a.fromItem(ts.Relation, sc) if err != nil { @@ -886,7 +885,7 @@ func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { return nil, errAt(codeFeatureNotSupported, loc(ts.Relation), "TABLESAMPLE clause can only be applied to tables and materialized views") } // the built-in methods take a real (percentage / limit); REPEATABLE takes a double - for i, arg := range append(append([]*pg_query.Node{}, ts.Args...), ts.Repeatable) { + for i, arg := range append(append([]*pgparse.Node{}, ts.Args...), ts.Repeatable) { if arg == nil { continue } @@ -911,20 +910,20 @@ func (a *analyzer) fromItem(n *pg_query.Node, sc *scope) (*rte, *Error) { return nil, errAt(codeFeatureNotSupported, -1, "unsupported FROM item %T", n.Node) } -func qualName(rv *pg_query.RangeVar) string { +func qualName(rv *pgparse.RangeVar) string { if rv.Schemaname != "" { return rv.Schemaname + "." + rv.Relname } return rv.Relname } -func (a *analyzer) rangeFunction(rf *pg_query.RangeFunction, sc *scope) (*rte, *Error) { +func (a *analyzer) rangeFunction(rf *pgparse.RangeFunction, sc *scope) (*rte, *Error) { if len(rf.Functions) > 1 { // ROWS FROM (f1(), f2() AS (...)): the functions run in lockstep, columns side by side r := &rte{alias: "rows_from"} for _, fn := range rf.Functions { items := fn.GetList().GetItems() - one := &pg_query.RangeFunction{Functions: []*pg_query.Node{fn}, Ordinality: false} + one := &pgparse.RangeFunction{Functions: []*pgparse.Node{fn}, Ordinality: false} if len(items) > 1 { one.Coldeflist = items[1].GetList().GetItems() // per-function column definition list } @@ -957,10 +956,10 @@ func (a *analyzer) rangeFunction(rf *pg_query.RangeFunction, sc *scope) (*rte, * if fc != nil && len(fc.Args) > 1 && len(rf.Coldeflist) == 0 && (len(items) == 1 || len(items[1].GetList().GetItems()) == 0) { if names := strs(fc.Funcname); names[len(names)-1] == "unnest" && (len(names) == 1 || names[0] == "pg_catalog") { // unnest(a, b, ...) in FROM is shorthand for ROWS FROM (unnest(a), unnest(b), ...) - multi := &pg_query.RangeFunction{Alias: rf.Alias, Ordinality: rf.Ordinality, Lateral: rf.Lateral} + multi := &pgparse.RangeFunction{Alias: rf.Alias, Ordinality: rf.Ordinality, Lateral: rf.Lateral} for _, arg := range fc.Args { - one := &pg_query.FuncCall{Funcname: fc.Funcname, Args: []*pg_query.Node{arg}, Location: fc.Location} - multi.Functions = append(multi.Functions, &pg_query.Node{Node: &pg_query.Node_List{List: &pg_query.List{Items: []*pg_query.Node{{Node: &pg_query.Node_FuncCall{FuncCall: one}}}}}}) + one := &pgparse.FuncCall{Funcname: fc.Funcname, Args: []*pgparse.Node{arg}, Location: fc.Location} + multi.Functions = append(multi.Functions, &pgparse.Node{Node: &pgparse.Node_List{List: &pgparse.List{Items: []*pgparse.Node{{Node: &pgparse.Node_FuncCall{FuncCall: one}}}}}}) } return a.rangeFunction(multi, sc) } @@ -1069,7 +1068,7 @@ func (a *analyzer) rangeFunction(rf *pg_query.RangeFunction, sc *scope) (*rte, * } // applyColnames renames columns after an alias column list (AS t(a, b, c)). -func applyColnames(cols []rteCol, alias *pg_query.Alias) { +func applyColnames(cols []rteCol, alias *pgparse.Alias) { if alias == nil { return } @@ -1080,7 +1079,7 @@ func applyColnames(cols []rteCol, alias *pg_query.Alias) { } } -func (a *analyzer) joinExpr(j *pg_query.JoinExpr, sc *scope) (*rte, *Error) { +func (a *analyzer) joinExpr(j *pgparse.JoinExpr, sc *scope) (*rte, *Error) { left, err := a.fromItem(j.Larg, sc) if err != nil { return nil, err @@ -1090,7 +1089,7 @@ func (a *analyzer) joinExpr(j *pg_query.JoinExpr, sc *scope) (*rte, *Error) { inner := newScope(sc) inner.passthrough = true inner.items = []*rte{left} - lateralOK := j.Jointype == pg_query.JoinType_JOIN_INNER || j.Jointype == pg_query.JoinType_JOIN_LEFT + lateralOK := j.Jointype == pgparse.JoinType_JOIN_INNER || j.Jointype == pgparse.JoinType_JOIN_LEFT setNoLateral(left, !lateralOK) right, err := a.fromItem(j.Rarg, inner) setNoLateral(left, false) @@ -1102,11 +1101,11 @@ func (a *analyzer) joinExpr(j *pg_query.JoinExpr, sc *scope) (*rte, *Error) { } // outer-join nullability switch j.Jointype { - case pg_query.JoinType_JOIN_LEFT: + case pgparse.JoinType_JOIN_LEFT: markNullable(right) - case pg_query.JoinType_JOIN_RIGHT: + case pgparse.JoinType_JOIN_RIGHT: markNullable(left) - case pg_query.JoinType_JOIN_FULL: + case pgparse.JoinType_JOIN_FULL: markNullable(left) markNullable(right) } @@ -1144,10 +1143,10 @@ func (a *analyzer) joinExpr(j *pg_query.JoinExpr, sc *scope) (*rte, *Error) { } merged := lc[0] merged.nullable = lc[0].nullable && rc[0].nullable - if j.Jointype == pg_query.JoinType_JOIN_FULL { + if j.Jointype == pgparse.JoinType_JOIN_FULL { merged.src = nil } - if j.Jointype == pg_query.JoinType_JOIN_RIGHT { + if j.Jointype == pgparse.JoinType_JOIN_RIGHT { merged = rc[0] } if a.baseType(lc[0].typ.OID) != a.baseType(rc[0].typ.OID) { @@ -1201,7 +1200,7 @@ func markNullable(r *rte) { // --- DML ------------------------------------------------------------------- -func (a *analyzer) targetRTE(rv *pg_query.RangeVar, sc *scope) (*schema.Relation, *rte, *Error) { +func (a *analyzer) targetRTE(rv *pgparse.RangeVar, sc *scope) (*schema.Relation, *rte, *Error) { rel := a.s.Relation(rv.Schemaname, rv.Relname) if rel == nil { return nil, nil, errAt(codeUndefinedTable, rv.Location, "relation %q does not exist", qualName(rv)) @@ -1229,6 +1228,9 @@ func (a *analyzer) assign(e *expr, col *schema.Column, relName string, at int32) return err } if col.Generated != nil && (e.node == nil || e.node.GetSetToDefault() == nil) { + if len(a.writeRecs) > 0 && a.writeRecs[len(a.writeRecs)-1].cmd == "update" { + return errAt(codeGeneratedAlways, at, "column %q can only be updated to DEFAULT", col.Name) + } return errAt(codeGeneratedAlways, at, "cannot insert a non-DEFAULT value into column %q", col.Name) } if a.viewDefault[col] && (col.Generated != nil || col.Identity == 'a') && e.node != nil && e.node.GetSetToDefault() != nil { @@ -1247,7 +1249,7 @@ func (a *analyzer) assign(e *expr, col *schema.Column, relName string, at int32) return err } if c := e.node.GetAConst(); c != nil { - if sv, ok := c.Val.(*pg_query.A_Const_Sval); ok { + if sv, ok := c.Val.(*pgparse.A_Const_Sval); ok { // PG applies the length coercion at execution, not at parse time, so this // never fails Prepare; it fails every execution, which is a note. if err := a.validateAssignLength(sv.Sval.GetSval(), col.Type, c.Location); err != nil { @@ -1271,23 +1273,84 @@ func (a *analyzer) assign(e *expr, col *schema.Column, relName string, at int32) return nil } -func (a *analyzer) returning(list []*pg_query.Node, sc *scope) ([]rteCol, *Error) { +// returning analyzes a RETURNING clause over sc, the scope of the rows the statement wrote. +// From PostgreSQL 18 the clause may refer to the row before and after the write as old and +// new (or as the aliases of RETURNING WITH (OLD AS o, NEW AS n)); oldAbsent / newAbsent say +// which of the two does not exist for some of the rows (old in an INSERT, new in a DELETE), +// making its columns and its whole row nullable. +func (a *analyzer) returning(rc *pgparse.ReturningClause, sc *scope, target *rte, oldAbsent, newAbsent bool) ([]rteCol, *Error) { + list := rc.GetExprs() if len(list) == 0 { return nil, nil } + if target != nil && a.s.Version.Or() >= pgparse.PG18 { + oldName, newName := "old", "new" + var oldLoc, newLoc int32 + explicitOld, explicitNew := false, false + for _, on := range rc.GetOptions() { + o := on.GetReturningOption() + switch o.GetOption() { + case pgparse.ReturningOptionKind_RETURNING_OPTION_OLD: + if explicitOld { + return nil, errAt(codeSyntaxError, o.Location, "OLD cannot be specified multiple times") + } + oldName, oldLoc, explicitOld = o.Value, o.Location, true + case pgparse.ReturningOptionKind_RETURNING_OPTION_NEW: + if explicitNew { + return nil, errAt(codeSyntaxError, o.Location, "NEW cannot be specified multiple times") + } + newName, newLoc, explicitNew = o.Value, o.Location, true + } + } + if explicitOld && explicitNew && oldName == newName { + return nil, errAt(codeDuplicateAlias, newLoc, "table name %q specified more than once", newName) + } + for _, v := range []struct { + name string + loc int32 + explicit bool + absent bool + }{{oldName, oldLoc, explicitOld, oldAbsent}, {newName, newLoc, explicitNew, newAbsent}} { + // a FROM item of the same name: the default alias steps aside for it, an alias + // the clause chose conflicts with it + if r, _ := sc.wholeRow(v.name, v.loc); r != nil { + if v.explicit { + return nil, errAt(codeDuplicateAlias, v.loc, "table name %q specified more than once", v.name) + } + continue + } + row := &rte{alias: v.name, cols: append([]rteCol{}, target.cols...), rowType: target.rowType, rel: target.rel, rowNullable: v.absent} + if v.absent { + for i := range row.cols { + row.cols[i].nullable = true + if src := row.cols[i].src; src != nil { + nullSrc := *src + nullSrc.NotNull = false + row.cols[i].src = &nullSrc + } + } + } + sc.retVars = append(sc.retVars, row) + } + } for _, n := range list { if w := windowIn(n.GetResTarget().GetVal()); w != nil { return nil, errAt(codeWindowingError, w.Location, "window functions are not allowed in RETURNING") } } - sel := &pg_query.SelectStmt{TargetList: list} + sel := &pgparse.SelectStmt{TargetList: list} a.srfBanNext = "RETURNING" a.inReturning = true defer func() { a.inReturning = false }() - return a.selectStmt(sel, sc) + cols, err := a.selectStmt(sel, sc) + if err == nil && len(cols) == 0 { + // every item was a * over a zero-column table + return nil, errAt(codeSyntaxError, list[0].GetResTarget().GetLocation(), "RETURNING must have at least one column") + } + return cols, err } -func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) insertStmt(ins *pgparse.InsertStmt, sc *scope) ([]rteCol, *Error) { if ins.WithClause != nil { if err := a.withClause(ins.WithClause, sc); err != nil { return nil, err @@ -1301,7 +1364,7 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E if ins.OnConflictClause != nil && (orig.RuleEvents["insert"] || orig.RuleEvents["update"]) { return nil, errAt(codeFeatureNotSupported, -1, "INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules") } - if err := a.ruleRestrictions(orig, "insert", len(ins.ReturningList) > 0); err != nil { + if err := a.ruleRestrictions(orig, "insert", len(ins.GetReturningClause().GetExprs()) > 0); err != nil { return nil, err } if len(a.dmlCTEs) > 0 && orig.RuleInsertSelect["insert"] { @@ -1365,7 +1428,7 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E if sel.IntoClause != nil { return nil, errAt(codeSyntaxError, sel.IntoClause.Rel.GetLocation(), "SELECT ... INTO is not allowed here") } - if len(sel.ValuesLists) > 0 && sel.Op == pg_query.SetOperation_SETOP_NONE && len(sel.FromClause) == 0 { + if len(sel.ValuesLists) > 0 && sel.Op == pgparse.SetOperation_SETOP_NONE && len(sel.FromClause) == 0 { // VALUES: coerce each expression directly to its column (assignment context) for _, ln := range sel.ValuesLists { items := ln.GetList().GetItems() @@ -1376,7 +1439,7 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E return nil, errAt(codeSyntaxError, -1, "INSERT has more target columns than expressions") } for i, it := range items { - if cols[i].Identity == 'a' && it.GetSetToDefault() == nil && ins.Override == pg_query.OverridingKind_OVERRIDING_NOT_SET { + if cols[i].Identity == 'a' && it.GetSetToDefault() == nil && ins.Override == pgparse.OverridingKind_OVERRIDING_NOT_SET { return nil, errAt(codeGeneratedAlways, loc(it), "cannot insert a non-DEFAULT value into column %q", cols[i].Name) } if indirect[i] && it.GetSetToDefault() != nil { @@ -1403,7 +1466,7 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E return nil, errAt(codeSyntaxError, -1, "INSERT has more expressions than target columns") } for i := range src { - if cols[i].Identity == 'a' && ins.Override == pg_query.OverridingKind_OVERRIDING_NOT_SET { + if cols[i].Identity == 'a' && ins.Override == pgparse.OverridingKind_OVERRIDING_NOT_SET { return nil, errAt(codeGeneratedAlways, -1, "cannot insert a non-DEFAULT value into column %q", cols[i].Name) } } @@ -1437,7 +1500,7 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E return nil, err } } - if oc.Action == pg_query.OnConflictAction_ONCONFLICT_UPDATE { + if oc.Action == pgparse.OnConflictAction_ONCONFLICT_UPDATE { if oc.Infer == nil { return nil, errAt(codeSyntaxError, oc.Location, "ON CONFLICT DO UPDATE requires inference specification or constraint name") } @@ -1459,12 +1522,13 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E } } } - return a.returning(ins.ReturningList, inner) + // old is the row an ON CONFLICT DO UPDATE replaced, and NULL for a row that was inserted + return a.returning(ins.ReturningClause, inner, target, true, false) } -func (a *analyzer) setClause(targets []*pg_query.Node, rel *schema.Relation, sc *scope) *Error { +func (a *analyzer) setClause(targets []*pgparse.Node, rel *schema.Relation, sc *scope) *Error { // SET (a, b) = (x, y) / (SELECT ...): one source, analyzed once, one value per column - sources := map[*pg_query.Node][]*expr{} + sources := map[*pgparse.Node][]*expr{} assignedCols := map[string]bool{} var plain []*schema.Column for _, tn := range targets { @@ -1525,7 +1589,7 @@ func (a *analyzer) setClause(targets []*pg_query.Node, rel *schema.Relation, sc // multiAssignSource types the right-hand side of SET (a, b, ...) = source: a row of // expressions, or a subquery whose columns are taken as the values. -func (a *analyzer) multiAssignSource(src *pg_query.Node, n int, sc *scope) ([]*expr, *Error) { +func (a *analyzer) multiAssignSource(src *pgparse.Node, n int, sc *scope) ([]*expr, *Error) { if row := src.GetRowExpr(); row != nil { if len(row.Args) == 1 && row.Args[0].GetColumnRef() != nil && len(row.Args[0].GetColumnRef().Fields) > 0 && row.Args[0].GetColumnRef().Fields[len(row.Args[0].GetColumnRef().Fields)-1].GetAStar() != nil { @@ -1569,7 +1633,7 @@ func (a *analyzer) multiAssignSource(src *pg_query.Node, n int, sc *scope) ([]*e return nil, errAt(codeFeatureNotSupported, loc(src), "unsupported multi-column assignment source %T", src.Node) } -func (a *analyzer) updateStmt(upd *pg_query.UpdateStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) updateStmt(upd *pgparse.UpdateStmt, sc *scope) ([]rteCol, *Error) { if upd.WithClause != nil { if err := a.withClause(upd.WithClause, sc); err != nil { return nil, err @@ -1580,7 +1644,7 @@ func (a *analyzer) updateStmt(upd *pg_query.UpdateStmt, sc *scope) ([]rteCol, *E return nil, err } if orig := a.s.Relation(upd.Relation.Schemaname, upd.Relation.Relname); orig != nil { - if err := a.ruleRestrictions(orig, "update", len(upd.ReturningList) > 0); err != nil { + if err := a.ruleRestrictions(orig, "update", len(upd.GetReturningClause().GetExprs()) > 0); err != nil { return nil, err } } @@ -1610,10 +1674,10 @@ func (a *analyzer) updateStmt(upd *pg_query.UpdateStmt, sc *scope) ([]rteCol, *E return nil, err } a.recordFixed(sc, upd.WhereClause) - return a.returning(upd.ReturningList, sc) + return a.returning(upd.ReturningClause, sc, target, false, false) } -func (a *analyzer) deleteStmt(del *pg_query.DeleteStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) deleteStmt(del *pgparse.DeleteStmt, sc *scope) ([]rteCol, *Error) { if del.WithClause != nil { if err := a.withClause(del.WithClause, sc); err != nil { return nil, err @@ -1624,7 +1688,7 @@ func (a *analyzer) deleteStmt(del *pg_query.DeleteStmt, sc *scope) ([]rteCol, *E return nil, err } if orig := a.s.Relation(del.Relation.Schemaname, del.Relation.Relname); orig != nil { - if err := a.ruleRestrictions(orig, "delete", len(del.ReturningList) > 0); err != nil { + if err := a.ruleRestrictions(orig, "delete", len(del.GetReturningClause().GetExprs()) > 0); err != nil { return nil, err } } @@ -1647,18 +1711,18 @@ func (a *analyzer) deleteStmt(del *pg_query.DeleteStmt, sc *scope) ([]rteCol, *E return nil, err } a.recordFixed(sc, del.WhereClause) - return a.returning(del.ReturningList, sc) + return a.returning(del.ReturningClause, sc, target, false, true) } // figureColname implements PG's FigureColname for unaliased target entries. -func (a *analyzer) figureColname(n *pg_query.Node) string { +func (a *analyzer) figureColname(n *pgparse.Node) string { if name := a.figureColnameInternal(n); name != "" { return name } return "?column?" } -func (a *analyzer) figureColnameInternal(n *pg_query.Node) string { +func (a *analyzer) figureColnameInternal(n *pgparse.Node) string { name, _ := a.figureColnameStrength(n) return name } @@ -1666,16 +1730,16 @@ func (a *analyzer) figureColnameInternal(n *pg_query.Node) string { // figureColnameStrength is FigureColnameInternal: the name and how strongly the node // claims it (2 a real name, 1 a fallback such as a cast's type name, 0 none). A cast // only names the column when what it casts has no strong name of its own. -func (a *analyzer) figureColnameStrength(n *pg_query.Node) (string, int) { +func (a *analyzer) figureColnameStrength(n *pgparse.Node) (string, int) { switch v := n.Node.(type) { - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: f := v.ColumnRef.Fields for i := len(f) - 1; i >= 0; i-- { if s := f[i].GetString_(); s != nil { return s.Sval, 2 } } - case *pg_query.Node_AIndirection: + case *pgparse.Node_AIndirection: ind := v.AIndirection.Indirection for i := len(ind) - 1; i >= 0; i-- { if s := ind[i].GetString_(); s != nil { @@ -1686,10 +1750,10 @@ func (a *analyzer) figureColnameStrength(n *pg_query.Node) (string, int) { } } return a.figureColnameStrength(v.AIndirection.Arg) - case *pg_query.Node_FuncCall: + case *pgparse.Node_FuncCall: names := strs(v.FuncCall.Funcname) return names[len(names)-1], 2 - case *pg_query.Node_TypeCast: + case *pgparse.Node_TypeCast: inner, strength := a.figureColnameStrength(v.TypeCast.Arg) if strength > 1 { return inner, strength @@ -1699,32 +1763,32 @@ func (a *analyzer) figureColnameStrength(n *pg_query.Node) (string, int) { return names[len(names)-1], 1 } return inner, strength - case *pg_query.Node_CollateClause: + case *pgparse.Node_CollateClause: return a.figureColnameStrength(v.CollateClause.Arg) - case *pg_query.Node_CaseExpr: + case *pgparse.Node_CaseExpr: if v.CaseExpr.Defresult != nil { if inner, strength := a.figureColnameStrength(v.CaseExpr.Defresult); strength > 0 { return inner, strength } } return "case", 1 - case *pg_query.Node_AArrayExpr: + case *pgparse.Node_AArrayExpr: return "array", 2 - case *pg_query.Node_RowExpr: + case *pgparse.Node_RowExpr: return "row", 2 - case *pg_query.Node_AExpr: - if v.AExpr.Kind == pg_query.A_Expr_Kind_AEXPR_NULLIF { + case *pgparse.Node_AExpr: + if v.AExpr.Kind == pgparse.A_Expr_Kind_AEXPR_NULLIF { return "nullif", 2 } - case *pg_query.Node_SubLink: + case *pgparse.Node_SubLink: switch v.SubLink.SubLinkType { - case pg_query.SubLinkType_EXISTS_SUBLINK: + case pgparse.SubLinkType_EXISTS_SUBLINK: return "exists", 2 - case pg_query.SubLinkType_ARRAY_SUBLINK: + case pgparse.SubLinkType_ARRAY_SUBLINK: return "array", 2 - case pg_query.SubLinkType_EXPR_SUBLINK: + case pgparse.SubLinkType_EXPR_SUBLINK: sel := v.SubLink.Subselect.GetSelectStmt() - for sel != nil && sel.Op != pg_query.SetOperation_SETOP_NONE { + for sel != nil && sel.Op != pgparse.SetOperation_SETOP_NONE { sel = sel.Larg // a set operation is named by its left arm } if sel != nil && len(sel.ValuesLists) > 0 { @@ -1738,64 +1802,64 @@ func (a *analyzer) figureColnameStrength(n *pg_query.Node) (string, int) { return a.figureColnameStrength(t.Val) } } - case *pg_query.Node_SqlvalueFunction: + case *pgparse.Node_SqlvalueFunction: s := strings.ToLower(strings.TrimPrefix(v.SqlvalueFunction.Op.String(), "SVFOP_")) return strings.TrimSuffix(s, "_n"), 2 - case *pg_query.Node_GroupingFunc: + case *pgparse.Node_GroupingFunc: return "grouping", 2 - case *pg_query.Node_NamedArgExpr: + case *pgparse.Node_NamedArgExpr: return a.figureColnameStrength(v.NamedArgExpr.Arg) - case *pg_query.Node_CoalesceExpr: + case *pgparse.Node_CoalesceExpr: return "coalesce", 2 - case *pg_query.Node_MinMaxExpr: - if v.MinMaxExpr.Op == pg_query.MinMaxOp_IS_LEAST { + case *pgparse.Node_MinMaxExpr: + if v.MinMaxExpr.Op == pgparse.MinMaxOp_IS_LEAST { return "least", 2 } return "greatest", 2 - case *pg_query.Node_MergeSupportFunc: + case *pgparse.Node_MergeSupportFunc: return "merge_action", 2 - case *pg_query.Node_XmlExpr: + case *pgparse.Node_XmlExpr: switch v.XmlExpr.Op { - case pg_query.XmlExprOp_IS_XMLCONCAT: + case pgparse.XmlExprOp_IS_XMLCONCAT: return "xmlconcat", 2 - case pg_query.XmlExprOp_IS_XMLELEMENT: + case pgparse.XmlExprOp_IS_XMLELEMENT: return "xmlelement", 2 - case pg_query.XmlExprOp_IS_XMLFOREST: + case pgparse.XmlExprOp_IS_XMLFOREST: return "xmlforest", 2 - case pg_query.XmlExprOp_IS_XMLPARSE: + case pgparse.XmlExprOp_IS_XMLPARSE: return "xmlparse", 2 - case pg_query.XmlExprOp_IS_XMLPI: + case pgparse.XmlExprOp_IS_XMLPI: return "xmlpi", 2 - case pg_query.XmlExprOp_IS_XMLROOT: + case pgparse.XmlExprOp_IS_XMLROOT: return "xmlroot", 2 - case pg_query.XmlExprOp_IS_XMLSERIALIZE: + case pgparse.XmlExprOp_IS_XMLSERIALIZE: return "xmlserialize", 2 - case pg_query.XmlExprOp_IS_DOCUMENT: + case pgparse.XmlExprOp_IS_DOCUMENT: return "", 0 // ?column? } - case *pg_query.Node_XmlSerialize: + case *pgparse.Node_XmlSerialize: return "xmlserialize", 2 - case *pg_query.Node_JsonParseExpr: + case *pgparse.Node_JsonParseExpr: return "json", 2 - case *pg_query.Node_JsonScalarExpr: + case *pgparse.Node_JsonScalarExpr: return "json_scalar", 2 - case *pg_query.Node_JsonSerializeExpr: + case *pgparse.Node_JsonSerializeExpr: return "json_serialize", 2 - case *pg_query.Node_JsonObjectConstructor: + case *pgparse.Node_JsonObjectConstructor: return "json_object", 2 - case *pg_query.Node_JsonArrayConstructor, *pg_query.Node_JsonArrayQueryConstructor: + case *pgparse.Node_JsonArrayConstructor, *pgparse.Node_JsonArrayQueryConstructor: return "json_array", 2 - case *pg_query.Node_JsonObjectAgg: + case *pgparse.Node_JsonObjectAgg: return "json_objectagg", 2 - case *pg_query.Node_JsonArrayAgg: + case *pgparse.Node_JsonArrayAgg: return "json_arrayagg", 2 - case *pg_query.Node_JsonFuncExpr: + case *pgparse.Node_JsonFuncExpr: switch v.JsonFuncExpr.Op { - case pg_query.JsonExprOp_JSON_EXISTS_OP: + case pgparse.JsonExprOp_JSON_EXISTS_OP: return "json_exists", 2 - case pg_query.JsonExprOp_JSON_QUERY_OP: + case pgparse.JsonExprOp_JSON_QUERY_OP: return "json_query", 2 - case pg_query.JsonExprOp_JSON_VALUE_OP: + case pgparse.JsonExprOp_JSON_VALUE_OP: return "json_value", 2 } } @@ -1804,7 +1868,7 @@ func (a *analyzer) figureColnameStrength(n *pg_query.Node) (string, int) { // noteEnumSort flags ORDER BY on an enum: it sorts by declaration order, which surprises // readers expecting the labels' alphabetical order (advisory). -func (a *analyzer) noteEnumSort(n *pg_query.Node, sc *scope, cols []rteCol) { +func (a *analyzer) noteEnumSort(n *pgparse.Node, sc *scope, cols []rteCol) { var typ schema.TypeRef if cr := n.GetColumnRef(); cr != nil && len(cr.Fields) == 1 { name := cr.Fields[0].GetString_().GetSval() @@ -1832,7 +1896,7 @@ func (a *analyzer) noteEnumSort(n *pg_query.Node, sc *scope, cols []rteCol) { // callStmt analyzes CALL procedure(args): the arguments bind like a function call and // the OUT / INOUT parameters come back as one result row. -func (a *analyzer) callStmt(call *pg_query.CallStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) callStmt(call *pgparse.CallStmt, sc *scope) ([]rteCol, *Error) { a.inCall = true e, err := a.funcCall(call.Funccall, sc) a.inCall = false @@ -1857,7 +1921,7 @@ func (a *analyzer) callStmt(call *pg_query.CallStmt, sc *scope) ([]rteCol, *Erro // mergeStmt analyzes MERGE INTO target USING source ON cond WHEN ... (PG 15; RETURNING and // WHEN NOT MATCHED BY SOURCE are PG 17). A WHEN MATCHED / NOT MATCHED BY SOURCE action // sees both relations, a WHEN NOT MATCHED [BY TARGET] action sees the source only. -func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error) { +func (a *analyzer) mergeStmt(m *pgparse.MergeStmt, sc *scope) ([]rteCol, *Error) { if m.WithClause != nil { if m.WithClause.Recursive { return nil, errAt(codeSyntaxError, -1, "WITH RECURSIVE is not supported for MERGE statement") @@ -1868,7 +1932,7 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error } writes := false for _, wn := range m.MergeWhenClauses { - if wn.GetMergeWhenClause().CommandType != pg_query.CmdType_CMD_NOTHING { + if wn.GetMergeWhenClause().CommandType != pgparse.CmdType_CMD_NOTHING { writes = true } } @@ -1880,7 +1944,7 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error var actions []string seen := map[string]bool{} for _, wn := range m.MergeWhenClauses { - cmd := map[pg_query.CmdType]string{pg_query.CmdType_CMD_INSERT: "insert into", pg_query.CmdType_CMD_UPDATE: "update", pg_query.CmdType_CMD_DELETE: "delete from"}[wn.GetMergeWhenClause().CommandType] + cmd := map[pgparse.CmdType]string{pgparse.CmdType_CMD_INSERT: "insert into", pgparse.CmdType_CMD_UPDATE: "update", pgparse.CmdType_CMD_DELETE: "delete from"}[wn.GetMergeWhenClause().CommandType] if cmd != "" && !seen[cmd] { seen[cmd] = true actions = append(actions, cmd) @@ -1917,7 +1981,7 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error } a.inMerge = true defer func() { a.inMerge = false }() - unconditional := map[pg_query.MergeMatchKind]bool{} + unconditional := map[pgparse.MergeMatchKind]bool{} for _, wn := range m.MergeWhenClauses { w := wn.GetMergeWhenClause() if unconditional[w.MatchKind] { @@ -1928,9 +1992,9 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error } wsc := both switch w.MatchKind { - case pg_query.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET: + case pgparse.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET: wsc = srcOnly - case pg_query.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_SOURCE: + case pgparse.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_SOURCE: wsc = tgtOnly } a.mergeWhen = true @@ -1939,27 +2003,27 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error if err != nil { return nil, err } - if cmd := map[pg_query.CmdType]string{pg_query.CmdType_CMD_INSERT: "insert into", pg_query.CmdType_CMD_UPDATE: "update", pg_query.CmdType_CMD_DELETE: "delete from"}[w.CommandType]; cmd != "" { + if cmd := map[pgparse.CmdType]string{pgparse.CmdType_CMD_INSERT: "insert into", pgparse.CmdType_CMD_UPDATE: "update", pgparse.CmdType_CMD_DELETE: "delete from"}[w.CommandType]; cmd != "" { // each branch is a write of its own kind (facts: an obligation `on update` sees // the UPDATE branch and not an INSERT-only MERGE) a.writeRecs = append(a.writeRecs, writeRec{rel: rel, r: target, cmd: cmd, inWith: a.inDMLCTE}) } switch w.CommandType { - case pg_query.CmdType_CMD_UPDATE: - if w.MatchKind == pg_query.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET { + case pgparse.CmdType_CMD_UPDATE: + if w.MatchKind == pgparse.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET { return nil, errAt(codeSyntaxError, -1, "UPDATE is not allowed in WHEN NOT MATCHED clause") } if err := a.setClause(w.TargetList, rel, wsc); err != nil { return nil, err } a.mergeActions |= mergeUpdate - case pg_query.CmdType_CMD_DELETE: - if w.MatchKind == pg_query.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET { + case pgparse.CmdType_CMD_DELETE: + if w.MatchKind == pgparse.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET { return nil, errAt(codeSyntaxError, -1, "DELETE is not allowed in WHEN NOT MATCHED clause") } a.mergeActions |= mergeDelete - case pg_query.CmdType_CMD_INSERT: - if w.MatchKind != pg_query.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET { + case pgparse.CmdType_CMD_INSERT: + if w.MatchKind != pgparse.MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET { return nil, errAt(codeSyntaxError, -1, "INSERT is not allowed in WHEN MATCHED clause") } var cols []*schema.Column @@ -1991,7 +2055,7 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error return nil, errAt(codeSyntaxError, -1, "INSERT has more target columns than expressions") } for i, vn := range w.Values { - if cols[i].Identity == 'a' && vn.GetSetToDefault() == nil && w.Override == pg_query.OverridingKind_OVERRIDING_NOT_SET { + if cols[i].Identity == 'a' && vn.GetSetToDefault() == nil && w.Override == pgparse.OverridingKind_OVERRIDING_NOT_SET { return nil, errAt(codeGeneratedAlways, -1, "cannot insert a non-DEFAULT value into column %q", cols[i].Name) } e, err := a.analyzeExpr(vn, srcOnly) @@ -2003,12 +2067,12 @@ func (a *analyzer) mergeStmt(m *pg_query.MergeStmt, sc *scope) ([]rteCol, *Error } } a.mergeActions |= mergeInsert - case pg_query.CmdType_CMD_NOTHING: + case pgparse.CmdType_CMD_NOTHING: } } ret := newScope(sc) ret.items = []*rte{source, target} // RETURNING * expands the source first (transformMergeStmt's rtable order) - return a.returning(m.ReturningList, ret) + return a.returning(m.ReturningClause, ret, target, a.mergeActions&mergeInsert != 0, a.mergeActions&mergeDelete != 0) } const ( @@ -2018,8 +2082,8 @@ const ( ) // expandCompositeStar expands (expr).* in a target list to the columns of expr's row type. -func (a *analyzer) expandCompositeStar(ind *pg_query.A_Indirection, sc *scope) ([]rteCol, *Error) { - inner := &pg_query.A_Indirection{Arg: ind.Arg, Indirection: ind.Indirection[:len(ind.Indirection)-1]} +func (a *analyzer) expandCompositeStar(ind *pgparse.A_Indirection, sc *scope) ([]rteCol, *Error) { + inner := &pgparse.A_Indirection{Arg: ind.Arg, Indirection: ind.Indirection[:len(ind.Indirection)-1]} var e *expr var err *Error if len(inner.Indirection) == 0 { @@ -2085,7 +2149,7 @@ func (a *analyzer) singleOutName() string { // aggregateIn returns an aggregate call directly in the expression (not inside a // subquery), or nil. -func (a *analyzer) aggregateIn(n *pg_query.Node) *pg_query.FuncCall { +func (a *analyzer) aggregateIn(n *pgparse.Node) *pgparse.FuncCall { if n == nil || n.GetSubLink() != nil { return nil } @@ -2102,13 +2166,13 @@ func (a *analyzer) aggregateIn(n *pg_query.Node) *pg_query.FuncCall { // xmlTable is XMLTABLE(... PASSING doc COLUMNS ...) in FROM: the declared columns (FOR // ORDINALITY is integer), or one xml column when none are declared. -func (a *analyzer) xmlTable(x *pg_query.RangeTableFunc, sc *scope) (*rte, *Error) { +func (a *analyzer) xmlTable(x *pgparse.RangeTableFunc, sc *scope) (*rte, *Error) { inner := sc if x.Lateral { inner = newScope(sc) inner.items = sc.items } - for _, n := range append([]*pg_query.Node{x.Docexpr, x.Rowexpr}, x.Namespaces...) { + for _, n := range append([]*pgparse.Node{x.Docexpr, x.Rowexpr}, x.Namespaces...) { if n == nil { continue } @@ -2134,7 +2198,7 @@ func (a *analyzer) xmlTable(x *pg_query.RangeTableFunc, sc *scope) (*rte, *Error if err != nil { return nil, errAt(codeUndefinedObject, c.Location, "%v", err) } - for _, n := range []*pg_query.Node{c.Colexpr, c.Coldefexpr} { + for _, n := range []*pgparse.Node{c.Colexpr, c.Coldefexpr} { if n == nil { continue } @@ -2166,12 +2230,12 @@ func (a *analyzer) xmlTable(x *pg_query.RangeTableFunc, sc *scope) (*rte, *Error // indirectTarget is the column an INSERT / UPDATE target with subscripts or field // selection (f2[1], f3.if1, f4[1].if2[2]) assigns: a copy of the column typed as that // element or field. -func (a *analyzer) indirectTarget(col *schema.Column, ind []*pg_query.Node, at int32) (*schema.Column, *Error) { +func (a *analyzer) indirectTarget(col *schema.Column, ind []*pgparse.Node, at int32) (*schema.Column, *Error) { cur := a.baseType(col.Type.OID) for i := 0; i < len(ind); i++ { n := ind[i] switch v := n.Node.(type) { - case *pg_query.Node_AIndices: + case *pgparse.Node_AIndices: if cur == catalog.JSONB { continue // jsonb subscripting assigns a jsonb value at the path } @@ -2190,7 +2254,7 @@ func (a *analyzer) indirectTarget(col *schema.Column, ind []*pg_query.Node, at i if !slice { cur = a.baseType(t.Elem) } - case *pg_query.Node_String_: + case *pgparse.Node_String_: t := a.typ(cur) if t == nil || t.Kind != 'c' { return nil, errAt(codeDatatypeMismatch, at, "column notation .%s applied to type %s, which is not a composite type", v.String_.Sval, a.s.Types.Format(ref(cur))) @@ -2247,7 +2311,7 @@ func (a *analyzer) outParamCols() []rteCol { // windowIn returns a window function call directly in the expression (not inside a // subquery), or nil. -func windowIn(n *pg_query.Node) *pg_query.FuncCall { +func windowIn(n *pgparse.Node) *pgparse.FuncCall { if n == nil || n.GetSubLink() != nil { return nil } @@ -2265,7 +2329,7 @@ func windowIn(n *pg_query.Node) *pg_query.FuncCall { // outerLevelAggregate reports whether an aggregate in a subquery belongs to an enclosing // query: none of its column references resolve at this level (they are all outer // references), so it is that query's aggregate and allowed here. -func (a *analyzer) outerLevelAggregate(f *pg_query.FuncCall, sc *scope) bool { +func (a *analyzer) outerLevelAggregate(f *pgparse.FuncCall, sc *scope) bool { if sc.parent == nil { return false } @@ -2273,7 +2337,7 @@ func (a *analyzer) outerLevelAggregate(f *pg_query.FuncCall, sc *scope) bool { sawRef := false here := &scope{items: sc.items, ctes: sc.ctes} for _, arg := range f.Args { - schema.WalkNodes(arg, func(n *pg_query.Node) { + schema.WalkNodes(arg, func(n *pgparse.Node) { if cr := n.GetColumnRef(); cr != nil { sawRef = true if _, err := a.columnRef(cr, here); err == nil { @@ -2304,7 +2368,7 @@ func (a *analyzer) checkDuplicateBase(cols []*schema.Column) *Error { // checkCycleTypes is the CYCLE clause's typing: the mark value and default share a type, // which must have an equality operator. -func (a *analyzer) checkCycleTypes(cy *pg_query.CTECycleClause, sc *scope) *Error { +func (a *analyzer) checkCycleTypes(cy *pgparse.CTECycleClause, sc *scope) *Error { mark := ref(catalog.Bool) if cy.CycleMarkValue != nil { me, err := a.analyzeExpr(cy.CycleMarkValue, newScope(sc)) @@ -2333,7 +2397,7 @@ func (a *analyzer) checkCycleTypes(cy *pg_query.CTECycleClause, sc *scope) *Erro } // checkCTEColumnList is the WITH column list arity check. -func (a *analyzer) checkCTEColumnList(c *pg_query.CommonTableExpr, cols []rteCol) *Error { +func (a *analyzer) checkCTEColumnList(c *pgparse.CommonTableExpr, cols []rteCol) *Error { if len(c.Aliascolnames) > len(cols) { return errAt(codeInvalidColumnRef, c.Location, "WITH query %q has %d columns available but %d columns specified", c.Ctename, len(cols), len(c.Aliascolnames)) } @@ -2341,28 +2405,28 @@ func (a *analyzer) checkCTEColumnList(c *pg_query.CommonTableExpr, cols []rteCol } // hasReturning is whether a data-modifying statement has a RETURNING list. -func hasReturning(n *pg_query.Node) bool { +func hasReturning(n *pgparse.Node) bool { switch v := n.Node.(type) { - case *pg_query.Node_InsertStmt: - return len(v.InsertStmt.ReturningList) > 0 - case *pg_query.Node_UpdateStmt: - return len(v.UpdateStmt.ReturningList) > 0 - case *pg_query.Node_DeleteStmt: - return len(v.DeleteStmt.ReturningList) > 0 - case *pg_query.Node_MergeStmt: - return len(v.MergeStmt.ReturningList) > 0 + case *pgparse.Node_InsertStmt: + return len(v.InsertStmt.GetReturningClause().GetExprs()) > 0 + case *pgparse.Node_UpdateStmt: + return len(v.UpdateStmt.GetReturningClause().GetExprs()) > 0 + case *pgparse.Node_DeleteStmt: + return len(v.DeleteStmt.GetReturningClause().GetExprs()) > 0 + case *pgparse.Node_MergeStmt: + return len(v.MergeStmt.GetReturningClause().GetExprs()) > 0 } return true } // lockStrength spells a locking clause the way PG's messages do. -func lockStrength(lc *pg_query.Node) string { +func lockStrength(lc *pgparse.Node) string { switch lc.GetLockingClause().GetStrength() { - case pg_query.LockClauseStrength_LCS_FORKEYSHARE: + case pgparse.LockClauseStrength_LCS_FORKEYSHARE: return "FOR KEY SHARE" - case pg_query.LockClauseStrength_LCS_FORSHARE: + case pgparse.LockClauseStrength_LCS_FORSHARE: return "FOR SHARE" - case pg_query.LockClauseStrength_LCS_FORNOKEYUPDATE: + case pgparse.LockClauseStrength_LCS_FORNOKEYUPDATE: return "FOR NO KEY UPDATE" } return "FOR UPDATE" @@ -2370,7 +2434,7 @@ func lockStrength(lc *pg_query.Node) string { // checkLocking applies the FOR UPDATE / SHARE restrictions of a plain SELECT // (CheckSelectLocking) and resolves the locked relation names against the FROM list. -func (a *analyzer) checkLocking(sel *pg_query.SelectStmt, sc *scope, cols []rteCol) *Error { +func (a *analyzer) checkLocking(sel *pgparse.SelectStmt, sc *scope, cols []rteCol) *Error { if len(sel.LockingClause) == 0 { return nil } @@ -2438,7 +2502,7 @@ func joinHasAlias(r *rte, name string) bool { } // windowInTargets / srfIn: syntactic presence checks on a target list / expression. -func windowInTargets(list []*pg_query.Node) bool { +func windowInTargets(list []*pgparse.Node) bool { for _, tn := range list { if windowIn(tn.GetResTarget().GetVal()) != nil { return true @@ -2449,7 +2513,7 @@ func windowInTargets(list []*pg_query.Node) bool { // srfIn is whether the expression syntactically calls a set-returning function (a // catalog function by name; user functions by their declaration). -func (a *analyzer) srfIn(n *pg_query.Node) bool { +func (a *analyzer) srfIn(n *pgparse.Node) bool { if n == nil { return false } @@ -2477,10 +2541,10 @@ func (a *analyzer) srfIn(n *pg_query.Node) bool { // positionalMatch is whether two ORDER BY / DISTINCT ON items name the same output // column, one by position or alias and the other by expression. -func positionalMatch(x, y *pg_query.Node, cols []rteCol) bool { - idx := func(n *pg_query.Node) int { +func positionalMatch(x, y *pgparse.Node, cols []rteCol) bool { + idx := func(n *pgparse.Node) int { if c := n.GetAConst(); c != nil { - if iv, ok := c.Val.(*pg_query.A_Const_Ival); ok { + if iv, ok := c.Val.(*pgparse.A_Const_Ival); ok { return int(iv.Ival.Ival) - 1 } } diff --git a/internal/analyze/testdata/regress_baseline.txt b/internal/analyze/testdata/regress_baseline_17.txt similarity index 100% rename from internal/analyze/testdata/regress_baseline.txt rename to internal/analyze/testdata/regress_baseline_17.txt diff --git a/internal/analyze/testdata/regress_baseline_18.txt b/internal/analyze/testdata/regress_baseline_18.txt new file mode 100644 index 0000000..4e7eee8 --- /dev/null +++ b/internal/analyze/testdata/regress_baseline_18.txt @@ -0,0 +1,33 @@ +# regress probe: the statements on which the analyzer and PostgreSQL knowingly disagree. +# test class key sha1(sql) first line. Rewrite with: go test ./internal/analyze -run TestRegress -regress-update +domain DIFF column type e89dc9ebcf60 -- check that domains inherit operations from base types +domain LENIENT 23514 1d019203dc12 -- fail +enum LENIENT 55P04 1f0366fc3704 SELECT 'new'::bogus +enum LENIENT 55P04 f831443bae5a SELECT 'bad'::bogon +generated_stored DIFF nullability 52f477f0865a MERGE INTO gtestm t USING (VALUES (1, 10), (2, 20)) v(id, f1) ON t.id = v.id +generated_virtual DIFF nullability 52f477f0865a MERGE INTO gtestm t USING (VALUES (1, 10), (2, 20)) v(id, f1) ON t.id = v.id +merge DIFF nullability 3f3fcfc3ff38 MERGE INTO sq_target t +regproc LENIENT 42704 855ab3d3e15a SELECT regrole('"Nonexistent"') +regproc LENIENT 42704 8c8130752d2d SELECT regrole('Nonexistent') +regproc LENIENT 42704 c50d8cbb5179 -- schemaname not applicable +regproc LENIENT 42704 e426b3fdaac8 SELECT regrole('"regress_regrole_test"') +returning DIFF column name f3943775b2bc DELETE FROM foo WHERE f1 = 4 RETURNING old.*,new.*, * +returning DIFF nullability 0b2d7d9d3fec INSERT INTO foo VALUES (4) +returning DIFF nullability 37b0e78c321b INSERT INTO zerocol SELECT +returning DIFF nullability 3b072f48e441 DELETE FROM zerocol +returning DIFF nullability 44cdad574c0c INSERT INTO foo_parted +returning DIFF nullability 802a6211314e DELETE FROM foo WHERE f1 = 5 +returning DIFF nullability b54e084ed076 INSERT INTO foo VALUES (4, 'conflict'), (5, 'ok') +returning DIFF nullability ed31044be9c8 DELETE FROM foo_parted +rowsecurity LENIENT 42501 2517fa9c6053 SELECT * FROM part_document ORDER by did +rowsecurity LENIENT 42501 cf7ff5fcb371 SELECT * FROM part_document_satire ORDER by did +rowsecurity LENIENT 42P17 73128756ed84 SELECT * FROM s1 WHERE f_leak(b) +rowsecurity LENIENT 42P17 73128756ed84 SELECT * FROM s1 WHERE f_leak(b) +rowsecurity LENIENT 42P17 95339b0463ed SELECT * FROM rec1 +rowsecurity LENIENT 42P17 95339b0463ed SELECT * FROM rec1 +rowsecurity LENIENT 42P17 95339b0463ed SELECT * FROM rec1 +rowsecurity LENIENT 42P17 95339b0463ed SELECT * FROM rec1 +rowsecurity LENIENT 42P17 a45dc166872a -- fail (infinite recursion) +stats_import STRICT 42P01 47102b2ef2b6 SELECT relname, relpages, reltuples, relallvisible, relallfrozen +tablesample LENIENT 42704 4d952dc0cc51 -- errors +temp STRICT 42P01 aecdb79a778f SELECT * FROM temptest diff --git a/internal/analyze/testdata/schema.sql b/internal/analyze/testdata/schema.sql index 8829ca7..25f62e5 100644 --- a/internal/analyze/testdata/schema.sql +++ b/internal/analyze/testdata/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TYPE order_status AS ENUM ('pending', 'paid', 'shipped', 'cancelled'); CREATE DOMAIN yen AS bigint CHECK (VALUE >= 0); CREATE DOMAIN email AS text NOT NULL CHECK (VALUE ~ '@'); diff --git a/internal/analyze/viewdml.go b/internal/analyze/viewdml.go index d7e730f..25cd9c5 100644 --- a/internal/analyze/viewdml.go +++ b/internal/analyze/viewdml.go @@ -3,9 +3,8 @@ package analyze import ( "fmt" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -18,7 +17,7 @@ import ( // write; anything else is PG's 55000. // writeTarget is targetRTE for a statement that writes rv. -func (a *analyzer) writeTarget(rv *pg_query.RangeVar, sc *scope, cmd string) (*schema.Relation, *rte, *Error) { +func (a *analyzer) writeTarget(rv *pgparse.RangeVar, sc *scope, cmd string) (*schema.Relation, *rte, *Error) { rel, r, err := a.targetRTE(rv, sc) if err != nil { return nil, nil, err @@ -210,8 +209,8 @@ func (a *analyzer) hasInsteadOfTrigger(rel *schema.Relation, cmd string) bool { // autoUpdatableBase returns the one base relation of an automatically updatable view // query, nil when the query is not auto-updatable. -func autoUpdatableBase(a *analyzer, sel *pg_query.SelectStmt) *pg_query.RangeVar { - if sel == nil || sel.Op != pg_query.SetOperation_SETOP_NONE || sel.WithClause != nil || +func autoUpdatableBase(a *analyzer, sel *pgparse.SelectStmt) *pgparse.RangeVar { + if sel == nil || sel.Op != pgparse.SetOperation_SETOP_NONE || sel.WithClause != nil || len(sel.DistinctClause) > 0 || len(sel.GroupClause) > 0 || sel.HavingClause != nil || len(sel.WindowClause) > 0 || sel.LimitCount != nil || sel.LimitOffset != nil || len(sel.ValuesLists) > 0 || len(sel.FromClause) != 1 { @@ -231,7 +230,7 @@ func autoUpdatableBase(a *analyzer, sel *pg_query.SelectStmt) *pg_query.RangeVar // hasAggOrSRF reports whether an expression contains an aggregate, a window function // or a set-returning function call. -func (a *analyzer) hasAggOrSRF(n *pg_query.Node) bool { +func (a *analyzer) hasAggOrSRF(n *pgparse.Node) bool { if n == nil { return false } diff --git a/internal/analyze/violation.go b/internal/analyze/violation.go index 6c17de5..57f33a8 100644 --- a/internal/analyze/violation.go +++ b/internal/analyze/violation.go @@ -3,8 +3,7 @@ package analyze import ( "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -68,25 +67,25 @@ type assignment struct { } // violations enumerates the constraints the analyzed statement may violate. -func (a *analyzer) violations(stmt *pg_query.Node) []Violation { +func (a *analyzer) violations(stmt *pgparse.Node) []Violation { switch st := stmt.Node.(type) { - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: rel := a.s.Relation(st.InsertStmt.Relation.Schemaname, st.InsertStmt.Relation.Relname) return append(a.insertViolations(st.InsertStmt), a.triggerViolations(rel, 'i', nil)...) - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: rel := a.s.Relation(st.UpdateStmt.Relation.Schemaname, st.UpdateStmt.Relation.Relname) return append(a.updateViolations(rel, a.assignedColumns(rel), nil), a.triggerViolations(rel, 'u', a.assignedColumns(rel))...) - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: rel := a.s.Relation(st.DeleteStmt.Relation.Schemaname, st.DeleteStmt.Relation.Relname) return append(a.referencingViolations(rel, nil, true), a.triggerViolations(rel, 'd', nil)...) - case *pg_query.Node_MergeStmt: + case *pgparse.Node_MergeStmt: // the union of what its actions may violate rel := a.s.Relation(st.MergeStmt.Relation.Schemaname, st.MergeStmt.Relation.Relname) var out []Violation if a.mergeActions&mergeInsert != 0 { - ins := &pg_query.InsertStmt{Relation: st.MergeStmt.Relation, SelectStmt: &pg_query.Node{}} + ins := &pgparse.InsertStmt{Relation: st.MergeStmt.Relation, SelectStmt: &pgparse.Node{}} for _, c := range a.mergeInserted { - ins.Cols = append(ins.Cols, &pg_query.Node{Node: &pg_query.Node_ResTarget{ResTarget: &pg_query.ResTarget{Name: c}}}) + ins.Cols = append(ins.Cols, &pgparse.Node{Node: &pgparse.Node_ResTarget{ResTarget: &pgparse.ResTarget{Name: c}}}) } out = append(out, a.insertViolations(ins)...) out = append(out, a.triggerViolations(rel, 'i', nil)...) @@ -136,7 +135,7 @@ func (a *analyzer) triggerViolations(rel *schema.Relation, event byte, assigned return dedupe(out) } -func (a *analyzer) insertViolations(ins *pg_query.InsertStmt) []Violation { +func (a *analyzer) insertViolations(ins *pgparse.InsertStmt) []Violation { rel := a.s.Relation(ins.Relation.Schemaname, ins.Relation.Relname) if rel == nil { return nil @@ -180,7 +179,7 @@ func (a *analyzer) insertViolations(ins *pg_query.InsertStmt) []Violation { } } } - if oc.Action == pg_query.OnConflictAction_ONCONFLICT_UPDATE { + if oc.Action == pgparse.OnConflictAction_ONCONFLICT_UPDATE { conflictSet = map[string]bool{} for _, tn := range oc.TargetList { conflictSet[tn.GetResTarget().GetName()] = true @@ -197,11 +196,11 @@ func (a *analyzer) insertViolations(ins *pg_query.InsertStmt) []Violation { out = append(out, Violation{Code: codeUniqueViolation, Constraint: con.Name, Table: rel.Name, Columns: con.Columns}) } case schema.ForeignKey: - if anyIn(con.Columns, inserted) { + if anyIn(con.Columns, inserted) && !con.NotEnforced { out = append(out, Violation{Code: codeForeignKeyViolation, Constraint: con.Name, Table: rel.Name, Columns: con.Columns, RefTable: con.RefTable}) } case schema.Check: - if anyIn(checkColumns(con), inserted) { + if anyIn(checkColumns(con), inserted) && !con.NotEnforced { out = append(out, Violation{Code: codeCheckViolation, Constraint: con.Name, Table: rel.Name, Columns: checkColumns(con)}) } case schema.Exclude: @@ -273,11 +272,11 @@ func (a *analyzer) updateViolations(rel *schema.Relation, set map[string]bool, s out = append(out, Violation{Code: codeUniqueViolation, Constraint: con.Name, Table: rel.Name, Columns: con.Columns}) } case schema.ForeignKey: - if anyIn(con.Columns, set) { + if anyIn(con.Columns, set) && !con.NotEnforced { out = append(out, Violation{Code: codeForeignKeyViolation, Constraint: con.Name, Table: rel.Name, Columns: con.Columns, RefTable: con.RefTable}) } case schema.Check: - if anyIn(checkColumns(con), set) { + if anyIn(checkColumns(con), set) && !con.NotEnforced { out = append(out, Violation{Code: codeCheckViolation, Constraint: con.Name, Table: rel.Name, Columns: checkColumns(con)}) } case schema.Exclude: @@ -347,7 +346,7 @@ func (a *analyzer) cascadingViolations(rel *schema.Relation, changed map[string] var out []Violation for _, other := range a.s.Relations { for _, con := range other.Constraints { - if con.Kind != schema.ForeignKey || a.relByFullName(con.RefTable) != rel { + if con.Kind != schema.ForeignKey || con.NotEnforced || a.relByFullName(con.RefTable) != rel { continue } action := con.OnUpdate diff --git a/internal/analyze/violation_test.go b/internal/analyze/violation_test.go index a6e21f2..d51822b 100644 --- a/internal/analyze/violation_test.go +++ b/internal/analyze/violation_test.go @@ -5,6 +5,8 @@ import ( "sort" "strings" "testing" + + "github.com/kr9ly/sqlshape/internal/schema" ) // TestViolations covers the failure-mode enumeration (violation.go) against testdata/schema.sql. @@ -147,3 +149,47 @@ func TestIdentityUpdate(t *testing.T) { } } } + +// TestNotEnforcedViolations: a NOT ENFORCED constraint (PostgreSQL 18) never raises, so +// it is not a failure mode of the statements that touch its columns; an enforced one +// beside it still is, and ALTER CONSTRAINT ... ENFORCED brings it back. +func TestNotEnforcedViolations(t *testing.T) { + const ddl = `-- sqlshape: postgres 18 +CREATE TABLE p (id int PRIMARY KEY); +CREATE TABLE t ( + id int PRIMARY KEY, + pid int CONSTRAINT t_fk REFERENCES p (id) NOT ENFORCED, + n int CONSTRAINT t_ck CHECK (n > 0) NOT ENFORCED, + m int CONSTRAINT t_ck2 CHECK (m > 0) +); +` + codes := func(t *testing.T, s *schema.Schema, sql string) string { + r, err := Analyze(s, sql) + if err != nil { + t.Fatal(err) + } + var got []string + for _, v := range r.Violations { + got = append(got, v.Code+" "+v.Key()) + } + sort.Strings(got) + return strings.Join(got, ", ") + } + s, err := Load(ddl) + if err != nil { + t.Fatal(err) + } + if got, want := codes(t, s, "INSERT INTO t (id, pid, n, m) VALUES ($1, $2, $3, $4)"), "23502 t.id, 23505 t_pkey, 23514 t_ck2"; got != want { + t.Errorf("insert: got %q, want %q", got, want) + } + if got, want := codes(t, s, "DELETE FROM p WHERE id = $1"), ""; got != want { + t.Errorf("delete of the referenced row: got %q, want %q", got, want) + } + s, err = Load(ddl + "ALTER TABLE t ALTER CONSTRAINT t_fk ENFORCED, ALTER CONSTRAINT t_ck ENFORCED;\n") + if err != nil { + t.Fatal(err) + } + if got, want := codes(t, s, "INSERT INTO t (id, pid, n, m) VALUES ($1, $2, $3, $4)"), "23502 t.id, 23503 t_fk, 23505 t_pkey, 23514 t_ck, 23514 t_ck2"; got != want { + t.Errorf("enforced again: got %q, want %q", got, want) + } +} diff --git a/internal/analyze/zz_pg18_probe_test.go b/internal/analyze/zz_pg18_probe_test.go new file mode 100644 index 0000000..6261a2a --- /dev/null +++ b/internal/analyze/zz_pg18_probe_test.go @@ -0,0 +1,55 @@ +package analyze + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +func TestZZPG18Probe(t *testing.T) { + const ddl = ` +CREATE DOMAIN d1 AS text COLLATE "C"; +CREATE DOMAIN d2 AS text COLLATE "POSIX"; +CREATE TABLE jsonpaths (jsonpaths jsonpath); +CREATE TABLE int4_tbl (f1 int); +CREATE TABLE foo (f1 int, f2 text); +CREATE RULE foo_del_rule AS ON DELETE TO foo DO INSTEAD UPDATE foo SET f2 = f2 || ' (deleted)' WHERE f1 = OLD.f1; +` + stmts := []string{ + `SELECT JSON_VALUE('{"a": "A"}', '$.a' RETURNING d1 DEFAULT 'C'::d2 ON EMPTY) = 'a'`, + `SELECT JSON_VALUE('{"a": "A"}', '$.a' RETURNING d1 DEFAULT 'C' COLLATE "C" ON EMPTY) = 'a'`, + `SELECT JSON_VALUE('{"a": "A"}', '$.a' RETURNING d1 DEFAULT 'C' ON EMPTY) = 'a'`, + `SELECT JSON_QUERY(jsonb '{"a": 123}', ('$' || '.' || 'a' || NULL)::date WITH WRAPPER)`, + `SELECT json_value('"aaa"', jsonpaths RETURNING json) FROM jsonpaths`, + `SELECT JSON_QUERY(jsonb '{"a": 123}', '$.a'::text)`, + `SELECT timestamp with time zone 'J2452271 T X03456-08'`, + `SELECT timestamp with time zone 'J2452271 T X03456.001e6-08'`, + `SELECT timestamp with time zone 'J2452271T04:05:06'`, + `select distinct on (a, b+1) a, b+1 from (values (1, 0), (2, 1)) as t (a, b) where a = b+1 group by grouping sets((a, b+1), (a)) order by a, b+1`, + `SELECT '""=r*/""'::aclitem`, + `SELECT '=r/postgres'::aclitem`, + `select f1, (with cte1(x,y) as (select 1,2) select count((select i4.f1 from cte1))) as ss from int4_tbl i4`, + `DELETE FROM foo WHERE f1 = 4 RETURNING old.*, new.*, *`, + `DELETE FROM foo WHERE f1 = 4 RETURNING *`, + } + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() + for _, v := range []pgparse.Version{pgparse.PG17, pgparse.PG18} { + o, err := oracle.StartVersion(ctx, v, ddl) + if err != nil { + t.Fatal(err) + } + for _, sql := range stmts { + out := renderOracle(ctx, o, sql) + if v == pgparse.PG18 { + // 18 statements RETURNING old/new only parse on 18 + } + fmt.Printf("[%d] %s\n %s", int(v), sql, out) + } + o.Close() + } +} diff --git a/internal/catalog/README.md b/internal/catalog/README.md index 26bc581..85887bf 100644 --- a/internal/catalog/README.md +++ b/internal/catalog/README.md @@ -20,7 +20,12 @@ OIDs into a per-extension range (`extBase`) so they never meet user objects; `Ty schema problem. Dumped so far: btree_gin, btree_gist, citext, cube, earthdistance, fuzzystrmatch, hstore, intarray, isn, ltree, pg_trgm, pgcrypto, seg, tablefunc, unaccent, uuid-ossp. -- Regenerate: `go run ./internal/catalog/gen` (boots the oracle PG, `COPY ... TO STDOUT`, writes `data/*.tsv` + `data/VERSION`); - `-ext ` (repeatable) dumps an extension, `-list` shows what the oracle binary ships -- Load: `catalog.Load()` parses once per process (~10 ms); lookups by OID / name / (source,target) pair +- One directory per PostgreSQL major version: `data//` holds `VERSION`, the bootstrap TSVs + and `ext/`. A schema's `-- sqlshape: postgres ` picks the directory (`catalog.Load(major)`). +- Regenerate: `go run ./internal/catalog/gen -pg 18` (boots the oracle PG of that major, + `COPY ... TO STDOUT`, writes `data/18/*.tsv` + `data/18/VERSION`); `-ext ` (repeatable) + dumps an extension, `-all-ext` every extension the default version has, `-list` shows what the + oracle binary ships +- Load: `catalog.Load(major)` parses once per process per version (~10 ms); lookups by OID / name / + (source,target) pair - Column order in the TSVs is the contract between `gen/main.go` and `catalog.go` diff --git a/internal/catalog/catalog.go b/internal/catalog/catalog.go index 0d33983..420296d 100644 --- a/internal/catalog/catalog.go +++ b/internal/catalog/catalog.go @@ -13,12 +13,16 @@ import ( "errors" "fmt" "io/fs" + "sort" "strconv" "strings" "sync" ) -//go:embed data/VERSION data/*.tsv data/ext +// data holds one directory per PostgreSQL major version: data//VERSION, the +// bootstrap TSVs, and data//ext// for each dumped extension. +// +//go:embed data var data embed.FS // OID is a PostgreSQL object identifier. @@ -37,6 +41,7 @@ const ( OIDType OID = 26 RegProc OID = 24 Tid OID = 27 + Aclitem OID = 1033 MacAddr8 OID = 774 Money OID = 790 RegProcedure OID = 2202 @@ -213,6 +218,9 @@ type Range struct { // Catalog is the loaded bootstrap catalog with lookup indexes. type Catalog struct { + // Major is the PostgreSQL major version the catalog was dumped from; Version the + // release ("17.5"). + Major int Version string // Extensions are the extensions merged in (WithExtensions), in load order. Extensions []*Extension @@ -239,15 +247,44 @@ type Catalog struct { } var ( - loadOnce sync.Once - loaded *Catalog - loadErr error + loadMu sync.Mutex + loaded = map[int]*loadedCatalog{} ) -// Load returns the embedded bootstrap catalog. Parsing happens once per process. -func Load() (*Catalog, error) { - loadOnce.Do(func() { loaded, loadErr = parse() }) - return loaded, loadErr +type loadedCatalog struct { + once sync.Once + c *Catalog + err error +} + +// Load returns the embedded bootstrap catalog of a PostgreSQL major version. Parsing +// happens once per process per version. +func Load(major int) (*Catalog, error) { + loadMu.Lock() + l := loaded[major] + if l == nil { + l = &loadedCatalog{} + loaded[major] = l + } + loadMu.Unlock() + l.once.Do(func() { l.c, l.err = parse(major) }) + return l.c, l.err +} + +// Majors lists the PostgreSQL major versions with an embedded catalog, ascending. +func Majors() []int { + entries, err := data.ReadDir("data") + if err != nil { + return nil + } + var out []int + for _, e := range entries { + if n, err := strconv.Atoi(e.Name()); err == nil && e.IsDir() { + out = append(out, n) + } + } + sort.Ints(out) + return out } // TypeByOID returns the type with the given oid, or nil. @@ -275,14 +312,16 @@ func (c *Catalog) CastBetween(source, target OID) *Cast { return c.castByPair[[2 // AggregateByFn returns the pg_aggregate row for an aggregate function oid, or nil. func (c *Catalog) AggregateByFn(fn OID) *Aggregate { return c.aggByFn[fn] } -func parse() (*Catalog, error) { +func parse(major int) (*Catalog, error) { c := newCatalog() - v, err := data.ReadFile("data/VERSION") + c.Major = major + dir := "data/" + strconv.Itoa(major) + v, err := data.ReadFile(dir + "/VERSION") if err != nil { - return nil, err + return nil, fmt.Errorf("catalog: no embedded catalog for PostgreSQL %d (run: go run ./internal/catalog/gen -pg %d)", major, major) } c.Version = strings.TrimSpace(string(v)) - if err := c.load("data", "", func(o OID) OID { return o }); err != nil { + if err := c.load(dir, "", func(o OID) OID { return o }); err != nil { return nil, err } c.index() diff --git a/internal/catalog/catalog_test.go b/internal/catalog/catalog_test.go index a154b93..647f11a 100644 --- a/internal/catalog/catalog_test.go +++ b/internal/catalog/catalog_test.go @@ -1,15 +1,36 @@ package catalog -import "testing" +import ( + "strconv" + "strings" + "testing" +) func TestLoad(t *testing.T) { - c, err := Load() + for _, major := range Majors() { + c, err := Load(major) + if err != nil { + t.Fatal(err) + } + if c.Major != major || !strings.HasPrefix(c.Version, strconv.Itoa(major)+".") { + t.Errorf("Load(%d): major %d, version %q", major, c.Major, c.Version) + } + if len(Available(major)) < 10 { + t.Errorf("PostgreSQL %d: %d extension dumps", major, len(Available(major))) + } + t.Logf("pg %s: %d types, %d funcs, %d operators, %d casts, %d aggregates", + c.Version, len(c.Types), len(c.Funcs), len(c.Operators), len(c.Casts), len(c.Aggregates)) + } + if got := Majors(); len(got) != 2 || got[0] != 17 || got[1] != 18 { + t.Errorf("Majors() = %v", got) + } + if _, err := Load(16); err == nil || !strings.Contains(err.Error(), "no embedded catalog") { + t.Errorf("Load(16): %v", err) + } + c, err := Load(17) if err != nil { t.Fatal(err) } - if c.Version == "" { - t.Error("empty version") - } t.Logf("pg %s: %d types, %d funcs, %d operators, %d casts, %d aggregates", c.Version, len(c.Types), len(c.Funcs), len(c.Operators), len(c.Casts), len(c.Aggregates)) @@ -81,7 +102,7 @@ func TestLoad(t *testing.T) { } func TestWithExtensions(t *testing.T) { - base, err := Load() + base, err := Load(17) if err != nil { t.Fatal(err) } @@ -121,7 +142,7 @@ func TestWithExtensions(t *testing.T) { if _, err := base.WithExtensions([]string{"nope"}); err == nil { t.Fatal("unknown extension must fail") } - if avail := Available(); len(avail) < 10 { + if avail := Available(17); len(avail) < 10 { t.Fatalf("Available: %v", avail) } } diff --git a/internal/catalog/data/VERSION b/internal/catalog/data/17/VERSION similarity index 100% rename from internal/catalog/data/VERSION rename to internal/catalog/data/17/VERSION diff --git a/internal/catalog/data/ext/btree_gin/META b/internal/catalog/data/17/ext/btree_gin/META similarity index 100% rename from internal/catalog/data/ext/btree_gin/META rename to internal/catalog/data/17/ext/btree_gin/META diff --git a/internal/catalog/data/ext/btree_gin/pg_aggregate.tsv b/internal/catalog/data/17/ext/btree_gin/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gin/pg_aggregate.tsv rename to internal/catalog/data/17/ext/btree_gin/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/btree_gin/pg_cast.tsv b/internal/catalog/data/17/ext/btree_gin/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gin/pg_cast.tsv rename to internal/catalog/data/17/ext/btree_gin/pg_cast.tsv diff --git a/internal/catalog/data/ext/btree_gin/pg_operator.tsv b/internal/catalog/data/17/ext/btree_gin/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gin/pg_operator.tsv rename to internal/catalog/data/17/ext/btree_gin/pg_operator.tsv diff --git a/internal/catalog/data/ext/btree_gin/pg_proc.tsv b/internal/catalog/data/17/ext/btree_gin/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gin/pg_proc.tsv rename to internal/catalog/data/17/ext/btree_gin/pg_proc.tsv diff --git a/internal/catalog/data/ext/btree_gin/pg_range.tsv b/internal/catalog/data/17/ext/btree_gin/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gin/pg_range.tsv rename to internal/catalog/data/17/ext/btree_gin/pg_range.tsv diff --git a/internal/catalog/data/ext/btree_gin/pg_type.tsv b/internal/catalog/data/17/ext/btree_gin/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gin/pg_type.tsv rename to internal/catalog/data/17/ext/btree_gin/pg_type.tsv diff --git a/internal/catalog/data/ext/btree_gist/META b/internal/catalog/data/17/ext/btree_gist/META similarity index 100% rename from internal/catalog/data/ext/btree_gist/META rename to internal/catalog/data/17/ext/btree_gist/META diff --git a/internal/catalog/data/ext/btree_gist/pg_aggregate.tsv b/internal/catalog/data/17/ext/btree_gist/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gist/pg_aggregate.tsv rename to internal/catalog/data/17/ext/btree_gist/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/btree_gist/pg_cast.tsv b/internal/catalog/data/17/ext/btree_gist/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gist/pg_cast.tsv rename to internal/catalog/data/17/ext/btree_gist/pg_cast.tsv diff --git a/internal/catalog/data/ext/btree_gist/pg_operator.tsv b/internal/catalog/data/17/ext/btree_gist/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gist/pg_operator.tsv rename to internal/catalog/data/17/ext/btree_gist/pg_operator.tsv diff --git a/internal/catalog/data/ext/btree_gist/pg_proc.tsv b/internal/catalog/data/17/ext/btree_gist/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gist/pg_proc.tsv rename to internal/catalog/data/17/ext/btree_gist/pg_proc.tsv diff --git a/internal/catalog/data/ext/btree_gist/pg_range.tsv b/internal/catalog/data/17/ext/btree_gist/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gist/pg_range.tsv rename to internal/catalog/data/17/ext/btree_gist/pg_range.tsv diff --git a/internal/catalog/data/ext/btree_gist/pg_type.tsv b/internal/catalog/data/17/ext/btree_gist/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/btree_gist/pg_type.tsv rename to internal/catalog/data/17/ext/btree_gist/pg_type.tsv diff --git a/internal/catalog/data/ext/citext/META b/internal/catalog/data/17/ext/citext/META similarity index 100% rename from internal/catalog/data/ext/citext/META rename to internal/catalog/data/17/ext/citext/META diff --git a/internal/catalog/data/ext/citext/pg_aggregate.tsv b/internal/catalog/data/17/ext/citext/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/citext/pg_aggregate.tsv rename to internal/catalog/data/17/ext/citext/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/citext/pg_cast.tsv b/internal/catalog/data/17/ext/citext/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/citext/pg_cast.tsv rename to internal/catalog/data/17/ext/citext/pg_cast.tsv diff --git a/internal/catalog/data/ext/citext/pg_operator.tsv b/internal/catalog/data/17/ext/citext/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/citext/pg_operator.tsv rename to internal/catalog/data/17/ext/citext/pg_operator.tsv diff --git a/internal/catalog/data/ext/citext/pg_proc.tsv b/internal/catalog/data/17/ext/citext/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/citext/pg_proc.tsv rename to internal/catalog/data/17/ext/citext/pg_proc.tsv diff --git a/internal/catalog/data/ext/citext/pg_range.tsv b/internal/catalog/data/17/ext/citext/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/citext/pg_range.tsv rename to internal/catalog/data/17/ext/citext/pg_range.tsv diff --git a/internal/catalog/data/ext/citext/pg_type.tsv b/internal/catalog/data/17/ext/citext/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/citext/pg_type.tsv rename to internal/catalog/data/17/ext/citext/pg_type.tsv diff --git a/internal/catalog/data/ext/cube/META b/internal/catalog/data/17/ext/cube/META similarity index 100% rename from internal/catalog/data/ext/cube/META rename to internal/catalog/data/17/ext/cube/META diff --git a/internal/catalog/data/ext/cube/pg_aggregate.tsv b/internal/catalog/data/17/ext/cube/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/cube/pg_aggregate.tsv rename to internal/catalog/data/17/ext/cube/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/cube/pg_cast.tsv b/internal/catalog/data/17/ext/cube/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/cube/pg_cast.tsv rename to internal/catalog/data/17/ext/cube/pg_cast.tsv diff --git a/internal/catalog/data/ext/cube/pg_operator.tsv b/internal/catalog/data/17/ext/cube/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/cube/pg_operator.tsv rename to internal/catalog/data/17/ext/cube/pg_operator.tsv diff --git a/internal/catalog/data/ext/cube/pg_proc.tsv b/internal/catalog/data/17/ext/cube/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/cube/pg_proc.tsv rename to internal/catalog/data/17/ext/cube/pg_proc.tsv diff --git a/internal/catalog/data/ext/cube/pg_range.tsv b/internal/catalog/data/17/ext/cube/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/cube/pg_range.tsv rename to internal/catalog/data/17/ext/cube/pg_range.tsv diff --git a/internal/catalog/data/ext/cube/pg_type.tsv b/internal/catalog/data/17/ext/cube/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/cube/pg_type.tsv rename to internal/catalog/data/17/ext/cube/pg_type.tsv diff --git a/internal/catalog/data/ext/earthdistance/META b/internal/catalog/data/17/ext/earthdistance/META similarity index 100% rename from internal/catalog/data/ext/earthdistance/META rename to internal/catalog/data/17/ext/earthdistance/META diff --git a/internal/catalog/data/ext/earthdistance/pg_aggregate.tsv b/internal/catalog/data/17/ext/earthdistance/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/earthdistance/pg_aggregate.tsv rename to internal/catalog/data/17/ext/earthdistance/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/earthdistance/pg_cast.tsv b/internal/catalog/data/17/ext/earthdistance/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/earthdistance/pg_cast.tsv rename to internal/catalog/data/17/ext/earthdistance/pg_cast.tsv diff --git a/internal/catalog/data/ext/earthdistance/pg_operator.tsv b/internal/catalog/data/17/ext/earthdistance/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/earthdistance/pg_operator.tsv rename to internal/catalog/data/17/ext/earthdistance/pg_operator.tsv diff --git a/internal/catalog/data/ext/earthdistance/pg_proc.tsv b/internal/catalog/data/17/ext/earthdistance/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/earthdistance/pg_proc.tsv rename to internal/catalog/data/17/ext/earthdistance/pg_proc.tsv diff --git a/internal/catalog/data/ext/earthdistance/pg_range.tsv b/internal/catalog/data/17/ext/earthdistance/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/earthdistance/pg_range.tsv rename to internal/catalog/data/17/ext/earthdistance/pg_range.tsv diff --git a/internal/catalog/data/ext/earthdistance/pg_type.tsv b/internal/catalog/data/17/ext/earthdistance/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/earthdistance/pg_type.tsv rename to internal/catalog/data/17/ext/earthdistance/pg_type.tsv diff --git a/internal/catalog/data/ext/fuzzystrmatch/META b/internal/catalog/data/17/ext/fuzzystrmatch/META similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/META rename to internal/catalog/data/17/ext/fuzzystrmatch/META diff --git a/internal/catalog/data/ext/fuzzystrmatch/pg_aggregate.tsv b/internal/catalog/data/17/ext/fuzzystrmatch/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/pg_aggregate.tsv rename to internal/catalog/data/17/ext/fuzzystrmatch/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/fuzzystrmatch/pg_cast.tsv b/internal/catalog/data/17/ext/fuzzystrmatch/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/pg_cast.tsv rename to internal/catalog/data/17/ext/fuzzystrmatch/pg_cast.tsv diff --git a/internal/catalog/data/ext/fuzzystrmatch/pg_operator.tsv b/internal/catalog/data/17/ext/fuzzystrmatch/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/pg_operator.tsv rename to internal/catalog/data/17/ext/fuzzystrmatch/pg_operator.tsv diff --git a/internal/catalog/data/ext/fuzzystrmatch/pg_proc.tsv b/internal/catalog/data/17/ext/fuzzystrmatch/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/pg_proc.tsv rename to internal/catalog/data/17/ext/fuzzystrmatch/pg_proc.tsv diff --git a/internal/catalog/data/ext/fuzzystrmatch/pg_range.tsv b/internal/catalog/data/17/ext/fuzzystrmatch/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/pg_range.tsv rename to internal/catalog/data/17/ext/fuzzystrmatch/pg_range.tsv diff --git a/internal/catalog/data/ext/fuzzystrmatch/pg_type.tsv b/internal/catalog/data/17/ext/fuzzystrmatch/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/fuzzystrmatch/pg_type.tsv rename to internal/catalog/data/17/ext/fuzzystrmatch/pg_type.tsv diff --git a/internal/catalog/data/ext/hstore/META b/internal/catalog/data/17/ext/hstore/META similarity index 100% rename from internal/catalog/data/ext/hstore/META rename to internal/catalog/data/17/ext/hstore/META diff --git a/internal/catalog/data/ext/hstore/pg_aggregate.tsv b/internal/catalog/data/17/ext/hstore/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/hstore/pg_aggregate.tsv rename to internal/catalog/data/17/ext/hstore/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/hstore/pg_cast.tsv b/internal/catalog/data/17/ext/hstore/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/hstore/pg_cast.tsv rename to internal/catalog/data/17/ext/hstore/pg_cast.tsv diff --git a/internal/catalog/data/ext/hstore/pg_operator.tsv b/internal/catalog/data/17/ext/hstore/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/hstore/pg_operator.tsv rename to internal/catalog/data/17/ext/hstore/pg_operator.tsv diff --git a/internal/catalog/data/ext/hstore/pg_proc.tsv b/internal/catalog/data/17/ext/hstore/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/hstore/pg_proc.tsv rename to internal/catalog/data/17/ext/hstore/pg_proc.tsv diff --git a/internal/catalog/data/ext/hstore/pg_range.tsv b/internal/catalog/data/17/ext/hstore/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/hstore/pg_range.tsv rename to internal/catalog/data/17/ext/hstore/pg_range.tsv diff --git a/internal/catalog/data/ext/hstore/pg_type.tsv b/internal/catalog/data/17/ext/hstore/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/hstore/pg_type.tsv rename to internal/catalog/data/17/ext/hstore/pg_type.tsv diff --git a/internal/catalog/data/ext/intarray/META b/internal/catalog/data/17/ext/intarray/META similarity index 100% rename from internal/catalog/data/ext/intarray/META rename to internal/catalog/data/17/ext/intarray/META diff --git a/internal/catalog/data/ext/intarray/pg_aggregate.tsv b/internal/catalog/data/17/ext/intarray/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/intarray/pg_aggregate.tsv rename to internal/catalog/data/17/ext/intarray/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/intarray/pg_cast.tsv b/internal/catalog/data/17/ext/intarray/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/intarray/pg_cast.tsv rename to internal/catalog/data/17/ext/intarray/pg_cast.tsv diff --git a/internal/catalog/data/ext/intarray/pg_operator.tsv b/internal/catalog/data/17/ext/intarray/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/intarray/pg_operator.tsv rename to internal/catalog/data/17/ext/intarray/pg_operator.tsv diff --git a/internal/catalog/data/ext/intarray/pg_proc.tsv b/internal/catalog/data/17/ext/intarray/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/intarray/pg_proc.tsv rename to internal/catalog/data/17/ext/intarray/pg_proc.tsv diff --git a/internal/catalog/data/ext/intarray/pg_range.tsv b/internal/catalog/data/17/ext/intarray/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/intarray/pg_range.tsv rename to internal/catalog/data/17/ext/intarray/pg_range.tsv diff --git a/internal/catalog/data/ext/intarray/pg_type.tsv b/internal/catalog/data/17/ext/intarray/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/intarray/pg_type.tsv rename to internal/catalog/data/17/ext/intarray/pg_type.tsv diff --git a/internal/catalog/data/ext/isn/META b/internal/catalog/data/17/ext/isn/META similarity index 100% rename from internal/catalog/data/ext/isn/META rename to internal/catalog/data/17/ext/isn/META diff --git a/internal/catalog/data/ext/isn/pg_aggregate.tsv b/internal/catalog/data/17/ext/isn/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/isn/pg_aggregate.tsv rename to internal/catalog/data/17/ext/isn/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/isn/pg_cast.tsv b/internal/catalog/data/17/ext/isn/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/isn/pg_cast.tsv rename to internal/catalog/data/17/ext/isn/pg_cast.tsv diff --git a/internal/catalog/data/ext/isn/pg_operator.tsv b/internal/catalog/data/17/ext/isn/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/isn/pg_operator.tsv rename to internal/catalog/data/17/ext/isn/pg_operator.tsv diff --git a/internal/catalog/data/ext/isn/pg_proc.tsv b/internal/catalog/data/17/ext/isn/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/isn/pg_proc.tsv rename to internal/catalog/data/17/ext/isn/pg_proc.tsv diff --git a/internal/catalog/data/ext/isn/pg_range.tsv b/internal/catalog/data/17/ext/isn/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/isn/pg_range.tsv rename to internal/catalog/data/17/ext/isn/pg_range.tsv diff --git a/internal/catalog/data/ext/isn/pg_type.tsv b/internal/catalog/data/17/ext/isn/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/isn/pg_type.tsv rename to internal/catalog/data/17/ext/isn/pg_type.tsv diff --git a/internal/catalog/data/ext/ltree/META b/internal/catalog/data/17/ext/ltree/META similarity index 100% rename from internal/catalog/data/ext/ltree/META rename to internal/catalog/data/17/ext/ltree/META diff --git a/internal/catalog/data/ext/ltree/pg_aggregate.tsv b/internal/catalog/data/17/ext/ltree/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/ltree/pg_aggregate.tsv rename to internal/catalog/data/17/ext/ltree/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/ltree/pg_cast.tsv b/internal/catalog/data/17/ext/ltree/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/ltree/pg_cast.tsv rename to internal/catalog/data/17/ext/ltree/pg_cast.tsv diff --git a/internal/catalog/data/ext/ltree/pg_operator.tsv b/internal/catalog/data/17/ext/ltree/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/ltree/pg_operator.tsv rename to internal/catalog/data/17/ext/ltree/pg_operator.tsv diff --git a/internal/catalog/data/ext/ltree/pg_proc.tsv b/internal/catalog/data/17/ext/ltree/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/ltree/pg_proc.tsv rename to internal/catalog/data/17/ext/ltree/pg_proc.tsv diff --git a/internal/catalog/data/ext/ltree/pg_range.tsv b/internal/catalog/data/17/ext/ltree/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/ltree/pg_range.tsv rename to internal/catalog/data/17/ext/ltree/pg_range.tsv diff --git a/internal/catalog/data/ext/ltree/pg_type.tsv b/internal/catalog/data/17/ext/ltree/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/ltree/pg_type.tsv rename to internal/catalog/data/17/ext/ltree/pg_type.tsv diff --git a/internal/catalog/data/ext/pg_trgm/META b/internal/catalog/data/17/ext/pg_trgm/META similarity index 100% rename from internal/catalog/data/ext/pg_trgm/META rename to internal/catalog/data/17/ext/pg_trgm/META diff --git a/internal/catalog/data/ext/pg_trgm/pg_aggregate.tsv b/internal/catalog/data/17/ext/pg_trgm/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/pg_trgm/pg_aggregate.tsv rename to internal/catalog/data/17/ext/pg_trgm/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/pg_trgm/pg_cast.tsv b/internal/catalog/data/17/ext/pg_trgm/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/pg_trgm/pg_cast.tsv rename to internal/catalog/data/17/ext/pg_trgm/pg_cast.tsv diff --git a/internal/catalog/data/ext/pg_trgm/pg_operator.tsv b/internal/catalog/data/17/ext/pg_trgm/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/pg_trgm/pg_operator.tsv rename to internal/catalog/data/17/ext/pg_trgm/pg_operator.tsv diff --git a/internal/catalog/data/ext/pg_trgm/pg_proc.tsv b/internal/catalog/data/17/ext/pg_trgm/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/pg_trgm/pg_proc.tsv rename to internal/catalog/data/17/ext/pg_trgm/pg_proc.tsv diff --git a/internal/catalog/data/ext/pg_trgm/pg_range.tsv b/internal/catalog/data/17/ext/pg_trgm/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/pg_trgm/pg_range.tsv rename to internal/catalog/data/17/ext/pg_trgm/pg_range.tsv diff --git a/internal/catalog/data/ext/pg_trgm/pg_type.tsv b/internal/catalog/data/17/ext/pg_trgm/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/pg_trgm/pg_type.tsv rename to internal/catalog/data/17/ext/pg_trgm/pg_type.tsv diff --git a/internal/catalog/data/ext/pgcrypto/META b/internal/catalog/data/17/ext/pgcrypto/META similarity index 100% rename from internal/catalog/data/ext/pgcrypto/META rename to internal/catalog/data/17/ext/pgcrypto/META diff --git a/internal/catalog/data/ext/pgcrypto/pg_aggregate.tsv b/internal/catalog/data/17/ext/pgcrypto/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/pgcrypto/pg_aggregate.tsv rename to internal/catalog/data/17/ext/pgcrypto/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/pgcrypto/pg_cast.tsv b/internal/catalog/data/17/ext/pgcrypto/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/pgcrypto/pg_cast.tsv rename to internal/catalog/data/17/ext/pgcrypto/pg_cast.tsv diff --git a/internal/catalog/data/ext/pgcrypto/pg_operator.tsv b/internal/catalog/data/17/ext/pgcrypto/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/pgcrypto/pg_operator.tsv rename to internal/catalog/data/17/ext/pgcrypto/pg_operator.tsv diff --git a/internal/catalog/data/ext/pgcrypto/pg_proc.tsv b/internal/catalog/data/17/ext/pgcrypto/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/pgcrypto/pg_proc.tsv rename to internal/catalog/data/17/ext/pgcrypto/pg_proc.tsv diff --git a/internal/catalog/data/ext/pgcrypto/pg_range.tsv b/internal/catalog/data/17/ext/pgcrypto/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/pgcrypto/pg_range.tsv rename to internal/catalog/data/17/ext/pgcrypto/pg_range.tsv diff --git a/internal/catalog/data/ext/pgcrypto/pg_type.tsv b/internal/catalog/data/17/ext/pgcrypto/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/pgcrypto/pg_type.tsv rename to internal/catalog/data/17/ext/pgcrypto/pg_type.tsv diff --git a/internal/catalog/data/ext/seg/META b/internal/catalog/data/17/ext/seg/META similarity index 100% rename from internal/catalog/data/ext/seg/META rename to internal/catalog/data/17/ext/seg/META diff --git a/internal/catalog/data/ext/seg/pg_aggregate.tsv b/internal/catalog/data/17/ext/seg/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/seg/pg_aggregate.tsv rename to internal/catalog/data/17/ext/seg/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/seg/pg_cast.tsv b/internal/catalog/data/17/ext/seg/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/seg/pg_cast.tsv rename to internal/catalog/data/17/ext/seg/pg_cast.tsv diff --git a/internal/catalog/data/ext/seg/pg_operator.tsv b/internal/catalog/data/17/ext/seg/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/seg/pg_operator.tsv rename to internal/catalog/data/17/ext/seg/pg_operator.tsv diff --git a/internal/catalog/data/ext/seg/pg_proc.tsv b/internal/catalog/data/17/ext/seg/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/seg/pg_proc.tsv rename to internal/catalog/data/17/ext/seg/pg_proc.tsv diff --git a/internal/catalog/data/ext/seg/pg_range.tsv b/internal/catalog/data/17/ext/seg/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/seg/pg_range.tsv rename to internal/catalog/data/17/ext/seg/pg_range.tsv diff --git a/internal/catalog/data/ext/seg/pg_type.tsv b/internal/catalog/data/17/ext/seg/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/seg/pg_type.tsv rename to internal/catalog/data/17/ext/seg/pg_type.tsv diff --git a/internal/catalog/data/ext/tablefunc/META b/internal/catalog/data/17/ext/tablefunc/META similarity index 100% rename from internal/catalog/data/ext/tablefunc/META rename to internal/catalog/data/17/ext/tablefunc/META diff --git a/internal/catalog/data/ext/tablefunc/pg_aggregate.tsv b/internal/catalog/data/17/ext/tablefunc/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/tablefunc/pg_aggregate.tsv rename to internal/catalog/data/17/ext/tablefunc/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/tablefunc/pg_cast.tsv b/internal/catalog/data/17/ext/tablefunc/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/tablefunc/pg_cast.tsv rename to internal/catalog/data/17/ext/tablefunc/pg_cast.tsv diff --git a/internal/catalog/data/ext/tablefunc/pg_operator.tsv b/internal/catalog/data/17/ext/tablefunc/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/tablefunc/pg_operator.tsv rename to internal/catalog/data/17/ext/tablefunc/pg_operator.tsv diff --git a/internal/catalog/data/ext/tablefunc/pg_proc.tsv b/internal/catalog/data/17/ext/tablefunc/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/tablefunc/pg_proc.tsv rename to internal/catalog/data/17/ext/tablefunc/pg_proc.tsv diff --git a/internal/catalog/data/ext/tablefunc/pg_range.tsv b/internal/catalog/data/17/ext/tablefunc/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/tablefunc/pg_range.tsv rename to internal/catalog/data/17/ext/tablefunc/pg_range.tsv diff --git a/internal/catalog/data/ext/tablefunc/pg_type.tsv b/internal/catalog/data/17/ext/tablefunc/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/tablefunc/pg_type.tsv rename to internal/catalog/data/17/ext/tablefunc/pg_type.tsv diff --git a/internal/catalog/data/ext/unaccent/META b/internal/catalog/data/17/ext/unaccent/META similarity index 100% rename from internal/catalog/data/ext/unaccent/META rename to internal/catalog/data/17/ext/unaccent/META diff --git a/internal/catalog/data/ext/unaccent/pg_aggregate.tsv b/internal/catalog/data/17/ext/unaccent/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/unaccent/pg_aggregate.tsv rename to internal/catalog/data/17/ext/unaccent/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/unaccent/pg_cast.tsv b/internal/catalog/data/17/ext/unaccent/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/unaccent/pg_cast.tsv rename to internal/catalog/data/17/ext/unaccent/pg_cast.tsv diff --git a/internal/catalog/data/ext/unaccent/pg_operator.tsv b/internal/catalog/data/17/ext/unaccent/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/unaccent/pg_operator.tsv rename to internal/catalog/data/17/ext/unaccent/pg_operator.tsv diff --git a/internal/catalog/data/ext/unaccent/pg_proc.tsv b/internal/catalog/data/17/ext/unaccent/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/unaccent/pg_proc.tsv rename to internal/catalog/data/17/ext/unaccent/pg_proc.tsv diff --git a/internal/catalog/data/ext/unaccent/pg_range.tsv b/internal/catalog/data/17/ext/unaccent/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/unaccent/pg_range.tsv rename to internal/catalog/data/17/ext/unaccent/pg_range.tsv diff --git a/internal/catalog/data/ext/unaccent/pg_type.tsv b/internal/catalog/data/17/ext/unaccent/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/unaccent/pg_type.tsv rename to internal/catalog/data/17/ext/unaccent/pg_type.tsv diff --git a/internal/catalog/data/ext/uuid-ossp/META b/internal/catalog/data/17/ext/uuid-ossp/META similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/META rename to internal/catalog/data/17/ext/uuid-ossp/META diff --git a/internal/catalog/data/ext/uuid-ossp/pg_aggregate.tsv b/internal/catalog/data/17/ext/uuid-ossp/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/pg_aggregate.tsv rename to internal/catalog/data/17/ext/uuid-ossp/pg_aggregate.tsv diff --git a/internal/catalog/data/ext/uuid-ossp/pg_cast.tsv b/internal/catalog/data/17/ext/uuid-ossp/pg_cast.tsv similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/pg_cast.tsv rename to internal/catalog/data/17/ext/uuid-ossp/pg_cast.tsv diff --git a/internal/catalog/data/ext/uuid-ossp/pg_operator.tsv b/internal/catalog/data/17/ext/uuid-ossp/pg_operator.tsv similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/pg_operator.tsv rename to internal/catalog/data/17/ext/uuid-ossp/pg_operator.tsv diff --git a/internal/catalog/data/ext/uuid-ossp/pg_proc.tsv b/internal/catalog/data/17/ext/uuid-ossp/pg_proc.tsv similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/pg_proc.tsv rename to internal/catalog/data/17/ext/uuid-ossp/pg_proc.tsv diff --git a/internal/catalog/data/ext/uuid-ossp/pg_range.tsv b/internal/catalog/data/17/ext/uuid-ossp/pg_range.tsv similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/pg_range.tsv rename to internal/catalog/data/17/ext/uuid-ossp/pg_range.tsv diff --git a/internal/catalog/data/ext/uuid-ossp/pg_type.tsv b/internal/catalog/data/17/ext/uuid-ossp/pg_type.tsv similarity index 100% rename from internal/catalog/data/ext/uuid-ossp/pg_type.tsv rename to internal/catalog/data/17/ext/uuid-ossp/pg_type.tsv diff --git a/internal/catalog/data/pg_aggregate.tsv b/internal/catalog/data/17/pg_aggregate.tsv similarity index 100% rename from internal/catalog/data/pg_aggregate.tsv rename to internal/catalog/data/17/pg_aggregate.tsv diff --git a/internal/catalog/data/pg_cast.tsv b/internal/catalog/data/17/pg_cast.tsv similarity index 100% rename from internal/catalog/data/pg_cast.tsv rename to internal/catalog/data/17/pg_cast.tsv diff --git a/internal/catalog/data/pg_class.tsv b/internal/catalog/data/17/pg_class.tsv similarity index 100% rename from internal/catalog/data/pg_class.tsv rename to internal/catalog/data/17/pg_class.tsv diff --git a/internal/catalog/data/pg_operator.tsv b/internal/catalog/data/17/pg_operator.tsv similarity index 100% rename from internal/catalog/data/pg_operator.tsv rename to internal/catalog/data/17/pg_operator.tsv diff --git a/internal/catalog/data/pg_proc.tsv b/internal/catalog/data/17/pg_proc.tsv similarity index 100% rename from internal/catalog/data/pg_proc.tsv rename to internal/catalog/data/17/pg_proc.tsv diff --git a/internal/catalog/data/pg_range.tsv b/internal/catalog/data/17/pg_range.tsv similarity index 100% rename from internal/catalog/data/pg_range.tsv rename to internal/catalog/data/17/pg_range.tsv diff --git a/internal/catalog/data/pg_type.tsv b/internal/catalog/data/17/pg_type.tsv similarity index 100% rename from internal/catalog/data/pg_type.tsv rename to internal/catalog/data/17/pg_type.tsv diff --git a/internal/catalog/data/18/VERSION b/internal/catalog/data/18/VERSION new file mode 100644 index 0000000..32adf19 --- /dev/null +++ b/internal/catalog/data/18/VERSION @@ -0,0 +1 @@ +18.3 diff --git a/internal/catalog/data/18/ext/btree_gin/META b/internal/catalog/data/18/ext/btree_gin/META new file mode 100644 index 0000000..869e73e --- /dev/null +++ b/internal/catalog/data/18/ext/btree_gin/META @@ -0,0 +1,4 @@ +version 1.3 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/btree_gin/pg_aggregate.tsv b/internal/catalog/data/18/ext/btree_gin/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gin/pg_cast.tsv b/internal/catalog/data/18/ext/btree_gin/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gin/pg_class.tsv b/internal/catalog/data/18/ext/btree_gin/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gin/pg_operator.tsv b/internal/catalog/data/18/ext/btree_gin/pg_operator.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gin/pg_proc.tsv b/internal/catalog/data/18/ext/btree_gin/pg_proc.tsv new file mode 100644 index 0000000..9014350 --- /dev/null +++ b/internal/catalog/data/18/ext/btree_gin/pg_proc.tsv @@ -0,0 +1,90 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 gin_btree_consistent f 16 f 0 6 0 t i 2281 21 2283 23 2281 2281 public +16387 gin_extract_value_int2 f 2281 f 0 2 0 t i 21 2281 public +16388 gin_compare_prefix_int2 f 23 f 0 4 0 t i 21 21 21 2281 public +16389 gin_extract_query_int2 f 2281 f 0 5 0 t i 21 2281 21 2281 2281 public +16402 gin_extract_value_int4 f 2281 f 0 2 0 t i 23 2281 public +16403 gin_compare_prefix_int4 f 23 f 0 4 0 t i 23 23 21 2281 public +16404 gin_extract_query_int4 f 2281 f 0 5 0 t i 23 2281 21 2281 2281 public +16417 gin_extract_value_int8 f 2281 f 0 2 0 t i 20 2281 public +16418 gin_compare_prefix_int8 f 23 f 0 4 0 t i 20 20 21 2281 public +16419 gin_extract_query_int8 f 2281 f 0 5 0 t i 20 2281 21 2281 2281 public +16432 gin_extract_value_float4 f 2281 f 0 2 0 t i 700 2281 public +16433 gin_compare_prefix_float4 f 23 f 0 4 0 t i 700 700 21 2281 public +16434 gin_extract_query_float4 f 2281 f 0 5 0 t i 700 2281 21 2281 2281 public +16447 gin_extract_value_float8 f 2281 f 0 2 0 t i 701 2281 public +16448 gin_compare_prefix_float8 f 23 f 0 4 0 t i 701 701 21 2281 public +16449 gin_extract_query_float8 f 2281 f 0 5 0 t i 701 2281 21 2281 2281 public +16462 gin_extract_value_money f 2281 f 0 2 0 t i 790 2281 public +16463 gin_compare_prefix_money f 23 f 0 4 0 t i 790 790 21 2281 public +16464 gin_extract_query_money f 2281 f 0 5 0 t i 790 2281 21 2281 2281 public +16477 gin_extract_value_oid f 2281 f 0 2 0 t i 26 2281 public +16478 gin_compare_prefix_oid f 23 f 0 4 0 t i 26 26 21 2281 public +16479 gin_extract_query_oid f 2281 f 0 5 0 t i 26 2281 21 2281 2281 public +16492 gin_extract_value_timestamp f 2281 f 0 2 0 t i 1114 2281 public +16493 gin_compare_prefix_timestamp f 23 f 0 4 0 t i 1114 1114 21 2281 public +16494 gin_extract_query_timestamp f 2281 f 0 5 0 t i 1114 2281 21 2281 2281 public +16507 gin_extract_value_timestamptz f 2281 f 0 2 0 t i 1184 2281 public +16508 gin_compare_prefix_timestamptz f 23 f 0 4 0 t i 1184 1184 21 2281 public +16509 gin_extract_query_timestamptz f 2281 f 0 5 0 t i 1184 2281 21 2281 2281 public +16522 gin_extract_value_time f 2281 f 0 2 0 t i 1083 2281 public +16523 gin_compare_prefix_time f 23 f 0 4 0 t i 1083 1083 21 2281 public +16524 gin_extract_query_time f 2281 f 0 5 0 t i 1083 2281 21 2281 2281 public +16537 gin_extract_value_timetz f 2281 f 0 2 0 t i 1266 2281 public +16538 gin_compare_prefix_timetz f 23 f 0 4 0 t i 1266 1266 21 2281 public +16539 gin_extract_query_timetz f 2281 f 0 5 0 t i 1266 2281 21 2281 2281 public +16552 gin_extract_value_date f 2281 f 0 2 0 t i 1082 2281 public +16553 gin_compare_prefix_date f 23 f 0 4 0 t i 1082 1082 21 2281 public +16554 gin_extract_query_date f 2281 f 0 5 0 t i 1082 2281 21 2281 2281 public +16567 gin_extract_value_interval f 2281 f 0 2 0 t i 1186 2281 public +16568 gin_compare_prefix_interval f 23 f 0 4 0 t i 1186 1186 21 2281 public +16569 gin_extract_query_interval f 2281 f 0 5 0 t i 1186 2281 21 2281 2281 public +16582 gin_extract_value_macaddr f 2281 f 0 2 0 t i 829 2281 public +16583 gin_compare_prefix_macaddr f 23 f 0 4 0 t i 829 829 21 2281 public +16584 gin_extract_query_macaddr f 2281 f 0 5 0 t i 829 2281 21 2281 2281 public +16597 gin_extract_value_inet f 2281 f 0 2 0 t i 869 2281 public +16598 gin_compare_prefix_inet f 23 f 0 4 0 t i 869 869 21 2281 public +16599 gin_extract_query_inet f 2281 f 0 5 0 t i 869 2281 21 2281 2281 public +16612 gin_extract_value_cidr f 2281 f 0 2 0 t i 650 2281 public +16613 gin_compare_prefix_cidr f 23 f 0 4 0 t i 650 650 21 2281 public +16614 gin_extract_query_cidr f 2281 f 0 5 0 t i 650 2281 21 2281 2281 public +16627 gin_extract_value_text f 2281 f 0 2 0 t i 25 2281 public +16628 gin_compare_prefix_text f 23 f 0 4 0 t i 25 25 21 2281 public +16629 gin_extract_query_text f 2281 f 0 5 0 t i 25 2281 21 2281 2281 public +16654 gin_extract_value_char f 2281 f 0 2 0 t i 18 2281 public +16655 gin_compare_prefix_char f 23 f 0 4 0 t i 18 18 21 2281 public +16656 gin_extract_query_char f 2281 f 0 5 0 t i 18 2281 21 2281 2281 public +16669 gin_extract_value_bytea f 2281 f 0 2 0 t i 17 2281 public +16670 gin_compare_prefix_bytea f 23 f 0 4 0 t i 17 17 21 2281 public +16671 gin_extract_query_bytea f 2281 f 0 5 0 t i 17 2281 21 2281 2281 public +16684 gin_extract_value_bit f 2281 f 0 2 0 t i 1560 2281 public +16685 gin_compare_prefix_bit f 23 f 0 4 0 t i 1560 1560 21 2281 public +16686 gin_extract_query_bit f 2281 f 0 5 0 t i 1560 2281 21 2281 2281 public +16699 gin_extract_value_varbit f 2281 f 0 2 0 t i 1562 2281 public +16700 gin_compare_prefix_varbit f 23 f 0 4 0 t i 1562 1562 21 2281 public +16701 gin_extract_query_varbit f 2281 f 0 5 0 t i 1562 2281 21 2281 2281 public +16714 gin_extract_value_numeric f 2281 f 0 2 0 t i 1700 2281 public +16715 gin_compare_prefix_numeric f 23 f 0 4 0 t i 1700 1700 21 2281 public +16716 gin_extract_query_numeric f 2281 f 0 5 0 t i 1700 2281 21 2281 2281 public +16717 gin_numeric_cmp f 23 f 0 2 0 t i 1700 1700 public +16730 gin_extract_value_macaddr8 f 2281 f 0 2 0 t i 774 2281 public +16731 gin_compare_prefix_macaddr8 f 23 f 0 4 0 t i 774 774 21 2281 public +16732 gin_extract_query_macaddr8 f 2281 f 0 5 0 t i 774 2281 21 2281 2281 public +16745 gin_extract_value_anyenum f 2281 f 0 2 0 t i 3500 2281 public +16746 gin_compare_prefix_anyenum f 23 f 0 4 0 t i 3500 3500 21 2281 public +16747 gin_extract_query_anyenum f 2281 f 0 5 0 t i 3500 2281 21 2281 2281 public +16748 gin_enum_cmp f 23 f 0 2 0 t i 3500 3500 public +16761 gin_extract_value_uuid f 2281 f 0 2 0 t i 2950 2281 public +16762 gin_compare_prefix_uuid f 23 f 0 4 0 t i 2950 2950 21 2281 public +16763 gin_extract_query_uuid f 2281 f 0 5 0 t i 2950 2281 21 2281 2281 public +16776 gin_extract_value_name f 2281 f 0 2 0 t i 19 2281 public +16777 gin_compare_prefix_name f 23 f 0 4 0 t i 19 19 21 2281 public +16778 gin_extract_query_name f 2281 f 0 5 0 t i 19 2281 21 2281 2281 public +16791 gin_extract_value_bool f 2281 f 0 2 0 t i 16 2281 public +16792 gin_compare_prefix_bool f 23 f 0 4 0 t i 16 16 21 2281 public +16793 gin_extract_query_bool f 2281 f 0 5 0 t i 16 2281 21 2281 2281 public +16806 gin_extract_value_bpchar f 2281 f 0 2 0 t i 1042 2281 public +16807 gin_compare_prefix_bpchar f 23 f 0 4 0 t i 1042 1042 21 2281 public +16808 gin_extract_query_bpchar f 2281 f 0 5 0 t i 1042 2281 21 2281 2281 public diff --git a/internal/catalog/data/18/ext/btree_gin/pg_range.tsv b/internal/catalog/data/18/ext/btree_gin/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gin/pg_type.tsv b/internal/catalog/data/18/ext/btree_gin/pg_type.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gist/META b/internal/catalog/data/18/ext/btree_gist/META new file mode 100644 index 0000000..1f19893 --- /dev/null +++ b/internal/catalog/data/18/ext/btree_gist/META @@ -0,0 +1,4 @@ +version 1.8 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/btree_gist/pg_aggregate.tsv b/internal/catalog/data/18/ext/btree_gist/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gist/pg_cast.tsv b/internal/catalog/data/18/ext/btree_gist/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gist/pg_class.tsv b/internal/catalog/data/18/ext/btree_gist/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gist/pg_operator.tsv b/internal/catalog/data/18/ext/btree_gist/pg_operator.tsv new file mode 100644 index 0000000..9e14d6c --- /dev/null +++ b/internal/catalog/data/18/ext/btree_gist/pg_operator.tsv @@ -0,0 +1,12 @@ +16407 <-> b 790 790 790 16406 16407 0 f f public +16409 <-> b 1082 1082 23 16408 16409 0 f f public +16411 <-> b 700 700 700 16410 16411 0 f f public +16413 <-> b 701 701 701 16412 16413 0 f f public +16415 <-> b 21 21 21 16414 16415 0 f f public +16417 <-> b 23 23 23 16416 16417 0 f f public +16419 <-> b 20 20 20 16418 16419 0 f f public +16421 <-> b 1186 1186 1186 16420 16421 0 f f public +16423 <-> b 26 26 26 16422 16423 0 f f public +16425 <-> b 1083 1083 1186 16424 16425 0 f f public +16427 <-> b 1114 1114 1186 16426 16427 0 f f public +16429 <-> b 1184 1184 1186 16428 16429 0 f f public diff --git a/internal/catalog/data/18/ext/btree_gist/pg_proc.tsv b/internal/catalog/data/18/ext/btree_gist/pg_proc.tsv new file mode 100644 index 0000000..c10ca28 --- /dev/null +++ b/internal/catalog/data/18/ext/btree_gist/pg_proc.tsv @@ -0,0 +1,215 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 gbtreekey4_in f 16386 f 0 1 0 t i 2275 public +16388 gbtreekey4_out f 2275 f 0 1 0 t i 16386 public +16391 gbtreekey8_in f 16390 f 0 1 0 t i 2275 public +16392 gbtreekey8_out f 2275 f 0 1 0 t i 16390 public +16395 gbtreekey16_in f 16394 f 0 1 0 t i 2275 public +16396 gbtreekey16_out f 2275 f 0 1 0 t i 16394 public +16399 gbtreekey32_in f 16398 f 0 1 0 t i 2275 public +16400 gbtreekey32_out f 2275 f 0 1 0 t i 16398 public +16403 gbtreekey_var_in f 16402 f 0 1 0 t i 2275 public +16404 gbtreekey_var_out f 2275 f 0 1 0 t i 16402 public +16406 cash_dist f 790 f 0 2 0 t i 790 790 public +16408 date_dist f 23 f 0 2 0 t i 1082 1082 public +16410 float4_dist f 700 f 0 2 0 t i 700 700 public +16412 float8_dist f 701 f 0 2 0 t i 701 701 public +16414 int2_dist f 21 f 0 2 0 t i 21 21 public +16416 int4_dist f 23 f 0 2 0 t i 23 23 public +16418 int8_dist f 20 f 0 2 0 t i 20 20 public +16420 interval_dist f 1186 f 0 2 0 t i 1186 1186 public +16422 oid_dist f 26 f 0 2 0 t i 26 26 public +16424 time_dist f 1186 f 0 2 0 t i 1083 1083 public +16426 ts_dist f 1186 f 0 2 0 t i 1114 1114 public +16428 tstz_dist f 1186 f 0 2 0 t i 1184 1184 public +16430 gbt_oid_consistent f 16 f 0 5 0 t i 2281 26 21 26 2281 public +16431 gbt_oid_distance f 701 f 0 5 0 t i 2281 26 21 26 2281 public +16432 gbt_oid_fetch f 2281 f 0 1 0 t i 2281 public +16433 gbt_oid_compress f 2281 f 0 1 0 t i 2281 public +16434 gbt_decompress f 2281 f 0 1 0 t i 2281 public +16435 gbt_var_decompress f 2281 f 0 1 0 t i 2281 public +16436 gbt_var_fetch f 2281 f 0 1 0 t i 2281 public +16437 gbt_oid_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16438 gbt_oid_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16439 gbt_oid_union f 16390 f 0 2 0 t i 2281 2281 public +16440 gbt_oid_same f 2281 f 0 3 0 t i 16390 16390 2281 public +16459 gbt_int2_consistent f 16 f 0 5 0 t i 2281 21 21 26 2281 public +16460 gbt_int2_distance f 701 f 0 5 0 t i 2281 21 21 26 2281 public +16461 gbt_int2_compress f 2281 f 0 1 0 t i 2281 public +16462 gbt_int2_fetch f 2281 f 0 1 0 t i 2281 public +16463 gbt_int2_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16464 gbt_int2_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16465 gbt_int2_union f 16386 f 0 2 0 t i 2281 2281 public +16466 gbt_int2_same f 2281 f 0 3 0 t i 16386 16386 2281 public +16485 gbt_int4_consistent f 16 f 0 5 0 t i 2281 23 21 26 2281 public +16486 gbt_int4_distance f 701 f 0 5 0 t i 2281 23 21 26 2281 public +16487 gbt_int4_compress f 2281 f 0 1 0 t i 2281 public +16488 gbt_int4_fetch f 2281 f 0 1 0 t i 2281 public +16489 gbt_int4_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16490 gbt_int4_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16491 gbt_int4_union f 16390 f 0 2 0 t i 2281 2281 public +16492 gbt_int4_same f 2281 f 0 3 0 t i 16390 16390 2281 public +16511 gbt_int8_consistent f 16 f 0 5 0 t i 2281 20 21 26 2281 public +16512 gbt_int8_distance f 701 f 0 5 0 t i 2281 20 21 26 2281 public +16513 gbt_int8_compress f 2281 f 0 1 0 t i 2281 public +16514 gbt_int8_fetch f 2281 f 0 1 0 t i 2281 public +16515 gbt_int8_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16516 gbt_int8_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16517 gbt_int8_union f 16394 f 0 2 0 t i 2281 2281 public +16518 gbt_int8_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16537 gbt_float4_consistent f 16 f 0 5 0 t i 2281 700 21 26 2281 public +16538 gbt_float4_distance f 701 f 0 5 0 t i 2281 700 21 26 2281 public +16539 gbt_float4_compress f 2281 f 0 1 0 t i 2281 public +16540 gbt_float4_fetch f 2281 f 0 1 0 t i 2281 public +16541 gbt_float4_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16542 gbt_float4_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16543 gbt_float4_union f 16390 f 0 2 0 t i 2281 2281 public +16544 gbt_float4_same f 2281 f 0 3 0 t i 16390 16390 2281 public +16563 gbt_float8_consistent f 16 f 0 5 0 t i 2281 701 21 26 2281 public +16564 gbt_float8_distance f 701 f 0 5 0 t i 2281 701 21 26 2281 public +16565 gbt_float8_compress f 2281 f 0 1 0 t i 2281 public +16566 gbt_float8_fetch f 2281 f 0 1 0 t i 2281 public +16567 gbt_float8_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16568 gbt_float8_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16569 gbt_float8_union f 16394 f 0 2 0 t i 2281 2281 public +16570 gbt_float8_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16589 gbt_ts_consistent f 16 f 0 5 0 t i 2281 1114 21 26 2281 public +16590 gbt_ts_distance f 701 f 0 5 0 t i 2281 1114 21 26 2281 public +16591 gbt_tstz_consistent f 16 f 0 5 0 t i 2281 1184 21 26 2281 public +16592 gbt_tstz_distance f 701 f 0 5 0 t i 2281 1184 21 26 2281 public +16593 gbt_ts_compress f 2281 f 0 1 0 t i 2281 public +16594 gbt_tstz_compress f 2281 f 0 1 0 t i 2281 public +16595 gbt_ts_fetch f 2281 f 0 1 0 t i 2281 public +16596 gbt_ts_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16597 gbt_ts_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16598 gbt_ts_union f 16394 f 0 2 0 t i 2281 2281 public +16599 gbt_ts_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16636 gbt_time_consistent f 16 f 0 5 0 t i 2281 1083 21 26 2281 public +16637 gbt_time_distance f 701 f 0 5 0 t i 2281 1083 21 26 2281 public +16638 gbt_timetz_consistent f 16 f 0 5 0 t i 2281 1266 21 26 2281 public +16639 gbt_time_compress f 2281 f 0 1 0 t i 2281 public +16640 gbt_timetz_compress f 2281 f 0 1 0 t i 2281 public +16641 gbt_time_fetch f 2281 f 0 1 0 t i 2281 public +16642 gbt_time_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16643 gbt_time_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16644 gbt_time_union f 16394 f 0 2 0 t i 2281 2281 public +16645 gbt_time_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16679 gbt_date_consistent f 16 f 0 5 0 t i 2281 1082 21 26 2281 public +16680 gbt_date_distance f 701 f 0 5 0 t i 2281 1082 21 26 2281 public +16681 gbt_date_compress f 2281 f 0 1 0 t i 2281 public +16682 gbt_date_fetch f 2281 f 0 1 0 t i 2281 public +16683 gbt_date_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16684 gbt_date_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16685 gbt_date_union f 16390 f 0 2 0 t i 2281 2281 public +16686 gbt_date_same f 2281 f 0 3 0 t i 16390 16390 2281 public +16705 gbt_intv_consistent f 16 f 0 5 0 t i 2281 1186 21 26 2281 public +16706 gbt_intv_distance f 701 f 0 5 0 t i 2281 1186 21 26 2281 public +16707 gbt_intv_compress f 2281 f 0 1 0 t i 2281 public +16708 gbt_intv_decompress f 2281 f 0 1 0 t i 2281 public +16709 gbt_intv_fetch f 2281 f 0 1 0 t i 2281 public +16710 gbt_intv_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16711 gbt_intv_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16712 gbt_intv_union f 16398 f 0 2 0 t i 2281 2281 public +16713 gbt_intv_same f 2281 f 0 3 0 t i 16398 16398 2281 public +16732 gbt_cash_consistent f 16 f 0 5 0 t i 2281 790 21 26 2281 public +16733 gbt_cash_distance f 701 f 0 5 0 t i 2281 790 21 26 2281 public +16734 gbt_cash_compress f 2281 f 0 1 0 t i 2281 public +16735 gbt_cash_fetch f 2281 f 0 1 0 t i 2281 public +16736 gbt_cash_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16737 gbt_cash_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16738 gbt_cash_union f 16394 f 0 2 0 t i 2281 2281 public +16739 gbt_cash_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16758 gbt_macad_consistent f 16 f 0 5 0 t i 2281 829 21 26 2281 public +16759 gbt_macad_compress f 2281 f 0 1 0 t i 2281 public +16760 gbt_macad_fetch f 2281 f 0 1 0 t i 2281 public +16761 gbt_macad_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16762 gbt_macad_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16763 gbt_macad_union f 16394 f 0 2 0 t i 2281 2281 public +16764 gbt_macad_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16781 gbt_text_consistent f 16 f 0 5 0 t i 2281 25 21 26 2281 public +16782 gbt_bpchar_consistent f 16 f 0 5 0 t i 2281 1042 21 26 2281 public +16783 gbt_text_compress f 2281 f 0 1 0 t i 2281 public +16784 gbt_bpchar_compress f 2281 f 0 1 0 t i 2281 public +16785 gbt_text_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16786 gbt_text_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16787 gbt_text_union f 16402 f 0 2 0 t i 2281 2281 public +16788 gbt_text_same f 2281 f 0 3 0 t i 16402 16402 2281 public +16821 gbt_bytea_consistent f 16 f 0 5 0 t i 2281 17 21 26 2281 public +16822 gbt_bytea_compress f 2281 f 0 1 0 t i 2281 public +16823 gbt_bytea_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16824 gbt_bytea_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16825 gbt_bytea_union f 16402 f 0 2 0 t i 2281 2281 public +16826 gbt_bytea_same f 2281 f 0 3 0 t i 16402 16402 2281 public +16843 gbt_numeric_consistent f 16 f 0 5 0 t i 2281 1700 21 26 2281 public +16844 gbt_numeric_compress f 2281 f 0 1 0 t i 2281 public +16845 gbt_numeric_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16846 gbt_numeric_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16847 gbt_numeric_union f 16402 f 0 2 0 t i 2281 2281 public +16848 gbt_numeric_same f 2281 f 0 3 0 t i 16402 16402 2281 public +16865 gbt_bit_consistent f 16 f 0 5 0 t i 2281 1560 21 26 2281 public +16866 gbt_bit_compress f 2281 f 0 1 0 t i 2281 public +16867 gbt_bit_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16868 gbt_bit_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16869 gbt_bit_union f 16402 f 0 2 0 t i 2281 2281 public +16870 gbt_bit_same f 2281 f 0 3 0 t i 16402 16402 2281 public +16903 gbt_inet_consistent f 16 f 0 5 0 t i 2281 869 21 26 2281 public +16904 gbt_inet_compress f 2281 f 0 1 0 t i 2281 public +16905 gbt_inet_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16906 gbt_inet_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16907 gbt_inet_union f 16394 f 0 2 0 t i 2281 2281 public +16908 gbt_inet_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16939 gbt_uuid_consistent f 16 f 0 5 0 t i 2281 2950 21 26 2281 public +16940 gbt_uuid_fetch f 2281 f 0 1 0 t i 2281 public +16941 gbt_uuid_compress f 2281 f 0 1 0 t i 2281 public +16942 gbt_uuid_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16943 gbt_uuid_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16944 gbt_uuid_union f 16398 f 0 2 0 t i 2281 2281 public +16945 gbt_uuid_same f 2281 f 0 3 0 t i 16398 16398 2281 public +16962 gbt_macad8_consistent f 16 f 0 5 0 t i 2281 774 21 26 2281 public +16963 gbt_macad8_compress f 2281 f 0 1 0 t i 2281 public +16964 gbt_macad8_fetch f 2281 f 0 1 0 t i 2281 public +16965 gbt_macad8_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16966 gbt_macad8_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16967 gbt_macad8_union f 16394 f 0 2 0 t i 2281 2281 public +16968 gbt_macad8_same f 2281 f 0 3 0 t i 16394 16394 2281 public +16985 gbt_enum_consistent f 16 f 0 5 0 t i 2281 3500 21 26 2281 public +16986 gbt_enum_compress f 2281 f 0 1 0 t i 2281 public +16987 gbt_enum_fetch f 2281 f 0 1 0 t i 2281 public +16988 gbt_enum_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16989 gbt_enum_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16990 gbt_enum_union f 16390 f 0 2 0 t i 2281 2281 public +16991 gbt_enum_same f 2281 f 0 3 0 t i 16390 16390 2281 public +17009 gbtreekey2_in f 17008 f 0 1 0 t i 2275 public +17010 gbtreekey2_out f 2275 f 0 1 0 t i 17008 public +17012 gbt_bool_consistent f 16 f 0 5 0 t i 2281 16 21 26 2281 public +17013 gbt_bool_compress f 2281 f 0 1 0 t i 2281 public +17014 gbt_bool_fetch f 2281 f 0 1 0 t i 2281 public +17015 gbt_bool_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +17016 gbt_bool_picksplit f 2281 f 0 2 0 t i 2281 2281 public +17017 gbt_bool_union f 17008 f 0 2 0 t i 2281 2281 public +17018 gbt_bool_same f 2281 f 0 3 0 t i 17008 17008 2281 public +17035 gbt_bit_sortsupport f 2278 f 0 1 0 t i 2281 public +17036 gbt_varbit_sortsupport f 2278 f 0 1 0 t i 2281 public +17037 gbt_bool_sortsupport f 2278 f 0 1 0 t i 2281 public +17038 gbt_bytea_sortsupport f 2278 f 0 1 0 t i 2281 public +17039 gbt_cash_sortsupport f 2278 f 0 1 0 t i 2281 public +17040 gbt_date_sortsupport f 2278 f 0 1 0 t i 2281 public +17041 gbt_enum_sortsupport f 2278 f 0 1 0 t i 2281 public +17042 gbt_float4_sortsupport f 2278 f 0 1 0 t i 2281 public +17043 gbt_float8_sortsupport f 2278 f 0 1 0 t i 2281 public +17044 gbt_inet_sortsupport f 2278 f 0 1 0 t i 2281 public +17045 gbt_int2_sortsupport f 2278 f 0 1 0 t i 2281 public +17046 gbt_int4_sortsupport f 2278 f 0 1 0 t i 2281 public +17047 gbt_int8_sortsupport f 2278 f 0 1 0 t i 2281 public +17048 gbt_intv_sortsupport f 2278 f 0 1 0 t i 2281 public +17049 gbt_macaddr_sortsupport f 2278 f 0 1 0 t i 2281 public +17050 gbt_macad8_sortsupport f 2278 f 0 1 0 t i 2281 public +17051 gbt_numeric_sortsupport f 2278 f 0 1 0 t i 2281 public +17052 gbt_oid_sortsupport f 2278 f 0 1 0 t i 2281 public +17053 gbt_text_sortsupport f 2278 f 0 1 0 t i 2281 public +17054 gbt_bpchar_sortsupport f 2278 f 0 1 0 t i 2281 public +17055 gbt_time_sortsupport f 2278 f 0 1 0 t i 2281 public +17056 gbt_ts_sortsupport f 2278 f 0 1 0 t i 2281 public +17057 gbt_uuid_sortsupport f 2278 f 0 1 0 t i 2281 public +17084 gist_translate_cmptype_btree f 21 f 0 1 0 t i 23 public diff --git a/internal/catalog/data/18/ext/btree_gist/pg_range.tsv b/internal/catalog/data/18/ext/btree_gist/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/btree_gist/pg_type.tsv b/internal/catalog/data/18/ext/btree_gist/pg_type.tsv new file mode 100644 index 0000000..367a975 --- /dev/null +++ b/internal/catalog/data/18/ext/btree_gist/pg_type.tsv @@ -0,0 +1,12 @@ +16386 gbtreekey4 b U f 4 f 0 16389 0 0 -1 public +16389 _gbtreekey4 b A f -1 f 16386 0 0 0 -1 public +16390 gbtreekey8 b U f 8 f 0 16393 0 0 -1 public +16393 _gbtreekey8 b A f -1 f 16390 0 0 0 -1 public +16394 gbtreekey16 b U f 16 f 0 16397 0 0 -1 public +16397 _gbtreekey16 b A f -1 f 16394 0 0 0 -1 public +16398 gbtreekey32 b U f 32 f 0 16401 0 0 -1 public +16401 _gbtreekey32 b A f -1 f 16398 0 0 0 -1 public +16402 gbtreekey_var b U f -1 f 0 16405 0 0 -1 public +16405 _gbtreekey_var b A f -1 f 16402 0 0 0 -1 public +17008 gbtreekey2 b U f 2 f 0 17011 0 0 -1 public +17011 _gbtreekey2 b A f -1 f 17008 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/citext/META b/internal/catalog/data/18/ext/citext/META new file mode 100644 index 0000000..1f19893 --- /dev/null +++ b/internal/catalog/data/18/ext/citext/META @@ -0,0 +1,4 @@ +version 1.8 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/citext/pg_aggregate.tsv b/internal/catalog/data/18/ext/citext/pg_aggregate.tsv new file mode 100644 index 0000000..c5d43c7 --- /dev/null +++ b/internal/catalog/data/18/ext/citext/pg_aggregate.tsv @@ -0,0 +1,2 @@ +16431 n 0 16386 +16432 n 0 16386 diff --git a/internal/catalog/data/18/ext/citext/pg_cast.tsv b/internal/catalog/data/18/ext/citext/pg_cast.tsv new file mode 100644 index 0000000..d9bdf25 --- /dev/null +++ b/internal/catalog/data/18/ext/citext/pg_cast.tsv @@ -0,0 +1,8 @@ +16395 16386 25 0 i b +16396 16386 1043 0 i b +16397 16386 1042 0 a b +16398 25 16386 0 a b +16399 1043 16386 0 a b +16400 1042 16386 16392 a f +16401 16 16386 16393 a f +16402 869 16386 16394 a f diff --git a/internal/catalog/data/18/ext/citext/pg_class.tsv b/internal/catalog/data/18/ext/citext/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/citext/pg_operator.tsv b/internal/catalog/data/18/ext/citext/pg_operator.tsv new file mode 100644 index 0000000..1fbf249 --- /dev/null +++ b/internal/catalog/data/18/ext/citext/pg_operator.tsv @@ -0,0 +1,26 @@ +16409 <> b 16386 16386 16 16404 16409 16410 f f public +16410 = b 16386 16386 16 16403 16410 16409 t t public +16411 > b 16386 16386 16 16407 16413 16414 f f public +16412 >= b 16386 16386 16 16408 16414 16413 f f public +16413 < b 16386 16386 16 16405 16411 16412 f f public +16414 <= b 16386 16386 16 16406 16412 16411 f f public +16437 !~ b 16386 16386 16 16436 0 16438 f f public +16438 ~ b 16386 16386 16 16435 0 16437 f f public +16439 !~* b 16386 16386 16 16436 0 16440 f f public +16440 ~* b 16386 16386 16 16435 0 16439 f f public +16441 !~~ b 16386 16386 16 16434 0 16442 f f public +16442 ~~ b 16386 16386 16 16433 0 16441 f f public +16443 !~~* b 16386 16386 16 16434 0 16444 f f public +16444 ~~* b 16386 16386 16 16433 0 16443 f f public +16449 !~ b 16386 25 16 16448 0 16450 f f public +16450 ~ b 16386 25 16 16447 0 16449 f f public +16451 !~* b 16386 25 16 16448 0 16452 f f public +16452 ~* b 16386 25 16 16447 0 16451 f f public +16453 !~~ b 16386 25 16 16446 0 16454 f f public +16454 ~~ b 16386 25 16 16445 0 16453 f f public +16455 !~~* b 16386 25 16 16446 0 16456 f f public +16456 ~~* b 16386 25 16 16445 0 16455 f f public +16475 ~>~ b 16386 16386 16 16473 16477 16478 f f public +16476 ~>=~ b 16386 16386 16 16474 16478 16477 f f public +16477 ~<~ b 16386 16386 16 16471 16475 16476 f f public +16478 ~<=~ b 16386 16386 16 16472 16476 16475 f f public diff --git a/internal/catalog/data/18/ext/citext/pg_proc.tsv b/internal/catalog/data/18/ext/citext/pg_proc.tsv new file mode 100644 index 0000000..62c996e --- /dev/null +++ b/internal/catalog/data/18/ext/citext/pg_proc.tsv @@ -0,0 +1,50 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 citextin f 16386 f 0 1 0 t i 2275 public +16388 citextout f 2275 f 0 1 0 t i 16386 public +16389 citextrecv f 16386 f 0 1 0 t s 2281 public +16390 citextsend f 17 f 0 1 0 t s 16386 public +16392 citext f 16386 f 0 1 0 t i 1042 public +16393 citext f 16386 f 0 1 0 t i 16 public +16394 citext f 16386 f 0 1 0 t i 869 public +16403 citext_eq f 16 f 0 2 0 t i 16386 16386 public +16404 citext_ne f 16 f 0 2 0 t i 16386 16386 public +16405 citext_lt f 16 f 0 2 0 t i 16386 16386 public +16406 citext_le f 16 f 0 2 0 t i 16386 16386 public +16407 citext_gt f 16 f 0 2 0 t i 16386 16386 public +16408 citext_ge f 16 f 0 2 0 t i 16386 16386 public +16415 citext_cmp f 23 f 0 2 0 t i 16386 16386 public +16416 citext_hash f 23 f 0 1 0 t i 16386 public +16429 citext_smaller f 16386 f 0 2 0 t i 16386 16386 public +16430 citext_larger f 16386 f 0 2 0 t i 16386 16386 public +16431 min a 16386 f 0 1 0 f i 16386 public +16432 max a 16386 f 0 1 0 f i 16386 public +16433 texticlike f 16 f 0 2 0 t i 16386 16386 public +16434 texticnlike f 16 f 0 2 0 t i 16386 16386 public +16435 texticregexeq f 16 f 0 2 0 t i 16386 16386 public +16436 texticregexne f 16 f 0 2 0 t i 16386 16386 public +16445 texticlike f 16 f 0 2 0 t i 16386 25 public +16446 texticnlike f 16 f 0 2 0 t i 16386 25 public +16447 texticregexeq f 16 f 0 2 0 t i 16386 25 public +16448 texticregexne f 16 f 0 2 0 t i 16386 25 public +16457 regexp_match f 1009 f 0 2 0 t i 16386 16386 string,pattern public +16458 regexp_match f 1009 f 0 3 0 t i 16386 16386 25 string,pattern,flags public +16459 regexp_matches f 1009 t 0 2 0 t i 16386 16386 string,pattern public +16460 regexp_matches f 1009 t 0 3 0 t i 16386 16386 25 string,pattern,flags public +16461 regexp_replace f 25 f 0 3 0 t i 16386 16386 25 string,pattern,replacement public +16462 regexp_replace f 25 f 0 4 0 t i 16386 16386 25 25 string,pattern,replacement,flags public +16463 regexp_split_to_array f 1009 f 0 2 0 t i 16386 16386 string,pattern public +16464 regexp_split_to_array f 1009 f 0 3 0 t i 16386 16386 25 string,pattern,flags public +16465 regexp_split_to_table f 25 t 0 2 0 t i 16386 16386 string,pattern public +16466 regexp_split_to_table f 25 t 0 3 0 t i 16386 16386 25 string,pattern,flags public +16467 strpos f 23 f 0 2 0 t i 16386 16386 public +16468 replace f 25 f 0 3 0 t i 16386 16386 16386 public +16469 split_part f 25 f 0 3 0 t i 16386 16386 23 public +16470 translate f 25 f 0 3 0 t i 16386 16386 25 public +16471 citext_pattern_lt f 16 f 0 2 0 t i 16386 16386 public +16472 citext_pattern_le f 16 f 0 2 0 t i 16386 16386 public +16473 citext_pattern_gt f 16 f 0 2 0 t i 16386 16386 public +16474 citext_pattern_ge f 16 f 0 2 0 t i 16386 16386 public +16479 citext_pattern_cmp f 23 f 0 2 0 t i 16386 16386 public +16488 citext_hash_extended f 20 f 0 2 0 t i 16386 20 public diff --git a/internal/catalog/data/18/ext/citext/pg_range.tsv b/internal/catalog/data/18/ext/citext/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/citext/pg_type.tsv b/internal/catalog/data/18/ext/citext/pg_type.tsv new file mode 100644 index 0000000..44b36f1 --- /dev/null +++ b/internal/catalog/data/18/ext/citext/pg_type.tsv @@ -0,0 +1,2 @@ +16386 citext b S f -1 f 0 16391 0 0 -1 public +16391 _citext b A f -1 f 16386 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/cube/META b/internal/catalog/data/18/ext/cube/META new file mode 100644 index 0000000..ff631ae --- /dev/null +++ b/internal/catalog/data/18/ext/cube/META @@ -0,0 +1,4 @@ +version 1.5 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/cube/pg_aggregate.tsv b/internal/catalog/data/18/ext/cube/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/cube/pg_cast.tsv b/internal/catalog/data/18/ext/cube/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/cube/pg_class.tsv b/internal/catalog/data/18/ext/cube/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/cube/pg_operator.tsv b/internal/catalog/data/18/ext/cube/pg_operator.tsv new file mode 100644 index 0000000..11478c2 --- /dev/null +++ b/internal/catalog/data/18/ext/cube/pg_operator.tsv @@ -0,0 +1,14 @@ +16420 > b 16386 16386 16 16395 16422 16423 f f public +16421 >= b 16386 16386 16 16397 16423 16422 f f public +16422 < b 16386 16386 16 16394 16420 16421 f f public +16423 <= b 16386 16386 16 16396 16421 16420 f f public +16424 && b 16386 16386 16 16401 16424 0 f f public +16425 <> b 16386 16386 16 16393 16425 16426 f f public +16426 = b 16386 16386 16 16392 16426 16425 t f public +16427 <@ b 16386 16386 16 16400 16428 0 f f public +16428 @> b 16386 16386 16 16399 16427 0 f f public +16429 -> b 16386 23 701 16412 0 0 f f public +16430 ~> b 16386 23 701 16413 0 0 f f public +16431 <#> b 16386 16386 701 16408 16431 0 f f public +16432 <-> b 16386 16386 701 16406 16432 0 f f public +16433 <=> b 16386 16386 701 16407 16433 0 f f public diff --git a/internal/catalog/data/18/ext/cube/pg_proc.tsv b/internal/catalog/data/18/ext/cube/pg_proc.tsv new file mode 100644 index 0000000..0fdee5e --- /dev/null +++ b/internal/catalog/data/18/ext/cube/pg_proc.tsv @@ -0,0 +1,43 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 cube_in f 16386 f 0 1 0 t i 2275 public +16388 cube f 16386 f 0 2 0 t i 1022 1022 public +16389 cube f 16386 f 0 1 0 t i 1022 public +16390 cube_out f 2275 f 0 1 0 t i 16386 public +16392 cube_eq f 16 f 0 2 0 t i 16386 16386 public +16393 cube_ne f 16 f 0 2 0 t i 16386 16386 public +16394 cube_lt f 16 f 0 2 0 t i 16386 16386 public +16395 cube_gt f 16 f 0 2 0 t i 16386 16386 public +16396 cube_le f 16 f 0 2 0 t i 16386 16386 public +16397 cube_ge f 16 f 0 2 0 t i 16386 16386 public +16398 cube_cmp f 23 f 0 2 0 t i 16386 16386 public +16399 cube_contains f 16 f 0 2 0 t i 16386 16386 public +16400 cube_contained f 16 f 0 2 0 t i 16386 16386 public +16401 cube_overlap f 16 f 0 2 0 t i 16386 16386 public +16402 cube_union f 16386 f 0 2 0 t i 16386 16386 public +16403 cube_inter f 16386 f 0 2 0 t i 16386 16386 public +16404 cube_size f 701 f 0 1 0 t i 16386 public +16405 cube_subset f 16386 f 0 2 0 t i 16386 1007 public +16406 cube_distance f 701 f 0 2 0 t i 16386 16386 public +16407 distance_chebyshev f 701 f 0 2 0 t i 16386 16386 public +16408 distance_taxicab f 701 f 0 2 0 t i 16386 16386 public +16409 cube_dim f 23 f 0 1 0 t i 16386 public +16410 cube_ll_coord f 701 f 0 2 0 t i 16386 23 public +16411 cube_ur_coord f 701 f 0 2 0 t i 16386 23 public +16412 cube_coord f 701 f 0 2 0 t i 16386 23 public +16413 cube_coord_llur f 701 f 0 2 0 t i 16386 23 public +16414 cube f 16386 f 0 1 0 t i 701 public +16415 cube f 16386 f 0 2 0 t i 701 701 public +16416 cube f 16386 f 0 2 0 t i 16386 701 public +16417 cube f 16386 f 0 3 0 t i 16386 701 701 public +16418 cube_is_point f 16 f 0 1 0 t i 16386 public +16419 cube_enlarge f 16386 f 0 3 0 t i 16386 701 23 public +16436 g_cube_consistent f 16 f 0 5 0 t i 2281 16386 21 26 2281 public +16439 g_cube_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16440 g_cube_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16441 g_cube_union f 16386 f 0 2 0 t i 2281 2281 public +16442 g_cube_same f 2281 f 0 3 0 t i 16386 16386 2281 public +16443 g_cube_distance f 701 f 0 5 0 t i 2281 16386 21 26 2281 public +16472 cube_recv f 16386 f 0 1 0 t i 2281 public +16473 cube_send f 17 f 0 1 0 t i 16386 public diff --git a/internal/catalog/data/18/ext/cube/pg_range.tsv b/internal/catalog/data/18/ext/cube/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/cube/pg_type.tsv b/internal/catalog/data/18/ext/cube/pg_type.tsv new file mode 100644 index 0000000..0a211bd --- /dev/null +++ b/internal/catalog/data/18/ext/cube/pg_type.tsv @@ -0,0 +1,2 @@ +16386 cube b U f -1 f 0 16391 0 0 -1 public +16391 _cube b A f -1 f 16386 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/earthdistance/META b/internal/catalog/data/18/ext/earthdistance/META new file mode 100644 index 0000000..5c9e610 --- /dev/null +++ b/internal/catalog/data/18/ext/earthdistance/META @@ -0,0 +1,4 @@ +version 1.2 +schema public +requires cube +server 18.3 diff --git a/internal/catalog/data/18/ext/earthdistance/pg_aggregate.tsv b/internal/catalog/data/18/ext/earthdistance/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/earthdistance/pg_cast.tsv b/internal/catalog/data/18/ext/earthdistance/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/earthdistance/pg_class.tsv b/internal/catalog/data/18/ext/earthdistance/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/earthdistance/pg_operator.tsv b/internal/catalog/data/18/ext/earthdistance/pg_operator.tsv new file mode 100644 index 0000000..a3f4421 --- /dev/null +++ b/internal/catalog/data/18/ext/earthdistance/pg_operator.tsv @@ -0,0 +1,15 @@ +16420 > b 16386 16386 16 16395 16422 16423 f f public +16421 >= b 16386 16386 16 16397 16423 16422 f f public +16422 < b 16386 16386 16 16394 16420 16421 f f public +16423 <= b 16386 16386 16 16396 16421 16420 f f public +16424 && b 16386 16386 16 16401 16424 0 f f public +16425 <> b 16386 16386 16 16393 16425 16426 f f public +16426 = b 16386 16386 16 16392 16426 16425 t f public +16427 <@ b 16386 16386 16 16400 16428 0 f f public +16428 @> b 16386 16386 16 16399 16427 0 f f public +16429 -> b 16386 23 701 16412 0 0 f f public +16430 ~> b 16386 23 701 16413 0 0 f f public +16431 <#> b 16386 16386 701 16408 16431 0 f f public +16432 <-> b 16386 16386 701 16406 16432 0 f f public +16433 <=> b 16386 16386 701 16407 16433 0 f f public +16489 <@> b 600 600 701 16488 16489 0 f f public diff --git a/internal/catalog/data/18/ext/earthdistance/pg_proc.tsv b/internal/catalog/data/18/ext/earthdistance/pg_proc.tsv new file mode 100644 index 0000000..a472940 --- /dev/null +++ b/internal/catalog/data/18/ext/earthdistance/pg_proc.tsv @@ -0,0 +1,52 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 cube_in f 16386 f 0 1 0 t i 2275 public +16388 cube f 16386 f 0 2 0 t i 1022 1022 public +16389 cube f 16386 f 0 1 0 t i 1022 public +16390 cube_out f 2275 f 0 1 0 t i 16386 public +16392 cube_eq f 16 f 0 2 0 t i 16386 16386 public +16393 cube_ne f 16 f 0 2 0 t i 16386 16386 public +16394 cube_lt f 16 f 0 2 0 t i 16386 16386 public +16395 cube_gt f 16 f 0 2 0 t i 16386 16386 public +16396 cube_le f 16 f 0 2 0 t i 16386 16386 public +16397 cube_ge f 16 f 0 2 0 t i 16386 16386 public +16398 cube_cmp f 23 f 0 2 0 t i 16386 16386 public +16399 cube_contains f 16 f 0 2 0 t i 16386 16386 public +16400 cube_contained f 16 f 0 2 0 t i 16386 16386 public +16401 cube_overlap f 16 f 0 2 0 t i 16386 16386 public +16402 cube_union f 16386 f 0 2 0 t i 16386 16386 public +16403 cube_inter f 16386 f 0 2 0 t i 16386 16386 public +16404 cube_size f 701 f 0 1 0 t i 16386 public +16405 cube_subset f 16386 f 0 2 0 t i 16386 1007 public +16406 cube_distance f 701 f 0 2 0 t i 16386 16386 public +16407 distance_chebyshev f 701 f 0 2 0 t i 16386 16386 public +16408 distance_taxicab f 701 f 0 2 0 t i 16386 16386 public +16409 cube_dim f 23 f 0 1 0 t i 16386 public +16410 cube_ll_coord f 701 f 0 2 0 t i 16386 23 public +16411 cube_ur_coord f 701 f 0 2 0 t i 16386 23 public +16412 cube_coord f 701 f 0 2 0 t i 16386 23 public +16413 cube_coord_llur f 701 f 0 2 0 t i 16386 23 public +16414 cube f 16386 f 0 1 0 t i 701 public +16415 cube f 16386 f 0 2 0 t i 701 701 public +16416 cube f 16386 f 0 2 0 t i 16386 701 public +16417 cube f 16386 f 0 3 0 t i 16386 701 701 public +16418 cube_is_point f 16 f 0 1 0 t i 16386 public +16419 cube_enlarge f 16386 f 0 3 0 t i 16386 701 23 public +16436 g_cube_consistent f 16 f 0 5 0 t i 2281 16386 21 26 2281 public +16439 g_cube_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16440 g_cube_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16441 g_cube_union f 16386 f 0 2 0 t i 2281 2281 public +16442 g_cube_same f 2281 f 0 3 0 t i 16386 16386 2281 public +16443 g_cube_distance f 701 f 0 5 0 t i 2281 16386 21 26 2281 public +16472 cube_recv f 16386 f 0 1 0 t i 2281 public +16473 cube_send f 17 f 0 1 0 t i 16386 public +16475 earth f 701 f 0 0 0 f i public +16481 sec_to_gc f 701 f 0 1 0 t i 701 public +16482 gc_to_sec f 701 f 0 1 0 t i 701 public +16483 ll_to_earth f 16477 f 0 2 0 t i 701 701 public +16484 latitude f 701 f 0 1 0 t i 16477 public +16485 longitude f 701 f 0 1 0 t i 16477 public +16486 earth_distance f 701 f 0 2 0 t i 16477 16477 public +16487 earth_box f 16386 f 0 2 0 t i 16477 701 public +16488 geo_distance f 701 f 0 2 0 t i 600 600 public diff --git a/internal/catalog/data/18/ext/earthdistance/pg_range.tsv b/internal/catalog/data/18/ext/earthdistance/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/earthdistance/pg_type.tsv b/internal/catalog/data/18/ext/earthdistance/pg_type.tsv new file mode 100644 index 0000000..5079d1e --- /dev/null +++ b/internal/catalog/data/18/ext/earthdistance/pg_type.tsv @@ -0,0 +1,4 @@ +16386 cube b U f -1 f 0 16391 0 0 -1 public +16391 _cube b A f -1 f 16386 0 0 0 -1 public +16476 _earth b A f -1 f 16477 0 0 0 -1 public +16477 earth d U f -1 f 0 16476 0 16386 -1 public diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/META b/internal/catalog/data/18/ext/fuzzystrmatch/META new file mode 100644 index 0000000..cc45ec7 --- /dev/null +++ b/internal/catalog/data/18/ext/fuzzystrmatch/META @@ -0,0 +1,4 @@ +version 1.2 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_aggregate.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_cast.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_class.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_operator.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_operator.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_proc.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_proc.tsv new file mode 100644 index 0000000..cadf943 --- /dev/null +++ b/internal/catalog/data/18/ext/fuzzystrmatch/pg_proc.tsv @@ -0,0 +1,14 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 levenshtein f 23 f 0 2 0 t i 25 25 public +16387 levenshtein f 23 f 0 5 0 t i 25 25 23 23 23 public +16388 levenshtein_less_equal f 23 f 0 3 0 t i 25 25 23 public +16389 levenshtein_less_equal f 23 f 0 6 0 t i 25 25 23 23 23 23 public +16390 metaphone f 25 f 0 2 0 t i 25 23 public +16391 soundex f 25 f 0 1 0 t i 25 public +16392 text_soundex f 25 f 0 1 0 t i 25 public +16393 difference f 23 f 0 2 0 t i 25 25 public +16394 dmetaphone f 25 f 0 1 0 t i 25 public +16395 dmetaphone_alt f 25 f 0 1 0 t i 25 public +16396 daitch_mokotoff f 1009 f 0 1 0 t i 25 public diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_range.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/fuzzystrmatch/pg_type.tsv b/internal/catalog/data/18/ext/fuzzystrmatch/pg_type.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/hstore/META b/internal/catalog/data/18/ext/hstore/META new file mode 100644 index 0000000..1f19893 --- /dev/null +++ b/internal/catalog/data/18/ext/hstore/META @@ -0,0 +1,4 @@ +version 1.8 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/hstore/pg_aggregate.tsv b/internal/catalog/data/18/ext/hstore/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/hstore/pg_cast.tsv b/internal/catalog/data/18/ext/hstore/pg_cast.tsv new file mode 100644 index 0000000..ce989f0 --- /dev/null +++ b/internal/catalog/data/18/ext/hstore/pg_cast.tsv @@ -0,0 +1,3 @@ +16425 1009 16386 16424 e f +16427 16386 114 16426 e f +16430 16386 3802 16429 e f diff --git a/internal/catalog/data/18/ext/hstore/pg_class.tsv b/internal/catalog/data/18/ext/hstore/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/hstore/pg_operator.tsv b/internal/catalog/data/18/ext/hstore/pg_operator.tsv new file mode 100644 index 0000000..9d4db6a --- /dev/null +++ b/internal/catalog/data/18/ext/hstore/pg_operator.tsv @@ -0,0 +1,20 @@ +16394 -> b 16386 25 25 16393 0 0 f f public +16396 -> b 16386 1009 1009 16395 0 0 f f public +16400 ? b 16386 25 16 16399 0 0 f f public +16402 ?| b 16386 1009 16 16401 0 0 f f public +16404 ?& b 16386 1009 16 16403 0 0 f f public +16410 - b 16386 25 16386 16407 0 0 f f public +16411 - b 16386 1009 16386 16408 0 0 f f public +16412 - b 16386 16386 16386 16409 0 0 f f public +16414 || b 16386 16386 16386 16413 0 0 f f public +16417 <@ b 16386 16386 16 16416 16418 0 f f public +16418 @> b 16386 16386 16 16415 16417 0 f f public +16434 %% l 0 16386 1009 16433 0 0 f f public +16436 %# l 0 16386 1009 16435 0 0 f f public +16443 #= b 2283 16386 2283 16442 0 0 f f public +16451 <> b 16386 16386 16 16445 16451 16452 f f public +16452 = b 16386 16386 16 16444 16452 16451 t t public +16453 #># b 16386 16386 16 16446 16455 16456 f f public +16454 #>=# b 16386 16386 16 16447 16456 16455 f f public +16455 #<# b 16386 16386 16 16448 16453 16454 f f public +16456 #<=# b 16386 16386 16 16449 16454 16453 f f public diff --git a/internal/catalog/data/18/ext/hstore/pg_proc.tsv b/internal/catalog/data/18/ext/hstore/pg_proc.tsv new file mode 100644 index 0000000..08dadc1 --- /dev/null +++ b/internal/catalog/data/18/ext/hstore/pg_proc.tsv @@ -0,0 +1,63 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 hstore_in f 16386 f 0 1 0 t i 2275 public +16388 hstore_out f 2275 f 0 1 0 t i 16386 public +16389 hstore_recv f 16386 f 0 1 0 t i 2281 public +16390 hstore_send f 17 f 0 1 0 t i 16386 public +16392 hstore_version_diag f 23 f 0 1 0 t i 16386 public +16393 fetchval f 25 f 0 2 0 t i 16386 25 public +16395 slice_array f 1009 f 0 2 0 t i 16386 1009 public +16397 slice f 16386 f 0 2 0 t i 16386 1009 public +16398 isexists f 16 f 0 2 0 t i 16386 25 public +16399 exist f 16 f 0 2 0 t i 16386 25 public +16401 exists_any f 16 f 0 2 0 t i 16386 1009 public +16403 exists_all f 16 f 0 2 0 t i 16386 1009 public +16405 isdefined f 16 f 0 2 0 t i 16386 25 public +16406 defined f 16 f 0 2 0 t i 16386 25 public +16407 delete f 16386 f 0 2 0 t i 16386 25 public +16408 delete f 16386 f 0 2 0 t i 16386 1009 public +16409 delete f 16386 f 0 2 0 t i 16386 16386 public +16413 hs_concat f 16386 f 0 2 0 t i 16386 16386 public +16415 hs_contains f 16 f 0 2 0 t i 16386 16386 public +16416 hs_contained f 16 f 0 2 0 t i 16386 16386 public +16421 tconvert f 16386 f 0 2 0 f i 25 25 public +16422 hstore f 16386 f 0 2 0 f i 25 25 public +16423 hstore f 16386 f 0 2 0 f i 1009 1009 public +16424 hstore f 16386 f 0 1 0 t i 1009 public +16426 hstore_to_json f 114 f 0 1 0 t i 16386 public +16428 hstore_to_json_loose f 114 f 0 1 0 t i 16386 public +16429 hstore_to_jsonb f 3802 f 0 1 0 t i 16386 public +16431 hstore_to_jsonb_loose f 3802 f 0 1 0 t i 16386 public +16432 hstore f 16386 f 0 1 0 f i 2249 public +16433 hstore_to_array f 1009 f 0 1 0 t i 16386 public +16435 hstore_to_matrix f 1009 f 0 1 0 t i 16386 public +16437 akeys f 1009 f 0 1 0 t i 16386 public +16438 avals f 1009 f 0 1 0 t i 16386 public +16439 skeys f 25 t 0 1 0 t i 16386 public +16440 svals f 25 t 0 1 0 t i 16386 public +16441 each f 2249 t 0 1 0 t i 16386 16386 25 25 ioo hs,key,value public +16442 populate_record f 2283 f 0 2 0 f i 2283 16386 public +16444 hstore_eq f 16 f 0 2 0 t i 16386 16386 public +16445 hstore_ne f 16 f 0 2 0 t i 16386 16386 public +16446 hstore_gt f 16 f 0 2 0 t i 16386 16386 public +16447 hstore_ge f 16 f 0 2 0 t i 16386 16386 public +16448 hstore_lt f 16 f 0 2 0 t i 16386 16386 public +16449 hstore_le f 16 f 0 2 0 t i 16386 16386 public +16450 hstore_cmp f 23 f 0 2 0 t i 16386 16386 public +16465 hstore_hash f 23 f 0 1 0 t i 16386 public +16471 ghstore_in f 16470 f 0 1 0 t i 2275 public +16472 ghstore_out f 2275 f 0 1 0 t i 16470 public +16474 ghstore_compress f 2281 f 0 1 0 t i 2281 public +16475 ghstore_decompress f 2281 f 0 1 0 t i 2281 public +16476 ghstore_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16477 ghstore_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16478 ghstore_union f 16470 f 0 2 0 t i 2281 2281 public +16479 ghstore_same f 2281 f 0 3 0 t i 16470 16470 2281 public +16480 ghstore_consistent f 16 f 0 5 0 t i 2281 16386 21 26 2281 public +16495 gin_extract_hstore f 2281 f 0 2 0 t i 16386 2281 public +16496 gin_extract_hstore_query f 2281 f 0 5 0 t i 16386 2281 21 2281 2281 public +16497 gin_consistent_hstore f 16 f 0 6 0 t i 2281 21 16386 23 2281 2281 public +16508 hstore_hash_extended f 20 f 0 2 0 t i 16386 20 public +16510 ghstore_options f 2278 f 0 1 0 f i 2281 public +16512 hstore_subscript_handler f 2281 f 0 1 0 t i 2281 public diff --git a/internal/catalog/data/18/ext/hstore/pg_range.tsv b/internal/catalog/data/18/ext/hstore/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/hstore/pg_type.tsv b/internal/catalog/data/18/ext/hstore/pg_type.tsv new file mode 100644 index 0000000..164dc7b --- /dev/null +++ b/internal/catalog/data/18/ext/hstore/pg_type.tsv @@ -0,0 +1,4 @@ +16386 hstore b U f -1 f 0 16391 0 0 -1 public +16391 _hstore b A f -1 f 16386 0 0 0 -1 public +16470 ghstore b U f -1 f 0 16473 0 0 -1 public +16473 _ghstore b A f -1 f 16470 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/intarray/META b/internal/catalog/data/18/ext/intarray/META new file mode 100644 index 0000000..ff631ae --- /dev/null +++ b/internal/catalog/data/18/ext/intarray/META @@ -0,0 +1,4 @@ +version 1.5 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/intarray/pg_aggregate.tsv b/internal/catalog/data/18/ext/intarray/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/intarray/pg_cast.tsv b/internal/catalog/data/18/ext/intarray/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/intarray/pg_class.tsv b/internal/catalog/data/18/ext/intarray/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/intarray/pg_operator.tsv b/internal/catalog/data/18/ext/intarray/pg_operator.tsv new file mode 100644 index 0000000..0ba338f --- /dev/null +++ b/internal/catalog/data/18/ext/intarray/pg_operator.tsv @@ -0,0 +1,14 @@ +16394 ~~ b 16386 1007 16 16392 16395 0 f f public +16395 @@ b 1007 16386 16 16391 16394 0 f f public +16409 && b 1007 1007 16 16398 16409 0 f f public +16410 <@ b 1007 1007 16 16397 16411 0 f f public +16411 @> b 1007 1007 16 16396 16410 0 f f public +16416 # l 0 1007 23 16415 0 0 f f public +16423 # b 1007 23 23 16422 0 0 f f public +16427 + b 1007 23 1007 16426 0 0 f f public +16429 + b 1007 1007 1007 16428 16429 0 f f public +16431 - b 1007 23 1007 16430 0 0 f f public +16433 | b 1007 23 1007 16432 0 0 f f public +16434 | b 1007 1007 1007 16401 16434 0 f f public +16436 - b 1007 1007 1007 16435 0 0 f f public +16437 & b 1007 1007 1007 16402 16437 0 f f public diff --git a/internal/catalog/data/18/ext/intarray/pg_proc.tsv b/internal/catalog/data/18/ext/intarray/pg_proc.tsv new file mode 100644 index 0000000..bff8499 --- /dev/null +++ b/internal/catalog/data/18/ext/intarray/pg_proc.tsv @@ -0,0 +1,57 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 bqarr_in f 16386 f 0 1 0 t i 2275 public +16388 bqarr_out f 2275 f 0 1 0 t i 16386 public +16390 querytree f 25 f 0 1 0 t i 16386 public +16391 boolop f 16 f 0 2 0 t i 1007 16386 public +16392 rboolop f 16 f 0 2 0 t i 16386 1007 public +16393 _int_matchsel f 701 f 0 4 0 t s 2281 26 2281 23 public +16396 _int_contains f 16 f 0 2 0 t i 1007 1007 public +16397 _int_contained f 16 f 0 2 0 t i 1007 1007 public +16398 _int_overlap f 16 f 0 2 0 t i 1007 1007 public +16399 _int_same f 16 f 0 2 0 t i 1007 1007 public +16400 _int_different f 16 f 0 2 0 t i 1007 1007 public +16401 _int_union f 1007 f 0 2 0 t i 1007 1007 public +16402 _int_inter f 1007 f 0 2 0 t i 1007 1007 public +16403 _int_overlap_sel f 701 f 0 4 0 t s 2281 26 2281 23 public +16404 _int_contains_sel f 701 f 0 4 0 t s 2281 26 2281 23 public +16405 _int_contained_sel f 701 f 0 4 0 t s 2281 26 2281 23 public +16406 _int_overlap_joinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 public +16407 _int_contains_joinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 public +16408 _int_contained_joinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 public +16414 intset f 1007 f 0 1 0 t i 23 public +16415 icount f 23 f 0 1 0 t i 1007 public +16417 sort f 1007 f 0 2 0 t i 1007 25 public +16418 sort f 1007 f 0 1 0 t i 1007 public +16419 sort_asc f 1007 f 0 1 0 t i 1007 public +16420 sort_desc f 1007 f 0 1 0 t i 1007 public +16421 uniq f 1007 f 0 1 0 t i 1007 public +16422 idx f 23 f 0 2 0 t i 1007 23 public +16424 subarray f 1007 f 0 3 0 t i 1007 23 23 public +16425 subarray f 1007 f 0 2 0 t i 1007 23 public +16426 intarray_push_elem f 1007 f 0 2 0 t i 1007 23 public +16428 intarray_push_array f 1007 f 0 2 0 t i 1007 1007 public +16430 intarray_del_elem f 1007 f 0 2 0 t i 1007 23 public +16432 intset_union_elem f 1007 f 0 2 0 t i 1007 23 public +16435 intset_subtract f 1007 f 0 2 0 t i 1007 1007 public +16438 g_int_consistent f 16 f 0 5 0 t i 2281 1007 21 26 2281 public +16439 g_int_compress f 2281 f 0 1 0 t i 2281 public +16440 g_int_decompress f 2281 f 0 1 0 t i 2281 public +16441 g_int_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16442 g_int_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16443 g_int_union f 1007 f 0 2 0 t i 2281 2281 public +16444 g_int_same f 2281 f 0 3 0 t i 1007 1007 2281 public +16462 _intbig_in f 16461 f 0 1 0 t i 2275 public +16463 _intbig_out f 2275 f 0 1 0 t i 16461 public +16465 g_intbig_consistent f 16 f 0 5 0 t i 2281 1007 21 26 2281 public +16466 g_intbig_compress f 2281 f 0 1 0 t i 2281 public +16467 g_intbig_decompress f 2281 f 0 1 0 t i 2281 public +16468 g_intbig_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16469 g_intbig_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16470 g_intbig_union f 16461 f 0 2 0 t i 2281 2281 public +16471 g_intbig_same f 2281 f 0 3 0 t i 16461 16461 2281 public +16488 ginint4_queryextract f 2281 f 0 7 0 t i 1007 2281 21 2281 2281 2281 2281 public +16489 ginint4_consistent f 16 f 0 8 0 t i 2281 21 1007 23 2281 2281 2281 2281 public +16503 g_int_options f 2278 f 0 1 0 f i 2281 public +16504 g_intbig_options f 2278 f 0 1 0 f i 2281 public diff --git a/internal/catalog/data/18/ext/intarray/pg_range.tsv b/internal/catalog/data/18/ext/intarray/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/intarray/pg_type.tsv b/internal/catalog/data/18/ext/intarray/pg_type.tsv new file mode 100644 index 0000000..9221d6b --- /dev/null +++ b/internal/catalog/data/18/ext/intarray/pg_type.tsv @@ -0,0 +1,4 @@ +16386 query_int b U f -1 f 0 16389 0 0 -1 public +16389 _query_int b A f -1 f 16386 0 0 0 -1 public +16461 intbig_gkey b U f -1 f 0 16464 0 0 -1 public +16464 _intbig_gkey b A f -1 f 16461 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/isn/META b/internal/catalog/data/18/ext/isn/META new file mode 100644 index 0000000..869e73e --- /dev/null +++ b/internal/catalog/data/18/ext/isn/META @@ -0,0 +1,4 @@ +version 1.3 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/isn/pg_aggregate.tsv b/internal/catalog/data/18/ext/isn/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/isn/pg_cast.tsv b/internal/catalog/data/18/ext/isn/pg_cast.tsv new file mode 100644 index 0000000..b28287d --- /dev/null +++ b/internal/catalog/data/18/ext/isn/pg_cast.tsv @@ -0,0 +1,20 @@ +17019 16386 16390 17012 e f +17020 16386 16402 17015 e f +17021 16386 16394 17013 e f +17022 16386 16406 17016 e f +17023 16386 16398 17014 e f +17024 16386 16410 17017 e f +17025 16386 16414 17018 e f +17026 16390 16386 0 a b +17027 16402 16386 0 a b +17028 16394 16386 0 a b +17029 16406 16386 0 a b +17030 16398 16386 0 a b +17031 16410 16386 0 a b +17032 16414 16386 0 a b +17033 16402 16390 0 a b +17034 16390 16402 0 a b +17035 16406 16394 0 a b +17036 16394 16406 0 a b +17037 16410 16398 0 a b +17038 16398 16410 0 a b diff --git a/internal/catalog/data/18/ext/isn/pg_class.tsv b/internal/catalog/data/18/ext/isn/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/isn/pg_operator.tsv b/internal/catalog/data/18/ext/isn/pg_operator.tsv new file mode 100644 index 0000000..8df0b2d --- /dev/null +++ b/internal/catalog/data/18/ext/isn/pg_operator.tsv @@ -0,0 +1,168 @@ +16586 > b 16386 16386 16 16422 16588 16589 f f public +16587 >= b 16386 16386 16 16421 16589 16588 f f public +16588 < b 16386 16386 16 16418 16586 16587 f f public +16589 <= b 16386 16386 16 16419 16587 16586 f f public +16590 <> b 16386 16386 16 16423 16590 16591 f f public +16591 = b 16386 16386 16 16420 16591 16590 t t public +16592 > b 16390 16386 16 16482 16594 16601 f f public +16593 >= b 16386 16390 16 16427 16601 16594 f f public +16594 < b 16386 16390 16 16424 16592 16593 f f public +16595 >= b 16390 16386 16 16481 16597 16602 f f public +16596 > b 16386 16390 16 16428 16602 16597 f f public +16597 <= b 16386 16390 16 16425 16595 16596 f f public +16598 = b 16390 16386 16 16480 16600 16603 t t public +16599 <> b 16386 16390 16 16429 16603 16600 f f public +16600 = b 16386 16390 16 16426 16598 16599 t t public +16601 <= b 16390 16386 16 16479 16593 16592 f f public +16602 < b 16390 16386 16 16478 16596 16595 f f public +16603 <> b 16390 16386 16 16483 16599 16598 f f public +16604 > b 16394 16386 16 16518 16606 16613 f f public +16605 >= b 16386 16394 16 16433 16613 16606 f f public +16606 < b 16386 16394 16 16430 16604 16605 f f public +16607 >= b 16394 16386 16 16517 16609 16614 f f public +16608 > b 16386 16394 16 16434 16614 16609 f f public +16609 <= b 16386 16394 16 16431 16607 16608 f f public +16610 = b 16394 16386 16 16516 16612 16615 t t public +16611 <> b 16386 16394 16 16435 16615 16612 f f public +16612 = b 16386 16394 16 16432 16610 16611 t t public +16613 <= b 16394 16386 16 16515 16605 16604 f f public +16614 < b 16394 16386 16 16514 16608 16607 f f public +16615 <> b 16394 16386 16 16519 16611 16610 f f public +16616 > b 16398 16386 16 16554 16618 16625 f f public +16617 >= b 16386 16398 16 16439 16625 16618 f f public +16618 < b 16386 16398 16 16436 16616 16617 f f public +16619 >= b 16398 16386 16 16553 16621 16626 f f public +16620 > b 16386 16398 16 16440 16626 16621 f f public +16621 <= b 16386 16398 16 16437 16619 16620 f f public +16622 = b 16398 16386 16 16552 16624 16627 t t public +16623 <> b 16386 16398 16 16441 16627 16624 f f public +16624 = b 16386 16398 16 16438 16622 16623 t t public +16625 <= b 16398 16386 16 16551 16617 16616 f f public +16626 < b 16398 16386 16 16550 16620 16619 f f public +16627 <> b 16398 16386 16 16555 16623 16622 f f public +16628 > b 16402 16386 16 16500 16630 16637 f f public +16629 >= b 16386 16402 16 16445 16637 16630 f f public +16630 < b 16386 16402 16 16442 16628 16629 f f public +16631 >= b 16402 16386 16 16499 16633 16638 f f public +16632 > b 16386 16402 16 16446 16638 16633 f f public +16633 <= b 16386 16402 16 16443 16631 16632 f f public +16634 = b 16402 16386 16 16498 16636 16639 t t public +16635 <> b 16386 16402 16 16447 16639 16636 f f public +16636 = b 16386 16402 16 16444 16634 16635 t t public +16637 <= b 16402 16386 16 16497 16629 16628 f f public +16638 < b 16402 16386 16 16496 16632 16631 f f public +16639 <> b 16402 16386 16 16501 16635 16634 f f public +16640 > b 16406 16386 16 16536 16642 16649 f f public +16641 >= b 16386 16406 16 16451 16649 16642 f f public +16642 < b 16386 16406 16 16448 16640 16641 f f public +16643 >= b 16406 16386 16 16535 16645 16650 f f public +16644 > b 16386 16406 16 16452 16650 16645 f f public +16645 <= b 16386 16406 16 16449 16643 16644 f f public +16646 = b 16406 16386 16 16534 16648 16651 t t public +16647 <> b 16386 16406 16 16453 16651 16648 f f public +16648 = b 16386 16406 16 16450 16646 16647 t t public +16649 <= b 16406 16386 16 16533 16641 16640 f f public +16650 < b 16406 16386 16 16532 16644 16643 f f public +16651 <> b 16406 16386 16 16537 16647 16646 f f public +16652 > b 16410 16386 16 16572 16654 16661 f f public +16653 >= b 16386 16410 16 16457 16661 16654 f f public +16654 < b 16386 16410 16 16454 16652 16653 f f public +16655 >= b 16410 16386 16 16571 16657 16662 f f public +16656 > b 16386 16410 16 16458 16662 16657 f f public +16657 <= b 16386 16410 16 16455 16655 16656 f f public +16658 = b 16410 16386 16 16570 16660 16663 t t public +16659 <> b 16386 16410 16 16459 16663 16660 f f public +16660 = b 16386 16410 16 16456 16658 16659 t t public +16661 <= b 16410 16386 16 16569 16653 16652 f f public +16662 < b 16410 16386 16 16568 16656 16655 f f public +16663 <> b 16410 16386 16 16573 16659 16658 f f public +16664 > b 16414 16386 16 16584 16666 16673 f f public +16665 >= b 16386 16414 16 16463 16673 16666 f f public +16666 < b 16386 16414 16 16460 16664 16665 f f public +16667 >= b 16414 16386 16 16583 16669 16674 f f public +16668 > b 16386 16414 16 16464 16674 16669 f f public +16669 <= b 16386 16414 16 16461 16667 16668 f f public +16670 = b 16414 16386 16 16582 16672 16675 t t public +16671 <> b 16386 16414 16 16465 16675 16672 f f public +16672 = b 16386 16414 16 16462 16670 16671 t t public +16673 <= b 16414 16386 16 16581 16665 16664 f f public +16674 < b 16414 16386 16 16580 16668 16667 f f public +16675 <> b 16414 16386 16 16585 16671 16670 f f public +16676 > b 16390 16390 16 16470 16678 16679 f f public +16677 >= b 16390 16390 16 16469 16679 16678 f f public +16678 < b 16390 16390 16 16466 16676 16677 f f public +16679 <= b 16390 16390 16 16467 16677 16676 f f public +16680 <> b 16390 16390 16 16471 16680 16681 f f public +16681 = b 16390 16390 16 16468 16681 16680 t t public +16682 > b 16402 16390 16 16494 16684 16691 f f public +16683 >= b 16390 16402 16 16475 16691 16684 f f public +16684 < b 16390 16402 16 16472 16682 16683 f f public +16685 >= b 16402 16390 16 16493 16687 16692 f f public +16686 > b 16390 16402 16 16476 16692 16687 f f public +16687 <= b 16390 16402 16 16473 16685 16686 f f public +16688 = b 16402 16390 16 16492 16690 16693 t t public +16689 <> b 16390 16402 16 16477 16693 16690 f f public +16690 = b 16390 16402 16 16474 16688 16689 t t public +16691 <= b 16402 16390 16 16491 16683 16682 f f public +16692 < b 16402 16390 16 16490 16686 16685 f f public +16693 <> b 16402 16390 16 16495 16689 16688 f f public +16694 > b 16402 16402 16 16488 16696 16697 f f public +16695 >= b 16402 16402 16 16487 16697 16696 f f public +16696 < b 16402 16402 16 16484 16694 16695 f f public +16697 <= b 16402 16402 16 16485 16695 16694 f f public +16698 <> b 16402 16402 16 16489 16698 16699 f f public +16699 = b 16402 16402 16 16486 16699 16698 t t public +16700 > b 16394 16394 16 16506 16702 16703 f f public +16701 >= b 16394 16394 16 16505 16703 16702 f f public +16702 < b 16394 16394 16 16502 16700 16701 f f public +16703 <= b 16394 16394 16 16503 16701 16700 f f public +16704 <> b 16394 16394 16 16507 16704 16705 f f public +16705 = b 16394 16394 16 16504 16705 16704 t t public +16706 > b 16406 16394 16 16530 16708 16715 f f public +16707 >= b 16394 16406 16 16511 16715 16708 f f public +16708 < b 16394 16406 16 16508 16706 16707 f f public +16709 >= b 16406 16394 16 16529 16711 16716 f f public +16710 > b 16394 16406 16 16512 16716 16711 f f public +16711 <= b 16394 16406 16 16509 16709 16710 f f public +16712 = b 16406 16394 16 16528 16714 16717 t t public +16713 <> b 16394 16406 16 16513 16717 16714 f f public +16714 = b 16394 16406 16 16510 16712 16713 t t public +16715 <= b 16406 16394 16 16527 16707 16706 f f public +16716 < b 16406 16394 16 16526 16710 16709 f f public +16717 <> b 16406 16394 16 16531 16713 16712 f f public +16718 > b 16406 16406 16 16524 16720 16721 f f public +16719 >= b 16406 16406 16 16523 16721 16720 f f public +16720 < b 16406 16406 16 16520 16718 16719 f f public +16721 <= b 16406 16406 16 16521 16719 16718 f f public +16722 <> b 16406 16406 16 16525 16722 16723 f f public +16723 = b 16406 16406 16 16522 16723 16722 t t public +16724 > b 16398 16398 16 16542 16726 16727 f f public +16725 >= b 16398 16398 16 16541 16727 16726 f f public +16726 < b 16398 16398 16 16538 16724 16725 f f public +16727 <= b 16398 16398 16 16539 16725 16724 f f public +16728 <> b 16398 16398 16 16543 16728 16729 f f public +16729 = b 16398 16398 16 16540 16729 16728 t t public +16730 > b 16410 16398 16 16566 16732 16739 f f public +16731 >= b 16398 16410 16 16547 16739 16732 f f public +16732 < b 16398 16410 16 16544 16730 16731 f f public +16733 >= b 16410 16398 16 16565 16735 16740 f f public +16734 > b 16398 16410 16 16548 16740 16735 f f public +16735 <= b 16398 16410 16 16545 16733 16734 f f public +16736 = b 16410 16398 16 16564 16738 16741 t t public +16737 <> b 16398 16410 16 16549 16741 16738 f f public +16738 = b 16398 16410 16 16546 16736 16737 t t public +16739 <= b 16410 16398 16 16563 16731 16730 f f public +16740 < b 16410 16398 16 16562 16734 16733 f f public +16741 <> b 16410 16398 16 16567 16737 16736 f f public +16742 > b 16410 16410 16 16560 16744 16745 f f public +16743 >= b 16410 16410 16 16559 16745 16744 f f public +16744 < b 16410 16410 16 16556 16742 16743 f f public +16745 <= b 16410 16410 16 16557 16743 16742 f f public +16746 <> b 16410 16410 16 16561 16746 16747 f f public +16747 = b 16410 16410 16 16558 16747 16746 t t public +16748 > b 16414 16414 16 16578 16750 16751 f f public +16749 >= b 16414 16414 16 16577 16751 16750 f f public +16750 < b 16414 16414 16 16574 16748 16749 f f public +16751 <= b 16414 16414 16 16575 16749 16748 f f public +16752 <> b 16414 16414 16 16579 16752 16753 f f public +16753 = b 16414 16414 16 16576 16753 16752 t t public diff --git a/internal/catalog/data/18/ext/isn/pg_proc.tsv b/internal/catalog/data/18/ext/isn/pg_proc.tsv new file mode 100644 index 0000000..cebb059 --- /dev/null +++ b/internal/catalog/data/18/ext/isn/pg_proc.tsv @@ -0,0 +1,248 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 ean13_in f 16386 f 0 1 0 t i 2275 public +16388 ean13_out f 2275 f 0 1 0 t i 16386 public +16391 isbn13_in f 16390 f 0 1 0 t i 2275 public +16392 ean13_out f 2275 f 0 1 0 t i 16390 public +16395 ismn13_in f 16394 f 0 1 0 t i 2275 public +16396 ean13_out f 2275 f 0 1 0 t i 16394 public +16399 issn13_in f 16398 f 0 1 0 t i 2275 public +16400 ean13_out f 2275 f 0 1 0 t i 16398 public +16403 isbn_in f 16402 f 0 1 0 t i 2275 public +16404 isn_out f 2275 f 0 1 0 t i 16402 public +16407 ismn_in f 16406 f 0 1 0 t i 2275 public +16408 isn_out f 2275 f 0 1 0 t i 16406 public +16411 issn_in f 16410 f 0 1 0 t i 2275 public +16412 isn_out f 2275 f 0 1 0 t i 16410 public +16415 upc_in f 16414 f 0 1 0 t i 2275 public +16416 isn_out f 2275 f 0 1 0 t i 16414 public +16418 isnlt f 16 f 0 2 0 t i 16386 16386 public +16419 isnle f 16 f 0 2 0 t i 16386 16386 public +16420 isneq f 16 f 0 2 0 t i 16386 16386 public +16421 isnge f 16 f 0 2 0 t i 16386 16386 public +16422 isngt f 16 f 0 2 0 t i 16386 16386 public +16423 isnne f 16 f 0 2 0 t i 16386 16386 public +16424 isnlt f 16 f 0 2 0 t i 16386 16390 public +16425 isnle f 16 f 0 2 0 t i 16386 16390 public +16426 isneq f 16 f 0 2 0 t i 16386 16390 public +16427 isnge f 16 f 0 2 0 t i 16386 16390 public +16428 isngt f 16 f 0 2 0 t i 16386 16390 public +16429 isnne f 16 f 0 2 0 t i 16386 16390 public +16430 isnlt f 16 f 0 2 0 t i 16386 16394 public +16431 isnle f 16 f 0 2 0 t i 16386 16394 public +16432 isneq f 16 f 0 2 0 t i 16386 16394 public +16433 isnge f 16 f 0 2 0 t i 16386 16394 public +16434 isngt f 16 f 0 2 0 t i 16386 16394 public +16435 isnne f 16 f 0 2 0 t i 16386 16394 public +16436 isnlt f 16 f 0 2 0 t i 16386 16398 public +16437 isnle f 16 f 0 2 0 t i 16386 16398 public +16438 isneq f 16 f 0 2 0 t i 16386 16398 public +16439 isnge f 16 f 0 2 0 t i 16386 16398 public +16440 isngt f 16 f 0 2 0 t i 16386 16398 public +16441 isnne f 16 f 0 2 0 t i 16386 16398 public +16442 isnlt f 16 f 0 2 0 t i 16386 16402 public +16443 isnle f 16 f 0 2 0 t i 16386 16402 public +16444 isneq f 16 f 0 2 0 t i 16386 16402 public +16445 isnge f 16 f 0 2 0 t i 16386 16402 public +16446 isngt f 16 f 0 2 0 t i 16386 16402 public +16447 isnne f 16 f 0 2 0 t i 16386 16402 public +16448 isnlt f 16 f 0 2 0 t i 16386 16406 public +16449 isnle f 16 f 0 2 0 t i 16386 16406 public +16450 isneq f 16 f 0 2 0 t i 16386 16406 public +16451 isnge f 16 f 0 2 0 t i 16386 16406 public +16452 isngt f 16 f 0 2 0 t i 16386 16406 public +16453 isnne f 16 f 0 2 0 t i 16386 16406 public +16454 isnlt f 16 f 0 2 0 t i 16386 16410 public +16455 isnle f 16 f 0 2 0 t i 16386 16410 public +16456 isneq f 16 f 0 2 0 t i 16386 16410 public +16457 isnge f 16 f 0 2 0 t i 16386 16410 public +16458 isngt f 16 f 0 2 0 t i 16386 16410 public +16459 isnne f 16 f 0 2 0 t i 16386 16410 public +16460 isnlt f 16 f 0 2 0 t i 16386 16414 public +16461 isnle f 16 f 0 2 0 t i 16386 16414 public +16462 isneq f 16 f 0 2 0 t i 16386 16414 public +16463 isnge f 16 f 0 2 0 t i 16386 16414 public +16464 isngt f 16 f 0 2 0 t i 16386 16414 public +16465 isnne f 16 f 0 2 0 t i 16386 16414 public +16466 isnlt f 16 f 0 2 0 t i 16390 16390 public +16467 isnle f 16 f 0 2 0 t i 16390 16390 public +16468 isneq f 16 f 0 2 0 t i 16390 16390 public +16469 isnge f 16 f 0 2 0 t i 16390 16390 public +16470 isngt f 16 f 0 2 0 t i 16390 16390 public +16471 isnne f 16 f 0 2 0 t i 16390 16390 public +16472 isnlt f 16 f 0 2 0 t i 16390 16402 public +16473 isnle f 16 f 0 2 0 t i 16390 16402 public +16474 isneq f 16 f 0 2 0 t i 16390 16402 public +16475 isnge f 16 f 0 2 0 t i 16390 16402 public +16476 isngt f 16 f 0 2 0 t i 16390 16402 public +16477 isnne f 16 f 0 2 0 t i 16390 16402 public +16478 isnlt f 16 f 0 2 0 t i 16390 16386 public +16479 isnle f 16 f 0 2 0 t i 16390 16386 public +16480 isneq f 16 f 0 2 0 t i 16390 16386 public +16481 isnge f 16 f 0 2 0 t i 16390 16386 public +16482 isngt f 16 f 0 2 0 t i 16390 16386 public +16483 isnne f 16 f 0 2 0 t i 16390 16386 public +16484 isnlt f 16 f 0 2 0 t i 16402 16402 public +16485 isnle f 16 f 0 2 0 t i 16402 16402 public +16486 isneq f 16 f 0 2 0 t i 16402 16402 public +16487 isnge f 16 f 0 2 0 t i 16402 16402 public +16488 isngt f 16 f 0 2 0 t i 16402 16402 public +16489 isnne f 16 f 0 2 0 t i 16402 16402 public +16490 isnlt f 16 f 0 2 0 t i 16402 16390 public +16491 isnle f 16 f 0 2 0 t i 16402 16390 public +16492 isneq f 16 f 0 2 0 t i 16402 16390 public +16493 isnge f 16 f 0 2 0 t i 16402 16390 public +16494 isngt f 16 f 0 2 0 t i 16402 16390 public +16495 isnne f 16 f 0 2 0 t i 16402 16390 public +16496 isnlt f 16 f 0 2 0 t i 16402 16386 public +16497 isnle f 16 f 0 2 0 t i 16402 16386 public +16498 isneq f 16 f 0 2 0 t i 16402 16386 public +16499 isnge f 16 f 0 2 0 t i 16402 16386 public +16500 isngt f 16 f 0 2 0 t i 16402 16386 public +16501 isnne f 16 f 0 2 0 t i 16402 16386 public +16502 isnlt f 16 f 0 2 0 t i 16394 16394 public +16503 isnle f 16 f 0 2 0 t i 16394 16394 public +16504 isneq f 16 f 0 2 0 t i 16394 16394 public +16505 isnge f 16 f 0 2 0 t i 16394 16394 public +16506 isngt f 16 f 0 2 0 t i 16394 16394 public +16507 isnne f 16 f 0 2 0 t i 16394 16394 public +16508 isnlt f 16 f 0 2 0 t i 16394 16406 public +16509 isnle f 16 f 0 2 0 t i 16394 16406 public +16510 isneq f 16 f 0 2 0 t i 16394 16406 public +16511 isnge f 16 f 0 2 0 t i 16394 16406 public +16512 isngt f 16 f 0 2 0 t i 16394 16406 public +16513 isnne f 16 f 0 2 0 t i 16394 16406 public +16514 isnlt f 16 f 0 2 0 t i 16394 16386 public +16515 isnle f 16 f 0 2 0 t i 16394 16386 public +16516 isneq f 16 f 0 2 0 t i 16394 16386 public +16517 isnge f 16 f 0 2 0 t i 16394 16386 public +16518 isngt f 16 f 0 2 0 t i 16394 16386 public +16519 isnne f 16 f 0 2 0 t i 16394 16386 public +16520 isnlt f 16 f 0 2 0 t i 16406 16406 public +16521 isnle f 16 f 0 2 0 t i 16406 16406 public +16522 isneq f 16 f 0 2 0 t i 16406 16406 public +16523 isnge f 16 f 0 2 0 t i 16406 16406 public +16524 isngt f 16 f 0 2 0 t i 16406 16406 public +16525 isnne f 16 f 0 2 0 t i 16406 16406 public +16526 isnlt f 16 f 0 2 0 t i 16406 16394 public +16527 isnle f 16 f 0 2 0 t i 16406 16394 public +16528 isneq f 16 f 0 2 0 t i 16406 16394 public +16529 isnge f 16 f 0 2 0 t i 16406 16394 public +16530 isngt f 16 f 0 2 0 t i 16406 16394 public +16531 isnne f 16 f 0 2 0 t i 16406 16394 public +16532 isnlt f 16 f 0 2 0 t i 16406 16386 public +16533 isnle f 16 f 0 2 0 t i 16406 16386 public +16534 isneq f 16 f 0 2 0 t i 16406 16386 public +16535 isnge f 16 f 0 2 0 t i 16406 16386 public +16536 isngt f 16 f 0 2 0 t i 16406 16386 public +16537 isnne f 16 f 0 2 0 t i 16406 16386 public +16538 isnlt f 16 f 0 2 0 t i 16398 16398 public +16539 isnle f 16 f 0 2 0 t i 16398 16398 public +16540 isneq f 16 f 0 2 0 t i 16398 16398 public +16541 isnge f 16 f 0 2 0 t i 16398 16398 public +16542 isngt f 16 f 0 2 0 t i 16398 16398 public +16543 isnne f 16 f 0 2 0 t i 16398 16398 public +16544 isnlt f 16 f 0 2 0 t i 16398 16410 public +16545 isnle f 16 f 0 2 0 t i 16398 16410 public +16546 isneq f 16 f 0 2 0 t i 16398 16410 public +16547 isnge f 16 f 0 2 0 t i 16398 16410 public +16548 isngt f 16 f 0 2 0 t i 16398 16410 public +16549 isnne f 16 f 0 2 0 t i 16398 16410 public +16550 isnlt f 16 f 0 2 0 t i 16398 16386 public +16551 isnle f 16 f 0 2 0 t i 16398 16386 public +16552 isneq f 16 f 0 2 0 t i 16398 16386 public +16553 isnge f 16 f 0 2 0 t i 16398 16386 public +16554 isngt f 16 f 0 2 0 t i 16398 16386 public +16555 isnne f 16 f 0 2 0 t i 16398 16386 public +16556 isnlt f 16 f 0 2 0 t i 16410 16410 public +16557 isnle f 16 f 0 2 0 t i 16410 16410 public +16558 isneq f 16 f 0 2 0 t i 16410 16410 public +16559 isnge f 16 f 0 2 0 t i 16410 16410 public +16560 isngt f 16 f 0 2 0 t i 16410 16410 public +16561 isnne f 16 f 0 2 0 t i 16410 16410 public +16562 isnlt f 16 f 0 2 0 t i 16410 16398 public +16563 isnle f 16 f 0 2 0 t i 16410 16398 public +16564 isneq f 16 f 0 2 0 t i 16410 16398 public +16565 isnge f 16 f 0 2 0 t i 16410 16398 public +16566 isngt f 16 f 0 2 0 t i 16410 16398 public +16567 isnne f 16 f 0 2 0 t i 16410 16398 public +16568 isnlt f 16 f 0 2 0 t i 16410 16386 public +16569 isnle f 16 f 0 2 0 t i 16410 16386 public +16570 isneq f 16 f 0 2 0 t i 16410 16386 public +16571 isnge f 16 f 0 2 0 t i 16410 16386 public +16572 isngt f 16 f 0 2 0 t i 16410 16386 public +16573 isnne f 16 f 0 2 0 t i 16410 16386 public +16574 isnlt f 16 f 0 2 0 t i 16414 16414 public +16575 isnle f 16 f 0 2 0 t i 16414 16414 public +16576 isneq f 16 f 0 2 0 t i 16414 16414 public +16577 isnge f 16 f 0 2 0 t i 16414 16414 public +16578 isngt f 16 f 0 2 0 t i 16414 16414 public +16579 isnne f 16 f 0 2 0 t i 16414 16414 public +16580 isnlt f 16 f 0 2 0 t i 16414 16386 public +16581 isnle f 16 f 0 2 0 t i 16414 16386 public +16582 isneq f 16 f 0 2 0 t i 16414 16386 public +16583 isnge f 16 f 0 2 0 t i 16414 16386 public +16584 isngt f 16 f 0 2 0 t i 16414 16386 public +16585 isnne f 16 f 0 2 0 t i 16414 16386 public +16756 btean13cmp f 23 f 0 2 0 t i 16386 16386 public +16764 hashean13 f 23 f 0 1 0 t i 16386 public +16768 btean13cmp f 23 f 0 2 0 t i 16386 16390 public +16769 btean13cmp f 23 f 0 2 0 t i 16386 16394 public +16770 btean13cmp f 23 f 0 2 0 t i 16386 16398 public +16771 btean13cmp f 23 f 0 2 0 t i 16386 16402 public +16772 btean13cmp f 23 f 0 2 0 t i 16386 16406 public +16773 btean13cmp f 23 f 0 2 0 t i 16386 16410 public +16774 btean13cmp f 23 f 0 2 0 t i 16386 16414 public +16824 btisbn13cmp f 23 f 0 2 0 t i 16390 16390 public +16832 hashisbn13 f 23 f 0 1 0 t i 16390 public +16836 btisbn13cmp f 23 f 0 2 0 t i 16390 16386 public +16837 btisbn13cmp f 23 f 0 2 0 t i 16390 16402 public +16852 btisbncmp f 23 f 0 2 0 t i 16402 16402 public +16860 hashisbn f 23 f 0 1 0 t i 16402 public +16864 btisbncmp f 23 f 0 2 0 t i 16402 16386 public +16865 btisbncmp f 23 f 0 2 0 t i 16402 16390 public +16880 btismn13cmp f 23 f 0 2 0 t i 16394 16394 public +16888 hashismn13 f 23 f 0 1 0 t i 16394 public +16892 btismn13cmp f 23 f 0 2 0 t i 16394 16386 public +16893 btismn13cmp f 23 f 0 2 0 t i 16394 16406 public +16908 btismncmp f 23 f 0 2 0 t i 16406 16406 public +16916 hashismn f 23 f 0 1 0 t i 16406 public +16920 btismncmp f 23 f 0 2 0 t i 16406 16386 public +16921 btismncmp f 23 f 0 2 0 t i 16406 16394 public +16936 btissn13cmp f 23 f 0 2 0 t i 16398 16398 public +16944 hashissn13 f 23 f 0 1 0 t i 16398 public +16948 btissn13cmp f 23 f 0 2 0 t i 16398 16386 public +16949 btissn13cmp f 23 f 0 2 0 t i 16398 16410 public +16964 btissncmp f 23 f 0 2 0 t i 16410 16410 public +16972 hashissn f 23 f 0 1 0 t i 16410 public +16976 btissncmp f 23 f 0 2 0 t i 16410 16386 public +16977 btissncmp f 23 f 0 2 0 t i 16410 16398 public +16992 btupccmp f 23 f 0 2 0 t i 16414 16414 public +17000 hashupc f 23 f 0 1 0 t i 16414 public +17004 btupccmp f 23 f 0 2 0 t i 16414 16386 public +17012 isbn13 f 16390 f 0 1 0 t i 16386 public +17013 ismn13 f 16394 f 0 1 0 t i 16386 public +17014 issn13 f 16398 f 0 1 0 t i 16386 public +17015 isbn f 16402 f 0 1 0 t i 16386 public +17016 ismn f 16406 f 0 1 0 t i 16386 public +17017 issn f 16410 f 0 1 0 t i 16386 public +17018 upc f 16414 f 0 1 0 t i 16386 public +17039 make_valid f 16386 f 0 1 0 t i 16386 public +17040 make_valid f 16390 f 0 1 0 t i 16390 public +17041 make_valid f 16394 f 0 1 0 t i 16394 public +17042 make_valid f 16398 f 0 1 0 t i 16398 public +17043 make_valid f 16402 f 0 1 0 t i 16402 public +17044 make_valid f 16406 f 0 1 0 t i 16406 public +17045 make_valid f 16410 f 0 1 0 t i 16410 public +17046 make_valid f 16414 f 0 1 0 t i 16414 public +17047 is_valid f 16 f 0 1 0 t i 16386 public +17048 is_valid f 16 f 0 1 0 t i 16390 public +17049 is_valid f 16 f 0 1 0 t i 16394 public +17050 is_valid f 16 f 0 1 0 t i 16398 public +17051 is_valid f 16 f 0 1 0 t i 16402 public +17052 is_valid f 16 f 0 1 0 t i 16406 public +17053 is_valid f 16 f 0 1 0 t i 16410 public +17054 is_valid f 16 f 0 1 0 t i 16414 public +17055 isn_weak f 16 f 0 1 0 t v 16 public +17056 isn_weak f 16 f 0 0 0 t s public diff --git a/internal/catalog/data/18/ext/isn/pg_range.tsv b/internal/catalog/data/18/ext/isn/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/isn/pg_type.tsv b/internal/catalog/data/18/ext/isn/pg_type.tsv new file mode 100644 index 0000000..aa5816d --- /dev/null +++ b/internal/catalog/data/18/ext/isn/pg_type.tsv @@ -0,0 +1,16 @@ +16386 ean13 b U f 8 t 0 16389 0 0 -1 public +16389 _ean13 b A f -1 f 16386 0 0 0 -1 public +16390 isbn13 b U f 8 t 0 16393 0 0 -1 public +16393 _isbn13 b A f -1 f 16390 0 0 0 -1 public +16394 ismn13 b U f 8 t 0 16397 0 0 -1 public +16397 _ismn13 b A f -1 f 16394 0 0 0 -1 public +16398 issn13 b U f 8 t 0 16401 0 0 -1 public +16401 _issn13 b A f -1 f 16398 0 0 0 -1 public +16402 isbn b U f 8 t 0 16405 0 0 -1 public +16405 _isbn b A f -1 f 16402 0 0 0 -1 public +16406 ismn b U f 8 t 0 16409 0 0 -1 public +16409 _ismn b A f -1 f 16406 0 0 0 -1 public +16410 issn b U f 8 t 0 16413 0 0 -1 public +16413 _issn b A f -1 f 16410 0 0 0 -1 public +16414 upc b U f 8 t 0 16417 0 0 -1 public +16417 _upc b A f -1 f 16414 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/ltree/META b/internal/catalog/data/18/ext/ltree/META new file mode 100644 index 0000000..869e73e --- /dev/null +++ b/internal/catalog/data/18/ext/ltree/META @@ -0,0 +1,4 @@ +version 1.3 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/ltree/pg_aggregate.tsv b/internal/catalog/data/18/ext/ltree/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/ltree/pg_cast.tsv b/internal/catalog/data/18/ext/ltree/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/ltree/pg_class.tsv b/internal/catalog/data/18/ext/ltree/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/ltree/pg_operator.tsv b/internal/catalog/data/18/ext/ltree/pg_operator.tsv new file mode 100644 index 0000000..7482969 --- /dev/null +++ b/internal/catalog/data/18/ext/ltree/pg_operator.tsv @@ -0,0 +1,49 @@ +16397 > b 16386 16386 16 16395 16399 16400 f f public +16398 >= b 16386 16386 16 16394 16400 16399 f f public +16399 < b 16386 16386 16 16391 16397 16398 f f public +16400 <= b 16386 16386 16 16392 16398 16397 f f public +16401 <> b 16386 16386 16 16396 16401 16402 f f public +16402 = b 16386 16386 16 16393 16402 16401 t t public +16425 <@ b 16386 16386 16 16420 16426 0 f f public +16426 @> b 16386 16386 16 16419 16425 0 f f public +16427 ^<@ b 16386 16386 16 16420 16428 0 f f public +16428 ^@> b 16386 16386 16 16419 16427 0 f f public +16429 || b 16386 16386 16386 16421 0 0 f f public +16430 || b 16386 25 16386 16422 0 0 f f public +16431 || b 25 16386 16386 16423 0 0 f f public +16446 ~ b 16440 16386 16 16445 16447 0 f f public +16447 ~ b 16386 16440 16 16444 16446 0 f f public +16448 ^~ b 16440 16386 16 16445 16449 0 f f public +16449 ^~ b 16386 16440 16 16444 16448 0 f f public +16452 ? b 16443 16386 16 16451 16453 0 f f public +16453 ? b 16386 16443 16 16450 16452 0 f f public +16454 ^? b 16443 16386 16 16451 16455 0 f f public +16455 ^? b 16386 16443 16 16450 16454 0 f f public +16462 @ b 16456 16386 16 16461 16463 0 f f public +16463 @ b 16386 16456 16 16460 16462 0 f f public +16464 ^@ b 16456 16386 16 16461 16465 0 f f public +16465 ^@ b 16386 16456 16 16460 16464 0 f f public +16509 <@ b 16386 16389 16 16500 16510 0 f f public +16510 @> b 16389 16386 16 16499 16509 0 f f public +16511 @> b 16386 16389 16 16502 16512 0 f f public +16512 <@ b 16389 16386 16 16501 16511 0 f f public +16513 ~ b 16440 16389 16 16504 16514 0 f f public +16514 ~ b 16389 16440 16 16503 16513 0 f f public +16515 ? b 16443 16389 16 16506 16516 0 f f public +16516 ? b 16389 16443 16 16505 16515 0 f f public +16517 @ b 16456 16389 16 16508 16518 0 f f public +16518 @ b 16389 16456 16 16507 16517 0 f f public +16519 ^<@ b 16386 16389 16 16500 16520 0 f f public +16520 ^@> b 16389 16386 16 16499 16519 0 f f public +16521 ^@> b 16386 16389 16 16502 16522 0 f f public +16522 ^<@ b 16389 16386 16 16501 16521 0 f f public +16523 ^~ b 16440 16389 16 16504 16524 0 f f public +16524 ^~ b 16389 16440 16 16503 16523 0 f f public +16525 ^? b 16443 16389 16 16506 16526 0 f f public +16526 ^? b 16389 16443 16 16505 16525 0 f f public +16527 ^@ b 16456 16389 16 16508 16528 0 f f public +16528 ^@ b 16389 16456 16 16507 16527 0 f f public +16530 ?@> b 16389 16386 16386 16529 0 0 f f public +16532 ?<@ b 16389 16386 16386 16531 0 0 f f public +16534 ?~ b 16389 16440 16386 16533 0 0 f f public +16536 ?@ b 16389 16456 16386 16535 0 0 f f public diff --git a/internal/catalog/data/18/ext/ltree/pg_proc.tsv b/internal/catalog/data/18/ext/ltree/pg_proc.tsv new file mode 100644 index 0000000..399c3da --- /dev/null +++ b/internal/catalog/data/18/ext/ltree/pg_proc.tsv @@ -0,0 +1,83 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 ltree_in f 16386 f 0 1 0 t i 2275 public +16388 ltree_out f 2275 f 0 1 0 t i 16386 public +16390 ltree_cmp f 23 f 0 2 0 t i 16386 16386 public +16391 ltree_lt f 16 f 0 2 0 t i 16386 16386 public +16392 ltree_le f 16 f 0 2 0 t i 16386 16386 public +16393 ltree_eq f 16 f 0 2 0 t i 16386 16386 public +16394 ltree_ge f 16 f 0 2 0 t i 16386 16386 public +16395 ltree_gt f 16 f 0 2 0 t i 16386 16386 public +16396 ltree_ne f 16 f 0 2 0 t i 16386 16386 public +16403 subltree f 16386 f 0 3 0 t i 16386 23 23 public +16404 subpath f 16386 f 0 3 0 t i 16386 23 23 public +16405 subpath f 16386 f 0 2 0 t i 16386 23 public +16406 index f 23 f 0 2 0 t i 16386 16386 public +16407 index f 23 f 0 3 0 t i 16386 16386 23 public +16408 nlevel f 23 f 0 1 0 t i 16386 public +16409 ltree2text f 25 f 0 1 0 t i 16386 public +16410 text2ltree f 16386 f 0 1 0 t i 25 public +16411 lca f 16386 f 0 1 0 t i 16389 public +16412 lca f 16386 f 0 2 0 t i 16386 16386 public +16413 lca f 16386 f 0 3 0 t i 16386 16386 16386 public +16414 lca f 16386 f 0 4 0 t i 16386 16386 16386 16386 public +16415 lca f 16386 f 0 5 0 t i 16386 16386 16386 16386 16386 public +16416 lca f 16386 f 0 6 0 t i 16386 16386 16386 16386 16386 16386 public +16417 lca f 16386 f 0 7 0 t i 16386 16386 16386 16386 16386 16386 16386 public +16418 lca f 16386 f 0 8 0 t i 16386 16386 16386 16386 16386 16386 16386 16386 public +16419 ltree_isparent f 16 f 0 2 0 t i 16386 16386 public +16420 ltree_risparent f 16 f 0 2 0 t i 16386 16386 public +16421 ltree_addltree f 16386 f 0 2 0 t i 16386 16386 public +16422 ltree_addtext f 16386 f 0 2 0 t i 16386 25 public +16423 ltree_textadd f 16386 f 0 2 0 t i 25 16386 public +16424 ltreeparentsel f 701 f 0 4 0 t i 2281 26 2281 23 public +16441 lquery_in f 16440 f 0 1 0 t i 2275 public +16442 lquery_out f 2275 f 0 1 0 t i 16440 public +16444 ltq_regex f 16 f 0 2 0 t i 16386 16440 public +16445 ltq_rregex f 16 f 0 2 0 t i 16440 16386 public +16450 lt_q_regex f 16 f 0 2 0 t i 16386 16443 public +16451 lt_q_rregex f 16 f 0 2 0 t i 16443 16386 public +16457 ltxtq_in f 16456 f 0 1 0 t i 2275 public +16458 ltxtq_out f 2275 f 0 1 0 t i 16456 public +16460 ltxtq_exec f 16 f 0 2 0 t i 16386 16456 public +16461 ltxtq_rexec f 16 f 0 2 0 t i 16456 16386 public +16467 ltree_gist_in f 16466 f 0 1 0 t i 2275 public +16468 ltree_gist_out f 2275 f 0 1 0 t i 16466 public +16470 ltree_consistent f 16 f 0 5 0 t i 2281 16386 21 26 2281 public +16471 ltree_compress f 2281 f 0 1 0 t i 2281 public +16472 ltree_decompress f 2281 f 0 1 0 t i 2281 public +16473 ltree_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16474 ltree_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16475 ltree_union f 16466 f 0 2 0 t i 2281 2281 public +16476 ltree_same f 2281 f 0 3 0 t i 16466 16466 2281 public +16499 _ltree_isparent f 16 f 0 2 0 t i 16389 16386 public +16500 _ltree_r_isparent f 16 f 0 2 0 t i 16386 16389 public +16501 _ltree_risparent f 16 f 0 2 0 t i 16389 16386 public +16502 _ltree_r_risparent f 16 f 0 2 0 t i 16386 16389 public +16503 _ltq_regex f 16 f 0 2 0 t i 16389 16440 public +16504 _ltq_rregex f 16 f 0 2 0 t i 16440 16389 public +16505 _lt_q_regex f 16 f 0 2 0 t i 16389 16443 public +16506 _lt_q_rregex f 16 f 0 2 0 t i 16443 16389 public +16507 _ltxtq_exec f 16 f 0 2 0 t i 16389 16456 public +16508 _ltxtq_rexec f 16 f 0 2 0 t i 16456 16389 public +16529 _ltree_extract_isparent f 16386 f 0 2 0 t i 16389 16386 public +16531 _ltree_extract_risparent f 16386 f 0 2 0 t i 16389 16386 public +16533 _ltq_extract_regex f 16386 f 0 2 0 t i 16389 16440 public +16535 _ltxtq_extract_exec f 16386 f 0 2 0 t i 16389 16456 public +16537 _ltree_consistent f 16 f 0 5 0 t i 2281 16389 21 26 2281 public +16538 _ltree_compress f 2281 f 0 1 0 t i 2281 public +16539 _ltree_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16540 _ltree_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16541 _ltree_union f 16466 f 0 2 0 t i 2281 2281 public +16542 _ltree_same f 2281 f 0 3 0 t i 16466 16466 2281 public +16560 ltree_recv f 16386 f 0 1 0 t i 2281 public +16561 ltree_send f 17 f 0 1 0 t i 16386 public +16562 lquery_recv f 16440 f 0 1 0 t i 2281 public +16563 lquery_send f 17 f 0 1 0 t i 16440 public +16564 ltxtq_recv f 16456 f 0 1 0 t i 2281 public +16565 ltxtq_send f 17 f 0 1 0 t i 16456 public +16566 ltree_gist_options f 2278 f 0 1 0 f i 2281 public +16567 _ltree_gist_options f 2278 f 0 1 0 f i 2281 public +16570 hash_ltree f 23 f 0 1 0 t i 16386 public +16571 hash_ltree_extended f 20 f 0 2 0 t i 16386 20 public diff --git a/internal/catalog/data/18/ext/ltree/pg_range.tsv b/internal/catalog/data/18/ext/ltree/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/ltree/pg_type.tsv b/internal/catalog/data/18/ext/ltree/pg_type.tsv new file mode 100644 index 0000000..36e26a0 --- /dev/null +++ b/internal/catalog/data/18/ext/ltree/pg_type.tsv @@ -0,0 +1,8 @@ +16386 ltree b U f -1 f 0 16389 0 0 -1 public +16389 _ltree b A f -1 f 16386 0 0 0 -1 public +16440 lquery b U f -1 f 0 16443 0 0 -1 public +16443 _lquery b A f -1 f 16440 0 0 0 -1 public +16456 ltxtquery b U f -1 f 0 16459 0 0 -1 public +16459 _ltxtquery b A f -1 f 16456 0 0 0 -1 public +16466 ltree_gist b U f -1 f 0 16469 0 0 -1 public +16469 _ltree_gist b A f -1 f 16466 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/pg_trgm/META b/internal/catalog/data/18/ext/pg_trgm/META new file mode 100644 index 0000000..8f549f6 --- /dev/null +++ b/internal/catalog/data/18/ext/pg_trgm/META @@ -0,0 +1,4 @@ +version 1.6 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_aggregate.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_cast.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_class.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_operator.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_operator.tsv new file mode 100644 index 0000000..d689c72 --- /dev/null +++ b/internal/catalog/data/18/ext/pg_trgm/pg_operator.tsv @@ -0,0 +1,10 @@ +16391 % b 25 25 16 16390 16391 0 f f public +16395 %> b 25 25 16 16394 16396 0 f f public +16396 <% b 25 25 16 16393 16395 0 f f public +16398 <-> b 25 25 700 16397 16398 0 f f public +16401 <->> b 25 25 700 16400 16402 0 f f public +16402 <<-> b 25 25 700 16399 16401 0 f f public +16453 %>> b 25 25 16 16452 16454 0 f f public +16454 <<% b 25 25 16 16451 16453 0 f f public +16457 <->>> b 25 25 700 16456 16458 0 f f public +16458 <<<-> b 25 25 700 16455 16457 0 f f public diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_proc.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_proc.tsv new file mode 100644 index 0000000..d395229 --- /dev/null +++ b/internal/catalog/data/18/ext/pg_trgm/pg_proc.tsv @@ -0,0 +1,34 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 set_limit f 700 f 0 1 0 t v 700 public +16387 show_limit f 700 f 0 0 0 t s public +16388 show_trgm f 1009 f 0 1 0 t i 25 public +16389 similarity f 700 f 0 2 0 t i 25 25 public +16390 similarity_op f 16 f 0 2 0 t s 25 25 public +16392 word_similarity f 700 f 0 2 0 t i 25 25 public +16393 word_similarity_op f 16 f 0 2 0 t s 25 25 public +16394 word_similarity_commutator_op f 16 f 0 2 0 t s 25 25 public +16397 similarity_dist f 700 f 0 2 0 t i 25 25 public +16399 word_similarity_dist_op f 700 f 0 2 0 t i 25 25 public +16400 word_similarity_dist_commutator_op f 700 f 0 2 0 t i 25 25 public +16404 gtrgm_in f 16403 f 0 1 0 t i 2275 public +16405 gtrgm_out f 2275 f 0 1 0 t i 16403 public +16407 gtrgm_consistent f 16 f 0 5 0 t i 2281 25 21 26 2281 public +16408 gtrgm_distance f 701 f 0 5 0 t i 2281 25 21 26 2281 public +16409 gtrgm_compress f 2281 f 0 1 0 t i 2281 public +16410 gtrgm_decompress f 2281 f 0 1 0 t i 2281 public +16411 gtrgm_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16412 gtrgm_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16413 gtrgm_union f 16403 f 0 2 0 t i 2281 2281 public +16414 gtrgm_same f 2281 f 0 3 0 t i 16403 16403 2281 public +16433 gin_extract_value_trgm f 2281 f 0 2 0 t i 25 2281 public +16434 gin_extract_query_trgm f 2281 f 0 7 0 t i 25 2281 21 2281 2281 2281 2281 public +16435 gin_trgm_consistent f 16 f 0 8 0 t i 2281 21 25 23 2281 2281 2281 2281 public +16447 gin_trgm_triconsistent f 18 f 0 7 0 t i 2281 21 25 23 2281 2281 2281 public +16450 strict_word_similarity f 700 f 0 2 0 t i 25 25 public +16451 strict_word_similarity_op f 16 f 0 2 0 t s 25 25 public +16452 strict_word_similarity_commutator_op f 16 f 0 2 0 t s 25 25 public +16455 strict_word_similarity_dist_op f 700 f 0 2 0 t i 25 25 public +16456 strict_word_similarity_dist_commutator_op f 700 f 0 2 0 t i 25 25 public +16462 gtrgm_options f 2278 f 0 1 0 f i 2281 public diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_range.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pg_trgm/pg_type.tsv b/internal/catalog/data/18/ext/pg_trgm/pg_type.tsv new file mode 100644 index 0000000..aaf0fc9 --- /dev/null +++ b/internal/catalog/data/18/ext/pg_trgm/pg_type.tsv @@ -0,0 +1,2 @@ +16403 gtrgm b U f -1 f 0 16406 0 0 -1 public +16406 _gtrgm b A f -1 f 16403 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/pgcrypto/META b/internal/catalog/data/18/ext/pgcrypto/META new file mode 100644 index 0000000..8603d51 --- /dev/null +++ b/internal/catalog/data/18/ext/pgcrypto/META @@ -0,0 +1,4 @@ +version 1.4 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_aggregate.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_cast.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_class.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_operator.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_operator.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_proc.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_proc.tsv new file mode 100644 index 0000000..b1bcb0c --- /dev/null +++ b/internal/catalog/data/18/ext/pgcrypto/pg_proc.tsv @@ -0,0 +1,40 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 digest f 17 f 0 2 0 t i 25 25 public +16387 digest f 17 f 0 2 0 t i 17 25 public +16388 hmac f 17 f 0 3 0 t i 25 25 25 public +16389 hmac f 17 f 0 3 0 t i 17 17 25 public +16390 crypt f 25 f 0 2 0 t i 25 25 public +16391 gen_salt f 25 f 0 1 0 t v 25 public +16392 gen_salt f 25 f 0 2 0 t v 25 23 public +16393 encrypt f 17 f 0 3 0 t i 17 17 25 public +16394 decrypt f 17 f 0 3 0 t i 17 17 25 public +16395 encrypt_iv f 17 f 0 4 0 t i 17 17 17 25 public +16396 decrypt_iv f 17 f 0 4 0 t i 17 17 17 25 public +16397 gen_random_bytes f 17 f 0 1 0 t v 23 public +16398 gen_random_uuid f 2950 f 0 0 0 f v public +16399 pgp_sym_encrypt f 17 f 0 2 0 t v 25 25 public +16400 pgp_sym_encrypt_bytea f 17 f 0 2 0 t v 17 25 public +16401 pgp_sym_encrypt f 17 f 0 3 0 t v 25 25 25 public +16402 pgp_sym_encrypt_bytea f 17 f 0 3 0 t v 17 25 25 public +16403 pgp_sym_decrypt f 25 f 0 2 0 t i 17 25 public +16404 pgp_sym_decrypt_bytea f 17 f 0 2 0 t i 17 25 public +16405 pgp_sym_decrypt f 25 f 0 3 0 t i 17 25 25 public +16406 pgp_sym_decrypt_bytea f 17 f 0 3 0 t i 17 25 25 public +16407 pgp_pub_encrypt f 17 f 0 2 0 t v 25 17 public +16408 pgp_pub_encrypt_bytea f 17 f 0 2 0 t v 17 17 public +16409 pgp_pub_encrypt f 17 f 0 3 0 t v 25 17 25 public +16410 pgp_pub_encrypt_bytea f 17 f 0 3 0 t v 17 17 25 public +16411 pgp_pub_decrypt f 25 f 0 2 0 t i 17 17 public +16412 pgp_pub_decrypt_bytea f 17 f 0 2 0 t i 17 17 public +16413 pgp_pub_decrypt f 25 f 0 3 0 t i 17 17 25 public +16414 pgp_pub_decrypt_bytea f 17 f 0 3 0 t i 17 17 25 public +16415 pgp_pub_decrypt f 25 f 0 4 0 t i 17 17 25 25 public +16416 pgp_pub_decrypt_bytea f 17 f 0 4 0 t i 17 17 25 25 public +16417 pgp_key_id f 25 f 0 1 0 t i 17 public +16418 armor f 25 f 0 1 0 t i 17 public +16419 armor f 25 f 0 3 0 t i 17 1009 1009 public +16420 dearmor f 17 f 0 1 0 t i 25 public +16421 pgp_armor_headers f 2249 t 0 1 0 t i 25 25 25 25 ioo ,key,value public +16422 fips_mode f 16 f 0 0 0 t v public diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_range.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/pgcrypto/pg_type.tsv b/internal/catalog/data/18/ext/pgcrypto/pg_type.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/seg/META b/internal/catalog/data/18/ext/seg/META new file mode 100644 index 0000000..8603d51 --- /dev/null +++ b/internal/catalog/data/18/ext/seg/META @@ -0,0 +1,4 @@ +version 1.4 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/seg/pg_aggregate.tsv b/internal/catalog/data/18/ext/seg/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/seg/pg_cast.tsv b/internal/catalog/data/18/ext/seg/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/seg/pg_class.tsv b/internal/catalog/data/18/ext/seg/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/seg/pg_operator.tsv b/internal/catalog/data/18/ext/seg/pg_operator.tsv new file mode 100644 index 0000000..d198676 --- /dev/null +++ b/internal/catalog/data/18/ext/seg/pg_operator.tsv @@ -0,0 +1,13 @@ +16410 > b 16386 16386 16 16396 16412 16413 f f public +16411 >= b 16386 16386 16 16397 16413 16412 f f public +16412 < b 16386 16386 16 16394 16410 16411 f f public +16413 <= b 16386 16386 16 16395 16411 16410 f f public +16414 >> b 16386 16386 16 16393 16415 0 f f public +16415 << b 16386 16386 16 16392 16414 0 f f public +16416 &< b 16386 16386 16 16390 0 0 f f public +16417 && b 16386 16386 16 16400 16417 0 f f public +16418 &> b 16386 16386 16 16391 0 0 f f public +16419 <> b 16386 16386 16 16402 16419 16420 f f public +16420 = b 16386 16386 16 16401 16420 16419 t f public +16421 <@ b 16386 16386 16 16399 16422 0 f f public +16422 @> b 16386 16386 16 16398 16421 0 f f public diff --git a/internal/catalog/data/18/ext/seg/pg_proc.tsv b/internal/catalog/data/18/ext/seg/pg_proc.tsv new file mode 100644 index 0000000..1d8fcf3 --- /dev/null +++ b/internal/catalog/data/18/ext/seg/pg_proc.tsv @@ -0,0 +1,30 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16387 seg_in f 16386 f 0 1 0 t i 2275 public +16388 seg_out f 2275 f 0 1 0 t i 16386 public +16390 seg_over_left f 16 f 0 2 0 t i 16386 16386 public +16391 seg_over_right f 16 f 0 2 0 t i 16386 16386 public +16392 seg_left f 16 f 0 2 0 t i 16386 16386 public +16393 seg_right f 16 f 0 2 0 t i 16386 16386 public +16394 seg_lt f 16 f 0 2 0 t i 16386 16386 public +16395 seg_le f 16 f 0 2 0 t i 16386 16386 public +16396 seg_gt f 16 f 0 2 0 t i 16386 16386 public +16397 seg_ge f 16 f 0 2 0 t i 16386 16386 public +16398 seg_contains f 16 f 0 2 0 t i 16386 16386 public +16399 seg_contained f 16 f 0 2 0 t i 16386 16386 public +16400 seg_overlap f 16 f 0 2 0 t i 16386 16386 public +16401 seg_same f 16 f 0 2 0 t i 16386 16386 public +16402 seg_different f 16 f 0 2 0 t i 16386 16386 public +16403 seg_cmp f 23 f 0 2 0 t i 16386 16386 public +16404 seg_union f 16386 f 0 2 0 t i 16386 16386 public +16405 seg_inter f 16386 f 0 2 0 t i 16386 16386 public +16406 seg_size f 700 f 0 1 0 t i 16386 public +16407 seg_center f 700 f 0 1 0 t i 16386 public +16408 seg_upper f 700 f 0 1 0 t i 16386 public +16409 seg_lower f 700 f 0 1 0 t i 16386 public +16425 gseg_consistent f 16 f 0 5 0 t i 2281 16386 21 26 2281 public +16428 gseg_penalty f 2281 f 0 3 0 t i 2281 2281 2281 public +16429 gseg_picksplit f 2281 f 0 2 0 t i 2281 2281 public +16430 gseg_union f 16386 f 0 2 0 t i 2281 2281 public +16431 gseg_same f 2281 f 0 3 0 t i 16386 16386 2281 public diff --git a/internal/catalog/data/18/ext/seg/pg_range.tsv b/internal/catalog/data/18/ext/seg/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/seg/pg_type.tsv b/internal/catalog/data/18/ext/seg/pg_type.tsv new file mode 100644 index 0000000..f232e09 --- /dev/null +++ b/internal/catalog/data/18/ext/seg/pg_type.tsv @@ -0,0 +1,2 @@ +16386 seg b U f 12 f 0 16389 0 0 -1 public +16389 _seg b A f -1 f 16386 0 0 0 -1 public diff --git a/internal/catalog/data/18/ext/tablefunc/META b/internal/catalog/data/18/ext/tablefunc/META new file mode 100644 index 0000000..b90ca76 --- /dev/null +++ b/internal/catalog/data/18/ext/tablefunc/META @@ -0,0 +1,4 @@ +version 1.0 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/tablefunc/pg_aggregate.tsv b/internal/catalog/data/18/ext/tablefunc/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/tablefunc/pg_cast.tsv b/internal/catalog/data/18/ext/tablefunc/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/tablefunc/pg_class.tsv b/internal/catalog/data/18/ext/tablefunc/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/tablefunc/pg_operator.tsv b/internal/catalog/data/18/ext/tablefunc/pg_operator.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/tablefunc/pg_proc.tsv b/internal/catalog/data/18/ext/tablefunc/pg_proc.tsv new file mode 100644 index 0000000..425e4c8 --- /dev/null +++ b/internal/catalog/data/18/ext/tablefunc/pg_proc.tsv @@ -0,0 +1,14 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 normal_rand f 701 t 0 3 0 t v 23 701 701 public +16387 crosstab f 2249 t 0 1 0 t s 25 public +16397 crosstab2 f 16390 t 0 1 0 t s 25 public +16398 crosstab3 f 16393 t 0 1 0 t s 25 public +16399 crosstab4 f 16396 t 0 1 0 t s 25 public +16400 crosstab f 2249 t 0 2 0 t s 25 23 public +16401 crosstab f 2249 t 0 2 0 t s 25 25 public +16402 connectby f 2249 t 0 6 0 t s 25 25 25 25 23 25 public +16403 connectby f 2249 t 0 5 0 t s 25 25 25 25 23 public +16404 connectby f 2249 t 0 7 0 t s 25 25 25 25 25 23 25 public +16405 connectby f 2249 t 0 6 0 t s 25 25 25 25 25 23 public diff --git a/internal/catalog/data/18/ext/tablefunc/pg_range.tsv b/internal/catalog/data/18/ext/tablefunc/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/tablefunc/pg_type.tsv b/internal/catalog/data/18/ext/tablefunc/pg_type.tsv new file mode 100644 index 0000000..864b9f0 --- /dev/null +++ b/internal/catalog/data/18/ext/tablefunc/pg_type.tsv @@ -0,0 +1,6 @@ +16389 _tablefunc_crosstab_2 b A f -1 f 16390 0 0 0 -1 public +16390 tablefunc_crosstab_2 c C f -1 f 0 16389 16388 0 -1 public +16392 _tablefunc_crosstab_3 b A f -1 f 16393 0 0 0 -1 public +16393 tablefunc_crosstab_3 c C f -1 f 0 16392 16391 0 -1 public +16395 _tablefunc_crosstab_4 b A f -1 f 16396 0 0 0 -1 public +16396 tablefunc_crosstab_4 c C f -1 f 0 16395 16394 0 -1 public diff --git a/internal/catalog/data/18/ext/unaccent/META b/internal/catalog/data/18/ext/unaccent/META new file mode 100644 index 0000000..fab458f --- /dev/null +++ b/internal/catalog/data/18/ext/unaccent/META @@ -0,0 +1,4 @@ +version 1.1 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/unaccent/pg_aggregate.tsv b/internal/catalog/data/18/ext/unaccent/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/unaccent/pg_cast.tsv b/internal/catalog/data/18/ext/unaccent/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/unaccent/pg_class.tsv b/internal/catalog/data/18/ext/unaccent/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/unaccent/pg_operator.tsv b/internal/catalog/data/18/ext/unaccent/pg_operator.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/unaccent/pg_proc.tsv b/internal/catalog/data/18/ext/unaccent/pg_proc.tsv new file mode 100644 index 0000000..aa222a6 --- /dev/null +++ b/internal/catalog/data/18/ext/unaccent/pg_proc.tsv @@ -0,0 +1,7 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 unaccent f 25 f 0 2 0 t s 3769 25 public +16387 unaccent f 25 f 0 1 0 t s 25 public +16388 unaccent_init f 2281 f 0 1 0 f v 2281 public +16389 unaccent_lexize f 2281 f 0 4 0 f v 2281 2281 2281 2281 public diff --git a/internal/catalog/data/18/ext/unaccent/pg_range.tsv b/internal/catalog/data/18/ext/unaccent/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/unaccent/pg_type.tsv b/internal/catalog/data/18/ext/unaccent/pg_type.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/uuid-ossp/META b/internal/catalog/data/18/ext/uuid-ossp/META new file mode 100644 index 0000000..fab458f --- /dev/null +++ b/internal/catalog/data/18/ext/uuid-ossp/META @@ -0,0 +1,4 @@ +version 1.1 +schema public +requires +server 18.3 diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_aggregate.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_aggregate.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_cast.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_cast.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_class.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_class.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_operator.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_operator.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_proc.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_proc.tsv new file mode 100644 index 0000000..c84e5ce --- /dev/null +++ b/internal/catalog/data/18/ext/uuid-ossp/pg_proc.tsv @@ -0,0 +1,13 @@ +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog +16386 uuid_nil f 2950 f 0 0 0 t i public +16387 uuid_ns_dns f 2950 f 0 0 0 t i public +16388 uuid_ns_url f 2950 f 0 0 0 t i public +16389 uuid_ns_oid f 2950 f 0 0 0 t i public +16390 uuid_ns_x500 f 2950 f 0 0 0 t i public +16391 uuid_generate_v1 f 2950 f 0 0 0 t v public +16392 uuid_generate_v1mc f 2950 f 0 0 0 t v public +16393 uuid_generate_v3 f 2950 f 0 2 0 t i 2950 25 namespace,name public +16394 uuid_generate_v4 f 2950 f 0 0 0 t v public +16395 uuid_generate_v5 f 2950 f 0 2 0 t i 2950 25 namespace,name public diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_range.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_range.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/ext/uuid-ossp/pg_type.tsv b/internal/catalog/data/18/ext/uuid-ossp/pg_type.tsv new file mode 100644 index 0000000..e69de29 diff --git a/internal/catalog/data/18/pg_aggregate.tsv b/internal/catalog/data/18/pg_aggregate.tsv new file mode 100644 index 0000000..1ae5657 --- /dev/null +++ b/internal/catalog/data/18/pg_aggregate.tsv @@ -0,0 +1,161 @@ +2050 n 0 2277 +2051 n 0 2277 +2100 n 0 2281 +2101 n 0 1016 +2102 n 0 1016 +2103 n 0 2281 +2104 n 0 1022 +2105 n 0 1022 +2106 n 0 2281 +2107 n 0 2281 +2108 n 0 20 +2109 n 0 20 +2110 n 0 700 +2111 n 0 701 +2112 n 0 790 +2113 n 0 2281 +2114 n 0 2281 +2115 n 0 20 +2116 n 0 23 +2117 n 0 21 +2118 n 0 26 +2119 n 0 700 +2120 n 0 701 +2122 n 0 1082 +2123 n 0 1083 +2124 n 0 1266 +2125 n 0 790 +2126 n 0 1114 +2127 n 0 1184 +2128 n 0 1186 +2129 n 0 25 +2130 n 0 1700 +2131 n 0 20 +2132 n 0 23 +2133 n 0 21 +2134 n 0 26 +2135 n 0 700 +2136 n 0 701 +2138 n 0 1082 +2139 n 0 1083 +2140 n 0 1266 +2141 n 0 790 +2142 n 0 1114 +2143 n 0 1184 +2144 n 0 1186 +2145 n 0 25 +2146 n 0 1700 +2147 n 0 20 +2148 n 0 2281 +2149 n 0 2281 +2150 n 0 2281 +2151 n 0 1022 +2152 n 0 1022 +2153 n 0 2281 +2154 n 0 2281 +2155 n 0 2281 +2156 n 0 2281 +2157 n 0 1022 +2158 n 0 1022 +2159 n 0 2281 +2236 n 0 21 +2237 n 0 21 +2238 n 0 23 +2239 n 0 23 +2240 n 0 20 +2241 n 0 20 +2242 n 0 1560 +2243 n 0 1560 +2244 n 0 1042 +2245 n 0 1042 +2335 n 0 2281 +2517 n 0 16 +2518 n 0 16 +2519 n 0 16 +2641 n 0 2281 +2642 n 0 2281 +2643 n 0 2281 +2644 n 0 1022 +2645 n 0 1022 +2646 n 0 2281 +2712 n 0 2281 +2713 n 0 2281 +2714 n 0 2281 +2715 n 0 1022 +2716 n 0 1022 +2717 n 0 2281 +2718 n 0 2281 +2719 n 0 2281 +2720 n 0 2281 +2721 n 0 1022 +2722 n 0 1022 +2723 n 0 2281 +2724 n 0 2281 +2725 n 0 2281 +2726 n 0 2281 +2727 n 0 1022 +2728 n 0 1022 +2729 n 0 2281 +2797 n 0 27 +2798 n 0 27 +2803 n 0 20 +2818 n 0 20 +2819 n 0 1022 +2820 n 0 1022 +2821 n 0 1022 +2822 n 0 1022 +2823 n 0 1022 +2824 n 0 1022 +2825 n 0 1022 +2826 n 0 1022 +2827 n 0 1022 +2828 n 0 1022 +2829 n 0 1022 +2901 n 0 142 +3175 n 0 2281 +3197 n 0 2281 +3267 n 0 2281 +3270 n 0 2281 +3526 n 0 3500 +3527 n 0 3500 +3538 n 0 2281 +3545 n 0 2281 +3564 n 0 869 +3565 n 0 869 +3972 o 1 2281 +3974 o 1 2281 +3976 o 1 2281 +3978 o 1 2281 +3980 o 1 2281 +3982 o 1 2281 +3984 o 0 2281 +3986 h 1 2281 +3988 h 1 2281 +3990 h 1 2281 +3992 h 1 2281 +4053 n 0 2281 +4189 n 0 3220 +4190 n 0 3220 +4301 n 0 2281 +4389 n 0 4537 +4450 n 0 3831 +5099 n 0 5069 +5100 n 0 5069 +6164 n 0 21 +6165 n 0 23 +6166 n 0 20 +6167 n 0 1560 +6227 n 0 2281 +6276 n 0 2281 +6280 n 0 2281 +6281 n 0 2281 +6282 n 0 2281 +6284 n 0 2281 +6288 n 0 2281 +6289 n 0 2281 +6290 n 0 2281 +6291 n 0 2283 +6373 n 0 2249 +6374 n 0 2249 +6395 n 0 17 +6396 n 0 17 diff --git a/internal/catalog/data/18/pg_cast.tsv b/internal/catalog/data/18/pg_cast.tsv new file mode 100644 index 0000000..7752baa --- /dev/null +++ b/internal/catalog/data/18/pg_cast.tsv @@ -0,0 +1,235 @@ +10000 20 21 714 a f +10001 20 23 480 a f +10002 20 700 652 i f +10003 20 701 482 i f +10004 20 1700 1781 i f +10005 21 20 754 i f +10006 21 23 313 i f +10007 21 700 236 i f +10008 21 701 235 i f +10009 21 1700 1782 i f +10010 23 20 481 i f +10011 23 21 314 a f +10012 23 700 318 i f +10013 23 701 316 i f +10014 23 1700 1740 i f +10015 700 20 653 a f +10016 700 21 238 a f +10017 700 23 319 a f +10018 700 701 311 i f +10019 700 1700 1742 a f +10020 701 20 483 a f +10021 701 21 237 a f +10022 701 23 317 a f +10023 701 700 312 a f +10024 701 1700 1743 a f +10025 1700 20 1779 a f +10026 1700 21 1783 a f +10027 1700 23 1744 a f +10028 1700 700 1745 i f +10029 1700 701 1746 i f +10030 790 1700 3823 a f +10031 1700 790 3824 a f +10032 23 790 3811 a f +10033 20 790 3812 a f +10034 23 16 2557 e f +10035 16 23 2558 e f +10036 5069 28 5071 e f +10037 20 26 1287 i f +10038 21 26 313 i f +10039 23 26 0 i b +10040 26 20 1288 a f +10041 26 23 0 a b +10042 26 24 0 i b +10043 24 26 0 i b +10044 20 24 1287 i f +10045 21 24 313 i f +10046 23 24 0 i b +10047 24 20 1288 a f +10048 24 23 0 a b +10049 24 2202 0 i b +10050 2202 24 0 i b +10051 26 2202 0 i b +10052 2202 26 0 i b +10053 20 2202 1287 i f +10054 21 2202 313 i f +10055 23 2202 0 i b +10056 2202 20 1288 a f +10057 2202 23 0 a b +10058 26 2203 0 i b +10059 2203 26 0 i b +10060 20 2203 1287 i f +10061 21 2203 313 i f +10062 23 2203 0 i b +10063 2203 20 1288 a f +10064 2203 23 0 a b +10065 2203 2204 0 i b +10066 2204 2203 0 i b +10067 26 2204 0 i b +10068 2204 26 0 i b +10069 20 2204 1287 i f +10070 21 2204 313 i f +10071 23 2204 0 i b +10072 2204 20 1288 a f +10073 2204 23 0 a b +10074 26 2205 0 i b +10075 2205 26 0 i b +10076 20 2205 1287 i f +10077 21 2205 313 i f +10078 23 2205 0 i b +10079 2205 20 1288 a f +10080 2205 23 0 a b +10081 26 4191 0 i b +10082 4191 26 0 i b +10083 20 4191 1287 i f +10084 21 4191 313 i f +10085 23 4191 0 i b +10086 4191 20 1288 a f +10087 4191 23 0 a b +10088 26 2206 0 i b +10089 2206 26 0 i b +10090 20 2206 1287 i f +10091 21 2206 313 i f +10092 23 2206 0 i b +10093 2206 20 1288 a f +10094 2206 23 0 a b +10095 26 3734 0 i b +10096 3734 26 0 i b +10097 20 3734 1287 i f +10098 21 3734 313 i f +10099 23 3734 0 i b +10100 3734 20 1288 a f +10101 3734 23 0 a b +10102 26 3769 0 i b +10103 3769 26 0 i b +10104 20 3769 1287 i f +10105 21 3769 313 i f +10106 23 3769 0 i b +10107 3769 20 1288 a f +10108 3769 23 0 a b +10109 25 2205 1079 i f +10110 1043 2205 1079 i f +10111 26 4096 0 i b +10112 4096 26 0 i b +10113 20 4096 1287 i f +10114 21 4096 313 i f +10115 23 4096 0 i b +10116 4096 20 1288 a f +10117 4096 23 0 a b +10118 26 4089 0 i b +10119 4089 26 0 i b +10120 20 4089 1287 i f +10121 21 4089 313 i f +10122 23 4089 0 i b +10123 4089 20 1288 a f +10124 4089 23 0 a b +10125 25 1042 0 i b +10126 25 1043 0 i b +10127 1042 25 401 i f +10128 1042 1043 401 i f +10129 1043 25 0 i b +10130 1043 1042 0 i b +10131 18 25 946 i f +10132 18 1042 860 a f +10133 18 1043 946 a f +10134 19 25 406 i f +10135 19 1042 408 a f +10136 19 1043 1401 a f +10137 25 18 944 a f +10138 1042 18 944 a f +10139 1043 18 944 a f +10140 25 19 407 i f +10141 1042 19 409 i f +10142 1043 19 1400 i f +10143 21 17 6367 e f +10144 23 17 6368 e f +10145 20 17 6369 e f +10146 17 21 6370 e f +10147 17 23 6371 e f +10148 17 20 6372 e f +10149 18 23 77 e f +10150 23 18 78 e f +10151 194 25 0 i b +10152 3361 17 0 i b +10153 3361 25 0 i i +10154 3402 17 0 i b +10155 3402 25 0 i i +10156 5017 17 0 i b +10157 5017 25 0 i i +10158 1082 1114 2024 i f +10159 1082 1184 1174 i f +10160 1083 1186 1370 i f +10161 1083 1266 2047 i f +10162 1114 1082 2029 a f +10163 1114 1083 1316 a f +10164 1114 1184 2028 i f +10165 1184 1082 1178 a f +10166 1184 1083 2019 a f +10167 1184 1114 2027 a f +10168 1184 1266 1388 a f +10169 1186 1083 1419 a f +10170 1266 1083 2046 a f +10171 600 603 4091 a f +10172 601 600 1532 e f +10173 602 604 1449 a f +10174 603 600 1534 e f +10175 603 601 1541 e f +10176 603 604 1448 a f +10177 603 718 1479 e f +10178 604 600 1540 e f +10179 604 602 1447 a f +10180 604 603 1446 e f +10181 604 718 1474 e f +10182 718 600 1416 e f +10183 718 603 1480 e f +10184 718 604 1544 e f +10185 829 774 4123 i f +10186 774 829 4124 i f +10187 650 869 0 i b +10188 869 650 1715 a f +10189 1560 1562 0 i b +10190 1562 1560 0 i b +10191 20 1560 2075 e f +10192 23 1560 1683 e f +10193 1560 20 2076 e f +10194 1560 23 1684 e f +10195 650 25 730 a f +10196 869 25 730 a f +10197 16 25 2971 a f +10198 142 25 0 a b +10199 25 142 2896 e f +10200 650 1043 730 a f +10201 869 1043 730 a f +10202 16 1043 2971 a f +10203 142 1043 0 a b +10204 1043 142 2896 e f +10205 650 1042 730 a f +10206 869 1042 730 a f +10207 16 1042 2971 a f +10208 142 1042 0 a b +10209 1042 142 2896 e f +10210 1042 1042 668 i f +10211 1043 1043 669 i f +10212 1083 1083 1968 i f +10213 1114 1114 1961 i f +10214 1184 1184 1967 i f +10215 1186 1186 1200 i f +10216 1266 1266 1969 i f +10217 1560 1560 1685 i f +10218 1562 1562 1687 i f +10219 1700 1700 1703 i f +10220 114 3802 0 a i +10221 3802 114 0 a i +10222 3802 16 3556 e f +10223 3802 1700 3449 e f +10224 3802 21 3450 e f +10225 3802 23 3451 e f +10226 3802 20 3452 e f +10227 3802 700 3453 e f +10228 3802 701 2580 e f +10229 3904 4451 4281 e f +10230 3926 4536 4296 e f +10231 3906 4532 4284 e f +10232 3912 4535 4293 e f +10233 3908 4533 4287 e f +10234 3910 4534 4290 e f diff --git a/internal/catalog/data/18/pg_class.tsv b/internal/catalog/data/18/pg_class.tsv new file mode 100644 index 0000000..9f0ad48 --- /dev/null +++ b/internal/catalog/data/18/pg_class.tsv @@ -0,0 +1,2119 @@ +826 pg_default_acl r pg_catalog 1 oid 26 -1 t +826 pg_default_acl r pg_catalog 2 defaclrole 26 -1 t +826 pg_default_acl r pg_catalog 3 defaclnamespace 26 -1 t +826 pg_default_acl r pg_catalog 4 defaclobjtype 18 -1 t +826 pg_default_acl r pg_catalog 5 defaclacl 1034 -1 t +1213 pg_tablespace r pg_catalog 1 oid 26 -1 t +1213 pg_tablespace r pg_catalog 2 spcname 19 -1 t +1213 pg_tablespace r pg_catalog 3 spcowner 26 -1 t +1213 pg_tablespace r pg_catalog 4 spcacl 1034 -1 f +1213 pg_tablespace r pg_catalog 5 spcoptions 1009 -1 f +1214 pg_shdepend r pg_catalog 1 dbid 26 -1 t +1214 pg_shdepend r pg_catalog 2 classid 26 -1 t +1214 pg_shdepend r pg_catalog 3 objid 26 -1 t +1214 pg_shdepend r pg_catalog 4 objsubid 23 -1 t +1214 pg_shdepend r pg_catalog 5 refclassid 26 -1 t +1214 pg_shdepend r pg_catalog 6 refobjid 26 -1 t +1214 pg_shdepend r pg_catalog 7 deptype 18 -1 t +1247 pg_type r pg_catalog 1 oid 26 -1 t +1247 pg_type r pg_catalog 2 typname 19 -1 t +1247 pg_type r pg_catalog 3 typnamespace 26 -1 t +1247 pg_type r pg_catalog 4 typowner 26 -1 t +1247 pg_type r pg_catalog 5 typlen 21 -1 t +1247 pg_type r pg_catalog 6 typbyval 16 -1 t +1247 pg_type r pg_catalog 7 typtype 18 -1 t +1247 pg_type r pg_catalog 8 typcategory 18 -1 t +1247 pg_type r pg_catalog 9 typispreferred 16 -1 t +1247 pg_type r pg_catalog 10 typisdefined 16 -1 t +1247 pg_type r pg_catalog 11 typdelim 18 -1 t +1247 pg_type r pg_catalog 12 typrelid 26 -1 t +1247 pg_type r pg_catalog 13 typsubscript 24 -1 t +1247 pg_type r pg_catalog 14 typelem 26 -1 t +1247 pg_type r pg_catalog 15 typarray 26 -1 t +1247 pg_type r pg_catalog 16 typinput 24 -1 t +1247 pg_type r pg_catalog 17 typoutput 24 -1 t +1247 pg_type r pg_catalog 18 typreceive 24 -1 t +1247 pg_type r pg_catalog 19 typsend 24 -1 t +1247 pg_type r pg_catalog 20 typmodin 24 -1 t +1247 pg_type r pg_catalog 21 typmodout 24 -1 t +1247 pg_type r pg_catalog 22 typanalyze 24 -1 t +1247 pg_type r pg_catalog 23 typalign 18 -1 t +1247 pg_type r pg_catalog 24 typstorage 18 -1 t +1247 pg_type r pg_catalog 25 typnotnull 16 -1 t +1247 pg_type r pg_catalog 26 typbasetype 26 -1 t +1247 pg_type r pg_catalog 27 typtypmod 23 -1 t +1247 pg_type r pg_catalog 28 typndims 23 -1 t +1247 pg_type r pg_catalog 29 typcollation 26 -1 t +1247 pg_type r pg_catalog 30 typdefaultbin 194 -1 f +1247 pg_type r pg_catalog 31 typdefault 25 -1 f +1247 pg_type r pg_catalog 32 typacl 1034 -1 f +1249 pg_attribute r pg_catalog 1 attrelid 26 -1 t +1249 pg_attribute r pg_catalog 2 attname 19 -1 t +1249 pg_attribute r pg_catalog 3 atttypid 26 -1 t +1249 pg_attribute r pg_catalog 4 attlen 21 -1 t +1249 pg_attribute r pg_catalog 5 attnum 21 -1 t +1249 pg_attribute r pg_catalog 6 atttypmod 23 -1 t +1249 pg_attribute r pg_catalog 7 attndims 21 -1 t +1249 pg_attribute r pg_catalog 8 attbyval 16 -1 t +1249 pg_attribute r pg_catalog 9 attalign 18 -1 t +1249 pg_attribute r pg_catalog 10 attstorage 18 -1 t +1249 pg_attribute r pg_catalog 11 attcompression 18 -1 t +1249 pg_attribute r pg_catalog 12 attnotnull 16 -1 t +1249 pg_attribute r pg_catalog 13 atthasdef 16 -1 t +1249 pg_attribute r pg_catalog 14 atthasmissing 16 -1 t +1249 pg_attribute r pg_catalog 15 attidentity 18 -1 t +1249 pg_attribute r pg_catalog 16 attgenerated 18 -1 t +1249 pg_attribute r pg_catalog 17 attisdropped 16 -1 t +1249 pg_attribute r pg_catalog 18 attislocal 16 -1 t +1249 pg_attribute r pg_catalog 19 attinhcount 21 -1 t +1249 pg_attribute r pg_catalog 20 attcollation 26 -1 t +1249 pg_attribute r pg_catalog 21 attstattarget 21 -1 f +1249 pg_attribute r pg_catalog 22 attacl 1034 -1 f +1249 pg_attribute r pg_catalog 23 attoptions 1009 -1 f +1249 pg_attribute r pg_catalog 24 attfdwoptions 1009 -1 f +1249 pg_attribute r pg_catalog 25 attmissingval 2277 -1 f +1255 pg_proc r pg_catalog 1 oid 26 -1 t +1255 pg_proc r pg_catalog 2 proname 19 -1 t +1255 pg_proc r pg_catalog 3 pronamespace 26 -1 t +1255 pg_proc r pg_catalog 4 proowner 26 -1 t +1255 pg_proc r pg_catalog 5 prolang 26 -1 t +1255 pg_proc r pg_catalog 6 procost 700 -1 t +1255 pg_proc r pg_catalog 7 prorows 700 -1 t +1255 pg_proc r pg_catalog 8 provariadic 26 -1 t +1255 pg_proc r pg_catalog 9 prosupport 24 -1 t +1255 pg_proc r pg_catalog 10 prokind 18 -1 t +1255 pg_proc r pg_catalog 11 prosecdef 16 -1 t +1255 pg_proc r pg_catalog 12 proleakproof 16 -1 t +1255 pg_proc r pg_catalog 13 proisstrict 16 -1 t +1255 pg_proc r pg_catalog 14 proretset 16 -1 t +1255 pg_proc r pg_catalog 15 provolatile 18 -1 t +1255 pg_proc r pg_catalog 16 proparallel 18 -1 t +1255 pg_proc r pg_catalog 17 pronargs 21 -1 t +1255 pg_proc r pg_catalog 18 pronargdefaults 21 -1 t +1255 pg_proc r pg_catalog 19 prorettype 26 -1 t +1255 pg_proc r pg_catalog 20 proargtypes 30 -1 t +1255 pg_proc r pg_catalog 21 proallargtypes 1028 -1 f +1255 pg_proc r pg_catalog 22 proargmodes 1002 -1 f +1255 pg_proc r pg_catalog 23 proargnames 1009 -1 f +1255 pg_proc r pg_catalog 24 proargdefaults 194 -1 f +1255 pg_proc r pg_catalog 25 protrftypes 1028 -1 f +1255 pg_proc r pg_catalog 26 prosrc 25 -1 t +1255 pg_proc r pg_catalog 27 probin 25 -1 f +1255 pg_proc r pg_catalog 28 prosqlbody 194 -1 f +1255 pg_proc r pg_catalog 29 proconfig 1009 -1 f +1255 pg_proc r pg_catalog 30 proacl 1034 -1 f +1259 pg_class r pg_catalog 1 oid 26 -1 t +1259 pg_class r pg_catalog 2 relname 19 -1 t +1259 pg_class r pg_catalog 3 relnamespace 26 -1 t +1259 pg_class r pg_catalog 4 reltype 26 -1 t +1259 pg_class r pg_catalog 5 reloftype 26 -1 t +1259 pg_class r pg_catalog 6 relowner 26 -1 t +1259 pg_class r pg_catalog 7 relam 26 -1 t +1259 pg_class r pg_catalog 8 relfilenode 26 -1 t +1259 pg_class r pg_catalog 9 reltablespace 26 -1 t +1259 pg_class r pg_catalog 10 relpages 23 -1 t +1259 pg_class r pg_catalog 11 reltuples 700 -1 t +1259 pg_class r pg_catalog 12 relallvisible 23 -1 t +1259 pg_class r pg_catalog 13 relallfrozen 23 -1 t +1259 pg_class r pg_catalog 14 reltoastrelid 26 -1 t +1259 pg_class r pg_catalog 15 relhasindex 16 -1 t +1259 pg_class r pg_catalog 16 relisshared 16 -1 t +1259 pg_class r pg_catalog 17 relpersistence 18 -1 t +1259 pg_class r pg_catalog 18 relkind 18 -1 t +1259 pg_class r pg_catalog 19 relnatts 21 -1 t +1259 pg_class r pg_catalog 20 relchecks 21 -1 t +1259 pg_class r pg_catalog 21 relhasrules 16 -1 t +1259 pg_class r pg_catalog 22 relhastriggers 16 -1 t +1259 pg_class r pg_catalog 23 relhassubclass 16 -1 t +1259 pg_class r pg_catalog 24 relrowsecurity 16 -1 t +1259 pg_class r pg_catalog 25 relforcerowsecurity 16 -1 t +1259 pg_class r pg_catalog 26 relispopulated 16 -1 t +1259 pg_class r pg_catalog 27 relreplident 18 -1 t +1259 pg_class r pg_catalog 28 relispartition 16 -1 t +1259 pg_class r pg_catalog 29 relrewrite 26 -1 t +1259 pg_class r pg_catalog 30 relfrozenxid 28 -1 t +1259 pg_class r pg_catalog 31 relminmxid 28 -1 t +1259 pg_class r pg_catalog 32 relacl 1034 -1 f +1259 pg_class r pg_catalog 33 reloptions 1009 -1 f +1259 pg_class r pg_catalog 34 relpartbound 194 -1 f +1260 pg_authid r pg_catalog 1 oid 26 -1 t +1260 pg_authid r pg_catalog 2 rolname 19 -1 t +1260 pg_authid r pg_catalog 3 rolsuper 16 -1 t +1260 pg_authid r pg_catalog 4 rolinherit 16 -1 t +1260 pg_authid r pg_catalog 5 rolcreaterole 16 -1 t +1260 pg_authid r pg_catalog 6 rolcreatedb 16 -1 t +1260 pg_authid r pg_catalog 7 rolcanlogin 16 -1 t +1260 pg_authid r pg_catalog 8 rolreplication 16 -1 t +1260 pg_authid r pg_catalog 9 rolbypassrls 16 -1 t +1260 pg_authid r pg_catalog 10 rolconnlimit 23 -1 t +1260 pg_authid r pg_catalog 11 rolpassword 25 -1 f +1260 pg_authid r pg_catalog 12 rolvaliduntil 1184 -1 f +1261 pg_auth_members r pg_catalog 1 oid 26 -1 t +1261 pg_auth_members r pg_catalog 2 roleid 26 -1 t +1261 pg_auth_members r pg_catalog 3 member 26 -1 t +1261 pg_auth_members r pg_catalog 4 grantor 26 -1 t +1261 pg_auth_members r pg_catalog 5 admin_option 16 -1 t +1261 pg_auth_members r pg_catalog 6 inherit_option 16 -1 t +1261 pg_auth_members r pg_catalog 7 set_option 16 -1 t +1262 pg_database r pg_catalog 1 oid 26 -1 t +1262 pg_database r pg_catalog 2 datname 19 -1 t +1262 pg_database r pg_catalog 3 datdba 26 -1 t +1262 pg_database r pg_catalog 4 encoding 23 -1 t +1262 pg_database r pg_catalog 5 datlocprovider 18 -1 t +1262 pg_database r pg_catalog 6 datistemplate 16 -1 t +1262 pg_database r pg_catalog 7 datallowconn 16 -1 t +1262 pg_database r pg_catalog 8 dathasloginevt 16 -1 t +1262 pg_database r pg_catalog 9 datconnlimit 23 -1 t +1262 pg_database r pg_catalog 10 datfrozenxid 28 -1 t +1262 pg_database r pg_catalog 11 datminmxid 28 -1 t +1262 pg_database r pg_catalog 12 dattablespace 26 -1 t +1262 pg_database r pg_catalog 13 datcollate 25 -1 t +1262 pg_database r pg_catalog 14 datctype 25 -1 t +1262 pg_database r pg_catalog 15 datlocale 25 -1 f +1262 pg_database r pg_catalog 16 daticurules 25 -1 f +1262 pg_database r pg_catalog 17 datcollversion 25 -1 f +1262 pg_database r pg_catalog 18 datacl 1034 -1 f +1417 pg_foreign_server r pg_catalog 1 oid 26 -1 t +1417 pg_foreign_server r pg_catalog 2 srvname 19 -1 t +1417 pg_foreign_server r pg_catalog 3 srvowner 26 -1 t +1417 pg_foreign_server r pg_catalog 4 srvfdw 26 -1 t +1417 pg_foreign_server r pg_catalog 5 srvtype 25 -1 f +1417 pg_foreign_server r pg_catalog 6 srvversion 25 -1 f +1417 pg_foreign_server r pg_catalog 7 srvacl 1034 -1 f +1417 pg_foreign_server r pg_catalog 8 srvoptions 1009 -1 f +1418 pg_user_mapping r pg_catalog 1 oid 26 -1 t +1418 pg_user_mapping r pg_catalog 2 umuser 26 -1 t +1418 pg_user_mapping r pg_catalog 3 umserver 26 -1 t +1418 pg_user_mapping r pg_catalog 4 umoptions 1009 -1 f +2224 pg_sequence r pg_catalog 1 seqrelid 26 -1 t +2224 pg_sequence r pg_catalog 2 seqtypid 26 -1 t +2224 pg_sequence r pg_catalog 3 seqstart 20 -1 t +2224 pg_sequence r pg_catalog 4 seqincrement 20 -1 t +2224 pg_sequence r pg_catalog 5 seqmax 20 -1 t +2224 pg_sequence r pg_catalog 6 seqmin 20 -1 t +2224 pg_sequence r pg_catalog 7 seqcache 20 -1 t +2224 pg_sequence r pg_catalog 8 seqcycle 16 -1 t +2328 pg_foreign_data_wrapper r pg_catalog 1 oid 26 -1 t +2328 pg_foreign_data_wrapper r pg_catalog 2 fdwname 19 -1 t +2328 pg_foreign_data_wrapper r pg_catalog 3 fdwowner 26 -1 t +2328 pg_foreign_data_wrapper r pg_catalog 4 fdwhandler 26 -1 t +2328 pg_foreign_data_wrapper r pg_catalog 5 fdwvalidator 26 -1 t +2328 pg_foreign_data_wrapper r pg_catalog 6 fdwacl 1034 -1 f +2328 pg_foreign_data_wrapper r pg_catalog 7 fdwoptions 1009 -1 f +2396 pg_shdescription r pg_catalog 1 objoid 26 -1 t +2396 pg_shdescription r pg_catalog 2 classoid 26 -1 t +2396 pg_shdescription r pg_catalog 3 description 25 -1 t +2600 pg_aggregate r pg_catalog 1 aggfnoid 24 -1 t +2600 pg_aggregate r pg_catalog 2 aggkind 18 -1 t +2600 pg_aggregate r pg_catalog 3 aggnumdirectargs 21 -1 t +2600 pg_aggregate r pg_catalog 4 aggtransfn 24 -1 t +2600 pg_aggregate r pg_catalog 5 aggfinalfn 24 -1 t +2600 pg_aggregate r pg_catalog 6 aggcombinefn 24 -1 t +2600 pg_aggregate r pg_catalog 7 aggserialfn 24 -1 t +2600 pg_aggregate r pg_catalog 8 aggdeserialfn 24 -1 t +2600 pg_aggregate r pg_catalog 9 aggmtransfn 24 -1 t +2600 pg_aggregate r pg_catalog 10 aggminvtransfn 24 -1 t +2600 pg_aggregate r pg_catalog 11 aggmfinalfn 24 -1 t +2600 pg_aggregate r pg_catalog 12 aggfinalextra 16 -1 t +2600 pg_aggregate r pg_catalog 13 aggmfinalextra 16 -1 t +2600 pg_aggregate r pg_catalog 14 aggfinalmodify 18 -1 t +2600 pg_aggregate r pg_catalog 15 aggmfinalmodify 18 -1 t +2600 pg_aggregate r pg_catalog 16 aggsortop 26 -1 t +2600 pg_aggregate r pg_catalog 17 aggtranstype 26 -1 t +2600 pg_aggregate r pg_catalog 18 aggtransspace 23 -1 t +2600 pg_aggregate r pg_catalog 19 aggmtranstype 26 -1 t +2600 pg_aggregate r pg_catalog 20 aggmtransspace 23 -1 t +2600 pg_aggregate r pg_catalog 21 agginitval 25 -1 f +2600 pg_aggregate r pg_catalog 22 aggminitval 25 -1 f +2601 pg_am r pg_catalog 1 oid 26 -1 t +2601 pg_am r pg_catalog 2 amname 19 -1 t +2601 pg_am r pg_catalog 3 amhandler 24 -1 t +2601 pg_am r pg_catalog 4 amtype 18 -1 t +2602 pg_amop r pg_catalog 1 oid 26 -1 t +2602 pg_amop r pg_catalog 2 amopfamily 26 -1 t +2602 pg_amop r pg_catalog 3 amoplefttype 26 -1 t +2602 pg_amop r pg_catalog 4 amoprighttype 26 -1 t +2602 pg_amop r pg_catalog 5 amopstrategy 21 -1 t +2602 pg_amop r pg_catalog 6 amoppurpose 18 -1 t +2602 pg_amop r pg_catalog 7 amopopr 26 -1 t +2602 pg_amop r pg_catalog 8 amopmethod 26 -1 t +2602 pg_amop r pg_catalog 9 amopsortfamily 26 -1 t +2603 pg_amproc r pg_catalog 1 oid 26 -1 t +2603 pg_amproc r pg_catalog 2 amprocfamily 26 -1 t +2603 pg_amproc r pg_catalog 3 amproclefttype 26 -1 t +2603 pg_amproc r pg_catalog 4 amprocrighttype 26 -1 t +2603 pg_amproc r pg_catalog 5 amprocnum 21 -1 t +2603 pg_amproc r pg_catalog 6 amproc 24 -1 t +2604 pg_attrdef r pg_catalog 1 oid 26 -1 t +2604 pg_attrdef r pg_catalog 2 adrelid 26 -1 t +2604 pg_attrdef r pg_catalog 3 adnum 21 -1 t +2604 pg_attrdef r pg_catalog 4 adbin 194 -1 t +2605 pg_cast r pg_catalog 1 oid 26 -1 t +2605 pg_cast r pg_catalog 2 castsource 26 -1 t +2605 pg_cast r pg_catalog 3 casttarget 26 -1 t +2605 pg_cast r pg_catalog 4 castfunc 26 -1 t +2605 pg_cast r pg_catalog 5 castcontext 18 -1 t +2605 pg_cast r pg_catalog 6 castmethod 18 -1 t +2606 pg_constraint r pg_catalog 1 oid 26 -1 t +2606 pg_constraint r pg_catalog 2 conname 19 -1 t +2606 pg_constraint r pg_catalog 3 connamespace 26 -1 t +2606 pg_constraint r pg_catalog 4 contype 18 -1 t +2606 pg_constraint r pg_catalog 5 condeferrable 16 -1 t +2606 pg_constraint r pg_catalog 6 condeferred 16 -1 t +2606 pg_constraint r pg_catalog 7 conenforced 16 -1 t +2606 pg_constraint r pg_catalog 8 convalidated 16 -1 t +2606 pg_constraint r pg_catalog 9 conrelid 26 -1 t +2606 pg_constraint r pg_catalog 10 contypid 26 -1 t +2606 pg_constraint r pg_catalog 11 conindid 26 -1 t +2606 pg_constraint r pg_catalog 12 conparentid 26 -1 t +2606 pg_constraint r pg_catalog 13 confrelid 26 -1 t +2606 pg_constraint r pg_catalog 14 confupdtype 18 -1 t +2606 pg_constraint r pg_catalog 15 confdeltype 18 -1 t +2606 pg_constraint r pg_catalog 16 confmatchtype 18 -1 t +2606 pg_constraint r pg_catalog 17 conislocal 16 -1 t +2606 pg_constraint r pg_catalog 18 coninhcount 21 -1 t +2606 pg_constraint r pg_catalog 19 connoinherit 16 -1 t +2606 pg_constraint r pg_catalog 20 conperiod 16 -1 t +2606 pg_constraint r pg_catalog 21 conkey 1005 -1 f +2606 pg_constraint r pg_catalog 22 confkey 1005 -1 f +2606 pg_constraint r pg_catalog 23 conpfeqop 1028 -1 f +2606 pg_constraint r pg_catalog 24 conppeqop 1028 -1 f +2606 pg_constraint r pg_catalog 25 conffeqop 1028 -1 f +2606 pg_constraint r pg_catalog 26 confdelsetcols 1005 -1 f +2606 pg_constraint r pg_catalog 27 conexclop 1028 -1 f +2606 pg_constraint r pg_catalog 28 conbin 194 -1 f +2607 pg_conversion r pg_catalog 1 oid 26 -1 t +2607 pg_conversion r pg_catalog 2 conname 19 -1 t +2607 pg_conversion r pg_catalog 3 connamespace 26 -1 t +2607 pg_conversion r pg_catalog 4 conowner 26 -1 t +2607 pg_conversion r pg_catalog 5 conforencoding 23 -1 t +2607 pg_conversion r pg_catalog 6 contoencoding 23 -1 t +2607 pg_conversion r pg_catalog 7 conproc 24 -1 t +2607 pg_conversion r pg_catalog 8 condefault 16 -1 t +2608 pg_depend r pg_catalog 1 classid 26 -1 t +2608 pg_depend r pg_catalog 2 objid 26 -1 t +2608 pg_depend r pg_catalog 3 objsubid 23 -1 t +2608 pg_depend r pg_catalog 4 refclassid 26 -1 t +2608 pg_depend r pg_catalog 5 refobjid 26 -1 t +2608 pg_depend r pg_catalog 6 refobjsubid 23 -1 t +2608 pg_depend r pg_catalog 7 deptype 18 -1 t +2609 pg_description r pg_catalog 1 objoid 26 -1 t +2609 pg_description r pg_catalog 2 classoid 26 -1 t +2609 pg_description r pg_catalog 3 objsubid 23 -1 t +2609 pg_description r pg_catalog 4 description 25 -1 t +2610 pg_index r pg_catalog 1 indexrelid 26 -1 t +2610 pg_index r pg_catalog 2 indrelid 26 -1 t +2610 pg_index r pg_catalog 3 indnatts 21 -1 t +2610 pg_index r pg_catalog 4 indnkeyatts 21 -1 t +2610 pg_index r pg_catalog 5 indisunique 16 -1 t +2610 pg_index r pg_catalog 6 indnullsnotdistinct 16 -1 t +2610 pg_index r pg_catalog 7 indisprimary 16 -1 t +2610 pg_index r pg_catalog 8 indisexclusion 16 -1 t +2610 pg_index r pg_catalog 9 indimmediate 16 -1 t +2610 pg_index r pg_catalog 10 indisclustered 16 -1 t +2610 pg_index r pg_catalog 11 indisvalid 16 -1 t +2610 pg_index r pg_catalog 12 indcheckxmin 16 -1 t +2610 pg_index r pg_catalog 13 indisready 16 -1 t +2610 pg_index r pg_catalog 14 indislive 16 -1 t +2610 pg_index r pg_catalog 15 indisreplident 16 -1 t +2610 pg_index r pg_catalog 16 indkey 22 -1 t +2610 pg_index r pg_catalog 17 indcollation 30 -1 t +2610 pg_index r pg_catalog 18 indclass 30 -1 t +2610 pg_index r pg_catalog 19 indoption 22 -1 t +2610 pg_index r pg_catalog 20 indexprs 194 -1 f +2610 pg_index r pg_catalog 21 indpred 194 -1 f +2611 pg_inherits r pg_catalog 1 inhrelid 26 -1 t +2611 pg_inherits r pg_catalog 2 inhparent 26 -1 t +2611 pg_inherits r pg_catalog 3 inhseqno 23 -1 t +2611 pg_inherits r pg_catalog 4 inhdetachpending 16 -1 t +2612 pg_language r pg_catalog 1 oid 26 -1 t +2612 pg_language r pg_catalog 2 lanname 19 -1 t +2612 pg_language r pg_catalog 3 lanowner 26 -1 t +2612 pg_language r pg_catalog 4 lanispl 16 -1 t +2612 pg_language r pg_catalog 5 lanpltrusted 16 -1 t +2612 pg_language r pg_catalog 6 lanplcallfoid 26 -1 t +2612 pg_language r pg_catalog 7 laninline 26 -1 t +2612 pg_language r pg_catalog 8 lanvalidator 26 -1 t +2612 pg_language r pg_catalog 9 lanacl 1034 -1 f +2613 pg_largeobject r pg_catalog 1 loid 26 -1 t +2613 pg_largeobject r pg_catalog 2 pageno 23 -1 t +2613 pg_largeobject r pg_catalog 3 data 17 -1 t +2615 pg_namespace r pg_catalog 1 oid 26 -1 t +2615 pg_namespace r pg_catalog 2 nspname 19 -1 t +2615 pg_namespace r pg_catalog 3 nspowner 26 -1 t +2615 pg_namespace r pg_catalog 4 nspacl 1034 -1 f +2616 pg_opclass r pg_catalog 1 oid 26 -1 t +2616 pg_opclass r pg_catalog 2 opcmethod 26 -1 t +2616 pg_opclass r pg_catalog 3 opcname 19 -1 t +2616 pg_opclass r pg_catalog 4 opcnamespace 26 -1 t +2616 pg_opclass r pg_catalog 5 opcowner 26 -1 t +2616 pg_opclass r pg_catalog 6 opcfamily 26 -1 t +2616 pg_opclass r pg_catalog 7 opcintype 26 -1 t +2616 pg_opclass r pg_catalog 8 opcdefault 16 -1 t +2616 pg_opclass r pg_catalog 9 opckeytype 26 -1 t +2617 pg_operator r pg_catalog 1 oid 26 -1 t +2617 pg_operator r pg_catalog 2 oprname 19 -1 t +2617 pg_operator r pg_catalog 3 oprnamespace 26 -1 t +2617 pg_operator r pg_catalog 4 oprowner 26 -1 t +2617 pg_operator r pg_catalog 5 oprkind 18 -1 t +2617 pg_operator r pg_catalog 6 oprcanmerge 16 -1 t +2617 pg_operator r pg_catalog 7 oprcanhash 16 -1 t +2617 pg_operator r pg_catalog 8 oprleft 26 -1 t +2617 pg_operator r pg_catalog 9 oprright 26 -1 t +2617 pg_operator r pg_catalog 10 oprresult 26 -1 t +2617 pg_operator r pg_catalog 11 oprcom 26 -1 t +2617 pg_operator r pg_catalog 12 oprnegate 26 -1 t +2617 pg_operator r pg_catalog 13 oprcode 24 -1 t +2617 pg_operator r pg_catalog 14 oprrest 24 -1 t +2617 pg_operator r pg_catalog 15 oprjoin 24 -1 t +2618 pg_rewrite r pg_catalog 1 oid 26 -1 t +2618 pg_rewrite r pg_catalog 2 rulename 19 -1 t +2618 pg_rewrite r pg_catalog 3 ev_class 26 -1 t +2618 pg_rewrite r pg_catalog 4 ev_type 18 -1 t +2618 pg_rewrite r pg_catalog 5 ev_enabled 18 -1 t +2618 pg_rewrite r pg_catalog 6 is_instead 16 -1 t +2618 pg_rewrite r pg_catalog 7 ev_qual 194 -1 t +2618 pg_rewrite r pg_catalog 8 ev_action 194 -1 t +2619 pg_statistic r pg_catalog 1 starelid 26 -1 t +2619 pg_statistic r pg_catalog 2 staattnum 21 -1 t +2619 pg_statistic r pg_catalog 3 stainherit 16 -1 t +2619 pg_statistic r pg_catalog 4 stanullfrac 700 -1 t +2619 pg_statistic r pg_catalog 5 stawidth 23 -1 t +2619 pg_statistic r pg_catalog 6 stadistinct 700 -1 t +2619 pg_statistic r pg_catalog 7 stakind1 21 -1 t +2619 pg_statistic r pg_catalog 8 stakind2 21 -1 t +2619 pg_statistic r pg_catalog 9 stakind3 21 -1 t +2619 pg_statistic r pg_catalog 10 stakind4 21 -1 t +2619 pg_statistic r pg_catalog 11 stakind5 21 -1 t +2619 pg_statistic r pg_catalog 12 staop1 26 -1 t +2619 pg_statistic r pg_catalog 13 staop2 26 -1 t +2619 pg_statistic r pg_catalog 14 staop3 26 -1 t +2619 pg_statistic r pg_catalog 15 staop4 26 -1 t +2619 pg_statistic r pg_catalog 16 staop5 26 -1 t +2619 pg_statistic r pg_catalog 17 stacoll1 26 -1 t +2619 pg_statistic r pg_catalog 18 stacoll2 26 -1 t +2619 pg_statistic r pg_catalog 19 stacoll3 26 -1 t +2619 pg_statistic r pg_catalog 20 stacoll4 26 -1 t +2619 pg_statistic r pg_catalog 21 stacoll5 26 -1 t +2619 pg_statistic r pg_catalog 22 stanumbers1 1021 -1 f +2619 pg_statistic r pg_catalog 23 stanumbers2 1021 -1 f +2619 pg_statistic r pg_catalog 24 stanumbers3 1021 -1 f +2619 pg_statistic r pg_catalog 25 stanumbers4 1021 -1 f +2619 pg_statistic r pg_catalog 26 stanumbers5 1021 -1 f +2619 pg_statistic r pg_catalog 27 stavalues1 2277 -1 f +2619 pg_statistic r pg_catalog 28 stavalues2 2277 -1 f +2619 pg_statistic r pg_catalog 29 stavalues3 2277 -1 f +2619 pg_statistic r pg_catalog 30 stavalues4 2277 -1 f +2619 pg_statistic r pg_catalog 31 stavalues5 2277 -1 f +2620 pg_trigger r pg_catalog 1 oid 26 -1 t +2620 pg_trigger r pg_catalog 2 tgrelid 26 -1 t +2620 pg_trigger r pg_catalog 3 tgparentid 26 -1 t +2620 pg_trigger r pg_catalog 4 tgname 19 -1 t +2620 pg_trigger r pg_catalog 5 tgfoid 26 -1 t +2620 pg_trigger r pg_catalog 6 tgtype 21 -1 t +2620 pg_trigger r pg_catalog 7 tgenabled 18 -1 t +2620 pg_trigger r pg_catalog 8 tgisinternal 16 -1 t +2620 pg_trigger r pg_catalog 9 tgconstrrelid 26 -1 t +2620 pg_trigger r pg_catalog 10 tgconstrindid 26 -1 t +2620 pg_trigger r pg_catalog 11 tgconstraint 26 -1 t +2620 pg_trigger r pg_catalog 12 tgdeferrable 16 -1 t +2620 pg_trigger r pg_catalog 13 tginitdeferred 16 -1 t +2620 pg_trigger r pg_catalog 14 tgnargs 21 -1 t +2620 pg_trigger r pg_catalog 15 tgattr 22 -1 t +2620 pg_trigger r pg_catalog 16 tgargs 17 -1 t +2620 pg_trigger r pg_catalog 17 tgqual 194 -1 f +2620 pg_trigger r pg_catalog 18 tgoldtable 19 -1 f +2620 pg_trigger r pg_catalog 19 tgnewtable 19 -1 f +2753 pg_opfamily r pg_catalog 1 oid 26 -1 t +2753 pg_opfamily r pg_catalog 2 opfmethod 26 -1 t +2753 pg_opfamily r pg_catalog 3 opfname 19 -1 t +2753 pg_opfamily r pg_catalog 4 opfnamespace 26 -1 t +2753 pg_opfamily r pg_catalog 5 opfowner 26 -1 t +2964 pg_db_role_setting r pg_catalog 1 setdatabase 26 -1 t +2964 pg_db_role_setting r pg_catalog 2 setrole 26 -1 t +2964 pg_db_role_setting r pg_catalog 3 setconfig 1009 -1 f +2995 pg_largeobject_metadata r pg_catalog 1 oid 26 -1 t +2995 pg_largeobject_metadata r pg_catalog 2 lomowner 26 -1 t +2995 pg_largeobject_metadata r pg_catalog 3 lomacl 1034 -1 f +3079 pg_extension r pg_catalog 1 oid 26 -1 t +3079 pg_extension r pg_catalog 2 extname 19 -1 t +3079 pg_extension r pg_catalog 3 extowner 26 -1 t +3079 pg_extension r pg_catalog 4 extnamespace 26 -1 t +3079 pg_extension r pg_catalog 5 extrelocatable 16 -1 t +3079 pg_extension r pg_catalog 6 extversion 25 -1 t +3079 pg_extension r pg_catalog 7 extconfig 1028 -1 f +3079 pg_extension r pg_catalog 8 extcondition 1009 -1 f +3118 pg_foreign_table r pg_catalog 1 ftrelid 26 -1 t +3118 pg_foreign_table r pg_catalog 2 ftserver 26 -1 t +3118 pg_foreign_table r pg_catalog 3 ftoptions 1009 -1 f +3256 pg_policy r pg_catalog 1 oid 26 -1 t +3256 pg_policy r pg_catalog 2 polname 19 -1 t +3256 pg_policy r pg_catalog 3 polrelid 26 -1 t +3256 pg_policy r pg_catalog 4 polcmd 18 -1 t +3256 pg_policy r pg_catalog 5 polpermissive 16 -1 t +3256 pg_policy r pg_catalog 6 polroles 1028 -1 t +3256 pg_policy r pg_catalog 7 polqual 194 -1 f +3256 pg_policy r pg_catalog 8 polwithcheck 194 -1 f +3350 pg_partitioned_table r pg_catalog 1 partrelid 26 -1 t +3350 pg_partitioned_table r pg_catalog 2 partstrat 18 -1 t +3350 pg_partitioned_table r pg_catalog 3 partnatts 21 -1 t +3350 pg_partitioned_table r pg_catalog 4 partdefid 26 -1 t +3350 pg_partitioned_table r pg_catalog 5 partattrs 22 -1 t +3350 pg_partitioned_table r pg_catalog 6 partclass 30 -1 t +3350 pg_partitioned_table r pg_catalog 7 partcollation 30 -1 t +3350 pg_partitioned_table r pg_catalog 8 partexprs 194 -1 f +3381 pg_statistic_ext r pg_catalog 1 oid 26 -1 t +3381 pg_statistic_ext r pg_catalog 2 stxrelid 26 -1 t +3381 pg_statistic_ext r pg_catalog 3 stxname 19 -1 t +3381 pg_statistic_ext r pg_catalog 4 stxnamespace 26 -1 t +3381 pg_statistic_ext r pg_catalog 5 stxowner 26 -1 t +3381 pg_statistic_ext r pg_catalog 6 stxkeys 22 -1 t +3381 pg_statistic_ext r pg_catalog 7 stxstattarget 21 -1 f +3381 pg_statistic_ext r pg_catalog 8 stxkind 1002 -1 t +3381 pg_statistic_ext r pg_catalog 9 stxexprs 194 -1 f +3394 pg_init_privs r pg_catalog 1 objoid 26 -1 t +3394 pg_init_privs r pg_catalog 2 classoid 26 -1 t +3394 pg_init_privs r pg_catalog 3 objsubid 23 -1 t +3394 pg_init_privs r pg_catalog 4 privtype 18 -1 t +3394 pg_init_privs r pg_catalog 5 initprivs 1034 -1 t +3429 pg_statistic_ext_data r pg_catalog 1 stxoid 26 -1 t +3429 pg_statistic_ext_data r pg_catalog 2 stxdinherit 16 -1 t +3429 pg_statistic_ext_data r pg_catalog 3 stxdndistinct 3361 -1 f +3429 pg_statistic_ext_data r pg_catalog 4 stxddependencies 3402 -1 f +3429 pg_statistic_ext_data r pg_catalog 5 stxdmcv 5017 -1 f +3429 pg_statistic_ext_data r pg_catalog 6 stxdexpr 10028 -1 f +3456 pg_collation r pg_catalog 1 oid 26 -1 t +3456 pg_collation r pg_catalog 2 collname 19 -1 t +3456 pg_collation r pg_catalog 3 collnamespace 26 -1 t +3456 pg_collation r pg_catalog 4 collowner 26 -1 t +3456 pg_collation r pg_catalog 5 collprovider 18 -1 t +3456 pg_collation r pg_catalog 6 collisdeterministic 16 -1 t +3456 pg_collation r pg_catalog 7 collencoding 23 -1 t +3456 pg_collation r pg_catalog 8 collcollate 25 -1 f +3456 pg_collation r pg_catalog 9 collctype 25 -1 f +3456 pg_collation r pg_catalog 10 colllocale 25 -1 f +3456 pg_collation r pg_catalog 11 collicurules 25 -1 f +3456 pg_collation r pg_catalog 12 collversion 25 -1 f +3466 pg_event_trigger r pg_catalog 1 oid 26 -1 t +3466 pg_event_trigger r pg_catalog 2 evtname 19 -1 t +3466 pg_event_trigger r pg_catalog 3 evtevent 19 -1 t +3466 pg_event_trigger r pg_catalog 4 evtowner 26 -1 t +3466 pg_event_trigger r pg_catalog 5 evtfoid 26 -1 t +3466 pg_event_trigger r pg_catalog 6 evtenabled 18 -1 t +3466 pg_event_trigger r pg_catalog 7 evttags 1009 -1 f +3501 pg_enum r pg_catalog 1 oid 26 -1 t +3501 pg_enum r pg_catalog 2 enumtypid 26 -1 t +3501 pg_enum r pg_catalog 3 enumsortorder 700 -1 t +3501 pg_enum r pg_catalog 4 enumlabel 19 -1 t +3541 pg_range r pg_catalog 1 rngtypid 26 -1 t +3541 pg_range r pg_catalog 2 rngsubtype 26 -1 t +3541 pg_range r pg_catalog 3 rngmultitypid 26 -1 t +3541 pg_range r pg_catalog 4 rngcollation 26 -1 t +3541 pg_range r pg_catalog 5 rngsubopc 26 -1 t +3541 pg_range r pg_catalog 6 rngcanonical 24 -1 t +3541 pg_range r pg_catalog 7 rngsubdiff 24 -1 t +3576 pg_transform r pg_catalog 1 oid 26 -1 t +3576 pg_transform r pg_catalog 2 trftype 26 -1 t +3576 pg_transform r pg_catalog 3 trflang 26 -1 t +3576 pg_transform r pg_catalog 4 trffromsql 24 -1 t +3576 pg_transform r pg_catalog 5 trftosql 24 -1 t +3592 pg_shseclabel r pg_catalog 1 objoid 26 -1 t +3592 pg_shseclabel r pg_catalog 2 classoid 26 -1 t +3592 pg_shseclabel r pg_catalog 3 provider 25 -1 t +3592 pg_shseclabel r pg_catalog 4 label 25 -1 t +3596 pg_seclabel r pg_catalog 1 objoid 26 -1 t +3596 pg_seclabel r pg_catalog 2 classoid 26 -1 t +3596 pg_seclabel r pg_catalog 3 objsubid 23 -1 t +3596 pg_seclabel r pg_catalog 4 provider 25 -1 t +3596 pg_seclabel r pg_catalog 5 label 25 -1 t +3600 pg_ts_dict r pg_catalog 1 oid 26 -1 t +3600 pg_ts_dict r pg_catalog 2 dictname 19 -1 t +3600 pg_ts_dict r pg_catalog 3 dictnamespace 26 -1 t +3600 pg_ts_dict r pg_catalog 4 dictowner 26 -1 t +3600 pg_ts_dict r pg_catalog 5 dicttemplate 26 -1 t +3600 pg_ts_dict r pg_catalog 6 dictinitoption 25 -1 f +3601 pg_ts_parser r pg_catalog 1 oid 26 -1 t +3601 pg_ts_parser r pg_catalog 2 prsname 19 -1 t +3601 pg_ts_parser r pg_catalog 3 prsnamespace 26 -1 t +3601 pg_ts_parser r pg_catalog 4 prsstart 24 -1 t +3601 pg_ts_parser r pg_catalog 5 prstoken 24 -1 t +3601 pg_ts_parser r pg_catalog 6 prsend 24 -1 t +3601 pg_ts_parser r pg_catalog 7 prsheadline 24 -1 t +3601 pg_ts_parser r pg_catalog 8 prslextype 24 -1 t +3602 pg_ts_config r pg_catalog 1 oid 26 -1 t +3602 pg_ts_config r pg_catalog 2 cfgname 19 -1 t +3602 pg_ts_config r pg_catalog 3 cfgnamespace 26 -1 t +3602 pg_ts_config r pg_catalog 4 cfgowner 26 -1 t +3602 pg_ts_config r pg_catalog 5 cfgparser 26 -1 t +3603 pg_ts_config_map r pg_catalog 1 mapcfg 26 -1 t +3603 pg_ts_config_map r pg_catalog 2 maptokentype 23 -1 t +3603 pg_ts_config_map r pg_catalog 3 mapseqno 23 -1 t +3603 pg_ts_config_map r pg_catalog 4 mapdict 26 -1 t +3764 pg_ts_template r pg_catalog 1 oid 26 -1 t +3764 pg_ts_template r pg_catalog 2 tmplname 19 -1 t +3764 pg_ts_template r pg_catalog 3 tmplnamespace 26 -1 t +3764 pg_ts_template r pg_catalog 4 tmplinit 24 -1 t +3764 pg_ts_template r pg_catalog 5 tmpllexize 24 -1 t +6000 pg_replication_origin r pg_catalog 1 roident 26 -1 t +6000 pg_replication_origin r pg_catalog 2 roname 25 -1 t +6100 pg_subscription r pg_catalog 1 oid 26 -1 t +6100 pg_subscription r pg_catalog 2 subdbid 26 -1 t +6100 pg_subscription r pg_catalog 3 subskiplsn 3220 -1 t +6100 pg_subscription r pg_catalog 4 subname 19 -1 t +6100 pg_subscription r pg_catalog 5 subowner 26 -1 t +6100 pg_subscription r pg_catalog 6 subenabled 16 -1 t +6100 pg_subscription r pg_catalog 7 subbinary 16 -1 t +6100 pg_subscription r pg_catalog 8 substream 18 -1 t +6100 pg_subscription r pg_catalog 9 subtwophasestate 18 -1 t +6100 pg_subscription r pg_catalog 10 subdisableonerr 16 -1 t +6100 pg_subscription r pg_catalog 11 subpasswordrequired 16 -1 t +6100 pg_subscription r pg_catalog 12 subrunasowner 16 -1 t +6100 pg_subscription r pg_catalog 13 subfailover 16 -1 t +6100 pg_subscription r pg_catalog 14 subconninfo 25 -1 t +6100 pg_subscription r pg_catalog 15 subslotname 19 -1 f +6100 pg_subscription r pg_catalog 16 subsynccommit 25 -1 t +6100 pg_subscription r pg_catalog 17 subpublications 1009 -1 t +6100 pg_subscription r pg_catalog 18 suborigin 25 -1 f +6102 pg_subscription_rel r pg_catalog 1 srsubid 26 -1 t +6102 pg_subscription_rel r pg_catalog 2 srrelid 26 -1 t +6102 pg_subscription_rel r pg_catalog 3 srsubstate 18 -1 t +6102 pg_subscription_rel r pg_catalog 4 srsublsn 3220 -1 f +6104 pg_publication r pg_catalog 1 oid 26 -1 t +6104 pg_publication r pg_catalog 2 pubname 19 -1 t +6104 pg_publication r pg_catalog 3 pubowner 26 -1 t +6104 pg_publication r pg_catalog 4 puballtables 16 -1 t +6104 pg_publication r pg_catalog 5 pubinsert 16 -1 t +6104 pg_publication r pg_catalog 6 pubupdate 16 -1 t +6104 pg_publication r pg_catalog 7 pubdelete 16 -1 t +6104 pg_publication r pg_catalog 8 pubtruncate 16 -1 t +6104 pg_publication r pg_catalog 9 pubviaroot 16 -1 t +6104 pg_publication r pg_catalog 10 pubgencols 18 -1 t +6106 pg_publication_rel r pg_catalog 1 oid 26 -1 t +6106 pg_publication_rel r pg_catalog 2 prpubid 26 -1 t +6106 pg_publication_rel r pg_catalog 3 prrelid 26 -1 t +6106 pg_publication_rel r pg_catalog 4 prqual 194 -1 f +6106 pg_publication_rel r pg_catalog 5 prattrs 22 -1 f +6237 pg_publication_namespace r pg_catalog 1 oid 26 -1 t +6237 pg_publication_namespace r pg_catalog 2 pnpubid 26 -1 t +6237 pg_publication_namespace r pg_catalog 3 pnnspid 26 -1 t +6243 pg_parameter_acl r pg_catalog 1 oid 26 -1 t +6243 pg_parameter_acl r pg_catalog 2 parname 25 -1 t +6243 pg_parameter_acl r pg_catalog 3 paracl 1034 -1 f +12000 pg_roles v pg_catalog 1 rolname 19 -1 f +12000 pg_roles v pg_catalog 2 rolsuper 16 -1 f +12000 pg_roles v pg_catalog 3 rolinherit 16 -1 f +12000 pg_roles v pg_catalog 4 rolcreaterole 16 -1 f +12000 pg_roles v pg_catalog 5 rolcreatedb 16 -1 f +12000 pg_roles v pg_catalog 6 rolcanlogin 16 -1 f +12000 pg_roles v pg_catalog 7 rolreplication 16 -1 f +12000 pg_roles v pg_catalog 8 rolconnlimit 23 -1 f +12000 pg_roles v pg_catalog 9 rolpassword 25 -1 f +12000 pg_roles v pg_catalog 10 rolvaliduntil 1184 -1 f +12000 pg_roles v pg_catalog 11 rolbypassrls 16 -1 f +12000 pg_roles v pg_catalog 12 rolconfig 1009 -1 f +12000 pg_roles v pg_catalog 13 oid 26 -1 f +12005 pg_shadow v pg_catalog 1 usename 19 -1 f +12005 pg_shadow v pg_catalog 2 usesysid 26 -1 f +12005 pg_shadow v pg_catalog 3 usecreatedb 16 -1 f +12005 pg_shadow v pg_catalog 4 usesuper 16 -1 f +12005 pg_shadow v pg_catalog 5 userepl 16 -1 f +12005 pg_shadow v pg_catalog 6 usebypassrls 16 -1 f +12005 pg_shadow v pg_catalog 7 passwd 25 -1 f +12005 pg_shadow v pg_catalog 8 valuntil 1184 -1 f +12005 pg_shadow v pg_catalog 9 useconfig 1009 -1 f +12010 pg_group v pg_catalog 1 groname 19 -1 f +12010 pg_group v pg_catalog 2 grosysid 26 -1 f +12010 pg_group v pg_catalog 3 grolist 1028 -1 f +12014 pg_user v pg_catalog 1 usename 19 -1 f +12014 pg_user v pg_catalog 2 usesysid 26 -1 f +12014 pg_user v pg_catalog 3 usecreatedb 16 -1 f +12014 pg_user v pg_catalog 4 usesuper 16 -1 f +12014 pg_user v pg_catalog 5 userepl 16 -1 f +12014 pg_user v pg_catalog 6 usebypassrls 16 -1 f +12014 pg_user v pg_catalog 7 passwd 25 -1 f +12014 pg_user v pg_catalog 8 valuntil 1184 -1 f +12014 pg_user v pg_catalog 9 useconfig 1009 -1 f +12018 pg_policies v pg_catalog 1 schemaname 19 -1 f +12018 pg_policies v pg_catalog 2 tablename 19 -1 f +12018 pg_policies v pg_catalog 3 policyname 19 -1 f +12018 pg_policies v pg_catalog 4 permissive 25 -1 f +12018 pg_policies v pg_catalog 5 roles 1003 -1 f +12018 pg_policies v pg_catalog 6 cmd 25 -1 f +12018 pg_policies v pg_catalog 7 qual 25 -1 f +12018 pg_policies v pg_catalog 8 with_check 25 -1 f +12023 pg_rules v pg_catalog 1 schemaname 19 -1 f +12023 pg_rules v pg_catalog 2 tablename 19 -1 f +12023 pg_rules v pg_catalog 3 rulename 19 -1 f +12023 pg_rules v pg_catalog 4 definition 25 -1 f +12028 pg_views v pg_catalog 1 schemaname 19 -1 f +12028 pg_views v pg_catalog 2 viewname 19 -1 f +12028 pg_views v pg_catalog 3 viewowner 19 -1 f +12028 pg_views v pg_catalog 4 definition 25 -1 f +12033 pg_tables v pg_catalog 1 schemaname 19 -1 f +12033 pg_tables v pg_catalog 2 tablename 19 -1 f +12033 pg_tables v pg_catalog 3 tableowner 19 -1 f +12033 pg_tables v pg_catalog 4 tablespace 19 -1 f +12033 pg_tables v pg_catalog 5 hasindexes 16 -1 f +12033 pg_tables v pg_catalog 6 hasrules 16 -1 f +12033 pg_tables v pg_catalog 7 hastriggers 16 -1 f +12033 pg_tables v pg_catalog 8 rowsecurity 16 -1 f +12038 pg_matviews v pg_catalog 1 schemaname 19 -1 f +12038 pg_matviews v pg_catalog 2 matviewname 19 -1 f +12038 pg_matviews v pg_catalog 3 matviewowner 19 -1 f +12038 pg_matviews v pg_catalog 4 tablespace 19 -1 f +12038 pg_matviews v pg_catalog 5 hasindexes 16 -1 f +12038 pg_matviews v pg_catalog 6 ispopulated 16 -1 f +12038 pg_matviews v pg_catalog 7 definition 25 -1 f +12043 pg_indexes v pg_catalog 1 schemaname 19 -1 f +12043 pg_indexes v pg_catalog 2 tablename 19 -1 f +12043 pg_indexes v pg_catalog 3 indexname 19 -1 f +12043 pg_indexes v pg_catalog 4 tablespace 19 -1 f +12043 pg_indexes v pg_catalog 5 indexdef 25 -1 f +12048 pg_sequences v pg_catalog 1 schemaname 19 -1 f +12048 pg_sequences v pg_catalog 2 sequencename 19 -1 f +12048 pg_sequences v pg_catalog 3 sequenceowner 19 -1 f +12048 pg_sequences v pg_catalog 4 data_type 2206 -1 f +12048 pg_sequences v pg_catalog 5 start_value 20 -1 f +12048 pg_sequences v pg_catalog 6 min_value 20 -1 f +12048 pg_sequences v pg_catalog 7 max_value 20 -1 f +12048 pg_sequences v pg_catalog 8 increment_by 20 -1 f +12048 pg_sequences v pg_catalog 9 cycle 16 -1 f +12048 pg_sequences v pg_catalog 10 cache_size 20 -1 f +12048 pg_sequences v pg_catalog 11 last_value 20 -1 f +12053 pg_stats v pg_catalog 1 schemaname 19 -1 f +12053 pg_stats v pg_catalog 2 tablename 19 -1 f +12053 pg_stats v pg_catalog 3 attname 19 -1 f +12053 pg_stats v pg_catalog 4 inherited 16 -1 f +12053 pg_stats v pg_catalog 5 null_frac 700 -1 f +12053 pg_stats v pg_catalog 6 avg_width 23 -1 f +12053 pg_stats v pg_catalog 7 n_distinct 700 -1 f +12053 pg_stats v pg_catalog 8 most_common_vals 2277 -1 f +12053 pg_stats v pg_catalog 9 most_common_freqs 1021 -1 f +12053 pg_stats v pg_catalog 10 histogram_bounds 2277 -1 f +12053 pg_stats v pg_catalog 11 correlation 700 -1 f +12053 pg_stats v pg_catalog 12 most_common_elems 2277 -1 f +12053 pg_stats v pg_catalog 13 most_common_elem_freqs 1021 -1 f +12053 pg_stats v pg_catalog 14 elem_count_histogram 1021 -1 f +12053 pg_stats v pg_catalog 15 range_length_histogram 2277 -1 f +12053 pg_stats v pg_catalog 16 range_empty_frac 700 -1 f +12053 pg_stats v pg_catalog 17 range_bounds_histogram 2277 -1 f +12058 pg_stats_ext v pg_catalog 1 schemaname 19 -1 f +12058 pg_stats_ext v pg_catalog 2 tablename 19 -1 f +12058 pg_stats_ext v pg_catalog 3 statistics_schemaname 19 -1 f +12058 pg_stats_ext v pg_catalog 4 statistics_name 19 -1 f +12058 pg_stats_ext v pg_catalog 5 statistics_owner 19 -1 f +12058 pg_stats_ext v pg_catalog 6 attnames 1003 -1 f +12058 pg_stats_ext v pg_catalog 7 exprs 1009 -1 f +12058 pg_stats_ext v pg_catalog 8 kinds 1002 -1 f +12058 pg_stats_ext v pg_catalog 9 inherited 16 -1 f +12058 pg_stats_ext v pg_catalog 10 n_distinct 3361 -1 f +12058 pg_stats_ext v pg_catalog 11 dependencies 3402 -1 f +12058 pg_stats_ext v pg_catalog 12 most_common_vals 1009 -1 f +12058 pg_stats_ext v pg_catalog 13 most_common_val_nulls 1000 -1 f +12058 pg_stats_ext v pg_catalog 14 most_common_freqs 1022 -1 f +12058 pg_stats_ext v pg_catalog 15 most_common_base_freqs 1022 -1 f +12063 pg_stats_ext_exprs v pg_catalog 1 schemaname 19 -1 f +12063 pg_stats_ext_exprs v pg_catalog 2 tablename 19 -1 f +12063 pg_stats_ext_exprs v pg_catalog 3 statistics_schemaname 19 -1 f +12063 pg_stats_ext_exprs v pg_catalog 4 statistics_name 19 -1 f +12063 pg_stats_ext_exprs v pg_catalog 5 statistics_owner 19 -1 f +12063 pg_stats_ext_exprs v pg_catalog 6 expr 25 -1 f +12063 pg_stats_ext_exprs v pg_catalog 7 inherited 16 -1 f +12063 pg_stats_ext_exprs v pg_catalog 8 null_frac 700 -1 f +12063 pg_stats_ext_exprs v pg_catalog 9 avg_width 23 -1 f +12063 pg_stats_ext_exprs v pg_catalog 10 n_distinct 700 -1 f +12063 pg_stats_ext_exprs v pg_catalog 11 most_common_vals 2277 -1 f +12063 pg_stats_ext_exprs v pg_catalog 12 most_common_freqs 1021 -1 f +12063 pg_stats_ext_exprs v pg_catalog 13 histogram_bounds 2277 -1 f +12063 pg_stats_ext_exprs v pg_catalog 14 correlation 700 -1 f +12063 pg_stats_ext_exprs v pg_catalog 15 most_common_elems 2277 -1 f +12063 pg_stats_ext_exprs v pg_catalog 16 most_common_elem_freqs 1021 -1 f +12063 pg_stats_ext_exprs v pg_catalog 17 elem_count_histogram 1021 -1 f +12068 pg_publication_tables v pg_catalog 1 pubname 19 -1 f +12068 pg_publication_tables v pg_catalog 2 schemaname 19 -1 f +12068 pg_publication_tables v pg_catalog 3 tablename 19 -1 f +12068 pg_publication_tables v pg_catalog 4 attnames 1003 -1 f +12068 pg_publication_tables v pg_catalog 5 rowfilter 25 -1 f +12073 pg_locks v pg_catalog 1 locktype 25 -1 f +12073 pg_locks v pg_catalog 2 database 26 -1 f +12073 pg_locks v pg_catalog 3 relation 26 -1 f +12073 pg_locks v pg_catalog 4 page 23 -1 f +12073 pg_locks v pg_catalog 5 tuple 21 -1 f +12073 pg_locks v pg_catalog 6 virtualxid 25 -1 f +12073 pg_locks v pg_catalog 7 transactionid 28 -1 f +12073 pg_locks v pg_catalog 8 classid 26 -1 f +12073 pg_locks v pg_catalog 9 objid 26 -1 f +12073 pg_locks v pg_catalog 10 objsubid 21 -1 f +12073 pg_locks v pg_catalog 11 virtualtransaction 25 -1 f +12073 pg_locks v pg_catalog 12 pid 23 -1 f +12073 pg_locks v pg_catalog 13 mode 25 -1 f +12073 pg_locks v pg_catalog 14 granted 16 -1 f +12073 pg_locks v pg_catalog 15 fastpath 16 -1 f +12073 pg_locks v pg_catalog 16 waitstart 1184 -1 f +12077 pg_cursors v pg_catalog 1 name 25 -1 f +12077 pg_cursors v pg_catalog 2 statement 25 -1 f +12077 pg_cursors v pg_catalog 3 is_holdable 16 -1 f +12077 pg_cursors v pg_catalog 4 is_binary 16 -1 f +12077 pg_cursors v pg_catalog 5 is_scrollable 16 -1 f +12077 pg_cursors v pg_catalog 6 creation_time 1184 -1 f +12081 pg_available_extensions v pg_catalog 1 name 19 -1 f +12081 pg_available_extensions v pg_catalog 2 default_version 25 -1 f +12081 pg_available_extensions v pg_catalog 3 installed_version 25 -1 f +12081 pg_available_extensions v pg_catalog 4 comment 25 -1 f +12085 pg_available_extension_versions v pg_catalog 1 name 19 -1 f +12085 pg_available_extension_versions v pg_catalog 2 version 25 -1 f +12085 pg_available_extension_versions v pg_catalog 3 installed 16 -1 f +12085 pg_available_extension_versions v pg_catalog 4 superuser 16 -1 f +12085 pg_available_extension_versions v pg_catalog 5 trusted 16 -1 f +12085 pg_available_extension_versions v pg_catalog 6 relocatable 16 -1 f +12085 pg_available_extension_versions v pg_catalog 7 schema 19 -1 f +12085 pg_available_extension_versions v pg_catalog 8 requires 1003 -1 f +12085 pg_available_extension_versions v pg_catalog 9 comment 25 -1 f +12090 pg_prepared_xacts v pg_catalog 1 transaction 28 -1 f +12090 pg_prepared_xacts v pg_catalog 2 gid 25 -1 f +12090 pg_prepared_xacts v pg_catalog 3 prepared 1184 -1 f +12090 pg_prepared_xacts v pg_catalog 4 owner 19 -1 f +12090 pg_prepared_xacts v pg_catalog 5 database 19 -1 f +12095 pg_prepared_statements v pg_catalog 1 name 25 -1 f +12095 pg_prepared_statements v pg_catalog 2 statement 25 -1 f +12095 pg_prepared_statements v pg_catalog 3 prepare_time 1184 -1 f +12095 pg_prepared_statements v pg_catalog 4 parameter_types 2211 -1 f +12095 pg_prepared_statements v pg_catalog 5 result_types 2211 -1 f +12095 pg_prepared_statements v pg_catalog 6 from_sql 16 -1 f +12095 pg_prepared_statements v pg_catalog 7 generic_plans 20 -1 f +12095 pg_prepared_statements v pg_catalog 8 custom_plans 20 -1 f +12099 pg_seclabels v pg_catalog 1 objoid 26 -1 f +12099 pg_seclabels v pg_catalog 2 classoid 26 -1 f +12099 pg_seclabels v pg_catalog 3 objsubid 23 -1 f +12099 pg_seclabels v pg_catalog 4 objtype 25 -1 f +12099 pg_seclabels v pg_catalog 5 objnamespace 26 -1 f +12099 pg_seclabels v pg_catalog 6 objname 25 -1 f +12099 pg_seclabels v pg_catalog 7 provider 25 -1 f +12099 pg_seclabels v pg_catalog 8 label 25 -1 f +12104 pg_settings v pg_catalog 1 name 25 -1 f +12104 pg_settings v pg_catalog 2 setting 25 -1 f +12104 pg_settings v pg_catalog 3 unit 25 -1 f +12104 pg_settings v pg_catalog 4 category 25 -1 f +12104 pg_settings v pg_catalog 5 short_desc 25 -1 f +12104 pg_settings v pg_catalog 6 extra_desc 25 -1 f +12104 pg_settings v pg_catalog 7 context 25 -1 f +12104 pg_settings v pg_catalog 8 vartype 25 -1 f +12104 pg_settings v pg_catalog 9 source 25 -1 f +12104 pg_settings v pg_catalog 10 min_val 25 -1 f +12104 pg_settings v pg_catalog 11 max_val 25 -1 f +12104 pg_settings v pg_catalog 12 enumvals 1009 -1 f +12104 pg_settings v pg_catalog 13 boot_val 25 -1 f +12104 pg_settings v pg_catalog 14 reset_val 25 -1 f +12104 pg_settings v pg_catalog 15 sourcefile 25 -1 f +12104 pg_settings v pg_catalog 16 sourceline 23 -1 f +12104 pg_settings v pg_catalog 17 pending_restart 16 -1 f +12110 pg_file_settings v pg_catalog 1 sourcefile 25 -1 f +12110 pg_file_settings v pg_catalog 2 sourceline 23 -1 f +12110 pg_file_settings v pg_catalog 3 seqno 23 -1 f +12110 pg_file_settings v pg_catalog 4 name 25 -1 f +12110 pg_file_settings v pg_catalog 5 setting 25 -1 f +12110 pg_file_settings v pg_catalog 6 applied 16 -1 f +12110 pg_file_settings v pg_catalog 7 error 25 -1 f +12114 pg_hba_file_rules v pg_catalog 1 rule_number 23 -1 f +12114 pg_hba_file_rules v pg_catalog 2 file_name 25 -1 f +12114 pg_hba_file_rules v pg_catalog 3 line_number 23 -1 f +12114 pg_hba_file_rules v pg_catalog 4 type 25 -1 f +12114 pg_hba_file_rules v pg_catalog 5 database 1009 -1 f +12114 pg_hba_file_rules v pg_catalog 6 user_name 1009 -1 f +12114 pg_hba_file_rules v pg_catalog 7 address 25 -1 f +12114 pg_hba_file_rules v pg_catalog 8 netmask 25 -1 f +12114 pg_hba_file_rules v pg_catalog 9 auth_method 25 -1 f +12114 pg_hba_file_rules v pg_catalog 10 options 1009 -1 f +12114 pg_hba_file_rules v pg_catalog 11 error 25 -1 f +12118 pg_ident_file_mappings v pg_catalog 1 map_number 23 -1 f +12118 pg_ident_file_mappings v pg_catalog 2 file_name 25 -1 f +12118 pg_ident_file_mappings v pg_catalog 3 line_number 23 -1 f +12118 pg_ident_file_mappings v pg_catalog 4 map_name 25 -1 f +12118 pg_ident_file_mappings v pg_catalog 5 sys_name 25 -1 f +12118 pg_ident_file_mappings v pg_catalog 6 pg_username 25 -1 f +12118 pg_ident_file_mappings v pg_catalog 7 error 25 -1 f +12122 pg_timezone_abbrevs v pg_catalog 1 abbrev 25 -1 f +12122 pg_timezone_abbrevs v pg_catalog 2 utc_offset 1186 -1 f +12122 pg_timezone_abbrevs v pg_catalog 3 is_dst 16 -1 f +12126 pg_timezone_names v pg_catalog 1 name 25 -1 f +12126 pg_timezone_names v pg_catalog 2 abbrev 25 -1 f +12126 pg_timezone_names v pg_catalog 3 utc_offset 1186 -1 f +12126 pg_timezone_names v pg_catalog 4 is_dst 16 -1 f +12130 pg_config v pg_catalog 1 name 25 -1 f +12130 pg_config v pg_catalog 2 setting 25 -1 f +12134 pg_shmem_allocations v pg_catalog 1 name 25 -1 f +12134 pg_shmem_allocations v pg_catalog 2 off 20 -1 f +12134 pg_shmem_allocations v pg_catalog 3 size 20 -1 f +12134 pg_shmem_allocations v pg_catalog 4 allocated_size 20 -1 f +12138 pg_shmem_allocations_numa v pg_catalog 1 name 25 -1 f +12138 pg_shmem_allocations_numa v pg_catalog 2 numa_node 23 -1 f +12138 pg_shmem_allocations_numa v pg_catalog 3 size 20 -1 f +12142 pg_backend_memory_contexts v pg_catalog 1 name 25 -1 f +12142 pg_backend_memory_contexts v pg_catalog 2 ident 25 -1 f +12142 pg_backend_memory_contexts v pg_catalog 3 type 25 -1 f +12142 pg_backend_memory_contexts v pg_catalog 4 level 23 -1 f +12142 pg_backend_memory_contexts v pg_catalog 5 path 1007 -1 f +12142 pg_backend_memory_contexts v pg_catalog 6 total_bytes 20 -1 f +12142 pg_backend_memory_contexts v pg_catalog 7 total_nblocks 20 -1 f +12142 pg_backend_memory_contexts v pg_catalog 8 free_bytes 20 -1 f +12142 pg_backend_memory_contexts v pg_catalog 9 free_chunks 20 -1 f +12142 pg_backend_memory_contexts v pg_catalog 10 used_bytes 20 -1 f +12146 pg_stat_all_tables v pg_catalog 1 relid 26 -1 f +12146 pg_stat_all_tables v pg_catalog 2 schemaname 19 -1 f +12146 pg_stat_all_tables v pg_catalog 3 relname 19 -1 f +12146 pg_stat_all_tables v pg_catalog 4 seq_scan 20 -1 f +12146 pg_stat_all_tables v pg_catalog 5 last_seq_scan 1184 -1 f +12146 pg_stat_all_tables v pg_catalog 6 seq_tup_read 20 -1 f +12146 pg_stat_all_tables v pg_catalog 7 idx_scan 20 -1 f +12146 pg_stat_all_tables v pg_catalog 8 last_idx_scan 1184 -1 f +12146 pg_stat_all_tables v pg_catalog 9 idx_tup_fetch 20 -1 f +12146 pg_stat_all_tables v pg_catalog 10 n_tup_ins 20 -1 f +12146 pg_stat_all_tables v pg_catalog 11 n_tup_upd 20 -1 f +12146 pg_stat_all_tables v pg_catalog 12 n_tup_del 20 -1 f +12146 pg_stat_all_tables v pg_catalog 13 n_tup_hot_upd 20 -1 f +12146 pg_stat_all_tables v pg_catalog 14 n_tup_newpage_upd 20 -1 f +12146 pg_stat_all_tables v pg_catalog 15 n_live_tup 20 -1 f +12146 pg_stat_all_tables v pg_catalog 16 n_dead_tup 20 -1 f +12146 pg_stat_all_tables v pg_catalog 17 n_mod_since_analyze 20 -1 f +12146 pg_stat_all_tables v pg_catalog 18 n_ins_since_vacuum 20 -1 f +12146 pg_stat_all_tables v pg_catalog 19 last_vacuum 1184 -1 f +12146 pg_stat_all_tables v pg_catalog 20 last_autovacuum 1184 -1 f +12146 pg_stat_all_tables v pg_catalog 21 last_analyze 1184 -1 f +12146 pg_stat_all_tables v pg_catalog 22 last_autoanalyze 1184 -1 f +12146 pg_stat_all_tables v pg_catalog 23 vacuum_count 20 -1 f +12146 pg_stat_all_tables v pg_catalog 24 autovacuum_count 20 -1 f +12146 pg_stat_all_tables v pg_catalog 25 analyze_count 20 -1 f +12146 pg_stat_all_tables v pg_catalog 26 autoanalyze_count 20 -1 f +12146 pg_stat_all_tables v pg_catalog 27 total_vacuum_time 701 -1 f +12146 pg_stat_all_tables v pg_catalog 28 total_autovacuum_time 701 -1 f +12146 pg_stat_all_tables v pg_catalog 29 total_analyze_time 701 -1 f +12146 pg_stat_all_tables v pg_catalog 30 total_autoanalyze_time 701 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 1 relid 26 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 2 schemaname 19 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 3 relname 19 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 4 seq_scan 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 5 seq_tup_read 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 6 idx_scan 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 7 idx_tup_fetch 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 8 n_tup_ins 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 9 n_tup_upd 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 10 n_tup_del 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 11 n_tup_hot_upd 20 -1 f +12151 pg_stat_xact_all_tables v pg_catalog 12 n_tup_newpage_upd 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 1 relid 26 -1 f +12156 pg_stat_sys_tables v pg_catalog 2 schemaname 19 -1 f +12156 pg_stat_sys_tables v pg_catalog 3 relname 19 -1 f +12156 pg_stat_sys_tables v pg_catalog 4 seq_scan 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 5 last_seq_scan 1184 -1 f +12156 pg_stat_sys_tables v pg_catalog 6 seq_tup_read 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 7 idx_scan 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 8 last_idx_scan 1184 -1 f +12156 pg_stat_sys_tables v pg_catalog 9 idx_tup_fetch 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 10 n_tup_ins 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 11 n_tup_upd 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 12 n_tup_del 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 13 n_tup_hot_upd 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 14 n_tup_newpage_upd 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 15 n_live_tup 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 16 n_dead_tup 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 17 n_mod_since_analyze 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 18 n_ins_since_vacuum 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 19 last_vacuum 1184 -1 f +12156 pg_stat_sys_tables v pg_catalog 20 last_autovacuum 1184 -1 f +12156 pg_stat_sys_tables v pg_catalog 21 last_analyze 1184 -1 f +12156 pg_stat_sys_tables v pg_catalog 22 last_autoanalyze 1184 -1 f +12156 pg_stat_sys_tables v pg_catalog 23 vacuum_count 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 24 autovacuum_count 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 25 analyze_count 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 26 autoanalyze_count 20 -1 f +12156 pg_stat_sys_tables v pg_catalog 27 total_vacuum_time 701 -1 f +12156 pg_stat_sys_tables v pg_catalog 28 total_autovacuum_time 701 -1 f +12156 pg_stat_sys_tables v pg_catalog 29 total_analyze_time 701 -1 f +12156 pg_stat_sys_tables v pg_catalog 30 total_autoanalyze_time 701 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 1 relid 26 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 2 schemaname 19 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 3 relname 19 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 4 seq_scan 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 5 seq_tup_read 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 6 idx_scan 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 7 idx_tup_fetch 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 8 n_tup_ins 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 9 n_tup_upd 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 10 n_tup_del 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 11 n_tup_hot_upd 20 -1 f +12161 pg_stat_xact_sys_tables v pg_catalog 12 n_tup_newpage_upd 20 -1 f +12165 pg_stat_user_tables v pg_catalog 1 relid 26 -1 f +12165 pg_stat_user_tables v pg_catalog 2 schemaname 19 -1 f +12165 pg_stat_user_tables v pg_catalog 3 relname 19 -1 f +12165 pg_stat_user_tables v pg_catalog 4 seq_scan 20 -1 f +12165 pg_stat_user_tables v pg_catalog 5 last_seq_scan 1184 -1 f +12165 pg_stat_user_tables v pg_catalog 6 seq_tup_read 20 -1 f +12165 pg_stat_user_tables v pg_catalog 7 idx_scan 20 -1 f +12165 pg_stat_user_tables v pg_catalog 8 last_idx_scan 1184 -1 f +12165 pg_stat_user_tables v pg_catalog 9 idx_tup_fetch 20 -1 f +12165 pg_stat_user_tables v pg_catalog 10 n_tup_ins 20 -1 f +12165 pg_stat_user_tables v pg_catalog 11 n_tup_upd 20 -1 f +12165 pg_stat_user_tables v pg_catalog 12 n_tup_del 20 -1 f +12165 pg_stat_user_tables v pg_catalog 13 n_tup_hot_upd 20 -1 f +12165 pg_stat_user_tables v pg_catalog 14 n_tup_newpage_upd 20 -1 f +12165 pg_stat_user_tables v pg_catalog 15 n_live_tup 20 -1 f +12165 pg_stat_user_tables v pg_catalog 16 n_dead_tup 20 -1 f +12165 pg_stat_user_tables v pg_catalog 17 n_mod_since_analyze 20 -1 f +12165 pg_stat_user_tables v pg_catalog 18 n_ins_since_vacuum 20 -1 f +12165 pg_stat_user_tables v pg_catalog 19 last_vacuum 1184 -1 f +12165 pg_stat_user_tables v pg_catalog 20 last_autovacuum 1184 -1 f +12165 pg_stat_user_tables v pg_catalog 21 last_analyze 1184 -1 f +12165 pg_stat_user_tables v pg_catalog 22 last_autoanalyze 1184 -1 f +12165 pg_stat_user_tables v pg_catalog 23 vacuum_count 20 -1 f +12165 pg_stat_user_tables v pg_catalog 24 autovacuum_count 20 -1 f +12165 pg_stat_user_tables v pg_catalog 25 analyze_count 20 -1 f +12165 pg_stat_user_tables v pg_catalog 26 autoanalyze_count 20 -1 f +12165 pg_stat_user_tables v pg_catalog 27 total_vacuum_time 701 -1 f +12165 pg_stat_user_tables v pg_catalog 28 total_autovacuum_time 701 -1 f +12165 pg_stat_user_tables v pg_catalog 29 total_analyze_time 701 -1 f +12165 pg_stat_user_tables v pg_catalog 30 total_autoanalyze_time 701 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 1 relid 26 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 2 schemaname 19 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 3 relname 19 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 4 seq_scan 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 5 seq_tup_read 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 6 idx_scan 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 7 idx_tup_fetch 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 8 n_tup_ins 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 9 n_tup_upd 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 10 n_tup_del 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 11 n_tup_hot_upd 20 -1 f +12170 pg_stat_xact_user_tables v pg_catalog 12 n_tup_newpage_upd 20 -1 f +12174 pg_statio_all_tables v pg_catalog 1 relid 26 -1 f +12174 pg_statio_all_tables v pg_catalog 2 schemaname 19 -1 f +12174 pg_statio_all_tables v pg_catalog 3 relname 19 -1 f +12174 pg_statio_all_tables v pg_catalog 4 heap_blks_read 20 -1 f +12174 pg_statio_all_tables v pg_catalog 5 heap_blks_hit 20 -1 f +12174 pg_statio_all_tables v pg_catalog 6 idx_blks_read 20 -1 f +12174 pg_statio_all_tables v pg_catalog 7 idx_blks_hit 20 -1 f +12174 pg_statio_all_tables v pg_catalog 8 toast_blks_read 20 -1 f +12174 pg_statio_all_tables v pg_catalog 9 toast_blks_hit 20 -1 f +12174 pg_statio_all_tables v pg_catalog 10 tidx_blks_read 20 -1 f +12174 pg_statio_all_tables v pg_catalog 11 tidx_blks_hit 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 1 relid 26 -1 f +12179 pg_statio_sys_tables v pg_catalog 2 schemaname 19 -1 f +12179 pg_statio_sys_tables v pg_catalog 3 relname 19 -1 f +12179 pg_statio_sys_tables v pg_catalog 4 heap_blks_read 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 5 heap_blks_hit 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 6 idx_blks_read 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 7 idx_blks_hit 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 8 toast_blks_read 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 9 toast_blks_hit 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 10 tidx_blks_read 20 -1 f +12179 pg_statio_sys_tables v pg_catalog 11 tidx_blks_hit 20 -1 f +12183 pg_statio_user_tables v pg_catalog 1 relid 26 -1 f +12183 pg_statio_user_tables v pg_catalog 2 schemaname 19 -1 f +12183 pg_statio_user_tables v pg_catalog 3 relname 19 -1 f +12183 pg_statio_user_tables v pg_catalog 4 heap_blks_read 20 -1 f +12183 pg_statio_user_tables v pg_catalog 5 heap_blks_hit 20 -1 f +12183 pg_statio_user_tables v pg_catalog 6 idx_blks_read 20 -1 f +12183 pg_statio_user_tables v pg_catalog 7 idx_blks_hit 20 -1 f +12183 pg_statio_user_tables v pg_catalog 8 toast_blks_read 20 -1 f +12183 pg_statio_user_tables v pg_catalog 9 toast_blks_hit 20 -1 f +12183 pg_statio_user_tables v pg_catalog 10 tidx_blks_read 20 -1 f +12183 pg_statio_user_tables v pg_catalog 11 tidx_blks_hit 20 -1 f +12187 pg_stat_all_indexes v pg_catalog 1 relid 26 -1 f +12187 pg_stat_all_indexes v pg_catalog 2 indexrelid 26 -1 f +12187 pg_stat_all_indexes v pg_catalog 3 schemaname 19 -1 f +12187 pg_stat_all_indexes v pg_catalog 4 relname 19 -1 f +12187 pg_stat_all_indexes v pg_catalog 5 indexrelname 19 -1 f +12187 pg_stat_all_indexes v pg_catalog 6 idx_scan 20 -1 f +12187 pg_stat_all_indexes v pg_catalog 7 last_idx_scan 1184 -1 f +12187 pg_stat_all_indexes v pg_catalog 8 idx_tup_read 20 -1 f +12187 pg_stat_all_indexes v pg_catalog 9 idx_tup_fetch 20 -1 f +12192 pg_stat_sys_indexes v pg_catalog 1 relid 26 -1 f +12192 pg_stat_sys_indexes v pg_catalog 2 indexrelid 26 -1 f +12192 pg_stat_sys_indexes v pg_catalog 3 schemaname 19 -1 f +12192 pg_stat_sys_indexes v pg_catalog 4 relname 19 -1 f +12192 pg_stat_sys_indexes v pg_catalog 5 indexrelname 19 -1 f +12192 pg_stat_sys_indexes v pg_catalog 6 idx_scan 20 -1 f +12192 pg_stat_sys_indexes v pg_catalog 7 last_idx_scan 1184 -1 f +12192 pg_stat_sys_indexes v pg_catalog 8 idx_tup_read 20 -1 f +12192 pg_stat_sys_indexes v pg_catalog 9 idx_tup_fetch 20 -1 f +12196 pg_stat_user_indexes v pg_catalog 1 relid 26 -1 f +12196 pg_stat_user_indexes v pg_catalog 2 indexrelid 26 -1 f +12196 pg_stat_user_indexes v pg_catalog 3 schemaname 19 -1 f +12196 pg_stat_user_indexes v pg_catalog 4 relname 19 -1 f +12196 pg_stat_user_indexes v pg_catalog 5 indexrelname 19 -1 f +12196 pg_stat_user_indexes v pg_catalog 6 idx_scan 20 -1 f +12196 pg_stat_user_indexes v pg_catalog 7 last_idx_scan 1184 -1 f +12196 pg_stat_user_indexes v pg_catalog 8 idx_tup_read 20 -1 f +12196 pg_stat_user_indexes v pg_catalog 9 idx_tup_fetch 20 -1 f +12200 pg_statio_all_indexes v pg_catalog 1 relid 26 -1 f +12200 pg_statio_all_indexes v pg_catalog 2 indexrelid 26 -1 f +12200 pg_statio_all_indexes v pg_catalog 3 schemaname 19 -1 f +12200 pg_statio_all_indexes v pg_catalog 4 relname 19 -1 f +12200 pg_statio_all_indexes v pg_catalog 5 indexrelname 19 -1 f +12200 pg_statio_all_indexes v pg_catalog 6 idx_blks_read 20 -1 f +12200 pg_statio_all_indexes v pg_catalog 7 idx_blks_hit 20 -1 f +12205 pg_statio_sys_indexes v pg_catalog 1 relid 26 -1 f +12205 pg_statio_sys_indexes v pg_catalog 2 indexrelid 26 -1 f +12205 pg_statio_sys_indexes v pg_catalog 3 schemaname 19 -1 f +12205 pg_statio_sys_indexes v pg_catalog 4 relname 19 -1 f +12205 pg_statio_sys_indexes v pg_catalog 5 indexrelname 19 -1 f +12205 pg_statio_sys_indexes v pg_catalog 6 idx_blks_read 20 -1 f +12205 pg_statio_sys_indexes v pg_catalog 7 idx_blks_hit 20 -1 f +12209 pg_statio_user_indexes v pg_catalog 1 relid 26 -1 f +12209 pg_statio_user_indexes v pg_catalog 2 indexrelid 26 -1 f +12209 pg_statio_user_indexes v pg_catalog 3 schemaname 19 -1 f +12209 pg_statio_user_indexes v pg_catalog 4 relname 19 -1 f +12209 pg_statio_user_indexes v pg_catalog 5 indexrelname 19 -1 f +12209 pg_statio_user_indexes v pg_catalog 6 idx_blks_read 20 -1 f +12209 pg_statio_user_indexes v pg_catalog 7 idx_blks_hit 20 -1 f +12213 pg_statio_all_sequences v pg_catalog 1 relid 26 -1 f +12213 pg_statio_all_sequences v pg_catalog 2 schemaname 19 -1 f +12213 pg_statio_all_sequences v pg_catalog 3 relname 19 -1 f +12213 pg_statio_all_sequences v pg_catalog 4 blks_read 20 -1 f +12213 pg_statio_all_sequences v pg_catalog 5 blks_hit 20 -1 f +12218 pg_statio_sys_sequences v pg_catalog 1 relid 26 -1 f +12218 pg_statio_sys_sequences v pg_catalog 2 schemaname 19 -1 f +12218 pg_statio_sys_sequences v pg_catalog 3 relname 19 -1 f +12218 pg_statio_sys_sequences v pg_catalog 4 blks_read 20 -1 f +12218 pg_statio_sys_sequences v pg_catalog 5 blks_hit 20 -1 f +12222 pg_statio_user_sequences v pg_catalog 1 relid 26 -1 f +12222 pg_statio_user_sequences v pg_catalog 2 schemaname 19 -1 f +12222 pg_statio_user_sequences v pg_catalog 3 relname 19 -1 f +12222 pg_statio_user_sequences v pg_catalog 4 blks_read 20 -1 f +12222 pg_statio_user_sequences v pg_catalog 5 blks_hit 20 -1 f +12226 pg_stat_activity v pg_catalog 1 datid 26 -1 f +12226 pg_stat_activity v pg_catalog 2 datname 19 -1 f +12226 pg_stat_activity v pg_catalog 3 pid 23 -1 f +12226 pg_stat_activity v pg_catalog 4 leader_pid 23 -1 f +12226 pg_stat_activity v pg_catalog 5 usesysid 26 -1 f +12226 pg_stat_activity v pg_catalog 6 usename 19 -1 f +12226 pg_stat_activity v pg_catalog 7 application_name 25 -1 f +12226 pg_stat_activity v pg_catalog 8 client_addr 869 -1 f +12226 pg_stat_activity v pg_catalog 9 client_hostname 25 -1 f +12226 pg_stat_activity v pg_catalog 10 client_port 23 -1 f +12226 pg_stat_activity v pg_catalog 11 backend_start 1184 -1 f +12226 pg_stat_activity v pg_catalog 12 xact_start 1184 -1 f +12226 pg_stat_activity v pg_catalog 13 query_start 1184 -1 f +12226 pg_stat_activity v pg_catalog 14 state_change 1184 -1 f +12226 pg_stat_activity v pg_catalog 15 wait_event_type 25 -1 f +12226 pg_stat_activity v pg_catalog 16 wait_event 25 -1 f +12226 pg_stat_activity v pg_catalog 17 state 25 -1 f +12226 pg_stat_activity v pg_catalog 18 backend_xid 28 -1 f +12226 pg_stat_activity v pg_catalog 19 backend_xmin 28 -1 f +12226 pg_stat_activity v pg_catalog 20 query_id 20 -1 f +12226 pg_stat_activity v pg_catalog 21 query 25 -1 f +12226 pg_stat_activity v pg_catalog 22 backend_type 25 -1 f +12231 pg_stat_replication v pg_catalog 1 pid 23 -1 f +12231 pg_stat_replication v pg_catalog 2 usesysid 26 -1 f +12231 pg_stat_replication v pg_catalog 3 usename 19 -1 f +12231 pg_stat_replication v pg_catalog 4 application_name 25 -1 f +12231 pg_stat_replication v pg_catalog 5 client_addr 869 -1 f +12231 pg_stat_replication v pg_catalog 6 client_hostname 25 -1 f +12231 pg_stat_replication v pg_catalog 7 client_port 23 -1 f +12231 pg_stat_replication v pg_catalog 8 backend_start 1184 -1 f +12231 pg_stat_replication v pg_catalog 9 backend_xmin 28 -1 f +12231 pg_stat_replication v pg_catalog 10 state 25 -1 f +12231 pg_stat_replication v pg_catalog 11 sent_lsn 3220 -1 f +12231 pg_stat_replication v pg_catalog 12 write_lsn 3220 -1 f +12231 pg_stat_replication v pg_catalog 13 flush_lsn 3220 -1 f +12231 pg_stat_replication v pg_catalog 14 replay_lsn 3220 -1 f +12231 pg_stat_replication v pg_catalog 15 write_lag 1186 -1 f +12231 pg_stat_replication v pg_catalog 16 flush_lag 1186 -1 f +12231 pg_stat_replication v pg_catalog 17 replay_lag 1186 -1 f +12231 pg_stat_replication v pg_catalog 18 sync_priority 23 -1 f +12231 pg_stat_replication v pg_catalog 19 sync_state 25 -1 f +12231 pg_stat_replication v pg_catalog 20 reply_time 1184 -1 f +12236 pg_stat_slru v pg_catalog 1 name 25 -1 f +12236 pg_stat_slru v pg_catalog 2 blks_zeroed 20 -1 f +12236 pg_stat_slru v pg_catalog 3 blks_hit 20 -1 f +12236 pg_stat_slru v pg_catalog 4 blks_read 20 -1 f +12236 pg_stat_slru v pg_catalog 5 blks_written 20 -1 f +12236 pg_stat_slru v pg_catalog 6 blks_exists 20 -1 f +12236 pg_stat_slru v pg_catalog 7 flushes 20 -1 f +12236 pg_stat_slru v pg_catalog 8 truncates 20 -1 f +12236 pg_stat_slru v pg_catalog 9 stats_reset 1184 -1 f +12240 pg_stat_wal_receiver v pg_catalog 1 pid 23 -1 f +12240 pg_stat_wal_receiver v pg_catalog 2 status 25 -1 f +12240 pg_stat_wal_receiver v pg_catalog 3 receive_start_lsn 3220 -1 f +12240 pg_stat_wal_receiver v pg_catalog 4 receive_start_tli 23 -1 f +12240 pg_stat_wal_receiver v pg_catalog 5 written_lsn 3220 -1 f +12240 pg_stat_wal_receiver v pg_catalog 6 flushed_lsn 3220 -1 f +12240 pg_stat_wal_receiver v pg_catalog 7 received_tli 23 -1 f +12240 pg_stat_wal_receiver v pg_catalog 8 last_msg_send_time 1184 -1 f +12240 pg_stat_wal_receiver v pg_catalog 9 last_msg_receipt_time 1184 -1 f +12240 pg_stat_wal_receiver v pg_catalog 10 latest_end_lsn 3220 -1 f +12240 pg_stat_wal_receiver v pg_catalog 11 latest_end_time 1184 -1 f +12240 pg_stat_wal_receiver v pg_catalog 12 slot_name 25 -1 f +12240 pg_stat_wal_receiver v pg_catalog 13 sender_host 25 -1 f +12240 pg_stat_wal_receiver v pg_catalog 14 sender_port 23 -1 f +12240 pg_stat_wal_receiver v pg_catalog 15 conninfo 25 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 1 stats_reset 1184 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 2 prefetch 20 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 3 hit 20 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 4 skip_init 20 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 5 skip_new 20 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 6 skip_fpw 20 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 7 skip_rep 20 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 8 wal_distance 23 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 9 block_distance 23 -1 f +12244 pg_stat_recovery_prefetch v pg_catalog 10 io_depth 23 -1 f +12248 pg_stat_subscription v pg_catalog 1 subid 26 -1 f +12248 pg_stat_subscription v pg_catalog 2 subname 19 -1 f +12248 pg_stat_subscription v pg_catalog 3 worker_type 25 -1 f +12248 pg_stat_subscription v pg_catalog 4 pid 23 -1 f +12248 pg_stat_subscription v pg_catalog 5 leader_pid 23 -1 f +12248 pg_stat_subscription v pg_catalog 6 relid 26 -1 f +12248 pg_stat_subscription v pg_catalog 7 received_lsn 3220 -1 f +12248 pg_stat_subscription v pg_catalog 8 last_msg_send_time 1184 -1 f +12248 pg_stat_subscription v pg_catalog 9 last_msg_receipt_time 1184 -1 f +12248 pg_stat_subscription v pg_catalog 10 latest_end_lsn 3220 -1 f +12248 pg_stat_subscription v pg_catalog 11 latest_end_time 1184 -1 f +12253 pg_stat_ssl v pg_catalog 1 pid 23 -1 f +12253 pg_stat_ssl v pg_catalog 2 ssl 16 -1 f +12253 pg_stat_ssl v pg_catalog 3 version 25 -1 f +12253 pg_stat_ssl v pg_catalog 4 cipher 25 -1 f +12253 pg_stat_ssl v pg_catalog 5 bits 23 -1 f +12253 pg_stat_ssl v pg_catalog 6 client_dn 25 -1 f +12253 pg_stat_ssl v pg_catalog 7 client_serial 1700 -1 f +12253 pg_stat_ssl v pg_catalog 8 issuer_dn 25 -1 f +12257 pg_stat_gssapi v pg_catalog 1 pid 23 -1 f +12257 pg_stat_gssapi v pg_catalog 2 gss_authenticated 16 -1 f +12257 pg_stat_gssapi v pg_catalog 3 principal 25 -1 f +12257 pg_stat_gssapi v pg_catalog 4 encrypted 16 -1 f +12257 pg_stat_gssapi v pg_catalog 5 credentials_delegated 16 -1 f +12261 pg_replication_slots v pg_catalog 1 slot_name 19 -1 f +12261 pg_replication_slots v pg_catalog 2 plugin 19 -1 f +12261 pg_replication_slots v pg_catalog 3 slot_type 25 -1 f +12261 pg_replication_slots v pg_catalog 4 datoid 26 -1 f +12261 pg_replication_slots v pg_catalog 5 database 19 -1 f +12261 pg_replication_slots v pg_catalog 6 temporary 16 -1 f +12261 pg_replication_slots v pg_catalog 7 active 16 -1 f +12261 pg_replication_slots v pg_catalog 8 active_pid 23 -1 f +12261 pg_replication_slots v pg_catalog 9 xmin 28 -1 f +12261 pg_replication_slots v pg_catalog 10 catalog_xmin 28 -1 f +12261 pg_replication_slots v pg_catalog 11 restart_lsn 3220 -1 f +12261 pg_replication_slots v pg_catalog 12 confirmed_flush_lsn 3220 -1 f +12261 pg_replication_slots v pg_catalog 13 wal_status 25 -1 f +12261 pg_replication_slots v pg_catalog 14 safe_wal_size 20 -1 f +12261 pg_replication_slots v pg_catalog 15 two_phase 16 -1 f +12261 pg_replication_slots v pg_catalog 16 two_phase_at 3220 -1 f +12261 pg_replication_slots v pg_catalog 17 inactive_since 1184 -1 f +12261 pg_replication_slots v pg_catalog 18 conflicting 16 -1 f +12261 pg_replication_slots v pg_catalog 19 invalidation_reason 25 -1 f +12261 pg_replication_slots v pg_catalog 20 failover 16 -1 f +12261 pg_replication_slots v pg_catalog 21 synced 16 -1 f +12266 pg_stat_replication_slots v pg_catalog 1 slot_name 25 -1 f +12266 pg_stat_replication_slots v pg_catalog 2 spill_txns 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 3 spill_count 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 4 spill_bytes 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 5 stream_txns 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 6 stream_count 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 7 stream_bytes 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 8 total_txns 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 9 total_bytes 20 -1 f +12266 pg_stat_replication_slots v pg_catalog 10 stats_reset 1184 -1 f +12270 pg_stat_database v pg_catalog 1 datid 26 -1 f +12270 pg_stat_database v pg_catalog 2 datname 19 -1 f +12270 pg_stat_database v pg_catalog 3 numbackends 23 -1 f +12270 pg_stat_database v pg_catalog 4 xact_commit 20 -1 f +12270 pg_stat_database v pg_catalog 5 xact_rollback 20 -1 f +12270 pg_stat_database v pg_catalog 6 blks_read 20 -1 f +12270 pg_stat_database v pg_catalog 7 blks_hit 20 -1 f +12270 pg_stat_database v pg_catalog 8 tup_returned 20 -1 f +12270 pg_stat_database v pg_catalog 9 tup_fetched 20 -1 f +12270 pg_stat_database v pg_catalog 10 tup_inserted 20 -1 f +12270 pg_stat_database v pg_catalog 11 tup_updated 20 -1 f +12270 pg_stat_database v pg_catalog 12 tup_deleted 20 -1 f +12270 pg_stat_database v pg_catalog 13 conflicts 20 -1 f +12270 pg_stat_database v pg_catalog 14 temp_files 20 -1 f +12270 pg_stat_database v pg_catalog 15 temp_bytes 20 -1 f +12270 pg_stat_database v pg_catalog 16 deadlocks 20 -1 f +12270 pg_stat_database v pg_catalog 17 checksum_failures 20 -1 f +12270 pg_stat_database v pg_catalog 18 checksum_last_failure 1184 -1 f +12270 pg_stat_database v pg_catalog 19 blk_read_time 701 -1 f +12270 pg_stat_database v pg_catalog 20 blk_write_time 701 -1 f +12270 pg_stat_database v pg_catalog 21 session_time 701 -1 f +12270 pg_stat_database v pg_catalog 22 active_time 701 -1 f +12270 pg_stat_database v pg_catalog 23 idle_in_transaction_time 701 -1 f +12270 pg_stat_database v pg_catalog 24 sessions 20 -1 f +12270 pg_stat_database v pg_catalog 25 sessions_abandoned 20 -1 f +12270 pg_stat_database v pg_catalog 26 sessions_fatal 20 -1 f +12270 pg_stat_database v pg_catalog 27 sessions_killed 20 -1 f +12270 pg_stat_database v pg_catalog 28 parallel_workers_to_launch 20 -1 f +12270 pg_stat_database v pg_catalog 29 parallel_workers_launched 20 -1 f +12270 pg_stat_database v pg_catalog 30 stats_reset 1184 -1 f +12275 pg_stat_database_conflicts v pg_catalog 1 datid 26 -1 f +12275 pg_stat_database_conflicts v pg_catalog 2 datname 19 -1 f +12275 pg_stat_database_conflicts v pg_catalog 3 confl_tablespace 20 -1 f +12275 pg_stat_database_conflicts v pg_catalog 4 confl_lock 20 -1 f +12275 pg_stat_database_conflicts v pg_catalog 5 confl_snapshot 20 -1 f +12275 pg_stat_database_conflicts v pg_catalog 6 confl_bufferpin 20 -1 f +12275 pg_stat_database_conflicts v pg_catalog 7 confl_deadlock 20 -1 f +12275 pg_stat_database_conflicts v pg_catalog 8 confl_active_logicalslot 20 -1 f +12279 pg_stat_user_functions v pg_catalog 1 funcid 26 -1 f +12279 pg_stat_user_functions v pg_catalog 2 schemaname 19 -1 f +12279 pg_stat_user_functions v pg_catalog 3 funcname 19 -1 f +12279 pg_stat_user_functions v pg_catalog 4 calls 20 -1 f +12279 pg_stat_user_functions v pg_catalog 5 total_time 701 -1 f +12279 pg_stat_user_functions v pg_catalog 6 self_time 701 -1 f +12284 pg_stat_xact_user_functions v pg_catalog 1 funcid 26 -1 f +12284 pg_stat_xact_user_functions v pg_catalog 2 schemaname 19 -1 f +12284 pg_stat_xact_user_functions v pg_catalog 3 funcname 19 -1 f +12284 pg_stat_xact_user_functions v pg_catalog 4 calls 20 -1 f +12284 pg_stat_xact_user_functions v pg_catalog 5 total_time 701 -1 f +12284 pg_stat_xact_user_functions v pg_catalog 6 self_time 701 -1 f +12289 pg_stat_archiver v pg_catalog 1 archived_count 20 -1 f +12289 pg_stat_archiver v pg_catalog 2 last_archived_wal 25 -1 f +12289 pg_stat_archiver v pg_catalog 3 last_archived_time 1184 -1 f +12289 pg_stat_archiver v pg_catalog 4 failed_count 20 -1 f +12289 pg_stat_archiver v pg_catalog 5 last_failed_wal 25 -1 f +12289 pg_stat_archiver v pg_catalog 6 last_failed_time 1184 -1 f +12289 pg_stat_archiver v pg_catalog 7 stats_reset 1184 -1 f +12293 pg_stat_bgwriter v pg_catalog 1 buffers_clean 20 -1 f +12293 pg_stat_bgwriter v pg_catalog 2 maxwritten_clean 20 -1 f +12293 pg_stat_bgwriter v pg_catalog 3 buffers_alloc 20 -1 f +12293 pg_stat_bgwriter v pg_catalog 4 stats_reset 1184 -1 f +12297 pg_stat_checkpointer v pg_catalog 1 num_timed 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 2 num_requested 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 3 num_done 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 4 restartpoints_timed 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 5 restartpoints_req 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 6 restartpoints_done 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 7 write_time 701 -1 f +12297 pg_stat_checkpointer v pg_catalog 8 sync_time 701 -1 f +12297 pg_stat_checkpointer v pg_catalog 9 buffers_written 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 10 slru_written 20 -1 f +12297 pg_stat_checkpointer v pg_catalog 11 stats_reset 1184 -1 f +12301 pg_stat_io v pg_catalog 1 backend_type 25 -1 f +12301 pg_stat_io v pg_catalog 2 object 25 -1 f +12301 pg_stat_io v pg_catalog 3 context 25 -1 f +12301 pg_stat_io v pg_catalog 4 reads 20 -1 f +12301 pg_stat_io v pg_catalog 5 read_bytes 1700 -1 f +12301 pg_stat_io v pg_catalog 6 read_time 701 -1 f +12301 pg_stat_io v pg_catalog 7 writes 20 -1 f +12301 pg_stat_io v pg_catalog 8 write_bytes 1700 -1 f +12301 pg_stat_io v pg_catalog 9 write_time 701 -1 f +12301 pg_stat_io v pg_catalog 10 writebacks 20 -1 f +12301 pg_stat_io v pg_catalog 11 writeback_time 701 -1 f +12301 pg_stat_io v pg_catalog 12 extends 20 -1 f +12301 pg_stat_io v pg_catalog 13 extend_bytes 1700 -1 f +12301 pg_stat_io v pg_catalog 14 extend_time 701 -1 f +12301 pg_stat_io v pg_catalog 15 hits 20 -1 f +12301 pg_stat_io v pg_catalog 16 evictions 20 -1 f +12301 pg_stat_io v pg_catalog 17 reuses 20 -1 f +12301 pg_stat_io v pg_catalog 18 fsyncs 20 -1 f +12301 pg_stat_io v pg_catalog 19 fsync_time 701 -1 f +12301 pg_stat_io v pg_catalog 20 stats_reset 1184 -1 f +12305 pg_stat_wal v pg_catalog 1 wal_records 20 -1 f +12305 pg_stat_wal v pg_catalog 2 wal_fpi 20 -1 f +12305 pg_stat_wal v pg_catalog 3 wal_bytes 1700 -1 f +12305 pg_stat_wal v pg_catalog 4 wal_buffers_full 20 -1 f +12305 pg_stat_wal v pg_catalog 5 stats_reset 1184 -1 f +12309 pg_stat_progress_analyze v pg_catalog 1 pid 23 -1 f +12309 pg_stat_progress_analyze v pg_catalog 2 datid 26 -1 f +12309 pg_stat_progress_analyze v pg_catalog 3 datname 19 -1 f +12309 pg_stat_progress_analyze v pg_catalog 4 relid 26 -1 f +12309 pg_stat_progress_analyze v pg_catalog 5 phase 25 -1 f +12309 pg_stat_progress_analyze v pg_catalog 6 sample_blks_total 20 -1 f +12309 pg_stat_progress_analyze v pg_catalog 7 sample_blks_scanned 20 -1 f +12309 pg_stat_progress_analyze v pg_catalog 8 ext_stats_total 20 -1 f +12309 pg_stat_progress_analyze v pg_catalog 9 ext_stats_computed 20 -1 f +12309 pg_stat_progress_analyze v pg_catalog 10 child_tables_total 20 -1 f +12309 pg_stat_progress_analyze v pg_catalog 11 child_tables_done 20 -1 f +12309 pg_stat_progress_analyze v pg_catalog 12 current_child_table_relid 26 -1 f +12309 pg_stat_progress_analyze v pg_catalog 13 delay_time 701 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 1 pid 23 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 2 datid 26 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 3 datname 19 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 4 relid 26 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 5 phase 25 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 6 heap_blks_total 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 7 heap_blks_scanned 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 8 heap_blks_vacuumed 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 9 index_vacuum_count 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 10 max_dead_tuple_bytes 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 11 dead_tuple_bytes 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 12 num_dead_item_ids 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 13 indexes_total 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 14 indexes_processed 20 -1 f +12314 pg_stat_progress_vacuum v pg_catalog 15 delay_time 701 -1 f +12319 pg_stat_progress_cluster v pg_catalog 1 pid 23 -1 f +12319 pg_stat_progress_cluster v pg_catalog 2 datid 26 -1 f +12319 pg_stat_progress_cluster v pg_catalog 3 datname 19 -1 f +12319 pg_stat_progress_cluster v pg_catalog 4 relid 26 -1 f +12319 pg_stat_progress_cluster v pg_catalog 5 command 25 -1 f +12319 pg_stat_progress_cluster v pg_catalog 6 phase 25 -1 f +12319 pg_stat_progress_cluster v pg_catalog 7 cluster_index_relid 26 -1 f +12319 pg_stat_progress_cluster v pg_catalog 8 heap_tuples_scanned 20 -1 f +12319 pg_stat_progress_cluster v pg_catalog 9 heap_tuples_written 20 -1 f +12319 pg_stat_progress_cluster v pg_catalog 10 heap_blks_total 20 -1 f +12319 pg_stat_progress_cluster v pg_catalog 11 heap_blks_scanned 20 -1 f +12319 pg_stat_progress_cluster v pg_catalog 12 index_rebuild_count 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 1 pid 23 -1 f +12324 pg_stat_progress_create_index v pg_catalog 2 datid 26 -1 f +12324 pg_stat_progress_create_index v pg_catalog 3 datname 19 -1 f +12324 pg_stat_progress_create_index v pg_catalog 4 relid 26 -1 f +12324 pg_stat_progress_create_index v pg_catalog 5 index_relid 26 -1 f +12324 pg_stat_progress_create_index v pg_catalog 6 command 25 -1 f +12324 pg_stat_progress_create_index v pg_catalog 7 phase 25 -1 f +12324 pg_stat_progress_create_index v pg_catalog 8 lockers_total 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 9 lockers_done 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 10 current_locker_pid 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 11 blocks_total 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 12 blocks_done 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 13 tuples_total 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 14 tuples_done 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 15 partitions_total 20 -1 f +12324 pg_stat_progress_create_index v pg_catalog 16 partitions_done 20 -1 f +12329 pg_stat_progress_basebackup v pg_catalog 1 pid 23 -1 f +12329 pg_stat_progress_basebackup v pg_catalog 2 phase 25 -1 f +12329 pg_stat_progress_basebackup v pg_catalog 3 backup_total 20 -1 f +12329 pg_stat_progress_basebackup v pg_catalog 4 backup_streamed 20 -1 f +12329 pg_stat_progress_basebackup v pg_catalog 5 tablespaces_total 20 -1 f +12329 pg_stat_progress_basebackup v pg_catalog 6 tablespaces_streamed 20 -1 f +12333 pg_stat_progress_copy v pg_catalog 1 pid 23 -1 f +12333 pg_stat_progress_copy v pg_catalog 2 datid 26 -1 f +12333 pg_stat_progress_copy v pg_catalog 3 datname 19 -1 f +12333 pg_stat_progress_copy v pg_catalog 4 relid 26 -1 f +12333 pg_stat_progress_copy v pg_catalog 5 command 25 -1 f +12333 pg_stat_progress_copy v pg_catalog 6 type 25 -1 f +12333 pg_stat_progress_copy v pg_catalog 7 bytes_processed 20 -1 f +12333 pg_stat_progress_copy v pg_catalog 8 bytes_total 20 -1 f +12333 pg_stat_progress_copy v pg_catalog 9 tuples_processed 20 -1 f +12333 pg_stat_progress_copy v pg_catalog 10 tuples_excluded 20 -1 f +12333 pg_stat_progress_copy v pg_catalog 11 tuples_skipped 20 -1 f +12338 pg_user_mappings v pg_catalog 1 umid 26 -1 f +12338 pg_user_mappings v pg_catalog 2 srvid 26 -1 f +12338 pg_user_mappings v pg_catalog 3 srvname 19 -1 f +12338 pg_user_mappings v pg_catalog 4 umuser 26 -1 f +12338 pg_user_mappings v pg_catalog 5 usename 19 -1 f +12338 pg_user_mappings v pg_catalog 6 umoptions 1009 -1 f +12343 pg_replication_origin_status v pg_catalog 1 local_id 26 -1 f +12343 pg_replication_origin_status v pg_catalog 2 external_id 25 -1 f +12343 pg_replication_origin_status v pg_catalog 3 remote_lsn 3220 -1 f +12343 pg_replication_origin_status v pg_catalog 4 local_lsn 3220 -1 f +12347 pg_stat_subscription_stats v pg_catalog 1 subid 26 -1 f +12347 pg_stat_subscription_stats v pg_catalog 2 subname 19 -1 f +12347 pg_stat_subscription_stats v pg_catalog 3 apply_error_count 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 4 sync_error_count 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 5 confl_insert_exists 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 6 confl_update_origin_differs 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 7 confl_update_exists 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 8 confl_update_missing 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 9 confl_delete_origin_differs 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 10 confl_delete_missing 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 11 confl_multiple_unique_conflicts 20 -1 f +12347 pg_stat_subscription_stats v pg_catalog 12 stats_reset 1184 -1 f +12351 pg_wait_events v pg_catalog 1 type 25 -1 f +12351 pg_wait_events v pg_catalog 2 name 25 -1 f +12351 pg_wait_events v pg_catalog 3 description 25 -1 f +12355 pg_aios v pg_catalog 1 pid 23 -1 f +12355 pg_aios v pg_catalog 2 io_id 23 -1 f +12355 pg_aios v pg_catalog 3 io_generation 20 -1 f +12355 pg_aios v pg_catalog 4 state 25 -1 f +12355 pg_aios v pg_catalog 5 operation 25 -1 f +12355 pg_aios v pg_catalog 6 off 20 -1 f +12355 pg_aios v pg_catalog 7 length 20 -1 f +12355 pg_aios v pg_catalog 8 target 25 -1 f +12355 pg_aios v pg_catalog 9 handle_data_len 21 -1 f +12355 pg_aios v pg_catalog 10 raw_result 23 -1 f +12355 pg_aios v pg_catalog 11 result 25 -1 f +12355 pg_aios v pg_catalog 12 target_desc 25 -1 f +12355 pg_aios v pg_catalog 13 f_sync 16 -1 f +12355 pg_aios v pg_catalog 14 f_localmem 16 -1 f +12355 pg_aios v pg_catalog 15 f_buffered 16 -1 f +13164 information_schema_catalog_name v information_schema 1 catalog_name 13163 -1 f +13173 applicable_roles v information_schema 1 grantee 13163 -1 f +13173 applicable_roles v information_schema 2 role_name 13163 -1 f +13173 applicable_roles v information_schema 3 is_grantable 13171 -1 f +13178 administrable_role_authorizations v information_schema 1 grantee 13163 -1 f +13178 administrable_role_authorizations v information_schema 2 role_name 13163 -1 f +13178 administrable_role_authorizations v information_schema 3 is_grantable 13171 -1 f +13182 attributes v information_schema 1 udt_catalog 13163 -1 f +13182 attributes v information_schema 2 udt_schema 13163 -1 f +13182 attributes v information_schema 3 udt_name 13163 -1 f +13182 attributes v information_schema 4 attribute_name 13163 -1 f +13182 attributes v information_schema 5 ordinal_position 13158 -1 f +13182 attributes v information_schema 6 attribute_default 13161 -1 f +13182 attributes v information_schema 7 is_nullable 13171 -1 f +13182 attributes v information_schema 8 data_type 13161 -1 f +13182 attributes v information_schema 9 character_maximum_length 13158 -1 f +13182 attributes v information_schema 10 character_octet_length 13158 -1 f +13182 attributes v information_schema 11 character_set_catalog 13163 -1 f +13182 attributes v information_schema 12 character_set_schema 13163 -1 f +13182 attributes v information_schema 13 character_set_name 13163 -1 f +13182 attributes v information_schema 14 collation_catalog 13163 -1 f +13182 attributes v information_schema 15 collation_schema 13163 -1 f +13182 attributes v information_schema 16 collation_name 13163 -1 f +13182 attributes v information_schema 17 numeric_precision 13158 -1 f +13182 attributes v information_schema 18 numeric_precision_radix 13158 -1 f +13182 attributes v information_schema 19 numeric_scale 13158 -1 f +13182 attributes v information_schema 20 datetime_precision 13158 -1 f +13182 attributes v information_schema 21 interval_type 13161 -1 f +13182 attributes v information_schema 22 interval_precision 13158 -1 f +13182 attributes v information_schema 23 attribute_udt_catalog 13163 -1 f +13182 attributes v information_schema 24 attribute_udt_schema 13163 -1 f +13182 attributes v information_schema 25 attribute_udt_name 13163 -1 f +13182 attributes v information_schema 26 scope_catalog 13163 -1 f +13182 attributes v information_schema 27 scope_schema 13163 -1 f +13182 attributes v information_schema 28 scope_name 13163 -1 f +13182 attributes v information_schema 29 maximum_cardinality 13158 -1 f +13182 attributes v information_schema 30 dtd_identifier 13163 -1 f +13182 attributes v information_schema 31 is_derived_reference_attribute 13171 -1 f +13187 character_sets v information_schema 1 character_set_catalog 13163 -1 f +13187 character_sets v information_schema 2 character_set_schema 13163 -1 f +13187 character_sets v information_schema 3 character_set_name 13163 -1 f +13187 character_sets v information_schema 4 character_repertoire 13163 -1 f +13187 character_sets v information_schema 5 form_of_use 13163 -1 f +13187 character_sets v information_schema 6 default_collate_catalog 13163 -1 f +13187 character_sets v information_schema 7 default_collate_schema 13163 -1 f +13187 character_sets v information_schema 8 default_collate_name 13163 -1 f +13192 check_constraint_routine_usage v information_schema 1 constraint_catalog 13163 -1 f +13192 check_constraint_routine_usage v information_schema 2 constraint_schema 13163 -1 f +13192 check_constraint_routine_usage v information_schema 3 constraint_name 13163 -1 f +13192 check_constraint_routine_usage v information_schema 4 specific_catalog 13163 -1 f +13192 check_constraint_routine_usage v information_schema 5 specific_schema 13163 -1 f +13192 check_constraint_routine_usage v information_schema 6 specific_name 13163 -1 f +13197 check_constraints v information_schema 1 constraint_catalog 13163 -1 f +13197 check_constraints v information_schema 2 constraint_schema 13163 -1 f +13197 check_constraints v information_schema 3 constraint_name 13163 -1 f +13197 check_constraints v information_schema 4 check_clause 13161 -1 f +13202 collations v information_schema 1 collation_catalog 13163 -1 f +13202 collations v information_schema 2 collation_schema 13163 -1 f +13202 collations v information_schema 3 collation_name 13163 -1 f +13202 collations v information_schema 4 pad_attribute 13161 -1 f +13207 collation_character_set_applicability v information_schema 1 collation_catalog 13163 -1 f +13207 collation_character_set_applicability v information_schema 2 collation_schema 13163 -1 f +13207 collation_character_set_applicability v information_schema 3 collation_name 13163 -1 f +13207 collation_character_set_applicability v information_schema 4 character_set_catalog 13163 -1 f +13207 collation_character_set_applicability v information_schema 5 character_set_schema 13163 -1 f +13207 collation_character_set_applicability v information_schema 6 character_set_name 13163 -1 f +13212 column_column_usage v information_schema 1 table_catalog 13163 -1 f +13212 column_column_usage v information_schema 2 table_schema 13163 -1 f +13212 column_column_usage v information_schema 3 table_name 13163 -1 f +13212 column_column_usage v information_schema 4 column_name 13163 -1 f +13212 column_column_usage v information_schema 5 dependent_column 13163 -1 f +13217 column_domain_usage v information_schema 1 domain_catalog 13163 -1 f +13217 column_domain_usage v information_schema 2 domain_schema 13163 -1 f +13217 column_domain_usage v information_schema 3 domain_name 13163 -1 f +13217 column_domain_usage v information_schema 4 table_catalog 13163 -1 f +13217 column_domain_usage v information_schema 5 table_schema 13163 -1 f +13217 column_domain_usage v information_schema 6 table_name 13163 -1 f +13217 column_domain_usage v information_schema 7 column_name 13163 -1 f +13222 column_privileges v information_schema 1 grantor 13163 -1 f +13222 column_privileges v information_schema 2 grantee 13163 -1 f +13222 column_privileges v information_schema 3 table_catalog 13163 -1 f +13222 column_privileges v information_schema 4 table_schema 13163 -1 f +13222 column_privileges v information_schema 5 table_name 13163 -1 f +13222 column_privileges v information_schema 6 column_name 13163 -1 f +13222 column_privileges v information_schema 7 privilege_type 13161 -1 f +13222 column_privileges v information_schema 8 is_grantable 13171 -1 f +13227 column_udt_usage v information_schema 1 udt_catalog 13163 -1 f +13227 column_udt_usage v information_schema 2 udt_schema 13163 -1 f +13227 column_udt_usage v information_schema 3 udt_name 13163 -1 f +13227 column_udt_usage v information_schema 4 table_catalog 13163 -1 f +13227 column_udt_usage v information_schema 5 table_schema 13163 -1 f +13227 column_udt_usage v information_schema 6 table_name 13163 -1 f +13227 column_udt_usage v information_schema 7 column_name 13163 -1 f +13232 columns v information_schema 1 table_catalog 13163 -1 f +13232 columns v information_schema 2 table_schema 13163 -1 f +13232 columns v information_schema 3 table_name 13163 -1 f +13232 columns v information_schema 4 column_name 13163 -1 f +13232 columns v information_schema 5 ordinal_position 13158 -1 f +13232 columns v information_schema 6 column_default 13161 -1 f +13232 columns v information_schema 7 is_nullable 13171 -1 f +13232 columns v information_schema 8 data_type 13161 -1 f +13232 columns v information_schema 9 character_maximum_length 13158 -1 f +13232 columns v information_schema 10 character_octet_length 13158 -1 f +13232 columns v information_schema 11 numeric_precision 13158 -1 f +13232 columns v information_schema 12 numeric_precision_radix 13158 -1 f +13232 columns v information_schema 13 numeric_scale 13158 -1 f +13232 columns v information_schema 14 datetime_precision 13158 -1 f +13232 columns v information_schema 15 interval_type 13161 -1 f +13232 columns v information_schema 16 interval_precision 13158 -1 f +13232 columns v information_schema 17 character_set_catalog 13163 -1 f +13232 columns v information_schema 18 character_set_schema 13163 -1 f +13232 columns v information_schema 19 character_set_name 13163 -1 f +13232 columns v information_schema 20 collation_catalog 13163 -1 f +13232 columns v information_schema 21 collation_schema 13163 -1 f +13232 columns v information_schema 22 collation_name 13163 -1 f +13232 columns v information_schema 23 domain_catalog 13163 -1 f +13232 columns v information_schema 24 domain_schema 13163 -1 f +13232 columns v information_schema 25 domain_name 13163 -1 f +13232 columns v information_schema 26 udt_catalog 13163 -1 f +13232 columns v information_schema 27 udt_schema 13163 -1 f +13232 columns v information_schema 28 udt_name 13163 -1 f +13232 columns v information_schema 29 scope_catalog 13163 -1 f +13232 columns v information_schema 30 scope_schema 13163 -1 f +13232 columns v information_schema 31 scope_name 13163 -1 f +13232 columns v information_schema 32 maximum_cardinality 13158 -1 f +13232 columns v information_schema 33 dtd_identifier 13163 -1 f +13232 columns v information_schema 34 is_self_referencing 13171 -1 f +13232 columns v information_schema 35 is_identity 13171 -1 f +13232 columns v information_schema 36 identity_generation 13161 -1 f +13232 columns v information_schema 37 identity_start 13161 -1 f +13232 columns v information_schema 38 identity_increment 13161 -1 f +13232 columns v information_schema 39 identity_maximum 13161 -1 f +13232 columns v information_schema 40 identity_minimum 13161 -1 f +13232 columns v information_schema 41 identity_cycle 13171 -1 f +13232 columns v information_schema 42 is_generated 13161 -1 f +13232 columns v information_schema 43 generation_expression 13161 -1 f +13232 columns v information_schema 44 is_updatable 13171 -1 f +13237 constraint_column_usage v information_schema 1 table_catalog 13163 -1 f +13237 constraint_column_usage v information_schema 2 table_schema 13163 -1 f +13237 constraint_column_usage v information_schema 3 table_name 13163 -1 f +13237 constraint_column_usage v information_schema 4 column_name 13163 -1 f +13237 constraint_column_usage v information_schema 5 constraint_catalog 13163 -1 f +13237 constraint_column_usage v information_schema 6 constraint_schema 13163 -1 f +13237 constraint_column_usage v information_schema 7 constraint_name 13163 -1 f +13242 constraint_table_usage v information_schema 1 table_catalog 13163 -1 f +13242 constraint_table_usage v information_schema 2 table_schema 13163 -1 f +13242 constraint_table_usage v information_schema 3 table_name 13163 -1 f +13242 constraint_table_usage v information_schema 4 constraint_catalog 13163 -1 f +13242 constraint_table_usage v information_schema 5 constraint_schema 13163 -1 f +13242 constraint_table_usage v information_schema 6 constraint_name 13163 -1 f +13247 domain_constraints v information_schema 1 constraint_catalog 13163 -1 f +13247 domain_constraints v information_schema 2 constraint_schema 13163 -1 f +13247 domain_constraints v information_schema 3 constraint_name 13163 -1 f +13247 domain_constraints v information_schema 4 domain_catalog 13163 -1 f +13247 domain_constraints v information_schema 5 domain_schema 13163 -1 f +13247 domain_constraints v information_schema 6 domain_name 13163 -1 f +13247 domain_constraints v information_schema 7 is_deferrable 13171 -1 f +13247 domain_constraints v information_schema 8 initially_deferred 13171 -1 f +13252 domain_udt_usage v information_schema 1 udt_catalog 13163 -1 f +13252 domain_udt_usage v information_schema 2 udt_schema 13163 -1 f +13252 domain_udt_usage v information_schema 3 udt_name 13163 -1 f +13252 domain_udt_usage v information_schema 4 domain_catalog 13163 -1 f +13252 domain_udt_usage v information_schema 5 domain_schema 13163 -1 f +13252 domain_udt_usage v information_schema 6 domain_name 13163 -1 f +13256 domains v information_schema 1 domain_catalog 13163 -1 f +13256 domains v information_schema 2 domain_schema 13163 -1 f +13256 domains v information_schema 3 domain_name 13163 -1 f +13256 domains v information_schema 4 data_type 13161 -1 f +13256 domains v information_schema 5 character_maximum_length 13158 -1 f +13256 domains v information_schema 6 character_octet_length 13158 -1 f +13256 domains v information_schema 7 character_set_catalog 13163 -1 f +13256 domains v information_schema 8 character_set_schema 13163 -1 f +13256 domains v information_schema 9 character_set_name 13163 -1 f +13256 domains v information_schema 10 collation_catalog 13163 -1 f +13256 domains v information_schema 11 collation_schema 13163 -1 f +13256 domains v information_schema 12 collation_name 13163 -1 f +13256 domains v information_schema 13 numeric_precision 13158 -1 f +13256 domains v information_schema 14 numeric_precision_radix 13158 -1 f +13256 domains v information_schema 15 numeric_scale 13158 -1 f +13256 domains v information_schema 16 datetime_precision 13158 -1 f +13256 domains v information_schema 17 interval_type 13161 -1 f +13256 domains v information_schema 18 interval_precision 13158 -1 f +13256 domains v information_schema 19 domain_default 13161 -1 f +13256 domains v information_schema 20 udt_catalog 13163 -1 f +13256 domains v information_schema 21 udt_schema 13163 -1 f +13256 domains v information_schema 22 udt_name 13163 -1 f +13256 domains v information_schema 23 scope_catalog 13163 -1 f +13256 domains v information_schema 24 scope_schema 13163 -1 f +13256 domains v information_schema 25 scope_name 13163 -1 f +13256 domains v information_schema 26 maximum_cardinality 13158 -1 f +13256 domains v information_schema 27 dtd_identifier 13163 -1 f +13261 enabled_roles v information_schema 1 role_name 13163 -1 f +13265 key_column_usage v information_schema 1 constraint_catalog 13163 -1 f +13265 key_column_usage v information_schema 2 constraint_schema 13163 -1 f +13265 key_column_usage v information_schema 3 constraint_name 13163 -1 f +13265 key_column_usage v information_schema 4 table_catalog 13163 -1 f +13265 key_column_usage v information_schema 5 table_schema 13163 -1 f +13265 key_column_usage v information_schema 6 table_name 13163 -1 f +13265 key_column_usage v information_schema 7 column_name 13163 -1 f +13265 key_column_usage v information_schema 8 ordinal_position 13158 -1 f +13265 key_column_usage v information_schema 9 position_in_unique_constraint 13158 -1 f +13270 parameters v information_schema 1 specific_catalog 13163 -1 f +13270 parameters v information_schema 2 specific_schema 13163 -1 f +13270 parameters v information_schema 3 specific_name 13163 -1 f +13270 parameters v information_schema 4 ordinal_position 13158 -1 f +13270 parameters v information_schema 5 parameter_mode 13161 -1 f +13270 parameters v information_schema 6 is_result 13171 -1 f +13270 parameters v information_schema 7 as_locator 13171 -1 f +13270 parameters v information_schema 8 parameter_name 13163 -1 f +13270 parameters v information_schema 9 data_type 13161 -1 f +13270 parameters v information_schema 10 character_maximum_length 13158 -1 f +13270 parameters v information_schema 11 character_octet_length 13158 -1 f +13270 parameters v information_schema 12 character_set_catalog 13163 -1 f +13270 parameters v information_schema 13 character_set_schema 13163 -1 f +13270 parameters v information_schema 14 character_set_name 13163 -1 f +13270 parameters v information_schema 15 collation_catalog 13163 -1 f +13270 parameters v information_schema 16 collation_schema 13163 -1 f +13270 parameters v information_schema 17 collation_name 13163 -1 f +13270 parameters v information_schema 18 numeric_precision 13158 -1 f +13270 parameters v information_schema 19 numeric_precision_radix 13158 -1 f +13270 parameters v information_schema 20 numeric_scale 13158 -1 f +13270 parameters v information_schema 21 datetime_precision 13158 -1 f +13270 parameters v information_schema 22 interval_type 13161 -1 f +13270 parameters v information_schema 23 interval_precision 13158 -1 f +13270 parameters v information_schema 24 udt_catalog 13163 -1 f +13270 parameters v information_schema 25 udt_schema 13163 -1 f +13270 parameters v information_schema 26 udt_name 13163 -1 f +13270 parameters v information_schema 27 scope_catalog 13163 -1 f +13270 parameters v information_schema 28 scope_schema 13163 -1 f +13270 parameters v information_schema 29 scope_name 13163 -1 f +13270 parameters v information_schema 30 maximum_cardinality 13158 -1 f +13270 parameters v information_schema 31 dtd_identifier 13163 -1 f +13270 parameters v information_schema 32 parameter_default 13161 -1 f +13275 referential_constraints v information_schema 1 constraint_catalog 13163 -1 f +13275 referential_constraints v information_schema 2 constraint_schema 13163 -1 f +13275 referential_constraints v information_schema 3 constraint_name 13163 -1 f +13275 referential_constraints v information_schema 4 unique_constraint_catalog 13163 -1 f +13275 referential_constraints v information_schema 5 unique_constraint_schema 13163 -1 f +13275 referential_constraints v information_schema 6 unique_constraint_name 13163 -1 f +13275 referential_constraints v information_schema 7 match_option 13161 -1 f +13275 referential_constraints v information_schema 8 update_rule 13161 -1 f +13275 referential_constraints v information_schema 9 delete_rule 13161 -1 f +13280 role_column_grants v information_schema 1 grantor 13163 -1 f +13280 role_column_grants v information_schema 2 grantee 13163 -1 f +13280 role_column_grants v information_schema 3 table_catalog 13163 -1 f +13280 role_column_grants v information_schema 4 table_schema 13163 -1 f +13280 role_column_grants v information_schema 5 table_name 13163 -1 f +13280 role_column_grants v information_schema 6 column_name 13163 -1 f +13280 role_column_grants v information_schema 7 privilege_type 13161 -1 f +13280 role_column_grants v information_schema 8 is_grantable 13171 -1 f +13284 routine_column_usage v information_schema 1 specific_catalog 13163 -1 f +13284 routine_column_usage v information_schema 2 specific_schema 13163 -1 f +13284 routine_column_usage v information_schema 3 specific_name 13163 -1 f +13284 routine_column_usage v information_schema 4 routine_catalog 13163 -1 f +13284 routine_column_usage v information_schema 5 routine_schema 13163 -1 f +13284 routine_column_usage v information_schema 6 routine_name 13163 -1 f +13284 routine_column_usage v information_schema 7 table_catalog 13163 -1 f +13284 routine_column_usage v information_schema 8 table_schema 13163 -1 f +13284 routine_column_usage v information_schema 9 table_name 13163 -1 f +13284 routine_column_usage v information_schema 10 column_name 13163 -1 f +13289 routine_privileges v information_schema 1 grantor 13163 -1 f +13289 routine_privileges v information_schema 2 grantee 13163 -1 f +13289 routine_privileges v information_schema 3 specific_catalog 13163 -1 f +13289 routine_privileges v information_schema 4 specific_schema 13163 -1 f +13289 routine_privileges v information_schema 5 specific_name 13163 -1 f +13289 routine_privileges v information_schema 6 routine_catalog 13163 -1 f +13289 routine_privileges v information_schema 7 routine_schema 13163 -1 f +13289 routine_privileges v information_schema 8 routine_name 13163 -1 f +13289 routine_privileges v information_schema 9 privilege_type 13161 -1 f +13289 routine_privileges v information_schema 10 is_grantable 13171 -1 f +13294 role_routine_grants v information_schema 1 grantor 13163 -1 f +13294 role_routine_grants v information_schema 2 grantee 13163 -1 f +13294 role_routine_grants v information_schema 3 specific_catalog 13163 -1 f +13294 role_routine_grants v information_schema 4 specific_schema 13163 -1 f +13294 role_routine_grants v information_schema 5 specific_name 13163 -1 f +13294 role_routine_grants v information_schema 6 routine_catalog 13163 -1 f +13294 role_routine_grants v information_schema 7 routine_schema 13163 -1 f +13294 role_routine_grants v information_schema 8 routine_name 13163 -1 f +13294 role_routine_grants v information_schema 9 privilege_type 13161 -1 f +13294 role_routine_grants v information_schema 10 is_grantable 13171 -1 f +13298 routine_routine_usage v information_schema 1 specific_catalog 13163 -1 f +13298 routine_routine_usage v information_schema 2 specific_schema 13163 -1 f +13298 routine_routine_usage v information_schema 3 specific_name 13163 -1 f +13298 routine_routine_usage v information_schema 4 routine_catalog 13163 -1 f +13298 routine_routine_usage v information_schema 5 routine_schema 13163 -1 f +13298 routine_routine_usage v information_schema 6 routine_name 13163 -1 f +13303 routine_sequence_usage v information_schema 1 specific_catalog 13163 -1 f +13303 routine_sequence_usage v information_schema 2 specific_schema 13163 -1 f +13303 routine_sequence_usage v information_schema 3 specific_name 13163 -1 f +13303 routine_sequence_usage v information_schema 4 routine_catalog 13163 -1 f +13303 routine_sequence_usage v information_schema 5 routine_schema 13163 -1 f +13303 routine_sequence_usage v information_schema 6 routine_name 13163 -1 f +13303 routine_sequence_usage v information_schema 7 sequence_catalog 13163 -1 f +13303 routine_sequence_usage v information_schema 8 sequence_schema 13163 -1 f +13303 routine_sequence_usage v information_schema 9 sequence_name 13163 -1 f +13308 routine_table_usage v information_schema 1 specific_catalog 13163 -1 f +13308 routine_table_usage v information_schema 2 specific_schema 13163 -1 f +13308 routine_table_usage v information_schema 3 specific_name 13163 -1 f +13308 routine_table_usage v information_schema 4 routine_catalog 13163 -1 f +13308 routine_table_usage v information_schema 5 routine_schema 13163 -1 f +13308 routine_table_usage v information_schema 6 routine_name 13163 -1 f +13308 routine_table_usage v information_schema 7 table_catalog 13163 -1 f +13308 routine_table_usage v information_schema 8 table_schema 13163 -1 f +13308 routine_table_usage v information_schema 9 table_name 13163 -1 f +13313 routines v information_schema 1 specific_catalog 13163 -1 f +13313 routines v information_schema 2 specific_schema 13163 -1 f +13313 routines v information_schema 3 specific_name 13163 -1 f +13313 routines v information_schema 4 routine_catalog 13163 -1 f +13313 routines v information_schema 5 routine_schema 13163 -1 f +13313 routines v information_schema 6 routine_name 13163 -1 f +13313 routines v information_schema 7 routine_type 13161 -1 f +13313 routines v information_schema 8 module_catalog 13163 -1 f +13313 routines v information_schema 9 module_schema 13163 -1 f +13313 routines v information_schema 10 module_name 13163 -1 f +13313 routines v information_schema 11 udt_catalog 13163 -1 f +13313 routines v information_schema 12 udt_schema 13163 -1 f +13313 routines v information_schema 13 udt_name 13163 -1 f +13313 routines v information_schema 14 data_type 13161 -1 f +13313 routines v information_schema 15 character_maximum_length 13158 -1 f +13313 routines v information_schema 16 character_octet_length 13158 -1 f +13313 routines v information_schema 17 character_set_catalog 13163 -1 f +13313 routines v information_schema 18 character_set_schema 13163 -1 f +13313 routines v information_schema 19 character_set_name 13163 -1 f +13313 routines v information_schema 20 collation_catalog 13163 -1 f +13313 routines v information_schema 21 collation_schema 13163 -1 f +13313 routines v information_schema 22 collation_name 13163 -1 f +13313 routines v information_schema 23 numeric_precision 13158 -1 f +13313 routines v information_schema 24 numeric_precision_radix 13158 -1 f +13313 routines v information_schema 25 numeric_scale 13158 -1 f +13313 routines v information_schema 26 datetime_precision 13158 -1 f +13313 routines v information_schema 27 interval_type 13161 -1 f +13313 routines v information_schema 28 interval_precision 13158 -1 f +13313 routines v information_schema 29 type_udt_catalog 13163 -1 f +13313 routines v information_schema 30 type_udt_schema 13163 -1 f +13313 routines v information_schema 31 type_udt_name 13163 -1 f +13313 routines v information_schema 32 scope_catalog 13163 -1 f +13313 routines v information_schema 33 scope_schema 13163 -1 f +13313 routines v information_schema 34 scope_name 13163 -1 f +13313 routines v information_schema 35 maximum_cardinality 13158 -1 f +13313 routines v information_schema 36 dtd_identifier 13163 -1 f +13313 routines v information_schema 37 routine_body 13161 -1 f +13313 routines v information_schema 38 routine_definition 13161 -1 f +13313 routines v information_schema 39 external_name 13161 -1 f +13313 routines v information_schema 40 external_language 13161 -1 f +13313 routines v information_schema 41 parameter_style 13161 -1 f +13313 routines v information_schema 42 is_deterministic 13171 -1 f +13313 routines v information_schema 43 sql_data_access 13161 -1 f +13313 routines v information_schema 44 is_null_call 13171 -1 f +13313 routines v information_schema 45 sql_path 13161 -1 f +13313 routines v information_schema 46 schema_level_routine 13171 -1 f +13313 routines v information_schema 47 max_dynamic_result_sets 13158 -1 f +13313 routines v information_schema 48 is_user_defined_cast 13171 -1 f +13313 routines v information_schema 49 is_implicitly_invocable 13171 -1 f +13313 routines v information_schema 50 security_type 13161 -1 f +13313 routines v information_schema 51 to_sql_specific_catalog 13163 -1 f +13313 routines v information_schema 52 to_sql_specific_schema 13163 -1 f +13313 routines v information_schema 53 to_sql_specific_name 13163 -1 f +13313 routines v information_schema 54 as_locator 13171 -1 f +13313 routines v information_schema 55 created 13169 -1 f +13313 routines v information_schema 56 last_altered 13169 -1 f +13313 routines v information_schema 57 new_savepoint_level 13171 -1 f +13313 routines v information_schema 58 is_udt_dependent 13171 -1 f +13313 routines v information_schema 59 result_cast_from_data_type 13161 -1 f +13313 routines v information_schema 60 result_cast_as_locator 13171 -1 f +13313 routines v information_schema 61 result_cast_char_max_length 13158 -1 f +13313 routines v information_schema 62 result_cast_char_octet_length 13158 -1 f +13313 routines v information_schema 63 result_cast_char_set_catalog 13163 -1 f +13313 routines v information_schema 64 result_cast_char_set_schema 13163 -1 f +13313 routines v information_schema 65 result_cast_char_set_name 13163 -1 f +13313 routines v information_schema 66 result_cast_collation_catalog 13163 -1 f +13313 routines v information_schema 67 result_cast_collation_schema 13163 -1 f +13313 routines v information_schema 68 result_cast_collation_name 13163 -1 f +13313 routines v information_schema 69 result_cast_numeric_precision 13158 -1 f +13313 routines v information_schema 70 result_cast_numeric_precision_radix 13158 -1 f +13313 routines v information_schema 71 result_cast_numeric_scale 13158 -1 f +13313 routines v information_schema 72 result_cast_datetime_precision 13158 -1 f +13313 routines v information_schema 73 result_cast_interval_type 13161 -1 f +13313 routines v information_schema 74 result_cast_interval_precision 13158 -1 f +13313 routines v information_schema 75 result_cast_type_udt_catalog 13163 -1 f +13313 routines v information_schema 76 result_cast_type_udt_schema 13163 -1 f +13313 routines v information_schema 77 result_cast_type_udt_name 13163 -1 f +13313 routines v information_schema 78 result_cast_scope_catalog 13163 -1 f +13313 routines v information_schema 79 result_cast_scope_schema 13163 -1 f +13313 routines v information_schema 80 result_cast_scope_name 13163 -1 f +13313 routines v information_schema 81 result_cast_maximum_cardinality 13158 -1 f +13313 routines v information_schema 82 result_cast_dtd_identifier 13163 -1 f +13318 schemata v information_schema 1 catalog_name 13163 -1 f +13318 schemata v information_schema 2 schema_name 13163 -1 f +13318 schemata v information_schema 3 schema_owner 13163 -1 f +13318 schemata v information_schema 4 default_character_set_catalog 13163 -1 f +13318 schemata v information_schema 5 default_character_set_schema 13163 -1 f +13318 schemata v information_schema 6 default_character_set_name 13163 -1 f +13318 schemata v information_schema 7 sql_path 13161 -1 f +13322 sequences v information_schema 1 sequence_catalog 13163 -1 f +13322 sequences v information_schema 2 sequence_schema 13163 -1 f +13322 sequences v information_schema 3 sequence_name 13163 -1 f +13322 sequences v information_schema 4 data_type 13161 -1 f +13322 sequences v information_schema 5 numeric_precision 13158 -1 f +13322 sequences v information_schema 6 numeric_precision_radix 13158 -1 f +13322 sequences v information_schema 7 numeric_scale 13158 -1 f +13322 sequences v information_schema 8 start_value 13161 -1 f +13322 sequences v information_schema 9 minimum_value 13161 -1 f +13322 sequences v information_schema 10 maximum_value 13161 -1 f +13322 sequences v information_schema 11 increment 13161 -1 f +13322 sequences v information_schema 12 cycle_option 13171 -1 f +13327 sql_features r information_schema 1 feature_id 13161 -1 f +13327 sql_features r information_schema 2 feature_name 13161 -1 f +13327 sql_features r information_schema 3 sub_feature_id 13161 -1 f +13327 sql_features r information_schema 4 sub_feature_name 13161 -1 f +13327 sql_features r information_schema 5 is_supported 13171 -1 f +13327 sql_features r information_schema 6 is_verified_by 13161 -1 f +13327 sql_features r information_schema 7 comments 13161 -1 f +13332 sql_implementation_info r information_schema 1 implementation_info_id 13161 -1 f +13332 sql_implementation_info r information_schema 2 implementation_info_name 13161 -1 f +13332 sql_implementation_info r information_schema 3 integer_value 13158 -1 f +13332 sql_implementation_info r information_schema 4 character_value 13161 -1 f +13332 sql_implementation_info r information_schema 5 comments 13161 -1 f +13337 sql_parts r information_schema 1 feature_id 13161 -1 f +13337 sql_parts r information_schema 2 feature_name 13161 -1 f +13337 sql_parts r information_schema 3 is_supported 13171 -1 f +13337 sql_parts r information_schema 4 is_verified_by 13161 -1 f +13337 sql_parts r information_schema 5 comments 13161 -1 f +13342 sql_sizing r information_schema 1 sizing_id 13158 -1 f +13342 sql_sizing r information_schema 2 sizing_name 13161 -1 f +13342 sql_sizing r information_schema 3 supported_value 13158 -1 f +13342 sql_sizing r information_schema 4 comments 13161 -1 f +13347 table_constraints v information_schema 1 constraint_catalog 13163 -1 f +13347 table_constraints v information_schema 2 constraint_schema 13163 -1 f +13347 table_constraints v information_schema 3 constraint_name 13163 -1 f +13347 table_constraints v information_schema 4 table_catalog 13163 -1 f +13347 table_constraints v information_schema 5 table_schema 13163 -1 f +13347 table_constraints v information_schema 6 table_name 13163 -1 f +13347 table_constraints v information_schema 7 constraint_type 13161 -1 f +13347 table_constraints v information_schema 8 is_deferrable 13171 -1 f +13347 table_constraints v information_schema 9 initially_deferred 13171 -1 f +13347 table_constraints v information_schema 10 enforced 13171 -1 f +13347 table_constraints v information_schema 11 nulls_distinct 13171 -1 f +13352 table_privileges v information_schema 1 grantor 13163 -1 f +13352 table_privileges v information_schema 2 grantee 13163 -1 f +13352 table_privileges v information_schema 3 table_catalog 13163 -1 f +13352 table_privileges v information_schema 4 table_schema 13163 -1 f +13352 table_privileges v information_schema 5 table_name 13163 -1 f +13352 table_privileges v information_schema 6 privilege_type 13161 -1 f +13352 table_privileges v information_schema 7 is_grantable 13171 -1 f +13352 table_privileges v information_schema 8 with_hierarchy 13171 -1 f +13357 role_table_grants v information_schema 1 grantor 13163 -1 f +13357 role_table_grants v information_schema 2 grantee 13163 -1 f +13357 role_table_grants v information_schema 3 table_catalog 13163 -1 f +13357 role_table_grants v information_schema 4 table_schema 13163 -1 f +13357 role_table_grants v information_schema 5 table_name 13163 -1 f +13357 role_table_grants v information_schema 6 privilege_type 13161 -1 f +13357 role_table_grants v information_schema 7 is_grantable 13171 -1 f +13357 role_table_grants v information_schema 8 with_hierarchy 13171 -1 f +13361 tables v information_schema 1 table_catalog 13163 -1 f +13361 tables v information_schema 2 table_schema 13163 -1 f +13361 tables v information_schema 3 table_name 13163 -1 f +13361 tables v information_schema 4 table_type 13161 -1 f +13361 tables v information_schema 5 self_referencing_column_name 13163 -1 f +13361 tables v information_schema 6 reference_generation 13161 -1 f +13361 tables v information_schema 7 user_defined_type_catalog 13163 -1 f +13361 tables v information_schema 8 user_defined_type_schema 13163 -1 f +13361 tables v information_schema 9 user_defined_type_name 13163 -1 f +13361 tables v information_schema 10 is_insertable_into 13171 -1 f +13361 tables v information_schema 11 is_typed 13171 -1 f +13361 tables v information_schema 12 commit_action 13161 -1 f +13366 transforms v information_schema 1 udt_catalog 13163 -1 f +13366 transforms v information_schema 2 udt_schema 13163 -1 f +13366 transforms v information_schema 3 udt_name 13163 -1 f +13366 transforms v information_schema 4 specific_catalog 13163 -1 f +13366 transforms v information_schema 5 specific_schema 13163 -1 f +13366 transforms v information_schema 6 specific_name 13163 -1 f +13366 transforms v information_schema 7 group_name 13163 -1 f +13366 transforms v information_schema 8 transform_type 13161 -1 f +13371 triggered_update_columns v information_schema 1 trigger_catalog 13163 -1 f +13371 triggered_update_columns v information_schema 2 trigger_schema 13163 -1 f +13371 triggered_update_columns v information_schema 3 trigger_name 13163 -1 f +13371 triggered_update_columns v information_schema 4 event_object_catalog 13163 -1 f +13371 triggered_update_columns v information_schema 5 event_object_schema 13163 -1 f +13371 triggered_update_columns v information_schema 6 event_object_table 13163 -1 f +13371 triggered_update_columns v information_schema 7 event_object_column 13163 -1 f +13376 triggers v information_schema 1 trigger_catalog 13163 -1 f +13376 triggers v information_schema 2 trigger_schema 13163 -1 f +13376 triggers v information_schema 3 trigger_name 13163 -1 f +13376 triggers v information_schema 4 event_manipulation 13161 -1 f +13376 triggers v information_schema 5 event_object_catalog 13163 -1 f +13376 triggers v information_schema 6 event_object_schema 13163 -1 f +13376 triggers v information_schema 7 event_object_table 13163 -1 f +13376 triggers v information_schema 8 action_order 13158 -1 f +13376 triggers v information_schema 9 action_condition 13161 -1 f +13376 triggers v information_schema 10 action_statement 13161 -1 f +13376 triggers v information_schema 11 action_orientation 13161 -1 f +13376 triggers v information_schema 12 action_timing 13161 -1 f +13376 triggers v information_schema 13 action_reference_old_table 13163 -1 f +13376 triggers v information_schema 14 action_reference_new_table 13163 -1 f +13376 triggers v information_schema 15 action_reference_old_row 13163 -1 f +13376 triggers v information_schema 16 action_reference_new_row 13163 -1 f +13376 triggers v information_schema 17 created 13169 -1 f +13381 udt_privileges v information_schema 1 grantor 13163 -1 f +13381 udt_privileges v information_schema 2 grantee 13163 -1 f +13381 udt_privileges v information_schema 3 udt_catalog 13163 -1 f +13381 udt_privileges v information_schema 4 udt_schema 13163 -1 f +13381 udt_privileges v information_schema 5 udt_name 13163 -1 f +13381 udt_privileges v information_schema 6 privilege_type 13161 -1 f +13381 udt_privileges v information_schema 7 is_grantable 13171 -1 f +13386 role_udt_grants v information_schema 1 grantor 13163 -1 f +13386 role_udt_grants v information_schema 2 grantee 13163 -1 f +13386 role_udt_grants v information_schema 3 udt_catalog 13163 -1 f +13386 role_udt_grants v information_schema 4 udt_schema 13163 -1 f +13386 role_udt_grants v information_schema 5 udt_name 13163 -1 f +13386 role_udt_grants v information_schema 6 privilege_type 13161 -1 f +13386 role_udt_grants v information_schema 7 is_grantable 13171 -1 f +13390 usage_privileges v information_schema 1 grantor 13163 -1 f +13390 usage_privileges v information_schema 2 grantee 13163 -1 f +13390 usage_privileges v information_schema 3 object_catalog 13163 -1 f +13390 usage_privileges v information_schema 4 object_schema 13163 -1 f +13390 usage_privileges v information_schema 5 object_name 13163 -1 f +13390 usage_privileges v information_schema 6 object_type 13161 -1 f +13390 usage_privileges v information_schema 7 privilege_type 13161 -1 f +13390 usage_privileges v information_schema 8 is_grantable 13171 -1 f +13395 role_usage_grants v information_schema 1 grantor 13163 -1 f +13395 role_usage_grants v information_schema 2 grantee 13163 -1 f +13395 role_usage_grants v information_schema 3 object_catalog 13163 -1 f +13395 role_usage_grants v information_schema 4 object_schema 13163 -1 f +13395 role_usage_grants v information_schema 5 object_name 13163 -1 f +13395 role_usage_grants v information_schema 6 object_type 13161 -1 f +13395 role_usage_grants v information_schema 7 privilege_type 13161 -1 f +13395 role_usage_grants v information_schema 8 is_grantable 13171 -1 f +13399 user_defined_types v information_schema 1 user_defined_type_catalog 13163 -1 f +13399 user_defined_types v information_schema 2 user_defined_type_schema 13163 -1 f +13399 user_defined_types v information_schema 3 user_defined_type_name 13163 -1 f +13399 user_defined_types v information_schema 4 user_defined_type_category 13161 -1 f +13399 user_defined_types v information_schema 5 is_instantiable 13171 -1 f +13399 user_defined_types v information_schema 6 is_final 13171 -1 f +13399 user_defined_types v information_schema 7 ordering_form 13161 -1 f +13399 user_defined_types v information_schema 8 ordering_category 13161 -1 f +13399 user_defined_types v information_schema 9 ordering_routine_catalog 13163 -1 f +13399 user_defined_types v information_schema 10 ordering_routine_schema 13163 -1 f +13399 user_defined_types v information_schema 11 ordering_routine_name 13163 -1 f +13399 user_defined_types v information_schema 12 reference_type 13161 -1 f +13399 user_defined_types v information_schema 13 data_type 13161 -1 f +13399 user_defined_types v information_schema 14 character_maximum_length 13158 -1 f +13399 user_defined_types v information_schema 15 character_octet_length 13158 -1 f +13399 user_defined_types v information_schema 16 character_set_catalog 13163 -1 f +13399 user_defined_types v information_schema 17 character_set_schema 13163 -1 f +13399 user_defined_types v information_schema 18 character_set_name 13163 -1 f +13399 user_defined_types v information_schema 19 collation_catalog 13163 -1 f +13399 user_defined_types v information_schema 20 collation_schema 13163 -1 f +13399 user_defined_types v information_schema 21 collation_name 13163 -1 f +13399 user_defined_types v information_schema 22 numeric_precision 13158 -1 f +13399 user_defined_types v information_schema 23 numeric_precision_radix 13158 -1 f +13399 user_defined_types v information_schema 24 numeric_scale 13158 -1 f +13399 user_defined_types v information_schema 25 datetime_precision 13158 -1 f +13399 user_defined_types v information_schema 26 interval_type 13161 -1 f +13399 user_defined_types v information_schema 27 interval_precision 13158 -1 f +13399 user_defined_types v information_schema 28 source_dtd_identifier 13163 -1 f +13399 user_defined_types v information_schema 29 ref_dtd_identifier 13163 -1 f +13404 view_column_usage v information_schema 1 view_catalog 13163 -1 f +13404 view_column_usage v information_schema 2 view_schema 13163 -1 f +13404 view_column_usage v information_schema 3 view_name 13163 -1 f +13404 view_column_usage v information_schema 4 table_catalog 13163 -1 f +13404 view_column_usage v information_schema 5 table_schema 13163 -1 f +13404 view_column_usage v information_schema 6 table_name 13163 -1 f +13404 view_column_usage v information_schema 7 column_name 13163 -1 f +13409 view_routine_usage v information_schema 1 table_catalog 13163 -1 f +13409 view_routine_usage v information_schema 2 table_schema 13163 -1 f +13409 view_routine_usage v information_schema 3 table_name 13163 -1 f +13409 view_routine_usage v information_schema 4 specific_catalog 13163 -1 f +13409 view_routine_usage v information_schema 5 specific_schema 13163 -1 f +13409 view_routine_usage v information_schema 6 specific_name 13163 -1 f +13414 view_table_usage v information_schema 1 view_catalog 13163 -1 f +13414 view_table_usage v information_schema 2 view_schema 13163 -1 f +13414 view_table_usage v information_schema 3 view_name 13163 -1 f +13414 view_table_usage v information_schema 4 table_catalog 13163 -1 f +13414 view_table_usage v information_schema 5 table_schema 13163 -1 f +13414 view_table_usage v information_schema 6 table_name 13163 -1 f +13419 views v information_schema 1 table_catalog 13163 -1 f +13419 views v information_schema 2 table_schema 13163 -1 f +13419 views v information_schema 3 table_name 13163 -1 f +13419 views v information_schema 4 view_definition 13161 -1 f +13419 views v information_schema 5 check_option 13161 -1 f +13419 views v information_schema 6 is_updatable 13171 -1 f +13419 views v information_schema 7 is_insertable_into 13171 -1 f +13419 views v information_schema 8 is_trigger_updatable 13171 -1 f +13419 views v information_schema 9 is_trigger_deletable 13171 -1 f +13419 views v information_schema 10 is_trigger_insertable_into 13171 -1 f +13424 data_type_privileges v information_schema 1 object_catalog 13163 -1 f +13424 data_type_privileges v information_schema 2 object_schema 13163 -1 f +13424 data_type_privileges v information_schema 3 object_name 13163 -1 f +13424 data_type_privileges v information_schema 4 object_type 13161 -1 f +13424 data_type_privileges v information_schema 5 dtd_identifier 13163 -1 f +13429 element_types v information_schema 1 object_catalog 13163 -1 f +13429 element_types v information_schema 2 object_schema 13163 -1 f +13429 element_types v information_schema 3 object_name 13163 -1 f +13429 element_types v information_schema 4 object_type 13161 -1 f +13429 element_types v information_schema 5 collection_type_identifier 13163 -1 f +13429 element_types v information_schema 6 data_type 13161 -1 f +13429 element_types v information_schema 7 character_maximum_length 13158 -1 f +13429 element_types v information_schema 8 character_octet_length 13158 -1 f +13429 element_types v information_schema 9 character_set_catalog 13163 -1 f +13429 element_types v information_schema 10 character_set_schema 13163 -1 f +13429 element_types v information_schema 11 character_set_name 13163 -1 f +13429 element_types v information_schema 12 collation_catalog 13163 -1 f +13429 element_types v information_schema 13 collation_schema 13163 -1 f +13429 element_types v information_schema 14 collation_name 13163 -1 f +13429 element_types v information_schema 15 numeric_precision 13158 -1 f +13429 element_types v information_schema 16 numeric_precision_radix 13158 -1 f +13429 element_types v information_schema 17 numeric_scale 13158 -1 f +13429 element_types v information_schema 18 datetime_precision 13158 -1 f +13429 element_types v information_schema 19 interval_type 13161 -1 f +13429 element_types v information_schema 20 interval_precision 13158 -1 f +13429 element_types v information_schema 21 udt_catalog 13163 -1 f +13429 element_types v information_schema 22 udt_schema 13163 -1 f +13429 element_types v information_schema 23 udt_name 13163 -1 f +13429 element_types v information_schema 24 scope_catalog 13163 -1 f +13429 element_types v information_schema 25 scope_schema 13163 -1 f +13429 element_types v information_schema 26 scope_name 13163 -1 f +13429 element_types v information_schema 27 maximum_cardinality 13158 -1 f +13429 element_types v information_schema 28 dtd_identifier 13163 -1 f +13434 _pg_foreign_table_columns v information_schema 1 nspname 19 -1 f +13434 _pg_foreign_table_columns v information_schema 2 relname 19 -1 f +13434 _pg_foreign_table_columns v information_schema 3 attname 19 -1 f +13434 _pg_foreign_table_columns v information_schema 4 attfdwoptions 1009 -1 f +13439 column_options v information_schema 1 table_catalog 13163 -1 f +13439 column_options v information_schema 2 table_schema 13163 -1 f +13439 column_options v information_schema 3 table_name 13163 -1 f +13439 column_options v information_schema 4 column_name 13163 -1 f +13439 column_options v information_schema 5 option_name 13163 -1 f +13439 column_options v information_schema 6 option_value 13161 -1 f +13443 _pg_foreign_data_wrappers v information_schema 1 oid 26 -1 f +13443 _pg_foreign_data_wrappers v information_schema 2 fdwowner 26 -1 f +13443 _pg_foreign_data_wrappers v information_schema 3 fdwoptions 1009 -1 f +13443 _pg_foreign_data_wrappers v information_schema 4 foreign_data_wrapper_catalog 13163 -1 f +13443 _pg_foreign_data_wrappers v information_schema 5 foreign_data_wrapper_name 13163 -1 f +13443 _pg_foreign_data_wrappers v information_schema 6 authorization_identifier 13163 -1 f +13443 _pg_foreign_data_wrappers v information_schema 7 foreign_data_wrapper_language 13161 -1 f +13447 foreign_data_wrapper_options v information_schema 1 foreign_data_wrapper_catalog 13163 -1 f +13447 foreign_data_wrapper_options v information_schema 2 foreign_data_wrapper_name 13163 -1 f +13447 foreign_data_wrapper_options v information_schema 3 option_name 13163 -1 f +13447 foreign_data_wrapper_options v information_schema 4 option_value 13161 -1 f +13451 foreign_data_wrappers v information_schema 1 foreign_data_wrapper_catalog 13163 -1 f +13451 foreign_data_wrappers v information_schema 2 foreign_data_wrapper_name 13163 -1 f +13451 foreign_data_wrappers v information_schema 3 authorization_identifier 13163 -1 f +13451 foreign_data_wrappers v information_schema 4 library_name 13161 -1 f +13451 foreign_data_wrappers v information_schema 5 foreign_data_wrapper_language 13161 -1 f +13455 _pg_foreign_servers v information_schema 1 oid 26 -1 f +13455 _pg_foreign_servers v information_schema 2 srvoptions 1009 -1 f +13455 _pg_foreign_servers v information_schema 3 foreign_server_catalog 13163 -1 f +13455 _pg_foreign_servers v information_schema 4 foreign_server_name 13163 -1 f +13455 _pg_foreign_servers v information_schema 5 foreign_data_wrapper_catalog 13163 -1 f +13455 _pg_foreign_servers v information_schema 6 foreign_data_wrapper_name 13163 -1 f +13455 _pg_foreign_servers v information_schema 7 foreign_server_type 13161 -1 f +13455 _pg_foreign_servers v information_schema 8 foreign_server_version 13161 -1 f +13455 _pg_foreign_servers v information_schema 9 authorization_identifier 13163 -1 f +13459 foreign_server_options v information_schema 1 foreign_server_catalog 13163 -1 f +13459 foreign_server_options v information_schema 2 foreign_server_name 13163 -1 f +13459 foreign_server_options v information_schema 3 option_name 13163 -1 f +13459 foreign_server_options v information_schema 4 option_value 13161 -1 f +13463 foreign_servers v information_schema 1 foreign_server_catalog 13163 -1 f +13463 foreign_servers v information_schema 2 foreign_server_name 13163 -1 f +13463 foreign_servers v information_schema 3 foreign_data_wrapper_catalog 13163 -1 f +13463 foreign_servers v information_schema 4 foreign_data_wrapper_name 13163 -1 f +13463 foreign_servers v information_schema 5 foreign_server_type 13161 -1 f +13463 foreign_servers v information_schema 6 foreign_server_version 13161 -1 f +13463 foreign_servers v information_schema 7 authorization_identifier 13163 -1 f +13467 _pg_foreign_tables v information_schema 1 foreign_table_catalog 13163 -1 f +13467 _pg_foreign_tables v information_schema 2 foreign_table_schema 13163 -1 f +13467 _pg_foreign_tables v information_schema 3 foreign_table_name 13163 -1 f +13467 _pg_foreign_tables v information_schema 4 ftoptions 1009 -1 f +13467 _pg_foreign_tables v information_schema 5 foreign_server_catalog 13163 -1 f +13467 _pg_foreign_tables v information_schema 6 foreign_server_name 13163 -1 f +13467 _pg_foreign_tables v information_schema 7 authorization_identifier 13163 -1 f +13472 foreign_table_options v information_schema 1 foreign_table_catalog 13163 -1 f +13472 foreign_table_options v information_schema 2 foreign_table_schema 13163 -1 f +13472 foreign_table_options v information_schema 3 foreign_table_name 13163 -1 f +13472 foreign_table_options v information_schema 4 option_name 13163 -1 f +13472 foreign_table_options v information_schema 5 option_value 13161 -1 f +13476 foreign_tables v information_schema 1 foreign_table_catalog 13163 -1 f +13476 foreign_tables v information_schema 2 foreign_table_schema 13163 -1 f +13476 foreign_tables v information_schema 3 foreign_table_name 13163 -1 f +13476 foreign_tables v information_schema 4 foreign_server_catalog 13163 -1 f +13476 foreign_tables v information_schema 5 foreign_server_name 13163 -1 f +13480 _pg_user_mappings v information_schema 1 oid 26 -1 f +13480 _pg_user_mappings v information_schema 2 umoptions 1009 -1 f +13480 _pg_user_mappings v information_schema 3 umuser 26 -1 f +13480 _pg_user_mappings v information_schema 4 authorization_identifier 13163 -1 f +13480 _pg_user_mappings v information_schema 5 foreign_server_catalog 13163 -1 f +13480 _pg_user_mappings v information_schema 6 foreign_server_name 13163 -1 f +13480 _pg_user_mappings v information_schema 7 srvowner 13163 -1 f +13485 user_mapping_options v information_schema 1 authorization_identifier 13163 -1 f +13485 user_mapping_options v information_schema 2 foreign_server_catalog 13163 -1 f +13485 user_mapping_options v information_schema 3 foreign_server_name 13163 -1 f +13485 user_mapping_options v information_schema 4 option_name 13163 -1 f +13485 user_mapping_options v information_schema 5 option_value 13161 -1 f +13490 user_mappings v information_schema 1 authorization_identifier 13163 -1 f +13490 user_mappings v information_schema 2 foreign_server_catalog 13163 -1 f +13490 user_mappings v information_schema 3 foreign_server_name 13163 -1 f diff --git a/internal/catalog/data/18/pg_operator.tsv b/internal/catalog/data/18/pg_operator.tsv new file mode 100644 index 0000000..d04815e --- /dev/null +++ b/internal/catalog/data/18/pg_operator.tsv @@ -0,0 +1,799 @@ +15 = b 23 20 16 852 416 36 t t pg_catalog +36 <> b 23 20 16 853 417 15 f f pg_catalog +37 < b 23 20 16 854 419 82 f f pg_catalog +58 < b 16 16 16 56 59 1695 f f pg_catalog +59 > b 16 16 16 57 58 1694 f f pg_catalog +76 > b 23 20 16 855 418 80 f f pg_catalog +80 <= b 23 20 16 856 430 76 f f pg_catalog +82 >= b 23 20 16 857 420 37 f f pg_catalog +85 <> b 16 16 16 84 85 91 f f pg_catalog +91 = b 16 16 16 60 91 85 t t pg_catalog +92 = b 18 18 16 61 92 630 t t pg_catalog +93 = b 19 19 16 62 93 643 t t pg_catalog +94 = b 21 21 16 63 94 519 t t pg_catalog +95 < b 21 21 16 64 520 524 f f pg_catalog +96 = b 23 23 16 65 96 518 t t pg_catalog +97 < b 23 23 16 66 521 525 f f pg_catalog +98 = b 25 25 16 67 98 531 t t pg_catalog +254 = b 19 25 16 240 260 259 t t pg_catalog +255 < b 19 25 16 241 264 257 f f pg_catalog +256 <= b 19 25 16 242 263 258 f f pg_catalog +257 >= b 19 25 16 243 262 255 f f pg_catalog +258 > b 19 25 16 244 261 256 f f pg_catalog +259 <> b 19 25 16 245 265 254 f f pg_catalog +260 = b 25 19 16 247 254 265 t t pg_catalog +261 < b 25 19 16 248 258 263 f f pg_catalog +262 <= b 25 19 16 249 257 264 f f pg_catalog +263 >= b 25 19 16 250 256 261 f f pg_catalog +264 > b 25 19 16 251 255 262 f f pg_catalog +265 <> b 25 19 16 252 259 260 f f pg_catalog +349 || b 5078 5077 5078 378 0 0 f f pg_catalog +352 = b 28 28 16 68 352 3315 f t pg_catalog +353 = b 28 23 16 1319 0 3316 f f pg_catalog +374 || b 5077 5078 5078 379 0 0 f f pg_catalog +375 || b 5078 5078 5078 383 0 0 f f pg_catalog +385 = b 29 29 16 69 385 0 f t pg_catalog +387 = b 27 27 16 1292 387 402 t t pg_catalog +402 <> b 27 27 16 1265 402 387 f f pg_catalog +410 = b 20 20 16 467 410 411 t t pg_catalog +411 <> b 20 20 16 468 411 410 f f pg_catalog +412 < b 20 20 16 469 413 415 f f pg_catalog +413 > b 20 20 16 470 412 414 f f pg_catalog +414 <= b 20 20 16 471 415 413 f f pg_catalog +415 >= b 20 20 16 472 414 412 f f pg_catalog +416 = b 20 23 16 474 15 417 t t pg_catalog +417 <> b 20 23 16 475 36 416 f f pg_catalog +418 < b 20 23 16 476 76 430 f f pg_catalog +419 > b 20 23 16 477 37 420 f f pg_catalog +420 <= b 20 23 16 478 82 419 f f pg_catalog +430 >= b 20 23 16 479 80 418 f f pg_catalog +433 @> b 603 600 16 193 511 0 f f pg_catalog +439 % b 20 20 20 945 0 0 f f pg_catalog +473 @ l 0 20 20 1230 0 0 f f pg_catalog +484 - l 0 20 20 462 0 0 f f pg_catalog +485 << b 604 604 16 341 0 0 f f pg_catalog +486 &< b 604 604 16 342 0 0 f f pg_catalog +487 &> b 604 604 16 343 0 0 f f pg_catalog +488 >> b 604 604 16 344 0 0 f f pg_catalog +489 <@ b 604 604 16 345 490 0 f f pg_catalog +490 @> b 604 604 16 340 489 0 f f pg_catalog +491 ~= b 604 604 16 339 491 0 f f pg_catalog +492 && b 604 604 16 346 492 0 f f pg_catalog +493 << b 603 603 16 188 0 0 f f pg_catalog +494 &< b 603 603 16 189 0 0 f f pg_catalog +495 &> b 603 603 16 190 0 0 f f pg_catalog +496 >> b 603 603 16 191 0 0 f f pg_catalog +497 <@ b 603 603 16 192 498 0 f f pg_catalog +498 @> b 603 603 16 187 497 0 f f pg_catalog +499 ~= b 603 603 16 186 499 0 f f pg_catalog +500 && b 603 603 16 125 500 0 f f pg_catalog +501 >= b 603 603 16 126 505 504 f f pg_catalog +502 > b 603 603 16 127 504 505 f f pg_catalog +503 = b 603 603 16 128 503 0 f f pg_catalog +504 < b 603 603 16 129 502 501 f f pg_catalog +505 <= b 603 603 16 130 501 502 f f pg_catalog +506 >^ b 600 600 16 131 0 0 f f pg_catalog +507 << b 600 600 16 132 0 0 f f pg_catalog +508 >> b 600 600 16 133 0 0 f f pg_catalog +509 <^ b 600 600 16 134 0 0 f f pg_catalog +510 ~= b 600 600 16 135 510 713 f f pg_catalog +511 <@ b 600 603 16 136 433 0 f f pg_catalog +512 <@ b 600 602 16 137 755 0 f f pg_catalog +513 @@ l 0 603 600 138 0 0 f f pg_catalog +514 * b 23 23 23 141 514 0 f f pg_catalog +517 <-> b 600 600 701 991 517 0 f f pg_catalog +518 <> b 23 23 16 144 518 96 f f pg_catalog +519 <> b 21 21 16 145 519 94 f f pg_catalog +520 > b 21 21 16 146 95 522 f f pg_catalog +521 > b 23 23 16 147 97 523 f f pg_catalog +522 <= b 21 21 16 148 524 520 f f pg_catalog +523 <= b 23 23 16 149 525 521 f f pg_catalog +524 >= b 21 21 16 151 522 95 f f pg_catalog +525 >= b 23 23 16 150 523 97 f f pg_catalog +526 * b 21 21 21 152 526 0 f f pg_catalog +527 / b 21 21 21 153 0 0 f f pg_catalog +528 / b 23 23 23 154 0 0 f f pg_catalog +529 % b 21 21 21 155 0 0 f f pg_catalog +530 % b 23 23 23 156 0 0 f f pg_catalog +531 <> b 25 25 16 157 531 98 f f pg_catalog +532 = b 21 23 16 158 533 538 t t pg_catalog +533 = b 23 21 16 159 532 539 t t pg_catalog +534 < b 21 23 16 160 537 542 f f pg_catalog +535 < b 23 21 16 161 536 543 f f pg_catalog +536 > b 21 23 16 162 535 540 f f pg_catalog +537 > b 23 21 16 163 534 541 f f pg_catalog +538 <> b 21 23 16 164 539 532 f f pg_catalog +539 <> b 23 21 16 165 538 533 f f pg_catalog +540 <= b 21 23 16 166 543 536 f f pg_catalog +541 <= b 23 21 16 167 542 537 f f pg_catalog +542 >= b 21 23 16 168 541 534 f f pg_catalog +543 >= b 23 21 16 169 540 535 f f pg_catalog +544 * b 21 23 23 170 545 0 f f pg_catalog +545 * b 23 21 23 171 544 0 f f pg_catalog +546 / b 21 23 23 172 0 0 f f pg_catalog +547 / b 23 21 23 173 0 0 f f pg_catalog +550 + b 21 21 21 176 550 0 f f pg_catalog +551 + b 23 23 23 177 551 0 f f pg_catalog +552 + b 21 23 23 178 553 0 f f pg_catalog +553 + b 23 21 23 179 552 0 f f pg_catalog +554 - b 21 21 21 180 0 0 f f pg_catalog +555 - b 23 23 23 181 0 0 f f pg_catalog +556 - b 21 23 23 182 0 0 f f pg_catalog +557 - b 23 21 23 183 0 0 f f pg_catalog +558 - l 0 23 23 212 0 0 f f pg_catalog +559 - l 0 21 21 213 0 0 f f pg_catalog +584 - l 0 700 700 206 0 0 f f pg_catalog +585 - l 0 701 701 220 0 0 f f pg_catalog +586 + b 700 700 700 204 586 0 f f pg_catalog +587 - b 700 700 700 205 0 0 f f pg_catalog +588 / b 700 700 700 203 0 0 f f pg_catalog +589 * b 700 700 700 202 589 0 f f pg_catalog +590 @ l 0 700 700 207 0 0 f f pg_catalog +591 + b 701 701 701 218 591 0 f f pg_catalog +592 - b 701 701 701 219 0 0 f f pg_catalog +593 / b 701 701 701 217 0 0 f f pg_catalog +594 * b 701 701 701 216 594 0 f f pg_catalog +595 @ l 0 701 701 221 0 0 f f pg_catalog +596 |/ l 0 701 701 230 0 0 f f pg_catalog +597 ||/ l 0 701 701 231 0 0 f f pg_catalog +606 <-> b 603 600 701 357 615 0 f f pg_catalog +607 = b 26 26 16 184 607 608 t t pg_catalog +608 <> b 26 26 16 185 608 607 f f pg_catalog +609 < b 26 26 16 716 610 612 f f pg_catalog +610 > b 26 26 16 1638 609 611 f f pg_catalog +611 <= b 26 26 16 717 612 610 f f pg_catalog +612 >= b 26 26 16 1639 611 609 f f pg_catalog +613 <-> b 600 628 701 725 760 0 f f pg_catalog +614 <-> b 600 601 701 363 761 0 f f pg_catalog +615 <-> b 600 603 701 364 606 0 f f pg_catalog +616 <-> b 601 628 701 727 762 0 f f pg_catalog +617 <-> b 601 603 701 365 763 0 f f pg_catalog +618 <-> b 600 602 701 371 784 0 f f pg_catalog +620 = b 700 700 16 287 620 621 t t pg_catalog +621 <> b 700 700 16 288 621 620 f f pg_catalog +622 < b 700 700 16 289 623 625 f f pg_catalog +623 > b 700 700 16 291 622 624 f f pg_catalog +624 <= b 700 700 16 290 625 623 f f pg_catalog +625 >= b 700 700 16 292 624 622 f f pg_catalog +630 <> b 18 18 16 70 630 92 f f pg_catalog +631 < b 18 18 16 1246 633 634 f f pg_catalog +632 <= b 18 18 16 72 634 633 f f pg_catalog +633 > b 18 18 16 73 631 632 f f pg_catalog +634 >= b 18 18 16 74 632 631 f f pg_catalog +639 ~ b 19 25 16 79 0 640 f f pg_catalog +640 !~ b 19 25 16 1252 0 639 f f pg_catalog +641 ~ b 25 25 16 1254 0 642 f f pg_catalog +642 !~ b 25 25 16 1256 0 641 f f pg_catalog +643 <> b 19 19 16 659 643 93 f f pg_catalog +644 <> b 30 30 16 619 644 649 f f pg_catalog +645 < b 30 30 16 677 646 648 f f pg_catalog +646 > b 30 30 16 681 645 647 f f pg_catalog +647 <= b 30 30 16 678 648 646 f f pg_catalog +648 >= b 30 30 16 680 647 645 f f pg_catalog +649 = b 30 30 16 679 649 644 t t pg_catalog +654 || b 25 25 25 1258 0 0 f f pg_catalog +660 < b 19 19 16 655 662 663 f f pg_catalog +661 <= b 19 19 16 656 663 662 f f pg_catalog +662 > b 19 19 16 657 660 661 f f pg_catalog +663 >= b 19 19 16 658 661 660 f f pg_catalog +664 < b 25 25 16 740 666 667 f f pg_catalog +665 <= b 25 25 16 741 667 666 f f pg_catalog +666 > b 25 25 16 742 664 665 f f pg_catalog +667 >= b 25 25 16 743 665 664 f f pg_catalog +670 = b 701 701 16 293 670 671 t t pg_catalog +671 <> b 701 701 16 294 671 670 f f pg_catalog +672 < b 701 701 16 295 674 675 f f pg_catalog +673 <= b 701 701 16 296 675 674 f f pg_catalog +674 > b 701 701 16 297 672 673 f f pg_catalog +675 >= b 701 701 16 298 673 672 f f pg_catalog +682 @ l 0 21 21 1253 0 0 f f pg_catalog +684 + b 20 20 20 463 684 0 f f pg_catalog +685 - b 20 20 20 464 0 0 f f pg_catalog +686 * b 20 20 20 465 686 0 f f pg_catalog +687 / b 20 20 20 466 0 0 f f pg_catalog +688 + b 20 23 20 1274 692 0 f f pg_catalog +689 - b 20 23 20 1275 0 0 f f pg_catalog +690 * b 20 23 20 1276 694 0 f f pg_catalog +691 / b 20 23 20 1277 0 0 f f pg_catalog +692 + b 23 20 20 1278 688 0 f f pg_catalog +693 - b 23 20 20 1279 0 0 f f pg_catalog +694 * b 23 20 20 1280 690 0 f f pg_catalog +695 / b 23 20 20 1281 0 0 f f pg_catalog +706 <-> b 603 603 701 978 706 0 f f pg_catalog +707 <-> b 602 602 701 370 707 0 f f pg_catalog +708 <-> b 628 628 701 239 708 0 f f pg_catalog +709 <-> b 601 601 701 361 709 0 f f pg_catalog +712 <-> b 604 604 701 729 712 0 f f pg_catalog +713 <> b 600 600 16 988 713 510 f f pg_catalog +731 + b 600 600 600 1441 731 0 f f pg_catalog +732 - b 600 600 600 1442 0 0 f f pg_catalog +733 * b 600 600 600 1443 733 0 f f pg_catalog +734 / b 600 600 600 1444 0 0 f f pg_catalog +735 + b 602 602 602 1435 735 0 f f pg_catalog +736 + b 602 600 602 1436 0 0 f f pg_catalog +737 - b 602 600 602 1437 0 0 f f pg_catalog +738 * b 602 600 602 1438 0 0 f f pg_catalog +739 / b 602 600 602 1439 0 0 f f pg_catalog +755 @> b 602 600 16 1426 512 0 f f pg_catalog +756 <@ b 600 604 16 1429 757 0 f f pg_catalog +757 @> b 604 600 16 1428 756 0 f f pg_catalog +758 <@ b 600 718 16 1478 759 0 f f pg_catalog +759 @> b 718 600 16 1477 758 0 f f pg_catalog +760 <-> b 628 600 701 702 613 0 f f pg_catalog +761 <-> b 601 600 701 380 614 0 f f pg_catalog +762 <-> b 628 601 701 704 616 0 f f pg_catalog +763 <-> b 603 601 701 381 617 0 f f pg_catalog +773 @ l 0 23 23 1251 0 0 f f pg_catalog +784 <-> b 602 600 701 421 618 0 f f pg_catalog +792 = b 602 602 16 984 792 0 f f pg_catalog +793 < b 602 602 16 982 794 0 f f pg_catalog +794 > b 602 602 16 983 793 0 f f pg_catalog +795 <= b 602 602 16 985 796 0 f f pg_catalog +796 >= b 602 602 16 986 795 0 f f pg_catalog +797 # l 0 602 23 1432 0 0 f f pg_catalog +798 ?# b 602 602 16 973 0 0 f f pg_catalog +799 @-@ l 0 602 701 987 0 0 f f pg_catalog +800 >^ b 603 603 16 115 0 0 f f pg_catalog +801 <^ b 603 603 16 116 0 0 f f pg_catalog +802 ?# b 603 603 16 125 0 0 f f pg_catalog +803 # b 603 603 603 980 0 0 f f pg_catalog +804 + b 603 600 603 1422 0 0 f f pg_catalog +805 - b 603 600 603 1423 0 0 f f pg_catalog +806 * b 603 600 603 1424 0 0 f f pg_catalog +807 / b 603 600 603 1425 0 0 f f pg_catalog +808 ?- b 600 600 16 990 808 0 f f pg_catalog +809 ?| b 600 600 16 989 809 0 f f pg_catalog +818 + b 20 21 20 837 822 0 f f pg_catalog +819 - b 20 21 20 838 0 0 f f pg_catalog +820 * b 20 21 20 839 824 0 f f pg_catalog +821 / b 20 21 20 840 0 0 f f pg_catalog +822 + b 21 20 20 841 818 0 f f pg_catalog +823 - b 21 20 20 942 0 0 f f pg_catalog +824 * b 21 20 20 943 820 0 f f pg_catalog +825 / b 21 20 20 948 0 0 f f pg_catalog +843 * b 790 700 790 846 845 0 f f pg_catalog +844 / b 790 700 790 847 0 0 f f pg_catalog +845 * b 700 790 790 848 843 0 f f pg_catalog +900 = b 790 790 16 888 900 901 t f pg_catalog +901 <> b 790 790 16 889 901 900 f f pg_catalog +902 < b 790 790 16 890 903 905 f f pg_catalog +903 > b 790 790 16 892 902 904 f f pg_catalog +904 <= b 790 790 16 891 905 903 f f pg_catalog +905 >= b 790 790 16 893 904 902 f f pg_catalog +906 + b 790 790 790 894 906 0 f f pg_catalog +907 - b 790 790 790 895 0 0 f f pg_catalog +908 * b 790 701 790 896 916 0 f f pg_catalog +909 / b 790 701 790 897 0 0 f f pg_catalog +912 * b 790 23 790 864 917 0 f f pg_catalog +913 / b 790 23 790 865 0 0 f f pg_catalog +914 * b 790 21 790 866 918 0 f f pg_catalog +915 / b 790 21 790 867 0 0 f f pg_catalog +916 * b 701 790 790 919 908 0 f f pg_catalog +917 * b 23 790 790 862 912 0 f f pg_catalog +918 * b 21 790 790 863 914 0 f f pg_catalog +931 << b 869 869 16 927 933 0 f f pg_catalog +932 <<= b 869 869 16 928 934 0 f f pg_catalog +933 >> b 869 869 16 929 931 0 f f pg_catalog +934 >>= b 869 869 16 930 932 0 f f pg_catalog +965 ^ b 701 701 701 232 0 0 f f pg_catalog +966 + b 1034 1033 1034 1035 0 0 f f pg_catalog +967 - b 1034 1033 1034 1036 0 0 f f pg_catalog +968 @> b 1034 1033 16 1037 0 0 f f pg_catalog +969 @@ l 0 601 600 225 0 0 f f pg_catalog +971 @@ l 0 604 600 227 0 0 f f pg_catalog +974 = b 1033 1033 16 1062 974 0 f t pg_catalog +1038 ^ b 1700 1700 1700 1739 0 0 f f pg_catalog +1054 = b 1042 1042 16 1048 1054 1057 t t pg_catalog +1055 ~ b 1042 25 16 1658 0 1056 f f pg_catalog +1056 !~ b 1042 25 16 1659 0 1055 f f pg_catalog +1057 <> b 1042 1042 16 1053 1057 1054 f f pg_catalog +1058 < b 1042 1042 16 1049 1060 1061 f f pg_catalog +1059 <= b 1042 1042 16 1050 1061 1060 f f pg_catalog +1060 > b 1042 1042 16 1051 1058 1059 f f pg_catalog +1061 >= b 1042 1042 16 1052 1059 1058 f f pg_catalog +1070 = b 2277 2277 16 744 1070 1071 t t pg_catalog +1071 <> b 2277 2277 16 390 1071 1070 f f pg_catalog +1072 < b 2277 2277 16 391 1073 1075 f f pg_catalog +1073 > b 2277 2277 16 392 1072 1074 f f pg_catalog +1074 <= b 2277 2277 16 393 1075 1073 f f pg_catalog +1075 >= b 2277 2277 16 396 1074 1072 f f pg_catalog +1076 + b 1082 1186 1114 2071 2551 0 f f pg_catalog +1077 - b 1082 1186 1114 2072 0 0 f f pg_catalog +1093 = b 1082 1082 16 1086 1093 1094 t t pg_catalog +1094 <> b 1082 1082 16 1091 1094 1093 f f pg_catalog +1095 < b 1082 1082 16 1087 1097 1098 f f pg_catalog +1096 <= b 1082 1082 16 1088 1098 1097 f f pg_catalog +1097 > b 1082 1082 16 1089 1095 1096 f f pg_catalog +1098 >= b 1082 1082 16 1090 1096 1095 f f pg_catalog +1099 - b 1082 1082 23 1140 0 0 f f pg_catalog +1100 + b 1082 23 1082 1141 2555 0 f f pg_catalog +1101 - b 1082 23 1082 1142 0 0 f f pg_catalog +1108 = b 1083 1083 16 1145 1108 1109 t t pg_catalog +1109 <> b 1083 1083 16 1106 1109 1108 f f pg_catalog +1110 < b 1083 1083 16 1102 1112 1113 f f pg_catalog +1111 <= b 1083 1083 16 1103 1113 1112 f f pg_catalog +1112 > b 1083 1083 16 1104 1110 1111 f f pg_catalog +1113 >= b 1083 1083 16 1105 1111 1110 f f pg_catalog +1116 + b 700 701 701 281 1126 0 f f pg_catalog +1117 - b 700 701 701 282 0 0 f f pg_catalog +1118 / b 700 701 701 280 0 0 f f pg_catalog +1119 * b 700 701 701 279 1129 0 f f pg_catalog +1120 = b 700 701 16 299 1130 1121 t t pg_catalog +1121 <> b 700 701 16 300 1131 1120 f f pg_catalog +1122 < b 700 701 16 301 1133 1125 f f pg_catalog +1123 > b 700 701 16 303 1132 1124 f f pg_catalog +1124 <= b 700 701 16 302 1135 1123 f f pg_catalog +1125 >= b 700 701 16 304 1134 1122 f f pg_catalog +1126 + b 701 700 701 285 1116 0 f f pg_catalog +1127 - b 701 700 701 286 0 0 f f pg_catalog +1128 / b 701 700 701 284 0 0 f f pg_catalog +1129 * b 701 700 701 283 1119 0 f f pg_catalog +1130 = b 701 700 16 305 1120 1131 t t pg_catalog +1131 <> b 701 700 16 306 1121 1130 f f pg_catalog +1132 < b 701 700 16 307 1123 1135 f f pg_catalog +1133 > b 701 700 16 309 1122 1134 f f pg_catalog +1134 <= b 701 700 16 308 1125 1133 f f pg_catalog +1135 >= b 701 700 16 310 1124 1132 f f pg_catalog +1201 = b 869 869 16 920 1201 1202 t t pg_catalog +1202 <> b 869 869 16 925 1202 1201 f f pg_catalog +1203 < b 869 869 16 921 1205 1206 f f pg_catalog +1204 <= b 869 869 16 922 1206 1205 f f pg_catalog +1205 > b 869 869 16 923 1203 1204 f f pg_catalog +1206 >= b 869 869 16 924 1204 1203 f f pg_catalog +1207 ~~ b 19 25 16 858 0 1208 f f pg_catalog +1208 !~~ b 19 25 16 859 0 1207 f f pg_catalog +1209 ~~ b 25 25 16 850 0 1210 f f pg_catalog +1210 !~~ b 25 25 16 851 0 1209 f f pg_catalog +1211 ~~ b 1042 25 16 1631 0 1212 f f pg_catalog +1212 !~~ b 1042 25 16 1632 0 1211 f f pg_catalog +1220 = b 829 829 16 830 1220 1221 t t pg_catalog +1221 <> b 829 829 16 835 1221 1220 f f pg_catalog +1222 < b 829 829 16 831 1224 1225 f f pg_catalog +1223 <= b 829 829 16 832 1225 1224 f f pg_catalog +1224 > b 829 829 16 833 1222 1223 f f pg_catalog +1225 >= b 829 829 16 834 1223 1222 f f pg_catalog +1226 ~* b 19 25 16 1240 0 1227 f f pg_catalog +1227 !~* b 19 25 16 1241 0 1226 f f pg_catalog +1228 ~* b 25 25 16 1238 0 1229 f f pg_catalog +1229 !~* b 25 25 16 1239 0 1228 f f pg_catalog +1234 ~* b 1042 25 16 1656 0 1235 f f pg_catalog +1235 !~* b 1042 25 16 1657 0 1234 f f pg_catalog +1320 = b 1184 1184 16 1152 1320 1321 t t pg_catalog +1321 <> b 1184 1184 16 1153 1321 1320 f f pg_catalog +1322 < b 1184 1184 16 1154 1324 1325 f f pg_catalog +1323 <= b 1184 1184 16 1155 1325 1324 f f pg_catalog +1324 > b 1184 1184 16 1157 1322 1323 f f pg_catalog +1325 >= b 1184 1184 16 1156 1323 1322 f f pg_catalog +1327 + b 1184 1186 1184 1189 2554 0 f f pg_catalog +1328 - b 1184 1184 1186 1188 0 0 f f pg_catalog +1329 - b 1184 1186 1184 1190 0 0 f f pg_catalog +1330 = b 1186 1186 16 1162 1330 1331 t t pg_catalog +1331 <> b 1186 1186 16 1163 1331 1330 f f pg_catalog +1332 < b 1186 1186 16 1164 1334 1335 f f pg_catalog +1333 <= b 1186 1186 16 1165 1335 1334 f f pg_catalog +1334 > b 1186 1186 16 1167 1332 1333 f f pg_catalog +1335 >= b 1186 1186 16 1166 1333 1332 f f pg_catalog +1336 - l 0 1186 1186 1168 0 0 f f pg_catalog +1337 + b 1186 1186 1186 1169 1337 0 f f pg_catalog +1338 - b 1186 1186 1186 1170 0 0 f f pg_catalog +1360 + b 1082 1083 1114 1272 1363 0 f f pg_catalog +1361 + b 1082 1266 1184 1297 1366 0 f f pg_catalog +1363 + b 1083 1082 1114 1296 1360 0 f f pg_catalog +1366 + b 1266 1082 1184 1298 1361 0 f f pg_catalog +1383 <-> b 604 718 701 785 1523 0 f f pg_catalog +1399 - b 1083 1083 1186 1690 0 0 f f pg_catalog +1420 @@ l 0 718 600 1472 0 0 f f pg_catalog +1500 = b 718 718 16 1462 1500 1501 f f pg_catalog +1501 <> b 718 718 16 1463 1501 1500 f f pg_catalog +1502 < b 718 718 16 1464 1503 1505 f f pg_catalog +1503 > b 718 718 16 1465 1502 1504 f f pg_catalog +1504 <= b 718 718 16 1466 1505 1503 f f pg_catalog +1505 >= b 718 718 16 1467 1504 1502 f f pg_catalog +1506 << b 718 718 16 1454 0 0 f f pg_catalog +1507 &< b 718 718 16 1455 0 0 f f pg_catalog +1508 &> b 718 718 16 1456 0 0 f f pg_catalog +1509 >> b 718 718 16 1457 0 0 f f pg_catalog +1510 <@ b 718 718 16 1458 1511 0 f f pg_catalog +1511 @> b 718 718 16 1453 1510 0 f f pg_catalog +1512 ~= b 718 718 16 1452 1512 0 f f pg_catalog +1513 && b 718 718 16 1459 1513 0 f f pg_catalog +1514 |>> b 718 718 16 1461 0 0 f f pg_catalog +1515 <<| b 718 718 16 1460 0 0 f f pg_catalog +1516 + b 718 600 718 1146 0 0 f f pg_catalog +1517 - b 718 600 718 1147 0 0 f f pg_catalog +1518 * b 718 600 718 1148 0 0 f f pg_catalog +1519 / b 718 600 718 1149 0 0 f f pg_catalog +1520 <-> b 718 718 701 1471 1520 0 f f pg_catalog +1521 # l 0 604 23 1445 0 0 f f pg_catalog +1522 <-> b 600 718 701 1476 3291 0 f f pg_catalog +1523 <-> b 718 604 701 728 1383 0 f f pg_catalog +1525 ?# b 601 601 16 994 1525 0 f f pg_catalog +1526 ?|| b 601 601 16 995 1526 0 f f pg_catalog +1527 ?-| b 601 601 16 996 1527 0 f f pg_catalog +1528 ?- l 0 601 16 998 0 0 f f pg_catalog +1529 ?| l 0 601 16 997 0 0 f f pg_catalog +1535 = b 601 601 16 999 1535 1586 f f pg_catalog +1536 # b 601 601 600 362 1536 0 f f pg_catalog +1537 ?# b 601 628 16 277 0 0 f f pg_catalog +1538 ?# b 601 603 16 373 0 0 f f pg_catalog +1539 ?# b 628 603 16 278 0 0 f f pg_catalog +1546 <@ b 600 628 16 959 0 0 f f pg_catalog +1547 <@ b 600 601 16 369 0 0 f f pg_catalog +1548 <@ b 601 628 16 960 0 0 f f pg_catalog +1549 <@ b 601 603 16 372 0 0 f f pg_catalog +1550 = b 1266 1266 16 1352 1550 1551 t t pg_catalog +1551 <> b 1266 1266 16 1353 1551 1550 f f pg_catalog +1552 < b 1266 1266 16 1354 1554 1555 f f pg_catalog +1553 <= b 1266 1266 16 1355 1555 1554 f f pg_catalog +1554 > b 1266 1266 16 1357 1552 1553 f f pg_catalog +1555 >= b 1266 1266 16 1356 1553 1552 f f pg_catalog +1557 ## b 600 628 600 961 0 0 f f pg_catalog +1558 ## b 600 601 600 366 0 0 f f pg_catalog +1559 ## b 600 603 600 367 0 0 f f pg_catalog +1567 ## b 601 603 600 368 0 0 f f pg_catalog +1577 ## b 628 601 600 1488 0 0 f f pg_catalog +1578 ## b 601 601 600 1489 0 0 f f pg_catalog +1583 * b 1186 701 1186 1618 1584 0 f f pg_catalog +1584 * b 701 1186 1186 1624 1583 0 f f pg_catalog +1585 / b 1186 701 1186 1326 0 0 f f pg_catalog +1586 <> b 601 601 16 1482 1586 1535 f f pg_catalog +1587 < b 601 601 16 1483 1589 1590 f f pg_catalog +1588 <= b 601 601 16 1484 1590 1589 f f pg_catalog +1589 > b 601 601 16 1485 1587 1588 f f pg_catalog +1590 >= b 601 601 16 1486 1588 1587 f f pg_catalog +1591 @-@ l 0 601 701 1487 0 0 f f pg_catalog +1611 ?# b 628 628 16 1495 1611 0 f f pg_catalog +1612 ?|| b 628 628 16 1496 1612 0 f f pg_catalog +1613 ?-| b 628 628 16 1497 1613 0 f f pg_catalog +1614 ?- l 0 628 16 1499 0 0 f f pg_catalog +1615 ?| l 0 628 16 1498 0 0 f f pg_catalog +1616 = b 628 628 16 1492 1616 0 f f pg_catalog +1617 # b 628 628 600 1494 1617 0 f f pg_catalog +1625 ~~* b 19 25 16 1635 0 1626 f f pg_catalog +1626 !~~* b 19 25 16 1636 0 1625 f f pg_catalog +1627 ~~* b 25 25 16 1633 0 1628 f f pg_catalog +1628 !~~* b 25 25 16 1634 0 1627 f f pg_catalog +1629 ~~* b 1042 25 16 1660 0 1630 f f pg_catalog +1630 !~~* b 1042 25 16 1661 0 1629 f f pg_catalog +1694 <= b 16 16 16 1691 1695 59 f f pg_catalog +1695 >= b 16 16 16 1692 1694 58 f f pg_catalog +1751 - l 0 1700 1700 1771 0 0 f f pg_catalog +1752 = b 1700 1700 16 1718 1752 1753 t t pg_catalog +1753 <> b 1700 1700 16 1719 1753 1752 f f pg_catalog +1754 < b 1700 1700 16 1722 1756 1757 f f pg_catalog +1755 <= b 1700 1700 16 1723 1757 1756 f f pg_catalog +1756 > b 1700 1700 16 1720 1754 1755 f f pg_catalog +1757 >= b 1700 1700 16 1721 1755 1754 f f pg_catalog +1758 + b 1700 1700 1700 1724 1758 0 f f pg_catalog +1759 - b 1700 1700 1700 1725 0 0 f f pg_catalog +1760 * b 1700 1700 1700 1726 1760 0 f f pg_catalog +1761 / b 1700 1700 1700 1727 0 0 f f pg_catalog +1762 % b 1700 1700 1700 1729 0 0 f f pg_catalog +1763 @ l 0 1700 1700 1704 0 0 f f pg_catalog +1784 = b 1560 1560 16 1581 1784 1785 t f pg_catalog +1785 <> b 1560 1560 16 1582 1785 1784 f f pg_catalog +1786 < b 1560 1560 16 1595 1787 1789 f f pg_catalog +1787 > b 1560 1560 16 1593 1786 1788 f f pg_catalog +1788 <= b 1560 1560 16 1594 1789 1787 f f pg_catalog +1789 >= b 1560 1560 16 1592 1788 1786 f f pg_catalog +1791 & b 1560 1560 1560 1673 1791 0 f f pg_catalog +1792 | b 1560 1560 1560 1674 1792 0 f f pg_catalog +1793 # b 1560 1560 1560 1675 1793 0 f f pg_catalog +1794 ~ l 0 1560 1560 1676 0 0 f f pg_catalog +1795 << b 1560 23 1560 1677 0 0 f f pg_catalog +1796 >> b 1560 23 1560 1678 0 0 f f pg_catalog +1797 || b 1562 1562 1562 1679 0 0 f f pg_catalog +1800 + b 1083 1186 1083 1747 1849 0 f f pg_catalog +1801 - b 1083 1186 1083 1748 0 0 f f pg_catalog +1802 + b 1266 1186 1266 1749 2552 0 f f pg_catalog +1803 - b 1266 1186 1266 1750 0 0 f f pg_catalog +1804 = b 1562 1562 16 1666 1804 1805 t f pg_catalog +1805 <> b 1562 1562 16 1667 1805 1804 f f pg_catalog +1806 < b 1562 1562 16 1671 1807 1809 f f pg_catalog +1807 > b 1562 1562 16 1669 1806 1808 f f pg_catalog +1808 <= b 1562 1562 16 1670 1809 1807 f f pg_catalog +1809 >= b 1562 1562 16 1668 1808 1806 f f pg_catalog +1849 + b 1186 1083 1083 1848 1800 0 f f pg_catalog +1862 = b 21 20 16 1850 1868 1863 t t pg_catalog +1863 <> b 21 20 16 1851 1869 1862 f f pg_catalog +1864 < b 21 20 16 1852 1871 1867 f f pg_catalog +1865 > b 21 20 16 1853 1870 1866 f f pg_catalog +1866 <= b 21 20 16 1854 1873 1865 f f pg_catalog +1867 >= b 21 20 16 1855 1872 1864 f f pg_catalog +1868 = b 20 21 16 1856 1862 1869 t t pg_catalog +1869 <> b 20 21 16 1857 1863 1868 f f pg_catalog +1870 < b 20 21 16 1858 1865 1873 f f pg_catalog +1871 > b 20 21 16 1859 1864 1872 f f pg_catalog +1872 <= b 20 21 16 1860 1867 1871 f f pg_catalog +1873 >= b 20 21 16 1861 1866 1870 f f pg_catalog +1874 & b 21 21 21 1892 1874 0 f f pg_catalog +1875 | b 21 21 21 1893 1875 0 f f pg_catalog +1876 # b 21 21 21 1894 1876 0 f f pg_catalog +1877 ~ l 0 21 21 1895 0 0 f f pg_catalog +1878 << b 21 23 21 1896 0 0 f f pg_catalog +1879 >> b 21 23 21 1897 0 0 f f pg_catalog +1880 & b 23 23 23 1898 1880 0 f f pg_catalog +1881 | b 23 23 23 1899 1881 0 f f pg_catalog +1882 # b 23 23 23 1900 1882 0 f f pg_catalog +1883 ~ l 0 23 23 1901 0 0 f f pg_catalog +1884 << b 23 23 23 1902 0 0 f f pg_catalog +1885 >> b 23 23 23 1903 0 0 f f pg_catalog +1886 & b 20 20 20 1904 1886 0 f f pg_catalog +1887 | b 20 20 20 1905 1887 0 f f pg_catalog +1888 # b 20 20 20 1906 1888 0 f f pg_catalog +1889 ~ l 0 20 20 1907 0 0 f f pg_catalog +1890 << b 20 23 20 1908 0 0 f f pg_catalog +1891 >> b 20 23 20 1909 0 0 f f pg_catalog +1916 + l 0 20 20 1910 0 0 f f pg_catalog +1917 + l 0 21 21 1911 0 0 f f pg_catalog +1918 + l 0 23 23 1912 0 0 f f pg_catalog +1919 + l 0 700 700 1913 0 0 f f pg_catalog +1920 + l 0 701 701 1914 0 0 f f pg_catalog +1921 + l 0 1700 1700 1915 0 0 f f pg_catalog +1955 = b 17 17 16 1948 1955 1956 t t pg_catalog +1956 <> b 17 17 16 1953 1956 1955 f f pg_catalog +1957 < b 17 17 16 1949 1959 1960 f f pg_catalog +1958 <= b 17 17 16 1950 1960 1959 f f pg_catalog +1959 > b 17 17 16 1951 1957 1958 f f pg_catalog +1960 >= b 17 17 16 1952 1958 1957 f f pg_catalog +2016 ~~ b 17 17 16 2005 0 2017 f f pg_catalog +2017 !~~ b 17 17 16 2006 0 2016 f f pg_catalog +2018 || b 17 17 17 2011 0 0 f f pg_catalog +2060 = b 1114 1114 16 2052 2060 2061 t t pg_catalog +2061 <> b 1114 1114 16 2053 2061 2060 f f pg_catalog +2062 < b 1114 1114 16 2054 2064 2065 f f pg_catalog +2063 <= b 1114 1114 16 2055 2065 2064 f f pg_catalog +2064 > b 1114 1114 16 2057 2062 2063 f f pg_catalog +2065 >= b 1114 1114 16 2056 2063 2062 f f pg_catalog +2066 + b 1114 1186 1114 2032 2553 0 f f pg_catalog +2067 - b 1114 1114 1186 2031 0 0 f f pg_catalog +2068 - b 1114 1186 1114 2033 0 0 f f pg_catalog +2314 ~<~ b 25 25 16 2160 2318 2317 f f pg_catalog +2315 ~<=~ b 25 25 16 2161 2317 2318 f f pg_catalog +2317 ~>=~ b 25 25 16 2163 2315 2314 f f pg_catalog +2318 ~>~ b 25 25 16 2164 2314 2315 f f pg_catalog +2326 ~<~ b 1042 1042 16 2174 2330 2329 f f pg_catalog +2327 ~<=~ b 1042 1042 16 2175 2329 2330 f f pg_catalog +2329 ~>=~ b 1042 1042 16 2177 2327 2326 f f pg_catalog +2330 ~>~ b 1042 1042 16 2178 2326 2327 f f pg_catalog +2345 < b 1082 1114 16 2338 2375 2348 f f pg_catalog +2346 <= b 1082 1114 16 2339 2374 2349 f f pg_catalog +2347 = b 1082 1114 16 2340 2373 2350 t f pg_catalog +2348 >= b 1082 1114 16 2342 2372 2345 f f pg_catalog +2349 > b 1082 1114 16 2341 2371 2346 f f pg_catalog +2350 <> b 1082 1114 16 2343 2376 2347 f f pg_catalog +2358 < b 1082 1184 16 2351 2388 2361 f f pg_catalog +2359 <= b 1082 1184 16 2352 2387 2362 f f pg_catalog +2360 = b 1082 1184 16 2353 2386 2363 t f pg_catalog +2361 >= b 1082 1184 16 2355 2385 2358 f f pg_catalog +2362 > b 1082 1184 16 2354 2384 2359 f f pg_catalog +2363 <> b 1082 1184 16 2356 2389 2360 f f pg_catalog +2371 < b 1114 1082 16 2364 2349 2374 f f pg_catalog +2372 <= b 1114 1082 16 2365 2348 2375 f f pg_catalog +2373 = b 1114 1082 16 2366 2347 2376 t f pg_catalog +2374 >= b 1114 1082 16 2368 2346 2371 f f pg_catalog +2375 > b 1114 1082 16 2367 2345 2372 f f pg_catalog +2376 <> b 1114 1082 16 2369 2350 2373 f f pg_catalog +2384 < b 1184 1082 16 2377 2362 2387 f f pg_catalog +2385 <= b 1184 1082 16 2378 2361 2388 f f pg_catalog +2386 = b 1184 1082 16 2379 2360 2389 t f pg_catalog +2387 >= b 1184 1082 16 2381 2359 2384 f f pg_catalog +2388 > b 1184 1082 16 2380 2358 2385 f f pg_catalog +2389 <> b 1184 1082 16 2382 2363 2386 f f pg_catalog +2534 < b 1114 1184 16 2520 2544 2537 f f pg_catalog +2535 <= b 1114 1184 16 2521 2543 2538 f f pg_catalog +2536 = b 1114 1184 16 2522 2542 2539 t f pg_catalog +2537 >= b 1114 1184 16 2524 2541 2534 f f pg_catalog +2538 > b 1114 1184 16 2523 2540 2535 f f pg_catalog +2539 <> b 1114 1184 16 2525 2545 2536 f f pg_catalog +2540 < b 1184 1114 16 2527 2538 2543 f f pg_catalog +2541 <= b 1184 1114 16 2528 2537 2544 f f pg_catalog +2542 = b 1184 1114 16 2529 2536 2545 t f pg_catalog +2543 >= b 1184 1114 16 2531 2535 2540 f f pg_catalog +2544 > b 1184 1114 16 2530 2534 2541 f f pg_catalog +2545 <> b 1184 1114 16 2532 2539 2542 f f pg_catalog +2551 + b 1186 1082 1114 2546 1076 0 f f pg_catalog +2552 + b 1186 1266 1266 2547 1802 0 f f pg_catalog +2553 + b 1186 1114 1114 2548 2066 0 f f pg_catalog +2554 + b 1186 1184 1184 2549 1327 0 f f pg_catalog +2555 + b 23 1082 1082 2550 1100 0 f f pg_catalog +2570 <<| b 603 603 16 2562 0 0 f f pg_catalog +2571 &<| b 603 603 16 2563 0 0 f f pg_catalog +2572 |&> b 603 603 16 2564 0 0 f f pg_catalog +2573 |>> b 603 603 16 2565 0 0 f f pg_catalog +2574 <<| b 604 604 16 2566 0 0 f f pg_catalog +2575 &<| b 604 604 16 2567 0 0 f f pg_catalog +2576 |&> b 604 604 16 2568 0 0 f f pg_catalog +2577 |>> b 604 604 16 2569 0 0 f f pg_catalog +2589 &<| b 718 718 16 2587 0 0 f f pg_catalog +2590 |&> b 718 718 16 2588 0 0 f f pg_catalog +2634 ~ l 0 869 869 2627 0 0 f f pg_catalog +2635 & b 869 869 869 2628 0 0 f f pg_catalog +2636 | b 869 869 869 2629 0 0 f f pg_catalog +2637 + b 869 20 869 2630 2638 0 f f pg_catalog +2638 + b 20 869 869 2631 2637 0 f f pg_catalog +2639 - b 869 20 869 2632 0 0 f f pg_catalog +2640 - b 869 869 20 2633 0 0 f f pg_catalog +2750 && b 2277 2277 16 2747 2750 0 f f pg_catalog +2751 @> b 2277 2277 16 2748 2752 0 f f pg_catalog +2752 <@ b 2277 2277 16 2749 2751 0 f f pg_catalog +2779 || b 25 2776 25 2003 0 0 f f pg_catalog +2780 || b 2776 25 25 2004 0 0 f f pg_catalog +2799 < b 27 27 16 2791 2800 2802 f f pg_catalog +2800 > b 27 27 16 2790 2799 2801 f f pg_catalog +2801 <= b 27 27 16 2793 2802 2800 f f pg_catalog +2802 >= b 27 27 16 2792 2801 2799 f f pg_catalog +2860 = b 4537 4537 16 4244 2860 2861 t t pg_catalog +2861 <> b 4537 4537 16 4245 2861 2860 f f pg_catalog +2862 < b 4537 4537 16 4274 2865 2864 f f pg_catalog +2863 <= b 4537 4537 16 4275 2864 2865 f f pg_catalog +2864 >= b 4537 4537 16 4276 2863 2862 f f pg_catalog +2865 > b 4537 4537 16 4277 2862 2863 f f pg_catalog +2866 && b 3831 4537 16 4246 2867 0 f f pg_catalog +2867 && b 4537 3831 16 4247 2866 0 f f pg_catalog +2868 && b 4537 4537 16 4248 2868 0 f f pg_catalog +2869 @> b 4537 2283 16 4249 2872 0 f f pg_catalog +2870 @> b 4537 3831 16 4250 2873 0 f f pg_catalog +2871 @> b 4537 4537 16 4251 2874 0 f f pg_catalog +2872 <@ b 2283 4537 16 4252 2869 0 f f pg_catalog +2873 <@ b 3831 4537 16 4253 2870 0 f f pg_catalog +2874 <@ b 4537 4537 16 4254 2871 0 f f pg_catalog +2875 &< b 3831 4537 16 4264 0 0 f f pg_catalog +2876 &< b 4537 3831 16 4265 0 0 f f pg_catalog +2877 &< b 4537 4537 16 4266 0 0 f f pg_catalog +2972 = b 2950 2950 16 2956 2972 2973 t t pg_catalog +2973 <> b 2950 2950 16 2959 2973 2972 f f pg_catalog +2974 < b 2950 2950 16 2954 2975 2977 f f pg_catalog +2975 > b 2950 2950 16 2958 2974 2976 f f pg_catalog +2976 <= b 2950 2950 16 2955 2977 2975 f f pg_catalog +2977 >= b 2950 2950 16 2957 2976 2974 f f pg_catalog +2988 = b 2249 2249 16 2981 2988 2989 t t pg_catalog +2989 <> b 2249 2249 16 2982 2989 2988 f f pg_catalog +2990 < b 2249 2249 16 2983 2991 2993 f f pg_catalog +2991 > b 2249 2249 16 2984 2990 2992 f f pg_catalog +2992 <= b 2249 2249 16 2985 2993 2991 f f pg_catalog +2993 >= b 2249 2249 16 2986 2992 2990 f f pg_catalog +3147 ~ l 0 829 829 3144 0 0 f f pg_catalog +3148 & b 829 829 829 3145 0 0 f f pg_catalog +3149 | b 829 829 829 3146 0 0 f f pg_catalog +3188 *= b 2249 2249 16 3181 3188 3189 t f pg_catalog +3189 *<> b 2249 2249 16 3182 3189 3188 f f pg_catalog +3190 *< b 2249 2249 16 3183 3191 3193 f f pg_catalog +3191 *> b 2249 2249 16 3184 3190 3192 f f pg_catalog +3192 *<= b 2249 2249 16 3185 3193 3191 f f pg_catalog +3193 *>= b 2249 2249 16 3186 3192 3190 f f pg_catalog +3206 #>> b 3802 1009 25 3940 0 0 f f pg_catalog +3211 -> b 3802 25 3802 3478 0 0 f f pg_catalog +3212 -> b 3802 23 3802 3215 0 0 f f pg_catalog +3213 #> b 3802 1009 3802 3217 0 0 f f pg_catalog +3222 = b 3220 3220 16 3233 3222 3223 t t pg_catalog +3223 <> b 3220 3220 16 3236 3223 3222 f f pg_catalog +3224 < b 3220 3220 16 3231 3225 3227 f f pg_catalog +3225 > b 3220 3220 16 3235 3224 3226 f f pg_catalog +3226 <= b 3220 3220 16 3232 3227 3225 f f pg_catalog +3227 >= b 3220 3220 16 3234 3226 3224 f f pg_catalog +3228 - b 3220 3220 1700 3237 0 0 f f pg_catalog +3240 = b 3802 3802 16 4043 3240 3241 t t pg_catalog +3241 <> b 3802 3802 16 4038 3241 3240 f f pg_catalog +3242 < b 3802 3802 16 4039 3243 3245 f f pg_catalog +3243 > b 3802 3802 16 4040 3242 3244 f f pg_catalog +3244 <= b 3802 3802 16 4041 3245 3243 f f pg_catalog +3245 >= b 3802 3802 16 4042 3244 3242 f f pg_catalog +3246 @> b 3802 3802 16 4046 3250 0 f f pg_catalog +3247 ? b 3802 25 16 4047 0 0 f f pg_catalog +3248 ?| b 3802 1009 16 4048 0 0 f f pg_catalog +3249 ?& b 3802 1009 16 4049 0 0 f f pg_catalog +3250 <@ b 3802 3802 16 4050 3246 0 f f pg_catalog +3276 <-> b 600 604 701 3275 3289 0 f f pg_catalog +3284 || b 3802 3802 3802 3301 0 0 f f pg_catalog +3285 - b 3802 25 3802 3302 0 0 f f pg_catalog +3286 - b 3802 23 3802 3303 0 0 f f pg_catalog +3287 #- b 3802 1009 3802 3304 0 0 f f pg_catalog +3289 <-> b 604 600 701 3292 3276 0 f f pg_catalog +3291 <-> b 718 600 701 3290 1522 0 f f pg_catalog +3315 <> b 28 28 16 3308 3315 352 f f pg_catalog +3316 <> b 28 23 16 3309 0 353 f f pg_catalog +3346 * b 790 20 790 3344 3349 0 f f pg_catalog +3347 / b 790 20 790 3345 0 0 f f pg_catalog +3349 * b 20 790 790 3399 3346 0 f f pg_catalog +3362 = b 774 774 16 4113 3362 3363 t t pg_catalog +3363 <> b 774 774 16 4118 3363 3362 f f pg_catalog +3364 < b 774 774 16 4114 3366 3367 f f pg_catalog +3365 <= b 774 774 16 4115 3367 3366 f f pg_catalog +3366 > b 774 774 16 4116 3364 3365 f f pg_catalog +3367 >= b 774 774 16 4117 3365 3364 f f pg_catalog +3368 ~ l 0 774 774 4120 0 0 f f pg_catalog +3369 & b 774 774 774 4121 0 0 f f pg_catalog +3370 | b 774 774 774 4122 0 0 f f pg_catalog +3398 - b 3802 1009 3802 3343 0 0 f f pg_catalog +3477 ->> b 3802 25 25 3214 0 0 f f pg_catalog +3481 ->> b 3802 23 25 3216 0 0 f f pg_catalog +3516 = b 3500 3500 16 3508 3516 3517 t t pg_catalog +3517 <> b 3500 3500 16 3509 3517 3516 f f pg_catalog +3518 < b 3500 3500 16 3510 3519 3521 f f pg_catalog +3519 > b 3500 3500 16 3511 3518 3520 f f pg_catalog +3520 <= b 3500 3500 16 3512 3521 3519 f f pg_catalog +3521 >= b 3500 3500 16 3513 3520 3518 f f pg_catalog +3552 && b 869 869 16 3551 3552 0 f f pg_catalog +3585 &> b 3831 4537 16 4267 0 0 f f pg_catalog +3627 < b 3614 3614 16 3616 3632 3631 f f pg_catalog +3628 <= b 3614 3614 16 3617 3631 3632 f f pg_catalog +3629 = b 3614 3614 16 3618 3629 3630 t f pg_catalog +3630 <> b 3614 3614 16 3619 3630 3629 f f pg_catalog +3631 >= b 3614 3614 16 3620 3628 3627 f f pg_catalog +3632 > b 3614 3614 16 3621 3627 3628 f f pg_catalog +3633 || b 3614 3614 3614 3625 0 0 f f pg_catalog +3636 @@ b 3614 3615 16 3634 3637 0 f f pg_catalog +3637 @@ b 3615 3614 16 3635 3636 0 f f pg_catalog +3660 @@@ b 3614 3615 16 3634 3661 0 f f pg_catalog +3661 @@@ b 3615 3614 16 3635 3660 0 f f pg_catalog +3674 < b 3615 3615 16 3662 3679 3678 f f pg_catalog +3675 <= b 3615 3615 16 3663 3678 3679 f f pg_catalog +3676 = b 3615 3615 16 3664 3676 3677 t f pg_catalog +3677 <> b 3615 3615 16 3665 3677 3676 f f pg_catalog +3678 >= b 3615 3615 16 3666 3675 3674 f f pg_catalog +3679 > b 3615 3615 16 3667 3674 3675 f f pg_catalog +3680 && b 3615 3615 3615 3669 0 0 f f pg_catalog +3681 || b 3615 3615 3615 3670 0 0 f f pg_catalog +3682 !! l 0 3615 3615 3671 0 0 f f pg_catalog +3693 @> b 3615 3615 16 3691 3694 0 f f pg_catalog +3694 <@ b 3615 3615 16 3692 3693 0 f f pg_catalog +3762 @@ b 25 25 16 3760 0 0 f f pg_catalog +3763 @@ b 25 3615 16 3761 0 0 f f pg_catalog +3825 / b 790 790 701 3822 0 0 f f pg_catalog +3877 ^@ b 25 25 16 3696 0 0 f f pg_catalog +3882 = b 3831 3831 16 3855 3882 3883 t t pg_catalog +3883 <> b 3831 3831 16 3856 3883 3882 f f pg_catalog +3884 < b 3831 3831 16 3871 3887 3886 f f pg_catalog +3885 <= b 3831 3831 16 3872 3886 3887 f f pg_catalog +3886 >= b 3831 3831 16 3873 3885 3884 f f pg_catalog +3887 > b 3831 3831 16 3874 3884 3885 f f pg_catalog +3888 && b 3831 3831 16 3857 3888 0 f f pg_catalog +3889 @> b 3831 2283 16 3858 3891 0 f f pg_catalog +3890 @> b 3831 3831 16 3859 3892 0 f f pg_catalog +3891 <@ b 2283 3831 16 3860 3889 0 f f pg_catalog +3892 <@ b 3831 3831 16 3861 3890 0 f f pg_catalog +3893 << b 3831 3831 16 3863 3894 0 f f pg_catalog +3894 >> b 3831 3831 16 3864 3893 0 f f pg_catalog +3895 &< b 3831 3831 16 3865 0 0 f f pg_catalog +3896 &> b 3831 3831 16 3866 0 0 f f pg_catalog +3897 -|- b 3831 3831 16 3862 3897 0 f f pg_catalog +3898 + b 3831 3831 3831 3867 3898 0 f f pg_catalog +3899 - b 3831 3831 3831 3869 0 0 f f pg_catalog +3900 * b 3831 3831 3831 3868 3900 0 f f pg_catalog +3962 -> b 114 25 114 3947 0 0 f f pg_catalog +3963 ->> b 114 25 25 3948 0 0 f f pg_catalog +3964 -> b 114 23 114 3949 0 0 f f pg_catalog +3965 ->> b 114 23 25 3950 0 0 f f pg_catalog +3966 #> b 114 1009 114 3951 0 0 f f pg_catalog +3967 #>> b 114 1009 25 3953 0 0 f f pg_catalog +4012 @? b 3802 4072 16 4010 0 0 f f pg_catalog +4013 @@ b 3802 4072 16 4011 0 0 f f pg_catalog +4035 &> b 4537 3831 16 4268 0 0 f f pg_catalog +4142 &> b 4537 4537 16 4269 0 0 f f pg_catalog +4161 |>> b 600 600 16 131 0 0 f f pg_catalog +4162 <<| b 600 600 16 134 0 0 f f pg_catalog +4179 -|- b 3831 4537 16 4255 4180 0 f f pg_catalog +4180 -|- b 4537 3831 16 4257 4179 0 f f pg_catalog +4198 -|- b 4537 4537 16 4256 4198 0 f f pg_catalog +4392 + b 4537 4537 4537 4270 4392 0 f f pg_catalog +4393 - b 4537 4537 4537 4271 0 0 f f pg_catalog +4394 * b 4537 4537 4537 4272 4394 0 f f pg_catalog +4395 << b 3831 4537 16 4258 4399 0 f f pg_catalog +4396 << b 4537 3831 16 4259 4398 0 f f pg_catalog +4397 << b 4537 4537 16 4260 4400 0 f f pg_catalog +4398 >> b 3831 4537 16 4261 4396 0 f f pg_catalog +4399 >> b 4537 3831 16 4262 4395 0 f f pg_catalog +4400 >> b 4537 4537 16 4263 4397 0 f f pg_catalog +4539 @> b 3831 4537 16 4541 4540 0 f f pg_catalog +4540 <@ b 4537 3831 16 4542 4539 0 f f pg_catalog +5005 <-> b 3615 3615 3615 5003 0 0 f f pg_catalog +5025 + b 3220 1700 3220 5022 5026 0 f f pg_catalog +5026 + b 1700 3220 3220 5023 5025 0 f f pg_catalog +5027 - b 3220 1700 3220 5024 0 0 f f pg_catalog +5068 = b 5069 5069 16 5084 5068 5072 t t pg_catalog +5072 <> b 5069 5069 16 5085 5072 5068 f f pg_catalog +5073 < b 5069 5069 16 5034 5074 5076 f f pg_catalog +5074 > b 5069 5069 16 5035 5073 5075 f f pg_catalog +5075 <= b 5069 5069 16 5036 5076 5074 f f pg_catalog +5076 >= b 5069 5069 16 5037 5075 5073 f f pg_catalog diff --git a/internal/catalog/data/18/pg_proc.tsv b/internal/catalog/data/18/pg_proc.tsv new file mode 100644 index 0000000..03710fd --- /dev/null +++ b/internal/catalog/data/18/pg_proc.tsv @@ -0,0 +1,3402 @@ +3 heap_tableam_handler f 269 f 0 1 0 t v 2281 pg_catalog +31 byteaout f 2275 f 0 1 0 t i 17 pg_catalog +33 charout f 2275 f 0 1 0 t i 18 pg_catalog +34 namein f 19 f 0 1 0 t i 2275 pg_catalog +35 nameout f 2275 f 0 1 0 t i 19 pg_catalog +38 int2in f 21 f 0 1 0 t i 2275 pg_catalog +39 int2out f 2275 f 0 1 0 t i 21 pg_catalog +40 int2vectorin f 22 f 0 1 0 t i 2275 pg_catalog +41 int2vectorout f 2275 f 0 1 0 t i 22 pg_catalog +42 int4in f 23 f 0 1 0 t i 2275 pg_catalog +43 int4out f 2275 f 0 1 0 t i 23 pg_catalog +44 regprocin f 24 f 0 1 0 t s 2275 pg_catalog +45 regprocout f 2275 f 0 1 0 t s 24 pg_catalog +46 textin f 25 f 0 1 0 t i 2275 pg_catalog +47 textout f 2275 f 0 1 0 t i 25 pg_catalog +48 tidin f 27 f 0 1 0 t i 2275 pg_catalog +49 tidout f 2275 f 0 1 0 t i 27 pg_catalog +50 xidin f 28 f 0 1 0 t i 2275 pg_catalog +51 xidout f 2275 f 0 1 0 t i 28 pg_catalog +52 cidin f 29 f 0 1 0 t i 2275 pg_catalog +53 cidout f 2275 f 0 1 0 t i 29 pg_catalog +54 oidvectorin f 30 f 0 1 0 t i 2275 pg_catalog +55 oidvectorout f 2275 f 0 1 0 t i 30 pg_catalog +56 boollt f 16 f 0 2 0 t i 16 16 pg_catalog +57 boolgt f 16 f 0 2 0 t i 16 16 pg_catalog +60 booleq f 16 f 0 2 0 t i 16 16 pg_catalog +61 chareq f 16 f 0 2 0 t i 18 18 pg_catalog +62 nameeq f 16 f 0 2 0 t i 19 19 pg_catalog +63 int2eq f 16 f 0 2 0 t i 21 21 pg_catalog +64 int2lt f 16 f 0 2 0 t i 21 21 pg_catalog +65 int4eq f 16 f 0 2 0 t i 23 23 pg_catalog +66 int4lt f 16 f 0 2 0 t i 23 23 pg_catalog +67 texteq f 16 f 0 2 0 t i 25 25 pg_catalog +68 xideq f 16 f 0 2 0 t i 28 28 pg_catalog +69 cideq f 16 f 0 2 0 t i 29 29 pg_catalog +70 charne f 16 f 0 2 0 t i 18 18 pg_catalog +72 charle f 16 f 0 2 0 t i 18 18 pg_catalog +73 chargt f 16 f 0 2 0 t i 18 18 pg_catalog +74 charge f 16 f 0 2 0 t i 18 18 pg_catalog +77 int4 f 23 f 0 1 0 t i 18 pg_catalog +78 char f 18 f 0 1 0 t i 23 pg_catalog +79 nameregexeq f 16 f 0 2 0 t i 19 25 pg_catalog +84 boolne f 16 f 0 2 0 t i 16 16 pg_catalog +86 pg_ddl_command_in f 32 f 0 1 0 t i 2275 pg_catalog +87 pg_ddl_command_out f 2275 f 0 1 0 t i 32 pg_catalog +88 pg_ddl_command_recv f 32 f 0 1 0 t i 2281 pg_catalog +89 version f 25 f 0 0 0 t s pg_catalog +90 pg_ddl_command_send f 17 f 0 1 0 t i 32 pg_catalog +101 eqsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +102 neqsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +103 scalarltsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +104 scalargtsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +105 eqjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +106 neqjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +107 scalarltjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +108 scalargtjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +109 unknownin f 705 f 0 1 0 t i 2275 pg_catalog +110 unknownout f 2275 f 0 1 0 t i 705 pg_catalog +115 box_above_eq f 16 f 0 2 0 t i 603 603 pg_catalog +116 box_below_eq f 16 f 0 2 0 t i 603 603 pg_catalog +117 point_in f 600 f 0 1 0 t i 2275 pg_catalog +118 point_out f 2275 f 0 1 0 t i 600 pg_catalog +119 lseg_in f 601 f 0 1 0 t i 2275 pg_catalog +120 lseg_out f 2275 f 0 1 0 t i 601 pg_catalog +121 path_in f 602 f 0 1 0 t i 2275 pg_catalog +122 path_out f 2275 f 0 1 0 t i 602 pg_catalog +123 box_in f 603 f 0 1 0 t i 2275 pg_catalog +124 box_out f 2275 f 0 1 0 t i 603 pg_catalog +125 box_overlap f 16 f 0 2 0 t i 603 603 pg_catalog +126 box_ge f 16 f 0 2 0 t i 603 603 pg_catalog +127 box_gt f 16 f 0 2 0 t i 603 603 pg_catalog +128 box_eq f 16 f 0 2 0 t i 603 603 pg_catalog +129 box_lt f 16 f 0 2 0 t i 603 603 pg_catalog +130 box_le f 16 f 0 2 0 t i 603 603 pg_catalog +131 point_above f 16 f 0 2 0 t i 600 600 pg_catalog +132 point_left f 16 f 0 2 0 t i 600 600 pg_catalog +133 point_right f 16 f 0 2 0 t i 600 600 pg_catalog +134 point_below f 16 f 0 2 0 t i 600 600 pg_catalog +135 point_eq f 16 f 0 2 0 t i 600 600 pg_catalog +136 on_pb f 16 f 0 2 0 t i 600 603 pg_catalog +137 on_ppath f 16 f 0 2 0 t i 600 602 pg_catalog +138 box_center f 600 f 0 1 0 t i 603 pg_catalog +139 areasel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +140 areajoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +141 int4mul f 23 f 0 2 0 t i 23 23 pg_catalog +144 int4ne f 16 f 0 2 0 t i 23 23 pg_catalog +145 int2ne f 16 f 0 2 0 t i 21 21 pg_catalog +146 int2gt f 16 f 0 2 0 t i 21 21 pg_catalog +147 int4gt f 16 f 0 2 0 t i 23 23 pg_catalog +148 int2le f 16 f 0 2 0 t i 21 21 pg_catalog +149 int4le f 16 f 0 2 0 t i 23 23 pg_catalog +150 int4ge f 16 f 0 2 0 t i 23 23 pg_catalog +151 int2ge f 16 f 0 2 0 t i 21 21 pg_catalog +152 int2mul f 21 f 0 2 0 t i 21 21 pg_catalog +153 int2div f 21 f 0 2 0 t i 21 21 pg_catalog +154 int4div f 23 f 0 2 0 t i 23 23 pg_catalog +155 int2mod f 21 f 0 2 0 t i 21 21 pg_catalog +156 int4mod f 23 f 0 2 0 t i 23 23 pg_catalog +157 textne f 16 f 0 2 0 t i 25 25 pg_catalog +158 int24eq f 16 f 0 2 0 t i 21 23 pg_catalog +159 int42eq f 16 f 0 2 0 t i 23 21 pg_catalog +160 int24lt f 16 f 0 2 0 t i 21 23 pg_catalog +161 int42lt f 16 f 0 2 0 t i 23 21 pg_catalog +162 int24gt f 16 f 0 2 0 t i 21 23 pg_catalog +163 int42gt f 16 f 0 2 0 t i 23 21 pg_catalog +164 int24ne f 16 f 0 2 0 t i 21 23 pg_catalog +165 int42ne f 16 f 0 2 0 t i 23 21 pg_catalog +166 int24le f 16 f 0 2 0 t i 21 23 pg_catalog +167 int42le f 16 f 0 2 0 t i 23 21 pg_catalog +168 int24ge f 16 f 0 2 0 t i 21 23 pg_catalog +169 int42ge f 16 f 0 2 0 t i 23 21 pg_catalog +170 int24mul f 23 f 0 2 0 t i 21 23 pg_catalog +171 int42mul f 23 f 0 2 0 t i 23 21 pg_catalog +172 int24div f 23 f 0 2 0 t i 21 23 pg_catalog +173 int42div f 23 f 0 2 0 t i 23 21 pg_catalog +176 int2pl f 21 f 0 2 0 t i 21 21 pg_catalog +177 int4pl f 23 f 0 2 0 t i 23 23 pg_catalog +178 int24pl f 23 f 0 2 0 t i 21 23 pg_catalog +179 int42pl f 23 f 0 2 0 t i 23 21 pg_catalog +180 int2mi f 21 f 0 2 0 t i 21 21 pg_catalog +181 int4mi f 23 f 0 2 0 t i 23 23 pg_catalog +182 int24mi f 23 f 0 2 0 t i 21 23 pg_catalog +183 int42mi f 23 f 0 2 0 t i 23 21 pg_catalog +184 oideq f 16 f 0 2 0 t i 26 26 pg_catalog +185 oidne f 16 f 0 2 0 t i 26 26 pg_catalog +186 box_same f 16 f 0 2 0 t i 603 603 pg_catalog +187 box_contain f 16 f 0 2 0 t i 603 603 pg_catalog +188 box_left f 16 f 0 2 0 t i 603 603 pg_catalog +189 box_overleft f 16 f 0 2 0 t i 603 603 pg_catalog +190 box_overright f 16 f 0 2 0 t i 603 603 pg_catalog +191 box_right f 16 f 0 2 0 t i 603 603 pg_catalog +192 box_contained f 16 f 0 2 0 t i 603 603 pg_catalog +193 box_contain_pt f 16 f 0 2 0 t i 603 600 pg_catalog +195 pg_node_tree_in f 194 f 0 1 0 t i 2275 pg_catalog +196 pg_node_tree_out f 2275 f 0 1 0 t i 194 pg_catalog +197 pg_node_tree_recv f 194 f 0 1 0 t s 2281 pg_catalog +198 pg_node_tree_send f 17 f 0 1 0 t s 194 pg_catalog +200 float4in f 700 f 0 1 0 t i 2275 pg_catalog +201 float4out f 2275 f 0 1 0 t i 700 pg_catalog +202 float4mul f 700 f 0 2 0 t i 700 700 pg_catalog +203 float4div f 700 f 0 2 0 t i 700 700 pg_catalog +204 float4pl f 700 f 0 2 0 t i 700 700 pg_catalog +205 float4mi f 700 f 0 2 0 t i 700 700 pg_catalog +206 float4um f 700 f 0 1 0 t i 700 pg_catalog +207 float4abs f 700 f 0 1 0 t i 700 pg_catalog +208 float4_accum f 1022 f 0 2 0 t i 1022 700 pg_catalog +209 float4larger f 700 f 0 2 0 t i 700 700 pg_catalog +211 float4smaller f 700 f 0 2 0 t i 700 700 pg_catalog +212 int4um f 23 f 0 1 0 t i 23 pg_catalog +213 int2um f 21 f 0 1 0 t i 21 pg_catalog +214 float8in f 701 f 0 1 0 t i 2275 pg_catalog +215 float8out f 2275 f 0 1 0 t i 701 pg_catalog +216 float8mul f 701 f 0 2 0 t i 701 701 pg_catalog +217 float8div f 701 f 0 2 0 t i 701 701 pg_catalog +218 float8pl f 701 f 0 2 0 t i 701 701 pg_catalog +219 float8mi f 701 f 0 2 0 t i 701 701 pg_catalog +220 float8um f 701 f 0 1 0 t i 701 pg_catalog +221 float8abs f 701 f 0 1 0 t i 701 pg_catalog +222 float8_accum f 1022 f 0 2 0 t i 1022 701 pg_catalog +223 float8larger f 701 f 0 2 0 t i 701 701 pg_catalog +224 float8smaller f 701 f 0 2 0 t i 701 701 pg_catalog +225 lseg_center f 600 f 0 1 0 t i 601 pg_catalog +227 poly_center f 600 f 0 1 0 t i 604 pg_catalog +228 dround f 701 f 0 1 0 t i 701 pg_catalog +229 dtrunc f 701 f 0 1 0 t i 701 pg_catalog +230 dsqrt f 701 f 0 1 0 t i 701 pg_catalog +231 dcbrt f 701 f 0 1 0 t i 701 pg_catalog +232 dpow f 701 f 0 2 0 t i 701 701 pg_catalog +233 dexp f 701 f 0 1 0 t i 701 pg_catalog +234 dlog1 f 701 f 0 1 0 t i 701 pg_catalog +235 float8 f 701 f 0 1 0 t i 21 pg_catalog +236 float4 f 700 f 0 1 0 t i 21 pg_catalog +237 int2 f 21 f 0 1 0 t i 701 pg_catalog +238 int2 f 21 f 0 1 0 t i 700 pg_catalog +239 line_distance f 701 f 0 2 0 t i 628 628 pg_catalog +240 nameeqtext f 16 f 0 2 0 t i 19 25 pg_catalog +241 namelttext f 16 f 0 2 0 t i 19 25 pg_catalog +242 nameletext f 16 f 0 2 0 t i 19 25 pg_catalog +243 namegetext f 16 f 0 2 0 t i 19 25 pg_catalog +244 namegttext f 16 f 0 2 0 t i 19 25 pg_catalog +245 namenetext f 16 f 0 2 0 t i 19 25 pg_catalog +246 btnametextcmp f 23 f 0 2 0 t i 19 25 pg_catalog +247 texteqname f 16 f 0 2 0 t i 25 19 pg_catalog +248 textltname f 16 f 0 2 0 t i 25 19 pg_catalog +249 textlename f 16 f 0 2 0 t i 25 19 pg_catalog +250 textgename f 16 f 0 2 0 t i 25 19 pg_catalog +251 textgtname f 16 f 0 2 0 t i 25 19 pg_catalog +252 textnename f 16 f 0 2 0 t i 25 19 pg_catalog +253 bttextnamecmp f 23 f 0 2 0 t i 25 19 pg_catalog +266 nameconcatoid f 19 f 0 2 0 t i 19 26 pg_catalog +267 table_am_handler_in f 269 f 0 1 0 f i 2275 pg_catalog +268 table_am_handler_out f 2275 f 0 1 0 t i 269 pg_catalog +274 timeofday f 25 f 0 0 0 t v pg_catalog +275 pg_nextoid f 26 f 0 3 0 t v 2205 19 2205 pg_catalog +276 float8_combine f 1022 f 0 2 0 t i 1022 1022 pg_catalog +277 inter_sl f 16 f 0 2 0 t i 601 628 pg_catalog +278 inter_lb f 16 f 0 2 0 t i 628 603 pg_catalog +279 float48mul f 701 f 0 2 0 t i 700 701 pg_catalog +280 float48div f 701 f 0 2 0 t i 700 701 pg_catalog +281 float48pl f 701 f 0 2 0 t i 700 701 pg_catalog +282 float48mi f 701 f 0 2 0 t i 700 701 pg_catalog +283 float84mul f 701 f 0 2 0 t i 701 700 pg_catalog +284 float84div f 701 f 0 2 0 t i 701 700 pg_catalog +285 float84pl f 701 f 0 2 0 t i 701 700 pg_catalog +286 float84mi f 701 f 0 2 0 t i 701 700 pg_catalog +287 float4eq f 16 f 0 2 0 t i 700 700 pg_catalog +288 float4ne f 16 f 0 2 0 t i 700 700 pg_catalog +289 float4lt f 16 f 0 2 0 t i 700 700 pg_catalog +290 float4le f 16 f 0 2 0 t i 700 700 pg_catalog +291 float4gt f 16 f 0 2 0 t i 700 700 pg_catalog +292 float4ge f 16 f 0 2 0 t i 700 700 pg_catalog +293 float8eq f 16 f 0 2 0 t i 701 701 pg_catalog +294 float8ne f 16 f 0 2 0 t i 701 701 pg_catalog +295 float8lt f 16 f 0 2 0 t i 701 701 pg_catalog +296 float8le f 16 f 0 2 0 t i 701 701 pg_catalog +297 float8gt f 16 f 0 2 0 t i 701 701 pg_catalog +298 float8ge f 16 f 0 2 0 t i 701 701 pg_catalog +299 float48eq f 16 f 0 2 0 t i 700 701 pg_catalog +300 float48ne f 16 f 0 2 0 t i 700 701 pg_catalog +301 float48lt f 16 f 0 2 0 t i 700 701 pg_catalog +302 float48le f 16 f 0 2 0 t i 700 701 pg_catalog +303 float48gt f 16 f 0 2 0 t i 700 701 pg_catalog +304 float48ge f 16 f 0 2 0 t i 700 701 pg_catalog +305 float84eq f 16 f 0 2 0 t i 701 700 pg_catalog +306 float84ne f 16 f 0 2 0 t i 701 700 pg_catalog +307 float84lt f 16 f 0 2 0 t i 701 700 pg_catalog +308 float84le f 16 f 0 2 0 t i 701 700 pg_catalog +309 float84gt f 16 f 0 2 0 t i 701 700 pg_catalog +310 float84ge f 16 f 0 2 0 t i 701 700 pg_catalog +311 float8 f 701 f 0 1 0 t i 700 pg_catalog +312 float4 f 700 f 0 1 0 t i 701 pg_catalog +313 int4 f 23 f 0 1 0 t i 21 pg_catalog +314 int2 f 21 f 0 1 0 t i 23 pg_catalog +315 pg_jit_available f 16 f 0 0 0 t v pg_catalog +316 float8 f 701 f 0 1 0 t i 23 pg_catalog +317 int4 f 23 f 0 1 0 t i 701 pg_catalog +318 float4 f 700 f 0 1 0 t i 23 pg_catalog +319 int4 f 23 f 0 1 0 t i 700 pg_catalog +320 width_bucket f 23 f 0 4 0 t i 701 701 701 23 pg_catalog +321 json_in f 114 f 0 1 0 t i 2275 pg_catalog +322 json_out f 2275 f 0 1 0 t i 114 pg_catalog +323 json_recv f 114 f 0 1 0 t i 2281 pg_catalog +324 json_send f 17 f 0 1 0 t i 114 pg_catalog +326 index_am_handler_in f 325 f 0 1 0 f i 2275 pg_catalog +327 index_am_handler_out f 2275 f 0 1 0 t i 325 pg_catalog +328 hashmacaddr8 f 23 f 0 1 0 t i 774 pg_catalog +329 hash_aclitem f 23 f 0 1 0 t i 1033 pg_catalog +330 bthandler f 325 f 0 1 0 t v 2281 pg_catalog +331 hashhandler f 325 f 0 1 0 t v 2281 pg_catalog +332 gisthandler f 325 f 0 1 0 t v 2281 pg_catalog +333 ginhandler f 325 f 0 1 0 t v 2281 pg_catalog +334 spghandler f 325 f 0 1 0 t v 2281 pg_catalog +335 brinhandler f 325 f 0 1 0 t v 2281 pg_catalog +336 scalarlesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +337 scalargesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +338 amvalidate f 16 f 0 1 0 t v 26 pg_catalog +339 poly_same f 16 f 0 2 0 t i 604 604 pg_catalog +340 poly_contain f 16 f 0 2 0 t i 604 604 pg_catalog +341 poly_left f 16 f 0 2 0 t i 604 604 pg_catalog +342 poly_overleft f 16 f 0 2 0 t i 604 604 pg_catalog +343 poly_overright f 16 f 0 2 0 t i 604 604 pg_catalog +344 poly_right f 16 f 0 2 0 t i 604 604 pg_catalog +345 poly_contained f 16 f 0 2 0 t i 604 604 pg_catalog +346 poly_overlap f 16 f 0 2 0 t i 604 604 pg_catalog +347 poly_in f 604 f 0 1 0 t i 2275 pg_catalog +348 poly_out f 2275 f 0 1 0 t i 604 pg_catalog +350 btint2cmp f 23 f 0 2 0 t i 21 21 pg_catalog +351 btint4cmp f 23 f 0 2 0 t i 23 23 pg_catalog +354 btfloat4cmp f 23 f 0 2 0 t i 700 700 pg_catalog +355 btfloat8cmp f 23 f 0 2 0 t i 701 701 pg_catalog +356 btoidcmp f 23 f 0 2 0 t i 26 26 pg_catalog +357 dist_bp f 701 f 0 2 0 t i 603 600 pg_catalog +358 btcharcmp f 23 f 0 2 0 t i 18 18 pg_catalog +359 btnamecmp f 23 f 0 2 0 t i 19 19 pg_catalog +360 bttextcmp f 23 f 0 2 0 t i 25 25 pg_catalog +361 lseg_distance f 701 f 0 2 0 t i 601 601 pg_catalog +362 lseg_interpt f 600 f 0 2 0 t i 601 601 pg_catalog +363 dist_ps f 701 f 0 2 0 t i 600 601 pg_catalog +364 dist_pb f 701 f 0 2 0 t i 600 603 pg_catalog +365 dist_sb f 701 f 0 2 0 t i 601 603 pg_catalog +366 close_ps f 600 f 0 2 0 t i 600 601 pg_catalog +367 close_pb f 600 f 0 2 0 t i 600 603 pg_catalog +368 close_sb f 600 f 0 2 0 t i 601 603 pg_catalog +369 on_ps f 16 f 0 2 0 t i 600 601 pg_catalog +370 path_distance f 701 f 0 2 0 t i 602 602 pg_catalog +371 dist_ppath f 701 f 0 2 0 t i 600 602 pg_catalog +372 on_sb f 16 f 0 2 0 t i 601 603 pg_catalog +373 inter_sb f 16 f 0 2 0 t i 601 603 pg_catalog +376 string_to_array f 1009 f 0 3 0 f i 25 25 25 pg_catalog +377 cash_cmp f 23 f 0 2 0 t i 790 790 pg_catalog +378 array_append f 5078 f 0 2 0 f i 5078 5077 pg_catalog +379 array_prepend f 5078 f 0 2 0 f i 5077 5078 pg_catalog +380 dist_sp f 701 f 0 2 0 t i 601 600 pg_catalog +381 dist_bs f 701 f 0 2 0 t i 603 601 pg_catalog +382 btarraycmp f 23 f 0 2 0 t i 2277 2277 pg_catalog +383 array_cat f 5078 f 0 2 0 f i 5078 5078 pg_catalog +384 array_to_string f 25 f 0 3 0 f s 2277 25 25 pg_catalog +386 scalarlejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +390 array_ne f 16 f 0 2 0 t i 2277 2277 pg_catalog +391 array_lt f 16 f 0 2 0 t i 2277 2277 pg_catalog +392 array_gt f 16 f 0 2 0 t i 2277 2277 pg_catalog +393 array_le f 16 f 0 2 0 t i 2277 2277 pg_catalog +394 string_to_array f 1009 f 0 2 0 f i 25 25 pg_catalog +395 array_to_string f 25 f 0 2 0 t s 2277 25 pg_catalog +396 array_ge f 16 f 0 2 0 t i 2277 2277 pg_catalog +398 scalargejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +399 hashmacaddr f 23 f 0 1 0 t i 829 pg_catalog +400 hashtext f 23 f 0 1 0 t i 25 pg_catalog +401 text f 25 f 0 1 0 t i 1042 pg_catalog +404 btoidvectorcmp f 23 f 0 2 0 t i 30 30 pg_catalog +406 text f 25 f 0 1 0 t i 19 pg_catalog +407 name f 19 f 0 1 0 t i 25 pg_catalog +408 bpchar f 1042 f 0 1 0 t i 19 pg_catalog +409 name f 19 f 0 1 0 t i 1042 pg_catalog +421 dist_pathp f 701 f 0 2 0 t i 602 600 pg_catalog +422 hashinet f 23 f 0 1 0 t i 869 pg_catalog +425 hashint4extended f 20 f 0 2 0 t i 23 20 pg_catalog +432 hash_numeric f 23 f 0 1 0 t i 1700 pg_catalog +436 macaddr_in f 829 f 0 1 0 t i 2275 pg_catalog +437 macaddr_out f 2275 f 0 1 0 t i 829 pg_catalog +438 num_nulls f 23 f 2276 1 0 f i 2276 2276 v pg_catalog +440 num_nonnulls f 23 f 2276 1 0 f i 2276 2276 v pg_catalog +441 hashint2extended f 20 f 0 2 0 t i 21 20 pg_catalog +442 hashint8extended f 20 f 0 2 0 t i 20 20 pg_catalog +443 hashfloat4extended f 20 f 0 2 0 t i 700 20 pg_catalog +444 hashfloat8extended f 20 f 0 2 0 t i 701 20 pg_catalog +445 hashoidextended f 20 f 0 2 0 t i 26 20 pg_catalog +446 hashcharextended f 20 f 0 2 0 t i 18 20 pg_catalog +447 hashnameextended f 20 f 0 2 0 t i 19 20 pg_catalog +448 hashtextextended f 20 f 0 2 0 t i 25 20 pg_catalog +449 hashint2 f 23 f 0 1 0 t i 21 pg_catalog +450 hashint4 f 23 f 0 1 0 t i 23 pg_catalog +451 hashfloat4 f 23 f 0 1 0 t i 700 pg_catalog +452 hashfloat8 f 23 f 0 1 0 t i 701 pg_catalog +453 hashoid f 23 f 0 1 0 t i 26 pg_catalog +454 hashchar f 23 f 0 1 0 t i 18 pg_catalog +455 hashname f 23 f 0 1 0 t i 19 pg_catalog +456 hashvarlena f 23 f 0 1 0 t i 2281 pg_catalog +457 hashoidvector f 23 f 0 1 0 t i 30 pg_catalog +458 text_larger f 25 f 0 2 0 t i 25 25 pg_catalog +459 text_smaller f 25 f 0 2 0 t i 25 25 pg_catalog +460 int8in f 20 f 0 1 0 t i 2275 pg_catalog +461 int8out f 2275 f 0 1 0 t i 20 pg_catalog +462 int8um f 20 f 0 1 0 t i 20 pg_catalog +463 int8pl f 20 f 0 2 0 t i 20 20 pg_catalog +464 int8mi f 20 f 0 2 0 t i 20 20 pg_catalog +465 int8mul f 20 f 0 2 0 t i 20 20 pg_catalog +466 int8div f 20 f 0 2 0 t i 20 20 pg_catalog +467 int8eq f 16 f 0 2 0 t i 20 20 pg_catalog +468 int8ne f 16 f 0 2 0 t i 20 20 pg_catalog +469 int8lt f 16 f 0 2 0 t i 20 20 pg_catalog +470 int8gt f 16 f 0 2 0 t i 20 20 pg_catalog +471 int8le f 16 f 0 2 0 t i 20 20 pg_catalog +472 int8ge f 16 f 0 2 0 t i 20 20 pg_catalog +474 int84eq f 16 f 0 2 0 t i 20 23 pg_catalog +475 int84ne f 16 f 0 2 0 t i 20 23 pg_catalog +476 int84lt f 16 f 0 2 0 t i 20 23 pg_catalog +477 int84gt f 16 f 0 2 0 t i 20 23 pg_catalog +478 int84le f 16 f 0 2 0 t i 20 23 pg_catalog +479 int84ge f 16 f 0 2 0 t i 20 23 pg_catalog +480 int4 f 23 f 0 1 0 t i 20 pg_catalog +481 int8 f 20 f 0 1 0 t i 23 pg_catalog +482 float8 f 701 f 0 1 0 t i 20 pg_catalog +483 int8 f 20 f 0 1 0 t i 701 pg_catalog +515 array_larger f 2277 f 0 2 0 t i 2277 2277 pg_catalog +516 array_smaller f 2277 f 0 2 0 t i 2277 2277 pg_catalog +598 abbrev f 25 f 0 1 0 t i 869 pg_catalog +599 abbrev f 25 f 0 1 0 t i 650 pg_catalog +605 set_masklen f 869 f 0 2 0 t i 869 23 pg_catalog +619 oidvectorne f 16 f 0 2 0 t i 30 30 pg_catalog +626 hash_array f 23 f 0 1 0 t i 2277 pg_catalog +635 set_masklen f 650 f 0 2 0 t i 650 23 pg_catalog +636 pg_indexam_has_property f 16 f 0 2 0 t s 26 25 pg_catalog +637 pg_index_has_property f 16 f 0 2 0 t s 2205 25 pg_catalog +638 pg_index_column_has_property f 16 f 0 3 0 t s 2205 23 25 pg_catalog +652 float4 f 700 f 0 1 0 t i 20 pg_catalog +653 int8 f 20 f 0 1 0 t i 700 pg_catalog +655 namelt f 16 f 0 2 0 t i 19 19 pg_catalog +656 namele f 16 f 0 2 0 t i 19 19 pg_catalog +657 namegt f 16 f 0 2 0 t i 19 19 pg_catalog +658 namege f 16 f 0 2 0 t i 19 19 pg_catalog +659 namene f 16 f 0 2 0 t i 19 19 pg_catalog +668 bpchar f 1042 f 0 3 0 t i 1042 23 16 pg_catalog +669 varchar f 1043 f 0 3 0 t i 1043 23 16 pg_catalog +676 pg_indexam_progress_phasename f 25 f 0 2 0 t i 26 20 pg_catalog +677 oidvectorlt f 16 f 0 2 0 t i 30 30 pg_catalog +678 oidvectorle f 16 f 0 2 0 t i 30 30 pg_catalog +679 oidvectoreq f 16 f 0 2 0 t i 30 30 pg_catalog +680 oidvectorge f 16 f 0 2 0 t i 30 30 pg_catalog +681 oidvectorgt f 16 f 0 2 0 t i 30 30 pg_catalog +683 network f 650 f 0 1 0 t i 869 pg_catalog +696 netmask f 869 f 0 1 0 t i 869 pg_catalog +697 masklen f 23 f 0 1 0 t i 869 pg_catalog +698 broadcast f 869 f 0 1 0 t i 869 pg_catalog +699 host f 25 f 0 1 0 t i 869 pg_catalog +702 dist_lp f 701 f 0 2 0 t i 628 600 pg_catalog +704 dist_ls f 701 f 0 2 0 t i 628 601 pg_catalog +710 getpgusername f 19 f 0 0 0 t s pg_catalog +711 family f 23 f 0 1 0 t i 869 pg_catalog +714 int2 f 21 f 0 1 0 t i 20 pg_catalog +715 lo_create f 26 f 0 1 0 t v 26 pg_catalog +716 oidlt f 16 f 0 2 0 t i 26 26 pg_catalog +717 oidle f 16 f 0 2 0 t i 26 26 pg_catalog +720 octet_length f 23 f 0 1 0 t i 17 pg_catalog +721 get_byte f 23 f 0 2 0 t i 17 23 pg_catalog +722 set_byte f 17 f 0 3 0 t i 17 23 23 pg_catalog +723 get_bit f 23 f 0 2 0 t i 17 20 pg_catalog +724 set_bit f 17 f 0 3 0 t i 17 20 23 pg_catalog +725 dist_pl f 701 f 0 2 0 t i 600 628 pg_catalog +727 dist_sl f 701 f 0 2 0 t i 601 628 pg_catalog +728 dist_cpoly f 701 f 0 2 0 t i 718 604 pg_catalog +729 poly_distance f 701 f 0 2 0 t i 604 604 pg_catalog +730 text f 25 f 0 1 0 t i 869 pg_catalog +740 text_lt f 16 f 0 2 0 t i 25 25 pg_catalog +741 text_le f 16 f 0 2 0 t i 25 25 pg_catalog +742 text_gt f 16 f 0 2 0 t i 25 25 pg_catalog +743 text_ge f 16 f 0 2 0 t i 25 25 pg_catalog +744 array_eq f 16 f 0 2 0 t i 2277 2277 pg_catalog +745 current_user f 19 f 0 0 0 t s pg_catalog +746 session_user f 19 f 0 0 0 t s pg_catalog +747 array_dims f 25 f 0 1 0 t i 2277 pg_catalog +748 array_ndims f 23 f 0 1 0 t i 2277 pg_catalog +749 overlay f 17 f 0 4 0 t i 17 17 23 23 pg_catalog +750 array_in f 2277 f 0 3 0 t s 2275 26 23 pg_catalog +751 array_out f 2275 f 0 1 0 t s 2277 pg_catalog +752 overlay f 17 f 0 3 0 t i 17 17 23 pg_catalog +753 trunc f 829 f 0 1 0 t i 829 pg_catalog +754 int8 f 20 f 0 1 0 t i 21 pg_catalog +764 lo_import f 26 f 0 1 0 t v 25 pg_catalog +765 lo_export f 23 f 0 2 0 t v 26 25 pg_catalog +766 int4inc f 23 f 0 1 0 t i 23 pg_catalog +767 lo_import f 26 f 0 2 0 t v 25 26 pg_catalog +768 int4larger f 23 f 0 2 0 t i 23 23 pg_catalog +769 int4smaller f 23 f 0 2 0 t i 23 23 pg_catalog +770 int2larger f 21 f 0 2 0 t i 21 21 pg_catalog +771 int2smaller f 21 f 0 2 0 t i 21 21 pg_catalog +772 hashvarlenaextended f 20 f 0 2 0 t i 2281 20 pg_catalog +776 hashoidvectorextended f 20 f 0 2 0 t i 30 20 pg_catalog +777 hash_aclitem_extended f 20 f 0 2 0 t i 1033 20 pg_catalog +778 hashmacaddrextended f 20 f 0 2 0 t i 829 20 pg_catalog +779 hashinetextended f 20 f 0 2 0 t i 869 20 pg_catalog +780 hash_numeric_extended f 20 f 0 2 0 t i 1700 20 pg_catalog +781 hashmacaddr8extended f 20 f 0 2 0 t i 774 20 pg_catalog +782 hash_array_extended f 20 f 0 2 0 t i 2277 20 pg_catalog +785 dist_polyc f 701 f 0 2 0 t i 604 718 pg_catalog +810 pg_client_encoding f 19 f 0 0 0 t s pg_catalog +817 current_query f 25 f 0 0 0 f v pg_catalog +830 macaddr_eq f 16 f 0 2 0 t i 829 829 pg_catalog +831 macaddr_lt f 16 f 0 2 0 t i 829 829 pg_catalog +832 macaddr_le f 16 f 0 2 0 t i 829 829 pg_catalog +833 macaddr_gt f 16 f 0 2 0 t i 829 829 pg_catalog +834 macaddr_ge f 16 f 0 2 0 t i 829 829 pg_catalog +835 macaddr_ne f 16 f 0 2 0 t i 829 829 pg_catalog +836 macaddr_cmp f 23 f 0 2 0 t i 829 829 pg_catalog +837 int82pl f 20 f 0 2 0 t i 20 21 pg_catalog +838 int82mi f 20 f 0 2 0 t i 20 21 pg_catalog +839 int82mul f 20 f 0 2 0 t i 20 21 pg_catalog +840 int82div f 20 f 0 2 0 t i 20 21 pg_catalog +841 int28pl f 20 f 0 2 0 t i 21 20 pg_catalog +842 btint8cmp f 23 f 0 2 0 t i 20 20 pg_catalog +846 cash_mul_flt4 f 790 f 0 2 0 t i 790 700 pg_catalog +847 cash_div_flt4 f 790 f 0 2 0 t i 790 700 pg_catalog +848 flt4_mul_cash f 790 f 0 2 0 t i 700 790 pg_catalog +849 position f 23 f 0 2 0 t i 25 25 pg_catalog +850 textlike f 16 f 0 2 0 t i 25 25 pg_catalog +851 textnlike f 16 f 0 2 0 t i 25 25 pg_catalog +852 int48eq f 16 f 0 2 0 t i 23 20 pg_catalog +853 int48ne f 16 f 0 2 0 t i 23 20 pg_catalog +854 int48lt f 16 f 0 2 0 t i 23 20 pg_catalog +855 int48gt f 16 f 0 2 0 t i 23 20 pg_catalog +856 int48le f 16 f 0 2 0 t i 23 20 pg_catalog +857 int48ge f 16 f 0 2 0 t i 23 20 pg_catalog +858 namelike f 16 f 0 2 0 t i 19 25 pg_catalog +859 namenlike f 16 f 0 2 0 t i 19 25 pg_catalog +860 bpchar f 1042 f 0 1 0 t i 18 pg_catalog +861 current_database f 19 f 0 0 0 t s pg_catalog +862 int4_mul_cash f 790 f 0 2 0 t i 23 790 pg_catalog +863 int2_mul_cash f 790 f 0 2 0 t i 21 790 pg_catalog +864 cash_mul_int4 f 790 f 0 2 0 t i 790 23 pg_catalog +865 cash_div_int4 f 790 f 0 2 0 t i 790 23 pg_catalog +866 cash_mul_int2 f 790 f 0 2 0 t i 790 21 pg_catalog +867 cash_div_int2 f 790 f 0 2 0 t i 790 21 pg_catalog +868 strpos f 23 f 0 2 0 t i 25 25 pg_catalog +870 lower f 25 f 0 1 0 t i 25 pg_catalog +871 upper f 25 f 0 1 0 t i 25 pg_catalog +872 initcap f 25 f 0 1 0 t i 25 pg_catalog +873 lpad f 25 f 0 3 0 t i 25 23 25 pg_catalog +874 rpad f 25 f 0 3 0 t i 25 23 25 pg_catalog +875 ltrim f 25 f 0 2 0 t i 25 25 pg_catalog +876 rtrim f 25 f 0 2 0 t i 25 25 pg_catalog +877 substr f 25 f 0 3 0 t i 25 23 23 pg_catalog +878 translate f 25 f 0 3 0 t i 25 25 25 pg_catalog +879 lpad f 25 f 0 2 0 t i 25 23 pg_catalog +880 rpad f 25 f 0 2 0 t i 25 23 pg_catalog +881 ltrim f 25 f 0 1 0 t i 25 pg_catalog +882 rtrim f 25 f 0 1 0 t i 25 pg_catalog +883 substr f 25 f 0 2 0 t i 25 23 pg_catalog +884 btrim f 25 f 0 2 0 t i 25 25 pg_catalog +885 btrim f 25 f 0 1 0 t i 25 pg_catalog +886 cash_in f 790 f 0 1 0 t s 2275 pg_catalog +887 cash_out f 2275 f 0 1 0 t s 790 pg_catalog +888 cash_eq f 16 f 0 2 0 t i 790 790 pg_catalog +889 cash_ne f 16 f 0 2 0 t i 790 790 pg_catalog +890 cash_lt f 16 f 0 2 0 t i 790 790 pg_catalog +891 cash_le f 16 f 0 2 0 t i 790 790 pg_catalog +892 cash_gt f 16 f 0 2 0 t i 790 790 pg_catalog +893 cash_ge f 16 f 0 2 0 t i 790 790 pg_catalog +894 cash_pl f 790 f 0 2 0 t i 790 790 pg_catalog +895 cash_mi f 790 f 0 2 0 t i 790 790 pg_catalog +896 cash_mul_flt8 f 790 f 0 2 0 t i 790 701 pg_catalog +897 cash_div_flt8 f 790 f 0 2 0 t i 790 701 pg_catalog +898 cashlarger f 790 f 0 2 0 t i 790 790 pg_catalog +899 cashsmaller f 790 f 0 2 0 t i 790 790 pg_catalog +910 inet_in f 869 f 0 1 0 t i 2275 pg_catalog +911 inet_out f 2275 f 0 1 0 t i 869 pg_catalog +919 flt8_mul_cash f 790 f 0 2 0 t i 701 790 pg_catalog +920 network_eq f 16 f 0 2 0 t i 869 869 pg_catalog +921 network_lt f 16 f 0 2 0 t i 869 869 pg_catalog +922 network_le f 16 f 0 2 0 t i 869 869 pg_catalog +923 network_gt f 16 f 0 2 0 t i 869 869 pg_catalog +924 network_ge f 16 f 0 2 0 t i 869 869 pg_catalog +925 network_ne f 16 f 0 2 0 t i 869 869 pg_catalog +926 network_cmp f 23 f 0 2 0 t i 869 869 pg_catalog +927 network_sub f 16 f 0 2 0 t i 869 869 pg_catalog +928 network_subeq f 16 f 0 2 0 t i 869 869 pg_catalog +929 network_sup f 16 f 0 2 0 t i 869 869 pg_catalog +930 network_supeq f 16 f 0 2 0 t i 869 869 pg_catalog +935 cash_words f 25 f 0 1 0 t i 790 pg_catalog +936 substring f 25 f 0 3 0 t i 25 23 23 pg_catalog +937 substring f 25 f 0 2 0 t i 25 23 pg_catalog +938 generate_series f 1114 t 0 3 0 t i 1114 1114 1186 pg_catalog +939 generate_series f 1184 t 0 3 0 t s 1184 1184 1186 pg_catalog +940 mod f 21 f 0 2 0 t i 21 21 pg_catalog +941 mod f 23 f 0 2 0 t i 23 23 pg_catalog +942 int28mi f 20 f 0 2 0 t i 21 20 pg_catalog +943 int28mul f 20 f 0 2 0 t i 21 20 pg_catalog +944 char f 18 f 0 1 0 t i 25 pg_catalog +945 int8mod f 20 f 0 2 0 t i 20 20 pg_catalog +946 text f 25 f 0 1 0 t i 18 pg_catalog +947 mod f 20 f 0 2 0 t i 20 20 pg_catalog +948 int28div f 20 f 0 2 0 t i 21 20 pg_catalog +949 hashint8 f 23 f 0 1 0 t i 20 pg_catalog +952 lo_open f 23 f 0 2 0 t v 26 23 pg_catalog +953 lo_close f 23 f 0 1 0 t v 23 pg_catalog +954 loread f 17 f 0 2 0 t v 23 23 pg_catalog +955 lowrite f 23 f 0 2 0 t v 23 17 pg_catalog +956 lo_lseek f 23 f 0 3 0 t v 23 23 23 pg_catalog +957 lo_creat f 26 f 0 1 0 t v 23 pg_catalog +958 lo_tell f 23 f 0 1 0 t v 23 pg_catalog +959 on_pl f 16 f 0 2 0 t i 600 628 pg_catalog +960 on_sl f 16 f 0 2 0 t i 601 628 pg_catalog +961 close_pl f 600 f 0 2 0 t i 600 628 pg_catalog +964 lo_unlink f 23 f 0 1 0 t v 26 pg_catalog +972 hashbpcharextended f 20 f 0 2 0 t i 1042 20 pg_catalog +973 path_inter f 16 f 0 2 0 t i 602 602 pg_catalog +975 area f 701 f 0 1 0 t i 603 pg_catalog +976 width f 701 f 0 1 0 t i 603 pg_catalog +977 height f 701 f 0 1 0 t i 603 pg_catalog +978 box_distance f 701 f 0 2 0 t i 603 603 pg_catalog +979 area f 701 f 0 1 0 t i 602 pg_catalog +980 box_intersect f 603 f 0 2 0 t i 603 603 pg_catalog +981 diagonal f 601 f 0 1 0 t i 603 pg_catalog +982 path_n_lt f 16 f 0 2 0 t i 602 602 pg_catalog +983 path_n_gt f 16 f 0 2 0 t i 602 602 pg_catalog +984 path_n_eq f 16 f 0 2 0 t i 602 602 pg_catalog +985 path_n_le f 16 f 0 2 0 t i 602 602 pg_catalog +986 path_n_ge f 16 f 0 2 0 t i 602 602 pg_catalog +987 path_length f 701 f 0 1 0 t i 602 pg_catalog +988 point_ne f 16 f 0 2 0 t i 600 600 pg_catalog +989 point_vert f 16 f 0 2 0 t i 600 600 pg_catalog +990 point_horiz f 16 f 0 2 0 t i 600 600 pg_catalog +991 point_distance f 701 f 0 2 0 t i 600 600 pg_catalog +992 slope f 701 f 0 2 0 t i 600 600 pg_catalog +993 lseg f 601 f 0 2 0 t i 600 600 pg_catalog +994 lseg_intersect f 16 f 0 2 0 t i 601 601 pg_catalog +995 lseg_parallel f 16 f 0 2 0 t i 601 601 pg_catalog +996 lseg_perp f 16 f 0 2 0 t i 601 601 pg_catalog +997 lseg_vertical f 16 f 0 1 0 t i 601 pg_catalog +998 lseg_horizontal f 16 f 0 1 0 t i 601 pg_catalog +999 lseg_eq f 16 f 0 2 0 t i 601 601 pg_catalog +1004 lo_truncate f 23 f 0 2 0 t v 23 23 pg_catalog +1023 textlike_support f 2281 f 0 1 0 t i 2281 pg_catalog +1024 texticregexeq_support f 2281 f 0 1 0 t i 2281 pg_catalog +1025 texticlike_support f 2281 f 0 1 0 t i 2281 pg_catalog +1026 timezone f 1114 f 0 2 0 t i 1186 1184 pg_catalog +1030 gist_point_compress f 2281 f 0 1 0 t i 2281 pg_catalog +1031 aclitemin f 1033 f 0 1 0 t s 2275 pg_catalog +1032 aclitemout f 2275 f 0 1 0 t s 1033 pg_catalog +1035 aclinsert f 1034 f 0 2 0 t i 1034 1033 pg_catalog +1036 aclremove f 1034 f 0 2 0 t i 1034 1033 pg_catalog +1037 aclcontains f 16 f 0 2 0 t i 1034 1033 pg_catalog +1039 getdatabaseencoding f 19 f 0 0 0 t s pg_catalog +1044 bpcharin f 1042 f 0 3 0 t i 2275 26 23 pg_catalog +1045 bpcharout f 2275 f 0 1 0 t i 1042 pg_catalog +1046 varcharin f 1043 f 0 3 0 t i 2275 26 23 pg_catalog +1047 varcharout f 2275 f 0 1 0 t i 1043 pg_catalog +1048 bpchareq f 16 f 0 2 0 t i 1042 1042 pg_catalog +1049 bpcharlt f 16 f 0 2 0 t i 1042 1042 pg_catalog +1050 bpcharle f 16 f 0 2 0 t i 1042 1042 pg_catalog +1051 bpchargt f 16 f 0 2 0 t i 1042 1042 pg_catalog +1052 bpcharge f 16 f 0 2 0 t i 1042 1042 pg_catalog +1053 bpcharne f 16 f 0 2 0 t i 1042 1042 pg_catalog +1062 aclitemeq f 16 f 0 2 0 t i 1033 1033 pg_catalog +1063 bpchar_larger f 1042 f 0 2 0 t i 1042 1042 pg_catalog +1064 bpchar_smaller f 1042 f 0 2 0 t i 1042 1042 pg_catalog +1065 pg_prepared_xact f 2249 t 0 0 0 t v 28 25 1184 26 26 ooooo transaction,gid,prepared,ownerid,dbid pg_catalog +1066 generate_series f 23 t 0 3 0 t i 23 23 23 pg_catalog +1067 generate_series f 23 t 0 2 0 t i 23 23 pg_catalog +1068 generate_series f 20 t 0 3 0 t i 20 20 20 pg_catalog +1069 generate_series f 20 t 0 2 0 t i 20 20 pg_catalog +1078 bpcharcmp f 23 f 0 2 0 t i 1042 1042 pg_catalog +1079 regclass f 2205 f 0 1 0 t s 25 pg_catalog +1080 hashbpchar f 23 f 0 1 0 t i 1042 pg_catalog +1081 format_type f 25 f 0 2 0 f s 26 23 pg_catalog +1084 date_in f 1082 f 0 1 0 t s 2275 pg_catalog +1085 date_out f 2275 f 0 1 0 t s 1082 pg_catalog +1086 date_eq f 16 f 0 2 0 t i 1082 1082 pg_catalog +1087 date_lt f 16 f 0 2 0 t i 1082 1082 pg_catalog +1088 date_le f 16 f 0 2 0 t i 1082 1082 pg_catalog +1089 date_gt f 16 f 0 2 0 t i 1082 1082 pg_catalog +1090 date_ge f 16 f 0 2 0 t i 1082 1082 pg_catalog +1091 date_ne f 16 f 0 2 0 t i 1082 1082 pg_catalog +1092 date_cmp f 23 f 0 2 0 t i 1082 1082 pg_catalog +1102 time_lt f 16 f 0 2 0 t i 1083 1083 pg_catalog +1103 time_le f 16 f 0 2 0 t i 1083 1083 pg_catalog +1104 time_gt f 16 f 0 2 0 t i 1083 1083 pg_catalog +1105 time_ge f 16 f 0 2 0 t i 1083 1083 pg_catalog +1106 time_ne f 16 f 0 2 0 t i 1083 1083 pg_catalog +1107 time_cmp f 23 f 0 2 0 t i 1083 1083 pg_catalog +1136 pg_stat_get_wal f 2249 f 0 0 0 f s 20 20 1700 20 1184 ooooo wal_records,wal_fpi,wal_bytes,wal_buffers_full,stats_reset pg_catalog +1137 pg_get_wal_replay_pause_state f 25 f 0 0 0 t v pg_catalog +1138 date_larger f 1082 f 0 2 0 t i 1082 1082 pg_catalog +1139 date_smaller f 1082 f 0 2 0 t i 1082 1082 pg_catalog +1140 date_mi f 23 f 0 2 0 t i 1082 1082 pg_catalog +1141 date_pli f 1082 f 0 2 0 t i 1082 23 pg_catalog +1142 date_mii f 1082 f 0 2 0 t i 1082 23 pg_catalog +1143 time_in f 1083 f 0 3 0 t s 2275 26 23 pg_catalog +1144 time_out f 2275 f 0 1 0 t i 1083 pg_catalog +1145 time_eq f 16 f 0 2 0 t i 1083 1083 pg_catalog +1146 circle_add_pt f 718 f 0 2 0 t i 718 600 pg_catalog +1147 circle_sub_pt f 718 f 0 2 0 t i 718 600 pg_catalog +1148 circle_mul_pt f 718 f 0 2 0 t i 718 600 pg_catalog +1149 circle_div_pt f 718 f 0 2 0 t i 718 600 pg_catalog +1150 timestamptz_in f 1184 f 0 3 0 t s 2275 26 23 pg_catalog +1151 timestamptz_out f 2275 f 0 1 0 t s 1184 pg_catalog +1152 timestamptz_eq f 16 f 0 2 0 t i 1184 1184 pg_catalog +1153 timestamptz_ne f 16 f 0 2 0 t i 1184 1184 pg_catalog +1154 timestamptz_lt f 16 f 0 2 0 t i 1184 1184 pg_catalog +1155 timestamptz_le f 16 f 0 2 0 t i 1184 1184 pg_catalog +1156 timestamptz_ge f 16 f 0 2 0 t i 1184 1184 pg_catalog +1157 timestamptz_gt f 16 f 0 2 0 t i 1184 1184 pg_catalog +1158 to_timestamp f 1184 f 0 1 0 t i 701 pg_catalog +1159 timezone f 1114 f 0 2 0 t i 25 1184 pg_catalog +1160 interval_in f 1186 f 0 3 0 t s 2275 26 23 pg_catalog +1161 interval_out f 2275 f 0 1 0 t s 1186 pg_catalog +1162 interval_eq f 16 f 0 2 0 t i 1186 1186 pg_catalog +1163 interval_ne f 16 f 0 2 0 t i 1186 1186 pg_catalog +1164 interval_lt f 16 f 0 2 0 t i 1186 1186 pg_catalog +1165 interval_le f 16 f 0 2 0 t i 1186 1186 pg_catalog +1166 interval_ge f 16 f 0 2 0 t i 1186 1186 pg_catalog +1167 interval_gt f 16 f 0 2 0 t i 1186 1186 pg_catalog +1168 interval_um f 1186 f 0 1 0 t i 1186 pg_catalog +1169 interval_pl f 1186 f 0 2 0 t i 1186 1186 pg_catalog +1170 interval_mi f 1186 f 0 2 0 t i 1186 1186 pg_catalog +1171 date_part f 701 f 0 2 0 t s 25 1184 pg_catalog +1172 date_part f 701 f 0 2 0 t i 25 1186 pg_catalog +1173 network_subset_support f 2281 f 0 1 0 t i 2281 pg_catalog +1174 timestamptz f 1184 f 0 1 0 t s 1082 pg_catalog +1175 justify_hours f 1186 f 0 1 0 t i 1186 pg_catalog +1176 timestamptz f 1184 f 0 2 0 t s 1082 1083 pg_catalog +1177 jsonb_path_exists_tz f 16 f 0 4 2 t s 3802 4072 3802 16 target,path,vars,silent pg_catalog +1178 date f 1082 f 0 1 0 t s 1184 pg_catalog +1179 jsonb_path_query_tz f 3802 t 0 4 2 t s 3802 4072 3802 16 target,path,vars,silent pg_catalog +1180 jsonb_path_query_array_tz f 3802 f 0 4 2 t s 3802 4072 3802 16 target,path,vars,silent pg_catalog +1181 age f 23 f 0 1 0 t s 28 pg_catalog +1188 timestamptz_mi f 1186 f 0 2 0 t i 1184 1184 pg_catalog +1189 timestamptz_pl_interval f 1184 f 0 2 0 t s 1184 1186 pg_catalog +1190 timestamptz_mi_interval f 1184 f 0 2 0 t s 1184 1186 pg_catalog +1191 generate_subscripts f 23 t 0 3 0 t i 2277 23 16 pg_catalog +1192 generate_subscripts f 23 t 0 2 0 t i 2277 23 pg_catalog +1193 array_fill f 2277 f 0 2 0 f i 2283 1007 pg_catalog +1194 log10 f 701 f 0 1 0 t i 701 pg_catalog +1195 timestamptz_smaller f 1184 f 0 2 0 t i 1184 1184 pg_catalog +1196 timestamptz_larger f 1184 f 0 2 0 t i 1184 1184 pg_catalog +1197 interval_smaller f 1186 f 0 2 0 t i 1186 1186 pg_catalog +1198 interval_larger f 1186 f 0 2 0 t i 1186 1186 pg_catalog +1199 age f 1186 f 0 2 0 t i 1184 1184 pg_catalog +1200 interval f 1186 f 0 2 0 t i 1186 23 pg_catalog +1215 obj_description f 25 f 0 2 0 t s 26 19 pg_catalog +1216 col_description f 25 f 0 2 0 t s 26 23 pg_catalog +1217 date_trunc f 1184 f 0 2 0 t s 25 1184 pg_catalog +1218 date_trunc f 1186 f 0 2 0 t i 25 1186 pg_catalog +1219 int8inc f 20 f 0 1 0 t i 20 pg_catalog +1230 int8abs f 20 f 0 1 0 t i 20 pg_catalog +1236 int8larger f 20 f 0 2 0 t i 20 20 pg_catalog +1237 int8smaller f 20 f 0 2 0 t i 20 20 pg_catalog +1238 texticregexeq f 16 f 0 2 0 t i 25 25 pg_catalog +1239 texticregexne f 16 f 0 2 0 t i 25 25 pg_catalog +1240 nameicregexeq f 16 f 0 2 0 t i 19 25 pg_catalog +1241 nameicregexne f 16 f 0 2 0 t i 19 25 pg_catalog +1242 boolin f 16 f 0 1 0 t i 2275 pg_catalog +1243 boolout f 2275 f 0 1 0 t i 16 pg_catalog +1244 byteain f 17 f 0 1 0 t i 2275 pg_catalog +1245 charin f 18 f 0 1 0 t i 2275 pg_catalog +1246 charlt f 16 f 0 2 0 t i 18 18 pg_catalog +1250 unique_key_recheck f 2279 f 0 0 0 t v pg_catalog +1251 int4abs f 23 f 0 1 0 t i 23 pg_catalog +1252 nameregexne f 16 f 0 2 0 t i 19 25 pg_catalog +1253 int2abs f 21 f 0 1 0 t i 21 pg_catalog +1254 textregexeq f 16 f 0 2 0 t i 25 25 pg_catalog +1256 textregexne f 16 f 0 2 0 t i 25 25 pg_catalog +1257 textlen f 23 f 0 1 0 t i 25 pg_catalog +1258 textcat f 25 f 0 2 0 t i 25 25 pg_catalog +1264 pg_char_to_encoding f 23 f 0 1 0 t s 19 pg_catalog +1265 tidne f 16 f 0 2 0 t i 27 27 pg_catalog +1267 cidr_in f 650 f 0 1 0 t i 2275 pg_catalog +1268 parse_ident f 1009 f 0 2 1 t i 25 16 str,strict pg_catalog +1269 pg_column_size f 23 f 0 1 0 t s 2276 pg_catalog +1271 overlaps f 16 f 0 4 0 f i 1266 1266 1266 1266 pg_catalog +1272 datetime_pl f 1114 f 0 2 0 t i 1082 1083 pg_catalog +1273 date_part f 701 f 0 2 0 t i 25 1266 pg_catalog +1274 int84pl f 20 f 0 2 0 t i 20 23 pg_catalog +1275 int84mi f 20 f 0 2 0 t i 20 23 pg_catalog +1276 int84mul f 20 f 0 2 0 t i 20 23 pg_catalog +1277 int84div f 20 f 0 2 0 t i 20 23 pg_catalog +1278 int48pl f 20 f 0 2 0 t i 23 20 pg_catalog +1279 int48mi f 20 f 0 2 0 t i 23 20 pg_catalog +1280 int48mul f 20 f 0 2 0 t i 23 20 pg_catalog +1281 int48div f 20 f 0 2 0 t i 23 20 pg_catalog +1282 quote_ident f 25 f 0 1 0 t i 25 pg_catalog +1283 quote_literal f 25 f 0 1 0 t i 25 pg_catalog +1284 date_trunc f 1184 f 0 3 0 t i 25 1184 25 pg_catalog +1285 quote_literal f 25 f 0 1 0 t s 2283 pg_catalog +1286 array_fill f 2277 f 0 3 0 f i 2283 1007 1007 pg_catalog +1287 oid f 26 f 0 1 0 t i 20 pg_catalog +1288 int8 f 20 f 0 1 0 t i 26 pg_catalog +1289 quote_nullable f 25 f 0 1 0 f i 25 pg_catalog +1290 quote_nullable f 25 f 0 1 0 f s 2283 pg_catalog +1291 suppress_redundant_updates_trigger f 2279 f 0 0 0 t v pg_catalog +1292 tideq f 16 f 0 2 0 t i 27 27 pg_catalog +1293 unnest f 3831 t 0 1 0 t i 4537 pg_catalog +1294 currtid2 f 27 f 0 2 0 t v 25 27 pg_catalog +1295 justify_days f 1186 f 0 1 0 t i 1186 pg_catalog +1296 timedate_pl f 1114 f 0 2 0 t i 1083 1082 pg_catalog +1297 datetimetz_pl f 1184 f 0 2 0 t i 1082 1266 pg_catalog +1298 timetzdate_pl f 1184 f 0 2 0 t i 1266 1082 pg_catalog +1299 now f 1184 f 0 0 0 t s pg_catalog +1300 positionsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1301 positionjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1302 contsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1303 contjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1304 overlaps f 16 f 0 4 0 f i 1184 1184 1184 1184 pg_catalog +1305 overlaps f 16 f 0 4 0 f s 1184 1186 1184 1186 pg_catalog +1306 overlaps f 16 f 0 4 0 f s 1184 1184 1184 1186 pg_catalog +1307 overlaps f 16 f 0 4 0 f s 1184 1186 1184 1184 pg_catalog +1308 overlaps f 16 f 0 4 0 f i 1083 1083 1083 1083 pg_catalog +1309 overlaps f 16 f 0 4 0 f i 1083 1186 1083 1186 pg_catalog +1310 overlaps f 16 f 0 4 0 f i 1083 1083 1083 1186 pg_catalog +1311 overlaps f 16 f 0 4 0 f i 1083 1186 1083 1083 pg_catalog +1312 timestamp_in f 1114 f 0 3 0 t s 2275 26 23 pg_catalog +1313 timestamp_out f 2275 f 0 1 0 t s 1114 pg_catalog +1314 timestamptz_cmp f 23 f 0 2 0 t i 1184 1184 pg_catalog +1315 interval_cmp f 23 f 0 2 0 t i 1186 1186 pg_catalog +1316 time f 1083 f 0 1 0 t i 1114 pg_catalog +1317 length f 23 f 0 1 0 t i 25 pg_catalog +1318 length f 23 f 0 1 0 t i 1042 pg_catalog +1319 xideqint4 f 16 f 0 2 0 t i 28 23 pg_catalog +1326 interval_div f 1186 f 0 2 0 t i 1186 701 pg_catalog +1339 dlog10 f 701 f 0 1 0 t i 701 pg_catalog +1340 log f 701 f 0 1 0 t i 701 pg_catalog +1341 ln f 701 f 0 1 0 t i 701 pg_catalog +1342 round f 701 f 0 1 0 t i 701 pg_catalog +1343 trunc f 701 f 0 1 0 t i 701 pg_catalog +1344 sqrt f 701 f 0 1 0 t i 701 pg_catalog +1345 cbrt f 701 f 0 1 0 t i 701 pg_catalog +1346 pow f 701 f 0 2 0 t i 701 701 pg_catalog +1347 exp f 701 f 0 1 0 t i 701 pg_catalog +1348 obj_description f 25 f 0 1 0 t s 26 pg_catalog +1349 oidvectortypes f 25 f 0 1 0 t s 30 pg_catalog +1350 timetz_in f 1266 f 0 3 0 t s 2275 26 23 pg_catalog +1351 timetz_out f 2275 f 0 1 0 t i 1266 pg_catalog +1352 timetz_eq f 16 f 0 2 0 t i 1266 1266 pg_catalog +1353 timetz_ne f 16 f 0 2 0 t i 1266 1266 pg_catalog +1354 timetz_lt f 16 f 0 2 0 t i 1266 1266 pg_catalog +1355 timetz_le f 16 f 0 2 0 t i 1266 1266 pg_catalog +1356 timetz_ge f 16 f 0 2 0 t i 1266 1266 pg_catalog +1357 timetz_gt f 16 f 0 2 0 t i 1266 1266 pg_catalog +1358 timetz_cmp f 23 f 0 2 0 t i 1266 1266 pg_catalog +1359 timestamptz f 1184 f 0 2 0 t i 1082 1266 pg_catalog +1362 hostmask f 869 f 0 1 0 t i 869 pg_catalog +1364 textregexeq_support f 2281 f 0 1 0 t i 2281 pg_catalog +1365 makeaclitem f 1033 f 0 4 0 t i 26 26 25 16 pg_catalog +1367 character_length f 23 f 0 1 0 t i 1042 pg_catalog +1368 power f 701 f 0 2 0 t i 701 701 pg_catalog +1369 character_length f 23 f 0 1 0 t i 25 pg_catalog +1370 interval f 1186 f 0 1 0 t i 1083 pg_catalog +1371 pg_lock_status f 2249 t 0 0 0 t v 25 26 26 23 21 25 28 26 26 21 25 23 25 16 16 1184 oooooooooooooooo locktype,database,relation,page,tuple,virtualxid,transactionid,classid,objid,objsubid,virtualtransaction,pid,mode,granted,fastpath,waitstart pg_catalog +1372 char_length f 23 f 0 1 0 t i 1042 pg_catalog +1373 isfinite f 16 f 0 1 0 t i 1082 pg_catalog +1374 octet_length f 23 f 0 1 0 t i 25 pg_catalog +1375 octet_length f 23 f 0 1 0 t i 1042 pg_catalog +1376 factorial f 1700 f 0 1 0 t i 20 pg_catalog +1377 time_larger f 1083 f 0 2 0 t i 1083 1083 pg_catalog +1378 time_smaller f 1083 f 0 2 0 t i 1083 1083 pg_catalog +1379 timetz_larger f 1266 f 0 2 0 t i 1266 1266 pg_catalog +1380 timetz_smaller f 1266 f 0 2 0 t i 1266 1266 pg_catalog +1381 char_length f 23 f 0 1 0 t i 25 pg_catalog +1384 date_part f 701 f 0 2 0 t i 25 1082 pg_catalog +1385 date_part f 701 f 0 2 0 t i 25 1083 pg_catalog +1386 age f 1186 f 0 1 0 t s 1184 pg_catalog +1387 pg_get_constraintdef f 25 f 0 1 0 t s 26 pg_catalog +1388 timetz f 1266 f 0 1 0 t s 1184 pg_catalog +1389 isfinite f 16 f 0 1 0 t i 1184 pg_catalog +1390 isfinite f 16 f 0 1 0 t i 1186 pg_catalog +1391 pg_stat_get_backend_start f 1184 f 0 1 0 t s 23 pg_catalog +1392 pg_stat_get_backend_client_addr f 869 f 0 1 0 t s 23 pg_catalog +1393 pg_stat_get_backend_client_port f 23 f 0 1 0 t s 23 pg_catalog +1394 abs f 700 f 0 1 0 t i 700 pg_catalog +1395 abs f 701 f 0 1 0 t i 701 pg_catalog +1396 abs f 20 f 0 1 0 t i 20 pg_catalog +1397 abs f 23 f 0 1 0 t i 23 pg_catalog +1398 abs f 21 f 0 1 0 t i 21 pg_catalog +1400 name f 19 f 0 1 0 t i 1043 pg_catalog +1401 varchar f 1043 f 0 1 0 t i 19 pg_catalog +1402 current_schema f 19 f 0 0 0 t s pg_catalog +1403 current_schemas f 1003 f 0 1 0 t s 16 pg_catalog +1404 overlay f 25 f 0 4 0 t i 25 25 23 23 pg_catalog +1405 overlay f 25 f 0 3 0 t i 25 25 23 pg_catalog +1406 isvertical f 16 f 0 2 0 t i 600 600 pg_catalog +1407 ishorizontal f 16 f 0 2 0 t i 600 600 pg_catalog +1408 isparallel f 16 f 0 2 0 t i 601 601 pg_catalog +1409 isperp f 16 f 0 2 0 t i 601 601 pg_catalog +1410 isvertical f 16 f 0 1 0 t i 601 pg_catalog +1411 ishorizontal f 16 f 0 1 0 t i 601 pg_catalog +1412 isparallel f 16 f 0 2 0 t i 628 628 pg_catalog +1413 isperp f 16 f 0 2 0 t i 628 628 pg_catalog +1414 isvertical f 16 f 0 1 0 t i 628 pg_catalog +1415 ishorizontal f 16 f 0 1 0 t i 628 pg_catalog +1416 point f 600 f 0 1 0 t i 718 pg_catalog +1419 time f 1083 f 0 1 0 t i 1186 pg_catalog +1421 box f 603 f 0 2 0 t i 600 600 pg_catalog +1422 box_add f 603 f 0 2 0 t i 603 600 pg_catalog +1423 box_sub f 603 f 0 2 0 t i 603 600 pg_catalog +1424 box_mul f 603 f 0 2 0 t i 603 600 pg_catalog +1425 box_div f 603 f 0 2 0 t i 603 600 pg_catalog +1426 path_contain_pt f 16 f 0 2 0 t i 602 600 pg_catalog +1427 cidr_out f 2275 f 0 1 0 t i 650 pg_catalog +1428 poly_contain_pt f 16 f 0 2 0 t i 604 600 pg_catalog +1429 pt_contained_poly f 16 f 0 2 0 t i 600 604 pg_catalog +1430 isclosed f 16 f 0 1 0 t i 602 pg_catalog +1431 isopen f 16 f 0 1 0 t i 602 pg_catalog +1432 path_npoints f 23 f 0 1 0 t i 602 pg_catalog +1433 pclose f 602 f 0 1 0 t i 602 pg_catalog +1434 popen f 602 f 0 1 0 t i 602 pg_catalog +1435 path_add f 602 f 0 2 0 t i 602 602 pg_catalog +1436 path_add_pt f 602 f 0 2 0 t i 602 600 pg_catalog +1437 path_sub_pt f 602 f 0 2 0 t i 602 600 pg_catalog +1438 path_mul_pt f 602 f 0 2 0 t i 602 600 pg_catalog +1439 path_div_pt f 602 f 0 2 0 t i 602 600 pg_catalog +1440 point f 600 f 0 2 0 t i 701 701 pg_catalog +1441 point_add f 600 f 0 2 0 t i 600 600 pg_catalog +1442 point_sub f 600 f 0 2 0 t i 600 600 pg_catalog +1443 point_mul f 600 f 0 2 0 t i 600 600 pg_catalog +1444 point_div f 600 f 0 2 0 t i 600 600 pg_catalog +1445 poly_npoints f 23 f 0 1 0 t i 604 pg_catalog +1446 box f 603 f 0 1 0 t i 604 pg_catalog +1447 path f 602 f 0 1 0 t i 604 pg_catalog +1448 polygon f 604 f 0 1 0 t i 603 pg_catalog +1449 polygon f 604 f 0 1 0 t i 602 pg_catalog +1450 circle_in f 718 f 0 1 0 t i 2275 pg_catalog +1451 circle_out f 2275 f 0 1 0 t i 718 pg_catalog +1452 circle_same f 16 f 0 2 0 t i 718 718 pg_catalog +1453 circle_contain f 16 f 0 2 0 t i 718 718 pg_catalog +1454 circle_left f 16 f 0 2 0 t i 718 718 pg_catalog +1455 circle_overleft f 16 f 0 2 0 t i 718 718 pg_catalog +1456 circle_overright f 16 f 0 2 0 t i 718 718 pg_catalog +1457 circle_right f 16 f 0 2 0 t i 718 718 pg_catalog +1458 circle_contained f 16 f 0 2 0 t i 718 718 pg_catalog +1459 circle_overlap f 16 f 0 2 0 t i 718 718 pg_catalog +1460 circle_below f 16 f 0 2 0 t i 718 718 pg_catalog +1461 circle_above f 16 f 0 2 0 t i 718 718 pg_catalog +1462 circle_eq f 16 f 0 2 0 t i 718 718 pg_catalog +1463 circle_ne f 16 f 0 2 0 t i 718 718 pg_catalog +1464 circle_lt f 16 f 0 2 0 t i 718 718 pg_catalog +1465 circle_gt f 16 f 0 2 0 t i 718 718 pg_catalog +1466 circle_le f 16 f 0 2 0 t i 718 718 pg_catalog +1467 circle_ge f 16 f 0 2 0 t i 718 718 pg_catalog +1468 area f 701 f 0 1 0 t i 718 pg_catalog +1469 diameter f 701 f 0 1 0 t i 718 pg_catalog +1470 radius f 701 f 0 1 0 t i 718 pg_catalog +1471 circle_distance f 701 f 0 2 0 t i 718 718 pg_catalog +1472 circle_center f 600 f 0 1 0 t i 718 pg_catalog +1473 circle f 718 f 0 2 0 t i 600 701 pg_catalog +1474 circle f 718 f 0 1 0 t i 604 pg_catalog +1475 polygon f 604 f 0 2 0 t i 23 718 pg_catalog +1476 dist_pc f 701 f 0 2 0 t i 600 718 pg_catalog +1477 circle_contain_pt f 16 f 0 2 0 t i 718 600 pg_catalog +1478 pt_contained_circle f 16 f 0 2 0 t i 600 718 pg_catalog +1479 circle f 718 f 0 1 0 t i 603 pg_catalog +1480 box f 603 f 0 1 0 t i 718 pg_catalog +1481 log10 f 1700 f 0 1 0 t i 1700 pg_catalog +1482 lseg_ne f 16 f 0 2 0 t i 601 601 pg_catalog +1483 lseg_lt f 16 f 0 2 0 t i 601 601 pg_catalog +1484 lseg_le f 16 f 0 2 0 t i 601 601 pg_catalog +1485 lseg_gt f 16 f 0 2 0 t i 601 601 pg_catalog +1486 lseg_ge f 16 f 0 2 0 t i 601 601 pg_catalog +1487 lseg_length f 701 f 0 1 0 t i 601 pg_catalog +1488 close_ls f 600 f 0 2 0 t i 628 601 pg_catalog +1489 close_lseg f 600 f 0 2 0 t i 601 601 pg_catalog +1490 line_in f 628 f 0 1 0 t i 2275 pg_catalog +1491 line_out f 2275 f 0 1 0 t i 628 pg_catalog +1492 line_eq f 16 f 0 2 0 t i 628 628 pg_catalog +1493 line f 628 f 0 2 0 t i 600 600 pg_catalog +1494 line_interpt f 600 f 0 2 0 t i 628 628 pg_catalog +1495 line_intersect f 16 f 0 2 0 t i 628 628 pg_catalog +1496 line_parallel f 16 f 0 2 0 t i 628 628 pg_catalog +1497 line_perp f 16 f 0 2 0 t i 628 628 pg_catalog +1498 line_vertical f 16 f 0 1 0 t i 628 pg_catalog +1499 line_horizontal f 16 f 0 1 0 t i 628 pg_catalog +1530 length f 701 f 0 1 0 t i 601 pg_catalog +1531 length f 701 f 0 1 0 t i 602 pg_catalog +1532 point f 600 f 0 1 0 t i 601 pg_catalog +1534 point f 600 f 0 1 0 t i 603 pg_catalog +1540 point f 600 f 0 1 0 t i 604 pg_catalog +1541 lseg f 601 f 0 1 0 t i 603 pg_catalog +1542 center f 600 f 0 1 0 t i 603 pg_catalog +1543 center f 600 f 0 1 0 t i 718 pg_catalog +1544 polygon f 604 f 0 1 0 t i 718 pg_catalog +1545 npoints f 23 f 0 1 0 t i 602 pg_catalog +1556 npoints f 23 f 0 1 0 t i 604 pg_catalog +1564 bit_in f 1560 f 0 3 0 t i 2275 26 23 pg_catalog +1565 bit_out f 2275 f 0 1 0 t i 1560 pg_catalog +1569 like f 16 f 0 2 0 t i 25 25 pg_catalog +1570 notlike f 16 f 0 2 0 t i 25 25 pg_catalog +1571 like f 16 f 0 2 0 t i 19 25 pg_catalog +1572 notlike f 16 f 0 2 0 t i 19 25 pg_catalog +1573 pg_get_ruledef f 25 f 0 1 0 t s 26 pg_catalog +1574 nextval f 20 f 0 1 0 t v 2205 pg_catalog +1575 currval f 20 f 0 1 0 t v 2205 pg_catalog +1576 setval f 20 f 0 2 0 t v 2205 20 pg_catalog +1579 varbit_in f 1562 f 0 3 0 t i 2275 26 23 pg_catalog +1580 varbit_out f 2275 f 0 1 0 t i 1562 pg_catalog +1581 biteq f 16 f 0 2 0 t i 1560 1560 pg_catalog +1582 bitne f 16 f 0 2 0 t i 1560 1560 pg_catalog +1592 bitge f 16 f 0 2 0 t i 1560 1560 pg_catalog +1593 bitgt f 16 f 0 2 0 t i 1560 1560 pg_catalog +1594 bitle f 16 f 0 2 0 t i 1560 1560 pg_catalog +1595 bitlt f 16 f 0 2 0 t i 1560 1560 pg_catalog +1596 bitcmp f 23 f 0 2 0 t i 1560 1560 pg_catalog +1597 pg_encoding_to_char f 19 f 0 1 0 t s 23 pg_catalog +1598 random f 701 f 0 0 0 t v pg_catalog +1599 setseed f 2278 f 0 1 0 t v 701 pg_catalog +1600 asin f 701 f 0 1 0 t i 701 pg_catalog +1601 acos f 701 f 0 1 0 t i 701 pg_catalog +1602 atan f 701 f 0 1 0 t i 701 pg_catalog +1603 atan2 f 701 f 0 2 0 t i 701 701 pg_catalog +1604 sin f 701 f 0 1 0 t i 701 pg_catalog +1605 cos f 701 f 0 1 0 t i 701 pg_catalog +1606 tan f 701 f 0 1 0 t i 701 pg_catalog +1607 cot f 701 f 0 1 0 t i 701 pg_catalog +1608 degrees f 701 f 0 1 0 t i 701 pg_catalog +1609 radians f 701 f 0 1 0 t i 701 pg_catalog +1610 pi f 701 f 0 0 0 t i pg_catalog +1618 interval_mul f 1186 f 0 2 0 t i 1186 701 pg_catalog +1619 pg_typeof f 2206 f 0 1 0 f s 2276 pg_catalog +1620 ascii f 23 f 0 1 0 t i 25 pg_catalog +1621 chr f 25 f 0 1 0 t i 23 pg_catalog +1622 repeat f 25 f 0 2 0 t i 25 23 pg_catalog +1623 similar_escape f 25 f 0 2 0 f i 25 25 pg_catalog +1624 mul_d_interval f 1186 f 0 2 0 t i 701 1186 pg_catalog +1631 bpcharlike f 16 f 0 2 0 t i 1042 25 pg_catalog +1632 bpcharnlike f 16 f 0 2 0 t i 1042 25 pg_catalog +1633 texticlike f 16 f 0 2 0 t i 25 25 pg_catalog +1634 texticnlike f 16 f 0 2 0 t i 25 25 pg_catalog +1635 nameiclike f 16 f 0 2 0 t i 19 25 pg_catalog +1636 nameicnlike f 16 f 0 2 0 t i 19 25 pg_catalog +1637 like_escape f 25 f 0 2 0 t i 25 25 pg_catalog +1638 oidgt f 16 f 0 2 0 t i 26 26 pg_catalog +1639 oidge f 16 f 0 2 0 t i 26 26 pg_catalog +1640 pg_get_viewdef f 25 f 0 1 0 t s 25 pg_catalog +1641 pg_get_viewdef f 25 f 0 1 0 t s 26 pg_catalog +1642 pg_get_userbyid f 19 f 0 1 0 t s 26 pg_catalog +1643 pg_get_indexdef f 25 f 0 1 0 t s 26 pg_catalog +1644 RI_FKey_check_ins f 2279 f 0 0 0 t v pg_catalog +1645 RI_FKey_check_upd f 2279 f 0 0 0 t v pg_catalog +1646 RI_FKey_cascade_del f 2279 f 0 0 0 t v pg_catalog +1647 RI_FKey_cascade_upd f 2279 f 0 0 0 t v pg_catalog +1648 RI_FKey_restrict_del f 2279 f 0 0 0 t v pg_catalog +1649 RI_FKey_restrict_upd f 2279 f 0 0 0 t v pg_catalog +1650 RI_FKey_setnull_del f 2279 f 0 0 0 t v pg_catalog +1651 RI_FKey_setnull_upd f 2279 f 0 0 0 t v pg_catalog +1652 RI_FKey_setdefault_del f 2279 f 0 0 0 t v pg_catalog +1653 RI_FKey_setdefault_upd f 2279 f 0 0 0 t v pg_catalog +1654 RI_FKey_noaction_del f 2279 f 0 0 0 t v pg_catalog +1655 RI_FKey_noaction_upd f 2279 f 0 0 0 t v pg_catalog +1656 bpcharicregexeq f 16 f 0 2 0 t i 1042 25 pg_catalog +1657 bpcharicregexne f 16 f 0 2 0 t i 1042 25 pg_catalog +1658 bpcharregexeq f 16 f 0 2 0 t i 1042 25 pg_catalog +1659 bpcharregexne f 16 f 0 2 0 t i 1042 25 pg_catalog +1660 bpchariclike f 16 f 0 2 0 t i 1042 25 pg_catalog +1661 bpcharicnlike f 16 f 0 2 0 t i 1042 25 pg_catalog +1662 pg_get_triggerdef f 25 f 0 1 0 t s 26 pg_catalog +1665 pg_get_serial_sequence f 25 f 0 2 0 t s 25 25 pg_catalog +1666 varbiteq f 16 f 0 2 0 t i 1562 1562 pg_catalog +1667 varbitne f 16 f 0 2 0 t i 1562 1562 pg_catalog +1668 varbitge f 16 f 0 2 0 t i 1562 1562 pg_catalog +1669 varbitgt f 16 f 0 2 0 t i 1562 1562 pg_catalog +1670 varbitle f 16 f 0 2 0 t i 1562 1562 pg_catalog +1671 varbitlt f 16 f 0 2 0 t i 1562 1562 pg_catalog +1672 varbitcmp f 23 f 0 2 0 t i 1562 1562 pg_catalog +1673 bitand f 1560 f 0 2 0 t i 1560 1560 pg_catalog +1674 bitor f 1560 f 0 2 0 t i 1560 1560 pg_catalog +1675 bitxor f 1560 f 0 2 0 t i 1560 1560 pg_catalog +1676 bitnot f 1560 f 0 1 0 t i 1560 pg_catalog +1677 bitshiftleft f 1560 f 0 2 0 t i 1560 23 pg_catalog +1678 bitshiftright f 1560 f 0 2 0 t i 1560 23 pg_catalog +1679 bitcat f 1562 f 0 2 0 t i 1562 1562 pg_catalog +1680 substring f 1560 f 0 3 0 t i 1560 23 23 pg_catalog +1681 length f 23 f 0 1 0 t i 1560 pg_catalog +1682 octet_length f 23 f 0 1 0 t i 1560 pg_catalog +1683 bit f 1560 f 0 2 0 t i 23 23 pg_catalog +1684 int4 f 23 f 0 1 0 t i 1560 pg_catalog +1685 bit f 1560 f 0 3 0 t i 1560 23 16 pg_catalog +1686 pg_get_keywords f 2249 t 0 0 0 t s 25 18 16 25 25 ooooo word,catcode,barelabel,catdesc,baredesc pg_catalog +1687 varbit f 1562 f 0 3 0 t i 1562 23 16 pg_catalog +1688 time_hash f 23 f 0 1 0 t i 1083 pg_catalog +1689 aclexplode f 2249 t 0 1 0 t s 1034 1034 26 26 25 16 ioooo acl,grantor,grantee,privilege_type,is_grantable pg_catalog +1690 time_mi_time f 1186 f 0 2 0 t i 1083 1083 pg_catalog +1691 boolle f 16 f 0 2 0 t i 16 16 pg_catalog +1692 boolge f 16 f 0 2 0 t i 16 16 pg_catalog +1693 btboolcmp f 23 f 0 2 0 t i 16 16 pg_catalog +1696 timetz_hash f 23 f 0 1 0 t i 1266 pg_catalog +1697 interval_hash f 23 f 0 1 0 t i 1186 pg_catalog +1698 position f 23 f 0 2 0 t i 1560 1560 pg_catalog +1699 substring f 1560 f 0 2 0 t i 1560 23 pg_catalog +1701 numeric_in f 1700 f 0 3 0 t i 2275 26 23 pg_catalog +1702 numeric_out f 2275 f 0 1 0 t i 1700 pg_catalog +1703 numeric f 1700 f 0 2 0 t i 1700 23 pg_catalog +1704 numeric_abs f 1700 f 0 1 0 t i 1700 pg_catalog +1705 abs f 1700 f 0 1 0 t i 1700 pg_catalog +1706 sign f 1700 f 0 1 0 t i 1700 pg_catalog +1707 round f 1700 f 0 2 0 t i 1700 23 pg_catalog +1708 round f 1700 f 0 1 0 t i 1700 pg_catalog +1709 trunc f 1700 f 0 2 0 t i 1700 23 pg_catalog +1710 trunc f 1700 f 0 1 0 t i 1700 pg_catalog +1711 ceil f 1700 f 0 1 0 t i 1700 pg_catalog +1712 floor f 1700 f 0 1 0 t i 1700 pg_catalog +1713 length f 23 f 0 2 0 t s 17 19 pg_catalog +1714 convert_from f 25 f 0 2 0 t s 17 19 pg_catalog +1715 cidr f 650 f 0 1 0 t i 869 pg_catalog +1716 pg_get_expr f 25 f 0 2 0 t s 194 26 pg_catalog +1717 convert_to f 17 f 0 2 0 t s 25 19 pg_catalog +1718 numeric_eq f 16 f 0 2 0 t i 1700 1700 pg_catalog +1719 numeric_ne f 16 f 0 2 0 t i 1700 1700 pg_catalog +1720 numeric_gt f 16 f 0 2 0 t i 1700 1700 pg_catalog +1721 numeric_ge f 16 f 0 2 0 t i 1700 1700 pg_catalog +1722 numeric_lt f 16 f 0 2 0 t i 1700 1700 pg_catalog +1723 numeric_le f 16 f 0 2 0 t i 1700 1700 pg_catalog +1724 numeric_add f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1725 numeric_sub f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1726 numeric_mul f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1727 numeric_div f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1728 mod f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1729 numeric_mod f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1730 sqrt f 1700 f 0 1 0 t i 1700 pg_catalog +1731 numeric_sqrt f 1700 f 0 1 0 t i 1700 pg_catalog +1732 exp f 1700 f 0 1 0 t i 1700 pg_catalog +1733 numeric_exp f 1700 f 0 1 0 t i 1700 pg_catalog +1734 ln f 1700 f 0 1 0 t i 1700 pg_catalog +1735 numeric_ln f 1700 f 0 1 0 t i 1700 pg_catalog +1736 log f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1737 numeric_log f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1738 pow f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1739 numeric_power f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1740 numeric f 1700 f 0 1 0 t i 23 pg_catalog +1741 log f 1700 f 0 1 0 t i 1700 pg_catalog +1742 numeric f 1700 f 0 1 0 t i 700 pg_catalog +1743 numeric f 1700 f 0 1 0 t i 701 pg_catalog +1744 int4 f 23 f 0 1 0 t i 1700 pg_catalog +1745 float4 f 700 f 0 1 0 t i 1700 pg_catalog +1746 float8 f 701 f 0 1 0 t i 1700 pg_catalog +1747 time_pl_interval f 1083 f 0 2 0 t i 1083 1186 pg_catalog +1748 time_mi_interval f 1083 f 0 2 0 t i 1083 1186 pg_catalog +1749 timetz_pl_interval f 1266 f 0 2 0 t i 1266 1186 pg_catalog +1750 timetz_mi_interval f 1266 f 0 2 0 t i 1266 1186 pg_catalog +1764 numeric_inc f 1700 f 0 1 0 t i 1700 pg_catalog +1765 setval f 20 f 0 3 0 t v 2205 20 16 pg_catalog +1766 numeric_smaller f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1767 numeric_larger f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1768 to_char f 25 f 0 2 0 t s 1186 25 pg_catalog +1769 numeric_cmp f 23 f 0 2 0 t i 1700 1700 pg_catalog +1770 to_char f 25 f 0 2 0 t s 1184 25 pg_catalog +1771 numeric_uminus f 1700 f 0 1 0 t i 1700 pg_catalog +1772 to_char f 25 f 0 2 0 t s 1700 25 pg_catalog +1773 to_char f 25 f 0 2 0 t s 23 25 pg_catalog +1774 to_char f 25 f 0 2 0 t s 20 25 pg_catalog +1775 to_char f 25 f 0 2 0 t s 700 25 pg_catalog +1776 to_char f 25 f 0 2 0 t s 701 25 pg_catalog +1777 to_number f 1700 f 0 2 0 t s 25 25 pg_catalog +1778 to_timestamp f 1184 f 0 2 0 t s 25 25 pg_catalog +1779 int8 f 20 f 0 1 0 t i 1700 pg_catalog +1780 to_date f 1082 f 0 2 0 t s 25 25 pg_catalog +1781 numeric f 1700 f 0 1 0 t i 20 pg_catalog +1782 numeric f 1700 f 0 1 0 t i 21 pg_catalog +1783 int2 f 21 f 0 1 0 t i 1700 pg_catalog +1798 oidin f 26 f 0 1 0 t i 2275 pg_catalog +1799 oidout f 2275 f 0 1 0 t i 26 pg_catalog +1810 bit_length f 23 f 0 1 0 t i 17 pg_catalog +1811 bit_length f 23 f 0 1 0 t i 25 pg_catalog +1812 bit_length f 23 f 0 1 0 t i 1560 pg_catalog +1813 convert f 17 f 0 3 0 t s 17 19 19 pg_catalog +1814 iclikesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1815 icnlikesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1816 iclikejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1817 icnlikejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1818 regexeqsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1819 likesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1820 icregexeqsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1821 regexnesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1822 nlikesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1823 icregexnesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +1824 regexeqjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1825 likejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1826 icregexeqjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1827 regexnejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1828 nlikejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1829 icregexnejoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +1830 float8_avg f 701 f 0 1 0 t i 1022 pg_catalog +1831 float8_var_samp f 701 f 0 1 0 t i 1022 pg_catalog +1832 float8_stddev_samp f 701 f 0 1 0 t i 1022 pg_catalog +1833 numeric_accum f 2281 f 0 2 0 f i 2281 1700 pg_catalog +1834 int2_accum f 2281 f 0 2 0 f i 2281 21 pg_catalog +1835 int4_accum f 2281 f 0 2 0 f i 2281 23 pg_catalog +1836 int8_accum f 2281 f 0 2 0 f i 2281 20 pg_catalog +1837 numeric_avg f 1700 f 0 1 0 f i 2281 pg_catalog +1838 numeric_var_samp f 1700 f 0 1 0 f i 2281 pg_catalog +1839 numeric_stddev_samp f 1700 f 0 1 0 f i 2281 pg_catalog +1840 int2_sum f 20 f 0 2 0 f i 20 21 pg_catalog +1841 int4_sum f 20 f 0 2 0 f i 20 23 pg_catalog +1842 int8_sum f 1700 f 0 2 0 f i 1700 20 pg_catalog +1843 interval_avg_accum f 2281 f 0 2 0 f i 2281 1186 pg_catalog +1844 interval_avg f 1186 f 0 1 0 f i 2281 pg_catalog +1845 to_ascii f 25 f 0 1 0 t i 25 pg_catalog +1846 to_ascii f 25 f 0 2 0 t i 25 23 pg_catalog +1847 to_ascii f 25 f 0 2 0 t i 25 19 pg_catalog +1848 interval_pl_time f 1083 f 0 2 0 t i 1186 1083 pg_catalog +1850 int28eq f 16 f 0 2 0 t i 21 20 pg_catalog +1851 int28ne f 16 f 0 2 0 t i 21 20 pg_catalog +1852 int28lt f 16 f 0 2 0 t i 21 20 pg_catalog +1853 int28gt f 16 f 0 2 0 t i 21 20 pg_catalog +1854 int28le f 16 f 0 2 0 t i 21 20 pg_catalog +1855 int28ge f 16 f 0 2 0 t i 21 20 pg_catalog +1856 int82eq f 16 f 0 2 0 t i 20 21 pg_catalog +1857 int82ne f 16 f 0 2 0 t i 20 21 pg_catalog +1858 int82lt f 16 f 0 2 0 t i 20 21 pg_catalog +1859 int82gt f 16 f 0 2 0 t i 20 21 pg_catalog +1860 int82le f 16 f 0 2 0 t i 20 21 pg_catalog +1861 int82ge f 16 f 0 2 0 t i 20 21 pg_catalog +1892 int2and f 21 f 0 2 0 t i 21 21 pg_catalog +1893 int2or f 21 f 0 2 0 t i 21 21 pg_catalog +1894 int2xor f 21 f 0 2 0 t i 21 21 pg_catalog +1895 int2not f 21 f 0 1 0 t i 21 pg_catalog +1896 int2shl f 21 f 0 2 0 t i 21 23 pg_catalog +1897 int2shr f 21 f 0 2 0 t i 21 23 pg_catalog +1898 int4and f 23 f 0 2 0 t i 23 23 pg_catalog +1899 int4or f 23 f 0 2 0 t i 23 23 pg_catalog +1900 int4xor f 23 f 0 2 0 t i 23 23 pg_catalog +1901 int4not f 23 f 0 1 0 t i 23 pg_catalog +1902 int4shl f 23 f 0 2 0 t i 23 23 pg_catalog +1903 int4shr f 23 f 0 2 0 t i 23 23 pg_catalog +1904 int8and f 20 f 0 2 0 t i 20 20 pg_catalog +1905 int8or f 20 f 0 2 0 t i 20 20 pg_catalog +1906 int8xor f 20 f 0 2 0 t i 20 20 pg_catalog +1907 int8not f 20 f 0 1 0 t i 20 pg_catalog +1908 int8shl f 20 f 0 2 0 t i 20 23 pg_catalog +1909 int8shr f 20 f 0 2 0 t i 20 23 pg_catalog +1910 int8up f 20 f 0 1 0 t i 20 pg_catalog +1911 int2up f 21 f 0 1 0 t i 21 pg_catalog +1912 int4up f 23 f 0 1 0 t i 23 pg_catalog +1913 float4up f 700 f 0 1 0 t i 700 pg_catalog +1914 float8up f 701 f 0 1 0 t i 701 pg_catalog +1915 numeric_uplus f 1700 f 0 1 0 t i 1700 pg_catalog +1922 has_table_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +1923 has_table_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +1924 has_table_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +1925 has_table_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +1926 has_table_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +1927 has_table_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +1928 pg_stat_get_numscans f 20 f 0 1 0 t s 26 pg_catalog +1929 pg_stat_get_tuples_returned f 20 f 0 1 0 t s 26 pg_catalog +1930 pg_stat_get_tuples_fetched f 20 f 0 1 0 t s 26 pg_catalog +1931 pg_stat_get_tuples_inserted f 20 f 0 1 0 t s 26 pg_catalog +1932 pg_stat_get_tuples_updated f 20 f 0 1 0 t s 26 pg_catalog +1933 pg_stat_get_tuples_deleted f 20 f 0 1 0 t s 26 pg_catalog +1934 pg_stat_get_blocks_fetched f 20 f 0 1 0 t s 26 pg_catalog +1935 pg_stat_get_blocks_hit f 20 f 0 1 0 t s 26 pg_catalog +1936 pg_stat_get_backend_idset f 23 t 0 0 0 t s pg_catalog +1937 pg_stat_get_backend_pid f 23 f 0 1 0 t s 23 pg_catalog +1938 pg_stat_get_backend_dbid f 26 f 0 1 0 t s 23 pg_catalog +1939 pg_stat_get_backend_userid f 26 f 0 1 0 t s 23 pg_catalog +1940 pg_stat_get_backend_activity f 25 f 0 1 0 t s 23 pg_catalog +1941 pg_stat_get_db_numbackends f 23 f 0 1 0 t s 26 pg_catalog +1942 pg_stat_get_db_xact_commit f 20 f 0 1 0 t s 26 pg_catalog +1943 pg_stat_get_db_xact_rollback f 20 f 0 1 0 t s 26 pg_catalog +1944 pg_stat_get_db_blocks_fetched f 20 f 0 1 0 t s 26 pg_catalog +1945 pg_stat_get_db_blocks_hit f 20 f 0 1 0 t s 26 pg_catalog +1946 encode f 25 f 0 2 0 t i 17 25 pg_catalog +1947 decode f 17 f 0 2 0 t i 25 25 pg_catalog +1948 byteaeq f 16 f 0 2 0 t i 17 17 pg_catalog +1949 bytealt f 16 f 0 2 0 t i 17 17 pg_catalog +1950 byteale f 16 f 0 2 0 t i 17 17 pg_catalog +1951 byteagt f 16 f 0 2 0 t i 17 17 pg_catalog +1952 byteage f 16 f 0 2 0 t i 17 17 pg_catalog +1953 byteane f 16 f 0 2 0 t i 17 17 pg_catalog +1954 byteacmp f 23 f 0 2 0 t i 17 17 pg_catalog +1961 timestamp f 1114 f 0 2 0 t i 1114 23 pg_catalog +1962 int2_avg_accum f 1016 f 0 2 0 t i 1016 21 pg_catalog +1963 int4_avg_accum f 1016 f 0 2 0 t i 1016 23 pg_catalog +1964 int8_avg f 1700 f 0 1 0 t i 1016 pg_catalog +1965 oidlarger f 26 f 0 2 0 t i 26 26 pg_catalog +1966 oidsmaller f 26 f 0 2 0 t i 26 26 pg_catalog +1967 timestamptz f 1184 f 0 2 0 t i 1184 23 pg_catalog +1968 time f 1083 f 0 2 0 t i 1083 23 pg_catalog +1969 timetz f 1266 f 0 2 0 t i 1266 23 pg_catalog +1972 pg_stat_get_tuples_hot_updated f 20 f 0 1 0 t s 26 pg_catalog +1973 div f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1980 numeric_div_trunc f 1700 f 0 2 0 t i 1700 1700 pg_catalog +1986 similar_to_escape f 25 f 0 2 0 t i 25 25 pg_catalog +1987 similar_to_escape f 25 f 0 1 0 t i 25 pg_catalog +1993 shobj_description f 25 f 0 2 0 t s 26 19 pg_catalog +2003 textanycat f 25 f 0 2 0 t s 25 2776 pg_catalog +2004 anytextcat f 25 f 0 2 0 t s 2776 25 pg_catalog +2005 bytealike f 16 f 0 2 0 t i 17 17 pg_catalog +2006 byteanlike f 16 f 0 2 0 t i 17 17 pg_catalog +2007 like f 16 f 0 2 0 t i 17 17 pg_catalog +2008 notlike f 16 f 0 2 0 t i 17 17 pg_catalog +2009 like_escape f 17 f 0 2 0 t i 17 17 pg_catalog +2010 length f 23 f 0 1 0 t i 17 pg_catalog +2011 byteacat f 17 f 0 2 0 t i 17 17 pg_catalog +2012 substring f 17 f 0 3 0 t i 17 23 23 pg_catalog +2013 substring f 17 f 0 2 0 t i 17 23 pg_catalog +2014 position f 23 f 0 2 0 t i 17 17 pg_catalog +2015 btrim f 17 f 0 2 0 t i 17 17 pg_catalog +2019 time f 1083 f 0 1 0 t s 1184 pg_catalog +2020 date_trunc f 1114 f 0 2 0 t i 25 1114 pg_catalog +2021 date_part f 701 f 0 2 0 t i 25 1114 pg_catalog +2022 pg_stat_get_activity f 2249 t 0 1 0 f s 23 23 26 23 26 25 25 25 25 25 1184 1184 1184 1184 869 25 23 28 28 25 16 25 25 23 25 1700 25 16 25 16 16 23 20 iooooooooooooooooooooooooooooooo pid,datid,pid,usesysid,application_name,state,query,wait_event_type,wait_event,xact_start,query_start,backend_start,state_change,client_addr,client_hostname,client_port,backend_xid,backend_xmin,backend_type,ssl,sslversion,sslcipher,sslbits,ssl_client_dn,ssl_client_serial,ssl_issuer_dn,gss_auth,gss_princ,gss_enc,gss_delegation,leader_pid,query_id pg_catalog +2023 jsonb_path_query_first_tz f 3802 f 0 4 2 t s 3802 4072 3802 16 target,path,vars,silent pg_catalog +2024 timestamp f 1114 f 0 1 0 t i 1082 pg_catalog +2025 timestamp f 1114 f 0 2 0 t i 1082 1083 pg_catalog +2026 pg_backend_pid f 23 f 0 0 0 t s pg_catalog +2027 timestamp f 1114 f 0 1 0 t s 1184 pg_catalog +2028 timestamptz f 1184 f 0 1 0 t s 1114 pg_catalog +2029 date f 1082 f 0 1 0 t i 1114 pg_catalog +2030 jsonb_path_match_tz f 16 f 0 4 2 t s 3802 4072 3802 16 target,path,vars,silent pg_catalog +2031 timestamp_mi f 1186 f 0 2 0 t i 1114 1114 pg_catalog +2032 timestamp_pl_interval f 1114 f 0 2 0 t i 1114 1186 pg_catalog +2033 timestamp_mi_interval f 1114 f 0 2 0 t i 1114 1186 pg_catalog +2034 pg_conf_load_time f 1184 f 0 0 0 t s pg_catalog +2035 timestamp_smaller f 1114 f 0 2 0 t i 1114 1114 pg_catalog +2036 timestamp_larger f 1114 f 0 2 0 t i 1114 1114 pg_catalog +2037 timezone f 1266 f 0 2 0 t s 25 1266 pg_catalog +2038 timezone f 1266 f 0 2 0 t i 1186 1266 pg_catalog +2039 timestamp_hash f 23 f 0 1 0 t i 1114 pg_catalog +2041 overlaps f 16 f 0 4 0 f i 1114 1114 1114 1114 pg_catalog +2042 overlaps f 16 f 0 4 0 f i 1114 1186 1114 1186 pg_catalog +2043 overlaps f 16 f 0 4 0 f i 1114 1114 1114 1186 pg_catalog +2044 overlaps f 16 f 0 4 0 f i 1114 1186 1114 1114 pg_catalog +2045 timestamp_cmp f 23 f 0 2 0 t i 1114 1114 pg_catalog +2046 time f 1083 f 0 1 0 t i 1266 pg_catalog +2047 timetz f 1266 f 0 1 0 t s 1083 pg_catalog +2048 isfinite f 16 f 0 1 0 t i 1114 pg_catalog +2049 to_char f 25 f 0 2 0 t s 1114 25 pg_catalog +2050 max a 2277 f 0 1 0 f i 2277 pg_catalog +2051 min a 2277 f 0 1 0 f i 2277 pg_catalog +2052 timestamp_eq f 16 f 0 2 0 t i 1114 1114 pg_catalog +2053 timestamp_ne f 16 f 0 2 0 t i 1114 1114 pg_catalog +2054 timestamp_lt f 16 f 0 2 0 t i 1114 1114 pg_catalog +2055 timestamp_le f 16 f 0 2 0 t i 1114 1114 pg_catalog +2056 timestamp_ge f 16 f 0 2 0 t i 1114 1114 pg_catalog +2057 timestamp_gt f 16 f 0 2 0 t i 1114 1114 pg_catalog +2058 age f 1186 f 0 2 0 t i 1114 1114 pg_catalog +2059 age f 1186 f 0 1 0 t s 1114 pg_catalog +2069 timezone f 1184 f 0 2 0 t i 25 1114 pg_catalog +2070 timezone f 1184 f 0 2 0 t i 1186 1114 pg_catalog +2071 date_pl_interval f 1114 f 0 2 0 t i 1082 1186 pg_catalog +2072 date_mi_interval f 1114 f 0 2 0 t i 1082 1186 pg_catalog +2073 substring f 25 f 0 2 0 t i 25 25 pg_catalog +2074 substring f 25 f 0 3 0 t i 25 25 25 pg_catalog +2075 bit f 1560 f 0 2 0 t i 20 23 pg_catalog +2076 int8 f 20 f 0 1 0 t i 1560 pg_catalog +2077 current_setting f 25 f 0 1 0 t s 25 pg_catalog +2078 set_config f 25 f 0 3 0 f v 25 25 16 pg_catalog +2079 pg_table_is_visible f 16 f 0 1 0 t s 26 pg_catalog +2080 pg_type_is_visible f 16 f 0 1 0 t s 26 pg_catalog +2081 pg_function_is_visible f 16 f 0 1 0 t s 26 pg_catalog +2082 pg_operator_is_visible f 16 f 0 1 0 t s 26 pg_catalog +2083 pg_opclass_is_visible f 16 f 0 1 0 t s 26 pg_catalog +2084 pg_show_all_settings f 2249 t 0 0 0 t s 25 25 25 25 25 25 25 25 25 25 25 1009 25 25 25 23 16 ooooooooooooooooo name,setting,unit,category,short_desc,extra_desc,context,vartype,source,min_val,max_val,enumvals,boot_val,reset_val,sourcefile,sourceline,pending_restart pg_catalog +2085 substr f 17 f 0 3 0 t i 17 23 23 pg_catalog +2086 substr f 17 f 0 2 0 t i 17 23 pg_catalog +2087 replace f 25 f 0 3 0 t i 25 25 25 pg_catalog +2088 split_part f 25 f 0 3 0 t i 25 25 23 pg_catalog +2089 to_hex f 25 f 0 1 0 t i 23 pg_catalog +2090 to_hex f 25 f 0 1 0 t i 20 pg_catalog +2091 array_lower f 23 f 0 2 0 t i 2277 23 pg_catalog +2092 array_upper f 23 f 0 2 0 t i 2277 23 pg_catalog +2093 pg_conversion_is_visible f 16 f 0 1 0 t s 26 pg_catalog +2094 pg_stat_get_backend_activity_start f 1184 f 0 1 0 t s 23 pg_catalog +2096 pg_terminate_backend f 16 f 0 2 1 t v 23 20 pid,timeout pg_catalog +2098 pg_get_functiondef f 25 f 0 1 0 t s 26 pg_catalog +2100 avg a 1700 f 0 1 0 f i 20 pg_catalog +2101 avg a 1700 f 0 1 0 f i 23 pg_catalog +2102 avg a 1700 f 0 1 0 f i 21 pg_catalog +2103 avg a 1700 f 0 1 0 f i 1700 pg_catalog +2104 avg a 701 f 0 1 0 f i 700 pg_catalog +2105 avg a 701 f 0 1 0 f i 701 pg_catalog +2106 avg a 1186 f 0 1 0 f i 1186 pg_catalog +2107 sum a 1700 f 0 1 0 f i 20 pg_catalog +2108 sum a 20 f 0 1 0 f i 23 pg_catalog +2109 sum a 20 f 0 1 0 f i 21 pg_catalog +2110 sum a 700 f 0 1 0 f i 700 pg_catalog +2111 sum a 701 f 0 1 0 f i 701 pg_catalog +2112 sum a 790 f 0 1 0 f i 790 pg_catalog +2113 sum a 1186 f 0 1 0 f i 1186 pg_catalog +2114 sum a 1700 f 0 1 0 f i 1700 pg_catalog +2115 max a 20 f 0 1 0 f i 20 pg_catalog +2116 max a 23 f 0 1 0 f i 23 pg_catalog +2117 max a 21 f 0 1 0 f i 21 pg_catalog +2118 max a 26 f 0 1 0 f i 26 pg_catalog +2119 max a 700 f 0 1 0 f i 700 pg_catalog +2120 max a 701 f 0 1 0 f i 701 pg_catalog +2121 pg_column_compression f 25 f 0 1 0 t s 2276 pg_catalog +2122 max a 1082 f 0 1 0 f i 1082 pg_catalog +2123 max a 1083 f 0 1 0 f i 1083 pg_catalog +2124 max a 1266 f 0 1 0 f i 1266 pg_catalog +2125 max a 790 f 0 1 0 f i 790 pg_catalog +2126 max a 1114 f 0 1 0 f i 1114 pg_catalog +2127 max a 1184 f 0 1 0 f i 1184 pg_catalog +2128 max a 1186 f 0 1 0 f i 1186 pg_catalog +2129 max a 25 f 0 1 0 f i 25 pg_catalog +2130 max a 1700 f 0 1 0 f i 1700 pg_catalog +2131 min a 20 f 0 1 0 f i 20 pg_catalog +2132 min a 23 f 0 1 0 f i 23 pg_catalog +2133 min a 21 f 0 1 0 f i 21 pg_catalog +2134 min a 26 f 0 1 0 f i 26 pg_catalog +2135 min a 700 f 0 1 0 f i 700 pg_catalog +2136 min a 701 f 0 1 0 f i 701 pg_catalog +2137 pg_stat_force_next_flush f 2278 f 0 0 0 f v pg_catalog +2138 min a 1082 f 0 1 0 f i 1082 pg_catalog +2139 min a 1083 f 0 1 0 f i 1083 pg_catalog +2140 min a 1266 f 0 1 0 f i 1266 pg_catalog +2141 min a 790 f 0 1 0 f i 790 pg_catalog +2142 min a 1114 f 0 1 0 f i 1114 pg_catalog +2143 min a 1184 f 0 1 0 f i 1184 pg_catalog +2144 min a 1186 f 0 1 0 f i 1186 pg_catalog +2145 min a 25 f 0 1 0 f i 25 pg_catalog +2146 min a 1700 f 0 1 0 f i 1700 pg_catalog +2147 count a 20 f 0 1 0 f i 2276 pg_catalog +2148 variance a 1700 f 0 1 0 f i 20 pg_catalog +2149 variance a 1700 f 0 1 0 f i 23 pg_catalog +2150 variance a 1700 f 0 1 0 f i 21 pg_catalog +2151 variance a 701 f 0 1 0 f i 700 pg_catalog +2152 variance a 701 f 0 1 0 f i 701 pg_catalog +2153 variance a 1700 f 0 1 0 f i 1700 pg_catalog +2154 stddev a 1700 f 0 1 0 f i 20 pg_catalog +2155 stddev a 1700 f 0 1 0 f i 23 pg_catalog +2156 stddev a 1700 f 0 1 0 f i 21 pg_catalog +2157 stddev a 701 f 0 1 0 f i 700 pg_catalog +2158 stddev a 701 f 0 1 0 f i 701 pg_catalog +2159 stddev a 1700 f 0 1 0 f i 1700 pg_catalog +2160 text_pattern_lt f 16 f 0 2 0 t i 25 25 pg_catalog +2161 text_pattern_le f 16 f 0 2 0 t i 25 25 pg_catalog +2162 pg_get_function_arguments f 25 f 0 1 0 t s 26 pg_catalog +2163 text_pattern_ge f 16 f 0 2 0 t i 25 25 pg_catalog +2164 text_pattern_gt f 16 f 0 2 0 t i 25 25 pg_catalog +2165 pg_get_function_result f 25 f 0 1 0 t s 26 pg_catalog +2166 bttext_pattern_cmp f 23 f 0 2 0 t i 25 25 pg_catalog +2167 ceiling f 1700 f 0 1 0 t i 1700 pg_catalog +2168 pg_database_size f 20 f 0 1 0 t v 19 pg_catalog +2169 power f 1700 f 0 2 0 t i 1700 1700 pg_catalog +2170 width_bucket f 23 f 0 4 0 t i 1700 1700 1700 23 pg_catalog +2171 pg_cancel_backend f 16 f 0 1 0 t v 23 pg_catalog +2172 pg_backup_start f 3220 f 0 2 1 t v 25 16 label,fast pg_catalog +2174 bpchar_pattern_lt f 16 f 0 2 0 t i 1042 1042 pg_catalog +2175 bpchar_pattern_le f 16 f 0 2 0 t i 1042 1042 pg_catalog +2176 array_length f 23 f 0 2 0 t i 2277 23 pg_catalog +2177 bpchar_pattern_ge f 16 f 0 2 0 t i 1042 1042 pg_catalog +2178 bpchar_pattern_gt f 16 f 0 2 0 t i 1042 1042 pg_catalog +2179 gist_point_consistent f 16 f 0 5 0 t i 2281 600 21 26 2281 pg_catalog +2180 btbpchar_pattern_cmp f 23 f 0 2 0 t i 1042 1042 pg_catalog +2181 has_sequence_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +2182 has_sequence_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +2183 has_sequence_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +2184 has_sequence_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +2185 has_sequence_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +2186 has_sequence_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +2188 btint48cmp f 23 f 0 2 0 t i 23 20 pg_catalog +2189 btint84cmp f 23 f 0 2 0 t i 20 23 pg_catalog +2190 btint24cmp f 23 f 0 2 0 t i 21 23 pg_catalog +2191 btint42cmp f 23 f 0 2 0 t i 23 21 pg_catalog +2192 btint28cmp f 23 f 0 2 0 t i 21 20 pg_catalog +2193 btint82cmp f 23 f 0 2 0 t i 20 21 pg_catalog +2194 btfloat48cmp f 23 f 0 2 0 t i 700 701 pg_catalog +2195 btfloat84cmp f 23 f 0 2 0 t i 701 700 pg_catalog +2196 inet_client_addr f 869 f 0 0 0 f s pg_catalog +2197 inet_client_port f 23 f 0 0 0 f s pg_catalog +2198 inet_server_addr f 869 f 0 0 0 f s pg_catalog +2199 inet_server_port f 23 f 0 0 0 f s pg_catalog +2212 regprocedurein f 2202 f 0 1 0 t s 2275 pg_catalog +2213 regprocedureout f 2275 f 0 1 0 t s 2202 pg_catalog +2214 regoperin f 2203 f 0 1 0 t s 2275 pg_catalog +2215 regoperout f 2275 f 0 1 0 t s 2203 pg_catalog +2216 regoperatorin f 2204 f 0 1 0 t s 2275 pg_catalog +2217 regoperatorout f 2275 f 0 1 0 t s 2204 pg_catalog +2218 regclassin f 2205 f 0 1 0 t s 2275 pg_catalog +2219 regclassout f 2275 f 0 1 0 t s 2205 pg_catalog +2220 regtypein f 2206 f 0 1 0 t s 2275 pg_catalog +2221 regtypeout f 2275 f 0 1 0 t s 2206 pg_catalog +2230 pg_stat_clear_snapshot f 2278 f 0 0 0 f v pg_catalog +2232 pg_get_function_identity_arguments f 25 f 0 1 0 t s 26 pg_catalog +2233 hashtid f 23 f 0 1 0 t i 27 pg_catalog +2234 hashtidextended f 20 f 0 2 0 t i 27 20 pg_catalog +2236 bit_and a 21 f 0 1 0 f i 21 pg_catalog +2237 bit_or a 21 f 0 1 0 f i 21 pg_catalog +2238 bit_and a 23 f 0 1 0 f i 23 pg_catalog +2239 bit_or a 23 f 0 1 0 f i 23 pg_catalog +2240 bit_and a 20 f 0 1 0 f i 20 pg_catalog +2241 bit_or a 20 f 0 1 0 f i 20 pg_catalog +2242 bit_and a 1560 f 0 1 0 f i 1560 pg_catalog +2243 bit_or a 1560 f 0 1 0 f i 1560 pg_catalog +2244 max a 1042 f 0 1 0 f i 1042 pg_catalog +2245 min a 1042 f 0 1 0 f i 1042 pg_catalog +2246 fmgr_internal_validator f 2278 f 0 1 0 t s 26 pg_catalog +2247 fmgr_c_validator f 2278 f 0 1 0 t s 26 pg_catalog +2248 fmgr_sql_validator f 2278 f 0 1 0 t s 26 pg_catalog +2250 has_database_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +2251 has_database_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +2252 has_database_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +2253 has_database_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +2254 has_database_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +2255 has_database_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +2256 has_function_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +2257 has_function_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +2258 has_function_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +2259 has_function_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +2260 has_function_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +2261 has_function_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +2262 has_language_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +2263 has_language_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +2264 has_language_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +2265 has_language_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +2266 has_language_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +2267 has_language_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +2268 has_schema_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +2269 has_schema_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +2270 has_schema_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +2271 has_schema_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +2272 has_schema_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +2273 has_schema_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +2274 pg_stat_reset f 2278 f 0 0 0 f v pg_catalog +2282 pg_get_backend_memory_contexts f 2249 t 0 0 0 t v 25 25 25 23 1007 20 20 20 20 20 oooooooooo name,ident,type,level,path,total_bytes,total_nblocks,free_bytes,free_chunks,used_bytes pg_catalog +2284 regexp_replace f 25 f 0 3 0 t i 25 25 25 string,pattern,replacement pg_catalog +2285 regexp_replace f 25 f 0 4 0 t i 25 25 25 25 string,pattern,replacement,flags pg_catalog +2286 pg_total_relation_size f 20 f 0 1 0 t v 2205 pg_catalog +2288 pg_size_pretty f 25 f 0 1 0 t i 20 pg_catalog +2289 pg_options_to_table f 2249 t 0 1 0 t s 1009 1009 25 25 ioo options_array,option_name,option_value pg_catalog +2290 record_in f 2249 f 0 3 0 t s 2275 26 23 pg_catalog +2291 record_out f 2275 f 0 1 0 t s 2249 pg_catalog +2292 cstring_in f 2275 f 0 1 0 t i 2275 pg_catalog +2293 cstring_out f 2275 f 0 1 0 t i 2275 pg_catalog +2294 any_in f 2276 f 0 1 0 t i 2275 pg_catalog +2295 any_out f 2275 f 0 1 0 t i 2276 pg_catalog +2296 anyarray_in f 2277 f 0 1 0 t i 2275 pg_catalog +2297 anyarray_out f 2275 f 0 1 0 t s 2277 pg_catalog +2298 void_in f 2278 f 0 1 0 t i 2275 pg_catalog +2299 void_out f 2275 f 0 1 0 t i 2278 pg_catalog +2300 trigger_in f 2279 f 0 1 0 f i 2275 pg_catalog +2301 trigger_out f 2275 f 0 1 0 t i 2279 pg_catalog +2302 language_handler_in f 2280 f 0 1 0 f i 2275 pg_catalog +2303 language_handler_out f 2275 f 0 1 0 t i 2280 pg_catalog +2304 internal_in f 2281 f 0 1 0 f i 2275 pg_catalog +2305 internal_out f 2275 f 0 1 0 t i 2281 pg_catalog +2306 pg_stat_get_slru f 2249 t 0 0 0 f s 25 20 20 20 20 20 20 20 1184 ooooooooo name,blks_zeroed,blks_hit,blks_read,blks_written,blks_exists,flushes,truncates,stats_reset pg_catalog +2307 pg_stat_reset_slru f 2278 f 0 1 1 f v 25 target pg_catalog +2308 ceil f 701 f 0 1 0 t i 701 pg_catalog +2309 floor f 701 f 0 1 0 t i 701 pg_catalog +2310 sign f 701 f 0 1 0 t i 701 pg_catalog +2311 md5 f 25 f 0 1 0 t i 25 pg_catalog +2312 anyelement_in f 2283 f 0 1 0 t i 2275 pg_catalog +2313 anyelement_out f 2275 f 0 1 0 t i 2283 pg_catalog +2316 postgresql_fdw_validator f 16 f 0 2 0 t i 1009 26 pg_catalog +2319 pg_encoding_max_length f 23 f 0 1 0 t i 23 pg_catalog +2320 ceiling f 701 f 0 1 0 t i 701 pg_catalog +2321 md5 f 25 f 0 1 0 t i 17 pg_catalog +2322 pg_tablespace_size f 20 f 0 1 0 t v 26 pg_catalog +2323 pg_tablespace_size f 20 f 0 1 0 t v 19 pg_catalog +2324 pg_database_size f 20 f 0 1 0 t v 26 pg_catalog +2325 pg_relation_size f 20 f 0 1 0 t v 2205 pg_catalog +2331 unnest f 2283 t 0 1 0 t i 2277 pg_catalog +2332 pg_relation_size f 20 f 0 2 0 t v 2205 25 pg_catalog +2333 array_agg_transfn f 2281 f 0 2 0 f i 2281 2776 pg_catalog +2334 array_agg_finalfn f 2277 f 0 2 0 f i 2281 2776 pg_catalog +2335 array_agg a 2277 f 0 1 0 f i 2776 pg_catalog +2338 date_lt_timestamp f 16 f 0 2 0 t i 1082 1114 pg_catalog +2339 date_le_timestamp f 16 f 0 2 0 t i 1082 1114 pg_catalog +2340 date_eq_timestamp f 16 f 0 2 0 t i 1082 1114 pg_catalog +2341 date_gt_timestamp f 16 f 0 2 0 t i 1082 1114 pg_catalog +2342 date_ge_timestamp f 16 f 0 2 0 t i 1082 1114 pg_catalog +2343 date_ne_timestamp f 16 f 0 2 0 t i 1082 1114 pg_catalog +2344 date_cmp_timestamp f 23 f 0 2 0 t i 1082 1114 pg_catalog +2351 date_lt_timestamptz f 16 f 0 2 0 t s 1082 1184 pg_catalog +2352 date_le_timestamptz f 16 f 0 2 0 t s 1082 1184 pg_catalog +2353 date_eq_timestamptz f 16 f 0 2 0 t s 1082 1184 pg_catalog +2354 date_gt_timestamptz f 16 f 0 2 0 t s 1082 1184 pg_catalog +2355 date_ge_timestamptz f 16 f 0 2 0 t s 1082 1184 pg_catalog +2356 date_ne_timestamptz f 16 f 0 2 0 t s 1082 1184 pg_catalog +2357 date_cmp_timestamptz f 23 f 0 2 0 t s 1082 1184 pg_catalog +2364 timestamp_lt_date f 16 f 0 2 0 t i 1114 1082 pg_catalog +2365 timestamp_le_date f 16 f 0 2 0 t i 1114 1082 pg_catalog +2366 timestamp_eq_date f 16 f 0 2 0 t i 1114 1082 pg_catalog +2367 timestamp_gt_date f 16 f 0 2 0 t i 1114 1082 pg_catalog +2368 timestamp_ge_date f 16 f 0 2 0 t i 1114 1082 pg_catalog +2369 timestamp_ne_date f 16 f 0 2 0 t i 1114 1082 pg_catalog +2370 timestamp_cmp_date f 23 f 0 2 0 t i 1114 1082 pg_catalog +2377 timestamptz_lt_date f 16 f 0 2 0 t s 1184 1082 pg_catalog +2378 timestamptz_le_date f 16 f 0 2 0 t s 1184 1082 pg_catalog +2379 timestamptz_eq_date f 16 f 0 2 0 t s 1184 1082 pg_catalog +2380 timestamptz_gt_date f 16 f 0 2 0 t s 1184 1082 pg_catalog +2381 timestamptz_ge_date f 16 f 0 2 0 t s 1184 1082 pg_catalog +2382 timestamptz_ne_date f 16 f 0 2 0 t s 1184 1082 pg_catalog +2383 timestamptz_cmp_date f 23 f 0 2 0 t s 1184 1082 pg_catalog +2390 has_tablespace_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +2391 has_tablespace_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +2392 has_tablespace_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +2393 has_tablespace_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +2394 has_tablespace_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +2395 has_tablespace_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +2398 shell_in f 2278 f 0 1 0 f i 2275 pg_catalog +2399 shell_out f 2275 f 0 1 0 t i 2278 pg_catalog +2400 array_recv f 2277 f 0 3 0 t s 2281 26 23 pg_catalog +2401 array_send f 17 f 0 1 0 t s 2277 pg_catalog +2402 record_recv f 2249 f 0 3 0 t s 2281 26 23 pg_catalog +2403 record_send f 17 f 0 1 0 t s 2249 pg_catalog +2404 int2recv f 21 f 0 1 0 t i 2281 pg_catalog +2405 int2send f 17 f 0 1 0 t i 21 pg_catalog +2406 int4recv f 23 f 0 1 0 t i 2281 pg_catalog +2407 int4send f 17 f 0 1 0 t i 23 pg_catalog +2408 int8recv f 20 f 0 1 0 t i 2281 pg_catalog +2409 int8send f 17 f 0 1 0 t i 20 pg_catalog +2410 int2vectorrecv f 22 f 0 1 0 t i 2281 pg_catalog +2411 int2vectorsend f 17 f 0 1 0 t i 22 pg_catalog +2412 bytearecv f 17 f 0 1 0 t i 2281 pg_catalog +2413 byteasend f 17 f 0 1 0 t i 17 pg_catalog +2414 textrecv f 25 f 0 1 0 t s 2281 pg_catalog +2415 textsend f 17 f 0 1 0 t s 25 pg_catalog +2416 unknownrecv f 705 f 0 1 0 t i 2281 pg_catalog +2417 unknownsend f 17 f 0 1 0 t i 705 pg_catalog +2418 oidrecv f 26 f 0 1 0 t i 2281 pg_catalog +2419 oidsend f 17 f 0 1 0 t i 26 pg_catalog +2420 oidvectorrecv f 30 f 0 1 0 t i 2281 pg_catalog +2421 oidvectorsend f 17 f 0 1 0 t i 30 pg_catalog +2422 namerecv f 19 f 0 1 0 t s 2281 pg_catalog +2423 namesend f 17 f 0 1 0 t s 19 pg_catalog +2424 float4recv f 700 f 0 1 0 t i 2281 pg_catalog +2425 float4send f 17 f 0 1 0 t i 700 pg_catalog +2426 float8recv f 701 f 0 1 0 t i 2281 pg_catalog +2427 float8send f 17 f 0 1 0 t i 701 pg_catalog +2428 point_recv f 600 f 0 1 0 t i 2281 pg_catalog +2429 point_send f 17 f 0 1 0 t i 600 pg_catalog +2430 bpcharrecv f 1042 f 0 3 0 t s 2281 26 23 pg_catalog +2431 bpcharsend f 17 f 0 1 0 t s 1042 pg_catalog +2432 varcharrecv f 1043 f 0 3 0 t s 2281 26 23 pg_catalog +2433 varcharsend f 17 f 0 1 0 t s 1043 pg_catalog +2434 charrecv f 18 f 0 1 0 t i 2281 pg_catalog +2435 charsend f 17 f 0 1 0 t i 18 pg_catalog +2436 boolrecv f 16 f 0 1 0 t i 2281 pg_catalog +2437 boolsend f 17 f 0 1 0 t i 16 pg_catalog +2438 tidrecv f 27 f 0 1 0 t i 2281 pg_catalog +2439 tidsend f 17 f 0 1 0 t i 27 pg_catalog +2440 xidrecv f 28 f 0 1 0 t i 2281 pg_catalog +2441 xidsend f 17 f 0 1 0 t i 28 pg_catalog +2442 cidrecv f 29 f 0 1 0 t i 2281 pg_catalog +2443 cidsend f 17 f 0 1 0 t i 29 pg_catalog +2444 regprocrecv f 24 f 0 1 0 t i 2281 pg_catalog +2445 regprocsend f 17 f 0 1 0 t i 24 pg_catalog +2446 regprocedurerecv f 2202 f 0 1 0 t i 2281 pg_catalog +2447 regproceduresend f 17 f 0 1 0 t i 2202 pg_catalog +2448 regoperrecv f 2203 f 0 1 0 t i 2281 pg_catalog +2449 regopersend f 17 f 0 1 0 t i 2203 pg_catalog +2450 regoperatorrecv f 2204 f 0 1 0 t i 2281 pg_catalog +2451 regoperatorsend f 17 f 0 1 0 t i 2204 pg_catalog +2452 regclassrecv f 2205 f 0 1 0 t i 2281 pg_catalog +2453 regclasssend f 17 f 0 1 0 t i 2205 pg_catalog +2454 regtyperecv f 2206 f 0 1 0 t i 2281 pg_catalog +2455 regtypesend f 17 f 0 1 0 t i 2206 pg_catalog +2456 bit_recv f 1560 f 0 3 0 t i 2281 26 23 pg_catalog +2457 bit_send f 17 f 0 1 0 t i 1560 pg_catalog +2458 varbit_recv f 1562 f 0 3 0 t i 2281 26 23 pg_catalog +2459 varbit_send f 17 f 0 1 0 t i 1562 pg_catalog +2460 numeric_recv f 1700 f 0 3 0 t i 2281 26 23 pg_catalog +2461 numeric_send f 17 f 0 1 0 t i 1700 pg_catalog +2462 sinh f 701 f 0 1 0 t i 701 pg_catalog +2463 cosh f 701 f 0 1 0 t i 701 pg_catalog +2464 tanh f 701 f 0 1 0 t i 701 pg_catalog +2465 asinh f 701 f 0 1 0 t i 701 pg_catalog +2466 acosh f 701 f 0 1 0 t i 701 pg_catalog +2467 atanh f 701 f 0 1 0 t i 701 pg_catalog +2468 date_recv f 1082 f 0 1 0 t i 2281 pg_catalog +2469 date_send f 17 f 0 1 0 t i 1082 pg_catalog +2470 time_recv f 1083 f 0 3 0 t i 2281 26 23 pg_catalog +2471 time_send f 17 f 0 1 0 t i 1083 pg_catalog +2472 timetz_recv f 1266 f 0 3 0 t i 2281 26 23 pg_catalog +2473 timetz_send f 17 f 0 1 0 t i 1266 pg_catalog +2474 timestamp_recv f 1114 f 0 3 0 t i 2281 26 23 pg_catalog +2475 timestamp_send f 17 f 0 1 0 t i 1114 pg_catalog +2476 timestamptz_recv f 1184 f 0 3 0 t i 2281 26 23 pg_catalog +2477 timestamptz_send f 17 f 0 1 0 t i 1184 pg_catalog +2478 interval_recv f 1186 f 0 3 0 t i 2281 26 23 pg_catalog +2479 interval_send f 17 f 0 1 0 t i 1186 pg_catalog +2480 lseg_recv f 601 f 0 1 0 t i 2281 pg_catalog +2481 lseg_send f 17 f 0 1 0 t i 601 pg_catalog +2482 path_recv f 602 f 0 1 0 t i 2281 pg_catalog +2483 path_send f 17 f 0 1 0 t i 602 pg_catalog +2484 box_recv f 603 f 0 1 0 t i 2281 pg_catalog +2485 box_send f 17 f 0 1 0 t i 603 pg_catalog +2486 poly_recv f 604 f 0 1 0 t i 2281 pg_catalog +2487 poly_send f 17 f 0 1 0 t i 604 pg_catalog +2488 line_recv f 628 f 0 1 0 t i 2281 pg_catalog +2489 line_send f 17 f 0 1 0 t i 628 pg_catalog +2490 circle_recv f 718 f 0 1 0 t i 2281 pg_catalog +2491 circle_send f 17 f 0 1 0 t i 718 pg_catalog +2492 cash_recv f 790 f 0 1 0 t i 2281 pg_catalog +2493 cash_send f 17 f 0 1 0 t i 790 pg_catalog +2494 macaddr_recv f 829 f 0 1 0 t i 2281 pg_catalog +2495 macaddr_send f 17 f 0 1 0 t i 829 pg_catalog +2496 inet_recv f 869 f 0 1 0 t i 2281 pg_catalog +2497 inet_send f 17 f 0 1 0 t i 869 pg_catalog +2498 cidr_recv f 650 f 0 1 0 t i 2281 pg_catalog +2499 cidr_send f 17 f 0 1 0 t i 650 pg_catalog +2500 cstring_recv f 2275 f 0 1 0 t s 2281 pg_catalog +2501 cstring_send f 17 f 0 1 0 t s 2275 pg_catalog +2502 anyarray_recv f 2277 f 0 1 0 t s 2281 pg_catalog +2503 anyarray_send f 17 f 0 1 0 t s 2277 pg_catalog +2504 pg_get_ruledef f 25 f 0 2 0 t s 26 16 pg_catalog +2505 pg_get_viewdef f 25 f 0 2 0 t s 25 16 pg_catalog +2506 pg_get_viewdef f 25 f 0 2 0 t s 26 16 pg_catalog +2507 pg_get_indexdef f 25 f 0 3 0 t s 26 23 16 pg_catalog +2508 pg_get_constraintdef f 25 f 0 2 0 t s 26 16 pg_catalog +2509 pg_get_expr f 25 f 0 3 0 t s 194 26 16 pg_catalog +2510 pg_prepared_statement f 2249 t 0 0 0 t s 25 25 1184 2211 2211 16 20 20 oooooooo name,statement,prepare_time,parameter_types,result_types,from_sql,generic_plans,custom_plans pg_catalog +2511 pg_cursor f 2249 t 0 0 0 t s 25 25 16 16 16 1184 oooooo name,statement,is_holdable,is_binary,is_scrollable,creation_time pg_catalog +2512 float8_var_pop f 701 f 0 1 0 t i 1022 pg_catalog +2513 float8_stddev_pop f 701 f 0 1 0 t i 1022 pg_catalog +2514 numeric_var_pop f 1700 f 0 1 0 f i 2281 pg_catalog +2515 booland_statefunc f 16 f 0 2 0 t i 16 16 pg_catalog +2516 boolor_statefunc f 16 f 0 2 0 t i 16 16 pg_catalog +2517 bool_and a 16 f 0 1 0 f i 16 pg_catalog +2518 bool_or a 16 f 0 1 0 f i 16 pg_catalog +2519 every a 16 f 0 1 0 f i 16 pg_catalog +2520 timestamp_lt_timestamptz f 16 f 0 2 0 t s 1114 1184 pg_catalog +2521 timestamp_le_timestamptz f 16 f 0 2 0 t s 1114 1184 pg_catalog +2522 timestamp_eq_timestamptz f 16 f 0 2 0 t s 1114 1184 pg_catalog +2523 timestamp_gt_timestamptz f 16 f 0 2 0 t s 1114 1184 pg_catalog +2524 timestamp_ge_timestamptz f 16 f 0 2 0 t s 1114 1184 pg_catalog +2525 timestamp_ne_timestamptz f 16 f 0 2 0 t s 1114 1184 pg_catalog +2526 timestamp_cmp_timestamptz f 23 f 0 2 0 t s 1114 1184 pg_catalog +2527 timestamptz_lt_timestamp f 16 f 0 2 0 t s 1184 1114 pg_catalog +2528 timestamptz_le_timestamp f 16 f 0 2 0 t s 1184 1114 pg_catalog +2529 timestamptz_eq_timestamp f 16 f 0 2 0 t s 1184 1114 pg_catalog +2530 timestamptz_gt_timestamp f 16 f 0 2 0 t s 1184 1114 pg_catalog +2531 timestamptz_ge_timestamp f 16 f 0 2 0 t s 1184 1114 pg_catalog +2532 timestamptz_ne_timestamp f 16 f 0 2 0 t s 1184 1114 pg_catalog +2533 timestamptz_cmp_timestamp f 23 f 0 2 0 t s 1184 1114 pg_catalog +2546 interval_pl_date f 1114 f 0 2 0 t i 1186 1082 pg_catalog +2547 interval_pl_timetz f 1266 f 0 2 0 t i 1186 1266 pg_catalog +2548 interval_pl_timestamp f 1114 f 0 2 0 t i 1186 1114 pg_catalog +2549 interval_pl_timestamptz f 1184 f 0 2 0 t s 1186 1184 pg_catalog +2550 integer_pl_date f 1082 f 0 2 0 t i 23 1082 pg_catalog +2556 pg_tablespace_databases f 26 t 0 1 0 t s 26 pg_catalog +2557 bool f 16 f 0 1 0 t i 23 pg_catalog +2558 int4 f 23 f 0 1 0 t i 16 pg_catalog +2559 lastval f 20 f 0 0 0 t v pg_catalog +2560 pg_postmaster_start_time f 1184 f 0 0 0 t s pg_catalog +2561 pg_blocking_pids f 1007 f 0 1 0 t v 23 pg_catalog +2562 box_below f 16 f 0 2 0 t i 603 603 pg_catalog +2563 box_overbelow f 16 f 0 2 0 t i 603 603 pg_catalog +2564 box_overabove f 16 f 0 2 0 t i 603 603 pg_catalog +2565 box_above f 16 f 0 2 0 t i 603 603 pg_catalog +2566 poly_below f 16 f 0 2 0 t i 604 604 pg_catalog +2567 poly_overbelow f 16 f 0 2 0 t i 604 604 pg_catalog +2568 poly_overabove f 16 f 0 2 0 t i 604 604 pg_catalog +2569 poly_above f 16 f 0 2 0 t i 604 604 pg_catalog +2578 gist_box_consistent f 16 f 0 5 0 t i 2281 603 21 26 2281 pg_catalog +2580 float8 f 701 f 0 1 0 t i 3802 pg_catalog +2581 gist_box_penalty f 2281 f 0 3 0 t i 2281 2281 2281 pg_catalog +2582 gist_box_picksplit f 2281 f 0 2 0 t i 2281 2281 pg_catalog +2583 gist_box_union f 603 f 0 2 0 t i 2281 2281 pg_catalog +2584 gist_box_same f 2281 f 0 3 0 t i 603 603 2281 pg_catalog +2585 gist_poly_consistent f 16 f 0 5 0 t i 2281 604 21 26 2281 pg_catalog +2586 gist_poly_compress f 2281 f 0 1 0 t i 2281 pg_catalog +2587 circle_overbelow f 16 f 0 2 0 t i 718 718 pg_catalog +2588 circle_overabove f 16 f 0 2 0 t i 718 718 pg_catalog +2591 gist_circle_consistent f 16 f 0 5 0 t i 2281 718 21 26 2281 pg_catalog +2592 gist_circle_compress f 2281 f 0 1 0 t i 2281 pg_catalog +2596 numeric_stddev_pop f 1700 f 0 1 0 f i 2281 pg_catalog +2597 domain_in f 2276 f 0 3 0 f s 2275 26 23 pg_catalog +2598 domain_recv f 2276 f 0 3 0 f s 2281 26 23 pg_catalog +2599 pg_timezone_abbrevs_abbrevs f 2249 t 0 0 0 t s 25 1186 16 ooo abbrev,utc_offset,is_dst pg_catalog +2614 xmlexists f 16 f 0 2 0 t i 25 142 pg_catalog +2621 pg_reload_conf f 16 f 0 0 0 t v pg_catalog +2622 pg_rotate_logfile f 16 f 0 0 0 t v pg_catalog +2623 pg_stat_file f 2249 f 0 1 0 t v 25 25 20 1184 1184 1184 1184 16 ioooooo filename,size,access,modification,change,creation,isdir pg_catalog +2624 pg_read_file f 25 f 0 3 0 t v 25 20 20 pg_catalog +2625 pg_ls_dir f 25 t 0 1 0 t v 25 pg_catalog +2626 pg_sleep f 2278 f 0 1 0 t v 701 pg_catalog +2627 inetnot f 869 f 0 1 0 t i 869 pg_catalog +2628 inetand f 869 f 0 2 0 t i 869 869 pg_catalog +2629 inetor f 869 f 0 2 0 t i 869 869 pg_catalog +2630 inetpl f 869 f 0 2 0 t i 869 20 pg_catalog +2631 int8pl_inet f 869 f 0 2 0 t i 20 869 pg_catalog +2632 inetmi_int8 f 869 f 0 2 0 t i 869 20 pg_catalog +2633 inetmi f 20 f 0 2 0 t i 869 869 pg_catalog +2641 var_samp a 1700 f 0 1 0 f i 20 pg_catalog +2642 var_samp a 1700 f 0 1 0 f i 23 pg_catalog +2643 var_samp a 1700 f 0 1 0 f i 21 pg_catalog +2644 var_samp a 701 f 0 1 0 f i 700 pg_catalog +2645 var_samp a 701 f 0 1 0 f i 701 pg_catalog +2646 var_samp a 1700 f 0 1 0 f i 1700 pg_catalog +2647 transaction_timestamp f 1184 f 0 0 0 t s pg_catalog +2648 statement_timestamp f 1184 f 0 0 0 t s pg_catalog +2649 clock_timestamp f 1184 f 0 0 0 t v pg_catalog +2700 gin_cmp_prefix f 23 f 0 4 0 t i 25 25 21 2281 pg_catalog +2705 pg_has_role f 16 f 0 3 0 t s 19 19 25 pg_catalog +2706 pg_has_role f 16 f 0 3 0 t s 19 26 25 pg_catalog +2707 pg_has_role f 16 f 0 3 0 t s 26 19 25 pg_catalog +2708 pg_has_role f 16 f 0 3 0 t s 26 26 25 pg_catalog +2709 pg_has_role f 16 f 0 2 0 t s 19 25 pg_catalog +2710 pg_has_role f 16 f 0 2 0 t s 26 25 pg_catalog +2711 justify_interval f 1186 f 0 1 0 t i 1186 pg_catalog +2712 stddev_samp a 1700 f 0 1 0 f i 20 pg_catalog +2713 stddev_samp a 1700 f 0 1 0 f i 23 pg_catalog +2714 stddev_samp a 1700 f 0 1 0 f i 21 pg_catalog +2715 stddev_samp a 701 f 0 1 0 f i 700 pg_catalog +2716 stddev_samp a 701 f 0 1 0 f i 701 pg_catalog +2717 stddev_samp a 1700 f 0 1 0 f i 1700 pg_catalog +2718 var_pop a 1700 f 0 1 0 f i 20 pg_catalog +2719 var_pop a 1700 f 0 1 0 f i 23 pg_catalog +2720 var_pop a 1700 f 0 1 0 f i 21 pg_catalog +2721 var_pop a 701 f 0 1 0 f i 700 pg_catalog +2722 var_pop a 701 f 0 1 0 f i 701 pg_catalog +2723 var_pop a 1700 f 0 1 0 f i 1700 pg_catalog +2724 stddev_pop a 1700 f 0 1 0 f i 20 pg_catalog +2725 stddev_pop a 1700 f 0 1 0 f i 23 pg_catalog +2726 stddev_pop a 1700 f 0 1 0 f i 21 pg_catalog +2727 stddev_pop a 701 f 0 1 0 f i 700 pg_catalog +2728 stddev_pop a 701 f 0 1 0 f i 701 pg_catalog +2729 stddev_pop a 1700 f 0 1 0 f i 1700 pg_catalog +2730 pg_get_triggerdef f 25 f 0 2 0 t s 26 16 pg_catalog +2731 asind f 701 f 0 1 0 t i 701 pg_catalog +2732 acosd f 701 f 0 1 0 t i 701 pg_catalog +2733 atand f 701 f 0 1 0 t i 701 pg_catalog +2734 atan2d f 701 f 0 2 0 t i 701 701 pg_catalog +2735 sind f 701 f 0 1 0 t i 701 pg_catalog +2736 cosd f 701 f 0 1 0 t i 701 pg_catalog +2737 tand f 701 f 0 1 0 t i 701 pg_catalog +2738 cotd f 701 f 0 1 0 t i 701 pg_catalog +2739 pg_backup_stop f 2249 f 0 1 1 t v 16 16 3220 25 25 iooo wait_for_archive,lsn,labelfile,spcmapfile pg_catalog +2740 numeric_avg_serialize f 17 f 0 1 0 t i 2281 pg_catalog +2741 numeric_avg_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +2743 ginarrayextract f 2281 f 0 3 0 t i 2277 2281 2281 pg_catalog +2744 ginarrayconsistent f 16 f 0 8 0 t i 2281 21 2277 23 2281 2281 2281 2281 pg_catalog +2746 int8_avg_accum f 2281 f 0 2 0 f i 2281 20 pg_catalog +2747 arrayoverlap f 16 f 0 2 0 t i 2277 2277 pg_catalog +2748 arraycontains f 16 f 0 2 0 t i 2277 2277 pg_catalog +2749 arraycontained f 16 f 0 2 0 t i 2277 2277 pg_catalog +2758 pg_stat_get_db_tuples_returned f 20 f 0 1 0 t s 26 pg_catalog +2759 pg_stat_get_db_tuples_fetched f 20 f 0 1 0 t s 26 pg_catalog +2760 pg_stat_get_db_tuples_inserted f 20 f 0 1 0 t s 26 pg_catalog +2761 pg_stat_get_db_tuples_updated f 20 f 0 1 0 t s 26 pg_catalog +2762 pg_stat_get_db_tuples_deleted f 20 f 0 1 0 t s 26 pg_catalog +2763 regexp_matches f 1009 t 0 2 0 t i 25 25 string,pattern pg_catalog +2764 regexp_matches f 1009 t 0 3 0 t i 25 25 25 string,pattern,flags pg_catalog +2765 regexp_split_to_table f 25 t 0 2 0 t i 25 25 string,pattern pg_catalog +2766 regexp_split_to_table f 25 t 0 3 0 t i 25 25 25 string,pattern,flags pg_catalog +2767 regexp_split_to_array f 1009 f 0 2 0 t i 25 25 string,pattern pg_catalog +2768 regexp_split_to_array f 1009 f 0 3 0 t i 25 25 25 string,pattern,flags pg_catalog +2769 pg_stat_get_checkpointer_num_timed f 20 f 0 0 0 t s pg_catalog +2770 pg_stat_get_checkpointer_num_requested f 20 f 0 0 0 t s pg_catalog +2771 pg_stat_get_checkpointer_buffers_written f 20 f 0 0 0 t s pg_catalog +2772 pg_stat_get_bgwriter_buf_written_clean f 20 f 0 0 0 t s pg_catalog +2773 pg_stat_get_bgwriter_maxwritten_clean f 20 f 0 0 0 t s pg_catalog +2774 ginqueryarrayextract f 2281 f 0 7 0 t i 2277 2281 21 2281 2281 2281 2281 pg_catalog +2777 anynonarray_in f 2776 f 0 1 0 t i 2275 pg_catalog +2778 anynonarray_out f 2275 f 0 1 0 t i 2776 pg_catalog +2781 pg_stat_get_last_vacuum_time f 1184 f 0 1 0 t s 26 pg_catalog +2782 pg_stat_get_last_autovacuum_time f 1184 f 0 1 0 t s 26 pg_catalog +2783 pg_stat_get_last_analyze_time f 1184 f 0 1 0 t s 26 pg_catalog +2784 pg_stat_get_last_autoanalyze_time f 1184 f 0 1 0 t s 26 pg_catalog +2785 int8_avg_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +2786 int8_avg_serialize f 17 f 0 1 0 t i 2281 pg_catalog +2787 int8_avg_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +2788 pg_stat_get_backend_wait_event_type f 25 f 0 1 0 t s 23 pg_catalog +2790 tidgt f 16 f 0 2 0 t i 27 27 pg_catalog +2791 tidlt f 16 f 0 2 0 t i 27 27 pg_catalog +2792 tidge f 16 f 0 2 0 t i 27 27 pg_catalog +2793 tidle f 16 f 0 2 0 t i 27 27 pg_catalog +2794 bttidcmp f 23 f 0 2 0 t i 27 27 pg_catalog +2795 tidlarger f 27 f 0 2 0 t i 27 27 pg_catalog +2796 tidsmaller f 27 f 0 2 0 t i 27 27 pg_catalog +2797 max a 27 f 0 1 0 f i 27 pg_catalog +2798 min a 27 f 0 1 0 f i 27 pg_catalog +2803 count a 20 f 0 0 0 f i pg_catalog +2804 int8inc_any f 20 f 0 2 0 t i 20 2276 pg_catalog +2805 int8inc_float8_float8 f 20 f 0 3 0 t i 20 701 701 pg_catalog +2806 float8_regr_accum f 1022 f 0 3 0 t i 1022 701 701 pg_catalog +2807 float8_regr_sxx f 701 f 0 1 0 t i 1022 pg_catalog +2808 float8_regr_syy f 701 f 0 1 0 t i 1022 pg_catalog +2809 float8_regr_sxy f 701 f 0 1 0 t i 1022 pg_catalog +2810 float8_regr_avgx f 701 f 0 1 0 t i 1022 pg_catalog +2811 float8_regr_avgy f 701 f 0 1 0 t i 1022 pg_catalog +2812 float8_regr_r2 f 701 f 0 1 0 t i 1022 pg_catalog +2813 float8_regr_slope f 701 f 0 1 0 t i 1022 pg_catalog +2814 float8_regr_intercept f 701 f 0 1 0 t i 1022 pg_catalog +2815 float8_covar_pop f 701 f 0 1 0 t i 1022 pg_catalog +2816 float8_covar_samp f 701 f 0 1 0 t i 1022 pg_catalog +2817 float8_corr f 701 f 0 1 0 t i 1022 pg_catalog +2818 regr_count a 20 f 0 2 0 f i 701 701 pg_catalog +2819 regr_sxx a 701 f 0 2 0 f i 701 701 pg_catalog +2820 regr_syy a 701 f 0 2 0 f i 701 701 pg_catalog +2821 regr_sxy a 701 f 0 2 0 f i 701 701 pg_catalog +2822 regr_avgx a 701 f 0 2 0 f i 701 701 pg_catalog +2823 regr_avgy a 701 f 0 2 0 f i 701 701 pg_catalog +2824 regr_r2 a 701 f 0 2 0 f i 701 701 pg_catalog +2825 regr_slope a 701 f 0 2 0 f i 701 701 pg_catalog +2826 regr_intercept a 701 f 0 2 0 f i 701 701 pg_catalog +2827 covar_pop a 701 f 0 2 0 f i 701 701 pg_catalog +2828 covar_samp a 701 f 0 2 0 f i 701 701 pg_catalog +2829 corr a 701 f 0 2 0 f i 701 701 pg_catalog +2844 pg_stat_get_db_blk_read_time f 701 f 0 1 0 t s 26 pg_catalog +2845 pg_stat_get_db_blk_write_time f 701 f 0 1 0 t s 26 pg_catalog +2848 pg_switch_wal f 3220 f 0 0 0 t v pg_catalog +2849 pg_current_wal_lsn f 3220 f 0 0 0 t v pg_catalog +2850 pg_walfile_name_offset f 2249 f 0 1 0 t i 3220 3220 25 23 ioo lsn,file_name,file_offset pg_catalog +2851 pg_walfile_name f 25 f 0 1 0 t i 3220 pg_catalog +2852 pg_current_wal_insert_lsn f 3220 f 0 0 0 t v pg_catalog +2853 pg_stat_get_backend_wait_event f 25 f 0 1 0 t s 23 pg_catalog +2854 pg_my_temp_schema f 26 f 0 0 0 t s pg_catalog +2855 pg_is_other_temp_schema f 16 f 0 1 0 t s 26 pg_catalog +2856 pg_timezone_names f 2249 t 0 0 0 t s 25 25 1186 16 oooo name,abbrev,utc_offset,is_dst pg_catalog +2857 pg_stat_get_backend_xact_start f 1184 f 0 1 0 t s 23 pg_catalog +2858 numeric_avg_accum f 2281 f 0 2 0 f i 2281 1700 pg_catalog +2859 pg_stat_get_buf_alloc f 20 f 0 0 0 t s pg_catalog +2878 pg_stat_get_live_tuples f 20 f 0 1 0 t s 26 pg_catalog +2879 pg_stat_get_dead_tuples f 20 f 0 1 0 t s 26 pg_catalog +2880 pg_advisory_lock f 2278 f 0 1 0 t v 20 pg_catalog +2881 pg_advisory_lock_shared f 2278 f 0 1 0 t v 20 pg_catalog +2882 pg_try_advisory_lock f 16 f 0 1 0 t v 20 pg_catalog +2883 pg_try_advisory_lock_shared f 16 f 0 1 0 t v 20 pg_catalog +2884 pg_advisory_unlock f 16 f 0 1 0 t v 20 pg_catalog +2885 pg_advisory_unlock_shared f 16 f 0 1 0 t v 20 pg_catalog +2886 pg_advisory_lock f 2278 f 0 2 0 t v 23 23 pg_catalog +2887 pg_advisory_lock_shared f 2278 f 0 2 0 t v 23 23 pg_catalog +2888 pg_try_advisory_lock f 16 f 0 2 0 t v 23 23 pg_catalog +2889 pg_try_advisory_lock_shared f 16 f 0 2 0 t v 23 23 pg_catalog +2890 pg_advisory_unlock f 16 f 0 2 0 t v 23 23 pg_catalog +2891 pg_advisory_unlock_shared f 16 f 0 2 0 t v 23 23 pg_catalog +2892 pg_advisory_unlock_all f 2278 f 0 0 0 t v pg_catalog +2893 xml_in f 142 f 0 1 0 t s 2275 pg_catalog +2894 xml_out f 2275 f 0 1 0 t i 142 pg_catalog +2895 xmlcomment f 142 f 0 1 0 t i 25 pg_catalog +2896 xml f 142 f 0 1 0 t s 25 pg_catalog +2897 xmlvalidate f 16 f 0 2 0 t i 142 25 pg_catalog +2898 xml_recv f 142 f 0 1 0 t s 2281 pg_catalog +2899 xml_send f 17 f 0 1 0 t s 142 pg_catalog +2900 xmlconcat2 f 142 f 0 2 0 f i 142 142 pg_catalog +2901 xmlagg a 142 f 0 1 0 f i 142 pg_catalog +2902 varbittypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2903 intervaltypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2904 intervaltypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2905 timestamptypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2906 timestamptypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2907 timestamptztypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2908 timestamptztypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2909 timetypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2910 timetypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2911 timetztypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2912 timetztypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2913 bpchartypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2914 bpchartypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2915 varchartypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2916 varchartypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2917 numerictypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2918 numerictypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2919 bittypmodin f 23 f 0 1 0 t i 1263 pg_catalog +2920 bittypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2921 varbittypmodout f 2275 f 0 1 0 t i 23 pg_catalog +2922 text f 25 f 0 1 0 t i 142 pg_catalog +2923 table_to_xml f 142 f 0 4 0 t s 2205 16 16 25 tbl,nulls,tableforest,targetns pg_catalog +2924 query_to_xml f 142 f 0 4 0 t v 25 16 16 25 query,nulls,tableforest,targetns pg_catalog +2925 cursor_to_xml f 142 f 0 5 0 t v 1790 23 16 16 25 cursor,count,nulls,tableforest,targetns pg_catalog +2926 table_to_xmlschema f 142 f 0 4 0 t s 2205 16 16 25 tbl,nulls,tableforest,targetns pg_catalog +2927 query_to_xmlschema f 142 f 0 4 0 t v 25 16 16 25 query,nulls,tableforest,targetns pg_catalog +2928 cursor_to_xmlschema f 142 f 0 4 0 t v 1790 16 16 25 cursor,nulls,tableforest,targetns pg_catalog +2929 table_to_xml_and_xmlschema f 142 f 0 4 0 t s 2205 16 16 25 tbl,nulls,tableforest,targetns pg_catalog +2930 query_to_xml_and_xmlschema f 142 f 0 4 0 t v 25 16 16 25 query,nulls,tableforest,targetns pg_catalog +2931 xpath f 143 f 0 3 0 t i 25 142 1009 pg_catalog +2932 xpath f 143 f 0 2 0 t i 25 142 pg_catalog +2933 schema_to_xml f 142 f 0 4 0 t s 19 16 16 25 schema,nulls,tableforest,targetns pg_catalog +2934 schema_to_xmlschema f 142 f 0 4 0 t s 19 16 16 25 schema,nulls,tableforest,targetns pg_catalog +2935 schema_to_xml_and_xmlschema f 142 f 0 4 0 t s 19 16 16 25 schema,nulls,tableforest,targetns pg_catalog +2936 database_to_xml f 142 f 0 3 0 t s 16 16 25 nulls,tableforest,targetns pg_catalog +2937 database_to_xmlschema f 142 f 0 3 0 t s 16 16 25 nulls,tableforest,targetns pg_catalog +2938 database_to_xml_and_xmlschema f 142 f 0 3 0 t s 16 16 25 nulls,tableforest,targetns pg_catalog +2939 txid_snapshot_in f 2970 f 0 1 0 t i 2275 pg_catalog +2940 txid_snapshot_out f 2275 f 0 1 0 t i 2970 pg_catalog +2941 txid_snapshot_recv f 2970 f 0 1 0 t i 2281 pg_catalog +2942 txid_snapshot_send f 17 f 0 1 0 t i 2970 pg_catalog +2943 txid_current f 20 f 0 0 0 t s pg_catalog +2944 txid_current_snapshot f 2970 f 0 0 0 t s pg_catalog +2945 txid_snapshot_xmin f 20 f 0 1 0 t i 2970 pg_catalog +2946 txid_snapshot_xmax f 20 f 0 1 0 t i 2970 pg_catalog +2947 txid_snapshot_xip f 20 t 0 1 0 t i 2970 pg_catalog +2948 txid_visible_in_snapshot f 16 f 0 2 0 t i 20 2970 pg_catalog +2952 uuid_in f 2950 f 0 1 0 t i 2275 pg_catalog +2953 uuid_out f 2275 f 0 1 0 t i 2950 pg_catalog +2954 uuid_lt f 16 f 0 2 0 t i 2950 2950 pg_catalog +2955 uuid_le f 16 f 0 2 0 t i 2950 2950 pg_catalog +2956 uuid_eq f 16 f 0 2 0 t i 2950 2950 pg_catalog +2957 uuid_ge f 16 f 0 2 0 t i 2950 2950 pg_catalog +2958 uuid_gt f 16 f 0 2 0 t i 2950 2950 pg_catalog +2959 uuid_ne f 16 f 0 2 0 t i 2950 2950 pg_catalog +2960 uuid_cmp f 23 f 0 2 0 t i 2950 2950 pg_catalog +2961 uuid_recv f 2950 f 0 1 0 t i 2281 pg_catalog +2962 uuid_send f 17 f 0 1 0 t i 2950 pg_catalog +2963 uuid_hash f 23 f 0 1 0 t i 2950 pg_catalog +2971 text f 25 f 0 1 0 t i 16 pg_catalog +2978 pg_stat_get_function_calls f 20 f 0 1 0 t s 26 pg_catalog +2979 pg_stat_get_function_total_time f 701 f 0 1 0 t s 26 pg_catalog +2980 pg_stat_get_function_self_time f 701 f 0 1 0 t s 26 pg_catalog +2981 record_eq f 16 f 0 2 0 t i 2249 2249 pg_catalog +2982 record_ne f 16 f 0 2 0 t i 2249 2249 pg_catalog +2983 record_lt f 16 f 0 2 0 t i 2249 2249 pg_catalog +2984 record_gt f 16 f 0 2 0 t i 2249 2249 pg_catalog +2985 record_le f 16 f 0 2 0 t i 2249 2249 pg_catalog +2986 record_ge f 16 f 0 2 0 t i 2249 2249 pg_catalog +2987 btrecordcmp f 23 f 0 2 0 t i 2249 2249 pg_catalog +2997 pg_table_size f 20 f 0 1 0 t v 2205 pg_catalog +2998 pg_indexes_size f 20 f 0 1 0 t v 2205 pg_catalog +2999 pg_relation_filenode f 26 f 0 1 0 t s 2205 pg_catalog +3000 has_foreign_data_wrapper_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +3001 has_foreign_data_wrapper_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +3002 has_foreign_data_wrapper_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +3003 has_foreign_data_wrapper_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +3004 has_foreign_data_wrapper_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +3005 has_foreign_data_wrapper_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +3006 has_server_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +3007 has_server_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +3008 has_server_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +3009 has_server_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +3010 has_server_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +3011 has_server_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +3012 has_column_privilege f 16 f 0 4 0 t s 19 25 25 25 pg_catalog +3013 has_column_privilege f 16 f 0 4 0 t s 19 25 21 25 pg_catalog +3014 has_column_privilege f 16 f 0 4 0 t s 19 26 25 25 pg_catalog +3015 has_column_privilege f 16 f 0 4 0 t s 19 26 21 25 pg_catalog +3016 has_column_privilege f 16 f 0 4 0 t s 26 25 25 25 pg_catalog +3017 has_column_privilege f 16 f 0 4 0 t s 26 25 21 25 pg_catalog +3018 has_column_privilege f 16 f 0 4 0 t s 26 26 25 25 pg_catalog +3019 has_column_privilege f 16 f 0 4 0 t s 26 26 21 25 pg_catalog +3020 has_column_privilege f 16 f 0 3 0 t s 25 25 25 pg_catalog +3021 has_column_privilege f 16 f 0 3 0 t s 25 21 25 pg_catalog +3022 has_column_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +3023 has_column_privilege f 16 f 0 3 0 t s 26 21 25 pg_catalog +3024 has_any_column_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +3025 has_any_column_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +3026 has_any_column_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +3027 has_any_column_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +3028 has_any_column_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +3029 has_any_column_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +3030 overlay f 1560 f 0 4 0 t i 1560 1560 23 23 pg_catalog +3031 overlay f 1560 f 0 3 0 t i 1560 1560 23 pg_catalog +3032 get_bit f 23 f 0 2 0 t i 1560 23 pg_catalog +3033 set_bit f 1560 f 0 3 0 t i 1560 23 23 pg_catalog +3034 pg_relation_filepath f 25 f 0 1 0 t s 2205 pg_catalog +3035 pg_listening_channels f 25 t 0 0 0 t s pg_catalog +3036 pg_notify f 2278 f 0 2 0 f v 25 25 pg_catalog +3037 pg_stat_get_xact_numscans f 20 f 0 1 0 t v 26 pg_catalog +3038 pg_stat_get_xact_tuples_returned f 20 f 0 1 0 t v 26 pg_catalog +3039 pg_stat_get_xact_tuples_fetched f 20 f 0 1 0 t v 26 pg_catalog +3040 pg_stat_get_xact_tuples_inserted f 20 f 0 1 0 t v 26 pg_catalog +3041 pg_stat_get_xact_tuples_updated f 20 f 0 1 0 t v 26 pg_catalog +3042 pg_stat_get_xact_tuples_deleted f 20 f 0 1 0 t v 26 pg_catalog +3043 pg_stat_get_xact_tuples_hot_updated f 20 f 0 1 0 t v 26 pg_catalog +3044 pg_stat_get_xact_blocks_fetched f 20 f 0 1 0 t v 26 pg_catalog +3045 pg_stat_get_xact_blocks_hit f 20 f 0 1 0 t v 26 pg_catalog +3046 pg_stat_get_xact_function_calls f 20 f 0 1 0 t v 26 pg_catalog +3047 pg_stat_get_xact_function_total_time f 701 f 0 1 0 t v 26 pg_catalog +3048 pg_stat_get_xact_function_self_time f 701 f 0 1 0 t v 26 pg_catalog +3049 xpath_exists f 16 f 0 3 0 t i 25 142 1009 pg_catalog +3050 xpath_exists f 16 f 0 2 0 t i 25 142 pg_catalog +3051 xml_is_well_formed f 16 f 0 1 0 t s 25 pg_catalog +3052 xml_is_well_formed_document f 16 f 0 1 0 t i 25 pg_catalog +3053 xml_is_well_formed_content f 16 f 0 1 0 t i 25 pg_catalog +3054 pg_stat_get_vacuum_count f 20 f 0 1 0 t s 26 pg_catalog +3055 pg_stat_get_autovacuum_count f 20 f 0 1 0 t s 26 pg_catalog +3056 pg_stat_get_analyze_count f 20 f 0 1 0 t s 26 pg_catalog +3057 pg_stat_get_autoanalyze_count f 20 f 0 1 0 t s 26 pg_catalog +3058 concat f 25 f 2276 1 0 f s 2276 2276 v pg_catalog +3059 concat_ws f 25 f 2276 2 0 f s 25 2276 25 2276 iv pg_catalog +3060 left f 25 f 0 2 0 t i 25 23 pg_catalog +3061 right f 25 f 0 2 0 t i 25 23 pg_catalog +3062 reverse f 25 f 0 1 0 t i 25 pg_catalog +3064 gist_point_distance f 701 f 0 5 0 t i 2281 600 21 26 2281 pg_catalog +3065 pg_stat_get_db_conflict_tablespace f 20 f 0 1 0 t s 26 pg_catalog +3066 pg_stat_get_db_conflict_lock f 20 f 0 1 0 t s 26 pg_catalog +3067 pg_stat_get_db_conflict_snapshot f 20 f 0 1 0 t s 26 pg_catalog +3068 pg_stat_get_db_conflict_bufferpin f 20 f 0 1 0 t s 26 pg_catalog +3069 pg_stat_get_db_conflict_startup_deadlock f 20 f 0 1 0 t s 26 pg_catalog +3070 pg_stat_get_db_conflict_all f 20 f 0 1 0 t s 26 pg_catalog +3071 pg_wal_replay_pause f 2278 f 0 0 0 t v pg_catalog +3072 pg_wal_replay_resume f 2278 f 0 0 0 t v pg_catalog +3073 pg_is_wal_replay_paused f 16 f 0 0 0 t v pg_catalog +3074 pg_stat_get_db_stat_reset_time f 1184 f 0 1 0 t s 26 pg_catalog +3075 pg_stat_get_bgwriter_stat_reset_time f 1184 f 0 0 0 t s pg_catalog +3076 ginarrayextract f 2281 f 0 2 0 t i 2277 2281 pg_catalog +3077 gin_extract_tsvector f 2281 f 0 2 0 t i 3614 2281 pg_catalog +3078 pg_sequence_parameters f 2249 f 0 1 0 t s 26 26 20 20 20 20 16 20 26 iooooooo sequence_oid,start_value,minimum_value,maximum_value,increment,cycle_option,cache_size,data_type pg_catalog +3082 pg_available_extensions f 2249 t 0 0 0 t s 19 25 25 ooo name,default_version,comment pg_catalog +3083 pg_available_extension_versions f 2249 t 0 0 0 t s 19 25 16 16 16 19 1003 25 oooooooo name,version,superuser,trusted,relocatable,schema,requires,comment pg_catalog +3084 pg_extension_update_paths f 2249 t 0 1 0 t s 19 19 25 25 25 iooo name,source,target,path pg_catalog +3086 pg_extension_config_dump f 2278 f 0 2 0 t v 2205 25 pg_catalog +3087 gin_extract_tsquery f 2281 f 0 5 0 t i 3615 2281 21 2281 2281 pg_catalog +3088 gin_tsquery_consistent f 16 f 0 6 0 t i 2281 21 3615 23 2281 2281 pg_catalog +3089 pg_advisory_xact_lock f 2278 f 0 1 0 t v 20 pg_catalog +3090 pg_advisory_xact_lock_shared f 2278 f 0 1 0 t v 20 pg_catalog +3091 pg_try_advisory_xact_lock f 16 f 0 1 0 t v 20 pg_catalog +3092 pg_try_advisory_xact_lock_shared f 16 f 0 1 0 t v 20 pg_catalog +3093 pg_advisory_xact_lock f 2278 f 0 2 0 t v 23 23 pg_catalog +3094 pg_advisory_xact_lock_shared f 2278 f 0 2 0 t v 23 23 pg_catalog +3095 pg_try_advisory_xact_lock f 16 f 0 2 0 t v 23 23 pg_catalog +3096 pg_try_advisory_xact_lock_shared f 16 f 0 2 0 t v 23 23 pg_catalog +3097 varchar_support f 2281 f 0 1 0 t i 2281 pg_catalog +3098 pg_create_restore_point f 3220 f 0 1 0 t v 25 pg_catalog +3099 pg_stat_get_wal_senders f 2249 t 0 0 0 f s 23 25 3220 3220 3220 3220 1186 1186 1186 23 25 1184 oooooooooooo pid,state,sent_lsn,write_lsn,flush_lsn,replay_lsn,write_lag,flush_lag,replay_lag,sync_priority,sync_state,reply_time pg_catalog +3100 row_number w 20 f 0 0 0 f i pg_catalog +3101 rank w 20 f 0 0 0 f i pg_catalog +3102 dense_rank w 20 f 0 0 0 f i pg_catalog +3103 percent_rank w 701 f 0 0 0 f i pg_catalog +3104 cume_dist w 701 f 0 0 0 f i pg_catalog +3105 ntile w 23 f 0 1 0 t i 23 pg_catalog +3106 lag w 2283 f 0 1 0 t i 2283 pg_catalog +3107 lag w 2283 f 0 2 0 t i 2283 23 pg_catalog +3108 lag w 5077 f 0 3 0 t i 5077 23 5077 pg_catalog +3109 lead w 2283 f 0 1 0 t i 2283 pg_catalog +3110 lead w 2283 f 0 2 0 t i 2283 23 pg_catalog +3111 lead w 5077 f 0 3 0 t i 5077 23 5077 pg_catalog +3112 first_value w 2283 f 0 1 0 t i 2283 pg_catalog +3113 last_value w 2283 f 0 1 0 t i 2283 pg_catalog +3114 nth_value w 2283 f 0 2 0 t i 2283 23 pg_catalog +3116 fdw_handler_in f 3115 f 0 1 0 f i 2275 pg_catalog +3117 fdw_handler_out f 2275 f 0 1 0 t i 3115 pg_catalog +3120 void_recv f 2278 f 0 1 0 t i 2281 pg_catalog +3121 void_send f 17 f 0 1 0 t i 2278 pg_catalog +3129 btint2sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3130 btint4sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3131 btint8sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3132 btfloat4sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3133 btfloat8sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3134 btoidsortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3135 btnamesortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3136 date_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3137 timestamp_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3138 has_type_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +3139 has_type_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +3140 has_type_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +3141 has_type_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +3142 has_type_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +3143 has_type_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +3144 macaddr_not f 829 f 0 1 0 t i 829 pg_catalog +3145 macaddr_and f 829 f 0 2 0 t i 829 829 pg_catalog +3146 macaddr_or f 829 f 0 2 0 t i 829 829 pg_catalog +3150 pg_stat_get_db_temp_files f 20 f 0 1 0 t s 26 pg_catalog +3151 pg_stat_get_db_temp_bytes f 20 f 0 1 0 t s 26 pg_catalog +3152 pg_stat_get_db_deadlocks f 20 f 0 1 0 t s 26 pg_catalog +3153 array_to_json f 114 f 0 1 0 t s 2277 pg_catalog +3154 array_to_json f 114 f 0 2 0 t s 2277 16 pg_catalog +3155 row_to_json f 114 f 0 1 0 t s 2249 pg_catalog +3156 row_to_json f 114 f 0 2 0 t s 2249 16 pg_catalog +3157 numeric_support f 2281 f 0 1 0 t i 2281 pg_catalog +3158 varbit_support f 2281 f 0 1 0 t i 2281 pg_catalog +3159 pg_get_viewdef f 25 f 0 2 0 t s 26 23 pg_catalog +3160 pg_stat_get_checkpointer_write_time f 701 f 0 0 0 t s pg_catalog +3161 pg_stat_get_checkpointer_sync_time f 701 f 0 0 0 t s pg_catalog +3162 pg_collation_for f 25 f 0 1 0 f s 2276 pg_catalog +3163 pg_trigger_depth f 23 f 0 0 0 t s pg_catalog +3165 pg_wal_lsn_diff f 1700 f 0 2 0 t i 3220 3220 pg_catalog +3166 pg_size_pretty f 25 f 0 1 0 t i 1700 pg_catalog +3167 array_remove f 5078 f 0 2 0 f i 5078 5077 pg_catalog +3168 array_replace f 5078 f 0 3 0 f i 5078 5077 5077 pg_catalog +3169 rangesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +3170 lo_lseek64 f 20 f 0 3 0 t v 23 20 23 pg_catalog +3171 lo_tell64 f 20 f 0 1 0 t v 23 pg_catalog +3172 lo_truncate64 f 23 f 0 2 0 t v 23 20 pg_catalog +3173 json_agg_transfn f 2281 f 0 2 0 f s 2281 2283 pg_catalog +3174 json_agg_finalfn f 114 f 0 1 0 f i 2281 pg_catalog +3175 json_agg a 114 f 0 1 0 f s 2283 pg_catalog +3176 to_json f 114 f 0 1 0 t s 2283 pg_catalog +3177 pg_stat_get_mod_since_analyze f 20 f 0 1 0 t s 26 pg_catalog +3178 numeric_sum f 1700 f 0 1 0 f i 2281 pg_catalog +3179 cardinality f 23 f 0 1 0 t i 2277 pg_catalog +3180 json_object_agg_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +3181 record_image_eq f 16 f 0 2 0 t i 2249 2249 pg_catalog +3182 record_image_ne f 16 f 0 2 0 t i 2249 2249 pg_catalog +3183 record_image_lt f 16 f 0 2 0 t i 2249 2249 pg_catalog +3184 record_image_gt f 16 f 0 2 0 t i 2249 2249 pg_catalog +3185 record_image_le f 16 f 0 2 0 t i 2249 2249 pg_catalog +3186 record_image_ge f 16 f 0 2 0 t i 2249 2249 pg_catalog +3187 btrecordimagecmp f 23 f 0 2 0 t i 2249 2249 pg_catalog +3195 pg_stat_get_archiver f 2249 f 0 0 0 f s 20 25 1184 20 25 1184 1184 ooooooo archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset pg_catalog +3196 json_object_agg_finalfn f 114 f 0 1 0 f i 2281 pg_catalog +3197 json_object_agg a 114 f 0 2 0 f s 2276 2276 key,value pg_catalog +3198 json_build_array f 114 f 2276 1 0 f s 2276 2276 v pg_catalog +3199 json_build_array f 114 f 0 0 0 f s pg_catalog +3200 json_build_object f 114 f 2276 1 0 f s 2276 2276 v pg_catalog +3201 json_build_object f 114 f 0 0 0 f s pg_catalog +3202 json_object f 114 f 0 1 0 t i 1009 pg_catalog +3203 json_object f 114 f 0 2 0 t i 1009 1009 pg_catalog +3204 json_to_record f 2249 f 0 1 0 t s 114 pg_catalog +3205 json_to_recordset f 2249 t 0 1 0 f s 114 pg_catalog +3207 jsonb_array_length f 23 f 0 1 0 t i 3802 pg_catalog +3208 jsonb_each f 2249 t 0 1 0 t i 3802 3802 25 3802 ioo from_json,key,value pg_catalog +3209 jsonb_populate_record f 2283 f 0 2 0 f s 2283 3802 pg_catalog +3210 jsonb_typeof f 25 f 0 1 0 t i 3802 pg_catalog +3214 jsonb_object_field_text f 25 f 0 2 0 t i 3802 25 from_json,field_name pg_catalog +3215 jsonb_array_element f 3802 f 0 2 0 t i 3802 23 from_json,element_index pg_catalog +3216 jsonb_array_element_text f 25 f 0 2 0 t i 3802 23 from_json,element_index pg_catalog +3217 jsonb_extract_path f 3802 f 25 2 0 t i 3802 1009 3802 1009 iv from_json,path_elems pg_catalog +3218 width_bucket f 23 f 0 2 0 t i 5077 5078 pg_catalog +3219 jsonb_array_elements f 3802 t 0 1 0 t i 3802 3802 3802 io from_json,value pg_catalog +3229 pg_lsn_in f 3220 f 0 1 0 t i 2275 pg_catalog +3230 pg_lsn_out f 2275 f 0 1 0 t i 3220 pg_catalog +3231 pg_lsn_lt f 16 f 0 2 0 t i 3220 3220 pg_catalog +3232 pg_lsn_le f 16 f 0 2 0 t i 3220 3220 pg_catalog +3233 pg_lsn_eq f 16 f 0 2 0 t i 3220 3220 pg_catalog +3234 pg_lsn_ge f 16 f 0 2 0 t i 3220 3220 pg_catalog +3235 pg_lsn_gt f 16 f 0 2 0 t i 3220 3220 pg_catalog +3236 pg_lsn_ne f 16 f 0 2 0 t i 3220 3220 pg_catalog +3237 pg_lsn_mi f 1700 f 0 2 0 t i 3220 3220 pg_catalog +3238 pg_lsn_recv f 3220 f 0 1 0 t i 2281 pg_catalog +3239 pg_lsn_send f 17 f 0 1 0 t i 3220 pg_catalog +3251 pg_lsn_cmp f 23 f 0 2 0 t i 3220 3220 pg_catalog +3252 pg_lsn_hash f 23 f 0 1 0 t i 3220 pg_catalog +3255 bttextsortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3259 generate_series f 1700 t 0 3 0 t i 1700 1700 1700 pg_catalog +3260 generate_series f 1700 t 0 2 0 t i 1700 1700 pg_catalog +3261 json_strip_nulls f 114 f 0 2 1 t i 114 16 target,strip_in_arrays pg_catalog +3262 jsonb_strip_nulls f 3802 f 0 2 1 t i 3802 16 target,strip_in_arrays pg_catalog +3263 jsonb_object f 3802 f 0 1 0 t i 1009 pg_catalog +3264 jsonb_object f 3802 f 0 2 0 t i 1009 1009 pg_catalog +3265 jsonb_agg_transfn f 2281 f 0 2 0 f s 2281 2283 pg_catalog +3266 jsonb_agg_finalfn f 3802 f 0 1 0 f s 2281 pg_catalog +3267 jsonb_agg a 3802 f 0 1 0 f s 2283 pg_catalog +3268 jsonb_object_agg_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +3269 jsonb_object_agg_finalfn f 3802 f 0 1 0 f s 2281 pg_catalog +3270 jsonb_object_agg a 3802 f 0 2 0 f i 2276 2276 key,value pg_catalog +3271 jsonb_build_array f 3802 f 2276 1 0 f s 2276 2276 v pg_catalog +3272 jsonb_build_array f 3802 f 0 0 0 f s pg_catalog +3273 jsonb_build_object f 3802 f 2276 1 0 f s 2276 2276 v pg_catalog +3274 jsonb_build_object f 3802 f 0 0 0 f s pg_catalog +3275 dist_ppoly f 701 f 0 2 0 t i 600 604 pg_catalog +3277 array_position f 23 f 0 2 0 f i 5078 5077 pg_catalog +3278 array_position f 23 f 0 3 0 f i 5078 5077 23 pg_catalog +3279 array_positions f 1007 f 0 2 0 f i 5078 5077 pg_catalog +3280 gist_circle_distance f 701 f 0 5 0 t i 2281 718 21 26 2281 pg_catalog +3281 scale f 23 f 0 1 0 t i 1700 pg_catalog +3282 gist_point_fetch f 2281 f 0 1 0 t i 2281 pg_catalog +3283 numeric_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3288 gist_poly_distance f 701 f 0 5 0 t i 2281 604 21 26 2281 pg_catalog +3290 dist_cpoint f 701 f 0 2 0 t i 718 600 pg_catalog +3292 dist_polyp f 701 f 0 2 0 t i 604 600 pg_catalog +3293 pg_read_file f 25 f 0 4 0 t v 25 20 20 16 pg_catalog +3294 current_setting f 25 f 0 2 0 t s 25 16 pg_catalog +3295 pg_read_binary_file f 17 f 0 4 0 t v 25 20 20 16 pg_catalog +3296 pg_notification_queue_usage f 701 f 0 0 0 t v pg_catalog +3297 pg_ls_dir f 25 t 0 3 0 t v 25 16 16 pg_catalog +3298 row_security_active f 16 f 0 1 0 t s 26 pg_catalog +3299 row_security_active f 16 f 0 1 0 t s 25 pg_catalog +3300 uuid_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3301 jsonb_concat f 3802 f 0 2 0 t i 3802 3802 pg_catalog +3302 jsonb_delete f 3802 f 0 2 0 t i 3802 25 pg_catalog +3303 jsonb_delete f 3802 f 0 2 0 t i 3802 23 pg_catalog +3304 jsonb_delete_path f 3802 f 0 2 0 t i 3802 1009 pg_catalog +3305 jsonb_set f 3802 f 0 4 1 t i 3802 1009 3802 16 jsonb_in,path,replacement,create_if_missing pg_catalog +3306 jsonb_pretty f 25 f 0 1 0 t i 3802 pg_catalog +3307 pg_stat_file f 2249 f 0 2 0 t v 25 16 25 16 20 1184 1184 1184 1184 16 iioooooo filename,missing_ok,size,access,modification,change,creation,isdir pg_catalog +3308 xidneq f 16 f 0 2 0 t i 28 28 pg_catalog +3309 xidneqint4 f 16 f 0 2 0 t i 28 23 pg_catalog +3311 tsm_handler_in f 3310 f 0 1 0 f i 2275 pg_catalog +3312 tsm_handler_out f 2275 f 0 1 0 t i 3310 pg_catalog +3313 bernoulli f 3310 f 0 1 0 t v 2281 pg_catalog +3314 system f 3310 f 0 1 0 t v 2281 pg_catalog +3317 pg_stat_get_wal_receiver f 2249 f 0 0 0 f s 23 25 3220 23 3220 3220 23 1184 1184 3220 1184 25 25 23 25 ooooooooooooooo pid,status,receive_start_lsn,receive_start_tli,written_lsn,flushed_lsn,received_tli,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,slot_name,sender_host,sender_port,conninfo pg_catalog +3318 pg_stat_get_progress_info f 2249 t 0 1 0 t s 25 25 23 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 iooooooooooooooooooooooo cmdtype,pid,datid,relid,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10,param11,param12,param13,param14,param15,param16,param17,param18,param19,param20 pg_catalog +3319 ts_filter f 3614 f 0 2 0 t i 3614 1002 pg_catalog +3320 setweight f 3614 f 0 3 0 t i 3614 18 1009 pg_catalog +3321 ts_delete f 3614 f 0 2 0 t i 3614 25 pg_catalog +3322 unnest f 2249 t 0 1 0 t i 3614 3614 25 1005 1009 iooo tsvector,lexeme,positions,weights pg_catalog +3323 ts_delete f 3614 f 0 2 0 t i 3614 1009 pg_catalog +3324 int4_avg_combine f 1016 f 0 2 0 t i 1016 1016 pg_catalog +3325 interval_avg_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +3326 tsvector_to_array f 1009 f 0 1 0 t i 3614 pg_catalog +3327 array_to_tsvector f 3614 f 0 1 0 t i 1009 pg_catalog +3328 bpchar_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3329 pg_show_all_file_settings f 2249 t 0 0 0 t v 25 23 23 25 25 16 25 ooooooo sourcefile,sourceline,seqno,name,setting,applied,error pg_catalog +3330 pg_current_wal_flush_lsn f 3220 f 0 0 0 t v pg_catalog +3331 bytea_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3332 bttext_pattern_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3333 btbpchar_pattern_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3334 pg_size_bytes f 20 f 0 1 0 t i 25 pg_catalog +3335 numeric_serialize f 17 f 0 1 0 t i 2281 pg_catalog +3336 numeric_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +3337 numeric_avg_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +3338 numeric_poly_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +3339 numeric_poly_serialize f 17 f 0 1 0 t i 2281 pg_catalog +3340 numeric_poly_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +3341 numeric_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +3342 float8_regr_combine f 1022 f 0 2 0 t i 1022 1022 pg_catalog +3343 jsonb_delete f 3802 f 25 2 0 t i 3802 1009 3802 1009 iv from_json,path_elems pg_catalog +3344 cash_mul_int8 f 790 f 0 2 0 t i 790 20 pg_catalog +3345 cash_div_int8 f 790 f 0 2 0 t i 790 20 pg_catalog +3348 txid_current_if_assigned f 20 f 0 0 0 t s pg_catalog +3352 pg_get_partkeydef f 25 f 0 1 0 t s 26 pg_catalog +3353 pg_ls_logdir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +3354 pg_ls_waldir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +3355 pg_ndistinct_in f 3361 f 0 1 0 t i 2275 pg_catalog +3356 pg_ndistinct_out f 2275 f 0 1 0 t i 3361 pg_catalog +3357 pg_ndistinct_recv f 3361 f 0 1 0 t s 2281 pg_catalog +3358 pg_ndistinct_send f 17 f 0 1 0 t s 3361 pg_catalog +3359 macaddr_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3360 txid_status f 25 f 0 1 0 t v 20 pg_catalog +3376 pg_safe_snapshot_blocking_pids f 1007 f 0 1 0 t v 23 pg_catalog +3378 pg_isolation_test_session_is_blocked f 16 f 0 2 0 t v 23 1007 pg_catalog +3382 pg_identify_object_as_address f 2249 f 0 3 0 t s 26 26 23 26 26 23 25 1009 1009 iiiooo classid,objid,objsubid,type,object_names,object_args pg_catalog +3383 brin_minmax_opcinfo f 2281 f 0 1 0 t i 2281 pg_catalog +3384 brin_minmax_add_value f 16 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +3385 brin_minmax_consistent f 16 f 0 3 0 t i 2281 2281 2281 pg_catalog +3386 brin_minmax_union f 16 f 0 3 0 t i 2281 2281 2281 pg_catalog +3387 int8_avg_accum_inv f 2281 f 0 2 0 f i 2281 20 pg_catalog +3388 numeric_poly_sum f 1700 f 0 1 0 f i 2281 pg_catalog +3389 numeric_poly_avg f 1700 f 0 1 0 f i 2281 pg_catalog +3390 numeric_poly_var_pop f 1700 f 0 1 0 f i 2281 pg_catalog +3391 numeric_poly_var_samp f 1700 f 0 1 0 f i 2281 pg_catalog +3392 numeric_poly_stddev_pop f 1700 f 0 1 0 f i 2281 pg_catalog +3393 numeric_poly_stddev_samp f 1700 f 0 1 0 f i 2281 pg_catalog +3396 regexp_match f 1009 f 0 2 0 t i 25 25 string,pattern pg_catalog +3397 regexp_match f 1009 f 0 3 0 t i 25 25 25 string,pattern,flags pg_catalog +3399 int8_mul_cash f 790 f 0 2 0 t i 20 790 pg_catalog +3400 pg_config f 2249 t 0 0 0 t s 25 25 oo name,setting pg_catalog +3401 pg_hba_file_rules f 2249 t 0 0 0 t v 23 25 23 25 1009 1009 25 25 25 1009 25 ooooooooooo rule_number,file_name,line_number,type,database,user_name,address,netmask,auth_method,options,error pg_catalog +3403 pg_statistics_obj_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3404 pg_dependencies_in f 3402 f 0 1 0 t i 2275 pg_catalog +3405 pg_dependencies_out f 2275 f 0 1 0 t i 3402 pg_catalog +3406 pg_dependencies_recv f 3402 f 0 1 0 t s 2281 pg_catalog +3407 pg_dependencies_send f 17 f 0 1 0 t s 3402 pg_catalog +3408 pg_get_partition_constraintdef f 25 f 0 1 0 t s 26 pg_catalog +3409 time_hash_extended f 20 f 0 2 0 t i 1083 20 pg_catalog +3410 timetz_hash_extended f 20 f 0 2 0 t i 1266 20 pg_catalog +3411 timestamp_hash_extended f 20 f 0 2 0 t i 1114 20 pg_catalog +3412 uuid_hash_extended f 20 f 0 2 0 t i 2950 20 pg_catalog +3413 pg_lsn_hash_extended f 20 f 0 2 0 t i 3220 20 pg_catalog +3414 hashenumextended f 20 f 0 2 0 t i 3500 20 pg_catalog +3415 pg_get_statisticsobjdef f 25 f 0 1 0 t s 26 pg_catalog +3416 jsonb_hash_extended f 20 f 0 2 0 t i 3802 20 pg_catalog +3417 hash_range_extended f 20 f 0 2 0 t i 3831 20 pg_catalog +3418 interval_hash_extended f 20 f 0 2 0 t i 1186 20 pg_catalog +3419 sha224 f 17 f 0 1 0 t i 17 pg_catalog +3420 sha256 f 17 f 0 1 0 t i 17 pg_catalog +3421 sha384 f 17 f 0 1 0 t i 17 pg_catalog +3422 sha512 f 17 f 0 1 0 t i 17 pg_catalog +3423 pg_partition_tree f 2249 t 0 1 0 t v 2205 2205 2205 2205 16 23 ioooo rootrelid,relid,parentrelid,isleaf,level pg_catalog +3424 pg_partition_root f 2205 f 0 1 0 t i 2205 pg_catalog +3425 pg_partition_ancestors f 2205 t 0 1 0 t v 2205 2205 2205 io partitionid,relid pg_catalog +3426 pg_stat_get_db_checksum_failures f 20 f 0 1 0 t s 26 pg_catalog +3427 pg_mcv_list_items f 2249 t 0 1 0 t s 5017 5017 23 1009 1000 701 701 iooooo mcv_list,index,values,nulls,frequency,base_frequency pg_catalog +3428 pg_stat_get_db_checksum_last_failure f 1184 f 0 1 0 t s 26 pg_catalog +3432 gen_random_uuid f 2950 f 0 0 0 t v pg_catalog +3434 gtsvector_options f 2278 f 0 1 0 f i 2281 pg_catalog +3435 gist_point_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +3436 pg_promote f 16 f 0 2 2 t v 16 23 wait,wait_seconds pg_catalog +3437 prefixsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +3438 prefixjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +3441 pg_control_system f 2249 f 0 0 0 t v 23 23 20 1184 oooo pg_control_version,catalog_version_no,system_identifier,pg_control_last_modified pg_catalog +3442 pg_control_checkpoint f 2249 f 0 0 0 t v 3220 3220 25 23 23 16 25 26 28 28 28 26 28 28 26 28 28 1184 oooooooooooooooooo checkpoint_lsn,redo_lsn,redo_wal_file,timeline_id,prev_timeline_id,full_page_writes,next_xid,next_oid,next_multixact_id,next_multi_offset,oldest_xid,oldest_xid_dbid,oldest_active_xid,oldest_multi_xid,oldest_multi_dbid,oldest_commit_ts_xid,newest_commit_ts_xid,checkpoint_time pg_catalog +3443 pg_control_recovery f 2249 f 0 0 0 t v 3220 23 3220 3220 16 ooooo min_recovery_end_lsn,min_recovery_end_timeline,backup_start_lsn,backup_end_lsn,end_of_backup_record_required pg_catalog +3444 pg_control_init f 2249 f 0 0 0 t v 23 23 23 23 23 23 23 23 23 16 23 16 oooooooooooo max_data_alignment,database_block_size,blocks_per_segment,wal_block_size,bytes_per_wal_segment,max_identifier_length,max_index_columns,max_toast_chunk_size,large_object_chunk_size,float8_pass_by_value,data_page_checksum_version,default_char_signedness pg_catalog +3445 pg_import_system_collations f 23 f 0 1 0 t v 4089 pg_catalog +3446 macaddr8_recv f 774 f 0 1 0 t i 2281 pg_catalog +3447 macaddr8_send f 17 f 0 1 0 t i 774 pg_catalog +3448 pg_collation_actual_version f 25 f 0 1 0 t v 26 pg_catalog +3449 numeric f 1700 f 0 1 0 t i 3802 pg_catalog +3450 int2 f 21 f 0 1 0 t i 3802 pg_catalog +3451 int4 f 23 f 0 1 0 t i 3802 pg_catalog +3452 int8 f 20 f 0 1 0 t i 3802 pg_catalog +3453 float4 f 700 f 0 1 0 t i 3802 pg_catalog +3454 pg_filenode_relation f 2205 f 0 2 0 t s 26 26 pg_catalog +3457 lo_from_bytea f 26 f 0 2 0 t v 26 17 pg_catalog +3458 lo_get f 17 f 0 1 0 t v 26 pg_catalog +3459 lo_get f 17 f 0 3 0 t v 26 20 23 pg_catalog +3460 lo_put f 2278 f 0 3 0 t v 26 20 17 pg_catalog +3461 make_timestamp f 1114 f 0 6 0 t i 23 23 23 23 23 701 year,month,mday,hour,min,sec pg_catalog +3462 make_timestamptz f 1184 f 0 6 0 t s 23 23 23 23 23 701 year,month,mday,hour,min,sec pg_catalog +3463 make_timestamptz f 1184 f 0 7 0 t s 23 23 23 23 23 701 25 year,month,mday,hour,min,sec,timezone pg_catalog +3464 make_interval f 1186 f 0 7 7 t i 23 23 23 23 23 23 701 years,months,weeks,days,hours,mins,secs pg_catalog +3465 jsonb_array_elements_text f 25 t 0 1 0 t i 3802 3802 25 io from_json,value pg_catalog +3469 spg_range_quad_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3470 spg_range_quad_choose f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3471 spg_range_quad_picksplit f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3472 spg_range_quad_inner_consistent f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3473 spg_range_quad_leaf_consistent f 16 f 0 2 0 t i 2281 2281 pg_catalog +3475 jsonb_populate_recordset f 2283 t 0 2 0 f s 2283 3802 pg_catalog +3476 to_regoperator f 2204 f 0 1 0 t s 25 pg_catalog +3478 jsonb_object_field f 3802 f 0 2 0 t i 3802 25 from_json,field_name pg_catalog +3479 to_regprocedure f 2202 f 0 1 0 t s 25 pg_catalog +3480 gin_compare_jsonb f 23 f 0 2 0 t i 25 25 pg_catalog +3482 gin_extract_jsonb f 2281 f 0 3 0 t i 3802 2281 2281 pg_catalog +3483 gin_extract_jsonb_query f 2281 f 0 7 0 t i 3802 2281 21 2281 2281 2281 2281 pg_catalog +3484 gin_consistent_jsonb f 16 f 0 8 0 t i 2281 21 3802 23 2281 2281 2281 2281 pg_catalog +3485 gin_extract_jsonb_path f 2281 f 0 3 0 t i 3802 2281 2281 pg_catalog +3486 gin_extract_jsonb_query_path f 2281 f 0 7 0 t i 3802 2281 21 2281 2281 2281 2281 pg_catalog +3487 gin_consistent_jsonb_path f 16 f 0 8 0 t i 2281 21 3802 23 2281 2281 2281 2281 pg_catalog +3488 gin_triconsistent_jsonb f 18 f 0 7 0 t i 2281 21 3802 23 2281 2281 2281 pg_catalog +3489 gin_triconsistent_jsonb_path f 18 f 0 7 0 t i 2281 21 3802 23 2281 2281 2281 pg_catalog +3490 jsonb_to_record f 2249 f 0 1 0 t s 3802 pg_catalog +3491 jsonb_to_recordset f 2249 t 0 1 0 f s 3802 pg_catalog +3492 to_regoper f 2203 f 0 1 0 t s 25 pg_catalog +3493 to_regtype f 2206 f 0 1 0 t s 25 pg_catalog +3494 to_regproc f 24 f 0 1 0 t s 25 pg_catalog +3495 to_regclass f 2205 f 0 1 0 t s 25 pg_catalog +3496 bool_accum f 2281 f 0 2 0 f i 2281 16 pg_catalog +3497 bool_accum_inv f 2281 f 0 2 0 f i 2281 16 pg_catalog +3498 bool_alltrue f 16 f 0 1 0 t i 2281 pg_catalog +3499 bool_anytrue f 16 f 0 1 0 t i 2281 pg_catalog +3504 anyenum_in f 3500 f 0 1 0 t i 2275 pg_catalog +3505 anyenum_out f 2275 f 0 1 0 t s 3500 pg_catalog +3506 enum_in f 3500 f 0 2 0 t s 2275 26 pg_catalog +3507 enum_out f 2275 f 0 1 0 t s 3500 pg_catalog +3508 enum_eq f 16 f 0 2 0 t i 3500 3500 pg_catalog +3509 enum_ne f 16 f 0 2 0 t i 3500 3500 pg_catalog +3510 enum_lt f 16 f 0 2 0 t i 3500 3500 pg_catalog +3511 enum_gt f 16 f 0 2 0 t i 3500 3500 pg_catalog +3512 enum_le f 16 f 0 2 0 t i 3500 3500 pg_catalog +3513 enum_ge f 16 f 0 2 0 t i 3500 3500 pg_catalog +3514 enum_cmp f 23 f 0 2 0 t i 3500 3500 pg_catalog +3515 hashenum f 23 f 0 1 0 t i 3500 pg_catalog +3524 enum_smaller f 3500 f 0 2 0 t i 3500 3500 pg_catalog +3525 enum_larger f 3500 f 0 2 0 t i 3500 3500 pg_catalog +3526 max a 3500 f 0 1 0 f i 3500 pg_catalog +3527 min a 3500 f 0 1 0 f i 3500 pg_catalog +3528 enum_first f 3500 f 0 1 0 f s 3500 pg_catalog +3529 enum_last f 3500 f 0 1 0 f s 3500 pg_catalog +3530 enum_range f 2277 f 0 2 0 f s 3500 3500 pg_catalog +3531 enum_range f 2277 f 0 1 0 f s 3500 pg_catalog +3532 enum_recv f 3500 f 0 2 0 t s 2281 26 pg_catalog +3533 enum_send f 17 f 0 1 0 t s 3500 pg_catalog +3535 string_agg_transfn f 2281 f 0 3 0 f i 2281 25 25 pg_catalog +3536 string_agg_finalfn f 25 f 0 1 0 f i 2281 pg_catalog +3537 pg_describe_object f 25 f 0 3 0 t s 26 26 23 pg_catalog +3538 string_agg a 25 f 0 2 0 f i 25 25 value,delimiter pg_catalog +3539 format f 25 f 2276 2 0 f s 25 2276 25 2276 iv pg_catalog +3540 format f 25 f 0 1 0 f s 25 pg_catalog +3543 bytea_string_agg_transfn f 2281 f 0 3 0 f i 2281 17 17 pg_catalog +3544 bytea_string_agg_finalfn f 17 f 0 1 0 f i 2281 pg_catalog +3545 string_agg a 17 f 0 2 0 f i 17 17 value,delimiter pg_catalog +3546 int8dec f 20 f 0 1 0 t i 20 pg_catalog +3547 int8dec_any f 20 f 0 2 0 t i 20 2276 pg_catalog +3548 numeric_accum_inv f 2281 f 0 2 0 f i 2281 1700 pg_catalog +3549 interval_avg_accum_inv f 2281 f 0 2 0 f i 2281 1186 pg_catalog +3551 network_overlap f 16 f 0 2 0 t i 869 869 pg_catalog +3553 inet_gist_consistent f 16 f 0 5 0 t i 2281 869 21 26 2281 pg_catalog +3554 inet_gist_union f 869 f 0 2 0 t i 2281 2281 pg_catalog +3555 inet_gist_compress f 2281 f 0 1 0 t i 2281 pg_catalog +3556 bool f 16 f 0 1 0 t i 3802 pg_catalog +3557 inet_gist_penalty f 2281 f 0 3 0 t i 2281 2281 2281 pg_catalog +3558 inet_gist_picksplit f 2281 f 0 2 0 t i 2281 2281 pg_catalog +3559 inet_gist_same f 2281 f 0 3 0 t i 869 869 2281 pg_catalog +3560 networksel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +3561 networkjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +3562 network_larger f 869 f 0 2 0 t i 869 869 pg_catalog +3563 network_smaller f 869 f 0 2 0 t i 869 869 pg_catalog +3564 max a 869 f 0 1 0 f i 869 pg_catalog +3565 min a 869 f 0 1 0 f i 869 pg_catalog +3566 pg_event_trigger_dropped_objects f 2249 t 0 0 0 t s 26 26 23 16 16 16 25 25 25 25 1009 1009 oooooooooooo classid,objid,objsubid,original,normal,is_temporary,object_type,schema_name,object_name,object_identity,address_names,address_args pg_catalog +3567 int2_accum_inv f 2281 f 0 2 0 f i 2281 21 pg_catalog +3568 int4_accum_inv f 2281 f 0 2 0 f i 2281 23 pg_catalog +3569 int8_accum_inv f 2281 f 0 2 0 f i 2281 20 pg_catalog +3570 int2_avg_accum_inv f 1016 f 0 2 0 t i 1016 21 pg_catalog +3571 int4_avg_accum_inv f 1016 f 0 2 0 t i 1016 23 pg_catalog +3572 int2int4_sum f 20 f 0 1 0 t i 1016 pg_catalog +3573 inet_gist_fetch f 2281 f 0 1 0 t i 2281 pg_catalog +3577 pg_logical_emit_message f 3220 f 0 4 1 t v 16 25 25 16 transactional,prefix,message,flush pg_catalog +3578 pg_logical_emit_message f 3220 f 0 4 1 t v 16 25 17 16 transactional,prefix,message,flush pg_catalog +3579 jsonb_insert f 3802 f 0 4 1 t i 3802 1009 3802 16 jsonb_in,path,replacement,insert_after pg_catalog +3581 pg_xact_commit_timestamp f 1184 f 0 1 0 t v 28 pg_catalog +3582 binary_upgrade_set_next_pg_type_oid f 2278 f 0 1 0 t v 26 pg_catalog +3583 pg_last_committed_xact f 2249 f 0 0 0 t v 28 1184 26 ooo xid,timestamp,roident pg_catalog +3584 binary_upgrade_set_next_array_pg_type_oid f 2278 f 0 1 0 t v 26 pg_catalog +3586 binary_upgrade_set_next_heap_pg_class_oid f 2278 f 0 1 0 t v 26 pg_catalog +3587 binary_upgrade_set_next_index_pg_class_oid f 2278 f 0 1 0 t v 26 pg_catalog +3588 binary_upgrade_set_next_toast_pg_class_oid f 2278 f 0 1 0 t v 26 pg_catalog +3589 binary_upgrade_set_next_pg_enum_oid f 2278 f 0 1 0 t v 26 pg_catalog +3590 binary_upgrade_set_next_pg_authid_oid f 2278 f 0 1 0 t v 26 pg_catalog +3591 binary_upgrade_create_empty_extension f 2278 f 0 7 0 f v 25 25 16 25 1028 1009 1009 pg_catalog +3594 event_trigger_in f 3838 f 0 1 0 f i 2275 pg_catalog +3595 event_trigger_out f 2275 f 0 1 0 t i 3838 pg_catalog +3610 tsvectorin f 3614 f 0 1 0 t i 2275 pg_catalog +3611 tsvectorout f 2275 f 0 1 0 t i 3614 pg_catalog +3612 tsqueryin f 3615 f 0 1 0 t i 2275 pg_catalog +3613 tsqueryout f 2275 f 0 1 0 t i 3615 pg_catalog +3616 tsvector_lt f 16 f 0 2 0 t i 3614 3614 pg_catalog +3617 tsvector_le f 16 f 0 2 0 t i 3614 3614 pg_catalog +3618 tsvector_eq f 16 f 0 2 0 t i 3614 3614 pg_catalog +3619 tsvector_ne f 16 f 0 2 0 t i 3614 3614 pg_catalog +3620 tsvector_ge f 16 f 0 2 0 t i 3614 3614 pg_catalog +3621 tsvector_gt f 16 f 0 2 0 t i 3614 3614 pg_catalog +3622 tsvector_cmp f 23 f 0 2 0 t i 3614 3614 pg_catalog +3623 strip f 3614 f 0 1 0 t i 3614 pg_catalog +3624 setweight f 3614 f 0 2 0 t i 3614 18 pg_catalog +3625 tsvector_concat f 3614 f 0 2 0 t i 3614 3614 pg_catalog +3634 ts_match_vq f 16 f 0 2 0 t i 3614 3615 pg_catalog +3635 ts_match_qv f 16 f 0 2 0 t i 3615 3614 pg_catalog +3638 tsvectorsend f 17 f 0 1 0 t i 3614 pg_catalog +3639 tsvectorrecv f 3614 f 0 1 0 t i 2281 pg_catalog +3640 tsquerysend f 17 f 0 1 0 t i 3615 pg_catalog +3641 tsqueryrecv f 3615 f 0 1 0 t i 2281 pg_catalog +3646 gtsvectorin f 3642 f 0 1 0 t i 2275 pg_catalog +3647 gtsvectorout f 2275 f 0 1 0 t i 3642 pg_catalog +3648 gtsvector_compress f 2281 f 0 1 0 t i 2281 pg_catalog +3649 gtsvector_decompress f 2281 f 0 1 0 t i 2281 pg_catalog +3650 gtsvector_picksplit f 2281 f 0 2 0 t i 2281 2281 pg_catalog +3651 gtsvector_union f 3642 f 0 2 0 t i 2281 2281 pg_catalog +3652 gtsvector_same f 2281 f 0 3 0 t i 3642 3642 2281 pg_catalog +3653 gtsvector_penalty f 2281 f 0 3 0 t i 2281 2281 2281 pg_catalog +3654 gtsvector_consistent f 16 f 0 5 0 t i 2281 3614 21 26 2281 pg_catalog +3656 gin_extract_tsvector f 2281 f 0 3 0 t i 3614 2281 2281 pg_catalog +3657 gin_extract_tsquery f 2281 f 0 7 0 t i 3614 2281 21 2281 2281 2281 2281 pg_catalog +3658 gin_tsquery_consistent f 16 f 0 8 0 t i 2281 21 3614 23 2281 2281 2281 2281 pg_catalog +3662 tsquery_lt f 16 f 0 2 0 t i 3615 3615 pg_catalog +3663 tsquery_le f 16 f 0 2 0 t i 3615 3615 pg_catalog +3664 tsquery_eq f 16 f 0 2 0 t i 3615 3615 pg_catalog +3665 tsquery_ne f 16 f 0 2 0 t i 3615 3615 pg_catalog +3666 tsquery_ge f 16 f 0 2 0 t i 3615 3615 pg_catalog +3667 tsquery_gt f 16 f 0 2 0 t i 3615 3615 pg_catalog +3668 tsquery_cmp f 23 f 0 2 0 t i 3615 3615 pg_catalog +3669 tsquery_and f 3615 f 0 2 0 t i 3615 3615 pg_catalog +3670 tsquery_or f 3615 f 0 2 0 t i 3615 3615 pg_catalog +3671 tsquery_not f 3615 f 0 1 0 t i 3615 pg_catalog +3672 numnode f 23 f 0 1 0 t i 3615 pg_catalog +3673 querytree f 25 f 0 1 0 t i 3615 pg_catalog +3684 ts_rewrite f 3615 f 0 3 0 t i 3615 3615 3615 pg_catalog +3685 ts_rewrite f 3615 f 0 2 0 t v 3615 25 pg_catalog +3686 tsmatchsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +3687 tsmatchjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +3688 ts_typanalyze f 16 f 0 1 0 t s 2281 pg_catalog +3689 ts_stat f 2249 t 0 1 0 t v 25 25 25 23 23 iooo query,word,ndoc,nentry pg_catalog +3690 ts_stat f 2249 t 0 2 0 t v 25 25 25 25 25 23 23 iiooo query,weights,word,ndoc,nentry pg_catalog +3691 tsq_mcontains f 16 f 0 2 0 t i 3615 3615 pg_catalog +3692 tsq_mcontained f 16 f 0 2 0 t i 3615 3615 pg_catalog +3695 gtsquery_compress f 2281 f 0 1 0 t i 2281 pg_catalog +3696 starts_with f 16 f 0 2 0 t i 25 25 pg_catalog +3697 gtsquery_picksplit f 2281 f 0 2 0 t i 2281 2281 pg_catalog +3698 gtsquery_union f 20 f 0 2 0 t i 2281 2281 pg_catalog +3699 gtsquery_same f 2281 f 0 3 0 t i 20 20 2281 pg_catalog +3700 gtsquery_penalty f 2281 f 0 3 0 t i 2281 2281 2281 pg_catalog +3701 gtsquery_consistent f 16 f 0 5 0 t i 2281 3615 21 26 2281 pg_catalog +3703 ts_rank f 700 f 0 4 0 t i 1021 3614 3615 23 pg_catalog +3704 ts_rank f 700 f 0 3 0 t i 1021 3614 3615 pg_catalog +3705 ts_rank f 700 f 0 3 0 t i 3614 3615 23 pg_catalog +3706 ts_rank f 700 f 0 2 0 t i 3614 3615 pg_catalog +3707 ts_rank_cd f 700 f 0 4 0 t i 1021 3614 3615 23 pg_catalog +3708 ts_rank_cd f 700 f 0 3 0 t i 1021 3614 3615 pg_catalog +3709 ts_rank_cd f 700 f 0 3 0 t i 3614 3615 23 pg_catalog +3710 ts_rank_cd f 700 f 0 2 0 t i 3614 3615 pg_catalog +3711 length f 23 f 0 1 0 t i 3614 pg_catalog +3713 ts_token_type f 2249 t 0 1 0 t i 26 26 23 25 25 iooo parser_oid,tokid,alias,description pg_catalog +3714 ts_token_type f 2249 t 0 1 0 t s 25 25 23 25 25 iooo parser_name,tokid,alias,description pg_catalog +3715 ts_parse f 2249 t 0 2 0 t i 26 25 26 25 23 25 iioo parser_oid,txt,tokid,token pg_catalog +3716 ts_parse f 2249 t 0 2 0 t s 25 25 25 25 23 25 iioo parser_name,txt,tokid,token pg_catalog +3717 prsd_start f 2281 f 0 2 0 t i 2281 23 pg_catalog +3718 prsd_nexttoken f 2281 f 0 3 0 t i 2281 2281 2281 pg_catalog +3719 prsd_end f 2278 f 0 1 0 t i 2281 pg_catalog +3720 prsd_headline f 2281 f 0 3 0 t i 2281 2281 3615 pg_catalog +3721 prsd_lextype f 2281 f 0 1 0 t i 2281 pg_catalog +3723 ts_lexize f 1009 f 0 2 0 t i 3769 25 pg_catalog +3724 gin_cmp_tslexeme f 23 f 0 2 0 t i 25 25 pg_catalog +3725 dsimple_init f 2281 f 0 1 0 t i 2281 pg_catalog +3726 dsimple_lexize f 2281 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +3728 dsynonym_init f 2281 f 0 1 0 t i 2281 pg_catalog +3729 dsynonym_lexize f 2281 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +3731 dispell_init f 2281 f 0 1 0 t i 2281 pg_catalog +3732 dispell_lexize f 2281 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +3736 regconfigin f 3734 f 0 1 0 t s 2275 pg_catalog +3737 regconfigout f 2275 f 0 1 0 t s 3734 pg_catalog +3738 regconfigrecv f 3734 f 0 1 0 t i 2281 pg_catalog +3739 regconfigsend f 17 f 0 1 0 t i 3734 pg_catalog +3740 thesaurus_init f 2281 f 0 1 0 t i 2281 pg_catalog +3741 thesaurus_lexize f 2281 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +3743 ts_headline f 25 f 0 4 0 t i 3734 25 3615 25 pg_catalog +3744 ts_headline f 25 f 0 3 0 t i 3734 25 3615 pg_catalog +3745 to_tsvector f 3614 f 0 2 0 t i 3734 25 pg_catalog +3746 to_tsquery f 3615 f 0 2 0 t i 3734 25 pg_catalog +3747 plainto_tsquery f 3615 f 0 2 0 t i 3734 25 pg_catalog +3749 to_tsvector f 3614 f 0 1 0 t s 25 pg_catalog +3750 to_tsquery f 3615 f 0 1 0 t s 25 pg_catalog +3751 plainto_tsquery f 3615 f 0 1 0 t s 25 pg_catalog +3752 tsvector_update_trigger f 2279 f 0 0 0 f v pg_catalog +3753 tsvector_update_trigger_column f 2279 f 0 0 0 f v pg_catalog +3754 ts_headline f 25 f 0 3 0 t s 25 3615 25 pg_catalog +3755 ts_headline f 25 f 0 2 0 t s 25 3615 pg_catalog +3756 pg_ts_parser_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3757 pg_ts_dict_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3758 pg_ts_config_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3759 get_current_ts_config f 3734 f 0 0 0 t s pg_catalog +3760 ts_match_tt f 16 f 0 2 0 t s 25 25 pg_catalog +3761 ts_match_tq f 16 f 0 2 0 t s 25 3615 pg_catalog +3768 pg_ts_template_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3771 regdictionaryin f 3769 f 0 1 0 t s 2275 pg_catalog +3772 regdictionaryout f 2275 f 0 1 0 t s 3769 pg_catalog +3773 regdictionaryrecv f 3769 f 0 1 0 t i 2281 pg_catalog +3774 regdictionarysend f 17 f 0 1 0 t i 3769 pg_catalog +3775 pg_stat_reset_shared f 2278 f 0 1 1 f v 25 target pg_catalog +3776 pg_stat_reset_single_table_counters f 2278 f 0 1 0 t v 26 pg_catalog +3777 pg_stat_reset_single_function_counters f 2278 f 0 1 0 t v 26 pg_catalog +3778 pg_tablespace_location f 25 f 0 1 0 t s 26 pg_catalog +3779 pg_create_physical_replication_slot f 2249 f 0 3 2 t v 19 16 16 19 16 16 19 3220 iiioo slot_name,immediately_reserve,temporary,slot_name,lsn pg_catalog +3780 pg_drop_replication_slot f 2278 f 0 1 0 t v 19 pg_catalog +3781 pg_get_replication_slots f 2249 t 0 0 0 f s 19 19 25 26 16 16 23 28 28 3220 3220 25 20 16 3220 1184 16 25 16 16 oooooooooooooooooooo slot_name,plugin,slot_type,datoid,temporary,active,active_pid,xmin,catalog_xmin,restart_lsn,confirmed_flush_lsn,wal_status,safe_wal_size,two_phase,two_phase_at,inactive_since,conflicting,invalidation_reason,failover,synced pg_catalog +3782 pg_logical_slot_get_changes f 2249 t 25 4 1 f v 19 3220 23 1009 19 3220 23 1009 3220 28 25 iiivooo slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data pg_catalog +3783 pg_logical_slot_get_binary_changes f 2249 t 25 4 1 f v 19 3220 23 1009 19 3220 23 1009 3220 28 17 iiivooo slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data pg_catalog +3784 pg_logical_slot_peek_changes f 2249 t 25 4 1 f v 19 3220 23 1009 19 3220 23 1009 3220 28 25 iiivooo slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data pg_catalog +3785 pg_logical_slot_peek_binary_changes f 2249 t 25 4 1 f v 19 3220 23 1009 19 3220 23 1009 3220 28 17 iiivooo slot_name,upto_lsn,upto_nchanges,options,lsn,xid,data pg_catalog +3786 pg_create_logical_replication_slot f 2249 f 0 5 3 t v 19 19 16 16 16 19 19 16 16 16 19 3220 iiiiioo slot_name,plugin,temporary,twophase,failover,slot_name,lsn pg_catalog +3787 to_jsonb f 3802 f 0 1 0 t s 2283 pg_catalog +3788 pg_stat_get_snapshot_timestamp f 1184 f 0 0 0 t s pg_catalog +3789 gin_clean_pending_list f 20 f 0 1 0 t v 2205 pg_catalog +3790 gtsvector_consistent f 16 f 0 5 0 t i 2281 3642 23 26 2281 pg_catalog +3791 gin_extract_tsquery f 2281 f 0 7 0 t i 3615 2281 21 2281 2281 2281 2281 pg_catalog +3792 gin_tsquery_consistent f 16 f 0 8 0 t i 2281 21 3615 23 2281 2281 2281 2281 pg_catalog +3793 gtsquery_consistent f 16 f 0 5 0 t i 2281 2281 23 26 2281 pg_catalog +3795 inet_spg_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3796 inet_spg_choose f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3797 inet_spg_picksplit f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3798 inet_spg_inner_consistent f 2278 f 0 2 0 t i 2281 2281 pg_catalog +3799 inet_spg_leaf_consistent f 16 f 0 2 0 t i 2281 2281 pg_catalog +3800 pg_current_logfile f 25 f 0 0 0 f v pg_catalog +3801 pg_current_logfile f 25 f 0 1 0 f v 25 pg_catalog +3803 jsonb_send f 17 f 0 1 0 t i 3802 pg_catalog +3804 jsonb_out f 2275 f 0 1 0 t i 3802 pg_catalog +3805 jsonb_recv f 3802 f 0 1 0 t i 2281 pg_catalog +3806 jsonb_in f 3802 f 0 1 0 t i 2275 pg_catalog +3808 pg_get_function_arg_default f 25 f 0 2 0 t s 26 23 pg_catalog +3809 pg_export_snapshot f 25 f 0 0 0 t v pg_catalog +3810 pg_is_in_recovery f 16 f 0 0 0 t v pg_catalog +3811 money f 790 f 0 1 0 t s 23 pg_catalog +3812 money f 790 f 0 1 0 t s 20 pg_catalog +3813 xmltext f 142 f 0 1 0 t i 25 pg_catalog +3815 pg_collation_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3816 array_typanalyze f 16 f 0 1 0 t s 2281 pg_catalog +3817 arraycontsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +3818 arraycontjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +3819 pg_get_multixact_members f 2249 t 0 1 0 t v 28 28 28 25 ioo multixid,xid,mode pg_catalog +3820 pg_last_wal_receive_lsn f 3220 f 0 0 0 t v pg_catalog +3821 pg_last_wal_replay_lsn f 3220 f 0 0 0 t v pg_catalog +3822 cash_div_cash f 701 f 0 2 0 t i 790 790 pg_catalog +3823 numeric f 1700 f 0 1 0 t s 790 pg_catalog +3824 money f 790 f 0 1 0 t s 1700 pg_catalog +3826 pg_read_file f 25 f 0 1 0 t v 25 pg_catalog +3827 pg_read_binary_file f 17 f 0 3 0 t v 25 20 20 pg_catalog +3828 pg_read_binary_file f 17 f 0 1 0 t v 25 pg_catalog +3829 pg_opfamily_is_visible f 16 f 0 1 0 t s 26 pg_catalog +3830 pg_last_xact_replay_timestamp f 1184 f 0 0 0 t v pg_catalog +3832 anyrange_in f 3831 f 0 3 0 t s 2275 26 23 pg_catalog +3833 anyrange_out f 2275 f 0 1 0 t s 3831 pg_catalog +3834 range_in f 3831 f 0 3 0 t s 2275 26 23 pg_catalog +3835 range_out f 2275 f 0 1 0 t s 3831 pg_catalog +3836 range_recv f 3831 f 0 3 0 t s 2281 26 23 pg_catalog +3837 range_send f 17 f 0 1 0 t s 3831 pg_catalog +3839 pg_identify_object f 2249 f 0 3 0 t s 26 26 23 26 26 23 25 25 25 25 iiioooo classid,objid,objsubid,type,schema,name,identity pg_catalog +3840 int4range f 3904 f 0 2 0 f i 23 23 pg_catalog +3841 int4range f 3904 f 0 3 0 f i 23 23 25 pg_catalog +3842 pg_relation_is_updatable f 23 f 0 2 0 t s 2205 16 pg_catalog +3843 pg_column_is_updatable f 16 f 0 3 0 t s 2205 21 16 pg_catalog +3844 numrange f 3906 f 0 2 0 f i 1700 1700 pg_catalog +3845 numrange f 3906 f 0 3 0 f i 1700 1700 25 pg_catalog +3846 make_date f 1082 f 0 3 0 t i 23 23 23 year,month,day pg_catalog +3847 make_time f 1083 f 0 3 0 t i 23 23 701 hour,min,sec pg_catalog +3848 lower f 2283 f 0 1 0 t i 3831 pg_catalog +3849 upper f 2283 f 0 1 0 t i 3831 pg_catalog +3850 isempty f 16 f 0 1 0 t i 3831 pg_catalog +3851 lower_inc f 16 f 0 1 0 t i 3831 pg_catalog +3852 upper_inc f 16 f 0 1 0 t i 3831 pg_catalog +3853 lower_inf f 16 f 0 1 0 t i 3831 pg_catalog +3854 upper_inf f 16 f 0 1 0 t i 3831 pg_catalog +3855 range_eq f 16 f 0 2 0 t i 3831 3831 pg_catalog +3856 range_ne f 16 f 0 2 0 t i 3831 3831 pg_catalog +3857 range_overlaps f 16 f 0 2 0 t i 3831 3831 pg_catalog +3858 range_contains_elem f 16 f 0 2 0 t i 3831 2283 pg_catalog +3859 range_contains f 16 f 0 2 0 t i 3831 3831 pg_catalog +3860 elem_contained_by_range f 16 f 0 2 0 t i 2283 3831 pg_catalog +3861 range_contained_by f 16 f 0 2 0 t i 3831 3831 pg_catalog +3862 range_adjacent f 16 f 0 2 0 t i 3831 3831 pg_catalog +3863 range_before f 16 f 0 2 0 t i 3831 3831 pg_catalog +3864 range_after f 16 f 0 2 0 t i 3831 3831 pg_catalog +3865 range_overleft f 16 f 0 2 0 t i 3831 3831 pg_catalog +3866 range_overright f 16 f 0 2 0 t i 3831 3831 pg_catalog +3867 range_union f 3831 f 0 2 0 t i 3831 3831 pg_catalog +3868 range_intersect f 3831 f 0 2 0 t i 3831 3831 pg_catalog +3869 range_minus f 3831 f 0 2 0 t i 3831 3831 pg_catalog +3870 range_cmp f 23 f 0 2 0 t i 3831 3831 pg_catalog +3871 range_lt f 16 f 0 2 0 t i 3831 3831 pg_catalog +3872 range_le f 16 f 0 2 0 t i 3831 3831 pg_catalog +3873 range_ge f 16 f 0 2 0 t i 3831 3831 pg_catalog +3874 range_gt f 16 f 0 2 0 t i 3831 3831 pg_catalog +3875 range_gist_consistent f 16 f 0 5 0 t i 2281 3831 21 26 2281 pg_catalog +3876 range_gist_union f 3831 f 0 2 0 t i 2281 2281 pg_catalog +3878 pg_replication_slot_advance f 2249 f 0 2 0 t v 19 3220 19 3220 19 3220 iioo slot_name,upto_lsn,slot_name,end_lsn pg_catalog +3879 range_gist_penalty f 2281 f 0 3 0 t i 2281 2281 2281 pg_catalog +3880 range_gist_picksplit f 2281 f 0 2 0 t i 2281 2281 pg_catalog +3881 range_gist_same f 2281 f 0 3 0 t i 3831 3831 2281 pg_catalog +3902 hash_range f 23 f 0 1 0 t i 3831 pg_catalog +3914 int4range_canonical f 3904 f 0 1 0 t i 3904 pg_catalog +3915 daterange_canonical f 3912 f 0 1 0 t i 3912 pg_catalog +3916 range_typanalyze f 16 f 0 1 0 t s 2281 pg_catalog +3917 timestamp_support f 2281 f 0 1 0 t i 2281 pg_catalog +3918 interval_support f 2281 f 0 1 0 t i 2281 pg_catalog +3920 ginarraytriconsistent f 18 f 0 7 0 t i 2281 21 2277 23 2281 2281 2281 pg_catalog +3921 gin_tsquery_triconsistent f 18 f 0 7 0 t i 2281 21 3614 23 2281 2281 2281 pg_catalog +3922 int4range_subdiff f 701 f 0 2 0 t i 23 23 pg_catalog +3923 int8range_subdiff f 701 f 0 2 0 t i 20 20 pg_catalog +3924 numrange_subdiff f 701 f 0 2 0 t i 1700 1700 pg_catalog +3925 daterange_subdiff f 701 f 0 2 0 t i 1082 1082 pg_catalog +3928 int8range_canonical f 3926 f 0 1 0 t i 3926 pg_catalog +3929 tsrange_subdiff f 701 f 0 2 0 t i 1114 1114 pg_catalog +3930 tstzrange_subdiff f 701 f 0 2 0 t i 1184 1184 pg_catalog +3931 jsonb_object_keys f 25 t 0 1 0 t i 3802 pg_catalog +3932 jsonb_each_text f 2249 t 0 1 0 t i 3802 3802 25 25 ioo from_json,key,value pg_catalog +3933 tsrange f 3908 f 0 2 0 f i 1114 1114 pg_catalog +3934 tsrange f 3908 f 0 3 0 f i 1114 1114 25 pg_catalog +3935 pg_sleep_for f 2278 f 0 1 0 t v 1186 pg_catalog +3936 pg_sleep_until f 2278 f 0 1 0 t v 1184 pg_catalog +3937 tstzrange f 3910 f 0 2 0 f i 1184 1184 pg_catalog +3938 tstzrange f 3910 f 0 3 0 f i 1184 1184 25 pg_catalog +3939 mxid_age f 23 f 0 1 0 t s 28 pg_catalog +3940 jsonb_extract_path_text f 25 f 25 2 0 t i 3802 1009 3802 1009 iv from_json,path_elems pg_catalog +3941 daterange f 3912 f 0 2 0 f i 1082 1082 pg_catalog +3942 daterange f 3912 f 0 3 0 f i 1082 1082 25 pg_catalog +3943 acldefault f 1034 f 0 2 0 t i 18 26 pg_catalog +3944 time_support f 2281 f 0 1 0 t i 2281 pg_catalog +3945 int8range f 3926 f 0 2 0 f i 20 20 pg_catalog +3946 int8range f 3926 f 0 3 0 f i 20 20 25 pg_catalog +3947 json_object_field f 114 f 0 2 0 t i 114 25 from_json,field_name pg_catalog +3948 json_object_field_text f 25 f 0 2 0 t i 114 25 from_json,field_name pg_catalog +3949 json_array_element f 114 f 0 2 0 t i 114 23 from_json,element_index pg_catalog +3950 json_array_element_text f 25 f 0 2 0 t i 114 23 from_json,element_index pg_catalog +3951 json_extract_path f 114 f 25 2 0 t i 114 1009 114 1009 iv from_json,path_elems pg_catalog +3952 brin_summarize_new_values f 23 f 0 1 0 t v 2205 pg_catalog +3953 json_extract_path_text f 25 f 25 2 0 t i 114 1009 114 1009 iv from_json,path_elems pg_catalog +3954 pg_get_object_address f 2249 f 0 3 0 t s 25 1009 1009 25 1009 1009 26 26 23 iiiooo type,object_names,object_args,classid,objid,objsubid pg_catalog +3955 json_array_elements f 114 t 0 1 0 t i 114 114 114 io from_json,value pg_catalog +3956 json_array_length f 23 f 0 1 0 t i 114 pg_catalog +3957 json_object_keys f 25 t 0 1 0 t i 114 pg_catalog +3958 json_each f 2249 t 0 1 0 t i 114 114 25 114 ioo from_json,key,value pg_catalog +3959 json_each_text f 2249 t 0 1 0 t i 114 114 25 25 ioo from_json,key,value pg_catalog +3960 json_populate_record f 2283 f 0 3 1 f s 2283 114 16 base,from_json,use_json_as_text pg_catalog +3961 json_populate_recordset f 2283 t 0 3 1 f s 2283 114 16 base,from_json,use_json_as_text pg_catalog +3968 json_typeof f 25 f 0 1 0 t i 114 pg_catalog +3969 json_array_elements_text f 25 t 0 1 0 t i 114 114 25 io from_json,value pg_catalog +3970 ordered_set_transition f 2281 f 0 2 0 f i 2281 2276 pg_catalog +3971 ordered_set_transition_multi f 2281 f 2276 2 0 f i 2281 2276 2281 2276 iv pg_catalog +3972 percentile_disc a 2283 f 0 2 0 f i 701 2283 pg_catalog +3973 percentile_disc_final f 2283 f 0 3 0 f i 2281 701 2283 pg_catalog +3974 percentile_cont a 701 f 0 2 0 f i 701 701 pg_catalog +3975 percentile_cont_float8_final f 701 f 0 2 0 f i 2281 701 pg_catalog +3976 percentile_cont a 1186 f 0 2 0 f i 701 1186 pg_catalog +3977 percentile_cont_interval_final f 1186 f 0 2 0 f i 2281 701 pg_catalog +3978 percentile_disc a 2277 f 0 2 0 f i 1022 2283 pg_catalog +3979 percentile_disc_multi_final f 2277 f 0 3 0 f i 2281 1022 2283 pg_catalog +3980 percentile_cont a 1022 f 0 2 0 f i 1022 701 pg_catalog +3981 percentile_cont_float8_multi_final f 1022 f 0 2 0 f i 2281 1022 pg_catalog +3982 percentile_cont a 1187 f 0 2 0 f i 1022 1186 pg_catalog +3983 percentile_cont_interval_multi_final f 1187 f 0 2 0 f i 2281 1022 pg_catalog +3984 mode a 2283 f 0 1 0 f i 2283 pg_catalog +3985 mode_final f 2283 f 0 2 0 f i 2281 2283 pg_catalog +3986 rank a 20 f 2276 1 0 f i 2276 2276 v pg_catalog +3987 rank_final f 20 f 2276 2 0 f i 2281 2276 2281 2276 iv pg_catalog +3988 percent_rank a 701 f 2276 1 0 f i 2276 2276 v pg_catalog +3989 percent_rank_final f 701 f 2276 2 0 f i 2281 2276 2281 2276 iv pg_catalog +3990 cume_dist a 701 f 2276 1 0 f i 2276 2276 v pg_catalog +3991 cume_dist_final f 701 f 2276 2 0 f i 2281 2276 2281 2276 iv pg_catalog +3992 dense_rank a 20 f 2276 1 0 f i 2276 2276 v pg_catalog +3993 dense_rank_final f 20 f 2276 2 0 f i 2281 2276 2281 2276 iv pg_catalog +3994 generate_series_int4_support f 2281 f 0 1 0 t i 2281 pg_catalog +3995 generate_series_int8_support f 2281 f 0 1 0 t i 2281 pg_catalog +3996 array_unnest_support f 2281 f 0 1 0 t i 2281 pg_catalog +3998 gist_box_distance f 701 f 0 5 0 t i 2281 603 21 26 2281 pg_catalog +3999 brin_summarize_range f 23 f 0 2 0 t v 2205 20 pg_catalog +4001 jsonpath_in f 4072 f 0 1 0 t i 2275 pg_catalog +4002 jsonpath_recv f 4072 f 0 1 0 t i 2281 pg_catalog +4003 jsonpath_out f 2275 f 0 1 0 t i 4072 pg_catalog +4004 jsonpath_send f 17 f 0 1 0 t i 4072 pg_catalog +4005 jsonb_path_exists f 16 f 0 4 2 t i 3802 4072 3802 16 target,path,vars,silent pg_catalog +4006 jsonb_path_query f 3802 t 0 4 2 t i 3802 4072 3802 16 target,path,vars,silent pg_catalog +4007 jsonb_path_query_array f 3802 f 0 4 2 t i 3802 4072 3802 16 target,path,vars,silent pg_catalog +4008 jsonb_path_query_first f 3802 f 0 4 2 t i 3802 4072 3802 16 target,path,vars,silent pg_catalog +4009 jsonb_path_match f 16 f 0 4 2 t i 3802 4072 3802 16 target,path,vars,silent pg_catalog +4010 jsonb_path_exists_opr f 16 f 0 2 0 t i 3802 4072 pg_catalog +4011 jsonb_path_match_opr f 16 f 0 2 0 t i 3802 4072 pg_catalog +4014 brin_desummarize_range f 2278 f 0 2 0 t v 2205 20 pg_catalog +4018 spg_quad_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4019 spg_quad_choose f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4020 spg_quad_picksplit f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4021 spg_quad_inner_consistent f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4022 spg_quad_leaf_consistent f 16 f 0 2 0 t i 2281 2281 pg_catalog +4023 spg_kd_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4024 spg_kd_choose f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4025 spg_kd_picksplit f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4026 spg_kd_inner_consistent f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4027 spg_text_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4028 spg_text_choose f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4029 spg_text_picksplit f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4030 spg_text_inner_consistent f 2278 f 0 2 0 t i 2281 2281 pg_catalog +4031 spg_text_leaf_consistent f 16 f 0 2 0 t i 2281 2281 pg_catalog +4032 pg_sequence_last_value f 20 f 0 1 0 t v 2205 pg_catalog +4038 jsonb_ne f 16 f 0 2 0 t i 3802 3802 pg_catalog +4039 jsonb_lt f 16 f 0 2 0 t i 3802 3802 pg_catalog +4040 jsonb_gt f 16 f 0 2 0 t i 3802 3802 pg_catalog +4041 jsonb_le f 16 f 0 2 0 t i 3802 3802 pg_catalog +4042 jsonb_ge f 16 f 0 2 0 t i 3802 3802 pg_catalog +4043 jsonb_eq f 16 f 0 2 0 t i 3802 3802 pg_catalog +4044 jsonb_cmp f 23 f 0 2 0 t i 3802 3802 pg_catalog +4045 jsonb_hash f 23 f 0 1 0 t i 3802 pg_catalog +4046 jsonb_contains f 16 f 0 2 0 t i 3802 3802 pg_catalog +4047 jsonb_exists f 16 f 0 2 0 t i 3802 25 pg_catalog +4048 jsonb_exists_any f 16 f 0 2 0 t i 3802 1009 pg_catalog +4049 jsonb_exists_all f 16 f 0 2 0 t i 3802 1009 pg_catalog +4050 jsonb_contained f 16 f 0 2 0 t i 3802 3802 pg_catalog +4051 array_agg_array_transfn f 2281 f 0 2 0 f i 2281 2277 pg_catalog +4052 array_agg_array_finalfn f 2277 f 0 2 0 f i 2281 2277 pg_catalog +4053 array_agg a 2277 f 0 1 0 f i 2277 pg_catalog +4057 range_merge f 3831 f 0 2 0 t i 3831 3831 pg_catalog +4063 inet_merge f 650 f 0 2 0 t i 869 869 pg_catalog +4067 bound_box f 603 f 0 2 0 t i 603 603 pg_catalog +4071 inet_same_family f 16 f 0 2 0 t i 869 869 pg_catalog +4083 binary_upgrade_set_record_init_privs f 2278 f 0 1 0 t v 16 pg_catalog +4084 regnamespacein f 4089 f 0 1 0 t s 2275 pg_catalog +4085 regnamespaceout f 2275 f 0 1 0 t s 4089 pg_catalog +4086 to_regnamespace f 4089 f 0 1 0 t s 25 pg_catalog +4087 regnamespacerecv f 4089 f 0 1 0 t i 2281 pg_catalog +4088 regnamespacesend f 17 f 0 1 0 t i 4089 pg_catalog +4091 box f 603 f 0 1 0 t i 600 pg_catalog +4092 regroleout f 2275 f 0 1 0 t s 4096 pg_catalog +4093 to_regrole f 4096 f 0 1 0 t s 25 pg_catalog +4094 regrolerecv f 4096 f 0 1 0 t i 2281 pg_catalog +4095 regrolesend f 17 f 0 1 0 t i 4096 pg_catalog +4098 regrolein f 4096 f 0 1 0 t s 2275 pg_catalog +4099 pg_numa_available f 16 f 0 0 0 t s pg_catalog +4100 pg_get_shmem_allocations_numa f 2249 t 0 0 0 t v 25 23 20 ooo name,numa_node,size pg_catalog +4101 binary_upgrade_set_missing_value f 2278 f 0 3 0 t v 26 25 25 pg_catalog +4105 brin_inclusion_opcinfo f 2281 f 0 1 0 t i 2281 pg_catalog +4106 brin_inclusion_add_value f 16 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +4107 brin_inclusion_consistent f 16 f 0 3 0 t i 2281 2281 2281 pg_catalog +4108 brin_inclusion_union f 16 f 0 3 0 t i 2281 2281 2281 pg_catalog +4110 macaddr8_in f 774 f 0 1 0 t i 2275 pg_catalog +4111 macaddr8_out f 2275 f 0 1 0 t i 774 pg_catalog +4112 trunc f 774 f 0 1 0 t i 774 pg_catalog +4113 macaddr8_eq f 16 f 0 2 0 t i 774 774 pg_catalog +4114 macaddr8_lt f 16 f 0 2 0 t i 774 774 pg_catalog +4115 macaddr8_le f 16 f 0 2 0 t i 774 774 pg_catalog +4116 macaddr8_gt f 16 f 0 2 0 t i 774 774 pg_catalog +4117 macaddr8_ge f 16 f 0 2 0 t i 774 774 pg_catalog +4118 macaddr8_ne f 16 f 0 2 0 t i 774 774 pg_catalog +4119 macaddr8_cmp f 23 f 0 2 0 t i 774 774 pg_catalog +4120 macaddr8_not f 774 f 0 1 0 t i 774 pg_catalog +4121 macaddr8_and f 774 f 0 2 0 t i 774 774 pg_catalog +4122 macaddr8_or f 774 f 0 2 0 t i 774 774 pg_catalog +4123 macaddr8 f 774 f 0 1 0 t i 829 pg_catalog +4124 macaddr f 829 f 0 1 0 t i 774 pg_catalog +4125 macaddr8_set7bit f 774 f 0 1 0 t i 774 pg_catalog +4126 in_range f 16 f 0 5 0 t i 20 20 20 16 16 pg_catalog +4127 in_range f 16 f 0 5 0 t i 23 23 20 16 16 pg_catalog +4128 in_range f 16 f 0 5 0 t i 23 23 23 16 16 pg_catalog +4129 in_range f 16 f 0 5 0 t i 23 23 21 16 16 pg_catalog +4130 in_range f 16 f 0 5 0 t i 21 21 20 16 16 pg_catalog +4131 in_range f 16 f 0 5 0 t i 21 21 23 16 16 pg_catalog +4132 in_range f 16 f 0 5 0 t i 21 21 21 16 16 pg_catalog +4133 in_range f 16 f 0 5 0 t i 1082 1082 1186 16 16 pg_catalog +4134 in_range f 16 f 0 5 0 t i 1114 1114 1186 16 16 pg_catalog +4135 in_range f 16 f 0 5 0 t s 1184 1184 1186 16 16 pg_catalog +4136 in_range f 16 f 0 5 0 t i 1186 1186 1186 16 16 pg_catalog +4137 in_range f 16 f 0 5 0 t i 1083 1083 1186 16 16 pg_catalog +4138 in_range f 16 f 0 5 0 t i 1266 1266 1186 16 16 pg_catalog +4139 in_range f 16 f 0 5 0 t i 701 701 701 16 16 pg_catalog +4140 in_range f 16 f 0 5 0 t i 700 700 701 16 16 pg_catalog +4141 in_range f 16 f 0 5 0 t i 1700 1700 1700 16 16 pg_catalog +4187 pg_lsn_larger f 3220 f 0 2 0 t i 3220 3220 pg_catalog +4188 pg_lsn_smaller f 3220 f 0 2 0 t i 3220 3220 pg_catalog +4189 max a 3220 f 0 1 0 f i 3220 pg_catalog +4190 min a 3220 f 0 1 0 f i 3220 pg_catalog +4193 regcollationin f 4191 f 0 1 0 t s 2275 pg_catalog +4194 regcollationout f 2275 f 0 1 0 t s 4191 pg_catalog +4195 to_regcollation f 4191 f 0 1 0 t s 25 pg_catalog +4196 regcollationrecv f 4191 f 0 1 0 t i 2281 pg_catalog +4197 regcollationsend f 17 f 0 1 0 t i 4191 pg_catalog +4201 ts_headline f 3802 f 0 4 0 t i 3734 3802 3615 25 pg_catalog +4202 ts_headline f 3802 f 0 3 0 t i 3734 3802 3615 pg_catalog +4203 ts_headline f 3802 f 0 3 0 t s 3802 3615 25 pg_catalog +4204 ts_headline f 3802 f 0 2 0 t s 3802 3615 pg_catalog +4205 ts_headline f 114 f 0 4 0 t i 3734 114 3615 25 pg_catalog +4206 ts_headline f 114 f 0 3 0 t i 3734 114 3615 pg_catalog +4207 ts_headline f 114 f 0 3 0 t s 114 3615 25 pg_catalog +4208 ts_headline f 114 f 0 2 0 t s 114 3615 pg_catalog +4209 to_tsvector f 3614 f 0 1 0 t s 3802 pg_catalog +4210 to_tsvector f 3614 f 0 1 0 t s 114 pg_catalog +4211 to_tsvector f 3614 f 0 2 0 t i 3734 3802 pg_catalog +4212 to_tsvector f 3614 f 0 2 0 t i 3734 114 pg_catalog +4213 jsonb_to_tsvector f 3614 f 0 2 0 t s 3802 3802 pg_catalog +4214 jsonb_to_tsvector f 3614 f 0 3 0 t i 3734 3802 3802 pg_catalog +4215 json_to_tsvector f 3614 f 0 2 0 t s 114 3802 pg_catalog +4216 json_to_tsvector f 3614 f 0 3 0 t i 3734 114 3802 pg_catalog +4220 pg_copy_physical_replication_slot f 2249 f 0 3 0 t v 19 19 16 19 19 16 19 3220 iiioo src_slot_name,dst_slot_name,temporary,slot_name,lsn pg_catalog +4221 pg_copy_physical_replication_slot f 2249 f 0 2 0 t v 19 19 19 19 19 3220 iioo src_slot_name,dst_slot_name,slot_name,lsn pg_catalog +4222 pg_copy_logical_replication_slot f 2249 f 0 4 0 t v 19 19 16 19 19 19 16 19 19 3220 iiiioo src_slot_name,dst_slot_name,temporary,plugin,slot_name,lsn pg_catalog +4223 pg_copy_logical_replication_slot f 2249 f 0 3 0 t v 19 19 16 19 19 16 19 3220 iiioo src_slot_name,dst_slot_name,temporary,slot_name,lsn pg_catalog +4224 pg_copy_logical_replication_slot f 2249 f 0 2 0 t v 19 19 19 19 19 3220 iioo src_slot_name,dst_slot_name,slot_name,lsn pg_catalog +4226 anycompatiblemultirange_in f 4538 f 0 3 0 t s 2275 26 23 pg_catalog +4227 anycompatiblemultirange_out f 2275 f 0 1 0 t s 4538 pg_catalog +4228 range_merge f 3831 f 0 1 0 t i 4537 pg_catalog +4229 anymultirange_in f 4537 f 0 3 0 t s 2275 26 23 pg_catalog +4230 anymultirange_out f 2275 f 0 1 0 t s 4537 pg_catalog +4231 multirange_in f 4537 f 0 3 0 t s 2275 26 23 pg_catalog +4232 multirange_out f 2275 f 0 1 0 t s 4537 pg_catalog +4233 multirange_recv f 4537 f 0 3 0 t s 2281 26 23 pg_catalog +4234 multirange_send f 17 f 0 1 0 t s 4537 pg_catalog +4235 lower f 2283 f 0 1 0 t i 4537 pg_catalog +4236 upper f 2283 f 0 1 0 t i 4537 pg_catalog +4237 isempty f 16 f 0 1 0 t i 4537 pg_catalog +4238 lower_inc f 16 f 0 1 0 t i 4537 pg_catalog +4239 upper_inc f 16 f 0 1 0 t i 4537 pg_catalog +4240 lower_inf f 16 f 0 1 0 t i 4537 pg_catalog +4241 upper_inf f 16 f 0 1 0 t i 4537 pg_catalog +4242 multirange_typanalyze f 16 f 0 1 0 t s 2281 pg_catalog +4243 multirangesel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +4244 multirange_eq f 16 f 0 2 0 t i 4537 4537 pg_catalog +4245 multirange_ne f 16 f 0 2 0 t i 4537 4537 pg_catalog +4246 range_overlaps_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4247 multirange_overlaps_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4248 multirange_overlaps_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4249 multirange_contains_elem f 16 f 0 2 0 t i 4537 2283 pg_catalog +4250 multirange_contains_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4251 multirange_contains_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4252 elem_contained_by_multirange f 16 f 0 2 0 t i 2283 4537 pg_catalog +4253 range_contained_by_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4254 multirange_contained_by_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4255 range_adjacent_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4256 multirange_adjacent_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4257 multirange_adjacent_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4258 range_before_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4259 multirange_before_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4260 multirange_before_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4261 range_after_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4262 multirange_after_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4263 multirange_after_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4264 range_overleft_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4265 multirange_overleft_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4266 multirange_overleft_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4267 range_overright_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4268 multirange_overright_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4269 multirange_overright_multirange f 16 f 0 2 0 t i 4537 4537 pg_catalog +4270 multirange_union f 4537 f 0 2 0 t i 4537 4537 pg_catalog +4271 multirange_minus f 4537 f 0 2 0 t i 4537 4537 pg_catalog +4272 multirange_intersect f 4537 f 0 2 0 t i 4537 4537 pg_catalog +4273 multirange_cmp f 23 f 0 2 0 t i 4537 4537 pg_catalog +4274 multirange_lt f 16 f 0 2 0 t i 4537 4537 pg_catalog +4275 multirange_le f 16 f 0 2 0 t i 4537 4537 pg_catalog +4276 multirange_ge f 16 f 0 2 0 t i 4537 4537 pg_catalog +4277 multirange_gt f 16 f 0 2 0 t i 4537 4537 pg_catalog +4278 hash_multirange f 23 f 0 1 0 t i 4537 pg_catalog +4279 hash_multirange_extended f 20 f 0 2 0 t i 4537 20 pg_catalog +4280 int4multirange f 4451 f 0 0 0 t i pg_catalog +4281 int4multirange f 4451 f 0 1 0 t i 3904 pg_catalog +4282 int4multirange f 4451 f 3904 1 0 t i 3905 3905 v pg_catalog +4283 nummultirange f 4532 f 0 0 0 t i pg_catalog +4284 nummultirange f 4532 f 0 1 0 t i 3906 pg_catalog +4285 nummultirange f 4532 f 3906 1 0 t i 3907 3907 v pg_catalog +4286 tsmultirange f 4533 f 0 0 0 t i pg_catalog +4287 tsmultirange f 4533 f 0 1 0 t i 3908 pg_catalog +4288 tsmultirange f 4533 f 3908 1 0 t i 3909 3909 v pg_catalog +4289 tstzmultirange f 4534 f 0 0 0 t i pg_catalog +4290 tstzmultirange f 4534 f 0 1 0 t i 3910 pg_catalog +4291 tstzmultirange f 4534 f 3910 1 0 t i 3911 3911 v pg_catalog +4292 datemultirange f 4535 f 0 0 0 t i pg_catalog +4293 datemultirange f 4535 f 0 1 0 t i 3912 pg_catalog +4294 datemultirange f 4535 f 3912 1 0 t i 3913 3913 v pg_catalog +4295 int8multirange f 4536 f 0 0 0 t i pg_catalog +4296 int8multirange f 4536 f 0 1 0 t i 3926 pg_catalog +4297 int8multirange f 4536 f 3926 1 0 t i 3927 3927 v pg_catalog +4298 multirange f 4537 f 0 1 0 t i 3831 pg_catalog +4299 range_agg_transfn f 2281 f 0 2 0 f i 2281 3831 pg_catalog +4300 range_agg_finalfn f 4537 f 0 2 0 f i 2281 3831 pg_catalog +4301 range_agg a 4537 f 0 1 0 f i 3831 pg_catalog +4302 koi8r_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4303 mic_to_koi8r f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4304 iso_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4305 mic_to_iso f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4306 win1251_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4307 mic_to_win1251 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4308 win866_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4309 mic_to_win866 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4310 koi8r_to_win1251 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4311 win1251_to_koi8r f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4312 koi8r_to_win866 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4313 win866_to_koi8r f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4314 win866_to_win1251 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4315 win1251_to_win866 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4316 iso_to_koi8r f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4317 koi8r_to_iso f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4318 iso_to_win1251 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4319 win1251_to_iso f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4320 iso_to_win866 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4321 win866_to_iso f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4322 euc_cn_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4323 mic_to_euc_cn f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4324 euc_jp_to_sjis f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4325 sjis_to_euc_jp f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4326 euc_jp_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4327 sjis_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4328 mic_to_euc_jp f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4329 mic_to_sjis f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4330 euc_kr_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4331 mic_to_euc_kr f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4332 euc_tw_to_big5 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4333 big5_to_euc_tw f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4334 euc_tw_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4335 big5_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4336 mic_to_euc_tw f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4337 mic_to_big5 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4338 latin2_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4339 mic_to_latin2 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4340 win1250_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4341 mic_to_win1250 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4342 latin2_to_win1250 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4343 win1250_to_latin2 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4344 latin1_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4345 mic_to_latin1 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4346 latin3_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4347 mic_to_latin3 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4348 latin4_to_mic f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4349 mic_to_latin4 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4350 normalize f 25 f 0 2 1 t i 25 25 pg_catalog +4351 is_normalized f 16 f 0 2 1 t i 25 25 pg_catalog +4352 big5_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4353 utf8_to_big5 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4354 utf8_to_koi8r f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4355 koi8r_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4356 utf8_to_koi8u f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4357 koi8u_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4358 utf8_to_win f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4359 win_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4360 euc_cn_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4361 utf8_to_euc_cn f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4362 euc_jp_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4363 utf8_to_euc_jp f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4364 euc_kr_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4365 utf8_to_euc_kr f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4366 euc_tw_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4367 utf8_to_euc_tw f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4368 gb18030_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4369 utf8_to_gb18030 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4370 gbk_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4371 utf8_to_gbk f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4372 utf8_to_iso8859 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4373 iso8859_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4374 iso8859_1_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4375 utf8_to_iso8859_1 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4376 johab_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4377 utf8_to_johab f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4378 sjis_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4379 utf8_to_sjis f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4380 uhc_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4381 utf8_to_uhc f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4382 euc_jis_2004_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4383 utf8_to_euc_jis_2004 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4384 shift_jis_2004_to_utf8 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4385 utf8_to_shift_jis_2004 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4386 euc_jis_2004_to_shift_jis_2004 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4387 shift_jis_2004_to_euc_jis_2004 f 23 f 0 6 0 t i 23 23 2275 2281 23 16 pg_catalog +4388 multirange_intersect_agg_transfn f 4537 f 0 2 0 t i 4537 4537 pg_catalog +4389 range_intersect_agg a 4537 f 0 1 0 f i 4537 pg_catalog +4390 binary_upgrade_set_next_multirange_pg_type_oid f 2278 f 0 1 0 t v 26 pg_catalog +4391 binary_upgrade_set_next_multirange_array_pg_type_oid f 2278 f 0 1 0 t v 26 pg_catalog +4401 range_intersect_agg_transfn f 3831 f 0 2 0 t i 3831 3831 pg_catalog +4450 range_intersect_agg a 3831 f 0 1 0 f i 3831 pg_catalog +4541 range_contains_multirange f 16 f 0 2 0 t i 3831 4537 pg_catalog +4542 multirange_contained_by_range f 16 f 0 2 0 t i 4537 3831 pg_catalog +4543 pg_log_backend_memory_contexts f 16 f 0 1 0 t v 23 pg_catalog +4545 binary_upgrade_set_next_heap_relfilenode f 2278 f 0 1 0 t v 26 pg_catalog +4546 binary_upgrade_set_next_index_relfilenode f 2278 f 0 1 0 t v 26 pg_catalog +4547 binary_upgrade_set_next_toast_relfilenode f 2278 f 0 1 0 t v 26 pg_catalog +4548 binary_upgrade_set_next_pg_tablespace_oid f 2278 f 0 1 0 t v 26 pg_catalog +4549 unicode_version f 25 f 0 0 0 t i pg_catalog +4566 pg_event_trigger_table_rewrite_oid f 26 f 0 0 0 t s 26 o oid pg_catalog +4567 pg_event_trigger_table_rewrite_reason f 23 f 0 0 0 t s pg_catalog +4568 pg_event_trigger_ddl_commands f 2249 t 0 0 0 t s 26 26 23 25 25 25 25 16 32 ooooooooo classid,objid,objsubid,command_tag,object_type,schema_name,object_identity,in_extension,command pg_catalog +4591 brin_bloom_opcinfo f 2281 f 0 1 0 t i 2281 pg_catalog +4592 brin_bloom_add_value f 16 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +4593 brin_bloom_consistent f 16 f 0 4 0 t i 2281 2281 2281 23 pg_catalog +4594 brin_bloom_union f 16 f 0 3 0 t i 2281 2281 2281 pg_catalog +4595 brin_bloom_options f 2278 f 0 1 0 f i 2281 pg_catalog +4596 brin_bloom_summary_in f 4600 f 0 1 0 t i 2275 pg_catalog +4597 brin_bloom_summary_out f 2275 f 0 1 0 t i 4600 pg_catalog +4598 brin_bloom_summary_recv f 4600 f 0 1 0 t s 2281 pg_catalog +4599 brin_bloom_summary_send f 17 f 0 1 0 t s 4600 pg_catalog +4616 brin_minmax_multi_opcinfo f 2281 f 0 1 0 t i 2281 pg_catalog +4617 brin_minmax_multi_add_value f 16 f 0 4 0 t i 2281 2281 2281 2281 pg_catalog +4618 brin_minmax_multi_consistent f 16 f 0 4 0 t i 2281 2281 2281 23 pg_catalog +4619 brin_minmax_multi_union f 16 f 0 3 0 t i 2281 2281 2281 pg_catalog +4620 brin_minmax_multi_options f 2278 f 0 1 0 f i 2281 pg_catalog +4621 brin_minmax_multi_distance_int2 f 701 f 0 2 0 t i 2281 2281 pg_catalog +4622 brin_minmax_multi_distance_int4 f 701 f 0 2 0 t i 2281 2281 pg_catalog +4623 brin_minmax_multi_distance_int8 f 701 f 0 2 0 t i 2281 2281 pg_catalog +4624 brin_minmax_multi_distance_float4 f 701 f 0 2 0 t i 2281 2281 pg_catalog +4625 brin_minmax_multi_distance_float8 f 701 f 0 2 0 t i 2281 2281 pg_catalog +4626 brin_minmax_multi_distance_numeric f 701 f 0 2 0 t i 2281 2281 pg_catalog +4627 brin_minmax_multi_distance_tid f 701 f 0 2 0 t i 2281 2281 pg_catalog +4628 brin_minmax_multi_distance_uuid f 701 f 0 2 0 t i 2281 2281 pg_catalog +4629 brin_minmax_multi_distance_date f 701 f 0 2 0 t i 2281 2281 pg_catalog +4630 brin_minmax_multi_distance_time f 701 f 0 2 0 t i 2281 2281 pg_catalog +4631 brin_minmax_multi_distance_interval f 701 f 0 2 0 t i 2281 2281 pg_catalog +4632 brin_minmax_multi_distance_timetz f 701 f 0 2 0 t i 2281 2281 pg_catalog +4633 brin_minmax_multi_distance_pg_lsn f 701 f 0 2 0 t i 2281 2281 pg_catalog +4634 brin_minmax_multi_distance_macaddr f 701 f 0 2 0 t i 2281 2281 pg_catalog +4635 brin_minmax_multi_distance_macaddr8 f 701 f 0 2 0 t i 2281 2281 pg_catalog +4636 brin_minmax_multi_distance_inet f 701 f 0 2 0 t i 2281 2281 pg_catalog +4637 brin_minmax_multi_distance_timestamp f 701 f 0 2 0 t i 2281 2281 pg_catalog +4638 brin_minmax_multi_summary_in f 4601 f 0 1 0 t i 2275 pg_catalog +4639 brin_minmax_multi_summary_out f 2275 f 0 1 0 t i 4601 pg_catalog +4640 brin_minmax_multi_summary_recv f 4601 f 0 1 0 t s 2281 pg_catalog +4641 brin_minmax_multi_summary_send f 17 f 0 1 0 t s 4601 pg_catalog +5001 phraseto_tsquery f 3615 f 0 1 0 t s 25 pg_catalog +5003 tsquery_phrase f 3615 f 0 2 0 t i 3615 3615 pg_catalog +5004 tsquery_phrase f 3615 f 0 3 0 t i 3615 3615 23 pg_catalog +5006 phraseto_tsquery f 3615 f 0 2 0 t i 3734 25 pg_catalog +5007 websearch_to_tsquery f 3615 f 0 2 0 t i 3734 25 pg_catalog +5009 websearch_to_tsquery f 3615 f 0 1 0 t s 25 pg_catalog +5010 spg_bbox_quad_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +5011 spg_poly_quad_compress f 603 f 0 1 0 t i 604 pg_catalog +5012 spg_box_quad_config f 2278 f 0 2 0 t i 2281 2281 pg_catalog +5013 spg_box_quad_choose f 2278 f 0 2 0 t i 2281 2281 pg_catalog +5014 spg_box_quad_picksplit f 2278 f 0 2 0 t i 2281 2281 pg_catalog +5015 spg_box_quad_inner_consistent f 2278 f 0 2 0 t i 2281 2281 pg_catalog +5016 spg_box_quad_leaf_consistent f 16 f 0 2 0 t i 2281 2281 pg_catalog +5018 pg_mcv_list_in f 5017 f 0 1 0 t i 2275 pg_catalog +5019 pg_mcv_list_out f 2275 f 0 1 0 t i 5017 pg_catalog +5020 pg_mcv_list_recv f 5017 f 0 1 0 t s 2281 pg_catalog +5021 pg_mcv_list_send f 17 f 0 1 0 t s 5017 pg_catalog +5022 pg_lsn_pli f 3220 f 0 2 0 t i 3220 1700 pg_catalog +5023 numeric_pl_pg_lsn f 3220 f 0 2 0 t i 1700 3220 pg_catalog +5024 pg_lsn_mii f 3220 f 0 2 0 t i 3220 1700 pg_catalog +5028 satisfies_hash_partition f 16 f 2276 4 0 f i 26 23 23 2276 iiiv pg_catalog +5029 pg_ls_tmpdir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +5030 pg_ls_tmpdir f 2249 t 0 1 0 t v 26 26 25 20 1184 iooo tablespace,name,size,modification pg_catalog +5031 pg_ls_archive_statusdir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +5033 network_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +5034 xid8lt f 16 f 0 2 0 t i 5069 5069 pg_catalog +5035 xid8gt f 16 f 0 2 0 t i 5069 5069 pg_catalog +5036 xid8le f 16 f 0 2 0 t i 5069 5069 pg_catalog +5037 xid8ge f 16 f 0 2 0 t i 5069 5069 pg_catalog +5040 matchingsel f 701 f 0 4 0 t s 2281 26 2281 23 pg_catalog +5041 matchingjoinsel f 701 f 0 5 0 t s 2281 26 2281 21 2281 pg_catalog +5042 min_scale f 23 f 0 1 0 t i 1700 pg_catalog +5043 trim_scale f 1700 f 0 1 0 t i 1700 pg_catalog +5044 gcd f 23 f 0 2 0 t i 23 23 pg_catalog +5045 gcd f 20 f 0 2 0 t i 20 20 pg_catalog +5046 lcm f 23 f 0 2 0 t i 23 23 pg_catalog +5047 lcm f 20 f 0 2 0 t i 20 20 pg_catalog +5048 gcd f 1700 f 0 2 0 t i 1700 1700 pg_catalog +5049 lcm f 1700 f 0 2 0 t i 1700 1700 pg_catalog +5050 btvarstrequalimage f 16 f 0 1 0 t i 26 pg_catalog +5051 btequalimage f 16 f 0 1 0 t i 26 pg_catalog +5052 pg_get_shmem_allocations f 2249 t 0 0 0 t v 25 20 20 20 oooo name,off,size,allocated_size pg_catalog +5053 pg_stat_get_ins_since_vacuum f 20 f 0 1 0 t s 26 pg_catalog +5054 jsonb_set_lax f 3802 f 0 5 2 f i 3802 1009 3802 16 25 jsonb_in,path,replacement,create_if_missing,null_value_treatment pg_catalog +5055 pg_snapshot_in f 5038 f 0 1 0 t i 2275 pg_catalog +5056 pg_snapshot_out f 2275 f 0 1 0 t i 5038 pg_catalog +5057 pg_snapshot_recv f 5038 f 0 1 0 t i 2281 pg_catalog +5058 pg_snapshot_send f 17 f 0 1 0 t i 5038 pg_catalog +5059 pg_current_xact_id f 5069 f 0 0 0 t s pg_catalog +5060 pg_current_xact_id_if_assigned f 5069 f 0 0 0 t s pg_catalog +5061 pg_current_snapshot f 5038 f 0 0 0 t s pg_catalog +5062 pg_snapshot_xmin f 5069 f 0 1 0 t i 5038 pg_catalog +5063 pg_snapshot_xmax f 5069 f 0 1 0 t i 5038 pg_catalog +5064 pg_snapshot_xip f 5069 t 0 1 0 t i 5038 pg_catalog +5065 pg_visible_in_snapshot f 16 f 0 2 0 t i 5069 5038 pg_catalog +5066 pg_xact_status f 25 f 0 1 0 t v 5069 pg_catalog +5070 xid8in f 5069 f 0 1 0 t i 2275 pg_catalog +5071 xid f 28 f 0 1 0 t i 5069 pg_catalog +5081 xid8out f 2275 f 0 1 0 t i 5069 pg_catalog +5082 xid8recv f 5069 f 0 1 0 t i 2281 pg_catalog +5083 xid8send f 17 f 0 1 0 t i 5069 pg_catalog +5084 xid8eq f 16 f 0 2 0 t i 5069 5069 pg_catalog +5085 xid8ne f 16 f 0 2 0 t i 5069 5069 pg_catalog +5086 anycompatible_in f 5077 f 0 1 0 t i 2275 pg_catalog +5087 anycompatible_out f 2275 f 0 1 0 t i 5077 pg_catalog +5088 anycompatiblearray_in f 5078 f 0 1 0 t i 2275 pg_catalog +5089 anycompatiblearray_out f 2275 f 0 1 0 t s 5078 pg_catalog +5090 anycompatiblearray_recv f 5078 f 0 1 0 t s 2281 pg_catalog +5091 anycompatiblearray_send f 17 f 0 1 0 t s 5078 pg_catalog +5092 anycompatiblenonarray_in f 5079 f 0 1 0 t i 2275 pg_catalog +5093 anycompatiblenonarray_out f 2275 f 0 1 0 t i 5079 pg_catalog +5094 anycompatiblerange_in f 5080 f 0 3 0 t s 2275 26 23 pg_catalog +5095 anycompatiblerange_out f 2275 f 0 1 0 t s 5080 pg_catalog +5096 xid8cmp f 23 f 0 2 0 t i 5069 5069 pg_catalog +5097 xid8_larger f 5069 f 0 2 0 t i 5069 5069 pg_catalog +5098 xid8_smaller f 5069 f 0 2 0 t i 5069 5069 pg_catalog +5099 max a 5069 f 0 1 0 f i 5069 pg_catalog +5100 min a 5069 f 0 1 0 f i 5069 pg_catalog +6003 pg_replication_origin_create f 26 f 0 1 0 t v 25 pg_catalog +6004 pg_replication_origin_drop f 2278 f 0 1 0 t v 25 pg_catalog +6005 pg_replication_origin_oid f 26 f 0 1 0 t s 25 pg_catalog +6006 pg_replication_origin_session_setup f 2278 f 0 1 0 t v 25 pg_catalog +6007 pg_replication_origin_session_reset f 2278 f 0 0 0 t v pg_catalog +6008 pg_replication_origin_session_is_setup f 16 f 0 0 0 t v pg_catalog +6009 pg_replication_origin_session_progress f 3220 f 0 1 0 t v 16 pg_catalog +6010 pg_replication_origin_xact_setup f 2278 f 0 2 0 t v 3220 1184 pg_catalog +6011 pg_replication_origin_xact_reset f 2278 f 0 0 0 t v pg_catalog +6012 pg_replication_origin_advance f 2278 f 0 2 0 t v 25 3220 pg_catalog +6013 pg_replication_origin_progress f 3220 f 0 2 0 t v 25 16 pg_catalog +6014 pg_show_replication_origin_status f 2249 t 0 0 0 f v 26 25 3220 3220 oooo local_id,external_id,remote_lsn,local_lsn pg_catalog +6098 jsonb_subscript_handler f 2281 f 0 1 0 t i 2281 pg_catalog +6099 icu_unicode_version f 25 f 0 0 0 t i pg_catalog +6103 pg_lsn f 3220 f 0 1 0 t i 1700 pg_catalog +6105 unicode_assigned f 16 f 0 1 0 t i 25 pg_catalog +6107 pg_stat_get_backend_subxact f 2249 f 0 1 0 t s 23 23 23 16 ioo bid,subxact_count,subxact_overflowed pg_catalog +6118 pg_stat_get_subscription f 2249 t 0 1 0 f s 26 26 26 26 23 23 3220 1184 1184 3220 1184 25 ioooooooooo subid,subid,relid,pid,leader_pid,received_lsn,last_msg_send_time,last_msg_receipt_time,latest_end_lsn,latest_end_time,worker_type pg_catalog +6119 pg_get_publication_tables f 2249 t 25 1 0 t s 1009 1009 26 26 22 194 voooo pubname,pubid,relid,attrs,qual pg_catalog +6120 pg_get_replica_identity_index f 2205 f 0 1 0 t s 2205 pg_catalog +6121 pg_relation_is_publishable f 16 f 0 1 0 t s 2205 pg_catalog +6154 multirange_gist_consistent f 16 f 0 5 0 t i 2281 4537 21 26 2281 pg_catalog +6156 multirange_gist_compress f 2281 f 0 1 0 t i 2281 pg_catalog +6159 pg_get_catalog_foreign_keys f 2249 t 0 0 0 t s 2205 1009 2205 1009 16 16 oooooo fktable,fkcols,pktable,pkcols,is_array,is_opt pg_catalog +6160 string_to_table f 25 t 0 2 0 f i 25 25 pg_catalog +6161 string_to_table f 25 t 0 3 0 f i 25 25 25 pg_catalog +6162 bit_count f 20 f 0 1 0 t i 1560 pg_catalog +6163 bit_count f 20 f 0 1 0 t i 17 pg_catalog +6164 bit_xor a 21 f 0 1 0 f i 21 pg_catalog +6165 bit_xor a 23 f 0 1 0 f i 23 pg_catalog +6166 bit_xor a 20 f 0 1 0 f i 20 pg_catalog +6167 bit_xor a 1560 f 0 1 0 f i 1560 pg_catalog +6168 pg_xact_commit_timestamp_origin f 2249 f 0 1 0 t v 28 28 1184 26 ioo xid,timestamp,roident pg_catalog +6169 pg_stat_get_replication_slot f 2249 f 0 1 0 t s 25 25 25 20 20 20 20 20 20 20 20 1184 ioooooooooo slot_name,slot_name,spill_txns,spill_count,spill_bytes,stream_txns,stream_count,stream_bytes,total_txns,total_bytes,stats_reset pg_catalog +6170 pg_stat_reset_replication_slot f 2278 f 0 1 0 f v 25 pg_catalog +6172 trim_array f 2277 f 0 2 0 t i 2277 23 pg_catalog +6173 pg_get_statisticsobjdef_expressions f 1009 f 0 1 0 t s 26 pg_catalog +6174 pg_get_statisticsobjdef_columns f 25 f 0 1 0 t s 26 pg_catalog +6177 date_bin f 1114 f 0 3 0 t i 1186 1114 1114 pg_catalog +6178 date_bin f 1184 f 0 3 0 t i 1186 1184 1184 pg_catalog +6179 array_subscript_handler f 2281 f 0 1 0 t i 2281 pg_catalog +6180 raw_array_subscript_handler f 2281 f 0 1 0 t i 2281 pg_catalog +6183 ts_debug f 2249 t 0 2 0 t s 3734 25 3734 25 25 25 25 3770 3769 1009 iioooooo config,document,alias,description,token,dictionaries,dictionary,lexemes pg_catalog +6184 ts_debug f 2249 t 0 1 0 t s 25 25 25 25 25 3770 3769 1009 ioooooo document,alias,description,token,dictionaries,dictionary,lexemes pg_catalog +6185 pg_stat_get_db_session_time f 701 f 0 1 0 t s 26 pg_catalog +6186 pg_stat_get_db_active_time f 701 f 0 1 0 t s 26 pg_catalog +6187 pg_stat_get_db_idle_in_transaction_time f 701 f 0 1 0 t s 26 pg_catalog +6188 pg_stat_get_db_sessions f 20 f 0 1 0 t s 26 pg_catalog +6189 pg_stat_get_db_sessions_abandoned f 20 f 0 1 0 t s 26 pg_catalog +6190 pg_stat_get_db_sessions_fatal f 20 f 0 1 0 t s 26 pg_catalog +6191 pg_stat_get_db_sessions_killed f 20 f 0 1 0 t s 26 pg_catalog +6192 hash_record f 23 f 0 1 0 t i 2249 pg_catalog +6193 hash_record_extended f 20 f 0 2 0 t i 2249 20 pg_catalog +6195 ltrim f 17 f 0 2 0 t i 17 17 pg_catalog +6196 rtrim f 17 f 0 2 0 t i 17 17 pg_catalog +6197 pg_get_function_sqlbody f 25 f 0 1 0 t s 26 pg_catalog +6198 unistr f 25 f 0 1 0 t i 25 pg_catalog +6199 extract f 1700 f 0 2 0 t i 25 1082 pg_catalog +6200 extract f 1700 f 0 2 0 t i 25 1083 pg_catalog +6201 extract f 1700 f 0 2 0 t i 25 1266 pg_catalog +6202 extract f 1700 f 0 2 0 t i 25 1114 pg_catalog +6203 extract f 1700 f 0 2 0 t s 25 1184 pg_catalog +6204 extract f 1700 f 0 2 0 t i 25 1186 pg_catalog +6205 has_parameter_privilege f 16 f 0 3 0 t s 19 25 25 pg_catalog +6206 has_parameter_privilege f 16 f 0 3 0 t s 26 25 25 pg_catalog +6207 has_parameter_privilege f 16 f 0 2 0 t s 25 25 pg_catalog +6208 pg_read_file f 25 f 0 2 0 t v 25 16 pg_catalog +6209 pg_read_binary_file f 17 f 0 2 0 t v 25 16 pg_catalog +6210 pg_input_is_valid f 16 f 0 2 0 t s 25 25 pg_catalog +6211 pg_input_error_info f 2249 f 0 2 0 t s 25 25 25 25 25 25 25 25 iioooo value,type_name,message,detail,hint,sql_error_code pg_catalog +6212 random_normal f 701 f 0 2 2 t v 701 701 mean,stddev pg_catalog +6213 pg_split_walfile_name f 2249 f 0 1 0 t s 25 25 1700 20 ioo file_name,segment_number,timeline_id pg_catalog +6214 pg_stat_get_io f 2249 t 0 0 0 t v 25 25 25 20 1700 701 20 1700 701 20 701 20 1700 701 20 20 20 20 701 1184 oooooooooooooooooooo backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset pg_catalog +6215 array_shuffle f 2277 f 0 1 0 t v 2277 pg_catalog +6216 array_sample f 2277 f 0 2 0 t v 2277 23 pg_catalog +6217 pg_stat_get_tuples_newpage_updated f 20 f 0 1 0 t s 26 pg_catalog +6218 pg_stat_get_xact_tuples_newpage_updated f 20 f 0 1 0 t v 26 pg_catalog +6219 erf f 701 f 0 1 0 t i 701 pg_catalog +6220 erfc f 701 f 0 1 0 t i 701 pg_catalog +6221 date_add f 1184 f 0 2 0 t s 1184 1186 pg_catalog +6222 date_add f 1184 f 0 3 0 t i 1184 1186 25 pg_catalog +6223 date_subtract f 1184 f 0 2 0 t s 1184 1186 pg_catalog +6224 pg_get_wal_resource_managers f 2249 t 0 0 0 t v 23 25 16 ooo rm_id,rm_name,rm_builtin pg_catalog +6225 multirange_agg_transfn f 2281 f 0 2 0 f i 2281 4537 pg_catalog +6226 multirange_agg_finalfn f 4537 f 0 2 0 f i 2281 4537 pg_catalog +6227 range_agg a 4537 f 0 1 0 f i 4537 pg_catalog +6230 pg_stat_have_stats f 16 f 0 3 0 t v 25 26 20 pg_catalog +6231 pg_stat_get_subscription_stats f 2249 f 0 1 0 t s 26 26 26 20 20 20 20 20 20 20 20 20 1184 iooooooooooo subid,subid,apply_error_count,sync_error_count,confl_insert_exists,confl_update_origin_differs,confl_update_exists,confl_update_missing,confl_delete_origin_differs,confl_delete_missing,confl_multiple_unique_conflicts,stats_reset pg_catalog +6232 pg_stat_reset_subscription_stats f 2278 f 0 1 0 f v 26 pg_catalog +6233 window_row_number_support f 2281 f 0 1 0 t i 2281 pg_catalog +6234 window_rank_support f 2281 f 0 1 0 t i 2281 pg_catalog +6235 window_dense_rank_support f 2281 f 0 1 0 t i 2281 pg_catalog +6236 int8inc_support f 2281 f 0 1 0 t i 2281 pg_catalog +6240 pg_settings_get_flags f 1009 f 0 1 0 t s 25 pg_catalog +6241 pg_stop_making_pinned_objects f 2278 f 0 0 0 t v pg_catalog +6242 text_starts_with_support f 2281 f 0 1 0 t i 2281 pg_catalog +6248 pg_stat_get_recovery_prefetch f 2249 t 0 0 0 t v 1184 20 20 20 20 20 20 23 23 23 oooooooooo stats_reset,prefetch,hit,skip_init,skip_new,skip_fpw,skip_rep,wal_distance,block_distance,io_depth pg_catalog +6249 pg_database_collation_actual_version f 25 f 0 1 0 t v 26 pg_catalog +6250 pg_ident_file_mappings f 2249 t 0 0 0 t v 23 25 23 25 25 25 25 ooooooo map_number,file_name,line_number,map_name,sys_name,pg_username,error pg_catalog +6251 regexp_replace f 25 f 0 6 0 t i 25 25 25 23 23 25 string,pattern,replacement,start,N,flags pg_catalog +6252 regexp_replace f 25 f 0 5 0 t i 25 25 25 23 23 string,pattern,replacement,start,N pg_catalog +6253 regexp_replace f 25 f 0 4 0 t i 25 25 25 23 string,pattern,replacement,start pg_catalog +6254 regexp_count f 23 f 0 2 0 t i 25 25 string,pattern pg_catalog +6255 regexp_count f 23 f 0 3 0 t i 25 25 23 string,pattern,start pg_catalog +6256 regexp_count f 23 f 0 4 0 t i 25 25 23 25 string,pattern,start,flags pg_catalog +6257 regexp_instr f 23 f 0 2 0 t i 25 25 string,pattern pg_catalog +6258 regexp_instr f 23 f 0 3 0 t i 25 25 23 string,pattern,start pg_catalog +6259 regexp_instr f 23 f 0 4 0 t i 25 25 23 23 string,pattern,start,N pg_catalog +6260 regexp_instr f 23 f 0 5 0 t i 25 25 23 23 23 string,pattern,start,N,endoption pg_catalog +6261 regexp_instr f 23 f 0 6 0 t i 25 25 23 23 23 25 string,pattern,start,N,endoption,flags pg_catalog +6262 regexp_instr f 23 f 0 7 0 t i 25 25 23 23 23 25 23 string,pattern,start,N,endoption,flags,subexpr pg_catalog +6263 regexp_like f 16 f 0 2 0 t i 25 25 string,pattern pg_catalog +6264 regexp_like f 16 f 0 3 0 t i 25 25 25 string,pattern,flags pg_catalog +6265 regexp_substr f 25 f 0 2 0 t i 25 25 string,pattern pg_catalog +6266 regexp_substr f 25 f 0 3 0 t i 25 25 23 string,pattern,start pg_catalog +6267 regexp_substr f 25 f 0 4 0 t i 25 25 23 23 string,pattern,start,N pg_catalog +6268 regexp_substr f 25 f 0 5 0 t i 25 25 23 23 25 string,pattern,start,N,flags pg_catalog +6269 regexp_substr f 25 f 0 6 0 t i 25 25 23 23 25 23 string,pattern,start,N,flags,subexpr pg_catalog +6270 pg_ls_logicalsnapdir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +6271 pg_ls_logicalmapdir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +6272 pg_ls_replslotdir f 2249 t 0 1 0 t v 25 25 25 20 1184 iooo slot_name,name,size,modification pg_catalog +6273 date_subtract f 1184 f 0 3 0 t i 1184 1186 25 pg_catalog +6274 generate_series f 1184 t 0 4 0 t i 1184 1184 1186 25 pg_catalog +6275 json_agg_strict_transfn f 2281 f 0 2 0 f s 2281 2283 pg_catalog +6276 json_agg_strict a 114 f 0 1 0 f s 2283 pg_catalog +6277 json_object_agg_strict_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +6278 json_object_agg_unique_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +6279 json_object_agg_unique_strict_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +6280 json_object_agg_strict a 114 f 0 2 0 f s 2276 2276 key,value pg_catalog +6281 json_object_agg_unique a 114 f 0 2 0 f s 2276 2276 key,value pg_catalog +6282 json_object_agg_unique_strict a 114 f 0 2 0 f s 2276 2276 key,value pg_catalog +6283 jsonb_agg_strict_transfn f 2281 f 0 2 0 f s 2281 2283 pg_catalog +6284 jsonb_agg_strict a 3802 f 0 1 0 f s 2283 pg_catalog +6285 jsonb_object_agg_strict_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +6286 jsonb_object_agg_unique_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +6287 jsonb_object_agg_unique_strict_transfn f 2281 f 0 3 0 f s 2281 2276 2276 pg_catalog +6288 jsonb_object_agg_strict a 3802 f 0 2 0 f i 2276 2276 key,value pg_catalog +6289 jsonb_object_agg_unique a 3802 f 0 2 0 f i 2276 2276 key,value pg_catalog +6290 jsonb_object_agg_unique_strict a 3802 f 0 2 0 f i 2276 2276 key,value pg_catalog +6291 any_value a 2283 f 0 1 0 f i 2283 pg_catalog +6292 any_value_transfn f 2283 f 0 2 0 t i 2283 2283 pg_catalog +6293 array_agg_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +6294 array_agg_serialize f 17 f 0 1 0 t i 2281 pg_catalog +6295 array_agg_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +6296 array_agg_array_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +6297 array_agg_array_serialize f 17 f 0 1 0 t i 2281 pg_catalog +6298 array_agg_array_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +6299 string_agg_combine f 2281 f 0 2 0 f i 2281 2281 pg_catalog +6300 string_agg_serialize f 17 f 0 1 0 t i 2281 pg_catalog +6301 string_agg_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +6305 pg_log_standby_snapshot f 3220 f 0 0 0 t v pg_catalog +6306 window_percent_rank_support f 2281 f 0 1 0 t i 2281 pg_catalog +6307 window_cume_dist_support f 2281 f 0 1 0 t i 2281 pg_catalog +6308 window_ntile_support f 2281 f 0 1 0 t i 2281 pg_catalog +6309 pg_stat_get_db_conflict_logicalslot f 20 f 0 1 0 t s 26 pg_catalog +6310 pg_stat_get_lastscan f 1184 f 0 1 0 t s 26 pg_catalog +6311 system_user f 25 f 0 0 0 t s pg_catalog +6312 binary_upgrade_logical_slot_has_caught_up f 16 f 0 1 0 t v 19 pg_catalog +6313 pg_stat_get_backend_wal f 2249 f 0 1 0 t v 23 23 20 20 1700 20 1184 iooooo backend_pid,wal_records,wal_fpi,wal_bytes,wal_buffers_full,stats_reset pg_catalog +6314 pg_stat_get_checkpointer_stat_reset_time f 1184 f 0 0 0 t s pg_catalog +6315 pg_basetype f 2206 f 0 1 0 t s 2206 pg_catalog +6316 pg_column_toast_chunk_id f 26 f 0 1 0 t s 2276 pg_catalog +6317 to_regtypemod f 23 f 0 1 0 t s 25 pg_catalog +6318 pg_get_wait_events f 2249 t 0 0 0 t v 25 25 25 ooo type,name,description pg_catalog +6319 binary_upgrade_add_sub_rel_state f 2278 f 0 4 0 f v 25 26 18 3220 pg_catalog +6320 binary_upgrade_replorigin_advance f 2278 f 0 2 0 f v 25 3220 pg_catalog +6321 pg_available_wal_summaries f 2249 t 0 0 0 t v 20 3220 3220 ooo tli,start_lsn,end_lsn pg_catalog +6322 pg_wal_summary_contents f 2249 t 0 3 0 t v 20 3220 3220 20 3220 3220 26 26 26 21 20 16 iiioooooo tli,start_lsn,end_lsn,relfilenode,reltablespace,reldatabase,relforknumber,relblocknumber,is_limit_block pg_catalog +6323 pg_get_wal_summarizer_state f 2249 f 0 0 0 t v 20 3220 3220 23 oooo summarized_tli,summarized_lsn,pending_lsn,summarizer_pid pg_catalog +6324 interval_avg_serialize f 17 f 0 1 0 t i 2281 pg_catalog +6325 interval_avg_deserialize f 2281 f 0 2 0 t i 17 2281 pg_catalog +6326 interval_sum f 1186 f 0 1 0 f i 2281 pg_catalog +6327 pg_stat_get_checkpointer_restartpoints_timed f 20 f 0 0 0 t s pg_catalog +6328 pg_stat_get_checkpointer_restartpoints_requested f 20 f 0 0 0 t s pg_catalog +6329 pg_stat_get_checkpointer_restartpoints_performed f 20 f 0 0 0 t s pg_catalog +6330 to_bin f 25 f 0 1 0 t i 23 pg_catalog +6331 to_bin f 25 f 0 1 0 t i 20 pg_catalog +6332 to_oct f 25 f 0 1 0 t i 23 pg_catalog +6333 to_oct f 25 f 0 1 0 t i 20 pg_catalog +6334 timezone f 1114 f 0 1 0 t s 1184 pg_catalog +6335 timezone f 1184 f 0 1 0 t s 1114 pg_catalog +6336 timezone f 1266 f 0 1 0 t s 1266 pg_catalog +6338 jsonb_populate_record_valid f 16 f 0 2 0 f s 2283 3802 pg_catalog +6339 random f 23 f 0 2 0 t v 23 23 min,max pg_catalog +6340 random f 20 f 0 2 0 t v 20 20 min,max pg_catalog +6341 random f 1700 f 0 2 0 t v 1700 1700 min,max pg_catalog +6342 uuid_extract_timestamp f 1184 f 0 1 0 t i 2950 pg_catalog +6343 uuid_extract_version f 21 f 0 1 0 t i 2950 pg_catalog +6344 pg_sync_replication_slots f 2278 f 0 0 0 t v pg_catalog +6345 range_contains_elem_support f 2281 f 0 1 0 t i 2281 pg_catalog +6346 elem_contained_by_range_support f 2281 f 0 1 0 t i 2281 pg_catalog +6347 gist_translate_cmptype_common f 21 f 0 1 0 t i 23 pg_catalog +6348 has_largeobject_privilege f 16 f 0 3 0 t s 19 26 25 pg_catalog +6349 has_largeobject_privilege f 16 f 0 2 0 t s 26 25 pg_catalog +6350 has_largeobject_privilege f 16 f 0 3 0 t s 26 26 25 pg_catalog +6353 pg_get_loaded_modules f 2249 t 0 0 0 t v 25 25 25 ooo module_name,version,file_name pg_catalog +6354 generate_series_timestamp_support f 2281 f 0 1 0 t i 2281 pg_catalog +6355 pg_stat_get_db_parallel_workers_to_launch f 20 f 0 1 0 t s 26 pg_catalog +6356 pg_stat_get_db_parallel_workers_launched f 20 f 0 1 0 t s 26 pg_catalog +6357 generate_series_numeric_support f 2281 f 0 1 0 t i 2281 pg_catalog +6358 pg_stat_get_total_vacuum_time f 701 f 0 1 0 t s 26 pg_catalog +6359 pg_stat_get_total_autovacuum_time f 701 f 0 1 0 t s 26 pg_catalog +6360 pg_stat_get_total_analyze_time f 701 f 0 1 0 t s 26 pg_catalog +6361 pg_stat_get_total_autoanalyze_time f 701 f 0 1 0 t s 26 pg_catalog +6362 pg_restore_relation_stats f 16 f 2276 1 0 f v 2276 v kwargs pg_catalog +6363 pg_restore_attribute_stats f 16 f 2276 1 0 f v 2276 v kwargs pg_catalog +6364 crc32 f 20 f 0 1 0 t i 17 pg_catalog +6365 crc32c f 20 f 0 1 0 t i 17 pg_catalog +6366 pg_stat_get_checkpointer_slru_written f 20 f 0 0 0 t s pg_catalog +6367 bytea f 17 f 0 1 0 t i 21 pg_catalog +6368 bytea f 17 f 0 1 0 t i 23 pg_catalog +6369 bytea f 17 f 0 1 0 t i 20 pg_catalog +6370 int2 f 21 f 0 1 0 t i 17 pg_catalog +6371 int4 f 23 f 0 1 0 t i 17 pg_catalog +6372 int8 f 20 f 0 1 0 t i 17 pg_catalog +6373 max a 2249 f 0 1 0 f i 2249 pg_catalog +6374 min a 2249 f 0 1 0 f i 2249 pg_catalog +6375 record_larger f 2249 f 0 2 0 t i 2249 2249 pg_catalog +6376 record_smaller f 2249 f 0 2 0 t i 2249 2249 pg_catalog +6377 pg_stat_get_checkpointer_num_performed f 20 f 0 0 0 t s pg_catalog +6378 array_append_support f 2281 f 0 1 0 t i 2281 pg_catalog +6379 array_prepend_support f 2281 f 0 1 0 t i 2281 pg_catalog +6380 array_subscript_handler_support f 2281 f 0 1 0 t i 2281 pg_catalog +6381 array_reverse f 2277 f 0 1 0 t i 2277 pg_catalog +6382 reverse f 17 f 0 1 0 t i 17 pg_catalog +6383 gamma f 701 f 0 1 0 t i 701 pg_catalog +6384 lgamma f 701 f 0 1 0 t i 701 pg_catalog +6385 pg_get_acl f 1034 f 0 3 0 t s 26 26 23 classid,objid,objsubid pg_catalog +6386 pg_stat_get_backend_io f 2249 t 0 1 0 t v 23 23 25 25 25 20 1700 701 20 1700 701 20 701 20 1700 701 20 20 20 20 701 1184 ioooooooooooooooooooo backend_pid,backend_type,object,context,reads,read_bytes,read_time,writes,write_bytes,write_time,writebacks,writeback_time,extends,extend_bytes,extend_time,hits,evictions,reuses,fsyncs,fsync_time,stats_reset pg_catalog +6387 pg_stat_reset_backend_stats f 2278 f 0 1 0 t v 23 pg_catalog +6388 array_sort f 2277 f 0 1 0 t i 2277 pg_catalog +6389 array_sort f 2277 f 0 2 0 t i 2277 16 array,descending pg_catalog +6390 array_sort f 2277 f 0 3 0 t i 2277 16 16 array,descending,nulls_first pg_catalog +6391 range_sortsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6393 bytea_larger f 17 f 0 2 0 t i 17 17 pg_catalog +6394 bytea_smaller f 17 f 0 2 0 t i 17 17 pg_catalog +6395 max a 17 f 0 1 0 f i 17 pg_catalog +6396 min a 17 f 0 1 0 f i 17 pg_catalog +6397 pg_clear_relation_stats f 2278 f 0 2 0 f v 25 25 schemaname,relname pg_catalog +6398 pg_clear_attribute_stats f 2278 f 0 4 0 f v 25 25 25 16 schemaname,relname,attname,inherited pg_catalog +6399 pg_get_aios f 2249 t 0 0 0 t v 23 23 20 25 25 20 20 25 21 23 25 25 16 16 16 ooooooooooooooo pid,io_id,io_generation,state,operation,off,length,target,handle_data_len,raw_result,result,target_desc,f_sync,f_localmem,f_buffered pg_catalog +6400 pg_ls_summariesdir f 2249 t 0 0 0 t v 25 20 1184 ooo name,size,modification pg_catalog +6401 pg_timezone_abbrevs_zone f 2249 t 0 0 0 t s 25 1186 16 ooo abbrev,utc_offset,is_dst pg_catalog +6402 btint2skipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6403 btint4skipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6404 btint8skipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6405 btoidskipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6406 btcharskipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6407 date_skipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6408 btboolskipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6409 timestamp_skipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6410 uuid_skipsupport f 2278 f 0 1 0 t i 2281 pg_catalog +6412 casefold f 25 f 0 1 0 t i 25 pg_catalog +6413 hashbytea f 23 f 0 1 0 t i 17 pg_catalog +6414 hashbyteaextended f 20 f 0 2 0 t i 17 20 pg_catalog +6415 hashdate f 23 f 0 1 0 t i 1082 pg_catalog +6416 hashdateextended f 20 f 0 2 0 t i 1082 20 pg_catalog +6417 hashbool f 23 f 0 1 0 t i 16 pg_catalog +6418 hashboolextended f 20 f 0 2 0 t i 16 20 pg_catalog +6419 hashxid f 23 f 0 1 0 t i 28 pg_catalog +6420 hashxidextended f 20 f 0 2 0 t i 28 20 pg_catalog +6421 hashxid8 f 23 f 0 1 0 t i 5069 pg_catalog +6422 hashxid8extended f 20 f 0 2 0 t i 5069 20 pg_catalog +6423 hashcid f 23 f 0 1 0 t i 29 pg_catalog +6424 hashcidextended f 20 f 0 2 0 t i 29 20 pg_catalog +6425 timestamptz_hash f 23 f 0 1 0 t i 1184 pg_catalog +6426 timestamptz_hash_extended f 20 f 0 2 0 t i 1184 20 pg_catalog +6427 pg_get_sequence_data f 2249 f 0 1 0 t v 2205 2205 20 16 ioo sequence_oid,last_value,is_called pg_catalog +6428 uuidv4 f 2950 f 0 0 0 t v pg_catalog +6429 uuidv7 f 2950 f 0 0 0 t v pg_catalog +6430 uuidv7 f 2950 f 0 1 0 t v 1186 shift pg_catalog +13083 dsnowball_init f 2281 f 0 1 0 t v 2281 pg_catalog +13084 dsnowball_lexize f 2281 f 0 4 0 t v 2281 2281 2281 2281 pg_catalog +13495 plpgsql_call_handler f 2280 f 0 0 0 f v pg_catalog +13496 plpgsql_inline_handler f 2278 f 0 1 0 t v 2281 pg_catalog +13497 plpgsql_validator f 2278 f 0 1 0 t v 26 pg_catalog diff --git a/internal/catalog/data/18/pg_range.tsv b/internal/catalog/data/18/pg_range.tsv new file mode 100644 index 0000000..ea4c6df --- /dev/null +++ b/internal/catalog/data/18/pg_range.tsv @@ -0,0 +1,6 @@ +3904 23 4451 +3906 1700 4532 +3908 1114 4533 +3910 1184 4534 +3912 1082 4535 +3926 20 4536 diff --git a/internal/catalog/data/18/pg_type.tsv b/internal/catalog/data/18/pg_type.tsv new file mode 100644 index 0000000..820598f --- /dev/null +++ b/internal/catalog/data/18/pg_type.tsv @@ -0,0 +1,621 @@ +16 bool b B t 1 t 0 1000 0 0 -1 pg_catalog +17 bytea b U f -1 f 0 1001 0 0 -1 pg_catalog +18 char b Z f 1 t 0 1002 0 0 -1 pg_catalog +19 name b S f 64 f 18 1003 0 0 -1 pg_catalog +20 int8 b N f 8 t 0 1016 0 0 -1 pg_catalog +21 int2 b N f 2 t 0 1005 0 0 -1 pg_catalog +22 int2vector b A f -1 f 21 1006 0 0 -1 pg_catalog +23 int4 b N f 4 t 0 1007 0 0 -1 pg_catalog +24 regproc b N f 4 t 0 1008 0 0 -1 pg_catalog +25 text b S t -1 f 0 1009 0 0 -1 pg_catalog +26 oid b N t 4 t 0 1028 0 0 -1 pg_catalog +27 tid b U f 6 f 0 1010 0 0 -1 pg_catalog +28 xid b U f 4 t 0 1011 0 0 -1 pg_catalog +29 cid b U f 4 t 0 1012 0 0 -1 pg_catalog +30 oidvector b A f -1 f 26 1013 0 0 -1 pg_catalog +32 pg_ddl_command p P f 8 t 0 0 0 0 -1 pg_catalog +71 pg_type c C f -1 f 0 210 1247 0 -1 pg_catalog +75 pg_attribute c C f -1 f 0 270 1249 0 -1 pg_catalog +81 pg_proc c C f -1 f 0 272 1255 0 -1 pg_catalog +83 pg_class c C f -1 f 0 273 1259 0 -1 pg_catalog +114 json b U f -1 f 0 199 0 0 -1 pg_catalog +142 xml b U f -1 f 0 143 0 0 -1 pg_catalog +143 _xml b A f -1 f 142 0 0 0 -1 pg_catalog +194 pg_node_tree b Z f -1 f 0 0 0 0 -1 pg_catalog +199 _json b A f -1 f 114 0 0 0 -1 pg_catalog +210 _pg_type b A f -1 f 71 0 0 0 -1 pg_catalog +269 table_am_handler p P f 4 t 0 0 0 0 -1 pg_catalog +270 _pg_attribute b A f -1 f 75 0 0 0 -1 pg_catalog +271 _xid8 b A f -1 f 5069 0 0 0 -1 pg_catalog +272 _pg_proc b A f -1 f 81 0 0 0 -1 pg_catalog +273 _pg_class b A f -1 f 83 0 0 0 -1 pg_catalog +325 index_am_handler p P f 4 t 0 0 0 0 -1 pg_catalog +600 point b G f 16 f 701 1017 0 0 -1 pg_catalog +601 lseg b G f 32 f 600 1018 0 0 -1 pg_catalog +602 path b G f -1 f 0 1019 0 0 -1 pg_catalog +603 box b G f 32 f 600 1020 0 0 -1 pg_catalog +604 polygon b G f -1 f 0 1027 0 0 -1 pg_catalog +628 line b G f 24 f 701 629 0 0 -1 pg_catalog +629 _line b A f -1 f 628 0 0 0 -1 pg_catalog +650 cidr b I f -1 f 0 651 0 0 -1 pg_catalog +651 _cidr b A f -1 f 650 0 0 0 -1 pg_catalog +700 float4 b N f 4 t 0 1021 0 0 -1 pg_catalog +701 float8 b N t 8 t 0 1022 0 0 -1 pg_catalog +705 unknown p X f -2 f 0 0 0 0 -1 pg_catalog +718 circle b G f 24 f 0 719 0 0 -1 pg_catalog +719 _circle b A f -1 f 718 0 0 0 -1 pg_catalog +774 macaddr8 b U f 8 f 0 775 0 0 -1 pg_catalog +775 _macaddr8 b A f -1 f 774 0 0 0 -1 pg_catalog +790 money b N f 8 t 0 791 0 0 -1 pg_catalog +791 _money b A f -1 f 790 0 0 0 -1 pg_catalog +829 macaddr b U f 6 f 0 1040 0 0 -1 pg_catalog +869 inet b I t -1 f 0 1041 0 0 -1 pg_catalog +1000 _bool b A f -1 f 16 0 0 0 -1 pg_catalog +1001 _bytea b A f -1 f 17 0 0 0 -1 pg_catalog +1002 _char b A f -1 f 18 0 0 0 -1 pg_catalog +1003 _name b A f -1 f 19 0 0 0 -1 pg_catalog +1005 _int2 b A f -1 f 21 0 0 0 -1 pg_catalog +1006 _int2vector b A f -1 f 22 0 0 0 -1 pg_catalog +1007 _int4 b A f -1 f 23 0 0 0 -1 pg_catalog +1008 _regproc b A f -1 f 24 0 0 0 -1 pg_catalog +1009 _text b A f -1 f 25 0 0 0 -1 pg_catalog +1010 _tid b A f -1 f 27 0 0 0 -1 pg_catalog +1011 _xid b A f -1 f 28 0 0 0 -1 pg_catalog +1012 _cid b A f -1 f 29 0 0 0 -1 pg_catalog +1013 _oidvector b A f -1 f 30 0 0 0 -1 pg_catalog +1014 _bpchar b A f -1 f 1042 0 0 0 -1 pg_catalog +1015 _varchar b A f -1 f 1043 0 0 0 -1 pg_catalog +1016 _int8 b A f -1 f 20 0 0 0 -1 pg_catalog +1017 _point b A f -1 f 600 0 0 0 -1 pg_catalog +1018 _lseg b A f -1 f 601 0 0 0 -1 pg_catalog +1019 _path b A f -1 f 602 0 0 0 -1 pg_catalog +1020 _box b A f -1 f 603 0 0 0 -1 pg_catalog +1021 _float4 b A f -1 f 700 0 0 0 -1 pg_catalog +1022 _float8 b A f -1 f 701 0 0 0 -1 pg_catalog +1027 _polygon b A f -1 f 604 0 0 0 -1 pg_catalog +1028 _oid b A f -1 f 26 0 0 0 -1 pg_catalog +1033 aclitem b U f 16 f 0 1034 0 0 -1 pg_catalog +1034 _aclitem b A f -1 f 1033 0 0 0 -1 pg_catalog +1040 _macaddr b A f -1 f 829 0 0 0 -1 pg_catalog +1041 _inet b A f -1 f 869 0 0 0 -1 pg_catalog +1042 bpchar b S f -1 f 0 1014 0 0 -1 pg_catalog +1043 varchar b S f -1 f 0 1015 0 0 -1 pg_catalog +1082 date b D f 4 t 0 1182 0 0 -1 pg_catalog +1083 time b D f 8 t 0 1183 0 0 -1 pg_catalog +1114 timestamp b D f 8 t 0 1115 0 0 -1 pg_catalog +1115 _timestamp b A f -1 f 1114 0 0 0 -1 pg_catalog +1182 _date b A f -1 f 1082 0 0 0 -1 pg_catalog +1183 _time b A f -1 f 1083 0 0 0 -1 pg_catalog +1184 timestamptz b D t 8 t 0 1185 0 0 -1 pg_catalog +1185 _timestamptz b A f -1 f 1184 0 0 0 -1 pg_catalog +1186 interval b T t 16 f 0 1187 0 0 -1 pg_catalog +1187 _interval b A f -1 f 1186 0 0 0 -1 pg_catalog +1231 _numeric b A f -1 f 1700 0 0 0 -1 pg_catalog +1248 pg_database c C f -1 f 0 10052 1262 0 -1 pg_catalog +1263 _cstring b A f -1 f 2275 0 0 0 -1 pg_catalog +1266 timetz b D f 12 f 0 1270 0 0 -1 pg_catalog +1270 _timetz b A f -1 f 1266 0 0 0 -1 pg_catalog +1560 bit b V f -1 f 0 1561 0 0 -1 pg_catalog +1561 _bit b A f -1 f 1560 0 0 0 -1 pg_catalog +1562 varbit b V t -1 f 0 1563 0 0 -1 pg_catalog +1563 _varbit b A f -1 f 1562 0 0 0 -1 pg_catalog +1700 numeric b N f -1 f 0 1231 0 0 -1 pg_catalog +1790 refcursor b U f -1 f 0 2201 0 0 -1 pg_catalog +2201 _refcursor b A f -1 f 1790 0 0 0 -1 pg_catalog +2202 regprocedure b N f 4 t 0 2207 0 0 -1 pg_catalog +2203 regoper b N f 4 t 0 2208 0 0 -1 pg_catalog +2204 regoperator b N f 4 t 0 2209 0 0 -1 pg_catalog +2205 regclass b N f 4 t 0 2210 0 0 -1 pg_catalog +2206 regtype b N f 4 t 0 2211 0 0 -1 pg_catalog +2207 _regprocedure b A f -1 f 2202 0 0 0 -1 pg_catalog +2208 _regoper b A f -1 f 2203 0 0 0 -1 pg_catalog +2209 _regoperator b A f -1 f 2204 0 0 0 -1 pg_catalog +2210 _regclass b A f -1 f 2205 0 0 0 -1 pg_catalog +2211 _regtype b A f -1 f 2206 0 0 0 -1 pg_catalog +2249 record p P f -1 f 0 2287 0 0 -1 pg_catalog +2275 cstring p P f -2 f 0 1263 0 0 -1 pg_catalog +2276 any p P f 4 t 0 0 0 0 -1 pg_catalog +2277 anyarray p P f -1 f 0 0 0 0 -1 pg_catalog +2278 void p P f 4 t 0 0 0 0 -1 pg_catalog +2279 trigger p P f 4 t 0 0 0 0 -1 pg_catalog +2280 language_handler p P f 4 t 0 0 0 0 -1 pg_catalog +2281 internal p P f 8 t 0 0 0 0 -1 pg_catalog +2283 anyelement p P f 4 t 0 0 0 0 -1 pg_catalog +2287 _record p P f -1 f 2249 0 0 0 -1 pg_catalog +2776 anynonarray p P f 4 t 0 0 0 0 -1 pg_catalog +2842 pg_authid c C f -1 f 0 10057 1260 0 -1 pg_catalog +2843 pg_auth_members c C f -1 f 0 10058 1261 0 -1 pg_catalog +2949 _txid_snapshot b A f -1 f 2970 0 0 0 -1 pg_catalog +2950 uuid b U f 16 f 0 2951 0 0 -1 pg_catalog +2951 _uuid b A f -1 f 2950 0 0 0 -1 pg_catalog +2970 txid_snapshot b U f -1 f 0 2949 0 0 -1 pg_catalog +3115 fdw_handler p P f 4 t 0 0 0 0 -1 pg_catalog +3220 pg_lsn b U f 8 t 0 3221 0 0 -1 pg_catalog +3221 _pg_lsn b A f -1 f 3220 0 0 0 -1 pg_catalog +3310 tsm_handler p P f 4 t 0 0 0 0 -1 pg_catalog +3361 pg_ndistinct b Z f -1 f 0 0 0 0 -1 pg_catalog +3402 pg_dependencies b Z f -1 f 0 0 0 0 -1 pg_catalog +3500 anyenum p P f 4 t 0 0 0 0 -1 pg_catalog +3614 tsvector b U f -1 f 0 3643 0 0 -1 pg_catalog +3615 tsquery b U f -1 f 0 3645 0 0 -1 pg_catalog +3642 gtsvector b U f -1 f 0 3644 0 0 -1 pg_catalog +3643 _tsvector b A f -1 f 3614 0 0 0 -1 pg_catalog +3644 _gtsvector b A f -1 f 3642 0 0 0 -1 pg_catalog +3645 _tsquery b A f -1 f 3615 0 0 0 -1 pg_catalog +3734 regconfig b N f 4 t 0 3735 0 0 -1 pg_catalog +3735 _regconfig b A f -1 f 3734 0 0 0 -1 pg_catalog +3769 regdictionary b N f 4 t 0 3770 0 0 -1 pg_catalog +3770 _regdictionary b A f -1 f 3769 0 0 0 -1 pg_catalog +3802 jsonb b U f -1 f 0 3807 0 0 -1 pg_catalog +3807 _jsonb b A f -1 f 3802 0 0 0 -1 pg_catalog +3831 anyrange p P f -1 f 0 0 0 0 -1 pg_catalog +3838 event_trigger p P f 4 t 0 0 0 0 -1 pg_catalog +3904 int4range r R f -1 f 0 3905 0 0 -1 pg_catalog +3905 _int4range b A f -1 f 3904 0 0 0 -1 pg_catalog +3906 numrange r R f -1 f 0 3907 0 0 -1 pg_catalog +3907 _numrange b A f -1 f 3906 0 0 0 -1 pg_catalog +3908 tsrange r R f -1 f 0 3909 0 0 -1 pg_catalog +3909 _tsrange b A f -1 f 3908 0 0 0 -1 pg_catalog +3910 tstzrange r R f -1 f 0 3911 0 0 -1 pg_catalog +3911 _tstzrange b A f -1 f 3910 0 0 0 -1 pg_catalog +3912 daterange r R f -1 f 0 3913 0 0 -1 pg_catalog +3913 _daterange b A f -1 f 3912 0 0 0 -1 pg_catalog +3926 int8range r R f -1 f 0 3927 0 0 -1 pg_catalog +3927 _int8range b A f -1 f 3926 0 0 0 -1 pg_catalog +4066 pg_shseclabel c C f -1 f 0 10093 3592 0 -1 pg_catalog +4072 jsonpath b U f -1 f 0 4073 0 0 -1 pg_catalog +4073 _jsonpath b A f -1 f 4072 0 0 0 -1 pg_catalog +4089 regnamespace b N f 4 t 0 4090 0 0 -1 pg_catalog +4090 _regnamespace b A f -1 f 4089 0 0 0 -1 pg_catalog +4096 regrole b N f 4 t 0 4097 0 0 -1 pg_catalog +4097 _regrole b A f -1 f 4096 0 0 0 -1 pg_catalog +4191 regcollation b N f 4 t 0 4192 0 0 -1 pg_catalog +4192 _regcollation b A f -1 f 4191 0 0 0 -1 pg_catalog +4451 int4multirange m R f -1 f 0 6150 0 0 -1 pg_catalog +4532 nummultirange m R f -1 f 0 6151 0 0 -1 pg_catalog +4533 tsmultirange m R f -1 f 0 6152 0 0 -1 pg_catalog +4534 tstzmultirange m R f -1 f 0 6153 0 0 -1 pg_catalog +4535 datemultirange m R f -1 f 0 6155 0 0 -1 pg_catalog +4536 int8multirange m R f -1 f 0 6157 0 0 -1 pg_catalog +4537 anymultirange p P f -1 f 0 0 0 0 -1 pg_catalog +4538 anycompatiblemultirange p P f -1 f 0 0 0 0 -1 pg_catalog +4600 pg_brin_bloom_summary b Z f -1 f 0 0 0 0 -1 pg_catalog +4601 pg_brin_minmax_multi_summary b Z f -1 f 0 0 0 0 -1 pg_catalog +5017 pg_mcv_list b Z f -1 f 0 0 0 0 -1 pg_catalog +5038 pg_snapshot b U f -1 f 0 5039 0 0 -1 pg_catalog +5039 _pg_snapshot b A f -1 f 5038 0 0 0 -1 pg_catalog +5069 xid8 b U f 8 t 0 271 0 0 -1 pg_catalog +5077 anycompatible p P f 4 t 0 0 0 0 -1 pg_catalog +5078 anycompatiblearray p P f -1 f 0 0 0 0 -1 pg_catalog +5079 anycompatiblenonarray p P f 4 t 0 0 0 0 -1 pg_catalog +5080 anycompatiblerange p P f -1 f 0 0 0 0 -1 pg_catalog +6101 pg_subscription c C f -1 f 0 10112 6100 0 -1 pg_catalog +6150 _int4multirange b A f -1 f 4451 0 0 0 -1 pg_catalog +6151 _nummultirange b A f -1 f 4532 0 0 0 -1 pg_catalog +6152 _tsmultirange b A f -1 f 4533 0 0 0 -1 pg_catalog +6153 _tstzmultirange b A f -1 f 4534 0 0 0 -1 pg_catalog +6155 _datemultirange b A f -1 f 4535 0 0 0 -1 pg_catalog +6157 _int8multirange b A f -1 f 4536 0 0 0 -1 pg_catalog +10000 _pg_attrdef b A f -1 f 10001 0 0 0 -1 pg_catalog +10001 pg_attrdef c C f -1 f 0 10000 2604 0 -1 pg_catalog +10002 _pg_constraint b A f -1 f 10003 0 0 0 -1 pg_catalog +10003 pg_constraint c C f -1 f 0 10002 2606 0 -1 pg_catalog +10004 _pg_inherits b A f -1 f 10005 0 0 0 -1 pg_catalog +10005 pg_inherits c C f -1 f 0 10004 2611 0 -1 pg_catalog +10006 _pg_index b A f -1 f 10007 0 0 0 -1 pg_catalog +10007 pg_index c C f -1 f 0 10006 2610 0 -1 pg_catalog +10008 _pg_operator b A f -1 f 10009 0 0 0 -1 pg_catalog +10009 pg_operator c C f -1 f 0 10008 2617 0 -1 pg_catalog +10010 _pg_opfamily b A f -1 f 10011 0 0 0 -1 pg_catalog +10011 pg_opfamily c C f -1 f 0 10010 2753 0 -1 pg_catalog +10012 _pg_opclass b A f -1 f 10013 0 0 0 -1 pg_catalog +10013 pg_opclass c C f -1 f 0 10012 2616 0 -1 pg_catalog +10014 _pg_am b A f -1 f 10015 0 0 0 -1 pg_catalog +10015 pg_am c C f -1 f 0 10014 2601 0 -1 pg_catalog +10016 _pg_amop b A f -1 f 10017 0 0 0 -1 pg_catalog +10017 pg_amop c C f -1 f 0 10016 2602 0 -1 pg_catalog +10018 _pg_amproc b A f -1 f 10019 0 0 0 -1 pg_catalog +10019 pg_amproc c C f -1 f 0 10018 2603 0 -1 pg_catalog +10020 _pg_language b A f -1 f 10021 0 0 0 -1 pg_catalog +10021 pg_language c C f -1 f 0 10020 2612 0 -1 pg_catalog +10022 _pg_largeobject_metadata b A f -1 f 10023 0 0 0 -1 pg_catalog +10023 pg_largeobject_metadata c C f -1 f 0 10022 2995 0 -1 pg_catalog +10024 _pg_largeobject b A f -1 f 10025 0 0 0 -1 pg_catalog +10025 pg_largeobject c C f -1 f 0 10024 2613 0 -1 pg_catalog +10026 _pg_aggregate b A f -1 f 10027 0 0 0 -1 pg_catalog +10027 pg_aggregate c C f -1 f 0 10026 2600 0 -1 pg_catalog +10028 _pg_statistic b A f -1 f 10029 0 0 0 -1 pg_catalog +10029 pg_statistic c C f -1 f 0 10028 2619 0 -1 pg_catalog +10030 _pg_statistic_ext b A f -1 f 10031 0 0 0 -1 pg_catalog +10031 pg_statistic_ext c C f -1 f 0 10030 3381 0 -1 pg_catalog +10032 _pg_statistic_ext_data b A f -1 f 10033 0 0 0 -1 pg_catalog +10033 pg_statistic_ext_data c C f -1 f 0 10032 3429 0 -1 pg_catalog +10034 _pg_rewrite b A f -1 f 10035 0 0 0 -1 pg_catalog +10035 pg_rewrite c C f -1 f 0 10034 2618 0 -1 pg_catalog +10036 _pg_trigger b A f -1 f 10037 0 0 0 -1 pg_catalog +10037 pg_trigger c C f -1 f 0 10036 2620 0 -1 pg_catalog +10038 _pg_event_trigger b A f -1 f 10039 0 0 0 -1 pg_catalog +10039 pg_event_trigger c C f -1 f 0 10038 3466 0 -1 pg_catalog +10040 _pg_description b A f -1 f 10041 0 0 0 -1 pg_catalog +10041 pg_description c C f -1 f 0 10040 2609 0 -1 pg_catalog +10042 _pg_cast b A f -1 f 10043 0 0 0 -1 pg_catalog +10043 pg_cast c C f -1 f 0 10042 2605 0 -1 pg_catalog +10044 _pg_enum b A f -1 f 10045 0 0 0 -1 pg_catalog +10045 pg_enum c C f -1 f 0 10044 3501 0 -1 pg_catalog +10046 _pg_namespace b A f -1 f 10047 0 0 0 -1 pg_catalog +10047 pg_namespace c C f -1 f 0 10046 2615 0 -1 pg_catalog +10048 _pg_conversion b A f -1 f 10049 0 0 0 -1 pg_catalog +10049 pg_conversion c C f -1 f 0 10048 2607 0 -1 pg_catalog +10050 _pg_depend b A f -1 f 10051 0 0 0 -1 pg_catalog +10051 pg_depend c C f -1 f 0 10050 2608 0 -1 pg_catalog +10052 _pg_database b A f -1 f 1248 0 0 0 -1 pg_catalog +10053 _pg_db_role_setting b A f -1 f 10054 0 0 0 -1 pg_catalog +10054 pg_db_role_setting c C f -1 f 0 10053 2964 0 -1 pg_catalog +10055 _pg_tablespace b A f -1 f 10056 0 0 0 -1 pg_catalog +10056 pg_tablespace c C f -1 f 0 10055 1213 0 -1 pg_catalog +10057 _pg_authid b A f -1 f 2842 0 0 0 -1 pg_catalog +10058 _pg_auth_members b A f -1 f 2843 0 0 0 -1 pg_catalog +10059 _pg_shdepend b A f -1 f 10060 0 0 0 -1 pg_catalog +10060 pg_shdepend c C f -1 f 0 10059 1214 0 -1 pg_catalog +10061 _pg_shdescription b A f -1 f 10062 0 0 0 -1 pg_catalog +10062 pg_shdescription c C f -1 f 0 10061 2396 0 -1 pg_catalog +10063 _pg_ts_config b A f -1 f 10064 0 0 0 -1 pg_catalog +10064 pg_ts_config c C f -1 f 0 10063 3602 0 -1 pg_catalog +10065 _pg_ts_config_map b A f -1 f 10066 0 0 0 -1 pg_catalog +10066 pg_ts_config_map c C f -1 f 0 10065 3603 0 -1 pg_catalog +10067 _pg_ts_dict b A f -1 f 10068 0 0 0 -1 pg_catalog +10068 pg_ts_dict c C f -1 f 0 10067 3600 0 -1 pg_catalog +10069 _pg_ts_parser b A f -1 f 10070 0 0 0 -1 pg_catalog +10070 pg_ts_parser c C f -1 f 0 10069 3601 0 -1 pg_catalog +10071 _pg_ts_template b A f -1 f 10072 0 0 0 -1 pg_catalog +10072 pg_ts_template c C f -1 f 0 10071 3764 0 -1 pg_catalog +10073 _pg_extension b A f -1 f 10074 0 0 0 -1 pg_catalog +10074 pg_extension c C f -1 f 0 10073 3079 0 -1 pg_catalog +10075 _pg_foreign_data_wrapper b A f -1 f 10076 0 0 0 -1 pg_catalog +10076 pg_foreign_data_wrapper c C f -1 f 0 10075 2328 0 -1 pg_catalog +10077 _pg_foreign_server b A f -1 f 10078 0 0 0 -1 pg_catalog +10078 pg_foreign_server c C f -1 f 0 10077 1417 0 -1 pg_catalog +10079 _pg_user_mapping b A f -1 f 10080 0 0 0 -1 pg_catalog +10080 pg_user_mapping c C f -1 f 0 10079 1418 0 -1 pg_catalog +10081 _pg_foreign_table b A f -1 f 10082 0 0 0 -1 pg_catalog +10082 pg_foreign_table c C f -1 f 0 10081 3118 0 -1 pg_catalog +10083 _pg_policy b A f -1 f 10084 0 0 0 -1 pg_catalog +10084 pg_policy c C f -1 f 0 10083 3256 0 -1 pg_catalog +10085 _pg_replication_origin b A f -1 f 10086 0 0 0 -1 pg_catalog +10086 pg_replication_origin c C f -1 f 0 10085 6000 0 -1 pg_catalog +10087 _pg_default_acl b A f -1 f 10088 0 0 0 -1 pg_catalog +10088 pg_default_acl c C f -1 f 0 10087 826 0 -1 pg_catalog +10089 _pg_init_privs b A f -1 f 10090 0 0 0 -1 pg_catalog +10090 pg_init_privs c C f -1 f 0 10089 3394 0 -1 pg_catalog +10091 _pg_seclabel b A f -1 f 10092 0 0 0 -1 pg_catalog +10092 pg_seclabel c C f -1 f 0 10091 3596 0 -1 pg_catalog +10093 _pg_shseclabel b A f -1 f 4066 0 0 0 -1 pg_catalog +10094 _pg_collation b A f -1 f 10095 0 0 0 -1 pg_catalog +10095 pg_collation c C f -1 f 0 10094 3456 0 -1 pg_catalog +10096 _pg_parameter_acl b A f -1 f 10097 0 0 0 -1 pg_catalog +10097 pg_parameter_acl c C f -1 f 0 10096 6243 0 -1 pg_catalog +10098 _pg_partitioned_table b A f -1 f 10099 0 0 0 -1 pg_catalog +10099 pg_partitioned_table c C f -1 f 0 10098 3350 0 -1 pg_catalog +10100 _pg_range b A f -1 f 10101 0 0 0 -1 pg_catalog +10101 pg_range c C f -1 f 0 10100 3541 0 -1 pg_catalog +10102 _pg_transform b A f -1 f 10103 0 0 0 -1 pg_catalog +10103 pg_transform c C f -1 f 0 10102 3576 0 -1 pg_catalog +10104 _pg_sequence b A f -1 f 10105 0 0 0 -1 pg_catalog +10105 pg_sequence c C f -1 f 0 10104 2224 0 -1 pg_catalog +10106 _pg_publication b A f -1 f 10107 0 0 0 -1 pg_catalog +10107 pg_publication c C f -1 f 0 10106 6104 0 -1 pg_catalog +10108 _pg_publication_namespace b A f -1 f 10109 0 0 0 -1 pg_catalog +10109 pg_publication_namespace c C f -1 f 0 10108 6237 0 -1 pg_catalog +10110 _pg_publication_rel b A f -1 f 10111 0 0 0 -1 pg_catalog +10111 pg_publication_rel c C f -1 f 0 10110 6106 0 -1 pg_catalog +10112 _pg_subscription b A f -1 f 6101 0 0 0 -1 pg_catalog +10113 _pg_subscription_rel b A f -1 f 10114 0 0 0 -1 pg_catalog +10114 pg_subscription_rel c C f -1 f 0 10113 6102 0 -1 pg_catalog +12001 _pg_roles b A f -1 f 12002 0 0 0 -1 pg_catalog +12002 pg_roles c C f -1 f 0 12001 12000 0 -1 pg_catalog +12006 _pg_shadow b A f -1 f 12007 0 0 0 -1 pg_catalog +12007 pg_shadow c C f -1 f 0 12006 12005 0 -1 pg_catalog +12011 _pg_group b A f -1 f 12012 0 0 0 -1 pg_catalog +12012 pg_group c C f -1 f 0 12011 12010 0 -1 pg_catalog +12015 _pg_user b A f -1 f 12016 0 0 0 -1 pg_catalog +12016 pg_user c C f -1 f 0 12015 12014 0 -1 pg_catalog +12019 _pg_policies b A f -1 f 12020 0 0 0 -1 pg_catalog +12020 pg_policies c C f -1 f 0 12019 12018 0 -1 pg_catalog +12024 _pg_rules b A f -1 f 12025 0 0 0 -1 pg_catalog +12025 pg_rules c C f -1 f 0 12024 12023 0 -1 pg_catalog +12029 _pg_views b A f -1 f 12030 0 0 0 -1 pg_catalog +12030 pg_views c C f -1 f 0 12029 12028 0 -1 pg_catalog +12034 _pg_tables b A f -1 f 12035 0 0 0 -1 pg_catalog +12035 pg_tables c C f -1 f 0 12034 12033 0 -1 pg_catalog +12039 _pg_matviews b A f -1 f 12040 0 0 0 -1 pg_catalog +12040 pg_matviews c C f -1 f 0 12039 12038 0 -1 pg_catalog +12044 _pg_indexes b A f -1 f 12045 0 0 0 -1 pg_catalog +12045 pg_indexes c C f -1 f 0 12044 12043 0 -1 pg_catalog +12049 _pg_sequences b A f -1 f 12050 0 0 0 -1 pg_catalog +12050 pg_sequences c C f -1 f 0 12049 12048 0 -1 pg_catalog +12054 _pg_stats b A f -1 f 12055 0 0 0 -1 pg_catalog +12055 pg_stats c C f -1 f 0 12054 12053 0 -1 pg_catalog +12059 _pg_stats_ext b A f -1 f 12060 0 0 0 -1 pg_catalog +12060 pg_stats_ext c C f -1 f 0 12059 12058 0 -1 pg_catalog +12064 _pg_stats_ext_exprs b A f -1 f 12065 0 0 0 -1 pg_catalog +12065 pg_stats_ext_exprs c C f -1 f 0 12064 12063 0 -1 pg_catalog +12069 _pg_publication_tables b A f -1 f 12070 0 0 0 -1 pg_catalog +12070 pg_publication_tables c C f -1 f 0 12069 12068 0 -1 pg_catalog +12074 _pg_locks b A f -1 f 12075 0 0 0 -1 pg_catalog +12075 pg_locks c C f -1 f 0 12074 12073 0 -1 pg_catalog +12078 _pg_cursors b A f -1 f 12079 0 0 0 -1 pg_catalog +12079 pg_cursors c C f -1 f 0 12078 12077 0 -1 pg_catalog +12082 _pg_available_extensions b A f -1 f 12083 0 0 0 -1 pg_catalog +12083 pg_available_extensions c C f -1 f 0 12082 12081 0 -1 pg_catalog +12086 _pg_available_extension_versions b A f -1 f 12087 0 0 0 -1 pg_catalog +12087 pg_available_extension_versions c C f -1 f 0 12086 12085 0 -1 pg_catalog +12091 _pg_prepared_xacts b A f -1 f 12092 0 0 0 -1 pg_catalog +12092 pg_prepared_xacts c C f -1 f 0 12091 12090 0 -1 pg_catalog +12096 _pg_prepared_statements b A f -1 f 12097 0 0 0 -1 pg_catalog +12097 pg_prepared_statements c C f -1 f 0 12096 12095 0 -1 pg_catalog +12100 _pg_seclabels b A f -1 f 12101 0 0 0 -1 pg_catalog +12101 pg_seclabels c C f -1 f 0 12100 12099 0 -1 pg_catalog +12105 _pg_settings b A f -1 f 12106 0 0 0 -1 pg_catalog +12106 pg_settings c C f -1 f 0 12105 12104 0 -1 pg_catalog +12111 _pg_file_settings b A f -1 f 12112 0 0 0 -1 pg_catalog +12112 pg_file_settings c C f -1 f 0 12111 12110 0 -1 pg_catalog +12115 _pg_hba_file_rules b A f -1 f 12116 0 0 0 -1 pg_catalog +12116 pg_hba_file_rules c C f -1 f 0 12115 12114 0 -1 pg_catalog +12119 _pg_ident_file_mappings b A f -1 f 12120 0 0 0 -1 pg_catalog +12120 pg_ident_file_mappings c C f -1 f 0 12119 12118 0 -1 pg_catalog +12123 _pg_timezone_abbrevs b A f -1 f 12124 0 0 0 -1 pg_catalog +12124 pg_timezone_abbrevs c C f -1 f 0 12123 12122 0 -1 pg_catalog +12127 _pg_timezone_names b A f -1 f 12128 0 0 0 -1 pg_catalog +12128 pg_timezone_names c C f -1 f 0 12127 12126 0 -1 pg_catalog +12131 _pg_config b A f -1 f 12132 0 0 0 -1 pg_catalog +12132 pg_config c C f -1 f 0 12131 12130 0 -1 pg_catalog +12135 _pg_shmem_allocations b A f -1 f 12136 0 0 0 -1 pg_catalog +12136 pg_shmem_allocations c C f -1 f 0 12135 12134 0 -1 pg_catalog +12139 _pg_shmem_allocations_numa b A f -1 f 12140 0 0 0 -1 pg_catalog +12140 pg_shmem_allocations_numa c C f -1 f 0 12139 12138 0 -1 pg_catalog +12143 _pg_backend_memory_contexts b A f -1 f 12144 0 0 0 -1 pg_catalog +12144 pg_backend_memory_contexts c C f -1 f 0 12143 12142 0 -1 pg_catalog +12147 _pg_stat_all_tables b A f -1 f 12148 0 0 0 -1 pg_catalog +12148 pg_stat_all_tables c C f -1 f 0 12147 12146 0 -1 pg_catalog +12152 _pg_stat_xact_all_tables b A f -1 f 12153 0 0 0 -1 pg_catalog +12153 pg_stat_xact_all_tables c C f -1 f 0 12152 12151 0 -1 pg_catalog +12157 _pg_stat_sys_tables b A f -1 f 12158 0 0 0 -1 pg_catalog +12158 pg_stat_sys_tables c C f -1 f 0 12157 12156 0 -1 pg_catalog +12162 _pg_stat_xact_sys_tables b A f -1 f 12163 0 0 0 -1 pg_catalog +12163 pg_stat_xact_sys_tables c C f -1 f 0 12162 12161 0 -1 pg_catalog +12166 _pg_stat_user_tables b A f -1 f 12167 0 0 0 -1 pg_catalog +12167 pg_stat_user_tables c C f -1 f 0 12166 12165 0 -1 pg_catalog +12171 _pg_stat_xact_user_tables b A f -1 f 12172 0 0 0 -1 pg_catalog +12172 pg_stat_xact_user_tables c C f -1 f 0 12171 12170 0 -1 pg_catalog +12175 _pg_statio_all_tables b A f -1 f 12176 0 0 0 -1 pg_catalog +12176 pg_statio_all_tables c C f -1 f 0 12175 12174 0 -1 pg_catalog +12180 _pg_statio_sys_tables b A f -1 f 12181 0 0 0 -1 pg_catalog +12181 pg_statio_sys_tables c C f -1 f 0 12180 12179 0 -1 pg_catalog +12184 _pg_statio_user_tables b A f -1 f 12185 0 0 0 -1 pg_catalog +12185 pg_statio_user_tables c C f -1 f 0 12184 12183 0 -1 pg_catalog +12188 _pg_stat_all_indexes b A f -1 f 12189 0 0 0 -1 pg_catalog +12189 pg_stat_all_indexes c C f -1 f 0 12188 12187 0 -1 pg_catalog +12193 _pg_stat_sys_indexes b A f -1 f 12194 0 0 0 -1 pg_catalog +12194 pg_stat_sys_indexes c C f -1 f 0 12193 12192 0 -1 pg_catalog +12197 _pg_stat_user_indexes b A f -1 f 12198 0 0 0 -1 pg_catalog +12198 pg_stat_user_indexes c C f -1 f 0 12197 12196 0 -1 pg_catalog +12201 _pg_statio_all_indexes b A f -1 f 12202 0 0 0 -1 pg_catalog +12202 pg_statio_all_indexes c C f -1 f 0 12201 12200 0 -1 pg_catalog +12206 _pg_statio_sys_indexes b A f -1 f 12207 0 0 0 -1 pg_catalog +12207 pg_statio_sys_indexes c C f -1 f 0 12206 12205 0 -1 pg_catalog +12210 _pg_statio_user_indexes b A f -1 f 12211 0 0 0 -1 pg_catalog +12211 pg_statio_user_indexes c C f -1 f 0 12210 12209 0 -1 pg_catalog +12214 _pg_statio_all_sequences b A f -1 f 12215 0 0 0 -1 pg_catalog +12215 pg_statio_all_sequences c C f -1 f 0 12214 12213 0 -1 pg_catalog +12219 _pg_statio_sys_sequences b A f -1 f 12220 0 0 0 -1 pg_catalog +12220 pg_statio_sys_sequences c C f -1 f 0 12219 12218 0 -1 pg_catalog +12223 _pg_statio_user_sequences b A f -1 f 12224 0 0 0 -1 pg_catalog +12224 pg_statio_user_sequences c C f -1 f 0 12223 12222 0 -1 pg_catalog +12227 _pg_stat_activity b A f -1 f 12228 0 0 0 -1 pg_catalog +12228 pg_stat_activity c C f -1 f 0 12227 12226 0 -1 pg_catalog +12232 _pg_stat_replication b A f -1 f 12233 0 0 0 -1 pg_catalog +12233 pg_stat_replication c C f -1 f 0 12232 12231 0 -1 pg_catalog +12237 _pg_stat_slru b A f -1 f 12238 0 0 0 -1 pg_catalog +12238 pg_stat_slru c C f -1 f 0 12237 12236 0 -1 pg_catalog +12241 _pg_stat_wal_receiver b A f -1 f 12242 0 0 0 -1 pg_catalog +12242 pg_stat_wal_receiver c C f -1 f 0 12241 12240 0 -1 pg_catalog +12245 _pg_stat_recovery_prefetch b A f -1 f 12246 0 0 0 -1 pg_catalog +12246 pg_stat_recovery_prefetch c C f -1 f 0 12245 12244 0 -1 pg_catalog +12249 _pg_stat_subscription b A f -1 f 12250 0 0 0 -1 pg_catalog +12250 pg_stat_subscription c C f -1 f 0 12249 12248 0 -1 pg_catalog +12254 _pg_stat_ssl b A f -1 f 12255 0 0 0 -1 pg_catalog +12255 pg_stat_ssl c C f -1 f 0 12254 12253 0 -1 pg_catalog +12258 _pg_stat_gssapi b A f -1 f 12259 0 0 0 -1 pg_catalog +12259 pg_stat_gssapi c C f -1 f 0 12258 12257 0 -1 pg_catalog +12262 _pg_replication_slots b A f -1 f 12263 0 0 0 -1 pg_catalog +12263 pg_replication_slots c C f -1 f 0 12262 12261 0 -1 pg_catalog +12267 _pg_stat_replication_slots b A f -1 f 12268 0 0 0 -1 pg_catalog +12268 pg_stat_replication_slots c C f -1 f 0 12267 12266 0 -1 pg_catalog +12271 _pg_stat_database b A f -1 f 12272 0 0 0 -1 pg_catalog +12272 pg_stat_database c C f -1 f 0 12271 12270 0 -1 pg_catalog +12276 _pg_stat_database_conflicts b A f -1 f 12277 0 0 0 -1 pg_catalog +12277 pg_stat_database_conflicts c C f -1 f 0 12276 12275 0 -1 pg_catalog +12280 _pg_stat_user_functions b A f -1 f 12281 0 0 0 -1 pg_catalog +12281 pg_stat_user_functions c C f -1 f 0 12280 12279 0 -1 pg_catalog +12285 _pg_stat_xact_user_functions b A f -1 f 12286 0 0 0 -1 pg_catalog +12286 pg_stat_xact_user_functions c C f -1 f 0 12285 12284 0 -1 pg_catalog +12290 _pg_stat_archiver b A f -1 f 12291 0 0 0 -1 pg_catalog +12291 pg_stat_archiver c C f -1 f 0 12290 12289 0 -1 pg_catalog +12294 _pg_stat_bgwriter b A f -1 f 12295 0 0 0 -1 pg_catalog +12295 pg_stat_bgwriter c C f -1 f 0 12294 12293 0 -1 pg_catalog +12298 _pg_stat_checkpointer b A f -1 f 12299 0 0 0 -1 pg_catalog +12299 pg_stat_checkpointer c C f -1 f 0 12298 12297 0 -1 pg_catalog +12302 _pg_stat_io b A f -1 f 12303 0 0 0 -1 pg_catalog +12303 pg_stat_io c C f -1 f 0 12302 12301 0 -1 pg_catalog +12306 _pg_stat_wal b A f -1 f 12307 0 0 0 -1 pg_catalog +12307 pg_stat_wal c C f -1 f 0 12306 12305 0 -1 pg_catalog +12310 _pg_stat_progress_analyze b A f -1 f 12311 0 0 0 -1 pg_catalog +12311 pg_stat_progress_analyze c C f -1 f 0 12310 12309 0 -1 pg_catalog +12315 _pg_stat_progress_vacuum b A f -1 f 12316 0 0 0 -1 pg_catalog +12316 pg_stat_progress_vacuum c C f -1 f 0 12315 12314 0 -1 pg_catalog +12320 _pg_stat_progress_cluster b A f -1 f 12321 0 0 0 -1 pg_catalog +12321 pg_stat_progress_cluster c C f -1 f 0 12320 12319 0 -1 pg_catalog +12325 _pg_stat_progress_create_index b A f -1 f 12326 0 0 0 -1 pg_catalog +12326 pg_stat_progress_create_index c C f -1 f 0 12325 12324 0 -1 pg_catalog +12330 _pg_stat_progress_basebackup b A f -1 f 12331 0 0 0 -1 pg_catalog +12331 pg_stat_progress_basebackup c C f -1 f 0 12330 12329 0 -1 pg_catalog +12334 _pg_stat_progress_copy b A f -1 f 12335 0 0 0 -1 pg_catalog +12335 pg_stat_progress_copy c C f -1 f 0 12334 12333 0 -1 pg_catalog +12339 _pg_user_mappings b A f -1 f 12340 0 0 0 -1 pg_catalog +12340 pg_user_mappings c C f -1 f 0 12339 12338 0 -1 pg_catalog +12344 _pg_replication_origin_status b A f -1 f 12345 0 0 0 -1 pg_catalog +12345 pg_replication_origin_status c C f -1 f 0 12344 12343 0 -1 pg_catalog +12348 _pg_stat_subscription_stats b A f -1 f 12349 0 0 0 -1 pg_catalog +12349 pg_stat_subscription_stats c C f -1 f 0 12348 12347 0 -1 pg_catalog +12352 _pg_wait_events b A f -1 f 12353 0 0 0 -1 pg_catalog +12353 pg_wait_events c C f -1 f 0 12352 12351 0 -1 pg_catalog +12356 _pg_aios b A f -1 f 12357 0 0 0 -1 pg_catalog +12357 pg_aios c C f -1 f 0 12356 12355 0 -1 pg_catalog +13157 _cardinal_number b A f -1 f 13158 0 0 0 -1 information_schema +13158 cardinal_number d N f 4 t 0 13157 0 23 -1 information_schema +13160 _character_data b A f -1 f 13161 0 0 0 -1 information_schema +13161 character_data d S f -1 f 0 13160 0 1043 -1 information_schema +13162 _sql_identifier b A f -1 f 13163 0 0 0 -1 information_schema +13163 sql_identifier d S f 64 f 0 13162 0 19 -1 information_schema +13165 _information_schema_catalog_name b A f -1 f 13166 0 0 0 -1 information_schema +13166 information_schema_catalog_name c C f -1 f 0 13165 13164 0 -1 information_schema +13168 _time_stamp b A f -1 f 13169 0 0 0 -1 information_schema +13169 time_stamp d D f 8 t 0 13168 0 1184 2 information_schema +13170 _yes_or_no b A f -1 f 13171 0 0 0 -1 information_schema +13171 yes_or_no d S f -1 f 0 13170 0 1043 7 information_schema +13174 _applicable_roles b A f -1 f 13175 0 0 0 -1 information_schema +13175 applicable_roles c C f -1 f 0 13174 13173 0 -1 information_schema +13179 _administrable_role_authorizations b A f -1 f 13180 0 0 0 -1 information_schema +13180 administrable_role_authorizations c C f -1 f 0 13179 13178 0 -1 information_schema +13183 _attributes b A f -1 f 13184 0 0 0 -1 information_schema +13184 attributes c C f -1 f 0 13183 13182 0 -1 information_schema +13188 _character_sets b A f -1 f 13189 0 0 0 -1 information_schema +13189 character_sets c C f -1 f 0 13188 13187 0 -1 information_schema +13193 _check_constraint_routine_usage b A f -1 f 13194 0 0 0 -1 information_schema +13194 check_constraint_routine_usage c C f -1 f 0 13193 13192 0 -1 information_schema +13198 _check_constraints b A f -1 f 13199 0 0 0 -1 information_schema +13199 check_constraints c C f -1 f 0 13198 13197 0 -1 information_schema +13203 _collations b A f -1 f 13204 0 0 0 -1 information_schema +13204 collations c C f -1 f 0 13203 13202 0 -1 information_schema +13208 _collation_character_set_applicability b A f -1 f 13209 0 0 0 -1 information_schema +13209 collation_character_set_applicability c C f -1 f 0 13208 13207 0 -1 information_schema +13213 _column_column_usage b A f -1 f 13214 0 0 0 -1 information_schema +13214 column_column_usage c C f -1 f 0 13213 13212 0 -1 information_schema +13218 _column_domain_usage b A f -1 f 13219 0 0 0 -1 information_schema +13219 column_domain_usage c C f -1 f 0 13218 13217 0 -1 information_schema +13223 _column_privileges b A f -1 f 13224 0 0 0 -1 information_schema +13224 column_privileges c C f -1 f 0 13223 13222 0 -1 information_schema +13228 _column_udt_usage b A f -1 f 13229 0 0 0 -1 information_schema +13229 column_udt_usage c C f -1 f 0 13228 13227 0 -1 information_schema +13233 _columns b A f -1 f 13234 0 0 0 -1 information_schema +13234 columns c C f -1 f 0 13233 13232 0 -1 information_schema +13238 _constraint_column_usage b A f -1 f 13239 0 0 0 -1 information_schema +13239 constraint_column_usage c C f -1 f 0 13238 13237 0 -1 information_schema +13243 _constraint_table_usage b A f -1 f 13244 0 0 0 -1 information_schema +13244 constraint_table_usage c C f -1 f 0 13243 13242 0 -1 information_schema +13248 _domain_constraints b A f -1 f 13249 0 0 0 -1 information_schema +13249 domain_constraints c C f -1 f 0 13248 13247 0 -1 information_schema +13253 _domain_udt_usage b A f -1 f 13254 0 0 0 -1 information_schema +13254 domain_udt_usage c C f -1 f 0 13253 13252 0 -1 information_schema +13257 _domains b A f -1 f 13258 0 0 0 -1 information_schema +13258 domains c C f -1 f 0 13257 13256 0 -1 information_schema +13262 _enabled_roles b A f -1 f 13263 0 0 0 -1 information_schema +13263 enabled_roles c C f -1 f 0 13262 13261 0 -1 information_schema +13266 _key_column_usage b A f -1 f 13267 0 0 0 -1 information_schema +13267 key_column_usage c C f -1 f 0 13266 13265 0 -1 information_schema +13271 _parameters b A f -1 f 13272 0 0 0 -1 information_schema +13272 parameters c C f -1 f 0 13271 13270 0 -1 information_schema +13276 _referential_constraints b A f -1 f 13277 0 0 0 -1 information_schema +13277 referential_constraints c C f -1 f 0 13276 13275 0 -1 information_schema +13281 _role_column_grants b A f -1 f 13282 0 0 0 -1 information_schema +13282 role_column_grants c C f -1 f 0 13281 13280 0 -1 information_schema +13285 _routine_column_usage b A f -1 f 13286 0 0 0 -1 information_schema +13286 routine_column_usage c C f -1 f 0 13285 13284 0 -1 information_schema +13290 _routine_privileges b A f -1 f 13291 0 0 0 -1 information_schema +13291 routine_privileges c C f -1 f 0 13290 13289 0 -1 information_schema +13295 _role_routine_grants b A f -1 f 13296 0 0 0 -1 information_schema +13296 role_routine_grants c C f -1 f 0 13295 13294 0 -1 information_schema +13299 _routine_routine_usage b A f -1 f 13300 0 0 0 -1 information_schema +13300 routine_routine_usage c C f -1 f 0 13299 13298 0 -1 information_schema +13304 _routine_sequence_usage b A f -1 f 13305 0 0 0 -1 information_schema +13305 routine_sequence_usage c C f -1 f 0 13304 13303 0 -1 information_schema +13309 _routine_table_usage b A f -1 f 13310 0 0 0 -1 information_schema +13310 routine_table_usage c C f -1 f 0 13309 13308 0 -1 information_schema +13314 _routines b A f -1 f 13315 0 0 0 -1 information_schema +13315 routines c C f -1 f 0 13314 13313 0 -1 information_schema +13319 _schemata b A f -1 f 13320 0 0 0 -1 information_schema +13320 schemata c C f -1 f 0 13319 13318 0 -1 information_schema +13323 _sequences b A f -1 f 13324 0 0 0 -1 information_schema +13324 sequences c C f -1 f 0 13323 13322 0 -1 information_schema +13328 _sql_features b A f -1 f 13329 0 0 0 -1 information_schema +13329 sql_features c C f -1 f 0 13328 13327 0 -1 information_schema +13333 _sql_implementation_info b A f -1 f 13334 0 0 0 -1 information_schema +13334 sql_implementation_info c C f -1 f 0 13333 13332 0 -1 information_schema +13338 _sql_parts b A f -1 f 13339 0 0 0 -1 information_schema +13339 sql_parts c C f -1 f 0 13338 13337 0 -1 information_schema +13343 _sql_sizing b A f -1 f 13344 0 0 0 -1 information_schema +13344 sql_sizing c C f -1 f 0 13343 13342 0 -1 information_schema +13348 _table_constraints b A f -1 f 13349 0 0 0 -1 information_schema +13349 table_constraints c C f -1 f 0 13348 13347 0 -1 information_schema +13353 _table_privileges b A f -1 f 13354 0 0 0 -1 information_schema +13354 table_privileges c C f -1 f 0 13353 13352 0 -1 information_schema +13358 _role_table_grants b A f -1 f 13359 0 0 0 -1 information_schema +13359 role_table_grants c C f -1 f 0 13358 13357 0 -1 information_schema +13362 _tables b A f -1 f 13363 0 0 0 -1 information_schema +13363 tables c C f -1 f 0 13362 13361 0 -1 information_schema +13367 _transforms b A f -1 f 13368 0 0 0 -1 information_schema +13368 transforms c C f -1 f 0 13367 13366 0 -1 information_schema +13372 _triggered_update_columns b A f -1 f 13373 0 0 0 -1 information_schema +13373 triggered_update_columns c C f -1 f 0 13372 13371 0 -1 information_schema +13377 _triggers b A f -1 f 13378 0 0 0 -1 information_schema +13378 triggers c C f -1 f 0 13377 13376 0 -1 information_schema +13382 _udt_privileges b A f -1 f 13383 0 0 0 -1 information_schema +13383 udt_privileges c C f -1 f 0 13382 13381 0 -1 information_schema +13387 _role_udt_grants b A f -1 f 13388 0 0 0 -1 information_schema +13388 role_udt_grants c C f -1 f 0 13387 13386 0 -1 information_schema +13391 _usage_privileges b A f -1 f 13392 0 0 0 -1 information_schema +13392 usage_privileges c C f -1 f 0 13391 13390 0 -1 information_schema +13396 _role_usage_grants b A f -1 f 13397 0 0 0 -1 information_schema +13397 role_usage_grants c C f -1 f 0 13396 13395 0 -1 information_schema +13400 _user_defined_types b A f -1 f 13401 0 0 0 -1 information_schema +13401 user_defined_types c C f -1 f 0 13400 13399 0 -1 information_schema +13405 _view_column_usage b A f -1 f 13406 0 0 0 -1 information_schema +13406 view_column_usage c C f -1 f 0 13405 13404 0 -1 information_schema +13410 _view_routine_usage b A f -1 f 13411 0 0 0 -1 information_schema +13411 view_routine_usage c C f -1 f 0 13410 13409 0 -1 information_schema +13415 _view_table_usage b A f -1 f 13416 0 0 0 -1 information_schema +13416 view_table_usage c C f -1 f 0 13415 13414 0 -1 information_schema +13420 _views b A f -1 f 13421 0 0 0 -1 information_schema +13421 views c C f -1 f 0 13420 13419 0 -1 information_schema +13425 _data_type_privileges b A f -1 f 13426 0 0 0 -1 information_schema +13426 data_type_privileges c C f -1 f 0 13425 13424 0 -1 information_schema +13430 _element_types b A f -1 f 13431 0 0 0 -1 information_schema +13431 element_types c C f -1 f 0 13430 13429 0 -1 information_schema +13435 __pg_foreign_table_columns b A f -1 f 13436 0 0 0 -1 information_schema +13436 _pg_foreign_table_columns c C f -1 f 0 13435 13434 0 -1 information_schema +13440 _column_options b A f -1 f 13441 0 0 0 -1 information_schema +13441 column_options c C f -1 f 0 13440 13439 0 -1 information_schema +13444 __pg_foreign_data_wrappers b A f -1 f 13445 0 0 0 -1 information_schema +13445 _pg_foreign_data_wrappers c C f -1 f 0 13444 13443 0 -1 information_schema +13448 _foreign_data_wrapper_options b A f -1 f 13449 0 0 0 -1 information_schema +13449 foreign_data_wrapper_options c C f -1 f 0 13448 13447 0 -1 information_schema +13452 _foreign_data_wrappers b A f -1 f 13453 0 0 0 -1 information_schema +13453 foreign_data_wrappers c C f -1 f 0 13452 13451 0 -1 information_schema +13456 __pg_foreign_servers b A f -1 f 13457 0 0 0 -1 information_schema +13457 _pg_foreign_servers c C f -1 f 0 13456 13455 0 -1 information_schema +13460 _foreign_server_options b A f -1 f 13461 0 0 0 -1 information_schema +13461 foreign_server_options c C f -1 f 0 13460 13459 0 -1 information_schema +13464 _foreign_servers b A f -1 f 13465 0 0 0 -1 information_schema +13465 foreign_servers c C f -1 f 0 13464 13463 0 -1 information_schema +13468 __pg_foreign_tables b A f -1 f 13469 0 0 0 -1 information_schema +13469 _pg_foreign_tables c C f -1 f 0 13468 13467 0 -1 information_schema +13473 _foreign_table_options b A f -1 f 13474 0 0 0 -1 information_schema +13474 foreign_table_options c C f -1 f 0 13473 13472 0 -1 information_schema +13477 _foreign_tables b A f -1 f 13478 0 0 0 -1 information_schema +13478 foreign_tables c C f -1 f 0 13477 13476 0 -1 information_schema +13481 __pg_user_mappings b A f -1 f 13482 0 0 0 -1 information_schema +13482 _pg_user_mappings c C f -1 f 0 13481 13480 0 -1 information_schema +13486 _user_mapping_options b A f -1 f 13487 0 0 0 -1 information_schema +13487 user_mapping_options c C f -1 f 0 13486 13485 0 -1 information_schema +13491 _user_mappings b A f -1 f 13492 0 0 0 -1 information_schema +13492 user_mappings c C f -1 f 0 13491 13490 0 -1 information_schema diff --git a/internal/catalog/extension.go b/internal/catalog/extension.go index cd689ea..a63e156 100644 --- a/internal/catalog/extension.go +++ b/internal/catalog/extension.go @@ -3,6 +3,7 @@ package catalog import ( "fmt" "sort" + "strconv" "strings" ) @@ -29,9 +30,9 @@ const FirstNormalObjectID OID = 16384 // extBase is where the renumbered OIDs of the i-th loaded extension start. func extBase(i int) OID { return 1<<28 + OID(i)<<20 } -// Available lists the extensions with an embedded dump. -func Available() []string { - entries, err := data.ReadDir("data/ext") +// Available lists the extensions with an embedded dump for a PostgreSQL major version. +func Available(major int) []string { + entries, err := data.ReadDir("data/" + strconv.Itoa(major) + "/ext") if err != nil { return nil } @@ -45,11 +46,12 @@ func Available() []string { return out } -// ReadExtension returns the metadata of a dumped extension, or an error if there is no dump. -func ReadExtension(name string) (*Extension, error) { - b, err := data.ReadFile("data/ext/" + name + "/META") +// ReadExtension returns the metadata of a dumped extension for a PostgreSQL major +// version, or an error if there is no dump. +func ReadExtension(major int, name string) (*Extension, error) { + b, err := data.ReadFile(fmt.Sprintf("data/%d/ext/%s/META", major, name)) if err != nil { - return nil, fmt.Errorf("extension %q: no dumped catalog (run: go run ./internal/catalog/gen -ext %s)", name, name) + return nil, fmt.Errorf("extension %q: no dumped catalog for PostgreSQL %d (run: go run ./internal/catalog/gen -pg %d -ext %s)", name, major, major, name) } e := &Extension{Name: name} for _, line := range strings.Split(strings.TrimSpace(string(b)), "\n") { @@ -74,7 +76,7 @@ func ReadExtension(name string) (*Extension, error) { func (c *Catalog) WithExtensions(names []string) (*Catalog, error) { var exts []*Extension for _, n := range names { - e, err := ReadExtension(n) + e, err := ReadExtension(c.Major, n) if err != nil { return nil, err } @@ -87,6 +89,7 @@ func (c *Catalog) WithExtensions(names []string) (*Catalog, error) { } } out := newCatalog() + out.Major = c.Major out.Version = c.Version out.Types = append(out.Types, c.Types...) out.Funcs = append(out.Funcs, c.Funcs...) @@ -115,7 +118,7 @@ func (c *Catalog) WithExtensions(names []string) (*Catalog, error) { next++ return m[o] } - if err := out.load("data/ext/"+e.Name, "", remap); err != nil { + if err := out.load(fmt.Sprintf("data/%d/ext/%s", c.Major, e.Name), "", remap); err != nil { return nil, fmt.Errorf("extension %s: %w", e.Name, err) } } diff --git a/internal/catalog/gen/main.go b/internal/catalog/gen/main.go index 4272256..312c976 100644 --- a/internal/catalog/gen/main.go +++ b/internal/catalog/gen/main.go @@ -1,12 +1,14 @@ // Command gen dumps the bootstrap catalog (pg_catalog objects) of the oracle's -// PostgreSQL into internal/catalog/data/*.tsv, and extension catalogs into -// internal/catalog/data/ext//. Run from the repo root: +// PostgreSQL into internal/catalog/data//*.tsv, and extension catalogs into +// internal/catalog/data//ext//. Run from the repo root: // -// go run ./internal/catalog/gen # bootstrap catalog -// go run ./internal/catalog/gen -ext citext # one extension (repeatable) -// go run ./internal/catalog/gen -list # extensions the oracle binary ships +// go run ./internal/catalog/gen -pg 18 # bootstrap catalog +// go run ./internal/catalog/gen -pg 18 -ext citext # one extension (repeatable) +// go run ./internal/catalog/gen -pg 18 -all-ext # every extension 17's data has +// go run ./internal/catalog/gen -pg 18 -list # extensions the oracle binary ships // -// The TSVs are embedded by package catalog; regenerate when oracle.Version changes. +// The TSVs are embedded by package catalog; regenerate when the oracle's release for the +// major version changes (internal/oracle binaries). package main import ( @@ -18,7 +20,9 @@ import ( "path/filepath" "strings" + "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // Each query yields one TSV. Column order is the parsing contract in catalog.go. @@ -109,12 +113,18 @@ SELECT DISTINCT objid FROM m` func main() { var exts multi list := flag.Bool("list", false, "list the extensions available in the oracle binary") + major := flag.Int("pg", int(pgparse.Default), "PostgreSQL major version to dump") + allExt := flag.Bool("all-ext", false, "dump every extension the default version's data has a dump for") flag.Var(&exts, "ext", "dump this extension's catalog (repeatable)") flag.Parse() + version := pgparse.Version(*major) + if *allExt { + exts = append(exts, catalog.Available(int(pgparse.Default))...) + } ctx := context.Background() if *list { - o := start(ctx) + o := start(ctx, version) defer o.Close() rows, err := o.Conn().Query(ctx, "SELECT name, default_version, coalesce(comment, '') FROM pg_available_extensions ORDER BY name") if err != nil { @@ -129,10 +139,14 @@ func main() { } return } + dataDir := filepath.Join("internal", "catalog", "data", fmt.Sprint(*major)) if len(exts) == 0 { - o := start(ctx) + o := start(ctx, version) defer o.Close() - outDir := filepath.Join("internal", "catalog", "data") + outDir := dataDir + if err := os.MkdirAll(outDir, 0o755); err != nil { + log.Fatal(err) + } if err := os.WriteFile(filepath.Join(outDir, "VERSION"), []byte(serverVersion(ctx, o)+"\n"), 0o644); err != nil { log.Fatal(err) } @@ -141,7 +155,7 @@ func main() { } for _, ext := range exts { // a fresh cluster per extension: what it owns is exactly what the database gained - o := start(ctx) + o := start(ctx, version) if _, err := o.Conn().Exec(ctx, fmt.Sprintf("CREATE EXTENSION %s CASCADE", quoteIdent(ext))); err != nil { log.Fatalf("%s: %v", ext, err) } @@ -159,7 +173,7 @@ func main() { if err != nil { log.Fatalf("%s: %v", ext, err) } - outDir := filepath.Join("internal", "catalog", "data", "ext", ext) + outDir := filepath.Join(dataDir, "ext", ext) if err := os.MkdirAll(outDir, 0o755); err != nil { log.Fatal(err) } @@ -178,8 +192,8 @@ func main() { } } -func start(ctx context.Context) *oracle.Oracle { - o, err := oracle.Start(ctx, "") +func start(ctx context.Context, v pgparse.Version) *oracle.Oracle { + o, err := oracle.StartVersion(ctx, v, "") if err != nil { log.Fatal(err) } diff --git a/internal/cli/adv_check_test.go b/internal/cli/adv_check_test.go index 09f686b..5cb2880 100644 --- a/internal/cli/adv_check_test.go +++ b/internal/cli/adv_check_test.go @@ -16,7 +16,7 @@ import ( func TestAdvCheckSyntaxErrorFailsOnlyThatStatement(t *testing.T) { dir := t.TempDir() schema := "-- sqlshape: require pinned(id)\nCREATE TABLE orders (id bigint PRIMARY KEY, status text NOT NULL);" - if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(schema), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(pg17Decl+schema), 0o644); err != nil { t.Fatal(err) } sql := "SELECT id FROM orders WHERE id = 1;\n" + @@ -42,7 +42,7 @@ func TestAdvCheckSyntaxErrorFailsOnlyThatStatement(t *testing.T) { func TestAdvCheckBOM(t *testing.T) { dir := t.TempDir() schema := "-- sqlshape: require pinned(id)\nCREATE TABLE orders (id bigint PRIMARY KEY, status text NOT NULL);" - if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(schema), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(pg17Decl+schema), 0o644); err != nil { t.Fatal(err) } sql := "\xEF\xBB\xBFSELECT id FROM orders WHERE id = 1;\n" @@ -75,7 +75,7 @@ CREATE TRIGGER orders_bump AFTER INSERT ON orders FOR EACH ROW EXECUTE FUNCTION CREATE TABLE memos (id bigint PRIMARY KEY, amount int NOT NULL); CREATE VIEW all_memos AS SELECT id FROM memos; ` - if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(schema), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(pg17Decl+schema), 0o644); err != nil { t.Fatal(err) } path := filepath.Join(dir, "q.sql") @@ -108,7 +108,7 @@ func TestAdvCheckPinnedMessageNamesSelfJoinOccurrence(t *testing.T) { dir := t.TempDir() schema := "-- sqlshape: require pinned(tenant_id)\n" + "CREATE TABLE orders (id bigint PRIMARY KEY, tenant_id bigint NOT NULL, parent_id bigint);\n" - if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(schema), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(pg17Decl+schema), 0o644); err != nil { t.Fatal(err) } sql := "SELECT o1.id FROM orders o1 JOIN orders o2 ON o2.parent_id = o1.id WHERE o1.tenant_id = 1;\n" diff --git a/internal/cli/apply.go b/internal/cli/apply.go index 1b884b2..1bf99c0 100644 --- a/internal/cli/apply.go +++ b/internal/cli/apply.go @@ -48,18 +48,23 @@ func runApply(ctx context.Context, args []string, stdout, stderr io.Writer) erro if err != nil { return err } - srv, err := newServer(ctx) + text, version, err := readTarget(schemaPath) + if err != nil { + return err + } + srv, err := newServer(ctx, version) if err != nil { return err } defer srv.Close() - tgt, err := loadTarget(ctx, srv, schemaPath) + tgt, err := loadTarget(ctx, srv, schemaPath, text) if err != nil { return err } if err := problems(tgt.text); err != nil { return fmt.Errorf("%s: %w", schemaPath, err) } + warnServerVersion(ctx, stderr, *db, tgt.canonical.Version) current, currentText, err := dump.Load(ctx, *db, tgt.canonical) if err != nil { return err @@ -77,7 +82,7 @@ func runApply(ctx context.Context, args []string, stdout, stderr io.Writer) erro fmt.Fprintln(stderr, "note: "+strings.ReplaceAll(n.String(), "\n", "\n ")) } if *pkgs != "" { - index, err := indexConsumers(strings.Split(*pkgs, ","), currentText) + index, err := indexConsumers(strings.Split(*pkgs, ","), tgt.canonical.Version, currentText) if err != nil { return err } diff --git a/internal/cli/check.go b/internal/cli/check.go index b63fbd4..2d2b818 100644 --- a/internal/cli/check.go +++ b/internal/cli/check.go @@ -9,11 +9,10 @@ import ( "slices" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/analyze" "github.com/kr9ly/sqlshape/internal/facts" "github.com/kr9ly/sqlshape/internal/obligation" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -133,10 +132,10 @@ func checkSchemaBodies(s *schema.Schema, decls []obligation.Obligation, name str // starting right after the previous statement's semicolon (so the `-- sqlshape:` lines // written above a statement belong to it). A text the parser rejects as a whole is split // by the scanner instead, so that one bad statement leaves the others judged. -func statementSpans(text string) ([][2]int, error) { +func statementSpans(v pgparse.Version, text string) ([][2]int, error) { var spans [][2]int prevEnd := 0 - if tree, err := pg_query.Parse(text); err == nil { + if tree, err := v.Parse(text); err == nil { for _, raw := range tree.Stmts { end := int(raw.StmtLocation) + int(raw.StmtLen) if raw.StmtLen == 0 { @@ -147,7 +146,7 @@ func statementSpans(text string) ([][2]int, error) { } return spans, nil } - parts, err := pg_query.SplitWithScanner(text, false) + parts, err := v.SplitWithScanner(text, false) if err != nil { return nil, fmt.Errorf("%s", strings.TrimPrefix(err.Error(), "syntax error ")) } @@ -166,7 +165,7 @@ func statementSpans(text string) ([][2]int, error) { // checkText judges each statement of text and returns how many failed. func checkText(s *schema.Schema, decls []obligation.Obligation, name, text string, quiet bool, w io.Writer) (int, error) { text = strings.TrimPrefix(text, "\ufeff") // a byte order mark is not part of the SQL - spans, err := statementSpans(text) + spans, err := statementSpans(s.Version, text) if err != nil { return 0, err } diff --git a/internal/cli/check_test.go b/internal/cli/check_test.go index 171c998..91132d1 100644 --- a/internal/cli/check_test.go +++ b/internal/cli/check_test.go @@ -18,7 +18,7 @@ func TestCheck(t *testing.T) { CREATE TABLE orders (id bigint PRIMARY KEY, tenant_id bigint NOT NULL, status text NOT NULL, deleted_at timestamptz); CREATE TABLE audit (id bigint PRIMARY KEY, note text); ` - if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(schema), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(dir, "schema.sql"), []byte(pg17Decl+schema), 0o644); err != nil { t.Fatal(err) } ops := `-- nightly cleanup @@ -83,14 +83,14 @@ INSERT INTO audit (id, note) VALUES (1, 'done'); t.Errorf("missing: exit %d %s", code, errs) } badSchema := filepath.Join(dir, "bad_schema.sql") - os.WriteFile(badSchema, []byte("-- sqlshape: require pinned()\nCREATE TABLE t (id int);"), 0o644) + os.WriteFile(badSchema, []byte(pg17Decl+"-- sqlshape: require pinned()\nCREATE TABLE t (id int);"), 0o644) if code, _, errs = run(t, "check", "-schema", badSchema, clean); code != 2 || !strings.Contains(errs, "pinned needs a column") { t.Errorf("bad schema: exit %d %s", code, errs) } // the audit shows the discharge path: a policy, a composite foreign key, an EXISTS witness audit := filepath.Join(dir, "audit") os.MkdirAll(audit, 0o755) - os.WriteFile(filepath.Join(audit, "schema.sql"), []byte(` + os.WriteFile(filepath.Join(audit, "schema.sql"), []byte(pg17Decl+` -- sqlshape: require pinned(tenant_id) CREATE TABLE docs (id bigint PRIMARY KEY, tenant_id bigint NOT NULL, body text, UNIQUE (id, tenant_id)); ALTER TABLE docs ENABLE ROW LEVEL SECURITY; diff --git a/internal/cli/cli.go b/internal/cli/cli.go index 36be4d9..241149b 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -22,6 +22,7 @@ import ( "github.com/kr9ly/sqlshape/internal/diff" "github.com/kr9ly/sqlshape/internal/dump" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -103,8 +104,9 @@ type server interface { Close() error } -// newServer boots one; tests share one across commands. -var newServer = func(ctx context.Context) (server, error) { return dump.NewServer(ctx) } +// newServer boots one of the PostgreSQL version the schema declares; tests share one +// across commands. +var newServer = func(ctx context.Context, v pgparse.Version) (server, error) { return dump.NewServer(ctx, v) } // finding is a result the command reports rather than a failure to run: exit code 1. type finding struct{ msg string } @@ -148,12 +150,22 @@ type target struct { canonical *schema.Schema } -// loadTarget reads the schema text at path and canonicalizes it on srv. -func loadTarget(ctx context.Context, srv server, path string) (*target, error) { +// readTarget reads the schema text at path and the PostgreSQL version it declares, which +// the server the command boots must run. +func readTarget(path string) (string, pgparse.Version, error) { text, err := schema.ReadSource(path) if err != nil { - return nil, err + return "", 0, err } + v, err := schema.DeclaredVersion(text) + if err != nil { + return "", 0, err + } + return text, v, nil +} + +// loadTarget canonicalizes the schema text read from path on srv. +func loadTarget(ctx context.Context, srv server, path, text string) (*target, error) { canon, _, err := srv.Canonical(ctx, text, nil) if err != nil { return nil, fmt.Errorf("%s: %w", path, err) diff --git a/internal/cli/cli_extra_test.go b/internal/cli/cli_extra_test.go index 5368f9d..8e29477 100644 --- a/internal/cli/cli_extra_test.go +++ b/internal/cli/cli_extra_test.go @@ -14,6 +14,7 @@ import ( "github.com/kr9ly/sqlshape/internal/consumers" "github.com/kr9ly/sqlshape/internal/diff" "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // The version subcommand prints "sqlshape "; Version() itself reports the @@ -81,7 +82,7 @@ func TestSchemaFlagExplicit(t *testing.T) { // schema.sql or a schema/ directory. func TestSchemaFlagWalksUpToFile(t *testing.T) { root := t.TempDir() - if err := os.WriteFile(filepath.Join(root, "schema.sql"), []byte("-- x"), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(root, "schema.sql"), []byte(pg17Decl+"-- x"), 0o644); err != nil { t.Fatal(err) } child := filepath.Join(root, "a", "b") @@ -142,10 +143,10 @@ func TestSchemaFlagWalksUpToDirectory(t *testing.T) { // going past it. func TestSchemaFlagFileNamedSchemaDoesNotCount(t *testing.T) { root := t.TempDir() - if err := os.WriteFile(filepath.Join(root, "schema"), []byte("not a directory"), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(root, "schema"), []byte(pg17Decl+"not a directory"), 0o644); err != nil { t.Fatal(err) } - if err := os.WriteFile(filepath.Join(root, "schema.sql"), []byte("-- x"), 0o644); err != nil { + if err := os.WriteFile(filepath.Join(root, "schema.sql"), []byte(pg17Decl+"-- x"), 0o644); err != nil { t.Fatal(err) } child := filepath.Join(root, "sub") @@ -226,7 +227,7 @@ func TestDiffReportsSchemaProblems(t *testing.T) { // LISTEN is valid SQL (real Postgres applies it fine, so loadTarget's // canonicalization succeeds) but the loader has no notion of it, so problems() // catches it as an unsupported statement. - if err := os.WriteFile(schemaPath, []byte(`LISTEN some_channel;`), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+`LISTEN some_channel;`), 0o644); err != nil { t.Fatal(err) } code, _, errs := run(t, "diff", "-from", schemaPath, "-schema", schemaPath) @@ -403,7 +404,7 @@ func TestImpactTextMultilineHead(t *testing.T) { // indexConsumers reports a package pattern that fails to load (packages.PrintErrors) // distinctly from one that loads clean. func TestIndexConsumersBadPackage(t *testing.T) { - _, err := indexConsumers([]string{"./no/such/dir"}, "") + _, err := indexConsumers([]string{"./no/such/dir"}, pgparse.Default, "") if err == nil || !strings.Contains(err.Error(), "packages did not load") { t.Fatalf("indexConsumers: %v", err) } @@ -413,7 +414,7 @@ func TestIndexConsumersBadPackage(t *testing.T) { // that os.CreateTemp fail. func TestIndexConsumersTempFileError(t *testing.T) { t.Setenv("TMPDIR", filepath.Join(t.TempDir(), "does-not-exist")) - if _, err := indexConsumers([]string{"./no/such/dir"}, "x"); err == nil { + if _, err := indexConsumers([]string{"./no/such/dir"}, pgparse.Default, "x"); err == nil { t.Fatal("indexConsumers: want error from an unwritable TMPDIR") } } @@ -422,7 +423,7 @@ func TestIndexConsumersTempFileError(t *testing.T) { // environment error for every subcommand that needs one. func TestNewServerErrorPropagates(t *testing.T) { old := newServer - newServer = func(context.Context) (server, error) { return nil, errors.New("boom-newserver") } + newServer = func(context.Context, pgparse.Version) (server, error) { return nil, errors.New("boom-newserver") } defer func() { newServer = old }() dir := t.TempDir() @@ -431,6 +432,9 @@ func TestNewServerErrorPropagates(t *testing.T) { t.Fatal(err) } dummySchema := filepath.Join(dir, "schema.sql") + if err := os.WriteFile(dummySchema, []byte(pg17Decl), 0o644); err != nil { + t.Fatal(err) + } if code, _, errs := run(t, "diff", "-from", "x", "-schema", dummySchema); code != 2 || !strings.Contains(errs, "boom-newserver") { t.Fatalf("diff: code %d\n%s", code, errs) @@ -452,7 +456,7 @@ func TestNewServerDefault(t *testing.T) { newServer = defaultNewServer defer func() { newServer = old }() - srv, err := newServer(context.Background()) + srv, err := newServer(context.Background(), pgparse.Default) if err != nil { t.Fatalf("newServer (default): %v", err) } @@ -487,7 +491,7 @@ func TestLoadTargetCanonicalError(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("ALTER TABLE missing_table ADD COLUMN x int;"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"ALTER TABLE missing_table ADD COLUMN x int;"), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -506,7 +510,7 @@ func TestApplyReportsSchemaProblems(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("LISTEN some_channel;"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"LISTEN some_channel;"), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -523,7 +527,7 @@ func TestVerifyReportsSchemaProblems(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("LISTEN some_channel;"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"LISTEN some_channel;"), 0o644); err != nil { t.Fatal(err) } code, _, errs := run(t, "verify-schema", "-db", "unused", "-schema", schemaPath) @@ -547,7 +551,7 @@ func TestDumpLoadConnectionError(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { t.Fatal(err) } badDB := "postgres://localhost:1/nonexistent-sqlshape-test-db" @@ -572,7 +576,7 @@ func TestDiffFromReadSourceError(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { t.Fatal(err) } code, _, errs := run(t, "diff", "-from", "/no/such/source.sql", "-schema", schemaPath) @@ -587,7 +591,7 @@ func TestDiffFromCanonicalError(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { t.Fatal(err) } fromPath := filepath.Join(dir, "from.sql") @@ -607,7 +611,7 @@ func TestDiffParseIntentsError(t *testing.T) { dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") text := "CREATE TABLE t (id int PRIMARY KEY);\n-- @migrate this is not a real declaration\n" - if err := os.WriteFile(schemaPath, []byte(text), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+text), 0o644); err != nil { t.Fatal(err) } code, _, errs := run(t, "diff", "-from", schemaPath, "-schema", schemaPath) @@ -622,7 +626,7 @@ func TestDiffPackagesLoadError(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"CREATE TABLE t (id int PRIMARY KEY);"), 0o644); err != nil { t.Fatal(err) } code, _, errs := run(t, "diff", "-from", schemaPath, "-schema", schemaPath, "-packages", "./no/such/dir") @@ -642,7 +646,7 @@ func TestApplyPackagesLoadError(t *testing.T) { defer db.Close() dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte(base), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+base), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -669,7 +673,7 @@ func TestApplyDDLDoesNotReachTarget(t *testing.T) { dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") target := base + "\nALTER TABLE t ADD COLUMN extra text NOT NULL DEFAULT 'z';\n" - if err := os.WriteFile(schemaPath, []byte(target), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+target), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -696,7 +700,7 @@ func TestApplyOrderOnlyNote(t *testing.T) { dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") target := "CREATE TABLE t (id int PRIMARY KEY, b text, a text);" - if err := os.WriteFile(schemaPath, []byte(target), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+target), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -734,7 +738,7 @@ func TestApplyRealDBTxExecFailsAndRollsBack(t *testing.T) { dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("CREATE TABLE t (id int PRIMARY KEY, x int NOT NULL);"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"CREATE TABLE t (id int PRIMARY KEY, x int NOT NULL);"), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -772,7 +776,7 @@ func TestApplyRealDBExecFailsNoTransaction(t *testing.T) { dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("CREATE TABLE t (id int PRIMARY KEY, x int NOT NULL);"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"CREATE TABLE t (id int PRIMARY KEY, x int NOT NULL);"), 0o644); err != nil { t.Fatal(err) } ddlPath := filepath.Join(dir, "up.sql") @@ -800,7 +804,7 @@ func TestDiffLoadTargetCanonicalError(t *testing.T) { requirePgDump(t) dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte("ALTER TABLE missing_table ADD COLUMN x int;"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+"ALTER TABLE missing_table ADD COLUMN x int;"), 0o644); err != nil { t.Fatal(err) } code, _, errs := run(t, "diff", "-from", schemaPath, "-schema", schemaPath) diff --git a/internal/cli/cli_test.go b/internal/cli/cli_test.go index 860b66d..c85df62 100644 --- a/internal/cli/cli_test.go +++ b/internal/cli/cli_test.go @@ -12,6 +12,7 @@ import ( "github.com/kr9ly/sqlshape/internal/dump" "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // one embedded server for every command of the test binary (each command would boot @@ -25,13 +26,13 @@ var defaultNewServer = newServer func TestMain(m *testing.M) { if _, err := exec.LookPath(dump.Binary()); err == nil { - srv, err := dump.NewServer(context.Background()) + srv, err := dump.NewServer(context.Background(), pgparse.Default) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } shared = srv - newServer = func(context.Context) (server, error) { return sharedServer{srv}, nil } + newServer = func(context.Context, pgparse.Version) (server, error) { return sharedServer{srv}, nil } } code := m.Run() if shared != nil { @@ -53,6 +54,9 @@ func requirePgDump(t *testing.T) { } // run executes a subcommand and returns its exit code, stdout and stderr. +// pg17Decl is the version declaration every schema.sql must open with. +const pg17Decl = "-- sqlshape: postgres 17\n" + func run(t *testing.T, name string, args ...string) (int, string, string) { t.Helper() var out, errb bytes.Buffer @@ -89,7 +93,7 @@ ALTER TABLE customers ADD COLUMN nickname text DEFAULT 'anon'; CREATE TABLE order_kinds (code text PRIMARY KEY, label text NOT NULL); INSERT INTO order_kinds (code, label) VALUES ('retail', 'Retail'), ('bulk', 'Bulk'); ` - if err := os.WriteFile(schemaPath, []byte(edit), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+edit), 0o644); err != nil { t.Fatal(err) } @@ -145,7 +149,7 @@ func TestConsumers(t *testing.T) { defer db.Close() dir := t.TempDir() schemaPath := filepath.Join(dir, "schema.sql") - if err := os.WriteFile(schemaPath, []byte(base+"\nALTER TABLE orders DROP COLUMN note;\n"), 0o644); err != nil { + if err := os.WriteFile(schemaPath, []byte(pg17Decl+base+"\nALTER TABLE orders DROP COLUMN note;\n"), 0o644); err != nil { t.Fatal(err) } code, out, errs := run(t, "diff", "-db", db.ConnString(), "-schema", schemaPath, "-packages", "./examples/1-tables") diff --git a/internal/cli/consumers.go b/internal/cli/consumers.go index f453bad..f5bf3c2 100644 --- a/internal/cli/consumers.go +++ b/internal/cli/consumers.go @@ -11,6 +11,7 @@ import ( "github.com/kr9ly/sqlshape/internal/consumers" "github.com/kr9ly/sqlshape/internal/diff" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/vet" ) @@ -18,13 +19,15 @@ import ( // the per-package consumer indexes. The statements are read against currentSQL, the // schema as it is before the change: a column the target no longer has cannot be resolved // against the target, and it is exactly the statements still naming it that matter. -func indexConsumers(patterns []string, currentSQL string) (*consumers.Index, error) { +func indexConsumers(patterns []string, v pgparse.Version, currentSQL string) (*consumers.Index, error) { f, err := os.CreateTemp("", "sqlshape-current-*.sql") if err != nil { return nil, err } defer os.Remove(f.Name()) - if _, err := f.WriteString(currentSQL); err != nil { + // the canonical text comes from pg_dump, which writes no declaration: the packages are + // judged against the version the target schema declares + if _, err := fmt.Fprintf(f, "-- sqlshape: postgres %d\n%s", int(v.Or()), currentSQL); err != nil { return nil, err } if err := f.Close(); err != nil { diff --git a/internal/cli/diff.go b/internal/cli/diff.go index f0c8f5c..c8d3c5e 100644 --- a/internal/cli/diff.go +++ b/internal/cli/diff.go @@ -38,12 +38,16 @@ func runDiff(ctx context.Context, args []string, stdout, stderr io.Writer) error if err != nil { return err } - srv, err := newServer(ctx) + text, version, err := readTarget(schemaPath) + if err != nil { + return err + } + srv, err := newServer(ctx, version) if err != nil { return err } defer srv.Close() - tgt, err := loadTarget(ctx, srv, schemaPath) + tgt, err := loadTarget(ctx, srv, schemaPath, text) if err != nil { return err } @@ -53,6 +57,7 @@ func runDiff(ctx context.Context, args []string, stdout, stderr io.Writer) error var current *schema.Schema var currentText string if *db != "" { + warnServerVersion(ctx, stderr, *db, tgt.canonical.Version) current, currentText, err = dump.Load(ctx, *db, tgt.canonical) if err != nil { return err @@ -76,7 +81,7 @@ func runDiff(ctx context.Context, args []string, stdout, stderr io.Writer) error fmt.Fprintln(stdout, stmt) } if *pkgs != "" { - index, err := indexConsumers(strings.Split(*pkgs, ","), currentText) + index, err := indexConsumers(strings.Split(*pkgs, ","), tgt.canonical.Version, currentText) if err != nil { return err } diff --git a/internal/cli/serverversion.go b/internal/cli/serverversion.go new file mode 100644 index 0000000..083082b --- /dev/null +++ b/internal/cli/serverversion.go @@ -0,0 +1,41 @@ +package cli + +import ( + "context" + "fmt" + "io" + "strconv" + "strings" + + "github.com/kr9ly/sqlshape/internal/dump" + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +// warnServerVersion tells the user when the database at connString runs another PostgreSQL +// major version than schema.sql declares: the DDL is still derived and applied, judged by the +// declared version's rules, but the difference is worth knowing before it runs there. A +// database that cannot be asked is left to the step that follows, which reports its own error. +func warnServerVersion(ctx context.Context, stderr io.Writer, connString string, declared pgparse.Version) { + server, err := dump.ServerVersion(ctx, connString) + if err != nil { + return + } + if msg := versionMismatch(declared, server); msg != "" { + fmt.Fprintln(stderr, "sqlshape: warning: "+msg) + } +} + +// versionMismatch is the warning for a server version ("17.5", "18beta1") that is not the +// declared major, or "" when they agree. +func versionMismatch(declared pgparse.Version, server string) string { + digits := strings.TrimLeftFunc(server, func(r rune) bool { return r < '0' || r > '9' }) + i := strings.IndexFunc(digits, func(r rune) bool { return r < '0' || r > '9' }) + if i >= 0 { + digits = digits[:i] + } + major, err := strconv.Atoi(digits) + if err != nil || major == int(declared.Or()) { + return "" + } + return fmt.Sprintf("the database runs PostgreSQL %s but schema.sql declares %d: the DDL is judged and generated by %d's rules; declare `-- sqlshape: postgres %d` if the database is the one meant", server, int(declared.Or()), int(declared.Or()), major) +} diff --git a/internal/cli/serverversion_test.go b/internal/cli/serverversion_test.go new file mode 100644 index 0000000..dac1a96 --- /dev/null +++ b/internal/cli/serverversion_test.go @@ -0,0 +1,29 @@ +package cli + +import ( + "strings" + "testing" + + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +func TestVersionMismatch(t *testing.T) { + for _, c := range []struct { + declared pgparse.Version + server string + want string // "" = no warning; else a substring + }{ + {pgparse.PG17, "17.5", ""}, + {pgparse.PG17, "17.5 (Debian 17.5-1.pgdg120+1)", ""}, + {pgparse.PG18, "18beta1", ""}, + {0, "17.9", ""}, // the zero Version is Default + {pgparse.PG18, "17.5", "runs PostgreSQL 17.5 but schema.sql declares 18"}, + {pgparse.PG17, "18.3", "declare `-- sqlshape: postgres 18`"}, + {pgparse.PG17, "garbage", ""}, + } { + got := versionMismatch(c.declared, c.server) + if c.want == "" && got != "" || c.want != "" && !strings.Contains(got, c.want) { + t.Errorf("%d vs %q: %q", int(c.declared), c.server, got) + } + } +} diff --git a/internal/cli/verify.go b/internal/cli/verify.go index f4a96fb..542f932 100644 --- a/internal/cli/verify.go +++ b/internal/cli/verify.go @@ -32,18 +32,23 @@ func runVerify(ctx context.Context, args []string, stdout, stderr io.Writer) err if err != nil { return err } - srv, err := newServer(ctx) + text, version, err := readTarget(schemaPath) + if err != nil { + return err + } + srv, err := newServer(ctx, version) if err != nil { return err } defer srv.Close() - tgt, err := loadTarget(ctx, srv, schemaPath) + tgt, err := loadTarget(ctx, srv, schemaPath, text) if err != nil { return err } if err := problems(tgt.text); err != nil { return fmt.Errorf("%s: %w", schemaPath, err) } + warnServerVersion(ctx, stderr, *db, tgt.canonical.Version) current, _, err := dump.Load(ctx, *db, tgt.canonical) if err != nil { return err diff --git a/internal/diff/diff.go b/internal/diff/diff.go index e58815d..a6ac4b7 100644 --- a/internal/diff/diff.go +++ b/internal/diff/diff.go @@ -13,9 +13,8 @@ import ( "sort" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -338,6 +337,9 @@ func colProps(s *schema.Schema, c *schema.Column) map[string]string { } if c.Generated != nil { p["generated"] = schema.Deparse(c.Generated) + if c.GeneratedVirtual { + p["generated kind"] = "virtual" + } } return p } @@ -374,6 +376,15 @@ func conProps(c *schema.Constraint) map[string]string { if c.Deferrable { p["deferrable"] = "true" } + if c.WithoutOverlaps { + p["without overlaps"] = "true" + } + if c.WithPeriod { + p["period"] = "true" + } + if c.NotEnforced { + p["not enforced"] = "true" + } return p } @@ -386,7 +397,7 @@ func idxProps(i *schema.Index) map[string]string { } func ruleProps(r schema.RuleDef) map[string]string { - return map[string]string{"definition": schema.DeparseStmt(&pg_query.Node{Node: &pg_query.Node_RuleStmt{RuleStmt: r.Stmt}}), "enabled": fmt.Sprint(r.Enabled)} + return map[string]string{"definition": schema.DeparseStmt(&pgparse.Node{Node: &pgparse.Node_RuleStmt{RuleStmt: r.Stmt}}), "enabled": fmt.Sprint(r.Enabled)} } func (d *differ) relations(a, b *schema.Schema) { diff --git a/internal/dump/dump.go b/internal/dump/dump.go index 5116cba..a0e7330 100644 --- a/internal/dump/dump.go +++ b/internal/dump/dump.go @@ -29,6 +29,7 @@ import ( "github.com/jackc/pgx/v5/pgconn" "github.com/kr9ly/sqlshape/internal/analyze" "github.com/kr9ly/sqlshape/internal/oracle" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -99,6 +100,7 @@ func Load(ctx context.Context, connString string, seeds *schema.Schema) (*schema } text += data } + text = declare(versionOf(seeds, ""), text) s, err := analyze.Load(text) if err != nil { return nil, "", fmt.Errorf("load dump: %w", err) @@ -107,6 +109,38 @@ func Load(ctx context.Context, connString string, seeds *schema.Schema) (*schema return s, text, nil } +// ServerVersion asks the database at connString which PostgreSQL it runs ("17.5"). +func ServerVersion(ctx context.Context, connString string) (string, error) { + conn, err := pgx.Connect(ctx, connString) + if err != nil { + return "", err + } + defer conn.Close(ctx) + var v string + if err := conn.QueryRow(ctx, "SHOW server_version").Scan(&v); err != nil { + return "", err + } + return v, nil +} + +// versionOf is the PostgreSQL version a canonical form is judged with: the seeds schema's +// when there is one, else the version schemaSQL declares, else the default. +func versionOf(seeds *schema.Schema, schemaSQL string) pgparse.Version { + if seeds != nil { + return seeds.Version.Or() + } + if v, err := schema.DeclaredVersion(schemaSQL); err == nil { + return v + } + return pgparse.Default +} + +// declare puts the version declaration above a pg_dump text, which writes none, so the +// loader reads it with the right grammar and catalog. +func declare(v pgparse.Version, text string) string { + return fmt.Sprintf("-- sqlshape: postgres %d\n", int(v)) + text +} + // readSeeds renders the current rows of every seeded table of spec as INSERT statements // over the declared columns (values as text literals, ordered by key). A table or column // the database does not have yet contributes nothing. @@ -195,7 +229,7 @@ type Canonicalizer interface { // tables (see Load; nil takes the seeds schemaSQL itself declares). Each call boots its // own server; for several canonical forms use one Server. func Canonical(ctx context.Context, schemaSQL string, seeds *schema.Schema) (*schema.Schema, string, error) { - srv, err := NewServer(ctx) + srv, err := NewServer(ctx, versionOf(seeds, schemaSQL)) if err != nil { return nil, "", err } @@ -211,9 +245,9 @@ type Server struct { n int } -// NewServer boots the PostgreSQL. Close it when done. -func NewServer(ctx context.Context) (*Server, error) { - o, err := oracle.Start(ctx, "") +// NewServer boots the PostgreSQL of major version v. Close it when done. +func NewServer(ctx context.Context, v pgparse.Version) (*Server, error) { + o, err := oracle.StartVersion(ctx, v, "") if err != nil { return nil, err } @@ -261,6 +295,7 @@ func (s *Server) Canonical(ctx context.Context, schemaSQL string, seeds *schema. return nil, "", err } text += data + text = declare(s.o.Version(), text) sc, err := analyze.Load(text) if err != nil { return nil, "", fmt.Errorf("load dump: %w", err) diff --git a/internal/dump/dump_test.go b/internal/dump/dump_test.go index 75c3152..a912cea 100644 --- a/internal/dump/dump_test.go +++ b/internal/dump/dump_test.go @@ -10,6 +10,7 @@ import ( "github.com/kr9ly/sqlshape/internal/analyze" "github.com/kr9ly/sqlshape/internal/diff" + "github.com/kr9ly/sqlshape/internal/pgparse" ) func TestNormalize(t *testing.T) { @@ -70,7 +71,7 @@ func requirePgDump(t *testing.T) { func TestCanonicalFixedPoint(t *testing.T) { requirePgDump(t) ctx := context.Background() - srv, err := NewServer(ctx) + srv, err := NewServer(ctx, pgparse.Default) if err != nil { t.Fatal(err) } @@ -154,7 +155,7 @@ COMMENT ON TABLE orders IS 'orders placed'; func newSession(t *testing.T, schemaSQL string) (srv *Server, connString string) { t.Helper() ctx := context.Background() - srv, err := NewServer(ctx) + srv, err := NewServer(ctx, pgparse.Default) if err != nil { t.Fatalf("NewServer: %v", err) } @@ -224,7 +225,7 @@ func TestLoad(t *testing.T) { func TestServerCanonicalErrors(t *testing.T) { requirePgDump(t) ctx := context.Background() - srv, err := NewServer(ctx) + srv, err := NewServer(ctx, pgparse.Default) if err != nil { t.Fatal(err) } @@ -258,7 +259,7 @@ func TestServerCanonicalErrors(t *testing.T) { // NewServer failure. Forcing embedded-postgres itself to fail to start is impractical // (it depends on extracting/caching real PostgreSQL binaries), so this documents that // branch rather than exercising it: see dump.go's `if err != nil { return nil, "", err }` -// right after `srv, err := NewServer(ctx)`. +// right after `srv, err := NewServer(ctx, pgparse.Default)`. func TestCanonicalOneShotNewServerError(t *testing.T) { t.Skip("forcing embedded-postgres to fail to start is impractical in a unit test; see comment") } diff --git a/internal/migrate/migrate_test.go b/internal/migrate/migrate_test.go index 654da0e..2ff82e7 100644 --- a/internal/migrate/migrate_test.go +++ b/internal/migrate/migrate_test.go @@ -11,6 +11,7 @@ import ( "github.com/kr9ly/sqlshape/internal/diff" "github.com/kr9ly/sqlshape/internal/dump" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -28,7 +29,7 @@ var server *dump.Server func TestMain(m *testing.M) { if _, err := exec.LookPath(dump.Binary()); err == nil { - srv, err := dump.NewServer(context.Background()) + srv, err := dump.NewServer(context.Background(), pgparse.Default) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) @@ -361,6 +362,13 @@ func TestConstraintText(t *testing.T) { `FOREIGN KEY ("customer_id") REFERENCES "customers" ("id") ON DELETE CASCADE ON UPDATE SET NULL DEFERRABLE`}, {"foreign key restrict/set default", &schema.Constraint{Kind: schema.ForeignKey, Columns: []string{"customer_id"}, RefTable: "customers", RefColumns: []string{"id"}, OnDelete: 'r', OnUpdate: 'd'}, `FOREIGN KEY ("customer_id") REFERENCES "customers" ("id") ON DELETE RESTRICT ON UPDATE SET DEFAULT`}, + // PostgreSQL 18 + {"temporal primary key", &schema.Constraint{Kind: schema.PrimaryKey, Columns: []string{"id", "valid_at"}, WithoutOverlaps: true}, + `PRIMARY KEY ("id", "valid_at" WITHOUT OVERLAPS)`}, + {"temporal unique", &schema.Constraint{Kind: schema.Unique, Columns: []string{"id", "valid_at"}, WithoutOverlaps: true}, + `UNIQUE ("id", "valid_at" WITHOUT OVERLAPS)`}, + {"temporal foreign key, not enforced", &schema.Constraint{Kind: schema.ForeignKey, Columns: []string{"pid", "valid_at"}, RefTable: "p", RefColumns: []string{"id", "valid_at"}, WithPeriod: true, NotEnforced: true}, + `FOREIGN KEY ("pid", PERIOD "valid_at") REFERENCES "p" ("id", PERIOD "valid_at") NOT ENFORCED`}, } for _, c := range cases { t.Run(c.name, func(t *testing.T) { diff --git a/internal/migrate/render.go b/internal/migrate/render.go index d4b24c3..c4dd8e8 100644 --- a/internal/migrate/render.go +++ b/internal/migrate/render.go @@ -4,10 +4,9 @@ import ( "sort" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/diff" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -29,7 +28,11 @@ func columnText(s *schema.Schema, c *schema.Column, notNull bool) string { var b strings.Builder b.WriteString(q(c.Name) + " " + typeText(s, c)) if c.Generated != nil { - b.WriteString(" GENERATED ALWAYS AS (" + schema.Deparse(c.Generated) + ") STORED") + kind := " STORED" + if c.GeneratedVirtual { + kind = " VIRTUAL" + } + b.WriteString(" GENERATED ALWAYS AS (" + schema.Deparse(c.Generated) + ")" + kind) } if c.Identity != 0 { b.WriteString(" GENERATED " + identityWord(c.Identity) + " AS IDENTITY") @@ -92,15 +95,15 @@ func identityWord(id byte) string { func constraintText(s *schema.Schema, c *schema.Constraint) string { switch c.Kind { case schema.PrimaryKey: - return "PRIMARY KEY (" + qlist(c.Columns) + ")" + return "PRIMARY KEY (" + keyList(c) + ")" case schema.Unique: t := "UNIQUE" if c.NullsNotDistinct { t += " NULLS NOT DISTINCT" } - return t + " (" + qlist(c.Columns) + ")" + return t + " (" + keyList(c) + ")" case schema.ForeignKey: - t := "FOREIGN KEY (" + qlist(c.Columns) + ") REFERENCES " + qdot(c.RefTable) + " (" + qlist(c.RefColumns) + ")" + t := "FOREIGN KEY (" + periodList(c.Columns, c.WithPeriod) + ") REFERENCES " + qdot(c.RefTable) + " (" + periodList(c.RefColumns, c.WithPeriod) + ")" if w := actionWord(c.OnDelete); w != "" { t += " ON DELETE " + w } @@ -110,9 +113,16 @@ func constraintText(s *schema.Schema, c *schema.Constraint) string { if c.Deferrable { t += " DEFERRABLE" } + if c.NotEnforced { + t += " NOT ENFORCED" + } return t case schema.Check: - return "CHECK (" + schema.Deparse(c.Expr) + ")" + t := "CHECK (" + schema.Deparse(c.Expr) + ")" + if c.NotEnforced { + t += " NOT ENFORCED" + } + return t case schema.Exclude: var elems []string for i, col := range c.Columns { @@ -131,6 +141,23 @@ func constraintText(s *schema.Schema, c *schema.Constraint) string { return "" } +// keyList renders a PRIMARY KEY / UNIQUE column list, the last column WITHOUT OVERLAPS +// for a temporal key. +func keyList(c *schema.Constraint) string { + if !c.WithoutOverlaps || len(c.Columns) == 0 { + return qlist(c.Columns) + } + return qlist(c.Columns[:len(c.Columns)-1]) + ", " + q(c.Columns[len(c.Columns)-1]) + " WITHOUT OVERLAPS" +} + +// periodList renders a FOREIGN KEY column list, the last column PERIOD for a temporal key. +func periodList(cols []string, period bool) string { + if !period || len(cols) == 0 { + return qlist(cols) + } + return qlist(cols[:len(cols)-1]) + ", PERIOD " + q(cols[len(cols)-1]) +} + func actionWord(a byte) string { switch a { case 'r': @@ -182,8 +209,8 @@ func labels(joined string) []string { return strings.Split(joined, ", ") } -func ruleNode(rd schema.RuleDef) *pg_query.Node { - return &pg_query.Node{Node: &pg_query.Node_RuleStmt{RuleStmt: rd.Stmt}} +func ruleNode(rd schema.RuleDef) *pgparse.Node { + return &pgparse.Node{Node: &pgparse.Node_RuleStmt{RuleStmt: rd.Stmt}} } // ownerRelation / ownerColumn split a sequence's OwnedBy ("schema.table.column"). diff --git a/internal/oracle/README.md b/internal/oracle/README.md index d328a38..6243ad1 100644 --- a/internal/oracle/README.md +++ b/internal/oracle/README.md @@ -1,8 +1,12 @@ # oracle -Real PostgreSQL (embedded-postgres, PG 17) as the ground truth for the pure-Go analyzer. +Real PostgreSQL (embedded-postgres, one release per supported major version: `binaries` in +oracle.go) as the ground truth for the pure-Go analyzer. -- `Start(ctx, schemaSQL)` boots a fresh instance in a temp dir (binaries cached in `~/.embedded-postgres-go`, ~1 s start after first download) +- `Start(ctx, schemaSQL)` boots a fresh instance of the default version in a temp dir; + `StartVersion(ctx, v, schemaSQL)` one of another major version (binaries and an initialized + template data directory are cached per release under `~/.cache/sqlshape/pg-`, ~0.3 s + start after the first download) - `Describe(ctx, sql)` = anonymous PREPARE. Returns parameter types, result column types (as `format_type` prints them), and table-column provenance with `attnotnull`. PG rejections come back as `*PgError` with SQLSTATE and position - `testdata/queries/*.sql` + `.golden`: the contract the analyzer must reproduce. Regenerate with `go test ./internal/oracle -update` diff --git a/internal/oracle/oracle.go b/internal/oracle/oracle.go index 4cbba77..4830721 100644 --- a/internal/oracle/oracle.go +++ b/internal/oracle/oracle.go @@ -19,14 +19,26 @@ import ( embeddedpostgres "github.com/fergusstrange/embedded-postgres" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" + + "github.com/kr9ly/sqlshape/internal/pgparse" ) -// Version is the PostgreSQL version the oracle runs. The generated catalog -// must be produced from the same major version. -const Version = embeddedpostgres.V17 +// binaries is the PostgreSQL release the oracle runs for each supported major version. +// The catalog for a major is generated from this release (internal/catalog/gen). +var binaries = map[pgparse.Version]embeddedpostgres.PostgresVersion{ + pgparse.PG17: embeddedpostgres.V17, + pgparse.PG18: embeddedpostgres.V18, +} + +// Version is the release the oracle runs for the default major version. +var Version = binaries[pgparse.Default] + +// Release is the PostgreSQL release run for a major version ("17.5.0"). +func Release(v pgparse.Version) string { return string(binaries[v.Or()]) } // Oracle owns one embedded PostgreSQL instance and one connection to it. type Oracle struct { + version pgparse.Version pg *embeddedpostgres.EmbeddedPostgres conn *pgx.Conn runtimePath string @@ -83,7 +95,16 @@ func (e *PgError) Error() string { // and a server start rather than an archive extraction and an initdb (~0.3s instead of // ~4s). Data lives in a temp dir removed by Close. func Start(ctx context.Context, schemaSQL string) (*Oracle, error) { - cache, err := ensureCache() + return StartVersion(ctx, pgparse.Default, schemaSQL) +} + +// StartVersion is Start on the PostgreSQL major version v. +func StartVersion(ctx context.Context, v pgparse.Version, schemaSQL string) (*Oracle, error) { + v = v.Or() + if _, ok := binaries[v]; !ok { + return nil, fmt.Errorf("oracle: no PostgreSQL %d binary", int(v)) + } + cache, err := ensureCache(v) if err != nil { return nil, err } @@ -102,12 +123,12 @@ func Start(ctx context.Context, schemaSQL string) (*Oracle, error) { os.RemoveAll(runtimePath) return nil, fmt.Errorf("copy data directory: %w", err) } - pg := embeddedpostgres.NewDatabase(config(cache, filepath.Join(runtimePath, "runtime"), dataPath, port)) + pg := embeddedpostgres.NewDatabase(config(v, cache, filepath.Join(runtimePath, "runtime"), dataPath, port)) if err := pg.Start(); err != nil { os.RemoveAll(runtimePath) return nil, fmt.Errorf("start embedded postgres: %w", err) } - o := &Oracle{pg: pg, runtimePath: runtimePath} + o := &Oracle{version: v, pg: pg, runtimePath: runtimePath} dsn := fmt.Sprintf("postgres://sqlshape:sqlshape@127.0.0.1:%d/sqlshape?sslmode=disable", port) o.dsn = dsn conn, err := pgx.Connect(ctx, dsn) @@ -126,9 +147,9 @@ func Start(ctx context.Context, schemaSQL string) (*Oracle, error) { } // config is the embedded-postgres configuration: binaries from cache, data at dataPath. -func config(cache, runtimePath, dataPath string, port int) embeddedpostgres.Config { +func config(v pgparse.Version, cache, runtimePath, dataPath string, port int) embeddedpostgres.Config { cfg := embeddedpostgres.DefaultConfig(). - Version(Version). + Version(binaries[v]). Port(uint32(port)). BinariesPath(cache). RuntimePath(runtimePath). @@ -150,24 +171,24 @@ func config(cache, runtimePath, dataPath string, port int) embeddedpostgres.Conf } // cacheDir is where the extracted binaries and the template data directory live: -// $SQLSHAPE_PG_CACHE, else /sqlshape/pg-. -func cacheDir() (string, error) { +// $SQLSHAPE_PG_CACHE/pg-, else /sqlshape/pg-. +func cacheDir(v pgparse.Version) (string, error) { if p := os.Getenv("SQLSHAPE_PG_CACHE"); p != "" { - return p, nil + return filepath.Join(p, "pg-"+string(binaries[v])), nil } base, err := os.UserCacheDir() if err != nil { base = os.TempDir() } - return filepath.Join(base, "sqlshape", "pg-"+string(Version)), nil + return filepath.Join(base, "sqlshape", "pg-"+string(binaries[v])), nil } // ensureCache fills the cache on first use: the binaries (embedded-postgres downloads // and extracts them) and a data directory initialized with the sqlshape user and // database, taken by starting a server once and stopping it. A lock file serializes // processes racing for the first fill; a marker file says the fill completed. -func ensureCache() (string, error) { - dir, err := cacheDir() +func ensureCache(v pgparse.Version) (string, error) { + dir, err := cacheDir(v) if err != nil { return "", err } @@ -202,14 +223,14 @@ func ensureCache() (string, error) { return "", err } defer os.RemoveAll(tmpRuntime) - pg := embeddedpostgres.NewDatabase(config(dir, tmpRuntime, filepath.Join(dir, "data"), port)) + pg := embeddedpostgres.NewDatabase(config(v, dir, tmpRuntime, filepath.Join(dir, "data"), port)) if err := pg.Start(); err != nil { return "", fmt.Errorf("initialize embedded postgres: %w", err) } if err := pg.Stop(); err != nil { return "", fmt.Errorf("stop embedded postgres after initialization: %w", err) } - if err := os.WriteFile(marker, []byte(string(Version)+"\n"), 0o644); err != nil { + if err := os.WriteFile(marker, []byte(string(binaries[v])+"\n"), 0o644); err != nil { return "", err } return dir, nil @@ -354,6 +375,9 @@ func freePort() (int, error) { return l.Addr().(*net.TCPAddr).Port, nil } +// Version is the PostgreSQL major version this oracle runs. +func (o *Oracle) Version() pgparse.Version { return o.version } + // Conn exposes the underlying connection for tooling (catalog dump). Tests use Describe. func (o *Oracle) Conn() *pgx.Conn { return o.conn } @@ -363,7 +387,7 @@ func (o *Oracle) ConnString() string { return o.dsn } // Session opens another connection to the same server, to the given database, for // callers that work in parallel. Closing a session closes only its connection. func (o *Oracle) Session(ctx context.Context, database string) (*Oracle, error) { - s := &Oracle{dsn: o.dsn} + s := &Oracle{version: o.version, dsn: o.dsn} if err := s.Reconnect(ctx, database); err != nil { return nil, err } diff --git a/internal/oracle/testdata/schema.sql b/internal/oracle/testdata/schema.sql index ba8adf1..55819ba 100644 --- a/internal/oracle/testdata/schema.sql +++ b/internal/oracle/testdata/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TYPE order_status AS ENUM ('pending', 'paid', 'shipped', 'cancelled'); CREATE TABLE users ( diff --git a/internal/pgparse/README.md b/internal/pgparse/README.md new file mode 100644 index 0000000..45a1a34 --- /dev/null +++ b/internal/pgparse/README.md @@ -0,0 +1,48 @@ +# pgparse + +The SQL parser: libpg_query compiled to WebAssembly, one module per supported PostgreSQL major +version, run by wazero. `Version.Parse` / `Deparse` / `SplitWithScanner` / `ParsePlPgSqlToJSON` +carry pg_query_go's signatures; every call takes a pooled instance (an instance is not safe for +concurrent use), and a module is compiled once per process, through a cache under the user cache +directory (`sqlshape/wazero`) because `go vet` starts one analyzer process per package. + +Node types (`pg_query.pb.go`) are generated from the newest version's `pg_query.proto`. Every +version's tree is read from the parser's JSON output, which names fields and node types (the +protobuf numbers them, and libpg_query renumbers between versions). An older version's renamed +fields are rewritten on the JSON before decoding (`upgrade.go`); a field the table misses fails the +decode on an unknown field rather than vanishing. `Deparse` always runs on the newest module (a +tree of any version is in its types). `Default` is the version schema text without a declaration +gets (code-built schemas, tests); a `schema.sql` file must declare its version. + +## Adding a PostgreSQL major version + +Each step has a check; the regress probe at the end lists what the analyzer does not yet know +about the version. + +1. Parser. `cd internal/pgparse/wasm && nix-shell -p emscripten protobuf protoc-gen-go --run + "./build.sh pb"` (`pb` regenerates the node types from that tag's proto; the + tag reads `17-6.2.2` up to 17 and `18.0.0` from 18). Add the `//go:embed` and the `PG` + constant in `pgparse.go`, set `newest`, and rebuild the older versions' modules without `pb` + so the shim matches. Compare the new proto with the previous one (field renames / removals) + and extend `upgrades` in `upgrade.go` for every older version. Check: `go test + ./internal/pgparse` — `TestCorpus` needs the previous version's regress corpus and fails on a + field the upgrade missed. Call sites whose generated accessors changed (`ReturningList` → + `GetReturningClause().GetExprs()` in 18) show up as build errors. +2. Oracle. Add the release to `binaries` in `internal/oracle/oracle.go` (embedded-postgres must + ship it). Check: `go test ./internal/oracle`. +3. Catalog. `go run ./internal/catalog/gen -pg ` then `-pg -all-ext` writes + `internal/catalog/data//`. Check: `go test ./internal/catalog`. +4. Regress corpus and baseline. `internal/analyze/testdata/tools/fetch-regress.sh REL__` + (the release the oracle runs), then `SQLSHAPE_PG= go test ./internal/analyze -run + 'TestRegress$' -v -regress-report `. Statements the loader drops show as downstream + 42P01s; new checks of the version show as LENIENT hits (the oracle errors, the analyzer does + not); changed semantics as DIFFs. Port them under a version branch (`a.s.Version.Or() >= + pgparse.PG`), then write the baseline with `-regress-update` and read what is left: every + line should be either environment-dependent, a known lenient spot, or a deliberate difference + worth a note in `docs/design.md`. +5. CI. Add a job like `pg18` in `.github/workflows/test.yml` (corpus fetch, catalog and oracle + tests, the probe). Mention the version in `schema.DeclaredVersion`'s error (it reads + `pgparse.Supported()`), `docs/checks.md`, the README and the CHANGELOG. + +Dropping a version is the reverse: its embed, constant, catalog directory, baseline and CI job go; +`upgrades` loses its entry. diff --git a/internal/pgparse/pg_query.pb.go b/internal/pgparse/pg_query.pb.go new file mode 100644 index 0000000..de6812b --- /dev/null +++ b/internal/pgparse/pg_query.pb.go @@ -0,0 +1,37715 @@ +// This file is autogenerated by ./scripts/generate_protobuf_and_funcs.rb + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.12 +// protoc v7.35.1 +// source: pg_query.proto + +package pgparse + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type QuerySource int32 + +const ( + QuerySource_QUERY_SOURCE_UNDEFINED QuerySource = 0 + QuerySource_QSRC_ORIGINAL QuerySource = 1 + QuerySource_QSRC_PARSER QuerySource = 2 + QuerySource_QSRC_INSTEAD_RULE QuerySource = 3 + QuerySource_QSRC_QUAL_INSTEAD_RULE QuerySource = 4 + QuerySource_QSRC_NON_INSTEAD_RULE QuerySource = 5 +) + +// Enum value maps for QuerySource. +var ( + QuerySource_name = map[int32]string{ + 0: "QUERY_SOURCE_UNDEFINED", + 1: "QSRC_ORIGINAL", + 2: "QSRC_PARSER", + 3: "QSRC_INSTEAD_RULE", + 4: "QSRC_QUAL_INSTEAD_RULE", + 5: "QSRC_NON_INSTEAD_RULE", + } + QuerySource_value = map[string]int32{ + "QUERY_SOURCE_UNDEFINED": 0, + "QSRC_ORIGINAL": 1, + "QSRC_PARSER": 2, + "QSRC_INSTEAD_RULE": 3, + "QSRC_QUAL_INSTEAD_RULE": 4, + "QSRC_NON_INSTEAD_RULE": 5, + } +) + +func (x QuerySource) Enum() *QuerySource { + p := new(QuerySource) + *p = x + return p +} + +func (x QuerySource) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QuerySource) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[0].Descriptor() +} + +func (QuerySource) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[0] +} + +func (x QuerySource) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QuerySource.Descriptor instead. +func (QuerySource) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{0} +} + +type SortByDir int32 + +const ( + SortByDir_SORT_BY_DIR_UNDEFINED SortByDir = 0 + SortByDir_SORTBY_DEFAULT SortByDir = 1 + SortByDir_SORTBY_ASC SortByDir = 2 + SortByDir_SORTBY_DESC SortByDir = 3 + SortByDir_SORTBY_USING SortByDir = 4 +) + +// Enum value maps for SortByDir. +var ( + SortByDir_name = map[int32]string{ + 0: "SORT_BY_DIR_UNDEFINED", + 1: "SORTBY_DEFAULT", + 2: "SORTBY_ASC", + 3: "SORTBY_DESC", + 4: "SORTBY_USING", + } + SortByDir_value = map[string]int32{ + "SORT_BY_DIR_UNDEFINED": 0, + "SORTBY_DEFAULT": 1, + "SORTBY_ASC": 2, + "SORTBY_DESC": 3, + "SORTBY_USING": 4, + } +) + +func (x SortByDir) Enum() *SortByDir { + p := new(SortByDir) + *p = x + return p +} + +func (x SortByDir) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SortByDir) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[1].Descriptor() +} + +func (SortByDir) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[1] +} + +func (x SortByDir) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SortByDir.Descriptor instead. +func (SortByDir) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{1} +} + +type SortByNulls int32 + +const ( + SortByNulls_SORT_BY_NULLS_UNDEFINED SortByNulls = 0 + SortByNulls_SORTBY_NULLS_DEFAULT SortByNulls = 1 + SortByNulls_SORTBY_NULLS_FIRST SortByNulls = 2 + SortByNulls_SORTBY_NULLS_LAST SortByNulls = 3 +) + +// Enum value maps for SortByNulls. +var ( + SortByNulls_name = map[int32]string{ + 0: "SORT_BY_NULLS_UNDEFINED", + 1: "SORTBY_NULLS_DEFAULT", + 2: "SORTBY_NULLS_FIRST", + 3: "SORTBY_NULLS_LAST", + } + SortByNulls_value = map[string]int32{ + "SORT_BY_NULLS_UNDEFINED": 0, + "SORTBY_NULLS_DEFAULT": 1, + "SORTBY_NULLS_FIRST": 2, + "SORTBY_NULLS_LAST": 3, + } +) + +func (x SortByNulls) Enum() *SortByNulls { + p := new(SortByNulls) + *p = x + return p +} + +func (x SortByNulls) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SortByNulls) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[2].Descriptor() +} + +func (SortByNulls) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[2] +} + +func (x SortByNulls) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SortByNulls.Descriptor instead. +func (SortByNulls) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{2} +} + +type SetQuantifier int32 + +const ( + SetQuantifier_SET_QUANTIFIER_UNDEFINED SetQuantifier = 0 + SetQuantifier_SET_QUANTIFIER_DEFAULT SetQuantifier = 1 + SetQuantifier_SET_QUANTIFIER_ALL SetQuantifier = 2 + SetQuantifier_SET_QUANTIFIER_DISTINCT SetQuantifier = 3 +) + +// Enum value maps for SetQuantifier. +var ( + SetQuantifier_name = map[int32]string{ + 0: "SET_QUANTIFIER_UNDEFINED", + 1: "SET_QUANTIFIER_DEFAULT", + 2: "SET_QUANTIFIER_ALL", + 3: "SET_QUANTIFIER_DISTINCT", + } + SetQuantifier_value = map[string]int32{ + "SET_QUANTIFIER_UNDEFINED": 0, + "SET_QUANTIFIER_DEFAULT": 1, + "SET_QUANTIFIER_ALL": 2, + "SET_QUANTIFIER_DISTINCT": 3, + } +) + +func (x SetQuantifier) Enum() *SetQuantifier { + p := new(SetQuantifier) + *p = x + return p +} + +func (x SetQuantifier) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetQuantifier) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[3].Descriptor() +} + +func (SetQuantifier) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[3] +} + +func (x SetQuantifier) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetQuantifier.Descriptor instead. +func (SetQuantifier) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{3} +} + +type A_Expr_Kind int32 + +const ( + A_Expr_Kind_A_EXPR_KIND_UNDEFINED A_Expr_Kind = 0 + A_Expr_Kind_AEXPR_OP A_Expr_Kind = 1 + A_Expr_Kind_AEXPR_OP_ANY A_Expr_Kind = 2 + A_Expr_Kind_AEXPR_OP_ALL A_Expr_Kind = 3 + A_Expr_Kind_AEXPR_DISTINCT A_Expr_Kind = 4 + A_Expr_Kind_AEXPR_NOT_DISTINCT A_Expr_Kind = 5 + A_Expr_Kind_AEXPR_NULLIF A_Expr_Kind = 6 + A_Expr_Kind_AEXPR_IN A_Expr_Kind = 7 + A_Expr_Kind_AEXPR_LIKE A_Expr_Kind = 8 + A_Expr_Kind_AEXPR_ILIKE A_Expr_Kind = 9 + A_Expr_Kind_AEXPR_SIMILAR A_Expr_Kind = 10 + A_Expr_Kind_AEXPR_BETWEEN A_Expr_Kind = 11 + A_Expr_Kind_AEXPR_NOT_BETWEEN A_Expr_Kind = 12 + A_Expr_Kind_AEXPR_BETWEEN_SYM A_Expr_Kind = 13 + A_Expr_Kind_AEXPR_NOT_BETWEEN_SYM A_Expr_Kind = 14 +) + +// Enum value maps for A_Expr_Kind. +var ( + A_Expr_Kind_name = map[int32]string{ + 0: "A_EXPR_KIND_UNDEFINED", + 1: "AEXPR_OP", + 2: "AEXPR_OP_ANY", + 3: "AEXPR_OP_ALL", + 4: "AEXPR_DISTINCT", + 5: "AEXPR_NOT_DISTINCT", + 6: "AEXPR_NULLIF", + 7: "AEXPR_IN", + 8: "AEXPR_LIKE", + 9: "AEXPR_ILIKE", + 10: "AEXPR_SIMILAR", + 11: "AEXPR_BETWEEN", + 12: "AEXPR_NOT_BETWEEN", + 13: "AEXPR_BETWEEN_SYM", + 14: "AEXPR_NOT_BETWEEN_SYM", + } + A_Expr_Kind_value = map[string]int32{ + "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, + } +) + +func (x A_Expr_Kind) Enum() *A_Expr_Kind { + p := new(A_Expr_Kind) + *p = x + return p +} + +func (x A_Expr_Kind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (A_Expr_Kind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[4].Descriptor() +} + +func (A_Expr_Kind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[4] +} + +func (x A_Expr_Kind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use A_Expr_Kind.Descriptor instead. +func (A_Expr_Kind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{4} +} + +type RoleSpecType int32 + +const ( + RoleSpecType_ROLE_SPEC_TYPE_UNDEFINED RoleSpecType = 0 + RoleSpecType_ROLESPEC_CSTRING RoleSpecType = 1 + RoleSpecType_ROLESPEC_CURRENT_ROLE RoleSpecType = 2 + RoleSpecType_ROLESPEC_CURRENT_USER RoleSpecType = 3 + RoleSpecType_ROLESPEC_SESSION_USER RoleSpecType = 4 + RoleSpecType_ROLESPEC_PUBLIC RoleSpecType = 5 +) + +// Enum value maps for RoleSpecType. +var ( + RoleSpecType_name = map[int32]string{ + 0: "ROLE_SPEC_TYPE_UNDEFINED", + 1: "ROLESPEC_CSTRING", + 2: "ROLESPEC_CURRENT_ROLE", + 3: "ROLESPEC_CURRENT_USER", + 4: "ROLESPEC_SESSION_USER", + 5: "ROLESPEC_PUBLIC", + } + RoleSpecType_value = map[string]int32{ + "ROLE_SPEC_TYPE_UNDEFINED": 0, + "ROLESPEC_CSTRING": 1, + "ROLESPEC_CURRENT_ROLE": 2, + "ROLESPEC_CURRENT_USER": 3, + "ROLESPEC_SESSION_USER": 4, + "ROLESPEC_PUBLIC": 5, + } +) + +func (x RoleSpecType) Enum() *RoleSpecType { + p := new(RoleSpecType) + *p = x + return p +} + +func (x RoleSpecType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RoleSpecType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[5].Descriptor() +} + +func (RoleSpecType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[5] +} + +func (x RoleSpecType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RoleSpecType.Descriptor instead. +func (RoleSpecType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{5} +} + +type TableLikeOption int32 + +const ( + TableLikeOption_TABLE_LIKE_OPTION_UNDEFINED TableLikeOption = 0 + TableLikeOption_CREATE_TABLE_LIKE_COMMENTS TableLikeOption = 1 + TableLikeOption_CREATE_TABLE_LIKE_COMPRESSION TableLikeOption = 2 + TableLikeOption_CREATE_TABLE_LIKE_CONSTRAINTS TableLikeOption = 3 + TableLikeOption_CREATE_TABLE_LIKE_DEFAULTS TableLikeOption = 4 + TableLikeOption_CREATE_TABLE_LIKE_GENERATED TableLikeOption = 5 + TableLikeOption_CREATE_TABLE_LIKE_IDENTITY TableLikeOption = 6 + TableLikeOption_CREATE_TABLE_LIKE_INDEXES TableLikeOption = 7 + TableLikeOption_CREATE_TABLE_LIKE_STATISTICS TableLikeOption = 8 + TableLikeOption_CREATE_TABLE_LIKE_STORAGE TableLikeOption = 9 + TableLikeOption_CREATE_TABLE_LIKE_ALL TableLikeOption = 10 +) + +// Enum value maps for TableLikeOption. +var ( + TableLikeOption_name = map[int32]string{ + 0: "TABLE_LIKE_OPTION_UNDEFINED", + 1: "CREATE_TABLE_LIKE_COMMENTS", + 2: "CREATE_TABLE_LIKE_COMPRESSION", + 3: "CREATE_TABLE_LIKE_CONSTRAINTS", + 4: "CREATE_TABLE_LIKE_DEFAULTS", + 5: "CREATE_TABLE_LIKE_GENERATED", + 6: "CREATE_TABLE_LIKE_IDENTITY", + 7: "CREATE_TABLE_LIKE_INDEXES", + 8: "CREATE_TABLE_LIKE_STATISTICS", + 9: "CREATE_TABLE_LIKE_STORAGE", + 10: "CREATE_TABLE_LIKE_ALL", + } + TableLikeOption_value = map[string]int32{ + "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, + } +) + +func (x TableLikeOption) Enum() *TableLikeOption { + p := new(TableLikeOption) + *p = x + return p +} + +func (x TableLikeOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TableLikeOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[6].Descriptor() +} + +func (TableLikeOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[6] +} + +func (x TableLikeOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TableLikeOption.Descriptor instead. +func (TableLikeOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{6} +} + +type DefElemAction int32 + +const ( + DefElemAction_DEF_ELEM_ACTION_UNDEFINED DefElemAction = 0 + DefElemAction_DEFELEM_UNSPEC DefElemAction = 1 + DefElemAction_DEFELEM_SET DefElemAction = 2 + DefElemAction_DEFELEM_ADD DefElemAction = 3 + DefElemAction_DEFELEM_DROP DefElemAction = 4 +) + +// Enum value maps for DefElemAction. +var ( + DefElemAction_name = map[int32]string{ + 0: "DEF_ELEM_ACTION_UNDEFINED", + 1: "DEFELEM_UNSPEC", + 2: "DEFELEM_SET", + 3: "DEFELEM_ADD", + 4: "DEFELEM_DROP", + } + DefElemAction_value = map[string]int32{ + "DEF_ELEM_ACTION_UNDEFINED": 0, + "DEFELEM_UNSPEC": 1, + "DEFELEM_SET": 2, + "DEFELEM_ADD": 3, + "DEFELEM_DROP": 4, + } +) + +func (x DefElemAction) Enum() *DefElemAction { + p := new(DefElemAction) + *p = x + return p +} + +func (x DefElemAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DefElemAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[7].Descriptor() +} + +func (DefElemAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[7] +} + +func (x DefElemAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DefElemAction.Descriptor instead. +func (DefElemAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{7} +} + +type PartitionStrategy int32 + +const ( + PartitionStrategy_PARTITION_STRATEGY_UNDEFINED PartitionStrategy = 0 + PartitionStrategy_PARTITION_STRATEGY_LIST PartitionStrategy = 1 + PartitionStrategy_PARTITION_STRATEGY_RANGE PartitionStrategy = 2 + PartitionStrategy_PARTITION_STRATEGY_HASH PartitionStrategy = 3 +) + +// Enum value maps for PartitionStrategy. +var ( + PartitionStrategy_name = map[int32]string{ + 0: "PARTITION_STRATEGY_UNDEFINED", + 1: "PARTITION_STRATEGY_LIST", + 2: "PARTITION_STRATEGY_RANGE", + 3: "PARTITION_STRATEGY_HASH", + } + PartitionStrategy_value = map[string]int32{ + "PARTITION_STRATEGY_UNDEFINED": 0, + "PARTITION_STRATEGY_LIST": 1, + "PARTITION_STRATEGY_RANGE": 2, + "PARTITION_STRATEGY_HASH": 3, + } +) + +func (x PartitionStrategy) Enum() *PartitionStrategy { + p := new(PartitionStrategy) + *p = x + return p +} + +func (x PartitionStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PartitionStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[8].Descriptor() +} + +func (PartitionStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[8] +} + +func (x PartitionStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PartitionStrategy.Descriptor instead. +func (PartitionStrategy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{8} +} + +type PartitionRangeDatumKind int32 + +const ( + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_KIND_UNDEFINED PartitionRangeDatumKind = 0 + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_MINVALUE PartitionRangeDatumKind = 1 + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_VALUE PartitionRangeDatumKind = 2 + PartitionRangeDatumKind_PARTITION_RANGE_DATUM_MAXVALUE PartitionRangeDatumKind = 3 +) + +// Enum value maps for PartitionRangeDatumKind. +var ( + PartitionRangeDatumKind_name = map[int32]string{ + 0: "PARTITION_RANGE_DATUM_KIND_UNDEFINED", + 1: "PARTITION_RANGE_DATUM_MINVALUE", + 2: "PARTITION_RANGE_DATUM_VALUE", + 3: "PARTITION_RANGE_DATUM_MAXVALUE", + } + PartitionRangeDatumKind_value = map[string]int32{ + "PARTITION_RANGE_DATUM_KIND_UNDEFINED": 0, + "PARTITION_RANGE_DATUM_MINVALUE": 1, + "PARTITION_RANGE_DATUM_VALUE": 2, + "PARTITION_RANGE_DATUM_MAXVALUE": 3, + } +) + +func (x PartitionRangeDatumKind) Enum() *PartitionRangeDatumKind { + p := new(PartitionRangeDatumKind) + *p = x + return p +} + +func (x PartitionRangeDatumKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PartitionRangeDatumKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[9].Descriptor() +} + +func (PartitionRangeDatumKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[9] +} + +func (x PartitionRangeDatumKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PartitionRangeDatumKind.Descriptor instead. +func (PartitionRangeDatumKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{9} +} + +type RTEKind int32 + +const ( + RTEKind_RTEKIND_UNDEFINED RTEKind = 0 + RTEKind_RTE_RELATION RTEKind = 1 + RTEKind_RTE_SUBQUERY RTEKind = 2 + RTEKind_RTE_JOIN RTEKind = 3 + RTEKind_RTE_FUNCTION RTEKind = 4 + RTEKind_RTE_TABLEFUNC RTEKind = 5 + RTEKind_RTE_VALUES RTEKind = 6 + RTEKind_RTE_CTE RTEKind = 7 + RTEKind_RTE_NAMEDTUPLESTORE RTEKind = 8 + RTEKind_RTE_RESULT RTEKind = 9 + RTEKind_RTE_GROUP RTEKind = 10 +) + +// Enum value maps for RTEKind. +var ( + RTEKind_name = map[int32]string{ + 0: "RTEKIND_UNDEFINED", + 1: "RTE_RELATION", + 2: "RTE_SUBQUERY", + 3: "RTE_JOIN", + 4: "RTE_FUNCTION", + 5: "RTE_TABLEFUNC", + 6: "RTE_VALUES", + 7: "RTE_CTE", + 8: "RTE_NAMEDTUPLESTORE", + 9: "RTE_RESULT", + 10: "RTE_GROUP", + } + RTEKind_value = map[string]int32{ + "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, + "RTE_GROUP": 10, + } +) + +func (x RTEKind) Enum() *RTEKind { + p := new(RTEKind) + *p = x + return p +} + +func (x RTEKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RTEKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[10].Descriptor() +} + +func (RTEKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[10] +} + +func (x RTEKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RTEKind.Descriptor instead. +func (RTEKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{10} +} + +type WCOKind int32 + +const ( + WCOKind_WCOKIND_UNDEFINED WCOKind = 0 + WCOKind_WCO_VIEW_CHECK WCOKind = 1 + WCOKind_WCO_RLS_INSERT_CHECK WCOKind = 2 + WCOKind_WCO_RLS_UPDATE_CHECK WCOKind = 3 + WCOKind_WCO_RLS_CONFLICT_CHECK WCOKind = 4 + WCOKind_WCO_RLS_MERGE_UPDATE_CHECK WCOKind = 5 + WCOKind_WCO_RLS_MERGE_DELETE_CHECK WCOKind = 6 +) + +// Enum value maps for WCOKind. +var ( + WCOKind_name = map[int32]string{ + 0: "WCOKIND_UNDEFINED", + 1: "WCO_VIEW_CHECK", + 2: "WCO_RLS_INSERT_CHECK", + 3: "WCO_RLS_UPDATE_CHECK", + 4: "WCO_RLS_CONFLICT_CHECK", + 5: "WCO_RLS_MERGE_UPDATE_CHECK", + 6: "WCO_RLS_MERGE_DELETE_CHECK", + } + WCOKind_value = map[string]int32{ + "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, + } +) + +func (x WCOKind) Enum() *WCOKind { + p := new(WCOKind) + *p = x + return p +} + +func (x WCOKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WCOKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[11].Descriptor() +} + +func (WCOKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[11] +} + +func (x WCOKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WCOKind.Descriptor instead. +func (WCOKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{11} +} + +type GroupingSetKind int32 + +const ( + GroupingSetKind_GROUPING_SET_KIND_UNDEFINED GroupingSetKind = 0 + GroupingSetKind_GROUPING_SET_EMPTY GroupingSetKind = 1 + GroupingSetKind_GROUPING_SET_SIMPLE GroupingSetKind = 2 + GroupingSetKind_GROUPING_SET_ROLLUP GroupingSetKind = 3 + GroupingSetKind_GROUPING_SET_CUBE GroupingSetKind = 4 + GroupingSetKind_GROUPING_SET_SETS GroupingSetKind = 5 +) + +// Enum value maps for GroupingSetKind. +var ( + GroupingSetKind_name = map[int32]string{ + 0: "GROUPING_SET_KIND_UNDEFINED", + 1: "GROUPING_SET_EMPTY", + 2: "GROUPING_SET_SIMPLE", + 3: "GROUPING_SET_ROLLUP", + 4: "GROUPING_SET_CUBE", + 5: "GROUPING_SET_SETS", + } + GroupingSetKind_value = map[string]int32{ + "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, + } +) + +func (x GroupingSetKind) Enum() *GroupingSetKind { + p := new(GroupingSetKind) + *p = x + return p +} + +func (x GroupingSetKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GroupingSetKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[12].Descriptor() +} + +func (GroupingSetKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[12] +} + +func (x GroupingSetKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GroupingSetKind.Descriptor instead. +func (GroupingSetKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{12} +} + +type CTEMaterialize int32 + +const ( + CTEMaterialize_CTEMATERIALIZE_UNDEFINED CTEMaterialize = 0 + CTEMaterialize_CTEMaterializeDefault CTEMaterialize = 1 + CTEMaterialize_CTEMaterializeAlways CTEMaterialize = 2 + CTEMaterialize_CTEMaterializeNever CTEMaterialize = 3 +) + +// Enum value maps for CTEMaterialize. +var ( + CTEMaterialize_name = map[int32]string{ + 0: "CTEMATERIALIZE_UNDEFINED", + 1: "CTEMaterializeDefault", + 2: "CTEMaterializeAlways", + 3: "CTEMaterializeNever", + } + CTEMaterialize_value = map[string]int32{ + "CTEMATERIALIZE_UNDEFINED": 0, + "CTEMaterializeDefault": 1, + "CTEMaterializeAlways": 2, + "CTEMaterializeNever": 3, + } +) + +func (x CTEMaterialize) Enum() *CTEMaterialize { + p := new(CTEMaterialize) + *p = x + return p +} + +func (x CTEMaterialize) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CTEMaterialize) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[13].Descriptor() +} + +func (CTEMaterialize) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[13] +} + +func (x CTEMaterialize) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CTEMaterialize.Descriptor instead. +func (CTEMaterialize) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{13} +} + +type ReturningOptionKind int32 + +const ( + ReturningOptionKind_RETURNING_OPTION_KIND_UNDEFINED ReturningOptionKind = 0 + ReturningOptionKind_RETURNING_OPTION_OLD ReturningOptionKind = 1 + ReturningOptionKind_RETURNING_OPTION_NEW ReturningOptionKind = 2 +) + +// Enum value maps for ReturningOptionKind. +var ( + ReturningOptionKind_name = map[int32]string{ + 0: "RETURNING_OPTION_KIND_UNDEFINED", + 1: "RETURNING_OPTION_OLD", + 2: "RETURNING_OPTION_NEW", + } + ReturningOptionKind_value = map[string]int32{ + "RETURNING_OPTION_KIND_UNDEFINED": 0, + "RETURNING_OPTION_OLD": 1, + "RETURNING_OPTION_NEW": 2, + } +) + +func (x ReturningOptionKind) Enum() *ReturningOptionKind { + p := new(ReturningOptionKind) + *p = x + return p +} + +func (x ReturningOptionKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ReturningOptionKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[14].Descriptor() +} + +func (ReturningOptionKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[14] +} + +func (x ReturningOptionKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ReturningOptionKind.Descriptor instead. +func (ReturningOptionKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{14} +} + +type JsonQuotes int32 + +const ( + JsonQuotes_JSON_QUOTES_UNDEFINED JsonQuotes = 0 + JsonQuotes_JS_QUOTES_UNSPEC JsonQuotes = 1 + JsonQuotes_JS_QUOTES_KEEP JsonQuotes = 2 + JsonQuotes_JS_QUOTES_OMIT JsonQuotes = 3 +) + +// Enum value maps for JsonQuotes. +var ( + JsonQuotes_name = map[int32]string{ + 0: "JSON_QUOTES_UNDEFINED", + 1: "JS_QUOTES_UNSPEC", + 2: "JS_QUOTES_KEEP", + 3: "JS_QUOTES_OMIT", + } + JsonQuotes_value = map[string]int32{ + "JSON_QUOTES_UNDEFINED": 0, + "JS_QUOTES_UNSPEC": 1, + "JS_QUOTES_KEEP": 2, + "JS_QUOTES_OMIT": 3, + } +) + +func (x JsonQuotes) Enum() *JsonQuotes { + p := new(JsonQuotes) + *p = x + return p +} + +func (x JsonQuotes) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonQuotes) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[15].Descriptor() +} + +func (JsonQuotes) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[15] +} + +func (x JsonQuotes) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonQuotes.Descriptor instead. +func (JsonQuotes) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{15} +} + +type JsonTableColumnType int32 + +const ( + JsonTableColumnType_JSON_TABLE_COLUMN_TYPE_UNDEFINED JsonTableColumnType = 0 + JsonTableColumnType_JTC_FOR_ORDINALITY JsonTableColumnType = 1 + JsonTableColumnType_JTC_REGULAR JsonTableColumnType = 2 + JsonTableColumnType_JTC_EXISTS JsonTableColumnType = 3 + JsonTableColumnType_JTC_FORMATTED JsonTableColumnType = 4 + JsonTableColumnType_JTC_NESTED JsonTableColumnType = 5 +) + +// Enum value maps for JsonTableColumnType. +var ( + JsonTableColumnType_name = map[int32]string{ + 0: "JSON_TABLE_COLUMN_TYPE_UNDEFINED", + 1: "JTC_FOR_ORDINALITY", + 2: "JTC_REGULAR", + 3: "JTC_EXISTS", + 4: "JTC_FORMATTED", + 5: "JTC_NESTED", + } + JsonTableColumnType_value = map[string]int32{ + "JSON_TABLE_COLUMN_TYPE_UNDEFINED": 0, + "JTC_FOR_ORDINALITY": 1, + "JTC_REGULAR": 2, + "JTC_EXISTS": 3, + "JTC_FORMATTED": 4, + "JTC_NESTED": 5, + } +) + +func (x JsonTableColumnType) Enum() *JsonTableColumnType { + p := new(JsonTableColumnType) + *p = x + return p +} + +func (x JsonTableColumnType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonTableColumnType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[16].Descriptor() +} + +func (JsonTableColumnType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[16] +} + +func (x JsonTableColumnType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonTableColumnType.Descriptor instead. +func (JsonTableColumnType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{16} +} + +type SetOperation int32 + +const ( + SetOperation_SET_OPERATION_UNDEFINED SetOperation = 0 + SetOperation_SETOP_NONE SetOperation = 1 + SetOperation_SETOP_UNION SetOperation = 2 + SetOperation_SETOP_INTERSECT SetOperation = 3 + SetOperation_SETOP_EXCEPT SetOperation = 4 +) + +// Enum value maps for SetOperation. +var ( + SetOperation_name = map[int32]string{ + 0: "SET_OPERATION_UNDEFINED", + 1: "SETOP_NONE", + 2: "SETOP_UNION", + 3: "SETOP_INTERSECT", + 4: "SETOP_EXCEPT", + } + SetOperation_value = map[string]int32{ + "SET_OPERATION_UNDEFINED": 0, + "SETOP_NONE": 1, + "SETOP_UNION": 2, + "SETOP_INTERSECT": 3, + "SETOP_EXCEPT": 4, + } +) + +func (x SetOperation) Enum() *SetOperation { + p := new(SetOperation) + *p = x + return p +} + +func (x SetOperation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetOperation) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[17].Descriptor() +} + +func (SetOperation) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[17] +} + +func (x SetOperation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetOperation.Descriptor instead. +func (SetOperation) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{17} +} + +type ObjectType int32 + +const ( + ObjectType_OBJECT_TYPE_UNDEFINED ObjectType = 0 + ObjectType_OBJECT_ACCESS_METHOD ObjectType = 1 + ObjectType_OBJECT_AGGREGATE ObjectType = 2 + ObjectType_OBJECT_AMOP ObjectType = 3 + ObjectType_OBJECT_AMPROC ObjectType = 4 + ObjectType_OBJECT_ATTRIBUTE ObjectType = 5 + ObjectType_OBJECT_CAST ObjectType = 6 + ObjectType_OBJECT_COLUMN ObjectType = 7 + ObjectType_OBJECT_COLLATION ObjectType = 8 + ObjectType_OBJECT_CONVERSION ObjectType = 9 + ObjectType_OBJECT_DATABASE ObjectType = 10 + ObjectType_OBJECT_DEFAULT ObjectType = 11 + ObjectType_OBJECT_DEFACL ObjectType = 12 + ObjectType_OBJECT_DOMAIN ObjectType = 13 + ObjectType_OBJECT_DOMCONSTRAINT ObjectType = 14 + ObjectType_OBJECT_EVENT_TRIGGER ObjectType = 15 + ObjectType_OBJECT_EXTENSION ObjectType = 16 + ObjectType_OBJECT_FDW ObjectType = 17 + ObjectType_OBJECT_FOREIGN_SERVER ObjectType = 18 + ObjectType_OBJECT_FOREIGN_TABLE ObjectType = 19 + ObjectType_OBJECT_FUNCTION ObjectType = 20 + ObjectType_OBJECT_INDEX ObjectType = 21 + ObjectType_OBJECT_LANGUAGE ObjectType = 22 + ObjectType_OBJECT_LARGEOBJECT ObjectType = 23 + ObjectType_OBJECT_MATVIEW ObjectType = 24 + ObjectType_OBJECT_OPCLASS ObjectType = 25 + ObjectType_OBJECT_OPERATOR ObjectType = 26 + ObjectType_OBJECT_OPFAMILY ObjectType = 27 + ObjectType_OBJECT_PARAMETER_ACL ObjectType = 28 + ObjectType_OBJECT_POLICY ObjectType = 29 + ObjectType_OBJECT_PROCEDURE ObjectType = 30 + ObjectType_OBJECT_PUBLICATION ObjectType = 31 + ObjectType_OBJECT_PUBLICATION_NAMESPACE ObjectType = 32 + ObjectType_OBJECT_PUBLICATION_REL ObjectType = 33 + ObjectType_OBJECT_ROLE ObjectType = 34 + ObjectType_OBJECT_ROUTINE ObjectType = 35 + ObjectType_OBJECT_RULE ObjectType = 36 + ObjectType_OBJECT_SCHEMA ObjectType = 37 + ObjectType_OBJECT_SEQUENCE ObjectType = 38 + ObjectType_OBJECT_SUBSCRIPTION ObjectType = 39 + ObjectType_OBJECT_STATISTIC_EXT ObjectType = 40 + ObjectType_OBJECT_TABCONSTRAINT ObjectType = 41 + ObjectType_OBJECT_TABLE ObjectType = 42 + ObjectType_OBJECT_TABLESPACE ObjectType = 43 + ObjectType_OBJECT_TRANSFORM ObjectType = 44 + ObjectType_OBJECT_TRIGGER ObjectType = 45 + ObjectType_OBJECT_TSCONFIGURATION ObjectType = 46 + ObjectType_OBJECT_TSDICTIONARY ObjectType = 47 + ObjectType_OBJECT_TSPARSER ObjectType = 48 + ObjectType_OBJECT_TSTEMPLATE ObjectType = 49 + ObjectType_OBJECT_TYPE ObjectType = 50 + ObjectType_OBJECT_USER_MAPPING ObjectType = 51 + ObjectType_OBJECT_VIEW ObjectType = 52 +) + +// Enum value maps for ObjectType. +var ( + ObjectType_name = map[int32]string{ + 0: "OBJECT_TYPE_UNDEFINED", + 1: "OBJECT_ACCESS_METHOD", + 2: "OBJECT_AGGREGATE", + 3: "OBJECT_AMOP", + 4: "OBJECT_AMPROC", + 5: "OBJECT_ATTRIBUTE", + 6: "OBJECT_CAST", + 7: "OBJECT_COLUMN", + 8: "OBJECT_COLLATION", + 9: "OBJECT_CONVERSION", + 10: "OBJECT_DATABASE", + 11: "OBJECT_DEFAULT", + 12: "OBJECT_DEFACL", + 13: "OBJECT_DOMAIN", + 14: "OBJECT_DOMCONSTRAINT", + 15: "OBJECT_EVENT_TRIGGER", + 16: "OBJECT_EXTENSION", + 17: "OBJECT_FDW", + 18: "OBJECT_FOREIGN_SERVER", + 19: "OBJECT_FOREIGN_TABLE", + 20: "OBJECT_FUNCTION", + 21: "OBJECT_INDEX", + 22: "OBJECT_LANGUAGE", + 23: "OBJECT_LARGEOBJECT", + 24: "OBJECT_MATVIEW", + 25: "OBJECT_OPCLASS", + 26: "OBJECT_OPERATOR", + 27: "OBJECT_OPFAMILY", + 28: "OBJECT_PARAMETER_ACL", + 29: "OBJECT_POLICY", + 30: "OBJECT_PROCEDURE", + 31: "OBJECT_PUBLICATION", + 32: "OBJECT_PUBLICATION_NAMESPACE", + 33: "OBJECT_PUBLICATION_REL", + 34: "OBJECT_ROLE", + 35: "OBJECT_ROUTINE", + 36: "OBJECT_RULE", + 37: "OBJECT_SCHEMA", + 38: "OBJECT_SEQUENCE", + 39: "OBJECT_SUBSCRIPTION", + 40: "OBJECT_STATISTIC_EXT", + 41: "OBJECT_TABCONSTRAINT", + 42: "OBJECT_TABLE", + 43: "OBJECT_TABLESPACE", + 44: "OBJECT_TRANSFORM", + 45: "OBJECT_TRIGGER", + 46: "OBJECT_TSCONFIGURATION", + 47: "OBJECT_TSDICTIONARY", + 48: "OBJECT_TSPARSER", + 49: "OBJECT_TSTEMPLATE", + 50: "OBJECT_TYPE", + 51: "OBJECT_USER_MAPPING", + 52: "OBJECT_VIEW", + } + ObjectType_value = map[string]int32{ + "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, + } +) + +func (x ObjectType) Enum() *ObjectType { + p := new(ObjectType) + *p = x + return p +} + +func (x ObjectType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ObjectType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[18].Descriptor() +} + +func (ObjectType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[18] +} + +func (x ObjectType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ObjectType.Descriptor instead. +func (ObjectType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{18} +} + +type DropBehavior int32 + +const ( + DropBehavior_DROP_BEHAVIOR_UNDEFINED DropBehavior = 0 + DropBehavior_DROP_RESTRICT DropBehavior = 1 + DropBehavior_DROP_CASCADE DropBehavior = 2 +) + +// Enum value maps for DropBehavior. +var ( + DropBehavior_name = map[int32]string{ + 0: "DROP_BEHAVIOR_UNDEFINED", + 1: "DROP_RESTRICT", + 2: "DROP_CASCADE", + } + DropBehavior_value = map[string]int32{ + "DROP_BEHAVIOR_UNDEFINED": 0, + "DROP_RESTRICT": 1, + "DROP_CASCADE": 2, + } +) + +func (x DropBehavior) Enum() *DropBehavior { + p := new(DropBehavior) + *p = x + return p +} + +func (x DropBehavior) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DropBehavior) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[19].Descriptor() +} + +func (DropBehavior) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[19] +} + +func (x DropBehavior) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DropBehavior.Descriptor instead. +func (DropBehavior) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{19} +} + +type AlterTableType int32 + +const ( + AlterTableType_ALTER_TABLE_TYPE_UNDEFINED AlterTableType = 0 + AlterTableType_AT_AddColumn AlterTableType = 1 + AlterTableType_AT_AddColumnToView AlterTableType = 2 + AlterTableType_AT_ColumnDefault AlterTableType = 3 + AlterTableType_AT_CookedColumnDefault AlterTableType = 4 + AlterTableType_AT_DropNotNull AlterTableType = 5 + AlterTableType_AT_SetNotNull AlterTableType = 6 + AlterTableType_AT_SetExpression AlterTableType = 7 + AlterTableType_AT_DropExpression AlterTableType = 8 + AlterTableType_AT_SetStatistics AlterTableType = 9 + AlterTableType_AT_SetOptions AlterTableType = 10 + AlterTableType_AT_ResetOptions AlterTableType = 11 + AlterTableType_AT_SetStorage AlterTableType = 12 + AlterTableType_AT_SetCompression AlterTableType = 13 + AlterTableType_AT_DropColumn AlterTableType = 14 + AlterTableType_AT_AddIndex AlterTableType = 15 + AlterTableType_AT_ReAddIndex AlterTableType = 16 + AlterTableType_AT_AddConstraint AlterTableType = 17 + AlterTableType_AT_ReAddConstraint AlterTableType = 18 + AlterTableType_AT_ReAddDomainConstraint AlterTableType = 19 + AlterTableType_AT_AlterConstraint AlterTableType = 20 + AlterTableType_AT_ValidateConstraint AlterTableType = 21 + AlterTableType_AT_AddIndexConstraint AlterTableType = 22 + AlterTableType_AT_DropConstraint AlterTableType = 23 + AlterTableType_AT_ReAddComment AlterTableType = 24 + AlterTableType_AT_AlterColumnType AlterTableType = 25 + AlterTableType_AT_AlterColumnGenericOptions AlterTableType = 26 + AlterTableType_AT_ChangeOwner AlterTableType = 27 + AlterTableType_AT_ClusterOn AlterTableType = 28 + AlterTableType_AT_DropCluster AlterTableType = 29 + AlterTableType_AT_SetLogged AlterTableType = 30 + AlterTableType_AT_SetUnLogged AlterTableType = 31 + AlterTableType_AT_DropOids AlterTableType = 32 + AlterTableType_AT_SetAccessMethod AlterTableType = 33 + AlterTableType_AT_SetTableSpace AlterTableType = 34 + AlterTableType_AT_SetRelOptions AlterTableType = 35 + AlterTableType_AT_ResetRelOptions AlterTableType = 36 + AlterTableType_AT_ReplaceRelOptions AlterTableType = 37 + AlterTableType_AT_EnableTrig AlterTableType = 38 + AlterTableType_AT_EnableAlwaysTrig AlterTableType = 39 + AlterTableType_AT_EnableReplicaTrig AlterTableType = 40 + AlterTableType_AT_DisableTrig AlterTableType = 41 + AlterTableType_AT_EnableTrigAll AlterTableType = 42 + AlterTableType_AT_DisableTrigAll AlterTableType = 43 + AlterTableType_AT_EnableTrigUser AlterTableType = 44 + AlterTableType_AT_DisableTrigUser AlterTableType = 45 + AlterTableType_AT_EnableRule AlterTableType = 46 + AlterTableType_AT_EnableAlwaysRule AlterTableType = 47 + AlterTableType_AT_EnableReplicaRule AlterTableType = 48 + AlterTableType_AT_DisableRule AlterTableType = 49 + AlterTableType_AT_AddInherit AlterTableType = 50 + AlterTableType_AT_DropInherit AlterTableType = 51 + AlterTableType_AT_AddOf AlterTableType = 52 + AlterTableType_AT_DropOf AlterTableType = 53 + AlterTableType_AT_ReplicaIdentity AlterTableType = 54 + AlterTableType_AT_EnableRowSecurity AlterTableType = 55 + AlterTableType_AT_DisableRowSecurity AlterTableType = 56 + AlterTableType_AT_ForceRowSecurity AlterTableType = 57 + AlterTableType_AT_NoForceRowSecurity AlterTableType = 58 + AlterTableType_AT_GenericOptions AlterTableType = 59 + AlterTableType_AT_AttachPartition AlterTableType = 60 + AlterTableType_AT_DetachPartition AlterTableType = 61 + AlterTableType_AT_DetachPartitionFinalize AlterTableType = 62 + AlterTableType_AT_AddIdentity AlterTableType = 63 + AlterTableType_AT_SetIdentity AlterTableType = 64 + AlterTableType_AT_DropIdentity AlterTableType = 65 + AlterTableType_AT_ReAddStatistics AlterTableType = 66 +) + +// Enum value maps for AlterTableType. +var ( + AlterTableType_name = map[int32]string{ + 0: "ALTER_TABLE_TYPE_UNDEFINED", + 1: "AT_AddColumn", + 2: "AT_AddColumnToView", + 3: "AT_ColumnDefault", + 4: "AT_CookedColumnDefault", + 5: "AT_DropNotNull", + 6: "AT_SetNotNull", + 7: "AT_SetExpression", + 8: "AT_DropExpression", + 9: "AT_SetStatistics", + 10: "AT_SetOptions", + 11: "AT_ResetOptions", + 12: "AT_SetStorage", + 13: "AT_SetCompression", + 14: "AT_DropColumn", + 15: "AT_AddIndex", + 16: "AT_ReAddIndex", + 17: "AT_AddConstraint", + 18: "AT_ReAddConstraint", + 19: "AT_ReAddDomainConstraint", + 20: "AT_AlterConstraint", + 21: "AT_ValidateConstraint", + 22: "AT_AddIndexConstraint", + 23: "AT_DropConstraint", + 24: "AT_ReAddComment", + 25: "AT_AlterColumnType", + 26: "AT_AlterColumnGenericOptions", + 27: "AT_ChangeOwner", + 28: "AT_ClusterOn", + 29: "AT_DropCluster", + 30: "AT_SetLogged", + 31: "AT_SetUnLogged", + 32: "AT_DropOids", + 33: "AT_SetAccessMethod", + 34: "AT_SetTableSpace", + 35: "AT_SetRelOptions", + 36: "AT_ResetRelOptions", + 37: "AT_ReplaceRelOptions", + 38: "AT_EnableTrig", + 39: "AT_EnableAlwaysTrig", + 40: "AT_EnableReplicaTrig", + 41: "AT_DisableTrig", + 42: "AT_EnableTrigAll", + 43: "AT_DisableTrigAll", + 44: "AT_EnableTrigUser", + 45: "AT_DisableTrigUser", + 46: "AT_EnableRule", + 47: "AT_EnableAlwaysRule", + 48: "AT_EnableReplicaRule", + 49: "AT_DisableRule", + 50: "AT_AddInherit", + 51: "AT_DropInherit", + 52: "AT_AddOf", + 53: "AT_DropOf", + 54: "AT_ReplicaIdentity", + 55: "AT_EnableRowSecurity", + 56: "AT_DisableRowSecurity", + 57: "AT_ForceRowSecurity", + 58: "AT_NoForceRowSecurity", + 59: "AT_GenericOptions", + 60: "AT_AttachPartition", + 61: "AT_DetachPartition", + 62: "AT_DetachPartitionFinalize", + 63: "AT_AddIdentity", + 64: "AT_SetIdentity", + 65: "AT_DropIdentity", + 66: "AT_ReAddStatistics", + } + AlterTableType_value = map[string]int32{ + "ALTER_TABLE_TYPE_UNDEFINED": 0, + "AT_AddColumn": 1, + "AT_AddColumnToView": 2, + "AT_ColumnDefault": 3, + "AT_CookedColumnDefault": 4, + "AT_DropNotNull": 5, + "AT_SetNotNull": 6, + "AT_SetExpression": 7, + "AT_DropExpression": 8, + "AT_SetStatistics": 9, + "AT_SetOptions": 10, + "AT_ResetOptions": 11, + "AT_SetStorage": 12, + "AT_SetCompression": 13, + "AT_DropColumn": 14, + "AT_AddIndex": 15, + "AT_ReAddIndex": 16, + "AT_AddConstraint": 17, + "AT_ReAddConstraint": 18, + "AT_ReAddDomainConstraint": 19, + "AT_AlterConstraint": 20, + "AT_ValidateConstraint": 21, + "AT_AddIndexConstraint": 22, + "AT_DropConstraint": 23, + "AT_ReAddComment": 24, + "AT_AlterColumnType": 25, + "AT_AlterColumnGenericOptions": 26, + "AT_ChangeOwner": 27, + "AT_ClusterOn": 28, + "AT_DropCluster": 29, + "AT_SetLogged": 30, + "AT_SetUnLogged": 31, + "AT_DropOids": 32, + "AT_SetAccessMethod": 33, + "AT_SetTableSpace": 34, + "AT_SetRelOptions": 35, + "AT_ResetRelOptions": 36, + "AT_ReplaceRelOptions": 37, + "AT_EnableTrig": 38, + "AT_EnableAlwaysTrig": 39, + "AT_EnableReplicaTrig": 40, + "AT_DisableTrig": 41, + "AT_EnableTrigAll": 42, + "AT_DisableTrigAll": 43, + "AT_EnableTrigUser": 44, + "AT_DisableTrigUser": 45, + "AT_EnableRule": 46, + "AT_EnableAlwaysRule": 47, + "AT_EnableReplicaRule": 48, + "AT_DisableRule": 49, + "AT_AddInherit": 50, + "AT_DropInherit": 51, + "AT_AddOf": 52, + "AT_DropOf": 53, + "AT_ReplicaIdentity": 54, + "AT_EnableRowSecurity": 55, + "AT_DisableRowSecurity": 56, + "AT_ForceRowSecurity": 57, + "AT_NoForceRowSecurity": 58, + "AT_GenericOptions": 59, + "AT_AttachPartition": 60, + "AT_DetachPartition": 61, + "AT_DetachPartitionFinalize": 62, + "AT_AddIdentity": 63, + "AT_SetIdentity": 64, + "AT_DropIdentity": 65, + "AT_ReAddStatistics": 66, + } +) + +func (x AlterTableType) Enum() *AlterTableType { + p := new(AlterTableType) + *p = x + return p +} + +func (x AlterTableType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterTableType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[20].Descriptor() +} + +func (AlterTableType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[20] +} + +func (x AlterTableType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterTableType.Descriptor instead. +func (AlterTableType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{20} +} + +type GrantTargetType int32 + +const ( + GrantTargetType_GRANT_TARGET_TYPE_UNDEFINED GrantTargetType = 0 + GrantTargetType_ACL_TARGET_OBJECT GrantTargetType = 1 + GrantTargetType_ACL_TARGET_ALL_IN_SCHEMA GrantTargetType = 2 + GrantTargetType_ACL_TARGET_DEFAULTS GrantTargetType = 3 +) + +// Enum value maps for GrantTargetType. +var ( + GrantTargetType_name = map[int32]string{ + 0: "GRANT_TARGET_TYPE_UNDEFINED", + 1: "ACL_TARGET_OBJECT", + 2: "ACL_TARGET_ALL_IN_SCHEMA", + 3: "ACL_TARGET_DEFAULTS", + } + GrantTargetType_value = map[string]int32{ + "GRANT_TARGET_TYPE_UNDEFINED": 0, + "ACL_TARGET_OBJECT": 1, + "ACL_TARGET_ALL_IN_SCHEMA": 2, + "ACL_TARGET_DEFAULTS": 3, + } +) + +func (x GrantTargetType) Enum() *GrantTargetType { + p := new(GrantTargetType) + *p = x + return p +} + +func (x GrantTargetType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GrantTargetType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[21].Descriptor() +} + +func (GrantTargetType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[21] +} + +func (x GrantTargetType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GrantTargetType.Descriptor instead. +func (GrantTargetType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{21} +} + +type VariableSetKind int32 + +const ( + VariableSetKind_VARIABLE_SET_KIND_UNDEFINED VariableSetKind = 0 + VariableSetKind_VAR_SET_VALUE VariableSetKind = 1 + VariableSetKind_VAR_SET_DEFAULT VariableSetKind = 2 + VariableSetKind_VAR_SET_CURRENT VariableSetKind = 3 + VariableSetKind_VAR_SET_MULTI VariableSetKind = 4 + VariableSetKind_VAR_RESET VariableSetKind = 5 + VariableSetKind_VAR_RESET_ALL VariableSetKind = 6 +) + +// Enum value maps for VariableSetKind. +var ( + VariableSetKind_name = map[int32]string{ + 0: "VARIABLE_SET_KIND_UNDEFINED", + 1: "VAR_SET_VALUE", + 2: "VAR_SET_DEFAULT", + 3: "VAR_SET_CURRENT", + 4: "VAR_SET_MULTI", + 5: "VAR_RESET", + 6: "VAR_RESET_ALL", + } + VariableSetKind_value = map[string]int32{ + "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, + } +) + +func (x VariableSetKind) Enum() *VariableSetKind { + p := new(VariableSetKind) + *p = x + return p +} + +func (x VariableSetKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VariableSetKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[22].Descriptor() +} + +func (VariableSetKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[22] +} + +func (x VariableSetKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VariableSetKind.Descriptor instead. +func (VariableSetKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{22} +} + +type ConstrType int32 + +const ( + ConstrType_CONSTR_TYPE_UNDEFINED ConstrType = 0 + ConstrType_CONSTR_NULL ConstrType = 1 + ConstrType_CONSTR_NOTNULL ConstrType = 2 + ConstrType_CONSTR_DEFAULT ConstrType = 3 + ConstrType_CONSTR_IDENTITY ConstrType = 4 + ConstrType_CONSTR_GENERATED ConstrType = 5 + ConstrType_CONSTR_CHECK ConstrType = 6 + ConstrType_CONSTR_PRIMARY ConstrType = 7 + ConstrType_CONSTR_UNIQUE ConstrType = 8 + ConstrType_CONSTR_EXCLUSION ConstrType = 9 + ConstrType_CONSTR_FOREIGN ConstrType = 10 + ConstrType_CONSTR_ATTR_DEFERRABLE ConstrType = 11 + ConstrType_CONSTR_ATTR_NOT_DEFERRABLE ConstrType = 12 + ConstrType_CONSTR_ATTR_DEFERRED ConstrType = 13 + ConstrType_CONSTR_ATTR_IMMEDIATE ConstrType = 14 + ConstrType_CONSTR_ATTR_ENFORCED ConstrType = 15 + ConstrType_CONSTR_ATTR_NOT_ENFORCED ConstrType = 16 +) + +// Enum value maps for ConstrType. +var ( + ConstrType_name = map[int32]string{ + 0: "CONSTR_TYPE_UNDEFINED", + 1: "CONSTR_NULL", + 2: "CONSTR_NOTNULL", + 3: "CONSTR_DEFAULT", + 4: "CONSTR_IDENTITY", + 5: "CONSTR_GENERATED", + 6: "CONSTR_CHECK", + 7: "CONSTR_PRIMARY", + 8: "CONSTR_UNIQUE", + 9: "CONSTR_EXCLUSION", + 10: "CONSTR_FOREIGN", + 11: "CONSTR_ATTR_DEFERRABLE", + 12: "CONSTR_ATTR_NOT_DEFERRABLE", + 13: "CONSTR_ATTR_DEFERRED", + 14: "CONSTR_ATTR_IMMEDIATE", + 15: "CONSTR_ATTR_ENFORCED", + 16: "CONSTR_ATTR_NOT_ENFORCED", + } + ConstrType_value = map[string]int32{ + "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, + "CONSTR_ATTR_ENFORCED": 15, + "CONSTR_ATTR_NOT_ENFORCED": 16, + } +) + +func (x ConstrType) Enum() *ConstrType { + p := new(ConstrType) + *p = x + return p +} + +func (x ConstrType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConstrType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[23].Descriptor() +} + +func (ConstrType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[23] +} + +func (x ConstrType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConstrType.Descriptor instead. +func (ConstrType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{23} +} + +type ImportForeignSchemaType int32 + +const ( + ImportForeignSchemaType_IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED ImportForeignSchemaType = 0 + ImportForeignSchemaType_FDW_IMPORT_SCHEMA_ALL ImportForeignSchemaType = 1 + ImportForeignSchemaType_FDW_IMPORT_SCHEMA_LIMIT_TO ImportForeignSchemaType = 2 + ImportForeignSchemaType_FDW_IMPORT_SCHEMA_EXCEPT ImportForeignSchemaType = 3 +) + +// Enum value maps for ImportForeignSchemaType. +var ( + ImportForeignSchemaType_name = map[int32]string{ + 0: "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED", + 1: "FDW_IMPORT_SCHEMA_ALL", + 2: "FDW_IMPORT_SCHEMA_LIMIT_TO", + 3: "FDW_IMPORT_SCHEMA_EXCEPT", + } + ImportForeignSchemaType_value = map[string]int32{ + "IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED": 0, + "FDW_IMPORT_SCHEMA_ALL": 1, + "FDW_IMPORT_SCHEMA_LIMIT_TO": 2, + "FDW_IMPORT_SCHEMA_EXCEPT": 3, + } +) + +func (x ImportForeignSchemaType) Enum() *ImportForeignSchemaType { + p := new(ImportForeignSchemaType) + *p = x + return p +} + +func (x ImportForeignSchemaType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ImportForeignSchemaType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[24].Descriptor() +} + +func (ImportForeignSchemaType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[24] +} + +func (x ImportForeignSchemaType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ImportForeignSchemaType.Descriptor instead. +func (ImportForeignSchemaType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{24} +} + +type RoleStmtType int32 + +const ( + RoleStmtType_ROLE_STMT_TYPE_UNDEFINED RoleStmtType = 0 + RoleStmtType_ROLESTMT_ROLE RoleStmtType = 1 + RoleStmtType_ROLESTMT_USER RoleStmtType = 2 + RoleStmtType_ROLESTMT_GROUP RoleStmtType = 3 +) + +// Enum value maps for RoleStmtType. +var ( + RoleStmtType_name = map[int32]string{ + 0: "ROLE_STMT_TYPE_UNDEFINED", + 1: "ROLESTMT_ROLE", + 2: "ROLESTMT_USER", + 3: "ROLESTMT_GROUP", + } + RoleStmtType_value = map[string]int32{ + "ROLE_STMT_TYPE_UNDEFINED": 0, + "ROLESTMT_ROLE": 1, + "ROLESTMT_USER": 2, + "ROLESTMT_GROUP": 3, + } +) + +func (x RoleStmtType) Enum() *RoleStmtType { + p := new(RoleStmtType) + *p = x + return p +} + +func (x RoleStmtType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RoleStmtType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[25].Descriptor() +} + +func (RoleStmtType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[25] +} + +func (x RoleStmtType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RoleStmtType.Descriptor instead. +func (RoleStmtType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{25} +} + +type FetchDirection int32 + +const ( + FetchDirection_FETCH_DIRECTION_UNDEFINED FetchDirection = 0 + FetchDirection_FETCH_FORWARD FetchDirection = 1 + FetchDirection_FETCH_BACKWARD FetchDirection = 2 + FetchDirection_FETCH_ABSOLUTE FetchDirection = 3 + FetchDirection_FETCH_RELATIVE FetchDirection = 4 +) + +// Enum value maps for FetchDirection. +var ( + FetchDirection_name = map[int32]string{ + 0: "FETCH_DIRECTION_UNDEFINED", + 1: "FETCH_FORWARD", + 2: "FETCH_BACKWARD", + 3: "FETCH_ABSOLUTE", + 4: "FETCH_RELATIVE", + } + FetchDirection_value = map[string]int32{ + "FETCH_DIRECTION_UNDEFINED": 0, + "FETCH_FORWARD": 1, + "FETCH_BACKWARD": 2, + "FETCH_ABSOLUTE": 3, + "FETCH_RELATIVE": 4, + } +) + +func (x FetchDirection) Enum() *FetchDirection { + p := new(FetchDirection) + *p = x + return p +} + +func (x FetchDirection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FetchDirection) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[26].Descriptor() +} + +func (FetchDirection) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[26] +} + +func (x FetchDirection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FetchDirection.Descriptor instead. +func (FetchDirection) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{26} +} + +type FunctionParameterMode int32 + +const ( + FunctionParameterMode_FUNCTION_PARAMETER_MODE_UNDEFINED FunctionParameterMode = 0 + FunctionParameterMode_FUNC_PARAM_IN FunctionParameterMode = 1 + FunctionParameterMode_FUNC_PARAM_OUT FunctionParameterMode = 2 + FunctionParameterMode_FUNC_PARAM_INOUT FunctionParameterMode = 3 + FunctionParameterMode_FUNC_PARAM_VARIADIC FunctionParameterMode = 4 + FunctionParameterMode_FUNC_PARAM_TABLE FunctionParameterMode = 5 + FunctionParameterMode_FUNC_PARAM_DEFAULT FunctionParameterMode = 6 +) + +// Enum value maps for FunctionParameterMode. +var ( + FunctionParameterMode_name = map[int32]string{ + 0: "FUNCTION_PARAMETER_MODE_UNDEFINED", + 1: "FUNC_PARAM_IN", + 2: "FUNC_PARAM_OUT", + 3: "FUNC_PARAM_INOUT", + 4: "FUNC_PARAM_VARIADIC", + 5: "FUNC_PARAM_TABLE", + 6: "FUNC_PARAM_DEFAULT", + } + FunctionParameterMode_value = map[string]int32{ + "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, + } +) + +func (x FunctionParameterMode) Enum() *FunctionParameterMode { + p := new(FunctionParameterMode) + *p = x + return p +} + +func (x FunctionParameterMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FunctionParameterMode) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[27].Descriptor() +} + +func (FunctionParameterMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[27] +} + +func (x FunctionParameterMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FunctionParameterMode.Descriptor instead. +func (FunctionParameterMode) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{27} +} + +type TransactionStmtKind int32 + +const ( + TransactionStmtKind_TRANSACTION_STMT_KIND_UNDEFINED TransactionStmtKind = 0 + TransactionStmtKind_TRANS_STMT_BEGIN TransactionStmtKind = 1 + TransactionStmtKind_TRANS_STMT_START TransactionStmtKind = 2 + TransactionStmtKind_TRANS_STMT_COMMIT TransactionStmtKind = 3 + TransactionStmtKind_TRANS_STMT_ROLLBACK TransactionStmtKind = 4 + TransactionStmtKind_TRANS_STMT_SAVEPOINT TransactionStmtKind = 5 + TransactionStmtKind_TRANS_STMT_RELEASE TransactionStmtKind = 6 + TransactionStmtKind_TRANS_STMT_ROLLBACK_TO TransactionStmtKind = 7 + TransactionStmtKind_TRANS_STMT_PREPARE TransactionStmtKind = 8 + TransactionStmtKind_TRANS_STMT_COMMIT_PREPARED TransactionStmtKind = 9 + TransactionStmtKind_TRANS_STMT_ROLLBACK_PREPARED TransactionStmtKind = 10 +) + +// Enum value maps for TransactionStmtKind. +var ( + TransactionStmtKind_name = map[int32]string{ + 0: "TRANSACTION_STMT_KIND_UNDEFINED", + 1: "TRANS_STMT_BEGIN", + 2: "TRANS_STMT_START", + 3: "TRANS_STMT_COMMIT", + 4: "TRANS_STMT_ROLLBACK", + 5: "TRANS_STMT_SAVEPOINT", + 6: "TRANS_STMT_RELEASE", + 7: "TRANS_STMT_ROLLBACK_TO", + 8: "TRANS_STMT_PREPARE", + 9: "TRANS_STMT_COMMIT_PREPARED", + 10: "TRANS_STMT_ROLLBACK_PREPARED", + } + TransactionStmtKind_value = map[string]int32{ + "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, + } +) + +func (x TransactionStmtKind) Enum() *TransactionStmtKind { + p := new(TransactionStmtKind) + *p = x + return p +} + +func (x TransactionStmtKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransactionStmtKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[28].Descriptor() +} + +func (TransactionStmtKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[28] +} + +func (x TransactionStmtKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransactionStmtKind.Descriptor instead. +func (TransactionStmtKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{28} +} + +type ViewCheckOption int32 + +const ( + ViewCheckOption_VIEW_CHECK_OPTION_UNDEFINED ViewCheckOption = 0 + ViewCheckOption_NO_CHECK_OPTION ViewCheckOption = 1 + ViewCheckOption_LOCAL_CHECK_OPTION ViewCheckOption = 2 + ViewCheckOption_CASCADED_CHECK_OPTION ViewCheckOption = 3 +) + +// Enum value maps for ViewCheckOption. +var ( + ViewCheckOption_name = map[int32]string{ + 0: "VIEW_CHECK_OPTION_UNDEFINED", + 1: "NO_CHECK_OPTION", + 2: "LOCAL_CHECK_OPTION", + 3: "CASCADED_CHECK_OPTION", + } + ViewCheckOption_value = map[string]int32{ + "VIEW_CHECK_OPTION_UNDEFINED": 0, + "NO_CHECK_OPTION": 1, + "LOCAL_CHECK_OPTION": 2, + "CASCADED_CHECK_OPTION": 3, + } +) + +func (x ViewCheckOption) Enum() *ViewCheckOption { + p := new(ViewCheckOption) + *p = x + return p +} + +func (x ViewCheckOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ViewCheckOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[29].Descriptor() +} + +func (ViewCheckOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[29] +} + +func (x ViewCheckOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ViewCheckOption.Descriptor instead. +func (ViewCheckOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{29} +} + +type DiscardMode int32 + +const ( + DiscardMode_DISCARD_MODE_UNDEFINED DiscardMode = 0 + DiscardMode_DISCARD_ALL DiscardMode = 1 + DiscardMode_DISCARD_PLANS DiscardMode = 2 + DiscardMode_DISCARD_SEQUENCES DiscardMode = 3 + DiscardMode_DISCARD_TEMP DiscardMode = 4 +) + +// Enum value maps for DiscardMode. +var ( + DiscardMode_name = map[int32]string{ + 0: "DISCARD_MODE_UNDEFINED", + 1: "DISCARD_ALL", + 2: "DISCARD_PLANS", + 3: "DISCARD_SEQUENCES", + 4: "DISCARD_TEMP", + } + DiscardMode_value = map[string]int32{ + "DISCARD_MODE_UNDEFINED": 0, + "DISCARD_ALL": 1, + "DISCARD_PLANS": 2, + "DISCARD_SEQUENCES": 3, + "DISCARD_TEMP": 4, + } +) + +func (x DiscardMode) Enum() *DiscardMode { + p := new(DiscardMode) + *p = x + return p +} + +func (x DiscardMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DiscardMode) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[30].Descriptor() +} + +func (DiscardMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[30] +} + +func (x DiscardMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DiscardMode.Descriptor instead. +func (DiscardMode) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{30} +} + +type ReindexObjectType int32 + +const ( + ReindexObjectType_REINDEX_OBJECT_TYPE_UNDEFINED ReindexObjectType = 0 + ReindexObjectType_REINDEX_OBJECT_INDEX ReindexObjectType = 1 + ReindexObjectType_REINDEX_OBJECT_TABLE ReindexObjectType = 2 + ReindexObjectType_REINDEX_OBJECT_SCHEMA ReindexObjectType = 3 + ReindexObjectType_REINDEX_OBJECT_SYSTEM ReindexObjectType = 4 + ReindexObjectType_REINDEX_OBJECT_DATABASE ReindexObjectType = 5 +) + +// Enum value maps for ReindexObjectType. +var ( + ReindexObjectType_name = map[int32]string{ + 0: "REINDEX_OBJECT_TYPE_UNDEFINED", + 1: "REINDEX_OBJECT_INDEX", + 2: "REINDEX_OBJECT_TABLE", + 3: "REINDEX_OBJECT_SCHEMA", + 4: "REINDEX_OBJECT_SYSTEM", + 5: "REINDEX_OBJECT_DATABASE", + } + ReindexObjectType_value = map[string]int32{ + "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, + } +) + +func (x ReindexObjectType) Enum() *ReindexObjectType { + p := new(ReindexObjectType) + *p = x + return p +} + +func (x ReindexObjectType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ReindexObjectType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[31].Descriptor() +} + +func (ReindexObjectType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[31] +} + +func (x ReindexObjectType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ReindexObjectType.Descriptor instead. +func (ReindexObjectType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{31} +} + +type AlterTSConfigType int32 + +const ( + AlterTSConfigType_ALTER_TSCONFIG_TYPE_UNDEFINED AlterTSConfigType = 0 + AlterTSConfigType_ALTER_TSCONFIG_ADD_MAPPING AlterTSConfigType = 1 + AlterTSConfigType_ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN AlterTSConfigType = 2 + AlterTSConfigType_ALTER_TSCONFIG_REPLACE_DICT AlterTSConfigType = 3 + AlterTSConfigType_ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN AlterTSConfigType = 4 + AlterTSConfigType_ALTER_TSCONFIG_DROP_MAPPING AlterTSConfigType = 5 +) + +// Enum value maps for AlterTSConfigType. +var ( + AlterTSConfigType_name = map[int32]string{ + 0: "ALTER_TSCONFIG_TYPE_UNDEFINED", + 1: "ALTER_TSCONFIG_ADD_MAPPING", + 2: "ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN", + 3: "ALTER_TSCONFIG_REPLACE_DICT", + 4: "ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN", + 5: "ALTER_TSCONFIG_DROP_MAPPING", + } + AlterTSConfigType_value = map[string]int32{ + "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, + } +) + +func (x AlterTSConfigType) Enum() *AlterTSConfigType { + p := new(AlterTSConfigType) + *p = x + return p +} + +func (x AlterTSConfigType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterTSConfigType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[32].Descriptor() +} + +func (AlterTSConfigType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[32] +} + +func (x AlterTSConfigType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterTSConfigType.Descriptor instead. +func (AlterTSConfigType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{32} +} + +type PublicationObjSpecType int32 + +const ( + PublicationObjSpecType_PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED PublicationObjSpecType = 0 + PublicationObjSpecType_PUBLICATIONOBJ_TABLE PublicationObjSpecType = 1 + PublicationObjSpecType_PUBLICATIONOBJ_TABLES_IN_SCHEMA PublicationObjSpecType = 2 + PublicationObjSpecType_PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA PublicationObjSpecType = 3 + PublicationObjSpecType_PUBLICATIONOBJ_CONTINUATION PublicationObjSpecType = 4 +) + +// Enum value maps for PublicationObjSpecType. +var ( + PublicationObjSpecType_name = map[int32]string{ + 0: "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED", + 1: "PUBLICATIONOBJ_TABLE", + 2: "PUBLICATIONOBJ_TABLES_IN_SCHEMA", + 3: "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA", + 4: "PUBLICATIONOBJ_CONTINUATION", + } + PublicationObjSpecType_value = map[string]int32{ + "PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED": 0, + "PUBLICATIONOBJ_TABLE": 1, + "PUBLICATIONOBJ_TABLES_IN_SCHEMA": 2, + "PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA": 3, + "PUBLICATIONOBJ_CONTINUATION": 4, + } +) + +func (x PublicationObjSpecType) Enum() *PublicationObjSpecType { + p := new(PublicationObjSpecType) + *p = x + return p +} + +func (x PublicationObjSpecType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PublicationObjSpecType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[33].Descriptor() +} + +func (PublicationObjSpecType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[33] +} + +func (x PublicationObjSpecType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PublicationObjSpecType.Descriptor instead. +func (PublicationObjSpecType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{33} +} + +type AlterPublicationAction int32 + +const ( + AlterPublicationAction_ALTER_PUBLICATION_ACTION_UNDEFINED AlterPublicationAction = 0 + AlterPublicationAction_AP_AddObjects AlterPublicationAction = 1 + AlterPublicationAction_AP_DropObjects AlterPublicationAction = 2 + AlterPublicationAction_AP_SetObjects AlterPublicationAction = 3 +) + +// Enum value maps for AlterPublicationAction. +var ( + AlterPublicationAction_name = map[int32]string{ + 0: "ALTER_PUBLICATION_ACTION_UNDEFINED", + 1: "AP_AddObjects", + 2: "AP_DropObjects", + 3: "AP_SetObjects", + } + AlterPublicationAction_value = map[string]int32{ + "ALTER_PUBLICATION_ACTION_UNDEFINED": 0, + "AP_AddObjects": 1, + "AP_DropObjects": 2, + "AP_SetObjects": 3, + } +) + +func (x AlterPublicationAction) Enum() *AlterPublicationAction { + p := new(AlterPublicationAction) + *p = x + return p +} + +func (x AlterPublicationAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterPublicationAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[34].Descriptor() +} + +func (AlterPublicationAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[34] +} + +func (x AlterPublicationAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterPublicationAction.Descriptor instead. +func (AlterPublicationAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{34} +} + +type AlterSubscriptionType int32 + +const ( + AlterSubscriptionType_ALTER_SUBSCRIPTION_TYPE_UNDEFINED AlterSubscriptionType = 0 + AlterSubscriptionType_ALTER_SUBSCRIPTION_OPTIONS AlterSubscriptionType = 1 + AlterSubscriptionType_ALTER_SUBSCRIPTION_CONNECTION AlterSubscriptionType = 2 + AlterSubscriptionType_ALTER_SUBSCRIPTION_SET_PUBLICATION AlterSubscriptionType = 3 + AlterSubscriptionType_ALTER_SUBSCRIPTION_ADD_PUBLICATION AlterSubscriptionType = 4 + AlterSubscriptionType_ALTER_SUBSCRIPTION_DROP_PUBLICATION AlterSubscriptionType = 5 + AlterSubscriptionType_ALTER_SUBSCRIPTION_REFRESH AlterSubscriptionType = 6 + AlterSubscriptionType_ALTER_SUBSCRIPTION_ENABLED AlterSubscriptionType = 7 + AlterSubscriptionType_ALTER_SUBSCRIPTION_SKIP AlterSubscriptionType = 8 +) + +// Enum value maps for AlterSubscriptionType. +var ( + AlterSubscriptionType_name = map[int32]string{ + 0: "ALTER_SUBSCRIPTION_TYPE_UNDEFINED", + 1: "ALTER_SUBSCRIPTION_OPTIONS", + 2: "ALTER_SUBSCRIPTION_CONNECTION", + 3: "ALTER_SUBSCRIPTION_SET_PUBLICATION", + 4: "ALTER_SUBSCRIPTION_ADD_PUBLICATION", + 5: "ALTER_SUBSCRIPTION_DROP_PUBLICATION", + 6: "ALTER_SUBSCRIPTION_REFRESH", + 7: "ALTER_SUBSCRIPTION_ENABLED", + 8: "ALTER_SUBSCRIPTION_SKIP", + } + AlterSubscriptionType_value = map[string]int32{ + "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, + } +) + +func (x AlterSubscriptionType) Enum() *AlterSubscriptionType { + p := new(AlterSubscriptionType) + *p = x + return p +} + +func (x AlterSubscriptionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AlterSubscriptionType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[35].Descriptor() +} + +func (AlterSubscriptionType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[35] +} + +func (x AlterSubscriptionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AlterSubscriptionType.Descriptor instead. +func (AlterSubscriptionType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{35} +} + +type OverridingKind int32 + +const ( + OverridingKind_OVERRIDING_KIND_UNDEFINED OverridingKind = 0 + OverridingKind_OVERRIDING_NOT_SET OverridingKind = 1 + OverridingKind_OVERRIDING_USER_VALUE OverridingKind = 2 + OverridingKind_OVERRIDING_SYSTEM_VALUE OverridingKind = 3 +) + +// Enum value maps for OverridingKind. +var ( + OverridingKind_name = map[int32]string{ + 0: "OVERRIDING_KIND_UNDEFINED", + 1: "OVERRIDING_NOT_SET", + 2: "OVERRIDING_USER_VALUE", + 3: "OVERRIDING_SYSTEM_VALUE", + } + OverridingKind_value = map[string]int32{ + "OVERRIDING_KIND_UNDEFINED": 0, + "OVERRIDING_NOT_SET": 1, + "OVERRIDING_USER_VALUE": 2, + "OVERRIDING_SYSTEM_VALUE": 3, + } +) + +func (x OverridingKind) Enum() *OverridingKind { + p := new(OverridingKind) + *p = x + return p +} + +func (x OverridingKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OverridingKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[36].Descriptor() +} + +func (OverridingKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[36] +} + +func (x OverridingKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OverridingKind.Descriptor instead. +func (OverridingKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{36} +} + +type OnCommitAction int32 + +const ( + OnCommitAction_ON_COMMIT_ACTION_UNDEFINED OnCommitAction = 0 + OnCommitAction_ONCOMMIT_NOOP OnCommitAction = 1 + OnCommitAction_ONCOMMIT_PRESERVE_ROWS OnCommitAction = 2 + OnCommitAction_ONCOMMIT_DELETE_ROWS OnCommitAction = 3 + OnCommitAction_ONCOMMIT_DROP OnCommitAction = 4 +) + +// Enum value maps for OnCommitAction. +var ( + OnCommitAction_name = map[int32]string{ + 0: "ON_COMMIT_ACTION_UNDEFINED", + 1: "ONCOMMIT_NOOP", + 2: "ONCOMMIT_PRESERVE_ROWS", + 3: "ONCOMMIT_DELETE_ROWS", + 4: "ONCOMMIT_DROP", + } + OnCommitAction_value = map[string]int32{ + "ON_COMMIT_ACTION_UNDEFINED": 0, + "ONCOMMIT_NOOP": 1, + "ONCOMMIT_PRESERVE_ROWS": 2, + "ONCOMMIT_DELETE_ROWS": 3, + "ONCOMMIT_DROP": 4, + } +) + +func (x OnCommitAction) Enum() *OnCommitAction { + p := new(OnCommitAction) + *p = x + return p +} + +func (x OnCommitAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OnCommitAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[37].Descriptor() +} + +func (OnCommitAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[37] +} + +func (x OnCommitAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OnCommitAction.Descriptor instead. +func (OnCommitAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{37} +} + +type TableFuncType int32 + +const ( + TableFuncType_TABLE_FUNC_TYPE_UNDEFINED TableFuncType = 0 + TableFuncType_TFT_XMLTABLE TableFuncType = 1 + TableFuncType_TFT_JSON_TABLE TableFuncType = 2 +) + +// Enum value maps for TableFuncType. +var ( + TableFuncType_name = map[int32]string{ + 0: "TABLE_FUNC_TYPE_UNDEFINED", + 1: "TFT_XMLTABLE", + 2: "TFT_JSON_TABLE", + } + TableFuncType_value = map[string]int32{ + "TABLE_FUNC_TYPE_UNDEFINED": 0, + "TFT_XMLTABLE": 1, + "TFT_JSON_TABLE": 2, + } +) + +func (x TableFuncType) Enum() *TableFuncType { + p := new(TableFuncType) + *p = x + return p +} + +func (x TableFuncType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TableFuncType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[38].Descriptor() +} + +func (TableFuncType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[38] +} + +func (x TableFuncType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TableFuncType.Descriptor instead. +func (TableFuncType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{38} +} + +type VarReturningType int32 + +const ( + VarReturningType_VAR_RETURNING_TYPE_UNDEFINED VarReturningType = 0 + VarReturningType_VAR_RETURNING_DEFAULT VarReturningType = 1 + VarReturningType_VAR_RETURNING_OLD VarReturningType = 2 + VarReturningType_VAR_RETURNING_NEW VarReturningType = 3 +) + +// Enum value maps for VarReturningType. +var ( + VarReturningType_name = map[int32]string{ + 0: "VAR_RETURNING_TYPE_UNDEFINED", + 1: "VAR_RETURNING_DEFAULT", + 2: "VAR_RETURNING_OLD", + 3: "VAR_RETURNING_NEW", + } + VarReturningType_value = map[string]int32{ + "VAR_RETURNING_TYPE_UNDEFINED": 0, + "VAR_RETURNING_DEFAULT": 1, + "VAR_RETURNING_OLD": 2, + "VAR_RETURNING_NEW": 3, + } +) + +func (x VarReturningType) Enum() *VarReturningType { + p := new(VarReturningType) + *p = x + return p +} + +func (x VarReturningType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VarReturningType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[39].Descriptor() +} + +func (VarReturningType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[39] +} + +func (x VarReturningType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VarReturningType.Descriptor instead. +func (VarReturningType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{39} +} + +type ParamKind int32 + +const ( + ParamKind_PARAM_KIND_UNDEFINED ParamKind = 0 + ParamKind_PARAM_EXTERN ParamKind = 1 + ParamKind_PARAM_EXEC ParamKind = 2 + ParamKind_PARAM_SUBLINK ParamKind = 3 + ParamKind_PARAM_MULTIEXPR ParamKind = 4 +) + +// Enum value maps for ParamKind. +var ( + ParamKind_name = map[int32]string{ + 0: "PARAM_KIND_UNDEFINED", + 1: "PARAM_EXTERN", + 2: "PARAM_EXEC", + 3: "PARAM_SUBLINK", + 4: "PARAM_MULTIEXPR", + } + ParamKind_value = map[string]int32{ + "PARAM_KIND_UNDEFINED": 0, + "PARAM_EXTERN": 1, + "PARAM_EXEC": 2, + "PARAM_SUBLINK": 3, + "PARAM_MULTIEXPR": 4, + } +) + +func (x ParamKind) Enum() *ParamKind { + p := new(ParamKind) + *p = x + return p +} + +func (x ParamKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ParamKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[40].Descriptor() +} + +func (ParamKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[40] +} + +func (x ParamKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ParamKind.Descriptor instead. +func (ParamKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{40} +} + +type CoercionContext int32 + +const ( + CoercionContext_COERCION_CONTEXT_UNDEFINED CoercionContext = 0 + CoercionContext_COERCION_IMPLICIT CoercionContext = 1 + CoercionContext_COERCION_ASSIGNMENT CoercionContext = 2 + CoercionContext_COERCION_PLPGSQL CoercionContext = 3 + CoercionContext_COERCION_EXPLICIT CoercionContext = 4 +) + +// Enum value maps for CoercionContext. +var ( + CoercionContext_name = map[int32]string{ + 0: "COERCION_CONTEXT_UNDEFINED", + 1: "COERCION_IMPLICIT", + 2: "COERCION_ASSIGNMENT", + 3: "COERCION_PLPGSQL", + 4: "COERCION_EXPLICIT", + } + CoercionContext_value = map[string]int32{ + "COERCION_CONTEXT_UNDEFINED": 0, + "COERCION_IMPLICIT": 1, + "COERCION_ASSIGNMENT": 2, + "COERCION_PLPGSQL": 3, + "COERCION_EXPLICIT": 4, + } +) + +func (x CoercionContext) Enum() *CoercionContext { + p := new(CoercionContext) + *p = x + return p +} + +func (x CoercionContext) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CoercionContext) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[41].Descriptor() +} + +func (CoercionContext) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[41] +} + +func (x CoercionContext) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CoercionContext.Descriptor instead. +func (CoercionContext) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{41} +} + +type CoercionForm int32 + +const ( + CoercionForm_COERCION_FORM_UNDEFINED CoercionForm = 0 + CoercionForm_COERCE_EXPLICIT_CALL CoercionForm = 1 + CoercionForm_COERCE_EXPLICIT_CAST CoercionForm = 2 + CoercionForm_COERCE_IMPLICIT_CAST CoercionForm = 3 + CoercionForm_COERCE_SQL_SYNTAX CoercionForm = 4 +) + +// Enum value maps for CoercionForm. +var ( + CoercionForm_name = map[int32]string{ + 0: "COERCION_FORM_UNDEFINED", + 1: "COERCE_EXPLICIT_CALL", + 2: "COERCE_EXPLICIT_CAST", + 3: "COERCE_IMPLICIT_CAST", + 4: "COERCE_SQL_SYNTAX", + } + CoercionForm_value = map[string]int32{ + "COERCION_FORM_UNDEFINED": 0, + "COERCE_EXPLICIT_CALL": 1, + "COERCE_EXPLICIT_CAST": 2, + "COERCE_IMPLICIT_CAST": 3, + "COERCE_SQL_SYNTAX": 4, + } +) + +func (x CoercionForm) Enum() *CoercionForm { + p := new(CoercionForm) + *p = x + return p +} + +func (x CoercionForm) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CoercionForm) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[42].Descriptor() +} + +func (CoercionForm) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[42] +} + +func (x CoercionForm) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CoercionForm.Descriptor instead. +func (CoercionForm) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{42} +} + +type BoolExprType int32 + +const ( + BoolExprType_BOOL_EXPR_TYPE_UNDEFINED BoolExprType = 0 + BoolExprType_AND_EXPR BoolExprType = 1 + BoolExprType_OR_EXPR BoolExprType = 2 + BoolExprType_NOT_EXPR BoolExprType = 3 +) + +// Enum value maps for BoolExprType. +var ( + BoolExprType_name = map[int32]string{ + 0: "BOOL_EXPR_TYPE_UNDEFINED", + 1: "AND_EXPR", + 2: "OR_EXPR", + 3: "NOT_EXPR", + } + BoolExprType_value = map[string]int32{ + "BOOL_EXPR_TYPE_UNDEFINED": 0, + "AND_EXPR": 1, + "OR_EXPR": 2, + "NOT_EXPR": 3, + } +) + +func (x BoolExprType) Enum() *BoolExprType { + p := new(BoolExprType) + *p = x + return p +} + +func (x BoolExprType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BoolExprType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[43].Descriptor() +} + +func (BoolExprType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[43] +} + +func (x BoolExprType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BoolExprType.Descriptor instead. +func (BoolExprType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{43} +} + +type SubLinkType int32 + +const ( + SubLinkType_SUB_LINK_TYPE_UNDEFINED SubLinkType = 0 + SubLinkType_EXISTS_SUBLINK SubLinkType = 1 + SubLinkType_ALL_SUBLINK SubLinkType = 2 + SubLinkType_ANY_SUBLINK SubLinkType = 3 + SubLinkType_ROWCOMPARE_SUBLINK SubLinkType = 4 + SubLinkType_EXPR_SUBLINK SubLinkType = 5 + SubLinkType_MULTIEXPR_SUBLINK SubLinkType = 6 + SubLinkType_ARRAY_SUBLINK SubLinkType = 7 + SubLinkType_CTE_SUBLINK SubLinkType = 8 +) + +// Enum value maps for SubLinkType. +var ( + SubLinkType_name = map[int32]string{ + 0: "SUB_LINK_TYPE_UNDEFINED", + 1: "EXISTS_SUBLINK", + 2: "ALL_SUBLINK", + 3: "ANY_SUBLINK", + 4: "ROWCOMPARE_SUBLINK", + 5: "EXPR_SUBLINK", + 6: "MULTIEXPR_SUBLINK", + 7: "ARRAY_SUBLINK", + 8: "CTE_SUBLINK", + } + SubLinkType_value = map[string]int32{ + "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, + } +) + +func (x SubLinkType) Enum() *SubLinkType { + p := new(SubLinkType) + *p = x + return p +} + +func (x SubLinkType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SubLinkType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[44].Descriptor() +} + +func (SubLinkType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[44] +} + +func (x SubLinkType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SubLinkType.Descriptor instead. +func (SubLinkType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{44} +} + +type MinMaxOp int32 + +const ( + MinMaxOp_MIN_MAX_OP_UNDEFINED MinMaxOp = 0 + MinMaxOp_IS_GREATEST MinMaxOp = 1 + MinMaxOp_IS_LEAST MinMaxOp = 2 +) + +// Enum value maps for MinMaxOp. +var ( + MinMaxOp_name = map[int32]string{ + 0: "MIN_MAX_OP_UNDEFINED", + 1: "IS_GREATEST", + 2: "IS_LEAST", + } + MinMaxOp_value = map[string]int32{ + "MIN_MAX_OP_UNDEFINED": 0, + "IS_GREATEST": 1, + "IS_LEAST": 2, + } +) + +func (x MinMaxOp) Enum() *MinMaxOp { + p := new(MinMaxOp) + *p = x + return p +} + +func (x MinMaxOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MinMaxOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[45].Descriptor() +} + +func (MinMaxOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[45] +} + +func (x MinMaxOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MinMaxOp.Descriptor instead. +func (MinMaxOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{45} +} + +type SQLValueFunctionOp int32 + +const ( + SQLValueFunctionOp_SQLVALUE_FUNCTION_OP_UNDEFINED SQLValueFunctionOp = 0 + SQLValueFunctionOp_SVFOP_CURRENT_DATE SQLValueFunctionOp = 1 + SQLValueFunctionOp_SVFOP_CURRENT_TIME SQLValueFunctionOp = 2 + SQLValueFunctionOp_SVFOP_CURRENT_TIME_N SQLValueFunctionOp = 3 + SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP SQLValueFunctionOp = 4 + SQLValueFunctionOp_SVFOP_CURRENT_TIMESTAMP_N SQLValueFunctionOp = 5 + SQLValueFunctionOp_SVFOP_LOCALTIME SQLValueFunctionOp = 6 + SQLValueFunctionOp_SVFOP_LOCALTIME_N SQLValueFunctionOp = 7 + SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP SQLValueFunctionOp = 8 + SQLValueFunctionOp_SVFOP_LOCALTIMESTAMP_N SQLValueFunctionOp = 9 + SQLValueFunctionOp_SVFOP_CURRENT_ROLE SQLValueFunctionOp = 10 + SQLValueFunctionOp_SVFOP_CURRENT_USER SQLValueFunctionOp = 11 + SQLValueFunctionOp_SVFOP_USER SQLValueFunctionOp = 12 + SQLValueFunctionOp_SVFOP_SESSION_USER SQLValueFunctionOp = 13 + SQLValueFunctionOp_SVFOP_CURRENT_CATALOG SQLValueFunctionOp = 14 + SQLValueFunctionOp_SVFOP_CURRENT_SCHEMA SQLValueFunctionOp = 15 +) + +// Enum value maps for SQLValueFunctionOp. +var ( + SQLValueFunctionOp_name = map[int32]string{ + 0: "SQLVALUE_FUNCTION_OP_UNDEFINED", + 1: "SVFOP_CURRENT_DATE", + 2: "SVFOP_CURRENT_TIME", + 3: "SVFOP_CURRENT_TIME_N", + 4: "SVFOP_CURRENT_TIMESTAMP", + 5: "SVFOP_CURRENT_TIMESTAMP_N", + 6: "SVFOP_LOCALTIME", + 7: "SVFOP_LOCALTIME_N", + 8: "SVFOP_LOCALTIMESTAMP", + 9: "SVFOP_LOCALTIMESTAMP_N", + 10: "SVFOP_CURRENT_ROLE", + 11: "SVFOP_CURRENT_USER", + 12: "SVFOP_USER", + 13: "SVFOP_SESSION_USER", + 14: "SVFOP_CURRENT_CATALOG", + 15: "SVFOP_CURRENT_SCHEMA", + } + SQLValueFunctionOp_value = map[string]int32{ + "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, + } +) + +func (x SQLValueFunctionOp) Enum() *SQLValueFunctionOp { + p := new(SQLValueFunctionOp) + *p = x + return p +} + +func (x SQLValueFunctionOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SQLValueFunctionOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[46].Descriptor() +} + +func (SQLValueFunctionOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[46] +} + +func (x SQLValueFunctionOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SQLValueFunctionOp.Descriptor instead. +func (SQLValueFunctionOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{46} +} + +type XmlExprOp int32 + +const ( + XmlExprOp_XML_EXPR_OP_UNDEFINED XmlExprOp = 0 + XmlExprOp_IS_XMLCONCAT XmlExprOp = 1 + XmlExprOp_IS_XMLELEMENT XmlExprOp = 2 + XmlExprOp_IS_XMLFOREST XmlExprOp = 3 + XmlExprOp_IS_XMLPARSE XmlExprOp = 4 + XmlExprOp_IS_XMLPI XmlExprOp = 5 + XmlExprOp_IS_XMLROOT XmlExprOp = 6 + XmlExprOp_IS_XMLSERIALIZE XmlExprOp = 7 + XmlExprOp_IS_DOCUMENT XmlExprOp = 8 +) + +// Enum value maps for XmlExprOp. +var ( + XmlExprOp_name = map[int32]string{ + 0: "XML_EXPR_OP_UNDEFINED", + 1: "IS_XMLCONCAT", + 2: "IS_XMLELEMENT", + 3: "IS_XMLFOREST", + 4: "IS_XMLPARSE", + 5: "IS_XMLPI", + 6: "IS_XMLROOT", + 7: "IS_XMLSERIALIZE", + 8: "IS_DOCUMENT", + } + XmlExprOp_value = map[string]int32{ + "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, + } +) + +func (x XmlExprOp) Enum() *XmlExprOp { + p := new(XmlExprOp) + *p = x + return p +} + +func (x XmlExprOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (XmlExprOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[47].Descriptor() +} + +func (XmlExprOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[47] +} + +func (x XmlExprOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use XmlExprOp.Descriptor instead. +func (XmlExprOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{47} +} + +type XmlOptionType int32 + +const ( + XmlOptionType_XML_OPTION_TYPE_UNDEFINED XmlOptionType = 0 + XmlOptionType_XMLOPTION_DOCUMENT XmlOptionType = 1 + XmlOptionType_XMLOPTION_CONTENT XmlOptionType = 2 +) + +// Enum value maps for XmlOptionType. +var ( + XmlOptionType_name = map[int32]string{ + 0: "XML_OPTION_TYPE_UNDEFINED", + 1: "XMLOPTION_DOCUMENT", + 2: "XMLOPTION_CONTENT", + } + XmlOptionType_value = map[string]int32{ + "XML_OPTION_TYPE_UNDEFINED": 0, + "XMLOPTION_DOCUMENT": 1, + "XMLOPTION_CONTENT": 2, + } +) + +func (x XmlOptionType) Enum() *XmlOptionType { + p := new(XmlOptionType) + *p = x + return p +} + +func (x XmlOptionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (XmlOptionType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[48].Descriptor() +} + +func (XmlOptionType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[48] +} + +func (x XmlOptionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use XmlOptionType.Descriptor instead. +func (XmlOptionType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{48} +} + +type JsonEncoding int32 + +const ( + JsonEncoding_JSON_ENCODING_UNDEFINED JsonEncoding = 0 + JsonEncoding_JS_ENC_DEFAULT JsonEncoding = 1 + JsonEncoding_JS_ENC_UTF8 JsonEncoding = 2 + JsonEncoding_JS_ENC_UTF16 JsonEncoding = 3 + JsonEncoding_JS_ENC_UTF32 JsonEncoding = 4 +) + +// Enum value maps for JsonEncoding. +var ( + JsonEncoding_name = map[int32]string{ + 0: "JSON_ENCODING_UNDEFINED", + 1: "JS_ENC_DEFAULT", + 2: "JS_ENC_UTF8", + 3: "JS_ENC_UTF16", + 4: "JS_ENC_UTF32", + } + JsonEncoding_value = map[string]int32{ + "JSON_ENCODING_UNDEFINED": 0, + "JS_ENC_DEFAULT": 1, + "JS_ENC_UTF8": 2, + "JS_ENC_UTF16": 3, + "JS_ENC_UTF32": 4, + } +) + +func (x JsonEncoding) Enum() *JsonEncoding { + p := new(JsonEncoding) + *p = x + return p +} + +func (x JsonEncoding) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonEncoding) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[49].Descriptor() +} + +func (JsonEncoding) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[49] +} + +func (x JsonEncoding) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonEncoding.Descriptor instead. +func (JsonEncoding) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{49} +} + +type JsonFormatType int32 + +const ( + JsonFormatType_JSON_FORMAT_TYPE_UNDEFINED JsonFormatType = 0 + JsonFormatType_JS_FORMAT_DEFAULT JsonFormatType = 1 + JsonFormatType_JS_FORMAT_JSON JsonFormatType = 2 + JsonFormatType_JS_FORMAT_JSONB JsonFormatType = 3 +) + +// Enum value maps for JsonFormatType. +var ( + JsonFormatType_name = map[int32]string{ + 0: "JSON_FORMAT_TYPE_UNDEFINED", + 1: "JS_FORMAT_DEFAULT", + 2: "JS_FORMAT_JSON", + 3: "JS_FORMAT_JSONB", + } + JsonFormatType_value = map[string]int32{ + "JSON_FORMAT_TYPE_UNDEFINED": 0, + "JS_FORMAT_DEFAULT": 1, + "JS_FORMAT_JSON": 2, + "JS_FORMAT_JSONB": 3, + } +) + +func (x JsonFormatType) Enum() *JsonFormatType { + p := new(JsonFormatType) + *p = x + return p +} + +func (x JsonFormatType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonFormatType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[50].Descriptor() +} + +func (JsonFormatType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[50] +} + +func (x JsonFormatType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonFormatType.Descriptor instead. +func (JsonFormatType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{50} +} + +type JsonConstructorType int32 + +const ( + JsonConstructorType_JSON_CONSTRUCTOR_TYPE_UNDEFINED JsonConstructorType = 0 + JsonConstructorType_JSCTOR_JSON_OBJECT JsonConstructorType = 1 + JsonConstructorType_JSCTOR_JSON_ARRAY JsonConstructorType = 2 + JsonConstructorType_JSCTOR_JSON_OBJECTAGG JsonConstructorType = 3 + JsonConstructorType_JSCTOR_JSON_ARRAYAGG JsonConstructorType = 4 + JsonConstructorType_JSCTOR_JSON_PARSE JsonConstructorType = 5 + JsonConstructorType_JSCTOR_JSON_SCALAR JsonConstructorType = 6 + JsonConstructorType_JSCTOR_JSON_SERIALIZE JsonConstructorType = 7 +) + +// Enum value maps for JsonConstructorType. +var ( + JsonConstructorType_name = map[int32]string{ + 0: "JSON_CONSTRUCTOR_TYPE_UNDEFINED", + 1: "JSCTOR_JSON_OBJECT", + 2: "JSCTOR_JSON_ARRAY", + 3: "JSCTOR_JSON_OBJECTAGG", + 4: "JSCTOR_JSON_ARRAYAGG", + 5: "JSCTOR_JSON_PARSE", + 6: "JSCTOR_JSON_SCALAR", + 7: "JSCTOR_JSON_SERIALIZE", + } + JsonConstructorType_value = map[string]int32{ + "JSON_CONSTRUCTOR_TYPE_UNDEFINED": 0, + "JSCTOR_JSON_OBJECT": 1, + "JSCTOR_JSON_ARRAY": 2, + "JSCTOR_JSON_OBJECTAGG": 3, + "JSCTOR_JSON_ARRAYAGG": 4, + "JSCTOR_JSON_PARSE": 5, + "JSCTOR_JSON_SCALAR": 6, + "JSCTOR_JSON_SERIALIZE": 7, + } +) + +func (x JsonConstructorType) Enum() *JsonConstructorType { + p := new(JsonConstructorType) + *p = x + return p +} + +func (x JsonConstructorType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonConstructorType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[51].Descriptor() +} + +func (JsonConstructorType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[51] +} + +func (x JsonConstructorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonConstructorType.Descriptor instead. +func (JsonConstructorType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{51} +} + +type JsonValueType int32 + +const ( + JsonValueType_JSON_VALUE_TYPE_UNDEFINED JsonValueType = 0 + JsonValueType_JS_TYPE_ANY JsonValueType = 1 + JsonValueType_JS_TYPE_OBJECT JsonValueType = 2 + JsonValueType_JS_TYPE_ARRAY JsonValueType = 3 + JsonValueType_JS_TYPE_SCALAR JsonValueType = 4 +) + +// Enum value maps for JsonValueType. +var ( + JsonValueType_name = map[int32]string{ + 0: "JSON_VALUE_TYPE_UNDEFINED", + 1: "JS_TYPE_ANY", + 2: "JS_TYPE_OBJECT", + 3: "JS_TYPE_ARRAY", + 4: "JS_TYPE_SCALAR", + } + JsonValueType_value = map[string]int32{ + "JSON_VALUE_TYPE_UNDEFINED": 0, + "JS_TYPE_ANY": 1, + "JS_TYPE_OBJECT": 2, + "JS_TYPE_ARRAY": 3, + "JS_TYPE_SCALAR": 4, + } +) + +func (x JsonValueType) Enum() *JsonValueType { + p := new(JsonValueType) + *p = x + return p +} + +func (x JsonValueType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonValueType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[52].Descriptor() +} + +func (JsonValueType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[52] +} + +func (x JsonValueType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonValueType.Descriptor instead. +func (JsonValueType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{52} +} + +type JsonWrapper int32 + +const ( + JsonWrapper_JSON_WRAPPER_UNDEFINED JsonWrapper = 0 + JsonWrapper_JSW_UNSPEC JsonWrapper = 1 + JsonWrapper_JSW_NONE JsonWrapper = 2 + JsonWrapper_JSW_CONDITIONAL JsonWrapper = 3 + JsonWrapper_JSW_UNCONDITIONAL JsonWrapper = 4 +) + +// Enum value maps for JsonWrapper. +var ( + JsonWrapper_name = map[int32]string{ + 0: "JSON_WRAPPER_UNDEFINED", + 1: "JSW_UNSPEC", + 2: "JSW_NONE", + 3: "JSW_CONDITIONAL", + 4: "JSW_UNCONDITIONAL", + } + JsonWrapper_value = map[string]int32{ + "JSON_WRAPPER_UNDEFINED": 0, + "JSW_UNSPEC": 1, + "JSW_NONE": 2, + "JSW_CONDITIONAL": 3, + "JSW_UNCONDITIONAL": 4, + } +) + +func (x JsonWrapper) Enum() *JsonWrapper { + p := new(JsonWrapper) + *p = x + return p +} + +func (x JsonWrapper) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonWrapper) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[53].Descriptor() +} + +func (JsonWrapper) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[53] +} + +func (x JsonWrapper) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonWrapper.Descriptor instead. +func (JsonWrapper) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{53} +} + +type JsonBehaviorType int32 + +const ( + JsonBehaviorType_JSON_BEHAVIOR_TYPE_UNDEFINED JsonBehaviorType = 0 + JsonBehaviorType_JSON_BEHAVIOR_NULL JsonBehaviorType = 1 + JsonBehaviorType_JSON_BEHAVIOR_ERROR JsonBehaviorType = 2 + JsonBehaviorType_JSON_BEHAVIOR_EMPTY JsonBehaviorType = 3 + JsonBehaviorType_JSON_BEHAVIOR_TRUE JsonBehaviorType = 4 + JsonBehaviorType_JSON_BEHAVIOR_FALSE JsonBehaviorType = 5 + JsonBehaviorType_JSON_BEHAVIOR_UNKNOWN JsonBehaviorType = 6 + JsonBehaviorType_JSON_BEHAVIOR_EMPTY_ARRAY JsonBehaviorType = 7 + JsonBehaviorType_JSON_BEHAVIOR_EMPTY_OBJECT JsonBehaviorType = 8 + JsonBehaviorType_JSON_BEHAVIOR_DEFAULT JsonBehaviorType = 9 +) + +// Enum value maps for JsonBehaviorType. +var ( + JsonBehaviorType_name = map[int32]string{ + 0: "JSON_BEHAVIOR_TYPE_UNDEFINED", + 1: "JSON_BEHAVIOR_NULL", + 2: "JSON_BEHAVIOR_ERROR", + 3: "JSON_BEHAVIOR_EMPTY", + 4: "JSON_BEHAVIOR_TRUE", + 5: "JSON_BEHAVIOR_FALSE", + 6: "JSON_BEHAVIOR_UNKNOWN", + 7: "JSON_BEHAVIOR_EMPTY_ARRAY", + 8: "JSON_BEHAVIOR_EMPTY_OBJECT", + 9: "JSON_BEHAVIOR_DEFAULT", + } + JsonBehaviorType_value = map[string]int32{ + "JSON_BEHAVIOR_TYPE_UNDEFINED": 0, + "JSON_BEHAVIOR_NULL": 1, + "JSON_BEHAVIOR_ERROR": 2, + "JSON_BEHAVIOR_EMPTY": 3, + "JSON_BEHAVIOR_TRUE": 4, + "JSON_BEHAVIOR_FALSE": 5, + "JSON_BEHAVIOR_UNKNOWN": 6, + "JSON_BEHAVIOR_EMPTY_ARRAY": 7, + "JSON_BEHAVIOR_EMPTY_OBJECT": 8, + "JSON_BEHAVIOR_DEFAULT": 9, + } +) + +func (x JsonBehaviorType) Enum() *JsonBehaviorType { + p := new(JsonBehaviorType) + *p = x + return p +} + +func (x JsonBehaviorType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonBehaviorType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[54].Descriptor() +} + +func (JsonBehaviorType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[54] +} + +func (x JsonBehaviorType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonBehaviorType.Descriptor instead. +func (JsonBehaviorType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{54} +} + +type JsonExprOp int32 + +const ( + JsonExprOp_JSON_EXPR_OP_UNDEFINED JsonExprOp = 0 + JsonExprOp_JSON_EXISTS_OP JsonExprOp = 1 + JsonExprOp_JSON_QUERY_OP JsonExprOp = 2 + JsonExprOp_JSON_VALUE_OP JsonExprOp = 3 + JsonExprOp_JSON_TABLE_OP JsonExprOp = 4 +) + +// Enum value maps for JsonExprOp. +var ( + JsonExprOp_name = map[int32]string{ + 0: "JSON_EXPR_OP_UNDEFINED", + 1: "JSON_EXISTS_OP", + 2: "JSON_QUERY_OP", + 3: "JSON_VALUE_OP", + 4: "JSON_TABLE_OP", + } + JsonExprOp_value = map[string]int32{ + "JSON_EXPR_OP_UNDEFINED": 0, + "JSON_EXISTS_OP": 1, + "JSON_QUERY_OP": 2, + "JSON_VALUE_OP": 3, + "JSON_TABLE_OP": 4, + } +) + +func (x JsonExprOp) Enum() *JsonExprOp { + p := new(JsonExprOp) + *p = x + return p +} + +func (x JsonExprOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JsonExprOp) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[55].Descriptor() +} + +func (JsonExprOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[55] +} + +func (x JsonExprOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JsonExprOp.Descriptor instead. +func (JsonExprOp) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{55} +} + +type NullTestType int32 + +const ( + NullTestType_NULL_TEST_TYPE_UNDEFINED NullTestType = 0 + NullTestType_IS_NULL NullTestType = 1 + NullTestType_IS_NOT_NULL NullTestType = 2 +) + +// Enum value maps for NullTestType. +var ( + NullTestType_name = map[int32]string{ + 0: "NULL_TEST_TYPE_UNDEFINED", + 1: "IS_NULL", + 2: "IS_NOT_NULL", + } + NullTestType_value = map[string]int32{ + "NULL_TEST_TYPE_UNDEFINED": 0, + "IS_NULL": 1, + "IS_NOT_NULL": 2, + } +) + +func (x NullTestType) Enum() *NullTestType { + p := new(NullTestType) + *p = x + return p +} + +func (x NullTestType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NullTestType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[56].Descriptor() +} + +func (NullTestType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[56] +} + +func (x NullTestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NullTestType.Descriptor instead. +func (NullTestType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{56} +} + +type BoolTestType int32 + +const ( + BoolTestType_BOOL_TEST_TYPE_UNDEFINED BoolTestType = 0 + BoolTestType_IS_TRUE BoolTestType = 1 + BoolTestType_IS_NOT_TRUE BoolTestType = 2 + BoolTestType_IS_FALSE BoolTestType = 3 + BoolTestType_IS_NOT_FALSE BoolTestType = 4 + BoolTestType_IS_UNKNOWN BoolTestType = 5 + BoolTestType_IS_NOT_UNKNOWN BoolTestType = 6 +) + +// Enum value maps for BoolTestType. +var ( + BoolTestType_name = map[int32]string{ + 0: "BOOL_TEST_TYPE_UNDEFINED", + 1: "IS_TRUE", + 2: "IS_NOT_TRUE", + 3: "IS_FALSE", + 4: "IS_NOT_FALSE", + 5: "IS_UNKNOWN", + 6: "IS_NOT_UNKNOWN", + } + BoolTestType_value = map[string]int32{ + "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, + } +) + +func (x BoolTestType) Enum() *BoolTestType { + p := new(BoolTestType) + *p = x + return p +} + +func (x BoolTestType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BoolTestType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[57].Descriptor() +} + +func (BoolTestType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[57] +} + +func (x BoolTestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BoolTestType.Descriptor instead. +func (BoolTestType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{57} +} + +type MergeMatchKind int32 + +const ( + MergeMatchKind_MERGE_MATCH_KIND_UNDEFINED MergeMatchKind = 0 + MergeMatchKind_MERGE_WHEN_MATCHED MergeMatchKind = 1 + MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_SOURCE MergeMatchKind = 2 + MergeMatchKind_MERGE_WHEN_NOT_MATCHED_BY_TARGET MergeMatchKind = 3 +) + +// Enum value maps for MergeMatchKind. +var ( + MergeMatchKind_name = map[int32]string{ + 0: "MERGE_MATCH_KIND_UNDEFINED", + 1: "MERGE_WHEN_MATCHED", + 2: "MERGE_WHEN_NOT_MATCHED_BY_SOURCE", + 3: "MERGE_WHEN_NOT_MATCHED_BY_TARGET", + } + MergeMatchKind_value = map[string]int32{ + "MERGE_MATCH_KIND_UNDEFINED": 0, + "MERGE_WHEN_MATCHED": 1, + "MERGE_WHEN_NOT_MATCHED_BY_SOURCE": 2, + "MERGE_WHEN_NOT_MATCHED_BY_TARGET": 3, + } +) + +func (x MergeMatchKind) Enum() *MergeMatchKind { + p := new(MergeMatchKind) + *p = x + return p +} + +func (x MergeMatchKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MergeMatchKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[58].Descriptor() +} + +func (MergeMatchKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[58] +} + +func (x MergeMatchKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MergeMatchKind.Descriptor instead. +func (MergeMatchKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{58} +} + +type CmdType int32 + +const ( + CmdType_CMD_TYPE_UNDEFINED CmdType = 0 + CmdType_CMD_UNKNOWN CmdType = 1 + CmdType_CMD_SELECT CmdType = 2 + CmdType_CMD_UPDATE CmdType = 3 + CmdType_CMD_INSERT CmdType = 4 + CmdType_CMD_DELETE CmdType = 5 + CmdType_CMD_MERGE CmdType = 6 + CmdType_CMD_UTILITY CmdType = 7 + CmdType_CMD_NOTHING CmdType = 8 +) + +// Enum value maps for CmdType. +var ( + CmdType_name = map[int32]string{ + 0: "CMD_TYPE_UNDEFINED", + 1: "CMD_UNKNOWN", + 2: "CMD_SELECT", + 3: "CMD_UPDATE", + 4: "CMD_INSERT", + 5: "CMD_DELETE", + 6: "CMD_MERGE", + 7: "CMD_UTILITY", + 8: "CMD_NOTHING", + } + CmdType_value = map[string]int32{ + "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, + } +) + +func (x CmdType) Enum() *CmdType { + p := new(CmdType) + *p = x + return p +} + +func (x CmdType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CmdType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[59].Descriptor() +} + +func (CmdType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[59] +} + +func (x CmdType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CmdType.Descriptor instead. +func (CmdType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{59} +} + +type JoinType int32 + +const ( + JoinType_JOIN_TYPE_UNDEFINED JoinType = 0 + JoinType_JOIN_INNER JoinType = 1 + JoinType_JOIN_LEFT JoinType = 2 + JoinType_JOIN_FULL JoinType = 3 + JoinType_JOIN_RIGHT JoinType = 4 + JoinType_JOIN_SEMI JoinType = 5 + JoinType_JOIN_ANTI JoinType = 6 + JoinType_JOIN_RIGHT_SEMI JoinType = 7 + JoinType_JOIN_RIGHT_ANTI JoinType = 8 + JoinType_JOIN_UNIQUE_OUTER JoinType = 9 + JoinType_JOIN_UNIQUE_INNER JoinType = 10 +) + +// Enum value maps for JoinType. +var ( + JoinType_name = map[int32]string{ + 0: "JOIN_TYPE_UNDEFINED", + 1: "JOIN_INNER", + 2: "JOIN_LEFT", + 3: "JOIN_FULL", + 4: "JOIN_RIGHT", + 5: "JOIN_SEMI", + 6: "JOIN_ANTI", + 7: "JOIN_RIGHT_SEMI", + 8: "JOIN_RIGHT_ANTI", + 9: "JOIN_UNIQUE_OUTER", + 10: "JOIN_UNIQUE_INNER", + } + JoinType_value = map[string]int32{ + "JOIN_TYPE_UNDEFINED": 0, + "JOIN_INNER": 1, + "JOIN_LEFT": 2, + "JOIN_FULL": 3, + "JOIN_RIGHT": 4, + "JOIN_SEMI": 5, + "JOIN_ANTI": 6, + "JOIN_RIGHT_SEMI": 7, + "JOIN_RIGHT_ANTI": 8, + "JOIN_UNIQUE_OUTER": 9, + "JOIN_UNIQUE_INNER": 10, + } +) + +func (x JoinType) Enum() *JoinType { + p := new(JoinType) + *p = x + return p +} + +func (x JoinType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (JoinType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[60].Descriptor() +} + +func (JoinType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[60] +} + +func (x JoinType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use JoinType.Descriptor instead. +func (JoinType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{60} +} + +type AggStrategy int32 + +const ( + AggStrategy_AGG_STRATEGY_UNDEFINED AggStrategy = 0 + AggStrategy_AGG_PLAIN AggStrategy = 1 + AggStrategy_AGG_SORTED AggStrategy = 2 + AggStrategy_AGG_HASHED AggStrategy = 3 + AggStrategy_AGG_MIXED AggStrategy = 4 +) + +// Enum value maps for AggStrategy. +var ( + AggStrategy_name = map[int32]string{ + 0: "AGG_STRATEGY_UNDEFINED", + 1: "AGG_PLAIN", + 2: "AGG_SORTED", + 3: "AGG_HASHED", + 4: "AGG_MIXED", + } + AggStrategy_value = map[string]int32{ + "AGG_STRATEGY_UNDEFINED": 0, + "AGG_PLAIN": 1, + "AGG_SORTED": 2, + "AGG_HASHED": 3, + "AGG_MIXED": 4, + } +) + +func (x AggStrategy) Enum() *AggStrategy { + p := new(AggStrategy) + *p = x + return p +} + +func (x AggStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AggStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[61].Descriptor() +} + +func (AggStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[61] +} + +func (x AggStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AggStrategy.Descriptor instead. +func (AggStrategy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{61} +} + +type AggSplit int32 + +const ( + AggSplit_AGG_SPLIT_UNDEFINED AggSplit = 0 + AggSplit_AGGSPLIT_SIMPLE AggSplit = 1 + AggSplit_AGGSPLIT_INITIAL_SERIAL AggSplit = 2 + AggSplit_AGGSPLIT_FINAL_DESERIAL AggSplit = 3 +) + +// Enum value maps for AggSplit. +var ( + AggSplit_name = map[int32]string{ + 0: "AGG_SPLIT_UNDEFINED", + 1: "AGGSPLIT_SIMPLE", + 2: "AGGSPLIT_INITIAL_SERIAL", + 3: "AGGSPLIT_FINAL_DESERIAL", + } + AggSplit_value = map[string]int32{ + "AGG_SPLIT_UNDEFINED": 0, + "AGGSPLIT_SIMPLE": 1, + "AGGSPLIT_INITIAL_SERIAL": 2, + "AGGSPLIT_FINAL_DESERIAL": 3, + } +) + +func (x AggSplit) Enum() *AggSplit { + p := new(AggSplit) + *p = x + return p +} + +func (x AggSplit) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AggSplit) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[62].Descriptor() +} + +func (AggSplit) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[62] +} + +func (x AggSplit) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AggSplit.Descriptor instead. +func (AggSplit) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{62} +} + +type SetOpCmd int32 + +const ( + SetOpCmd_SET_OP_CMD_UNDEFINED SetOpCmd = 0 + SetOpCmd_SETOPCMD_INTERSECT SetOpCmd = 1 + SetOpCmd_SETOPCMD_INTERSECT_ALL SetOpCmd = 2 + SetOpCmd_SETOPCMD_EXCEPT SetOpCmd = 3 + SetOpCmd_SETOPCMD_EXCEPT_ALL SetOpCmd = 4 +) + +// Enum value maps for SetOpCmd. +var ( + SetOpCmd_name = map[int32]string{ + 0: "SET_OP_CMD_UNDEFINED", + 1: "SETOPCMD_INTERSECT", + 2: "SETOPCMD_INTERSECT_ALL", + 3: "SETOPCMD_EXCEPT", + 4: "SETOPCMD_EXCEPT_ALL", + } + SetOpCmd_value = map[string]int32{ + "SET_OP_CMD_UNDEFINED": 0, + "SETOPCMD_INTERSECT": 1, + "SETOPCMD_INTERSECT_ALL": 2, + "SETOPCMD_EXCEPT": 3, + "SETOPCMD_EXCEPT_ALL": 4, + } +) + +func (x SetOpCmd) Enum() *SetOpCmd { + p := new(SetOpCmd) + *p = x + return p +} + +func (x SetOpCmd) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetOpCmd) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[63].Descriptor() +} + +func (SetOpCmd) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[63] +} + +func (x SetOpCmd) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetOpCmd.Descriptor instead. +func (SetOpCmd) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{63} +} + +type SetOpStrategy int32 + +const ( + SetOpStrategy_SET_OP_STRATEGY_UNDEFINED SetOpStrategy = 0 + SetOpStrategy_SETOP_SORTED SetOpStrategy = 1 + SetOpStrategy_SETOP_HASHED SetOpStrategy = 2 +) + +// Enum value maps for SetOpStrategy. +var ( + SetOpStrategy_name = map[int32]string{ + 0: "SET_OP_STRATEGY_UNDEFINED", + 1: "SETOP_SORTED", + 2: "SETOP_HASHED", + } + SetOpStrategy_value = map[string]int32{ + "SET_OP_STRATEGY_UNDEFINED": 0, + "SETOP_SORTED": 1, + "SETOP_HASHED": 2, + } +) + +func (x SetOpStrategy) Enum() *SetOpStrategy { + p := new(SetOpStrategy) + *p = x + return p +} + +func (x SetOpStrategy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SetOpStrategy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[64].Descriptor() +} + +func (SetOpStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[64] +} + +func (x SetOpStrategy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SetOpStrategy.Descriptor instead. +func (SetOpStrategy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{64} +} + +type OnConflictAction int32 + +const ( + OnConflictAction_ON_CONFLICT_ACTION_UNDEFINED OnConflictAction = 0 + OnConflictAction_ONCONFLICT_NONE OnConflictAction = 1 + OnConflictAction_ONCONFLICT_NOTHING OnConflictAction = 2 + OnConflictAction_ONCONFLICT_UPDATE OnConflictAction = 3 +) + +// Enum value maps for OnConflictAction. +var ( + OnConflictAction_name = map[int32]string{ + 0: "ON_CONFLICT_ACTION_UNDEFINED", + 1: "ONCONFLICT_NONE", + 2: "ONCONFLICT_NOTHING", + 3: "ONCONFLICT_UPDATE", + } + OnConflictAction_value = map[string]int32{ + "ON_CONFLICT_ACTION_UNDEFINED": 0, + "ONCONFLICT_NONE": 1, + "ONCONFLICT_NOTHING": 2, + "ONCONFLICT_UPDATE": 3, + } +) + +func (x OnConflictAction) Enum() *OnConflictAction { + p := new(OnConflictAction) + *p = x + return p +} + +func (x OnConflictAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OnConflictAction) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[65].Descriptor() +} + +func (OnConflictAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[65] +} + +func (x OnConflictAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OnConflictAction.Descriptor instead. +func (OnConflictAction) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{65} +} + +type LimitOption int32 + +const ( + LimitOption_LIMIT_OPTION_UNDEFINED LimitOption = 0 + LimitOption_LIMIT_OPTION_DEFAULT LimitOption = 1 + LimitOption_LIMIT_OPTION_COUNT LimitOption = 2 + LimitOption_LIMIT_OPTION_WITH_TIES LimitOption = 3 +) + +// Enum value maps for LimitOption. +var ( + LimitOption_name = map[int32]string{ + 0: "LIMIT_OPTION_UNDEFINED", + 1: "LIMIT_OPTION_DEFAULT", + 2: "LIMIT_OPTION_COUNT", + 3: "LIMIT_OPTION_WITH_TIES", + } + LimitOption_value = map[string]int32{ + "LIMIT_OPTION_UNDEFINED": 0, + "LIMIT_OPTION_DEFAULT": 1, + "LIMIT_OPTION_COUNT": 2, + "LIMIT_OPTION_WITH_TIES": 3, + } +) + +func (x LimitOption) Enum() *LimitOption { + p := new(LimitOption) + *p = x + return p +} + +func (x LimitOption) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LimitOption) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[66].Descriptor() +} + +func (LimitOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[66] +} + +func (x LimitOption) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LimitOption.Descriptor instead. +func (LimitOption) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{66} +} + +type LockClauseStrength int32 + +const ( + LockClauseStrength_LOCK_CLAUSE_STRENGTH_UNDEFINED LockClauseStrength = 0 + LockClauseStrength_LCS_NONE LockClauseStrength = 1 + LockClauseStrength_LCS_FORKEYSHARE LockClauseStrength = 2 + LockClauseStrength_LCS_FORSHARE LockClauseStrength = 3 + LockClauseStrength_LCS_FORNOKEYUPDATE LockClauseStrength = 4 + LockClauseStrength_LCS_FORUPDATE LockClauseStrength = 5 +) + +// Enum value maps for LockClauseStrength. +var ( + LockClauseStrength_name = map[int32]string{ + 0: "LOCK_CLAUSE_STRENGTH_UNDEFINED", + 1: "LCS_NONE", + 2: "LCS_FORKEYSHARE", + 3: "LCS_FORSHARE", + 4: "LCS_FORNOKEYUPDATE", + 5: "LCS_FORUPDATE", + } + LockClauseStrength_value = map[string]int32{ + "LOCK_CLAUSE_STRENGTH_UNDEFINED": 0, + "LCS_NONE": 1, + "LCS_FORKEYSHARE": 2, + "LCS_FORSHARE": 3, + "LCS_FORNOKEYUPDATE": 4, + "LCS_FORUPDATE": 5, + } +) + +func (x LockClauseStrength) Enum() *LockClauseStrength { + p := new(LockClauseStrength) + *p = x + return p +} + +func (x LockClauseStrength) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LockClauseStrength) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[67].Descriptor() +} + +func (LockClauseStrength) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[67] +} + +func (x LockClauseStrength) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LockClauseStrength.Descriptor instead. +func (LockClauseStrength) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{67} +} + +type LockWaitPolicy int32 + +const ( + LockWaitPolicy_LOCK_WAIT_POLICY_UNDEFINED LockWaitPolicy = 0 + LockWaitPolicy_LockWaitBlock LockWaitPolicy = 1 + LockWaitPolicy_LockWaitSkip LockWaitPolicy = 2 + LockWaitPolicy_LockWaitError LockWaitPolicy = 3 +) + +// Enum value maps for LockWaitPolicy. +var ( + LockWaitPolicy_name = map[int32]string{ + 0: "LOCK_WAIT_POLICY_UNDEFINED", + 1: "LockWaitBlock", + 2: "LockWaitSkip", + 3: "LockWaitError", + } + LockWaitPolicy_value = map[string]int32{ + "LOCK_WAIT_POLICY_UNDEFINED": 0, + "LockWaitBlock": 1, + "LockWaitSkip": 2, + "LockWaitError": 3, + } +) + +func (x LockWaitPolicy) Enum() *LockWaitPolicy { + p := new(LockWaitPolicy) + *p = x + return p +} + +func (x LockWaitPolicy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LockWaitPolicy) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[68].Descriptor() +} + +func (LockWaitPolicy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[68] +} + +func (x LockWaitPolicy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LockWaitPolicy.Descriptor instead. +func (LockWaitPolicy) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{68} +} + +type LockTupleMode int32 + +const ( + LockTupleMode_LOCK_TUPLE_MODE_UNDEFINED LockTupleMode = 0 + LockTupleMode_LockTupleKeyShare LockTupleMode = 1 + LockTupleMode_LockTupleShare LockTupleMode = 2 + LockTupleMode_LockTupleNoKeyExclusive LockTupleMode = 3 + LockTupleMode_LockTupleExclusive LockTupleMode = 4 +) + +// Enum value maps for LockTupleMode. +var ( + LockTupleMode_name = map[int32]string{ + 0: "LOCK_TUPLE_MODE_UNDEFINED", + 1: "LockTupleKeyShare", + 2: "LockTupleShare", + 3: "LockTupleNoKeyExclusive", + 4: "LockTupleExclusive", + } + LockTupleMode_value = map[string]int32{ + "LOCK_TUPLE_MODE_UNDEFINED": 0, + "LockTupleKeyShare": 1, + "LockTupleShare": 2, + "LockTupleNoKeyExclusive": 3, + "LockTupleExclusive": 4, + } +) + +func (x LockTupleMode) Enum() *LockTupleMode { + p := new(LockTupleMode) + *p = x + return p +} + +func (x LockTupleMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LockTupleMode) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[69].Descriptor() +} + +func (LockTupleMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[69] +} + +func (x LockTupleMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LockTupleMode.Descriptor instead. +func (LockTupleMode) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{69} +} + +type CompareType int32 + +const ( + CompareType_COMPARE_TYPE_UNDEFINED CompareType = 0 + CompareType_COMPARE_INVALID CompareType = 1 + CompareType_COMPARE_LT CompareType = 2 + CompareType_COMPARE_LE CompareType = 3 + CompareType_COMPARE_EQ CompareType = 4 + CompareType_COMPARE_GE CompareType = 5 + CompareType_COMPARE_GT CompareType = 6 + CompareType_COMPARE_NE CompareType = 7 + CompareType_COMPARE_OVERLAP CompareType = 8 + CompareType_COMPARE_CONTAINED_BY CompareType = 9 +) + +// Enum value maps for CompareType. +var ( + CompareType_name = map[int32]string{ + 0: "COMPARE_TYPE_UNDEFINED", + 1: "COMPARE_INVALID", + 2: "COMPARE_LT", + 3: "COMPARE_LE", + 4: "COMPARE_EQ", + 5: "COMPARE_GE", + 6: "COMPARE_GT", + 7: "COMPARE_NE", + 8: "COMPARE_OVERLAP", + 9: "COMPARE_CONTAINED_BY", + } + CompareType_value = map[string]int32{ + "COMPARE_TYPE_UNDEFINED": 0, + "COMPARE_INVALID": 1, + "COMPARE_LT": 2, + "COMPARE_LE": 3, + "COMPARE_EQ": 4, + "COMPARE_GE": 5, + "COMPARE_GT": 6, + "COMPARE_NE": 7, + "COMPARE_OVERLAP": 8, + "COMPARE_CONTAINED_BY": 9, + } +) + +func (x CompareType) Enum() *CompareType { + p := new(CompareType) + *p = x + return p +} + +func (x CompareType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CompareType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[70].Descriptor() +} + +func (CompareType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[70] +} + +func (x CompareType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CompareType.Descriptor instead. +func (CompareType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{70} +} + +type KeywordKind int32 + +const ( + KeywordKind_NO_KEYWORD KeywordKind = 0 + KeywordKind_UNRESERVED_KEYWORD KeywordKind = 1 + KeywordKind_COL_NAME_KEYWORD KeywordKind = 2 + KeywordKind_TYPE_FUNC_NAME_KEYWORD KeywordKind = 3 + KeywordKind_RESERVED_KEYWORD KeywordKind = 4 +) + +// Enum value maps for KeywordKind. +var ( + KeywordKind_name = map[int32]string{ + 0: "NO_KEYWORD", + 1: "UNRESERVED_KEYWORD", + 2: "COL_NAME_KEYWORD", + 3: "TYPE_FUNC_NAME_KEYWORD", + 4: "RESERVED_KEYWORD", + } + KeywordKind_value = map[string]int32{ + "NO_KEYWORD": 0, + "UNRESERVED_KEYWORD": 1, + "COL_NAME_KEYWORD": 2, + "TYPE_FUNC_NAME_KEYWORD": 3, + "RESERVED_KEYWORD": 4, + } +) + +func (x KeywordKind) Enum() *KeywordKind { + p := new(KeywordKind) + *p = x + return p +} + +func (x KeywordKind) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (KeywordKind) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[71].Descriptor() +} + +func (KeywordKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[71] +} + +func (x KeywordKind) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use KeywordKind.Descriptor instead. +func (KeywordKind) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{71} +} + +type Token int32 + +const ( + Token_NUL Token = 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 + Token_ASCII_36 Token = 36 // "$" + Token_ASCII_37 Token = 37 // "%" + Token_ASCII_40 Token = 40 // "(" + Token_ASCII_41 Token = 41 // ")" + Token_ASCII_42 Token = 42 // "*" + Token_ASCII_43 Token = 43 // "+" + Token_ASCII_44 Token = 44 // "," + Token_ASCII_45 Token = 45 // "-" + Token_ASCII_46 Token = 46 // "." + Token_ASCII_47 Token = 47 // "/" + Token_ASCII_58 Token = 58 // ":" + Token_ASCII_59 Token = 59 // ";" + Token_ASCII_60 Token = 60 // "<" + Token_ASCII_61 Token = 61 // "=" + Token_ASCII_62 Token = 62 // ">" + Token_ASCII_63 Token = 63 // "?" + Token_ASCII_91 Token = 91 // "[" + Token_ASCII_92 Token = 92 // "\" + Token_ASCII_93 Token = 93 // "]" + Token_ASCII_94 Token = 94 // "^" + // Named tokens in scan.l + Token_IDENT Token = 258 + Token_UIDENT Token = 259 + Token_FCONST Token = 260 + Token_SCONST Token = 261 + Token_USCONST Token = 262 + Token_BCONST Token = 263 + Token_XCONST Token = 264 + Token_Op Token = 265 + Token_ICONST Token = 266 + Token_PARAM Token = 267 + Token_TYPECAST Token = 268 + Token_DOT_DOT Token = 269 + Token_COLON_EQUALS Token = 270 + Token_EQUALS_GREATER Token = 271 + Token_LESS_EQUALS Token = 272 + Token_GREATER_EQUALS Token = 273 + Token_NOT_EQUALS Token = 274 + Token_SQL_COMMENT Token = 275 + Token_C_COMMENT Token = 276 + Token_ABORT_P Token = 277 + Token_ABSENT Token = 278 + Token_ABSOLUTE_P Token = 279 + Token_ACCESS Token = 280 + Token_ACTION Token = 281 + Token_ADD_P Token = 282 + Token_ADMIN Token = 283 + Token_AFTER Token = 284 + Token_AGGREGATE Token = 285 + Token_ALL Token = 286 + Token_ALSO Token = 287 + Token_ALTER Token = 288 + Token_ALWAYS Token = 289 + Token_ANALYSE Token = 290 + Token_ANALYZE Token = 291 + Token_AND Token = 292 + Token_ANY Token = 293 + Token_ARRAY Token = 294 + Token_AS Token = 295 + Token_ASC Token = 296 + Token_ASENSITIVE Token = 297 + Token_ASSERTION Token = 298 + Token_ASSIGNMENT Token = 299 + Token_ASYMMETRIC Token = 300 + Token_ATOMIC Token = 301 + Token_AT Token = 302 + Token_ATTACH Token = 303 + Token_ATTRIBUTE Token = 304 + Token_AUTHORIZATION Token = 305 + Token_BACKWARD Token = 306 + Token_BEFORE Token = 307 + Token_BEGIN_P Token = 308 + Token_BETWEEN Token = 309 + Token_BIGINT Token = 310 + Token_BINARY Token = 311 + Token_BIT Token = 312 + Token_BOOLEAN_P Token = 313 + Token_BOTH Token = 314 + Token_BREADTH Token = 315 + Token_BY Token = 316 + Token_CACHE Token = 317 + Token_CALL Token = 318 + Token_CALLED Token = 319 + Token_CASCADE Token = 320 + Token_CASCADED Token = 321 + Token_CASE Token = 322 + Token_CAST Token = 323 + Token_CATALOG_P Token = 324 + Token_CHAIN Token = 325 + Token_CHAR_P Token = 326 + Token_CHARACTER Token = 327 + Token_CHARACTERISTICS Token = 328 + Token_CHECK Token = 329 + Token_CHECKPOINT Token = 330 + Token_CLASS Token = 331 + Token_CLOSE Token = 332 + Token_CLUSTER Token = 333 + Token_COALESCE Token = 334 + Token_COLLATE Token = 335 + Token_COLLATION Token = 336 + Token_COLUMN Token = 337 + Token_COLUMNS Token = 338 + Token_COMMENT Token = 339 + Token_COMMENTS Token = 340 + Token_COMMIT Token = 341 + Token_COMMITTED Token = 342 + Token_COMPRESSION Token = 343 + Token_CONCURRENTLY Token = 344 + Token_CONDITIONAL Token = 345 + Token_CONFIGURATION Token = 346 + Token_CONFLICT Token = 347 + Token_CONNECTION Token = 348 + Token_CONSTRAINT Token = 349 + Token_CONSTRAINTS Token = 350 + Token_CONTENT_P Token = 351 + Token_CONTINUE_P Token = 352 + Token_CONVERSION_P Token = 353 + Token_COPY Token = 354 + Token_COST Token = 355 + Token_CREATE Token = 356 + Token_CROSS Token = 357 + Token_CSV Token = 358 + Token_CUBE Token = 359 + Token_CURRENT_P Token = 360 + Token_CURRENT_CATALOG Token = 361 + Token_CURRENT_DATE Token = 362 + Token_CURRENT_ROLE Token = 363 + Token_CURRENT_SCHEMA Token = 364 + Token_CURRENT_TIME Token = 365 + Token_CURRENT_TIMESTAMP Token = 366 + Token_CURRENT_USER Token = 367 + Token_CURSOR Token = 368 + Token_CYCLE Token = 369 + Token_DATA_P Token = 370 + Token_DATABASE Token = 371 + Token_DAY_P Token = 372 + Token_DEALLOCATE Token = 373 + Token_DEC Token = 374 + Token_DECIMAL_P Token = 375 + Token_DECLARE Token = 376 + Token_DEFAULT Token = 377 + Token_DEFAULTS Token = 378 + Token_DEFERRABLE Token = 379 + Token_DEFERRED Token = 380 + Token_DEFINER Token = 381 + Token_DELETE_P Token = 382 + Token_DELIMITER Token = 383 + Token_DELIMITERS Token = 384 + Token_DEPENDS Token = 385 + Token_DEPTH Token = 386 + Token_DESC Token = 387 + Token_DETACH Token = 388 + Token_DICTIONARY Token = 389 + Token_DISABLE_P Token = 390 + Token_DISCARD Token = 391 + Token_DISTINCT Token = 392 + Token_DO Token = 393 + Token_DOCUMENT_P Token = 394 + Token_DOMAIN_P Token = 395 + Token_DOUBLE_P Token = 396 + Token_DROP Token = 397 + Token_EACH Token = 398 + Token_ELSE Token = 399 + Token_EMPTY_P Token = 400 + Token_ENABLE_P Token = 401 + Token_ENCODING Token = 402 + Token_ENCRYPTED Token = 403 + Token_END_P Token = 404 + Token_ENFORCED Token = 405 + Token_ENUM_P Token = 406 + Token_ERROR_P Token = 407 + Token_ESCAPE Token = 408 + Token_EVENT Token = 409 + Token_EXCEPT Token = 410 + Token_EXCLUDE Token = 411 + Token_EXCLUDING Token = 412 + Token_EXCLUSIVE Token = 413 + Token_EXECUTE Token = 414 + Token_EXISTS Token = 415 + Token_EXPLAIN Token = 416 + Token_EXPRESSION Token = 417 + Token_EXTENSION Token = 418 + Token_EXTERNAL Token = 419 + Token_EXTRACT Token = 420 + Token_FALSE_P Token = 421 + Token_FAMILY Token = 422 + Token_FETCH Token = 423 + Token_FILTER Token = 424 + Token_FINALIZE Token = 425 + Token_FIRST_P Token = 426 + Token_FLOAT_P Token = 427 + Token_FOLLOWING Token = 428 + Token_FOR Token = 429 + Token_FORCE Token = 430 + Token_FOREIGN Token = 431 + Token_FORMAT Token = 432 + Token_FORWARD Token = 433 + Token_FREEZE Token = 434 + Token_FROM Token = 435 + Token_FULL Token = 436 + Token_FUNCTION Token = 437 + Token_FUNCTIONS Token = 438 + Token_GENERATED Token = 439 + Token_GLOBAL Token = 440 + Token_GRANT Token = 441 + Token_GRANTED Token = 442 + Token_GREATEST Token = 443 + Token_GROUP_P Token = 444 + Token_GROUPING Token = 445 + Token_GROUPS Token = 446 + Token_HANDLER Token = 447 + Token_HAVING Token = 448 + Token_HEADER_P Token = 449 + Token_HOLD Token = 450 + Token_HOUR_P Token = 451 + Token_IDENTITY_P Token = 452 + Token_IF_P Token = 453 + Token_ILIKE Token = 454 + Token_IMMEDIATE Token = 455 + Token_IMMUTABLE Token = 456 + Token_IMPLICIT_P Token = 457 + Token_IMPORT_P Token = 458 + Token_IN_P Token = 459 + Token_INCLUDE Token = 460 + Token_INCLUDING Token = 461 + Token_INCREMENT Token = 462 + Token_INDENT Token = 463 + Token_INDEX Token = 464 + Token_INDEXES Token = 465 + Token_INHERIT Token = 466 + Token_INHERITS Token = 467 + Token_INITIALLY Token = 468 + Token_INLINE_P Token = 469 + Token_INNER_P Token = 470 + Token_INOUT Token = 471 + Token_INPUT_P Token = 472 + Token_INSENSITIVE Token = 473 + Token_INSERT Token = 474 + Token_INSTEAD Token = 475 + Token_INT_P Token = 476 + Token_INTEGER Token = 477 + Token_INTERSECT Token = 478 + Token_INTERVAL Token = 479 + Token_INTO Token = 480 + Token_INVOKER Token = 481 + Token_IS Token = 482 + Token_ISNULL Token = 483 + Token_ISOLATION Token = 484 + Token_JOIN Token = 485 + Token_JSON Token = 486 + Token_JSON_ARRAY Token = 487 + Token_JSON_ARRAYAGG Token = 488 + Token_JSON_EXISTS Token = 489 + Token_JSON_OBJECT Token = 490 + Token_JSON_OBJECTAGG Token = 491 + Token_JSON_QUERY Token = 492 + Token_JSON_SCALAR Token = 493 + Token_JSON_SERIALIZE Token = 494 + Token_JSON_TABLE Token = 495 + Token_JSON_VALUE Token = 496 + Token_KEEP Token = 497 + Token_KEY Token = 498 + Token_KEYS Token = 499 + Token_LABEL Token = 500 + Token_LANGUAGE Token = 501 + Token_LARGE_P Token = 502 + Token_LAST_P Token = 503 + Token_LATERAL_P Token = 504 + Token_LEADING Token = 505 + Token_LEAKPROOF Token = 506 + Token_LEAST Token = 507 + Token_LEFT Token = 508 + Token_LEVEL Token = 509 + Token_LIKE Token = 510 + Token_LIMIT Token = 511 + Token_LISTEN Token = 512 + Token_LOAD Token = 513 + Token_LOCAL Token = 514 + Token_LOCALTIME Token = 515 + Token_LOCALTIMESTAMP Token = 516 + Token_LOCATION Token = 517 + Token_LOCK_P Token = 518 + Token_LOCKED Token = 519 + Token_LOGGED Token = 520 + Token_MAPPING Token = 521 + Token_MATCH Token = 522 + Token_MATCHED Token = 523 + Token_MATERIALIZED Token = 524 + Token_MAXVALUE Token = 525 + Token_MERGE Token = 526 + Token_MERGE_ACTION Token = 527 + Token_METHOD Token = 528 + Token_MINUTE_P Token = 529 + Token_MINVALUE Token = 530 + Token_MODE Token = 531 + Token_MONTH_P Token = 532 + Token_MOVE Token = 533 + Token_NAME_P Token = 534 + Token_NAMES Token = 535 + Token_NATIONAL Token = 536 + Token_NATURAL Token = 537 + Token_NCHAR Token = 538 + Token_NESTED Token = 539 + Token_NEW Token = 540 + Token_NEXT Token = 541 + Token_NFC Token = 542 + Token_NFD Token = 543 + Token_NFKC Token = 544 + Token_NFKD Token = 545 + Token_NO Token = 546 + Token_NONE Token = 547 + Token_NORMALIZE Token = 548 + Token_NORMALIZED Token = 549 + Token_NOT Token = 550 + Token_NOTHING Token = 551 + Token_NOTIFY Token = 552 + Token_NOTNULL Token = 553 + Token_NOWAIT Token = 554 + Token_NULL_P Token = 555 + Token_NULLIF Token = 556 + Token_NULLS_P Token = 557 + Token_NUMERIC Token = 558 + Token_OBJECT_P Token = 559 + Token_OBJECTS_P Token = 560 + Token_OF Token = 561 + Token_OFF Token = 562 + Token_OFFSET Token = 563 + Token_OIDS Token = 564 + Token_OLD Token = 565 + Token_OMIT Token = 566 + Token_ON Token = 567 + Token_ONLY Token = 568 + Token_OPERATOR Token = 569 + Token_OPTION Token = 570 + Token_OPTIONS Token = 571 + Token_OR Token = 572 + Token_ORDER Token = 573 + Token_ORDINALITY Token = 574 + Token_OTHERS Token = 575 + Token_OUT_P Token = 576 + Token_OUTER_P Token = 577 + Token_OVER Token = 578 + Token_OVERLAPS Token = 579 + Token_OVERLAY Token = 580 + Token_OVERRIDING Token = 581 + Token_OWNED Token = 582 + Token_OWNER Token = 583 + Token_PARALLEL Token = 584 + Token_PARAMETER Token = 585 + Token_PARSER Token = 586 + Token_PARTIAL Token = 587 + Token_PARTITION Token = 588 + Token_PASSING Token = 589 + Token_PASSWORD Token = 590 + Token_PATH Token = 591 + Token_PERIOD Token = 592 + Token_PLACING Token = 593 + Token_PLAN Token = 594 + Token_PLANS Token = 595 + Token_POLICY Token = 596 + Token_POSITION Token = 597 + Token_PRECEDING Token = 598 + Token_PRECISION Token = 599 + Token_PRESERVE Token = 600 + Token_PREPARE Token = 601 + Token_PREPARED Token = 602 + Token_PRIMARY Token = 603 + Token_PRIOR Token = 604 + Token_PRIVILEGES Token = 605 + Token_PROCEDURAL Token = 606 + Token_PROCEDURE Token = 607 + Token_PROCEDURES Token = 608 + Token_PROGRAM Token = 609 + Token_PUBLICATION Token = 610 + Token_QUOTE Token = 611 + Token_QUOTES Token = 612 + Token_RANGE Token = 613 + Token_READ Token = 614 + Token_REAL Token = 615 + Token_REASSIGN Token = 616 + Token_RECURSIVE Token = 617 + Token_REF_P Token = 618 + Token_REFERENCES Token = 619 + Token_REFERENCING Token = 620 + Token_REFRESH Token = 621 + Token_REINDEX Token = 622 + Token_RELATIVE_P Token = 623 + Token_RELEASE Token = 624 + Token_RENAME Token = 625 + Token_REPEATABLE Token = 626 + Token_REPLACE Token = 627 + Token_REPLICA Token = 628 + Token_RESET Token = 629 + Token_RESTART Token = 630 + Token_RESTRICT Token = 631 + Token_RETURN Token = 632 + Token_RETURNING Token = 633 + Token_RETURNS Token = 634 + Token_REVOKE Token = 635 + Token_RIGHT Token = 636 + Token_ROLE Token = 637 + Token_ROLLBACK Token = 638 + Token_ROLLUP Token = 639 + Token_ROUTINE Token = 640 + Token_ROUTINES Token = 641 + Token_ROW Token = 642 + Token_ROWS Token = 643 + Token_RULE Token = 644 + Token_SAVEPOINT Token = 645 + Token_SCALAR Token = 646 + Token_SCHEMA Token = 647 + Token_SCHEMAS Token = 648 + Token_SCROLL Token = 649 + Token_SEARCH Token = 650 + Token_SECOND_P Token = 651 + Token_SECURITY Token = 652 + Token_SELECT Token = 653 + Token_SEQUENCE Token = 654 + Token_SEQUENCES Token = 655 + Token_SERIALIZABLE Token = 656 + Token_SERVER Token = 657 + Token_SESSION Token = 658 + Token_SESSION_USER Token = 659 + Token_SET Token = 660 + Token_SETS Token = 661 + Token_SETOF Token = 662 + Token_SHARE Token = 663 + Token_SHOW Token = 664 + Token_SIMILAR Token = 665 + Token_SIMPLE Token = 666 + Token_SKIP Token = 667 + Token_SMALLINT Token = 668 + Token_SNAPSHOT Token = 669 + Token_SOME Token = 670 + Token_SOURCE Token = 671 + Token_SQL_P Token = 672 + Token_STABLE Token = 673 + Token_STANDALONE_P Token = 674 + Token_START Token = 675 + Token_STATEMENT Token = 676 + Token_STATISTICS Token = 677 + Token_STDIN Token = 678 + Token_STDOUT Token = 679 + Token_STORAGE Token = 680 + Token_STORED Token = 681 + Token_STRICT_P Token = 682 + Token_STRING_P Token = 683 + Token_STRIP_P Token = 684 + Token_SUBSCRIPTION Token = 685 + Token_SUBSTRING Token = 686 + Token_SUPPORT Token = 687 + Token_SYMMETRIC Token = 688 + Token_SYSID Token = 689 + Token_SYSTEM_P Token = 690 + Token_SYSTEM_USER Token = 691 + Token_TABLE Token = 692 + Token_TABLES Token = 693 + Token_TABLESAMPLE Token = 694 + Token_TABLESPACE Token = 695 + Token_TARGET Token = 696 + Token_TEMP Token = 697 + Token_TEMPLATE Token = 698 + Token_TEMPORARY Token = 699 + Token_TEXT_P Token = 700 + Token_THEN Token = 701 + Token_TIES Token = 702 + Token_TIME Token = 703 + Token_TIMESTAMP Token = 704 + Token_TO Token = 705 + Token_TRAILING Token = 706 + Token_TRANSACTION Token = 707 + Token_TRANSFORM Token = 708 + Token_TREAT Token = 709 + Token_TRIGGER Token = 710 + Token_TRIM Token = 711 + Token_TRUE_P Token = 712 + Token_TRUNCATE Token = 713 + Token_TRUSTED Token = 714 + Token_TYPE_P Token = 715 + Token_TYPES_P Token = 716 + Token_UESCAPE Token = 717 + Token_UNBOUNDED Token = 718 + Token_UNCONDITIONAL Token = 719 + Token_UNCOMMITTED Token = 720 + Token_UNENCRYPTED Token = 721 + Token_UNION Token = 722 + Token_UNIQUE Token = 723 + Token_UNKNOWN Token = 724 + Token_UNLISTEN Token = 725 + Token_UNLOGGED Token = 726 + Token_UNTIL Token = 727 + Token_UPDATE Token = 728 + Token_USER Token = 729 + Token_USING Token = 730 + Token_VACUUM Token = 731 + Token_VALID Token = 732 + Token_VALIDATE Token = 733 + Token_VALIDATOR Token = 734 + Token_VALUE_P Token = 735 + Token_VALUES Token = 736 + Token_VARCHAR Token = 737 + Token_VARIADIC Token = 738 + Token_VARYING Token = 739 + Token_VERBOSE Token = 740 + Token_VERSION_P Token = 741 + Token_VIEW Token = 742 + Token_VIEWS Token = 743 + Token_VIRTUAL Token = 744 + Token_VOLATILE Token = 745 + Token_WHEN Token = 746 + Token_WHERE Token = 747 + Token_WHITESPACE_P Token = 748 + Token_WINDOW Token = 749 + Token_WITH Token = 750 + Token_WITHIN Token = 751 + Token_WITHOUT Token = 752 + Token_WORK Token = 753 + Token_WRAPPER Token = 754 + Token_WRITE Token = 755 + Token_XML_P Token = 756 + Token_XMLATTRIBUTES Token = 757 + Token_XMLCONCAT Token = 758 + Token_XMLELEMENT Token = 759 + Token_XMLEXISTS Token = 760 + Token_XMLFOREST Token = 761 + Token_XMLNAMESPACES Token = 762 + Token_XMLPARSE Token = 763 + Token_XMLPI Token = 764 + Token_XMLROOT Token = 765 + Token_XMLSERIALIZE Token = 766 + Token_XMLTABLE Token = 767 + Token_YEAR_P Token = 768 + Token_YES_P Token = 769 + Token_ZONE Token = 770 + Token_FORMAT_LA Token = 771 + Token_NOT_LA Token = 772 + Token_NULLS_LA Token = 773 + Token_WITH_LA Token = 774 + Token_WITHOUT_LA Token = 775 + Token_MODE_TYPE_NAME Token = 776 + Token_MODE_PLPGSQL_EXPR Token = 777 + Token_MODE_PLPGSQL_ASSIGN1 Token = 778 + Token_MODE_PLPGSQL_ASSIGN2 Token = 779 + Token_MODE_PLPGSQL_ASSIGN3 Token = 780 + Token_UMINUS Token = 781 +) + +// Enum value maps for Token. +var ( + Token_name = map[int32]string{ + 0: "NUL", + 36: "ASCII_36", + 37: "ASCII_37", + 40: "ASCII_40", + 41: "ASCII_41", + 42: "ASCII_42", + 43: "ASCII_43", + 44: "ASCII_44", + 45: "ASCII_45", + 46: "ASCII_46", + 47: "ASCII_47", + 58: "ASCII_58", + 59: "ASCII_59", + 60: "ASCII_60", + 61: "ASCII_61", + 62: "ASCII_62", + 63: "ASCII_63", + 91: "ASCII_91", + 92: "ASCII_92", + 93: "ASCII_93", + 94: "ASCII_94", + 258: "IDENT", + 259: "UIDENT", + 260: "FCONST", + 261: "SCONST", + 262: "USCONST", + 263: "BCONST", + 264: "XCONST", + 265: "Op", + 266: "ICONST", + 267: "PARAM", + 268: "TYPECAST", + 269: "DOT_DOT", + 270: "COLON_EQUALS", + 271: "EQUALS_GREATER", + 272: "LESS_EQUALS", + 273: "GREATER_EQUALS", + 274: "NOT_EQUALS", + 275: "SQL_COMMENT", + 276: "C_COMMENT", + 277: "ABORT_P", + 278: "ABSENT", + 279: "ABSOLUTE_P", + 280: "ACCESS", + 281: "ACTION", + 282: "ADD_P", + 283: "ADMIN", + 284: "AFTER", + 285: "AGGREGATE", + 286: "ALL", + 287: "ALSO", + 288: "ALTER", + 289: "ALWAYS", + 290: "ANALYSE", + 291: "ANALYZE", + 292: "AND", + 293: "ANY", + 294: "ARRAY", + 295: "AS", + 296: "ASC", + 297: "ASENSITIVE", + 298: "ASSERTION", + 299: "ASSIGNMENT", + 300: "ASYMMETRIC", + 301: "ATOMIC", + 302: "AT", + 303: "ATTACH", + 304: "ATTRIBUTE", + 305: "AUTHORIZATION", + 306: "BACKWARD", + 307: "BEFORE", + 308: "BEGIN_P", + 309: "BETWEEN", + 310: "BIGINT", + 311: "BINARY", + 312: "BIT", + 313: "BOOLEAN_P", + 314: "BOTH", + 315: "BREADTH", + 316: "BY", + 317: "CACHE", + 318: "CALL", + 319: "CALLED", + 320: "CASCADE", + 321: "CASCADED", + 322: "CASE", + 323: "CAST", + 324: "CATALOG_P", + 325: "CHAIN", + 326: "CHAR_P", + 327: "CHARACTER", + 328: "CHARACTERISTICS", + 329: "CHECK", + 330: "CHECKPOINT", + 331: "CLASS", + 332: "CLOSE", + 333: "CLUSTER", + 334: "COALESCE", + 335: "COLLATE", + 336: "COLLATION", + 337: "COLUMN", + 338: "COLUMNS", + 339: "COMMENT", + 340: "COMMENTS", + 341: "COMMIT", + 342: "COMMITTED", + 343: "COMPRESSION", + 344: "CONCURRENTLY", + 345: "CONDITIONAL", + 346: "CONFIGURATION", + 347: "CONFLICT", + 348: "CONNECTION", + 349: "CONSTRAINT", + 350: "CONSTRAINTS", + 351: "CONTENT_P", + 352: "CONTINUE_P", + 353: "CONVERSION_P", + 354: "COPY", + 355: "COST", + 356: "CREATE", + 357: "CROSS", + 358: "CSV", + 359: "CUBE", + 360: "CURRENT_P", + 361: "CURRENT_CATALOG", + 362: "CURRENT_DATE", + 363: "CURRENT_ROLE", + 364: "CURRENT_SCHEMA", + 365: "CURRENT_TIME", + 366: "CURRENT_TIMESTAMP", + 367: "CURRENT_USER", + 368: "CURSOR", + 369: "CYCLE", + 370: "DATA_P", + 371: "DATABASE", + 372: "DAY_P", + 373: "DEALLOCATE", + 374: "DEC", + 375: "DECIMAL_P", + 376: "DECLARE", + 377: "DEFAULT", + 378: "DEFAULTS", + 379: "DEFERRABLE", + 380: "DEFERRED", + 381: "DEFINER", + 382: "DELETE_P", + 383: "DELIMITER", + 384: "DELIMITERS", + 385: "DEPENDS", + 386: "DEPTH", + 387: "DESC", + 388: "DETACH", + 389: "DICTIONARY", + 390: "DISABLE_P", + 391: "DISCARD", + 392: "DISTINCT", + 393: "DO", + 394: "DOCUMENT_P", + 395: "DOMAIN_P", + 396: "DOUBLE_P", + 397: "DROP", + 398: "EACH", + 399: "ELSE", + 400: "EMPTY_P", + 401: "ENABLE_P", + 402: "ENCODING", + 403: "ENCRYPTED", + 404: "END_P", + 405: "ENFORCED", + 406: "ENUM_P", + 407: "ERROR_P", + 408: "ESCAPE", + 409: "EVENT", + 410: "EXCEPT", + 411: "EXCLUDE", + 412: "EXCLUDING", + 413: "EXCLUSIVE", + 414: "EXECUTE", + 415: "EXISTS", + 416: "EXPLAIN", + 417: "EXPRESSION", + 418: "EXTENSION", + 419: "EXTERNAL", + 420: "EXTRACT", + 421: "FALSE_P", + 422: "FAMILY", + 423: "FETCH", + 424: "FILTER", + 425: "FINALIZE", + 426: "FIRST_P", + 427: "FLOAT_P", + 428: "FOLLOWING", + 429: "FOR", + 430: "FORCE", + 431: "FOREIGN", + 432: "FORMAT", + 433: "FORWARD", + 434: "FREEZE", + 435: "FROM", + 436: "FULL", + 437: "FUNCTION", + 438: "FUNCTIONS", + 439: "GENERATED", + 440: "GLOBAL", + 441: "GRANT", + 442: "GRANTED", + 443: "GREATEST", + 444: "GROUP_P", + 445: "GROUPING", + 446: "GROUPS", + 447: "HANDLER", + 448: "HAVING", + 449: "HEADER_P", + 450: "HOLD", + 451: "HOUR_P", + 452: "IDENTITY_P", + 453: "IF_P", + 454: "ILIKE", + 455: "IMMEDIATE", + 456: "IMMUTABLE", + 457: "IMPLICIT_P", + 458: "IMPORT_P", + 459: "IN_P", + 460: "INCLUDE", + 461: "INCLUDING", + 462: "INCREMENT", + 463: "INDENT", + 464: "INDEX", + 465: "INDEXES", + 466: "INHERIT", + 467: "INHERITS", + 468: "INITIALLY", + 469: "INLINE_P", + 470: "INNER_P", + 471: "INOUT", + 472: "INPUT_P", + 473: "INSENSITIVE", + 474: "INSERT", + 475: "INSTEAD", + 476: "INT_P", + 477: "INTEGER", + 478: "INTERSECT", + 479: "INTERVAL", + 480: "INTO", + 481: "INVOKER", + 482: "IS", + 483: "ISNULL", + 484: "ISOLATION", + 485: "JOIN", + 486: "JSON", + 487: "JSON_ARRAY", + 488: "JSON_ARRAYAGG", + 489: "JSON_EXISTS", + 490: "JSON_OBJECT", + 491: "JSON_OBJECTAGG", + 492: "JSON_QUERY", + 493: "JSON_SCALAR", + 494: "JSON_SERIALIZE", + 495: "JSON_TABLE", + 496: "JSON_VALUE", + 497: "KEEP", + 498: "KEY", + 499: "KEYS", + 500: "LABEL", + 501: "LANGUAGE", + 502: "LARGE_P", + 503: "LAST_P", + 504: "LATERAL_P", + 505: "LEADING", + 506: "LEAKPROOF", + 507: "LEAST", + 508: "LEFT", + 509: "LEVEL", + 510: "LIKE", + 511: "LIMIT", + 512: "LISTEN", + 513: "LOAD", + 514: "LOCAL", + 515: "LOCALTIME", + 516: "LOCALTIMESTAMP", + 517: "LOCATION", + 518: "LOCK_P", + 519: "LOCKED", + 520: "LOGGED", + 521: "MAPPING", + 522: "MATCH", + 523: "MATCHED", + 524: "MATERIALIZED", + 525: "MAXVALUE", + 526: "MERGE", + 527: "MERGE_ACTION", + 528: "METHOD", + 529: "MINUTE_P", + 530: "MINVALUE", + 531: "MODE", + 532: "MONTH_P", + 533: "MOVE", + 534: "NAME_P", + 535: "NAMES", + 536: "NATIONAL", + 537: "NATURAL", + 538: "NCHAR", + 539: "NESTED", + 540: "NEW", + 541: "NEXT", + 542: "NFC", + 543: "NFD", + 544: "NFKC", + 545: "NFKD", + 546: "NO", + 547: "NONE", + 548: "NORMALIZE", + 549: "NORMALIZED", + 550: "NOT", + 551: "NOTHING", + 552: "NOTIFY", + 553: "NOTNULL", + 554: "NOWAIT", + 555: "NULL_P", + 556: "NULLIF", + 557: "NULLS_P", + 558: "NUMERIC", + 559: "OBJECT_P", + 560: "OBJECTS_P", + 561: "OF", + 562: "OFF", + 563: "OFFSET", + 564: "OIDS", + 565: "OLD", + 566: "OMIT", + 567: "ON", + 568: "ONLY", + 569: "OPERATOR", + 570: "OPTION", + 571: "OPTIONS", + 572: "OR", + 573: "ORDER", + 574: "ORDINALITY", + 575: "OTHERS", + 576: "OUT_P", + 577: "OUTER_P", + 578: "OVER", + 579: "OVERLAPS", + 580: "OVERLAY", + 581: "OVERRIDING", + 582: "OWNED", + 583: "OWNER", + 584: "PARALLEL", + 585: "PARAMETER", + 586: "PARSER", + 587: "PARTIAL", + 588: "PARTITION", + 589: "PASSING", + 590: "PASSWORD", + 591: "PATH", + 592: "PERIOD", + 593: "PLACING", + 594: "PLAN", + 595: "PLANS", + 596: "POLICY", + 597: "POSITION", + 598: "PRECEDING", + 599: "PRECISION", + 600: "PRESERVE", + 601: "PREPARE", + 602: "PREPARED", + 603: "PRIMARY", + 604: "PRIOR", + 605: "PRIVILEGES", + 606: "PROCEDURAL", + 607: "PROCEDURE", + 608: "PROCEDURES", + 609: "PROGRAM", + 610: "PUBLICATION", + 611: "QUOTE", + 612: "QUOTES", + 613: "RANGE", + 614: "READ", + 615: "REAL", + 616: "REASSIGN", + 617: "RECURSIVE", + 618: "REF_P", + 619: "REFERENCES", + 620: "REFERENCING", + 621: "REFRESH", + 622: "REINDEX", + 623: "RELATIVE_P", + 624: "RELEASE", + 625: "RENAME", + 626: "REPEATABLE", + 627: "REPLACE", + 628: "REPLICA", + 629: "RESET", + 630: "RESTART", + 631: "RESTRICT", + 632: "RETURN", + 633: "RETURNING", + 634: "RETURNS", + 635: "REVOKE", + 636: "RIGHT", + 637: "ROLE", + 638: "ROLLBACK", + 639: "ROLLUP", + 640: "ROUTINE", + 641: "ROUTINES", + 642: "ROW", + 643: "ROWS", + 644: "RULE", + 645: "SAVEPOINT", + 646: "SCALAR", + 647: "SCHEMA", + 648: "SCHEMAS", + 649: "SCROLL", + 650: "SEARCH", + 651: "SECOND_P", + 652: "SECURITY", + 653: "SELECT", + 654: "SEQUENCE", + 655: "SEQUENCES", + 656: "SERIALIZABLE", + 657: "SERVER", + 658: "SESSION", + 659: "SESSION_USER", + 660: "SET", + 661: "SETS", + 662: "SETOF", + 663: "SHARE", + 664: "SHOW", + 665: "SIMILAR", + 666: "SIMPLE", + 667: "SKIP", + 668: "SMALLINT", + 669: "SNAPSHOT", + 670: "SOME", + 671: "SOURCE", + 672: "SQL_P", + 673: "STABLE", + 674: "STANDALONE_P", + 675: "START", + 676: "STATEMENT", + 677: "STATISTICS", + 678: "STDIN", + 679: "STDOUT", + 680: "STORAGE", + 681: "STORED", + 682: "STRICT_P", + 683: "STRING_P", + 684: "STRIP_P", + 685: "SUBSCRIPTION", + 686: "SUBSTRING", + 687: "SUPPORT", + 688: "SYMMETRIC", + 689: "SYSID", + 690: "SYSTEM_P", + 691: "SYSTEM_USER", + 692: "TABLE", + 693: "TABLES", + 694: "TABLESAMPLE", + 695: "TABLESPACE", + 696: "TARGET", + 697: "TEMP", + 698: "TEMPLATE", + 699: "TEMPORARY", + 700: "TEXT_P", + 701: "THEN", + 702: "TIES", + 703: "TIME", + 704: "TIMESTAMP", + 705: "TO", + 706: "TRAILING", + 707: "TRANSACTION", + 708: "TRANSFORM", + 709: "TREAT", + 710: "TRIGGER", + 711: "TRIM", + 712: "TRUE_P", + 713: "TRUNCATE", + 714: "TRUSTED", + 715: "TYPE_P", + 716: "TYPES_P", + 717: "UESCAPE", + 718: "UNBOUNDED", + 719: "UNCONDITIONAL", + 720: "UNCOMMITTED", + 721: "UNENCRYPTED", + 722: "UNION", + 723: "UNIQUE", + 724: "UNKNOWN", + 725: "UNLISTEN", + 726: "UNLOGGED", + 727: "UNTIL", + 728: "UPDATE", + 729: "USER", + 730: "USING", + 731: "VACUUM", + 732: "VALID", + 733: "VALIDATE", + 734: "VALIDATOR", + 735: "VALUE_P", + 736: "VALUES", + 737: "VARCHAR", + 738: "VARIADIC", + 739: "VARYING", + 740: "VERBOSE", + 741: "VERSION_P", + 742: "VIEW", + 743: "VIEWS", + 744: "VIRTUAL", + 745: "VOLATILE", + 746: "WHEN", + 747: "WHERE", + 748: "WHITESPACE_P", + 749: "WINDOW", + 750: "WITH", + 751: "WITHIN", + 752: "WITHOUT", + 753: "WORK", + 754: "WRAPPER", + 755: "WRITE", + 756: "XML_P", + 757: "XMLATTRIBUTES", + 758: "XMLCONCAT", + 759: "XMLELEMENT", + 760: "XMLEXISTS", + 761: "XMLFOREST", + 762: "XMLNAMESPACES", + 763: "XMLPARSE", + 764: "XMLPI", + 765: "XMLROOT", + 766: "XMLSERIALIZE", + 767: "XMLTABLE", + 768: "YEAR_P", + 769: "YES_P", + 770: "ZONE", + 771: "FORMAT_LA", + 772: "NOT_LA", + 773: "NULLS_LA", + 774: "WITH_LA", + 775: "WITHOUT_LA", + 776: "MODE_TYPE_NAME", + 777: "MODE_PLPGSQL_EXPR", + 778: "MODE_PLPGSQL_ASSIGN1", + 779: "MODE_PLPGSQL_ASSIGN2", + 780: "MODE_PLPGSQL_ASSIGN3", + 781: "UMINUS", + } + Token_value = map[string]int32{ + "NUL": 0, + "ASCII_36": 36, + "ASCII_37": 37, + "ASCII_40": 40, + "ASCII_41": 41, + "ASCII_42": 42, + "ASCII_43": 43, + "ASCII_44": 44, + "ASCII_45": 45, + "ASCII_46": 46, + "ASCII_47": 47, + "ASCII_58": 58, + "ASCII_59": 59, + "ASCII_60": 60, + "ASCII_61": 61, + "ASCII_62": 62, + "ASCII_63": 63, + "ASCII_91": 91, + "ASCII_92": 92, + "ASCII_93": 93, + "ASCII_94": 94, + "IDENT": 258, + "UIDENT": 259, + "FCONST": 260, + "SCONST": 261, + "USCONST": 262, + "BCONST": 263, + "XCONST": 264, + "Op": 265, + "ICONST": 266, + "PARAM": 267, + "TYPECAST": 268, + "DOT_DOT": 269, + "COLON_EQUALS": 270, + "EQUALS_GREATER": 271, + "LESS_EQUALS": 272, + "GREATER_EQUALS": 273, + "NOT_EQUALS": 274, + "SQL_COMMENT": 275, + "C_COMMENT": 276, + "ABORT_P": 277, + "ABSENT": 278, + "ABSOLUTE_P": 279, + "ACCESS": 280, + "ACTION": 281, + "ADD_P": 282, + "ADMIN": 283, + "AFTER": 284, + "AGGREGATE": 285, + "ALL": 286, + "ALSO": 287, + "ALTER": 288, + "ALWAYS": 289, + "ANALYSE": 290, + "ANALYZE": 291, + "AND": 292, + "ANY": 293, + "ARRAY": 294, + "AS": 295, + "ASC": 296, + "ASENSITIVE": 297, + "ASSERTION": 298, + "ASSIGNMENT": 299, + "ASYMMETRIC": 300, + "ATOMIC": 301, + "AT": 302, + "ATTACH": 303, + "ATTRIBUTE": 304, + "AUTHORIZATION": 305, + "BACKWARD": 306, + "BEFORE": 307, + "BEGIN_P": 308, + "BETWEEN": 309, + "BIGINT": 310, + "BINARY": 311, + "BIT": 312, + "BOOLEAN_P": 313, + "BOTH": 314, + "BREADTH": 315, + "BY": 316, + "CACHE": 317, + "CALL": 318, + "CALLED": 319, + "CASCADE": 320, + "CASCADED": 321, + "CASE": 322, + "CAST": 323, + "CATALOG_P": 324, + "CHAIN": 325, + "CHAR_P": 326, + "CHARACTER": 327, + "CHARACTERISTICS": 328, + "CHECK": 329, + "CHECKPOINT": 330, + "CLASS": 331, + "CLOSE": 332, + "CLUSTER": 333, + "COALESCE": 334, + "COLLATE": 335, + "COLLATION": 336, + "COLUMN": 337, + "COLUMNS": 338, + "COMMENT": 339, + "COMMENTS": 340, + "COMMIT": 341, + "COMMITTED": 342, + "COMPRESSION": 343, + "CONCURRENTLY": 344, + "CONDITIONAL": 345, + "CONFIGURATION": 346, + "CONFLICT": 347, + "CONNECTION": 348, + "CONSTRAINT": 349, + "CONSTRAINTS": 350, + "CONTENT_P": 351, + "CONTINUE_P": 352, + "CONVERSION_P": 353, + "COPY": 354, + "COST": 355, + "CREATE": 356, + "CROSS": 357, + "CSV": 358, + "CUBE": 359, + "CURRENT_P": 360, + "CURRENT_CATALOG": 361, + "CURRENT_DATE": 362, + "CURRENT_ROLE": 363, + "CURRENT_SCHEMA": 364, + "CURRENT_TIME": 365, + "CURRENT_TIMESTAMP": 366, + "CURRENT_USER": 367, + "CURSOR": 368, + "CYCLE": 369, + "DATA_P": 370, + "DATABASE": 371, + "DAY_P": 372, + "DEALLOCATE": 373, + "DEC": 374, + "DECIMAL_P": 375, + "DECLARE": 376, + "DEFAULT": 377, + "DEFAULTS": 378, + "DEFERRABLE": 379, + "DEFERRED": 380, + "DEFINER": 381, + "DELETE_P": 382, + "DELIMITER": 383, + "DELIMITERS": 384, + "DEPENDS": 385, + "DEPTH": 386, + "DESC": 387, + "DETACH": 388, + "DICTIONARY": 389, + "DISABLE_P": 390, + "DISCARD": 391, + "DISTINCT": 392, + "DO": 393, + "DOCUMENT_P": 394, + "DOMAIN_P": 395, + "DOUBLE_P": 396, + "DROP": 397, + "EACH": 398, + "ELSE": 399, + "EMPTY_P": 400, + "ENABLE_P": 401, + "ENCODING": 402, + "ENCRYPTED": 403, + "END_P": 404, + "ENFORCED": 405, + "ENUM_P": 406, + "ERROR_P": 407, + "ESCAPE": 408, + "EVENT": 409, + "EXCEPT": 410, + "EXCLUDE": 411, + "EXCLUDING": 412, + "EXCLUSIVE": 413, + "EXECUTE": 414, + "EXISTS": 415, + "EXPLAIN": 416, + "EXPRESSION": 417, + "EXTENSION": 418, + "EXTERNAL": 419, + "EXTRACT": 420, + "FALSE_P": 421, + "FAMILY": 422, + "FETCH": 423, + "FILTER": 424, + "FINALIZE": 425, + "FIRST_P": 426, + "FLOAT_P": 427, + "FOLLOWING": 428, + "FOR": 429, + "FORCE": 430, + "FOREIGN": 431, + "FORMAT": 432, + "FORWARD": 433, + "FREEZE": 434, + "FROM": 435, + "FULL": 436, + "FUNCTION": 437, + "FUNCTIONS": 438, + "GENERATED": 439, + "GLOBAL": 440, + "GRANT": 441, + "GRANTED": 442, + "GREATEST": 443, + "GROUP_P": 444, + "GROUPING": 445, + "GROUPS": 446, + "HANDLER": 447, + "HAVING": 448, + "HEADER_P": 449, + "HOLD": 450, + "HOUR_P": 451, + "IDENTITY_P": 452, + "IF_P": 453, + "ILIKE": 454, + "IMMEDIATE": 455, + "IMMUTABLE": 456, + "IMPLICIT_P": 457, + "IMPORT_P": 458, + "IN_P": 459, + "INCLUDE": 460, + "INCLUDING": 461, + "INCREMENT": 462, + "INDENT": 463, + "INDEX": 464, + "INDEXES": 465, + "INHERIT": 466, + "INHERITS": 467, + "INITIALLY": 468, + "INLINE_P": 469, + "INNER_P": 470, + "INOUT": 471, + "INPUT_P": 472, + "INSENSITIVE": 473, + "INSERT": 474, + "INSTEAD": 475, + "INT_P": 476, + "INTEGER": 477, + "INTERSECT": 478, + "INTERVAL": 479, + "INTO": 480, + "INVOKER": 481, + "IS": 482, + "ISNULL": 483, + "ISOLATION": 484, + "JOIN": 485, + "JSON": 486, + "JSON_ARRAY": 487, + "JSON_ARRAYAGG": 488, + "JSON_EXISTS": 489, + "JSON_OBJECT": 490, + "JSON_OBJECTAGG": 491, + "JSON_QUERY": 492, + "JSON_SCALAR": 493, + "JSON_SERIALIZE": 494, + "JSON_TABLE": 495, + "JSON_VALUE": 496, + "KEEP": 497, + "KEY": 498, + "KEYS": 499, + "LABEL": 500, + "LANGUAGE": 501, + "LARGE_P": 502, + "LAST_P": 503, + "LATERAL_P": 504, + "LEADING": 505, + "LEAKPROOF": 506, + "LEAST": 507, + "LEFT": 508, + "LEVEL": 509, + "LIKE": 510, + "LIMIT": 511, + "LISTEN": 512, + "LOAD": 513, + "LOCAL": 514, + "LOCALTIME": 515, + "LOCALTIMESTAMP": 516, + "LOCATION": 517, + "LOCK_P": 518, + "LOCKED": 519, + "LOGGED": 520, + "MAPPING": 521, + "MATCH": 522, + "MATCHED": 523, + "MATERIALIZED": 524, + "MAXVALUE": 525, + "MERGE": 526, + "MERGE_ACTION": 527, + "METHOD": 528, + "MINUTE_P": 529, + "MINVALUE": 530, + "MODE": 531, + "MONTH_P": 532, + "MOVE": 533, + "NAME_P": 534, + "NAMES": 535, + "NATIONAL": 536, + "NATURAL": 537, + "NCHAR": 538, + "NESTED": 539, + "NEW": 540, + "NEXT": 541, + "NFC": 542, + "NFD": 543, + "NFKC": 544, + "NFKD": 545, + "NO": 546, + "NONE": 547, + "NORMALIZE": 548, + "NORMALIZED": 549, + "NOT": 550, + "NOTHING": 551, + "NOTIFY": 552, + "NOTNULL": 553, + "NOWAIT": 554, + "NULL_P": 555, + "NULLIF": 556, + "NULLS_P": 557, + "NUMERIC": 558, + "OBJECT_P": 559, + "OBJECTS_P": 560, + "OF": 561, + "OFF": 562, + "OFFSET": 563, + "OIDS": 564, + "OLD": 565, + "OMIT": 566, + "ON": 567, + "ONLY": 568, + "OPERATOR": 569, + "OPTION": 570, + "OPTIONS": 571, + "OR": 572, + "ORDER": 573, + "ORDINALITY": 574, + "OTHERS": 575, + "OUT_P": 576, + "OUTER_P": 577, + "OVER": 578, + "OVERLAPS": 579, + "OVERLAY": 580, + "OVERRIDING": 581, + "OWNED": 582, + "OWNER": 583, + "PARALLEL": 584, + "PARAMETER": 585, + "PARSER": 586, + "PARTIAL": 587, + "PARTITION": 588, + "PASSING": 589, + "PASSWORD": 590, + "PATH": 591, + "PERIOD": 592, + "PLACING": 593, + "PLAN": 594, + "PLANS": 595, + "POLICY": 596, + "POSITION": 597, + "PRECEDING": 598, + "PRECISION": 599, + "PRESERVE": 600, + "PREPARE": 601, + "PREPARED": 602, + "PRIMARY": 603, + "PRIOR": 604, + "PRIVILEGES": 605, + "PROCEDURAL": 606, + "PROCEDURE": 607, + "PROCEDURES": 608, + "PROGRAM": 609, + "PUBLICATION": 610, + "QUOTE": 611, + "QUOTES": 612, + "RANGE": 613, + "READ": 614, + "REAL": 615, + "REASSIGN": 616, + "RECURSIVE": 617, + "REF_P": 618, + "REFERENCES": 619, + "REFERENCING": 620, + "REFRESH": 621, + "REINDEX": 622, + "RELATIVE_P": 623, + "RELEASE": 624, + "RENAME": 625, + "REPEATABLE": 626, + "REPLACE": 627, + "REPLICA": 628, + "RESET": 629, + "RESTART": 630, + "RESTRICT": 631, + "RETURN": 632, + "RETURNING": 633, + "RETURNS": 634, + "REVOKE": 635, + "RIGHT": 636, + "ROLE": 637, + "ROLLBACK": 638, + "ROLLUP": 639, + "ROUTINE": 640, + "ROUTINES": 641, + "ROW": 642, + "ROWS": 643, + "RULE": 644, + "SAVEPOINT": 645, + "SCALAR": 646, + "SCHEMA": 647, + "SCHEMAS": 648, + "SCROLL": 649, + "SEARCH": 650, + "SECOND_P": 651, + "SECURITY": 652, + "SELECT": 653, + "SEQUENCE": 654, + "SEQUENCES": 655, + "SERIALIZABLE": 656, + "SERVER": 657, + "SESSION": 658, + "SESSION_USER": 659, + "SET": 660, + "SETS": 661, + "SETOF": 662, + "SHARE": 663, + "SHOW": 664, + "SIMILAR": 665, + "SIMPLE": 666, + "SKIP": 667, + "SMALLINT": 668, + "SNAPSHOT": 669, + "SOME": 670, + "SOURCE": 671, + "SQL_P": 672, + "STABLE": 673, + "STANDALONE_P": 674, + "START": 675, + "STATEMENT": 676, + "STATISTICS": 677, + "STDIN": 678, + "STDOUT": 679, + "STORAGE": 680, + "STORED": 681, + "STRICT_P": 682, + "STRING_P": 683, + "STRIP_P": 684, + "SUBSCRIPTION": 685, + "SUBSTRING": 686, + "SUPPORT": 687, + "SYMMETRIC": 688, + "SYSID": 689, + "SYSTEM_P": 690, + "SYSTEM_USER": 691, + "TABLE": 692, + "TABLES": 693, + "TABLESAMPLE": 694, + "TABLESPACE": 695, + "TARGET": 696, + "TEMP": 697, + "TEMPLATE": 698, + "TEMPORARY": 699, + "TEXT_P": 700, + "THEN": 701, + "TIES": 702, + "TIME": 703, + "TIMESTAMP": 704, + "TO": 705, + "TRAILING": 706, + "TRANSACTION": 707, + "TRANSFORM": 708, + "TREAT": 709, + "TRIGGER": 710, + "TRIM": 711, + "TRUE_P": 712, + "TRUNCATE": 713, + "TRUSTED": 714, + "TYPE_P": 715, + "TYPES_P": 716, + "UESCAPE": 717, + "UNBOUNDED": 718, + "UNCONDITIONAL": 719, + "UNCOMMITTED": 720, + "UNENCRYPTED": 721, + "UNION": 722, + "UNIQUE": 723, + "UNKNOWN": 724, + "UNLISTEN": 725, + "UNLOGGED": 726, + "UNTIL": 727, + "UPDATE": 728, + "USER": 729, + "USING": 730, + "VACUUM": 731, + "VALID": 732, + "VALIDATE": 733, + "VALIDATOR": 734, + "VALUE_P": 735, + "VALUES": 736, + "VARCHAR": 737, + "VARIADIC": 738, + "VARYING": 739, + "VERBOSE": 740, + "VERSION_P": 741, + "VIEW": 742, + "VIEWS": 743, + "VIRTUAL": 744, + "VOLATILE": 745, + "WHEN": 746, + "WHERE": 747, + "WHITESPACE_P": 748, + "WINDOW": 749, + "WITH": 750, + "WITHIN": 751, + "WITHOUT": 752, + "WORK": 753, + "WRAPPER": 754, + "WRITE": 755, + "XML_P": 756, + "XMLATTRIBUTES": 757, + "XMLCONCAT": 758, + "XMLELEMENT": 759, + "XMLEXISTS": 760, + "XMLFOREST": 761, + "XMLNAMESPACES": 762, + "XMLPARSE": 763, + "XMLPI": 764, + "XMLROOT": 765, + "XMLSERIALIZE": 766, + "XMLTABLE": 767, + "YEAR_P": 768, + "YES_P": 769, + "ZONE": 770, + "FORMAT_LA": 771, + "NOT_LA": 772, + "NULLS_LA": 773, + "WITH_LA": 774, + "WITHOUT_LA": 775, + "MODE_TYPE_NAME": 776, + "MODE_PLPGSQL_EXPR": 777, + "MODE_PLPGSQL_ASSIGN1": 778, + "MODE_PLPGSQL_ASSIGN2": 779, + "MODE_PLPGSQL_ASSIGN3": 780, + "UMINUS": 781, + } +) + +func (x Token) Enum() *Token { + p := new(Token) + *p = x + return p +} + +func (x Token) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Token) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[72].Descriptor() +} + +func (Token) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[72] +} + +func (x Token) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Token.Descriptor instead. +func (Token) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{72} +} + +type SummaryResult_Context int32 + +const ( + SummaryResult_None SummaryResult_Context = 0 + SummaryResult_Select SummaryResult_Context = 1 + SummaryResult_DML SummaryResult_Context = 2 + SummaryResult_DDL SummaryResult_Context = 3 + SummaryResult_Call SummaryResult_Context = 4 +) + +// Enum value maps for SummaryResult_Context. +var ( + SummaryResult_Context_name = map[int32]string{ + 0: "None", + 1: "Select", + 2: "DML", + 3: "DDL", + 4: "Call", + } + SummaryResult_Context_value = map[string]int32{ + "None": 0, + "Select": 1, + "DML": 2, + "DDL": 3, + "Call": 4, + } +) + +func (x SummaryResult_Context) Enum() *SummaryResult_Context { + p := new(SummaryResult_Context) + *p = x + return p +} + +func (x SummaryResult_Context) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SummaryResult_Context) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[73].Descriptor() +} + +func (SummaryResult_Context) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[73] +} + +func (x SummaryResult_Context) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SummaryResult_Context.Descriptor instead. +func (SummaryResult_Context) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{275, 0} +} + +type ParseResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Stmts []*RawStmt `protobuf:"bytes,2,rep,name=stmts,proto3" json:"stmts,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ParseResult) Reset() { + *x = ParseResult{} + mi := &file_pg_query_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParseResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParseResult) ProtoMessage() {} + +func (x *ParseResult) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParseResult.ProtoReflect.Descriptor instead. +func (*ParseResult) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{0} +} + +func (x *ParseResult) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ParseResult) GetStmts() []*RawStmt { + if x != nil { + return x.Stmts + } + return nil +} + +type ScanResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Tokens []*ScanToken `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScanResult) Reset() { + *x = ScanResult{} + mi := &file_pg_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScanResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScanResult) ProtoMessage() {} + +func (x *ScanResult) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScanResult.ProtoReflect.Descriptor instead. +func (*ScanResult) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{1} +} + +func (x *ScanResult) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *ScanResult) GetTokens() []*ScanToken { + if x != nil { + return x.Tokens + } + return nil +} + +type Node struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Node: + // + // *Node_Alias + // *Node_RangeVar + // *Node_TableFunc + // *Node_IntoClause + // *Node_Var + // *Node_Param + // *Node_Aggref + // *Node_GroupingFunc + // *Node_WindowFunc + // *Node_WindowFuncRunCondition + // *Node_MergeSupportFunc + // *Node_SubscriptingRef + // *Node_FuncExpr + // *Node_NamedArgExpr + // *Node_OpExpr + // *Node_DistinctExpr + // *Node_NullIfExpr + // *Node_ScalarArrayOpExpr + // *Node_BoolExpr + // *Node_SubLink + // *Node_SubPlan + // *Node_AlternativeSubPlan + // *Node_FieldSelect + // *Node_FieldStore + // *Node_RelabelType + // *Node_CoerceViaIo + // *Node_ArrayCoerceExpr + // *Node_ConvertRowtypeExpr + // *Node_CollateExpr + // *Node_CaseExpr + // *Node_CaseWhen + // *Node_CaseTestExpr + // *Node_ArrayExpr + // *Node_RowExpr + // *Node_RowCompareExpr + // *Node_CoalesceExpr + // *Node_MinMaxExpr + // *Node_SqlvalueFunction + // *Node_XmlExpr + // *Node_JsonFormat + // *Node_JsonReturning + // *Node_JsonValueExpr + // *Node_JsonConstructorExpr + // *Node_JsonIsPredicate + // *Node_JsonBehavior + // *Node_JsonExpr + // *Node_JsonTablePath + // *Node_JsonTablePathScan + // *Node_JsonTableSiblingJoin + // *Node_NullTest + // *Node_BooleanTest + // *Node_MergeAction + // *Node_CoerceToDomain + // *Node_CoerceToDomainValue + // *Node_SetToDefault + // *Node_CurrentOfExpr + // *Node_NextValueExpr + // *Node_InferenceElem + // *Node_ReturningExpr + // *Node_TargetEntry + // *Node_RangeTblRef + // *Node_JoinExpr + // *Node_FromExpr + // *Node_OnConflictExpr + // *Node_Query + // *Node_TypeName + // *Node_ColumnRef + // *Node_ParamRef + // *Node_AExpr + // *Node_TypeCast + // *Node_CollateClause + // *Node_RoleSpec + // *Node_FuncCall + // *Node_AStar + // *Node_AIndices + // *Node_AIndirection + // *Node_AArrayExpr + // *Node_ResTarget + // *Node_MultiAssignRef + // *Node_SortBy + // *Node_WindowDef + // *Node_RangeSubselect + // *Node_RangeFunction + // *Node_RangeTableFunc + // *Node_RangeTableFuncCol + // *Node_RangeTableSample + // *Node_ColumnDef + // *Node_TableLikeClause + // *Node_IndexElem + // *Node_DefElem + // *Node_LockingClause + // *Node_XmlSerialize + // *Node_PartitionElem + // *Node_PartitionSpec + // *Node_PartitionBoundSpec + // *Node_PartitionRangeDatum + // *Node_PartitionCmd + // *Node_RangeTblEntry + // *Node_RtepermissionInfo + // *Node_RangeTblFunction + // *Node_TableSampleClause + // *Node_WithCheckOption + // *Node_SortGroupClause + // *Node_GroupingSet + // *Node_WindowClause + // *Node_RowMarkClause + // *Node_WithClause + // *Node_InferClause + // *Node_OnConflictClause + // *Node_CtesearchClause + // *Node_CtecycleClause + // *Node_CommonTableExpr + // *Node_MergeWhenClause + // *Node_ReturningOption + // *Node_ReturningClause + // *Node_TriggerTransition + // *Node_JsonOutput + // *Node_JsonArgument + // *Node_JsonFuncExpr + // *Node_JsonTablePathSpec + // *Node_JsonTable + // *Node_JsonTableColumn + // *Node_JsonKeyValue + // *Node_JsonParseExpr + // *Node_JsonScalarExpr + // *Node_JsonSerializeExpr + // *Node_JsonObjectConstructor + // *Node_JsonArrayConstructor + // *Node_JsonArrayQueryConstructor + // *Node_JsonAggConstructor + // *Node_JsonObjectAgg + // *Node_JsonArrayAgg + // *Node_RawStmt + // *Node_InsertStmt + // *Node_DeleteStmt + // *Node_UpdateStmt + // *Node_MergeStmt + // *Node_SelectStmt + // *Node_SetOperationStmt + // *Node_ReturnStmt + // *Node_PlassignStmt + // *Node_CreateSchemaStmt + // *Node_AlterTableStmt + // *Node_AlterTableCmd + // *Node_AtalterConstraint + // *Node_ReplicaIdentityStmt + // *Node_AlterCollationStmt + // *Node_AlterDomainStmt + // *Node_GrantStmt + // *Node_ObjectWithArgs + // *Node_AccessPriv + // *Node_GrantRoleStmt + // *Node_AlterDefaultPrivilegesStmt + // *Node_CopyStmt + // *Node_VariableSetStmt + // *Node_VariableShowStmt + // *Node_CreateStmt + // *Node_Constraint + // *Node_CreateTableSpaceStmt + // *Node_DropTableSpaceStmt + // *Node_AlterTableSpaceOptionsStmt + // *Node_AlterTableMoveAllStmt + // *Node_CreateExtensionStmt + // *Node_AlterExtensionStmt + // *Node_AlterExtensionContentsStmt + // *Node_CreateFdwStmt + // *Node_AlterFdwStmt + // *Node_CreateForeignServerStmt + // *Node_AlterForeignServerStmt + // *Node_CreateForeignTableStmt + // *Node_CreateUserMappingStmt + // *Node_AlterUserMappingStmt + // *Node_DropUserMappingStmt + // *Node_ImportForeignSchemaStmt + // *Node_CreatePolicyStmt + // *Node_AlterPolicyStmt + // *Node_CreateAmStmt + // *Node_CreateTrigStmt + // *Node_CreateEventTrigStmt + // *Node_AlterEventTrigStmt + // *Node_CreatePlangStmt + // *Node_CreateRoleStmt + // *Node_AlterRoleStmt + // *Node_AlterRoleSetStmt + // *Node_DropRoleStmt + // *Node_CreateSeqStmt + // *Node_AlterSeqStmt + // *Node_DefineStmt + // *Node_CreateDomainStmt + // *Node_CreateOpClassStmt + // *Node_CreateOpClassItem + // *Node_CreateOpFamilyStmt + // *Node_AlterOpFamilyStmt + // *Node_DropStmt + // *Node_TruncateStmt + // *Node_CommentStmt + // *Node_SecLabelStmt + // *Node_DeclareCursorStmt + // *Node_ClosePortalStmt + // *Node_FetchStmt + // *Node_IndexStmt + // *Node_CreateStatsStmt + // *Node_StatsElem + // *Node_AlterStatsStmt + // *Node_CreateFunctionStmt + // *Node_FunctionParameter + // *Node_AlterFunctionStmt + // *Node_DoStmt + // *Node_InlineCodeBlock + // *Node_CallStmt + // *Node_CallContext + // *Node_RenameStmt + // *Node_AlterObjectDependsStmt + // *Node_AlterObjectSchemaStmt + // *Node_AlterOwnerStmt + // *Node_AlterOperatorStmt + // *Node_AlterTypeStmt + // *Node_RuleStmt + // *Node_NotifyStmt + // *Node_ListenStmt + // *Node_UnlistenStmt + // *Node_TransactionStmt + // *Node_CompositeTypeStmt + // *Node_CreateEnumStmt + // *Node_CreateRangeStmt + // *Node_AlterEnumStmt + // *Node_ViewStmt + // *Node_LoadStmt + // *Node_CreatedbStmt + // *Node_AlterDatabaseStmt + // *Node_AlterDatabaseRefreshCollStmt + // *Node_AlterDatabaseSetStmt + // *Node_DropdbStmt + // *Node_AlterSystemStmt + // *Node_ClusterStmt + // *Node_VacuumStmt + // *Node_VacuumRelation + // *Node_ExplainStmt + // *Node_CreateTableAsStmt + // *Node_RefreshMatViewStmt + // *Node_CheckPointStmt + // *Node_DiscardStmt + // *Node_LockStmt + // *Node_ConstraintsSetStmt + // *Node_ReindexStmt + // *Node_CreateConversionStmt + // *Node_CreateCastStmt + // *Node_CreateTransformStmt + // *Node_PrepareStmt + // *Node_ExecuteStmt + // *Node_DeallocateStmt + // *Node_DropOwnedStmt + // *Node_ReassignOwnedStmt + // *Node_AlterTsdictionaryStmt + // *Node_AlterTsconfigurationStmt + // *Node_PublicationTable + // *Node_PublicationObjSpec + // *Node_CreatePublicationStmt + // *Node_AlterPublicationStmt + // *Node_CreateSubscriptionStmt + // *Node_AlterSubscriptionStmt + // *Node_DropSubscriptionStmt + // *Node_Integer + // *Node_Float + // *Node_Boolean + // *Node_String_ + // *Node_BitString + // *Node_List + // *Node_IntList + // *Node_OidList + // *Node_AConst + Node isNode_Node `protobuf_oneof:"node"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Node) Reset() { + *x = Node{} + mi := &file_pg_query_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Node) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Node) ProtoMessage() {} + +func (x *Node) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Node.ProtoReflect.Descriptor instead. +func (*Node) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{2} +} + +func (x *Node) GetNode() isNode_Node { + if x != nil { + return x.Node + } + return nil +} + +func (x *Node) GetAlias() *Alias { + if x != nil { + if x, ok := x.Node.(*Node_Alias); ok { + return x.Alias + } + } + return nil +} + +func (x *Node) GetRangeVar() *RangeVar { + if x != nil { + if x, ok := x.Node.(*Node_RangeVar); ok { + return x.RangeVar + } + } + return nil +} + +func (x *Node) GetTableFunc() *TableFunc { + if x != nil { + if x, ok := x.Node.(*Node_TableFunc); ok { + return x.TableFunc + } + } + return nil +} + +func (x *Node) GetIntoClause() *IntoClause { + if x != nil { + if x, ok := x.Node.(*Node_IntoClause); ok { + return x.IntoClause + } + } + return nil +} + +func (x *Node) GetVar() *Var { + if x != nil { + if x, ok := x.Node.(*Node_Var); ok { + return x.Var + } + } + return nil +} + +func (x *Node) GetParam() *Param { + if x != nil { + if x, ok := x.Node.(*Node_Param); ok { + return x.Param + } + } + return nil +} + +func (x *Node) GetAggref() *Aggref { + if x != nil { + if x, ok := x.Node.(*Node_Aggref); ok { + return x.Aggref + } + } + return nil +} + +func (x *Node) GetGroupingFunc() *GroupingFunc { + if x != nil { + if x, ok := x.Node.(*Node_GroupingFunc); ok { + return x.GroupingFunc + } + } + return nil +} + +func (x *Node) GetWindowFunc() *WindowFunc { + if x != nil { + if x, ok := x.Node.(*Node_WindowFunc); ok { + return x.WindowFunc + } + } + return nil +} + +func (x *Node) GetWindowFuncRunCondition() *WindowFuncRunCondition { + if x != nil { + if x, ok := x.Node.(*Node_WindowFuncRunCondition); ok { + return x.WindowFuncRunCondition + } + } + return nil +} + +func (x *Node) GetMergeSupportFunc() *MergeSupportFunc { + if x != nil { + if x, ok := x.Node.(*Node_MergeSupportFunc); ok { + return x.MergeSupportFunc + } + } + return nil +} + +func (x *Node) GetSubscriptingRef() *SubscriptingRef { + if x != nil { + if x, ok := x.Node.(*Node_SubscriptingRef); ok { + return x.SubscriptingRef + } + } + return nil +} + +func (x *Node) GetFuncExpr() *FuncExpr { + if x != nil { + if x, ok := x.Node.(*Node_FuncExpr); ok { + return x.FuncExpr + } + } + return nil +} + +func (x *Node) GetNamedArgExpr() *NamedArgExpr { + if x != nil { + if x, ok := x.Node.(*Node_NamedArgExpr); ok { + return x.NamedArgExpr + } + } + return nil +} + +func (x *Node) GetOpExpr() *OpExpr { + if x != nil { + if x, ok := x.Node.(*Node_OpExpr); ok { + return x.OpExpr + } + } + return nil +} + +func (x *Node) GetDistinctExpr() *DistinctExpr { + if x != nil { + if x, ok := x.Node.(*Node_DistinctExpr); ok { + return x.DistinctExpr + } + } + return nil +} + +func (x *Node) GetNullIfExpr() *NullIfExpr { + if x != nil { + if x, ok := x.Node.(*Node_NullIfExpr); ok { + return x.NullIfExpr + } + } + return nil +} + +func (x *Node) GetScalarArrayOpExpr() *ScalarArrayOpExpr { + if x != nil { + if x, ok := x.Node.(*Node_ScalarArrayOpExpr); ok { + return x.ScalarArrayOpExpr + } + } + return nil +} + +func (x *Node) GetBoolExpr() *BoolExpr { + if x != nil { + if x, ok := x.Node.(*Node_BoolExpr); ok { + return x.BoolExpr + } + } + return nil +} + +func (x *Node) GetSubLink() *SubLink { + if x != nil { + if x, ok := x.Node.(*Node_SubLink); ok { + return x.SubLink + } + } + return nil +} + +func (x *Node) GetSubPlan() *SubPlan { + if x != nil { + if x, ok := x.Node.(*Node_SubPlan); ok { + return x.SubPlan + } + } + return nil +} + +func (x *Node) GetAlternativeSubPlan() *AlternativeSubPlan { + if x != nil { + if x, ok := x.Node.(*Node_AlternativeSubPlan); ok { + return x.AlternativeSubPlan + } + } + return nil +} + +func (x *Node) GetFieldSelect() *FieldSelect { + if x != nil { + if x, ok := x.Node.(*Node_FieldSelect); ok { + return x.FieldSelect + } + } + return nil +} + +func (x *Node) GetFieldStore() *FieldStore { + if x != nil { + if x, ok := x.Node.(*Node_FieldStore); ok { + return x.FieldStore + } + } + return nil +} + +func (x *Node) GetRelabelType() *RelabelType { + if x != nil { + if x, ok := x.Node.(*Node_RelabelType); ok { + return x.RelabelType + } + } + return nil +} + +func (x *Node) GetCoerceViaIo() *CoerceViaIO { + if x != nil { + if x, ok := x.Node.(*Node_CoerceViaIo); ok { + return x.CoerceViaIo + } + } + return nil +} + +func (x *Node) GetArrayCoerceExpr() *ArrayCoerceExpr { + if x != nil { + if x, ok := x.Node.(*Node_ArrayCoerceExpr); ok { + return x.ArrayCoerceExpr + } + } + return nil +} + +func (x *Node) GetConvertRowtypeExpr() *ConvertRowtypeExpr { + if x != nil { + if x, ok := x.Node.(*Node_ConvertRowtypeExpr); ok { + return x.ConvertRowtypeExpr + } + } + return nil +} + +func (x *Node) GetCollateExpr() *CollateExpr { + if x != nil { + if x, ok := x.Node.(*Node_CollateExpr); ok { + return x.CollateExpr + } + } + return nil +} + +func (x *Node) GetCaseExpr() *CaseExpr { + if x != nil { + if x, ok := x.Node.(*Node_CaseExpr); ok { + return x.CaseExpr + } + } + return nil +} + +func (x *Node) GetCaseWhen() *CaseWhen { + if x != nil { + if x, ok := x.Node.(*Node_CaseWhen); ok { + return x.CaseWhen + } + } + return nil +} + +func (x *Node) GetCaseTestExpr() *CaseTestExpr { + if x != nil { + if x, ok := x.Node.(*Node_CaseTestExpr); ok { + return x.CaseTestExpr + } + } + return nil +} + +func (x *Node) GetArrayExpr() *ArrayExpr { + if x != nil { + if x, ok := x.Node.(*Node_ArrayExpr); ok { + return x.ArrayExpr + } + } + return nil +} + +func (x *Node) GetRowExpr() *RowExpr { + if x != nil { + if x, ok := x.Node.(*Node_RowExpr); ok { + return x.RowExpr + } + } + return nil +} + +func (x *Node) GetRowCompareExpr() *RowCompareExpr { + if x != nil { + if x, ok := x.Node.(*Node_RowCompareExpr); ok { + return x.RowCompareExpr + } + } + return nil +} + +func (x *Node) GetCoalesceExpr() *CoalesceExpr { + if x != nil { + if x, ok := x.Node.(*Node_CoalesceExpr); ok { + return x.CoalesceExpr + } + } + return nil +} + +func (x *Node) GetMinMaxExpr() *MinMaxExpr { + if x != nil { + if x, ok := x.Node.(*Node_MinMaxExpr); ok { + return x.MinMaxExpr + } + } + return nil +} + +func (x *Node) GetSqlvalueFunction() *SQLValueFunction { + if x != nil { + if x, ok := x.Node.(*Node_SqlvalueFunction); ok { + return x.SqlvalueFunction + } + } + return nil +} + +func (x *Node) GetXmlExpr() *XmlExpr { + if x != nil { + if x, ok := x.Node.(*Node_XmlExpr); ok { + return x.XmlExpr + } + } + return nil +} + +func (x *Node) GetJsonFormat() *JsonFormat { + if x != nil { + if x, ok := x.Node.(*Node_JsonFormat); ok { + return x.JsonFormat + } + } + return nil +} + +func (x *Node) GetJsonReturning() *JsonReturning { + if x != nil { + if x, ok := x.Node.(*Node_JsonReturning); ok { + return x.JsonReturning + } + } + return nil +} + +func (x *Node) GetJsonValueExpr() *JsonValueExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonValueExpr); ok { + return x.JsonValueExpr + } + } + return nil +} + +func (x *Node) GetJsonConstructorExpr() *JsonConstructorExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonConstructorExpr); ok { + return x.JsonConstructorExpr + } + } + return nil +} + +func (x *Node) GetJsonIsPredicate() *JsonIsPredicate { + if x != nil { + if x, ok := x.Node.(*Node_JsonIsPredicate); ok { + return x.JsonIsPredicate + } + } + return nil +} + +func (x *Node) GetJsonBehavior() *JsonBehavior { + if x != nil { + if x, ok := x.Node.(*Node_JsonBehavior); ok { + return x.JsonBehavior + } + } + return nil +} + +func (x *Node) GetJsonExpr() *JsonExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonExpr); ok { + return x.JsonExpr + } + } + return nil +} + +func (x *Node) GetJsonTablePath() *JsonTablePath { + if x != nil { + if x, ok := x.Node.(*Node_JsonTablePath); ok { + return x.JsonTablePath + } + } + return nil +} + +func (x *Node) GetJsonTablePathScan() *JsonTablePathScan { + if x != nil { + if x, ok := x.Node.(*Node_JsonTablePathScan); ok { + return x.JsonTablePathScan + } + } + return nil +} + +func (x *Node) GetJsonTableSiblingJoin() *JsonTableSiblingJoin { + if x != nil { + if x, ok := x.Node.(*Node_JsonTableSiblingJoin); ok { + return x.JsonTableSiblingJoin + } + } + return nil +} + +func (x *Node) GetNullTest() *NullTest { + if x != nil { + if x, ok := x.Node.(*Node_NullTest); ok { + return x.NullTest + } + } + return nil +} + +func (x *Node) GetBooleanTest() *BooleanTest { + if x != nil { + if x, ok := x.Node.(*Node_BooleanTest); ok { + return x.BooleanTest + } + } + return nil +} + +func (x *Node) GetMergeAction() *MergeAction { + if x != nil { + if x, ok := x.Node.(*Node_MergeAction); ok { + return x.MergeAction + } + } + return nil +} + +func (x *Node) GetCoerceToDomain() *CoerceToDomain { + if x != nil { + if x, ok := x.Node.(*Node_CoerceToDomain); ok { + return x.CoerceToDomain + } + } + return nil +} + +func (x *Node) GetCoerceToDomainValue() *CoerceToDomainValue { + if x != nil { + if x, ok := x.Node.(*Node_CoerceToDomainValue); ok { + return x.CoerceToDomainValue + } + } + return nil +} + +func (x *Node) GetSetToDefault() *SetToDefault { + if x != nil { + if x, ok := x.Node.(*Node_SetToDefault); ok { + return x.SetToDefault + } + } + return nil +} + +func (x *Node) GetCurrentOfExpr() *CurrentOfExpr { + if x != nil { + if x, ok := x.Node.(*Node_CurrentOfExpr); ok { + return x.CurrentOfExpr + } + } + return nil +} + +func (x *Node) GetNextValueExpr() *NextValueExpr { + if x != nil { + if x, ok := x.Node.(*Node_NextValueExpr); ok { + return x.NextValueExpr + } + } + return nil +} + +func (x *Node) GetInferenceElem() *InferenceElem { + if x != nil { + if x, ok := x.Node.(*Node_InferenceElem); ok { + return x.InferenceElem + } + } + return nil +} + +func (x *Node) GetReturningExpr() *ReturningExpr { + if x != nil { + if x, ok := x.Node.(*Node_ReturningExpr); ok { + return x.ReturningExpr + } + } + return nil +} + +func (x *Node) GetTargetEntry() *TargetEntry { + if x != nil { + if x, ok := x.Node.(*Node_TargetEntry); ok { + return x.TargetEntry + } + } + return nil +} + +func (x *Node) GetRangeTblRef() *RangeTblRef { + if x != nil { + if x, ok := x.Node.(*Node_RangeTblRef); ok { + return x.RangeTblRef + } + } + return nil +} + +func (x *Node) GetJoinExpr() *JoinExpr { + if x != nil { + if x, ok := x.Node.(*Node_JoinExpr); ok { + return x.JoinExpr + } + } + return nil +} + +func (x *Node) GetFromExpr() *FromExpr { + if x != nil { + if x, ok := x.Node.(*Node_FromExpr); ok { + return x.FromExpr + } + } + return nil +} + +func (x *Node) GetOnConflictExpr() *OnConflictExpr { + if x != nil { + if x, ok := x.Node.(*Node_OnConflictExpr); ok { + return x.OnConflictExpr + } + } + return nil +} + +func (x *Node) GetQuery() *Query { + if x != nil { + if x, ok := x.Node.(*Node_Query); ok { + return x.Query + } + } + return nil +} + +func (x *Node) GetTypeName() *TypeName { + if x != nil { + if x, ok := x.Node.(*Node_TypeName); ok { + return x.TypeName + } + } + return nil +} + +func (x *Node) GetColumnRef() *ColumnRef { + if x != nil { + if x, ok := x.Node.(*Node_ColumnRef); ok { + return x.ColumnRef + } + } + return nil +} + +func (x *Node) GetParamRef() *ParamRef { + if x != nil { + if x, ok := x.Node.(*Node_ParamRef); ok { + return x.ParamRef + } + } + return nil +} + +func (x *Node) GetAExpr() *A_Expr { + if x != nil { + if x, ok := x.Node.(*Node_AExpr); ok { + return x.AExpr + } + } + return nil +} + +func (x *Node) GetTypeCast() *TypeCast { + if x != nil { + if x, ok := x.Node.(*Node_TypeCast); ok { + return x.TypeCast + } + } + return nil +} + +func (x *Node) GetCollateClause() *CollateClause { + if x != nil { + if x, ok := x.Node.(*Node_CollateClause); ok { + return x.CollateClause + } + } + return nil +} + +func (x *Node) GetRoleSpec() *RoleSpec { + if x != nil { + if x, ok := x.Node.(*Node_RoleSpec); ok { + return x.RoleSpec + } + } + return nil +} + +func (x *Node) GetFuncCall() *FuncCall { + if x != nil { + if x, ok := x.Node.(*Node_FuncCall); ok { + return x.FuncCall + } + } + return nil +} + +func (x *Node) GetAStar() *A_Star { + if x != nil { + if x, ok := x.Node.(*Node_AStar); ok { + return x.AStar + } + } + return nil +} + +func (x *Node) GetAIndices() *A_Indices { + if x != nil { + if x, ok := x.Node.(*Node_AIndices); ok { + return x.AIndices + } + } + return nil +} + +func (x *Node) GetAIndirection() *A_Indirection { + if x != nil { + if x, ok := x.Node.(*Node_AIndirection); ok { + return x.AIndirection + } + } + return nil +} + +func (x *Node) GetAArrayExpr() *A_ArrayExpr { + if x != nil { + if x, ok := x.Node.(*Node_AArrayExpr); ok { + return x.AArrayExpr + } + } + return nil +} + +func (x *Node) GetResTarget() *ResTarget { + if x != nil { + if x, ok := x.Node.(*Node_ResTarget); ok { + return x.ResTarget + } + } + return nil +} + +func (x *Node) GetMultiAssignRef() *MultiAssignRef { + if x != nil { + if x, ok := x.Node.(*Node_MultiAssignRef); ok { + return x.MultiAssignRef + } + } + return nil +} + +func (x *Node) GetSortBy() *SortBy { + if x != nil { + if x, ok := x.Node.(*Node_SortBy); ok { + return x.SortBy + } + } + return nil +} + +func (x *Node) GetWindowDef() *WindowDef { + if x != nil { + if x, ok := x.Node.(*Node_WindowDef); ok { + return x.WindowDef + } + } + return nil +} + +func (x *Node) GetRangeSubselect() *RangeSubselect { + if x != nil { + if x, ok := x.Node.(*Node_RangeSubselect); ok { + return x.RangeSubselect + } + } + return nil +} + +func (x *Node) GetRangeFunction() *RangeFunction { + if x != nil { + if x, ok := x.Node.(*Node_RangeFunction); ok { + return x.RangeFunction + } + } + return nil +} + +func (x *Node) GetRangeTableFunc() *RangeTableFunc { + if x != nil { + if x, ok := x.Node.(*Node_RangeTableFunc); ok { + return x.RangeTableFunc + } + } + return nil +} + +func (x *Node) GetRangeTableFuncCol() *RangeTableFuncCol { + if x != nil { + if x, ok := x.Node.(*Node_RangeTableFuncCol); ok { + return x.RangeTableFuncCol + } + } + return nil +} + +func (x *Node) GetRangeTableSample() *RangeTableSample { + if x != nil { + if x, ok := x.Node.(*Node_RangeTableSample); ok { + return x.RangeTableSample + } + } + return nil +} + +func (x *Node) GetColumnDef() *ColumnDef { + if x != nil { + if x, ok := x.Node.(*Node_ColumnDef); ok { + return x.ColumnDef + } + } + return nil +} + +func (x *Node) GetTableLikeClause() *TableLikeClause { + if x != nil { + if x, ok := x.Node.(*Node_TableLikeClause); ok { + return x.TableLikeClause + } + } + return nil +} + +func (x *Node) GetIndexElem() *IndexElem { + if x != nil { + if x, ok := x.Node.(*Node_IndexElem); ok { + return x.IndexElem + } + } + return nil +} + +func (x *Node) GetDefElem() *DefElem { + if x != nil { + if x, ok := x.Node.(*Node_DefElem); ok { + return x.DefElem + } + } + return nil +} + +func (x *Node) GetLockingClause() *LockingClause { + if x != nil { + if x, ok := x.Node.(*Node_LockingClause); ok { + return x.LockingClause + } + } + return nil +} + +func (x *Node) GetXmlSerialize() *XmlSerialize { + if x != nil { + if x, ok := x.Node.(*Node_XmlSerialize); ok { + return x.XmlSerialize + } + } + return nil +} + +func (x *Node) GetPartitionElem() *PartitionElem { + if x != nil { + if x, ok := x.Node.(*Node_PartitionElem); ok { + return x.PartitionElem + } + } + return nil +} + +func (x *Node) GetPartitionSpec() *PartitionSpec { + if x != nil { + if x, ok := x.Node.(*Node_PartitionSpec); ok { + return x.PartitionSpec + } + } + return nil +} + +func (x *Node) GetPartitionBoundSpec() *PartitionBoundSpec { + if x != nil { + if x, ok := x.Node.(*Node_PartitionBoundSpec); ok { + return x.PartitionBoundSpec + } + } + return nil +} + +func (x *Node) GetPartitionRangeDatum() *PartitionRangeDatum { + if x != nil { + if x, ok := x.Node.(*Node_PartitionRangeDatum); ok { + return x.PartitionRangeDatum + } + } + return nil +} + +func (x *Node) GetPartitionCmd() *PartitionCmd { + if x != nil { + if x, ok := x.Node.(*Node_PartitionCmd); ok { + return x.PartitionCmd + } + } + return nil +} + +func (x *Node) GetRangeTblEntry() *RangeTblEntry { + if x != nil { + if x, ok := x.Node.(*Node_RangeTblEntry); ok { + return x.RangeTblEntry + } + } + return nil +} + +func (x *Node) GetRtepermissionInfo() *RTEPermissionInfo { + if x != nil { + if x, ok := x.Node.(*Node_RtepermissionInfo); ok { + return x.RtepermissionInfo + } + } + return nil +} + +func (x *Node) GetRangeTblFunction() *RangeTblFunction { + if x != nil { + if x, ok := x.Node.(*Node_RangeTblFunction); ok { + return x.RangeTblFunction + } + } + return nil +} + +func (x *Node) GetTableSampleClause() *TableSampleClause { + if x != nil { + if x, ok := x.Node.(*Node_TableSampleClause); ok { + return x.TableSampleClause + } + } + return nil +} + +func (x *Node) GetWithCheckOption() *WithCheckOption { + if x != nil { + if x, ok := x.Node.(*Node_WithCheckOption); ok { + return x.WithCheckOption + } + } + return nil +} + +func (x *Node) GetSortGroupClause() *SortGroupClause { + if x != nil { + if x, ok := x.Node.(*Node_SortGroupClause); ok { + return x.SortGroupClause + } + } + return nil +} + +func (x *Node) GetGroupingSet() *GroupingSet { + if x != nil { + if x, ok := x.Node.(*Node_GroupingSet); ok { + return x.GroupingSet + } + } + return nil +} + +func (x *Node) GetWindowClause() *WindowClause { + if x != nil { + if x, ok := x.Node.(*Node_WindowClause); ok { + return x.WindowClause + } + } + return nil +} + +func (x *Node) GetRowMarkClause() *RowMarkClause { + if x != nil { + if x, ok := x.Node.(*Node_RowMarkClause); ok { + return x.RowMarkClause + } + } + return nil +} + +func (x *Node) GetWithClause() *WithClause { + if x != nil { + if x, ok := x.Node.(*Node_WithClause); ok { + return x.WithClause + } + } + return nil +} + +func (x *Node) GetInferClause() *InferClause { + if x != nil { + if x, ok := x.Node.(*Node_InferClause); ok { + return x.InferClause + } + } + return nil +} + +func (x *Node) GetOnConflictClause() *OnConflictClause { + if x != nil { + if x, ok := x.Node.(*Node_OnConflictClause); ok { + return x.OnConflictClause + } + } + return nil +} + +func (x *Node) GetCtesearchClause() *CTESearchClause { + if x != nil { + if x, ok := x.Node.(*Node_CtesearchClause); ok { + return x.CtesearchClause + } + } + return nil +} + +func (x *Node) GetCtecycleClause() *CTECycleClause { + if x != nil { + if x, ok := x.Node.(*Node_CtecycleClause); ok { + return x.CtecycleClause + } + } + return nil +} + +func (x *Node) GetCommonTableExpr() *CommonTableExpr { + if x != nil { + if x, ok := x.Node.(*Node_CommonTableExpr); ok { + return x.CommonTableExpr + } + } + return nil +} + +func (x *Node) GetMergeWhenClause() *MergeWhenClause { + if x != nil { + if x, ok := x.Node.(*Node_MergeWhenClause); ok { + return x.MergeWhenClause + } + } + return nil +} + +func (x *Node) GetReturningOption() *ReturningOption { + if x != nil { + if x, ok := x.Node.(*Node_ReturningOption); ok { + return x.ReturningOption + } + } + return nil +} + +func (x *Node) GetReturningClause() *ReturningClause { + if x != nil { + if x, ok := x.Node.(*Node_ReturningClause); ok { + return x.ReturningClause + } + } + return nil +} + +func (x *Node) GetTriggerTransition() *TriggerTransition { + if x != nil { + if x, ok := x.Node.(*Node_TriggerTransition); ok { + return x.TriggerTransition + } + } + return nil +} + +func (x *Node) GetJsonOutput() *JsonOutput { + if x != nil { + if x, ok := x.Node.(*Node_JsonOutput); ok { + return x.JsonOutput + } + } + return nil +} + +func (x *Node) GetJsonArgument() *JsonArgument { + if x != nil { + if x, ok := x.Node.(*Node_JsonArgument); ok { + return x.JsonArgument + } + } + return nil +} + +func (x *Node) GetJsonFuncExpr() *JsonFuncExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonFuncExpr); ok { + return x.JsonFuncExpr + } + } + return nil +} + +func (x *Node) GetJsonTablePathSpec() *JsonTablePathSpec { + if x != nil { + if x, ok := x.Node.(*Node_JsonTablePathSpec); ok { + return x.JsonTablePathSpec + } + } + return nil +} + +func (x *Node) GetJsonTable() *JsonTable { + if x != nil { + if x, ok := x.Node.(*Node_JsonTable); ok { + return x.JsonTable + } + } + return nil +} + +func (x *Node) GetJsonTableColumn() *JsonTableColumn { + if x != nil { + if x, ok := x.Node.(*Node_JsonTableColumn); ok { + return x.JsonTableColumn + } + } + return nil +} + +func (x *Node) GetJsonKeyValue() *JsonKeyValue { + if x != nil { + if x, ok := x.Node.(*Node_JsonKeyValue); ok { + return x.JsonKeyValue + } + } + return nil +} + +func (x *Node) GetJsonParseExpr() *JsonParseExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonParseExpr); ok { + return x.JsonParseExpr + } + } + return nil +} + +func (x *Node) GetJsonScalarExpr() *JsonScalarExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonScalarExpr); ok { + return x.JsonScalarExpr + } + } + return nil +} + +func (x *Node) GetJsonSerializeExpr() *JsonSerializeExpr { + if x != nil { + if x, ok := x.Node.(*Node_JsonSerializeExpr); ok { + return x.JsonSerializeExpr + } + } + return nil +} + +func (x *Node) GetJsonObjectConstructor() *JsonObjectConstructor { + if x != nil { + if x, ok := x.Node.(*Node_JsonObjectConstructor); ok { + return x.JsonObjectConstructor + } + } + return nil +} + +func (x *Node) GetJsonArrayConstructor() *JsonArrayConstructor { + if x != nil { + if x, ok := x.Node.(*Node_JsonArrayConstructor); ok { + return x.JsonArrayConstructor + } + } + return nil +} + +func (x *Node) GetJsonArrayQueryConstructor() *JsonArrayQueryConstructor { + if x != nil { + if x, ok := x.Node.(*Node_JsonArrayQueryConstructor); ok { + return x.JsonArrayQueryConstructor + } + } + return nil +} + +func (x *Node) GetJsonAggConstructor() *JsonAggConstructor { + if x != nil { + if x, ok := x.Node.(*Node_JsonAggConstructor); ok { + return x.JsonAggConstructor + } + } + return nil +} + +func (x *Node) GetJsonObjectAgg() *JsonObjectAgg { + if x != nil { + if x, ok := x.Node.(*Node_JsonObjectAgg); ok { + return x.JsonObjectAgg + } + } + return nil +} + +func (x *Node) GetJsonArrayAgg() *JsonArrayAgg { + if x != nil { + if x, ok := x.Node.(*Node_JsonArrayAgg); ok { + return x.JsonArrayAgg + } + } + return nil +} + +func (x *Node) GetRawStmt() *RawStmt { + if x != nil { + if x, ok := x.Node.(*Node_RawStmt); ok { + return x.RawStmt + } + } + return nil +} + +func (x *Node) GetInsertStmt() *InsertStmt { + if x != nil { + if x, ok := x.Node.(*Node_InsertStmt); ok { + return x.InsertStmt + } + } + return nil +} + +func (x *Node) GetDeleteStmt() *DeleteStmt { + if x != nil { + if x, ok := x.Node.(*Node_DeleteStmt); ok { + return x.DeleteStmt + } + } + return nil +} + +func (x *Node) GetUpdateStmt() *UpdateStmt { + if x != nil { + if x, ok := x.Node.(*Node_UpdateStmt); ok { + return x.UpdateStmt + } + } + return nil +} + +func (x *Node) GetMergeStmt() *MergeStmt { + if x != nil { + if x, ok := x.Node.(*Node_MergeStmt); ok { + return x.MergeStmt + } + } + return nil +} + +func (x *Node) GetSelectStmt() *SelectStmt { + if x != nil { + if x, ok := x.Node.(*Node_SelectStmt); ok { + return x.SelectStmt + } + } + return nil +} + +func (x *Node) GetSetOperationStmt() *SetOperationStmt { + if x != nil { + if x, ok := x.Node.(*Node_SetOperationStmt); ok { + return x.SetOperationStmt + } + } + return nil +} + +func (x *Node) GetReturnStmt() *ReturnStmt { + if x != nil { + if x, ok := x.Node.(*Node_ReturnStmt); ok { + return x.ReturnStmt + } + } + return nil +} + +func (x *Node) GetPlassignStmt() *PLAssignStmt { + if x != nil { + if x, ok := x.Node.(*Node_PlassignStmt); ok { + return x.PlassignStmt + } + } + return nil +} + +func (x *Node) GetCreateSchemaStmt() *CreateSchemaStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateSchemaStmt); ok { + return x.CreateSchemaStmt + } + } + return nil +} + +func (x *Node) GetAlterTableStmt() *AlterTableStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterTableStmt); ok { + return x.AlterTableStmt + } + } + return nil +} + +func (x *Node) GetAlterTableCmd() *AlterTableCmd { + if x != nil { + if x, ok := x.Node.(*Node_AlterTableCmd); ok { + return x.AlterTableCmd + } + } + return nil +} + +func (x *Node) GetAtalterConstraint() *ATAlterConstraint { + if x != nil { + if x, ok := x.Node.(*Node_AtalterConstraint); ok { + return x.AtalterConstraint + } + } + return nil +} + +func (x *Node) GetReplicaIdentityStmt() *ReplicaIdentityStmt { + if x != nil { + if x, ok := x.Node.(*Node_ReplicaIdentityStmt); ok { + return x.ReplicaIdentityStmt + } + } + return nil +} + +func (x *Node) GetAlterCollationStmt() *AlterCollationStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterCollationStmt); ok { + return x.AlterCollationStmt + } + } + return nil +} + +func (x *Node) GetAlterDomainStmt() *AlterDomainStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterDomainStmt); ok { + return x.AlterDomainStmt + } + } + return nil +} + +func (x *Node) GetGrantStmt() *GrantStmt { + if x != nil { + if x, ok := x.Node.(*Node_GrantStmt); ok { + return x.GrantStmt + } + } + return nil +} + +func (x *Node) GetObjectWithArgs() *ObjectWithArgs { + if x != nil { + if x, ok := x.Node.(*Node_ObjectWithArgs); ok { + return x.ObjectWithArgs + } + } + return nil +} + +func (x *Node) GetAccessPriv() *AccessPriv { + if x != nil { + if x, ok := x.Node.(*Node_AccessPriv); ok { + return x.AccessPriv + } + } + return nil +} + +func (x *Node) GetGrantRoleStmt() *GrantRoleStmt { + if x != nil { + if x, ok := x.Node.(*Node_GrantRoleStmt); ok { + return x.GrantRoleStmt + } + } + return nil +} + +func (x *Node) GetAlterDefaultPrivilegesStmt() *AlterDefaultPrivilegesStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterDefaultPrivilegesStmt); ok { + return x.AlterDefaultPrivilegesStmt + } + } + return nil +} + +func (x *Node) GetCopyStmt() *CopyStmt { + if x != nil { + if x, ok := x.Node.(*Node_CopyStmt); ok { + return x.CopyStmt + } + } + return nil +} + +func (x *Node) GetVariableSetStmt() *VariableSetStmt { + if x != nil { + if x, ok := x.Node.(*Node_VariableSetStmt); ok { + return x.VariableSetStmt + } + } + return nil +} + +func (x *Node) GetVariableShowStmt() *VariableShowStmt { + if x != nil { + if x, ok := x.Node.(*Node_VariableShowStmt); ok { + return x.VariableShowStmt + } + } + return nil +} + +func (x *Node) GetCreateStmt() *CreateStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateStmt); ok { + return x.CreateStmt + } + } + return nil +} + +func (x *Node) GetConstraint() *Constraint { + if x != nil { + if x, ok := x.Node.(*Node_Constraint); ok { + return x.Constraint + } + } + return nil +} + +func (x *Node) GetCreateTableSpaceStmt() *CreateTableSpaceStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateTableSpaceStmt); ok { + return x.CreateTableSpaceStmt + } + } + return nil +} + +func (x *Node) GetDropTableSpaceStmt() *DropTableSpaceStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropTableSpaceStmt); ok { + return x.DropTableSpaceStmt + } + } + return nil +} + +func (x *Node) GetAlterTableSpaceOptionsStmt() *AlterTableSpaceOptionsStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterTableSpaceOptionsStmt); ok { + return x.AlterTableSpaceOptionsStmt + } + } + return nil +} + +func (x *Node) GetAlterTableMoveAllStmt() *AlterTableMoveAllStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterTableMoveAllStmt); ok { + return x.AlterTableMoveAllStmt + } + } + return nil +} + +func (x *Node) GetCreateExtensionStmt() *CreateExtensionStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateExtensionStmt); ok { + return x.CreateExtensionStmt + } + } + return nil +} + +func (x *Node) GetAlterExtensionStmt() *AlterExtensionStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterExtensionStmt); ok { + return x.AlterExtensionStmt + } + } + return nil +} + +func (x *Node) GetAlterExtensionContentsStmt() *AlterExtensionContentsStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterExtensionContentsStmt); ok { + return x.AlterExtensionContentsStmt + } + } + return nil +} + +func (x *Node) GetCreateFdwStmt() *CreateFdwStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateFdwStmt); ok { + return x.CreateFdwStmt + } + } + return nil +} + +func (x *Node) GetAlterFdwStmt() *AlterFdwStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterFdwStmt); ok { + return x.AlterFdwStmt + } + } + return nil +} + +func (x *Node) GetCreateForeignServerStmt() *CreateForeignServerStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateForeignServerStmt); ok { + return x.CreateForeignServerStmt + } + } + return nil +} + +func (x *Node) GetAlterForeignServerStmt() *AlterForeignServerStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterForeignServerStmt); ok { + return x.AlterForeignServerStmt + } + } + return nil +} + +func (x *Node) GetCreateForeignTableStmt() *CreateForeignTableStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateForeignTableStmt); ok { + return x.CreateForeignTableStmt + } + } + return nil +} + +func (x *Node) GetCreateUserMappingStmt() *CreateUserMappingStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateUserMappingStmt); ok { + return x.CreateUserMappingStmt + } + } + return nil +} + +func (x *Node) GetAlterUserMappingStmt() *AlterUserMappingStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterUserMappingStmt); ok { + return x.AlterUserMappingStmt + } + } + return nil +} + +func (x *Node) GetDropUserMappingStmt() *DropUserMappingStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropUserMappingStmt); ok { + return x.DropUserMappingStmt + } + } + return nil +} + +func (x *Node) GetImportForeignSchemaStmt() *ImportForeignSchemaStmt { + if x != nil { + if x, ok := x.Node.(*Node_ImportForeignSchemaStmt); ok { + return x.ImportForeignSchemaStmt + } + } + return nil +} + +func (x *Node) GetCreatePolicyStmt() *CreatePolicyStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreatePolicyStmt); ok { + return x.CreatePolicyStmt + } + } + return nil +} + +func (x *Node) GetAlterPolicyStmt() *AlterPolicyStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterPolicyStmt); ok { + return x.AlterPolicyStmt + } + } + return nil +} + +func (x *Node) GetCreateAmStmt() *CreateAmStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateAmStmt); ok { + return x.CreateAmStmt + } + } + return nil +} + +func (x *Node) GetCreateTrigStmt() *CreateTrigStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateTrigStmt); ok { + return x.CreateTrigStmt + } + } + return nil +} + +func (x *Node) GetCreateEventTrigStmt() *CreateEventTrigStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateEventTrigStmt); ok { + return x.CreateEventTrigStmt + } + } + return nil +} + +func (x *Node) GetAlterEventTrigStmt() *AlterEventTrigStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterEventTrigStmt); ok { + return x.AlterEventTrigStmt + } + } + return nil +} + +func (x *Node) GetCreatePlangStmt() *CreatePLangStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreatePlangStmt); ok { + return x.CreatePlangStmt + } + } + return nil +} + +func (x *Node) GetCreateRoleStmt() *CreateRoleStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateRoleStmt); ok { + return x.CreateRoleStmt + } + } + return nil +} + +func (x *Node) GetAlterRoleStmt() *AlterRoleStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterRoleStmt); ok { + return x.AlterRoleStmt + } + } + return nil +} + +func (x *Node) GetAlterRoleSetStmt() *AlterRoleSetStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterRoleSetStmt); ok { + return x.AlterRoleSetStmt + } + } + return nil +} + +func (x *Node) GetDropRoleStmt() *DropRoleStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropRoleStmt); ok { + return x.DropRoleStmt + } + } + return nil +} + +func (x *Node) GetCreateSeqStmt() *CreateSeqStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateSeqStmt); ok { + return x.CreateSeqStmt + } + } + return nil +} + +func (x *Node) GetAlterSeqStmt() *AlterSeqStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterSeqStmt); ok { + return x.AlterSeqStmt + } + } + return nil +} + +func (x *Node) GetDefineStmt() *DefineStmt { + if x != nil { + if x, ok := x.Node.(*Node_DefineStmt); ok { + return x.DefineStmt + } + } + return nil +} + +func (x *Node) GetCreateDomainStmt() *CreateDomainStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateDomainStmt); ok { + return x.CreateDomainStmt + } + } + return nil +} + +func (x *Node) GetCreateOpClassStmt() *CreateOpClassStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateOpClassStmt); ok { + return x.CreateOpClassStmt + } + } + return nil +} + +func (x *Node) GetCreateOpClassItem() *CreateOpClassItem { + if x != nil { + if x, ok := x.Node.(*Node_CreateOpClassItem); ok { + return x.CreateOpClassItem + } + } + return nil +} + +func (x *Node) GetCreateOpFamilyStmt() *CreateOpFamilyStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateOpFamilyStmt); ok { + return x.CreateOpFamilyStmt + } + } + return nil +} + +func (x *Node) GetAlterOpFamilyStmt() *AlterOpFamilyStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterOpFamilyStmt); ok { + return x.AlterOpFamilyStmt + } + } + return nil +} + +func (x *Node) GetDropStmt() *DropStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropStmt); ok { + return x.DropStmt + } + } + return nil +} + +func (x *Node) GetTruncateStmt() *TruncateStmt { + if x != nil { + if x, ok := x.Node.(*Node_TruncateStmt); ok { + return x.TruncateStmt + } + } + return nil +} + +func (x *Node) GetCommentStmt() *CommentStmt { + if x != nil { + if x, ok := x.Node.(*Node_CommentStmt); ok { + return x.CommentStmt + } + } + return nil +} + +func (x *Node) GetSecLabelStmt() *SecLabelStmt { + if x != nil { + if x, ok := x.Node.(*Node_SecLabelStmt); ok { + return x.SecLabelStmt + } + } + return nil +} + +func (x *Node) GetDeclareCursorStmt() *DeclareCursorStmt { + if x != nil { + if x, ok := x.Node.(*Node_DeclareCursorStmt); ok { + return x.DeclareCursorStmt + } + } + return nil +} + +func (x *Node) GetClosePortalStmt() *ClosePortalStmt { + if x != nil { + if x, ok := x.Node.(*Node_ClosePortalStmt); ok { + return x.ClosePortalStmt + } + } + return nil +} + +func (x *Node) GetFetchStmt() *FetchStmt { + if x != nil { + if x, ok := x.Node.(*Node_FetchStmt); ok { + return x.FetchStmt + } + } + return nil +} + +func (x *Node) GetIndexStmt() *IndexStmt { + if x != nil { + if x, ok := x.Node.(*Node_IndexStmt); ok { + return x.IndexStmt + } + } + return nil +} + +func (x *Node) GetCreateStatsStmt() *CreateStatsStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateStatsStmt); ok { + return x.CreateStatsStmt + } + } + return nil +} + +func (x *Node) GetStatsElem() *StatsElem { + if x != nil { + if x, ok := x.Node.(*Node_StatsElem); ok { + return x.StatsElem + } + } + return nil +} + +func (x *Node) GetAlterStatsStmt() *AlterStatsStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterStatsStmt); ok { + return x.AlterStatsStmt + } + } + return nil +} + +func (x *Node) GetCreateFunctionStmt() *CreateFunctionStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateFunctionStmt); ok { + return x.CreateFunctionStmt + } + } + return nil +} + +func (x *Node) GetFunctionParameter() *FunctionParameter { + if x != nil { + if x, ok := x.Node.(*Node_FunctionParameter); ok { + return x.FunctionParameter + } + } + return nil +} + +func (x *Node) GetAlterFunctionStmt() *AlterFunctionStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterFunctionStmt); ok { + return x.AlterFunctionStmt + } + } + return nil +} + +func (x *Node) GetDoStmt() *DoStmt { + if x != nil { + if x, ok := x.Node.(*Node_DoStmt); ok { + return x.DoStmt + } + } + return nil +} + +func (x *Node) GetInlineCodeBlock() *InlineCodeBlock { + if x != nil { + if x, ok := x.Node.(*Node_InlineCodeBlock); ok { + return x.InlineCodeBlock + } + } + return nil +} + +func (x *Node) GetCallStmt() *CallStmt { + if x != nil { + if x, ok := x.Node.(*Node_CallStmt); ok { + return x.CallStmt + } + } + return nil +} + +func (x *Node) GetCallContext() *CallContext { + if x != nil { + if x, ok := x.Node.(*Node_CallContext); ok { + return x.CallContext + } + } + return nil +} + +func (x *Node) GetRenameStmt() *RenameStmt { + if x != nil { + if x, ok := x.Node.(*Node_RenameStmt); ok { + return x.RenameStmt + } + } + return nil +} + +func (x *Node) GetAlterObjectDependsStmt() *AlterObjectDependsStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterObjectDependsStmt); ok { + return x.AlterObjectDependsStmt + } + } + return nil +} + +func (x *Node) GetAlterObjectSchemaStmt() *AlterObjectSchemaStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterObjectSchemaStmt); ok { + return x.AlterObjectSchemaStmt + } + } + return nil +} + +func (x *Node) GetAlterOwnerStmt() *AlterOwnerStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterOwnerStmt); ok { + return x.AlterOwnerStmt + } + } + return nil +} + +func (x *Node) GetAlterOperatorStmt() *AlterOperatorStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterOperatorStmt); ok { + return x.AlterOperatorStmt + } + } + return nil +} + +func (x *Node) GetAlterTypeStmt() *AlterTypeStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterTypeStmt); ok { + return x.AlterTypeStmt + } + } + return nil +} + +func (x *Node) GetRuleStmt() *RuleStmt { + if x != nil { + if x, ok := x.Node.(*Node_RuleStmt); ok { + return x.RuleStmt + } + } + return nil +} + +func (x *Node) GetNotifyStmt() *NotifyStmt { + if x != nil { + if x, ok := x.Node.(*Node_NotifyStmt); ok { + return x.NotifyStmt + } + } + return nil +} + +func (x *Node) GetListenStmt() *ListenStmt { + if x != nil { + if x, ok := x.Node.(*Node_ListenStmt); ok { + return x.ListenStmt + } + } + return nil +} + +func (x *Node) GetUnlistenStmt() *UnlistenStmt { + if x != nil { + if x, ok := x.Node.(*Node_UnlistenStmt); ok { + return x.UnlistenStmt + } + } + return nil +} + +func (x *Node) GetTransactionStmt() *TransactionStmt { + if x != nil { + if x, ok := x.Node.(*Node_TransactionStmt); ok { + return x.TransactionStmt + } + } + return nil +} + +func (x *Node) GetCompositeTypeStmt() *CompositeTypeStmt { + if x != nil { + if x, ok := x.Node.(*Node_CompositeTypeStmt); ok { + return x.CompositeTypeStmt + } + } + return nil +} + +func (x *Node) GetCreateEnumStmt() *CreateEnumStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateEnumStmt); ok { + return x.CreateEnumStmt + } + } + return nil +} + +func (x *Node) GetCreateRangeStmt() *CreateRangeStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateRangeStmt); ok { + return x.CreateRangeStmt + } + } + return nil +} + +func (x *Node) GetAlterEnumStmt() *AlterEnumStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterEnumStmt); ok { + return x.AlterEnumStmt + } + } + return nil +} + +func (x *Node) GetViewStmt() *ViewStmt { + if x != nil { + if x, ok := x.Node.(*Node_ViewStmt); ok { + return x.ViewStmt + } + } + return nil +} + +func (x *Node) GetLoadStmt() *LoadStmt { + if x != nil { + if x, ok := x.Node.(*Node_LoadStmt); ok { + return x.LoadStmt + } + } + return nil +} + +func (x *Node) GetCreatedbStmt() *CreatedbStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreatedbStmt); ok { + return x.CreatedbStmt + } + } + return nil +} + +func (x *Node) GetAlterDatabaseStmt() *AlterDatabaseStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterDatabaseStmt); ok { + return x.AlterDatabaseStmt + } + } + return nil +} + +func (x *Node) GetAlterDatabaseRefreshCollStmt() *AlterDatabaseRefreshCollStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterDatabaseRefreshCollStmt); ok { + return x.AlterDatabaseRefreshCollStmt + } + } + return nil +} + +func (x *Node) GetAlterDatabaseSetStmt() *AlterDatabaseSetStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterDatabaseSetStmt); ok { + return x.AlterDatabaseSetStmt + } + } + return nil +} + +func (x *Node) GetDropdbStmt() *DropdbStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropdbStmt); ok { + return x.DropdbStmt + } + } + return nil +} + +func (x *Node) GetAlterSystemStmt() *AlterSystemStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterSystemStmt); ok { + return x.AlterSystemStmt + } + } + return nil +} + +func (x *Node) GetClusterStmt() *ClusterStmt { + if x != nil { + if x, ok := x.Node.(*Node_ClusterStmt); ok { + return x.ClusterStmt + } + } + return nil +} + +func (x *Node) GetVacuumStmt() *VacuumStmt { + if x != nil { + if x, ok := x.Node.(*Node_VacuumStmt); ok { + return x.VacuumStmt + } + } + return nil +} + +func (x *Node) GetVacuumRelation() *VacuumRelation { + if x != nil { + if x, ok := x.Node.(*Node_VacuumRelation); ok { + return x.VacuumRelation + } + } + return nil +} + +func (x *Node) GetExplainStmt() *ExplainStmt { + if x != nil { + if x, ok := x.Node.(*Node_ExplainStmt); ok { + return x.ExplainStmt + } + } + return nil +} + +func (x *Node) GetCreateTableAsStmt() *CreateTableAsStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateTableAsStmt); ok { + return x.CreateTableAsStmt + } + } + return nil +} + +func (x *Node) GetRefreshMatViewStmt() *RefreshMatViewStmt { + if x != nil { + if x, ok := x.Node.(*Node_RefreshMatViewStmt); ok { + return x.RefreshMatViewStmt + } + } + return nil +} + +func (x *Node) GetCheckPointStmt() *CheckPointStmt { + if x != nil { + if x, ok := x.Node.(*Node_CheckPointStmt); ok { + return x.CheckPointStmt + } + } + return nil +} + +func (x *Node) GetDiscardStmt() *DiscardStmt { + if x != nil { + if x, ok := x.Node.(*Node_DiscardStmt); ok { + return x.DiscardStmt + } + } + return nil +} + +func (x *Node) GetLockStmt() *LockStmt { + if x != nil { + if x, ok := x.Node.(*Node_LockStmt); ok { + return x.LockStmt + } + } + return nil +} + +func (x *Node) GetConstraintsSetStmt() *ConstraintsSetStmt { + if x != nil { + if x, ok := x.Node.(*Node_ConstraintsSetStmt); ok { + return x.ConstraintsSetStmt + } + } + return nil +} + +func (x *Node) GetReindexStmt() *ReindexStmt { + if x != nil { + if x, ok := x.Node.(*Node_ReindexStmt); ok { + return x.ReindexStmt + } + } + return nil +} + +func (x *Node) GetCreateConversionStmt() *CreateConversionStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateConversionStmt); ok { + return x.CreateConversionStmt + } + } + return nil +} + +func (x *Node) GetCreateCastStmt() *CreateCastStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateCastStmt); ok { + return x.CreateCastStmt + } + } + return nil +} + +func (x *Node) GetCreateTransformStmt() *CreateTransformStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateTransformStmt); ok { + return x.CreateTransformStmt + } + } + return nil +} + +func (x *Node) GetPrepareStmt() *PrepareStmt { + if x != nil { + if x, ok := x.Node.(*Node_PrepareStmt); ok { + return x.PrepareStmt + } + } + return nil +} + +func (x *Node) GetExecuteStmt() *ExecuteStmt { + if x != nil { + if x, ok := x.Node.(*Node_ExecuteStmt); ok { + return x.ExecuteStmt + } + } + return nil +} + +func (x *Node) GetDeallocateStmt() *DeallocateStmt { + if x != nil { + if x, ok := x.Node.(*Node_DeallocateStmt); ok { + return x.DeallocateStmt + } + } + return nil +} + +func (x *Node) GetDropOwnedStmt() *DropOwnedStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropOwnedStmt); ok { + return x.DropOwnedStmt + } + } + return nil +} + +func (x *Node) GetReassignOwnedStmt() *ReassignOwnedStmt { + if x != nil { + if x, ok := x.Node.(*Node_ReassignOwnedStmt); ok { + return x.ReassignOwnedStmt + } + } + return nil +} + +func (x *Node) GetAlterTsdictionaryStmt() *AlterTSDictionaryStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterTsdictionaryStmt); ok { + return x.AlterTsdictionaryStmt + } + } + return nil +} + +func (x *Node) GetAlterTsconfigurationStmt() *AlterTSConfigurationStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterTsconfigurationStmt); ok { + return x.AlterTsconfigurationStmt + } + } + return nil +} + +func (x *Node) GetPublicationTable() *PublicationTable { + if x != nil { + if x, ok := x.Node.(*Node_PublicationTable); ok { + return x.PublicationTable + } + } + return nil +} + +func (x *Node) GetPublicationObjSpec() *PublicationObjSpec { + if x != nil { + if x, ok := x.Node.(*Node_PublicationObjSpec); ok { + return x.PublicationObjSpec + } + } + return nil +} + +func (x *Node) GetCreatePublicationStmt() *CreatePublicationStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreatePublicationStmt); ok { + return x.CreatePublicationStmt + } + } + return nil +} + +func (x *Node) GetAlterPublicationStmt() *AlterPublicationStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterPublicationStmt); ok { + return x.AlterPublicationStmt + } + } + return nil +} + +func (x *Node) GetCreateSubscriptionStmt() *CreateSubscriptionStmt { + if x != nil { + if x, ok := x.Node.(*Node_CreateSubscriptionStmt); ok { + return x.CreateSubscriptionStmt + } + } + return nil +} + +func (x *Node) GetAlterSubscriptionStmt() *AlterSubscriptionStmt { + if x != nil { + if x, ok := x.Node.(*Node_AlterSubscriptionStmt); ok { + return x.AlterSubscriptionStmt + } + } + return nil +} + +func (x *Node) GetDropSubscriptionStmt() *DropSubscriptionStmt { + if x != nil { + if x, ok := x.Node.(*Node_DropSubscriptionStmt); ok { + return x.DropSubscriptionStmt + } + } + return nil +} + +func (x *Node) GetInteger() *Integer { + if x != nil { + if x, ok := x.Node.(*Node_Integer); ok { + return x.Integer + } + } + return nil +} + +func (x *Node) GetFloat() *Float { + if x != nil { + if x, ok := x.Node.(*Node_Float); ok { + return x.Float + } + } + return nil +} + +func (x *Node) GetBoolean() *Boolean { + if x != nil { + if x, ok := x.Node.(*Node_Boolean); ok { + return x.Boolean + } + } + return nil +} + +func (x *Node) GetString_() *String { + if x != nil { + if x, ok := x.Node.(*Node_String_); ok { + return x.String_ + } + } + return nil +} + +func (x *Node) GetBitString() *BitString { + if x != nil { + if x, ok := x.Node.(*Node_BitString); ok { + return x.BitString + } + } + return nil +} + +func (x *Node) GetList() *List { + if x != nil { + if x, ok := x.Node.(*Node_List); ok { + return x.List + } + } + return nil +} + +func (x *Node) GetIntList() *IntList { + if x != nil { + if x, ok := x.Node.(*Node_IntList); ok { + return x.IntList + } + } + return nil +} + +func (x *Node) GetOidList() *OidList { + if x != nil { + if x, ok := x.Node.(*Node_OidList); ok { + return x.OidList + } + } + return nil +} + +func (x *Node) GetAConst() *A_Const { + if x != nil { + if x, ok := x.Node.(*Node_AConst); ok { + return x.AConst + } + } + return nil +} + +type isNode_Node interface { + isNode_Node() +} + +type Node_Alias struct { + Alias *Alias `protobuf:"bytes,1,opt,name=alias,json=Alias,proto3,oneof"` +} + +type Node_RangeVar struct { + RangeVar *RangeVar `protobuf:"bytes,2,opt,name=range_var,json=RangeVar,proto3,oneof"` +} + +type Node_TableFunc struct { + TableFunc *TableFunc `protobuf:"bytes,3,opt,name=table_func,json=TableFunc,proto3,oneof"` +} + +type Node_IntoClause struct { + IntoClause *IntoClause `protobuf:"bytes,4,opt,name=into_clause,json=IntoClause,proto3,oneof"` +} + +type Node_Var struct { + Var *Var `protobuf:"bytes,5,opt,name=var,json=Var,proto3,oneof"` +} + +type Node_Param struct { + Param *Param `protobuf:"bytes,6,opt,name=param,json=Param,proto3,oneof"` +} + +type Node_Aggref struct { + Aggref *Aggref `protobuf:"bytes,7,opt,name=aggref,json=Aggref,proto3,oneof"` +} + +type Node_GroupingFunc struct { + GroupingFunc *GroupingFunc `protobuf:"bytes,8,opt,name=grouping_func,json=GroupingFunc,proto3,oneof"` +} + +type Node_WindowFunc struct { + WindowFunc *WindowFunc `protobuf:"bytes,9,opt,name=window_func,json=WindowFunc,proto3,oneof"` +} + +type Node_WindowFuncRunCondition struct { + WindowFuncRunCondition *WindowFuncRunCondition `protobuf:"bytes,10,opt,name=window_func_run_condition,json=WindowFuncRunCondition,proto3,oneof"` +} + +type Node_MergeSupportFunc struct { + MergeSupportFunc *MergeSupportFunc `protobuf:"bytes,11,opt,name=merge_support_func,json=MergeSupportFunc,proto3,oneof"` +} + +type Node_SubscriptingRef struct { + SubscriptingRef *SubscriptingRef `protobuf:"bytes,12,opt,name=subscripting_ref,json=SubscriptingRef,proto3,oneof"` +} + +type Node_FuncExpr struct { + FuncExpr *FuncExpr `protobuf:"bytes,13,opt,name=func_expr,json=FuncExpr,proto3,oneof"` +} + +type Node_NamedArgExpr struct { + NamedArgExpr *NamedArgExpr `protobuf:"bytes,14,opt,name=named_arg_expr,json=NamedArgExpr,proto3,oneof"` +} + +type Node_OpExpr struct { + OpExpr *OpExpr `protobuf:"bytes,15,opt,name=op_expr,json=OpExpr,proto3,oneof"` +} + +type Node_DistinctExpr struct { + DistinctExpr *DistinctExpr `protobuf:"bytes,16,opt,name=distinct_expr,json=DistinctExpr,proto3,oneof"` +} + +type Node_NullIfExpr struct { + NullIfExpr *NullIfExpr `protobuf:"bytes,17,opt,name=null_if_expr,json=NullIfExpr,proto3,oneof"` +} + +type Node_ScalarArrayOpExpr struct { + ScalarArrayOpExpr *ScalarArrayOpExpr `protobuf:"bytes,18,opt,name=scalar_array_op_expr,json=ScalarArrayOpExpr,proto3,oneof"` +} + +type Node_BoolExpr struct { + BoolExpr *BoolExpr `protobuf:"bytes,19,opt,name=bool_expr,json=BoolExpr,proto3,oneof"` +} + +type Node_SubLink struct { + SubLink *SubLink `protobuf:"bytes,20,opt,name=sub_link,json=SubLink,proto3,oneof"` +} + +type Node_SubPlan struct { + SubPlan *SubPlan `protobuf:"bytes,21,opt,name=sub_plan,json=SubPlan,proto3,oneof"` +} + +type Node_AlternativeSubPlan struct { + AlternativeSubPlan *AlternativeSubPlan `protobuf:"bytes,22,opt,name=alternative_sub_plan,json=AlternativeSubPlan,proto3,oneof"` +} + +type Node_FieldSelect struct { + FieldSelect *FieldSelect `protobuf:"bytes,23,opt,name=field_select,json=FieldSelect,proto3,oneof"` +} + +type Node_FieldStore struct { + FieldStore *FieldStore `protobuf:"bytes,24,opt,name=field_store,json=FieldStore,proto3,oneof"` +} + +type Node_RelabelType struct { + RelabelType *RelabelType `protobuf:"bytes,25,opt,name=relabel_type,json=RelabelType,proto3,oneof"` +} + +type Node_CoerceViaIo struct { + CoerceViaIo *CoerceViaIO `protobuf:"bytes,26,opt,name=coerce_via_io,json=CoerceViaIO,proto3,oneof"` +} + +type Node_ArrayCoerceExpr struct { + ArrayCoerceExpr *ArrayCoerceExpr `protobuf:"bytes,27,opt,name=array_coerce_expr,json=ArrayCoerceExpr,proto3,oneof"` +} + +type Node_ConvertRowtypeExpr struct { + ConvertRowtypeExpr *ConvertRowtypeExpr `protobuf:"bytes,28,opt,name=convert_rowtype_expr,json=ConvertRowtypeExpr,proto3,oneof"` +} + +type Node_CollateExpr struct { + CollateExpr *CollateExpr `protobuf:"bytes,29,opt,name=collate_expr,json=CollateExpr,proto3,oneof"` +} + +type Node_CaseExpr struct { + CaseExpr *CaseExpr `protobuf:"bytes,30,opt,name=case_expr,json=CaseExpr,proto3,oneof"` +} + +type Node_CaseWhen struct { + CaseWhen *CaseWhen `protobuf:"bytes,31,opt,name=case_when,json=CaseWhen,proto3,oneof"` +} + +type Node_CaseTestExpr struct { + CaseTestExpr *CaseTestExpr `protobuf:"bytes,32,opt,name=case_test_expr,json=CaseTestExpr,proto3,oneof"` +} + +type Node_ArrayExpr struct { + ArrayExpr *ArrayExpr `protobuf:"bytes,33,opt,name=array_expr,json=ArrayExpr,proto3,oneof"` +} + +type Node_RowExpr struct { + RowExpr *RowExpr `protobuf:"bytes,34,opt,name=row_expr,json=RowExpr,proto3,oneof"` +} + +type Node_RowCompareExpr struct { + RowCompareExpr *RowCompareExpr `protobuf:"bytes,35,opt,name=row_compare_expr,json=RowCompareExpr,proto3,oneof"` +} + +type Node_CoalesceExpr struct { + CoalesceExpr *CoalesceExpr `protobuf:"bytes,36,opt,name=coalesce_expr,json=CoalesceExpr,proto3,oneof"` +} + +type Node_MinMaxExpr struct { + MinMaxExpr *MinMaxExpr `protobuf:"bytes,37,opt,name=min_max_expr,json=MinMaxExpr,proto3,oneof"` +} + +type Node_SqlvalueFunction struct { + SqlvalueFunction *SQLValueFunction `protobuf:"bytes,38,opt,name=sqlvalue_function,json=SQLValueFunction,proto3,oneof"` +} + +type Node_XmlExpr struct { + XmlExpr *XmlExpr `protobuf:"bytes,39,opt,name=xml_expr,json=XmlExpr,proto3,oneof"` +} + +type Node_JsonFormat struct { + JsonFormat *JsonFormat `protobuf:"bytes,40,opt,name=json_format,json=JsonFormat,proto3,oneof"` +} + +type Node_JsonReturning struct { + JsonReturning *JsonReturning `protobuf:"bytes,41,opt,name=json_returning,json=JsonReturning,proto3,oneof"` +} + +type Node_JsonValueExpr struct { + JsonValueExpr *JsonValueExpr `protobuf:"bytes,42,opt,name=json_value_expr,json=JsonValueExpr,proto3,oneof"` +} + +type Node_JsonConstructorExpr struct { + JsonConstructorExpr *JsonConstructorExpr `protobuf:"bytes,43,opt,name=json_constructor_expr,json=JsonConstructorExpr,proto3,oneof"` +} + +type Node_JsonIsPredicate struct { + JsonIsPredicate *JsonIsPredicate `protobuf:"bytes,44,opt,name=json_is_predicate,json=JsonIsPredicate,proto3,oneof"` +} + +type Node_JsonBehavior struct { + JsonBehavior *JsonBehavior `protobuf:"bytes,45,opt,name=json_behavior,json=JsonBehavior,proto3,oneof"` +} + +type Node_JsonExpr struct { + JsonExpr *JsonExpr `protobuf:"bytes,46,opt,name=json_expr,json=JsonExpr,proto3,oneof"` +} + +type Node_JsonTablePath struct { + JsonTablePath *JsonTablePath `protobuf:"bytes,47,opt,name=json_table_path,json=JsonTablePath,proto3,oneof"` +} + +type Node_JsonTablePathScan struct { + JsonTablePathScan *JsonTablePathScan `protobuf:"bytes,48,opt,name=json_table_path_scan,json=JsonTablePathScan,proto3,oneof"` +} + +type Node_JsonTableSiblingJoin struct { + JsonTableSiblingJoin *JsonTableSiblingJoin `protobuf:"bytes,49,opt,name=json_table_sibling_join,json=JsonTableSiblingJoin,proto3,oneof"` +} + +type Node_NullTest struct { + NullTest *NullTest `protobuf:"bytes,50,opt,name=null_test,json=NullTest,proto3,oneof"` +} + +type Node_BooleanTest struct { + BooleanTest *BooleanTest `protobuf:"bytes,51,opt,name=boolean_test,json=BooleanTest,proto3,oneof"` +} + +type Node_MergeAction struct { + MergeAction *MergeAction `protobuf:"bytes,52,opt,name=merge_action,json=MergeAction,proto3,oneof"` +} + +type Node_CoerceToDomain struct { + CoerceToDomain *CoerceToDomain `protobuf:"bytes,53,opt,name=coerce_to_domain,json=CoerceToDomain,proto3,oneof"` +} + +type Node_CoerceToDomainValue struct { + CoerceToDomainValue *CoerceToDomainValue `protobuf:"bytes,54,opt,name=coerce_to_domain_value,json=CoerceToDomainValue,proto3,oneof"` +} + +type Node_SetToDefault struct { + SetToDefault *SetToDefault `protobuf:"bytes,55,opt,name=set_to_default,json=SetToDefault,proto3,oneof"` +} + +type Node_CurrentOfExpr struct { + CurrentOfExpr *CurrentOfExpr `protobuf:"bytes,56,opt,name=current_of_expr,json=CurrentOfExpr,proto3,oneof"` +} + +type Node_NextValueExpr struct { + NextValueExpr *NextValueExpr `protobuf:"bytes,57,opt,name=next_value_expr,json=NextValueExpr,proto3,oneof"` +} + +type Node_InferenceElem struct { + InferenceElem *InferenceElem `protobuf:"bytes,58,opt,name=inference_elem,json=InferenceElem,proto3,oneof"` +} + +type Node_ReturningExpr struct { + ReturningExpr *ReturningExpr `protobuf:"bytes,59,opt,name=returning_expr,json=ReturningExpr,proto3,oneof"` +} + +type Node_TargetEntry struct { + TargetEntry *TargetEntry `protobuf:"bytes,60,opt,name=target_entry,json=TargetEntry,proto3,oneof"` +} + +type Node_RangeTblRef struct { + RangeTblRef *RangeTblRef `protobuf:"bytes,61,opt,name=range_tbl_ref,json=RangeTblRef,proto3,oneof"` +} + +type Node_JoinExpr struct { + JoinExpr *JoinExpr `protobuf:"bytes,62,opt,name=join_expr,json=JoinExpr,proto3,oneof"` +} + +type Node_FromExpr struct { + FromExpr *FromExpr `protobuf:"bytes,63,opt,name=from_expr,json=FromExpr,proto3,oneof"` +} + +type Node_OnConflictExpr struct { + OnConflictExpr *OnConflictExpr `protobuf:"bytes,64,opt,name=on_conflict_expr,json=OnConflictExpr,proto3,oneof"` +} + +type Node_Query struct { + Query *Query `protobuf:"bytes,65,opt,name=query,json=Query,proto3,oneof"` +} + +type Node_TypeName struct { + TypeName *TypeName `protobuf:"bytes,66,opt,name=type_name,json=TypeName,proto3,oneof"` +} + +type Node_ColumnRef struct { + ColumnRef *ColumnRef `protobuf:"bytes,67,opt,name=column_ref,json=ColumnRef,proto3,oneof"` +} + +type Node_ParamRef struct { + ParamRef *ParamRef `protobuf:"bytes,68,opt,name=param_ref,json=ParamRef,proto3,oneof"` +} + +type Node_AExpr struct { + AExpr *A_Expr `protobuf:"bytes,69,opt,name=a_expr,json=A_Expr,proto3,oneof"` +} + +type Node_TypeCast struct { + TypeCast *TypeCast `protobuf:"bytes,70,opt,name=type_cast,json=TypeCast,proto3,oneof"` +} + +type Node_CollateClause struct { + CollateClause *CollateClause `protobuf:"bytes,71,opt,name=collate_clause,json=CollateClause,proto3,oneof"` +} + +type Node_RoleSpec struct { + RoleSpec *RoleSpec `protobuf:"bytes,72,opt,name=role_spec,json=RoleSpec,proto3,oneof"` +} + +type Node_FuncCall struct { + FuncCall *FuncCall `protobuf:"bytes,73,opt,name=func_call,json=FuncCall,proto3,oneof"` +} + +type Node_AStar struct { + AStar *A_Star `protobuf:"bytes,74,opt,name=a_star,json=A_Star,proto3,oneof"` +} + +type Node_AIndices struct { + AIndices *A_Indices `protobuf:"bytes,75,opt,name=a_indices,json=A_Indices,proto3,oneof"` +} + +type Node_AIndirection struct { + AIndirection *A_Indirection `protobuf:"bytes,76,opt,name=a_indirection,json=A_Indirection,proto3,oneof"` +} + +type Node_AArrayExpr struct { + AArrayExpr *A_ArrayExpr `protobuf:"bytes,77,opt,name=a_array_expr,json=A_ArrayExpr,proto3,oneof"` +} + +type Node_ResTarget struct { + ResTarget *ResTarget `protobuf:"bytes,78,opt,name=res_target,json=ResTarget,proto3,oneof"` +} + +type Node_MultiAssignRef struct { + MultiAssignRef *MultiAssignRef `protobuf:"bytes,79,opt,name=multi_assign_ref,json=MultiAssignRef,proto3,oneof"` +} + +type Node_SortBy struct { + SortBy *SortBy `protobuf:"bytes,80,opt,name=sort_by,json=SortBy,proto3,oneof"` +} + +type Node_WindowDef struct { + WindowDef *WindowDef `protobuf:"bytes,81,opt,name=window_def,json=WindowDef,proto3,oneof"` +} + +type Node_RangeSubselect struct { + RangeSubselect *RangeSubselect `protobuf:"bytes,82,opt,name=range_subselect,json=RangeSubselect,proto3,oneof"` +} + +type Node_RangeFunction struct { + RangeFunction *RangeFunction `protobuf:"bytes,83,opt,name=range_function,json=RangeFunction,proto3,oneof"` +} + +type Node_RangeTableFunc struct { + RangeTableFunc *RangeTableFunc `protobuf:"bytes,84,opt,name=range_table_func,json=RangeTableFunc,proto3,oneof"` +} + +type Node_RangeTableFuncCol struct { + RangeTableFuncCol *RangeTableFuncCol `protobuf:"bytes,85,opt,name=range_table_func_col,json=RangeTableFuncCol,proto3,oneof"` +} + +type Node_RangeTableSample struct { + RangeTableSample *RangeTableSample `protobuf:"bytes,86,opt,name=range_table_sample,json=RangeTableSample,proto3,oneof"` +} + +type Node_ColumnDef struct { + ColumnDef *ColumnDef `protobuf:"bytes,87,opt,name=column_def,json=ColumnDef,proto3,oneof"` +} + +type Node_TableLikeClause struct { + TableLikeClause *TableLikeClause `protobuf:"bytes,88,opt,name=table_like_clause,json=TableLikeClause,proto3,oneof"` +} + +type Node_IndexElem struct { + IndexElem *IndexElem `protobuf:"bytes,89,opt,name=index_elem,json=IndexElem,proto3,oneof"` +} + +type Node_DefElem struct { + DefElem *DefElem `protobuf:"bytes,90,opt,name=def_elem,json=DefElem,proto3,oneof"` +} + +type Node_LockingClause struct { + LockingClause *LockingClause `protobuf:"bytes,91,opt,name=locking_clause,json=LockingClause,proto3,oneof"` +} + +type Node_XmlSerialize struct { + XmlSerialize *XmlSerialize `protobuf:"bytes,92,opt,name=xml_serialize,json=XmlSerialize,proto3,oneof"` +} + +type Node_PartitionElem struct { + PartitionElem *PartitionElem `protobuf:"bytes,93,opt,name=partition_elem,json=PartitionElem,proto3,oneof"` +} + +type Node_PartitionSpec struct { + PartitionSpec *PartitionSpec `protobuf:"bytes,94,opt,name=partition_spec,json=PartitionSpec,proto3,oneof"` +} + +type Node_PartitionBoundSpec struct { + PartitionBoundSpec *PartitionBoundSpec `protobuf:"bytes,95,opt,name=partition_bound_spec,json=PartitionBoundSpec,proto3,oneof"` +} + +type Node_PartitionRangeDatum struct { + PartitionRangeDatum *PartitionRangeDatum `protobuf:"bytes,96,opt,name=partition_range_datum,json=PartitionRangeDatum,proto3,oneof"` +} + +type Node_PartitionCmd struct { + PartitionCmd *PartitionCmd `protobuf:"bytes,97,opt,name=partition_cmd,json=PartitionCmd,proto3,oneof"` +} + +type Node_RangeTblEntry struct { + RangeTblEntry *RangeTblEntry `protobuf:"bytes,98,opt,name=range_tbl_entry,json=RangeTblEntry,proto3,oneof"` +} + +type Node_RtepermissionInfo struct { + RtepermissionInfo *RTEPermissionInfo `protobuf:"bytes,99,opt,name=rtepermission_info,json=RTEPermissionInfo,proto3,oneof"` +} + +type Node_RangeTblFunction struct { + RangeTblFunction *RangeTblFunction `protobuf:"bytes,100,opt,name=range_tbl_function,json=RangeTblFunction,proto3,oneof"` +} + +type Node_TableSampleClause struct { + TableSampleClause *TableSampleClause `protobuf:"bytes,101,opt,name=table_sample_clause,json=TableSampleClause,proto3,oneof"` +} + +type Node_WithCheckOption struct { + WithCheckOption *WithCheckOption `protobuf:"bytes,102,opt,name=with_check_option,json=WithCheckOption,proto3,oneof"` +} + +type Node_SortGroupClause struct { + SortGroupClause *SortGroupClause `protobuf:"bytes,103,opt,name=sort_group_clause,json=SortGroupClause,proto3,oneof"` +} + +type Node_GroupingSet struct { + GroupingSet *GroupingSet `protobuf:"bytes,104,opt,name=grouping_set,json=GroupingSet,proto3,oneof"` +} + +type Node_WindowClause struct { + WindowClause *WindowClause `protobuf:"bytes,105,opt,name=window_clause,json=WindowClause,proto3,oneof"` +} + +type Node_RowMarkClause struct { + RowMarkClause *RowMarkClause `protobuf:"bytes,106,opt,name=row_mark_clause,json=RowMarkClause,proto3,oneof"` +} + +type Node_WithClause struct { + WithClause *WithClause `protobuf:"bytes,107,opt,name=with_clause,json=WithClause,proto3,oneof"` +} + +type Node_InferClause struct { + InferClause *InferClause `protobuf:"bytes,108,opt,name=infer_clause,json=InferClause,proto3,oneof"` +} + +type Node_OnConflictClause struct { + OnConflictClause *OnConflictClause `protobuf:"bytes,109,opt,name=on_conflict_clause,json=OnConflictClause,proto3,oneof"` +} + +type Node_CtesearchClause struct { + CtesearchClause *CTESearchClause `protobuf:"bytes,110,opt,name=ctesearch_clause,json=CTESearchClause,proto3,oneof"` +} + +type Node_CtecycleClause struct { + CtecycleClause *CTECycleClause `protobuf:"bytes,111,opt,name=ctecycle_clause,json=CTECycleClause,proto3,oneof"` +} + +type Node_CommonTableExpr struct { + CommonTableExpr *CommonTableExpr `protobuf:"bytes,112,opt,name=common_table_expr,json=CommonTableExpr,proto3,oneof"` +} + +type Node_MergeWhenClause struct { + MergeWhenClause *MergeWhenClause `protobuf:"bytes,113,opt,name=merge_when_clause,json=MergeWhenClause,proto3,oneof"` +} + +type Node_ReturningOption struct { + ReturningOption *ReturningOption `protobuf:"bytes,114,opt,name=returning_option,json=ReturningOption,proto3,oneof"` +} + +type Node_ReturningClause struct { + ReturningClause *ReturningClause `protobuf:"bytes,115,opt,name=returning_clause,json=ReturningClause,proto3,oneof"` +} + +type Node_TriggerTransition struct { + TriggerTransition *TriggerTransition `protobuf:"bytes,116,opt,name=trigger_transition,json=TriggerTransition,proto3,oneof"` +} + +type Node_JsonOutput struct { + JsonOutput *JsonOutput `protobuf:"bytes,117,opt,name=json_output,json=JsonOutput,proto3,oneof"` +} + +type Node_JsonArgument struct { + JsonArgument *JsonArgument `protobuf:"bytes,118,opt,name=json_argument,json=JsonArgument,proto3,oneof"` +} + +type Node_JsonFuncExpr struct { + JsonFuncExpr *JsonFuncExpr `protobuf:"bytes,119,opt,name=json_func_expr,json=JsonFuncExpr,proto3,oneof"` +} + +type Node_JsonTablePathSpec struct { + JsonTablePathSpec *JsonTablePathSpec `protobuf:"bytes,120,opt,name=json_table_path_spec,json=JsonTablePathSpec,proto3,oneof"` +} + +type Node_JsonTable struct { + JsonTable *JsonTable `protobuf:"bytes,121,opt,name=json_table,json=JsonTable,proto3,oneof"` +} + +type Node_JsonTableColumn struct { + JsonTableColumn *JsonTableColumn `protobuf:"bytes,122,opt,name=json_table_column,json=JsonTableColumn,proto3,oneof"` +} + +type Node_JsonKeyValue struct { + JsonKeyValue *JsonKeyValue `protobuf:"bytes,123,opt,name=json_key_value,json=JsonKeyValue,proto3,oneof"` +} + +type Node_JsonParseExpr struct { + JsonParseExpr *JsonParseExpr `protobuf:"bytes,124,opt,name=json_parse_expr,json=JsonParseExpr,proto3,oneof"` +} + +type Node_JsonScalarExpr struct { + JsonScalarExpr *JsonScalarExpr `protobuf:"bytes,125,opt,name=json_scalar_expr,json=JsonScalarExpr,proto3,oneof"` +} + +type Node_JsonSerializeExpr struct { + JsonSerializeExpr *JsonSerializeExpr `protobuf:"bytes,126,opt,name=json_serialize_expr,json=JsonSerializeExpr,proto3,oneof"` +} + +type Node_JsonObjectConstructor struct { + JsonObjectConstructor *JsonObjectConstructor `protobuf:"bytes,127,opt,name=json_object_constructor,json=JsonObjectConstructor,proto3,oneof"` +} + +type Node_JsonArrayConstructor struct { + JsonArrayConstructor *JsonArrayConstructor `protobuf:"bytes,128,opt,name=json_array_constructor,json=JsonArrayConstructor,proto3,oneof"` +} + +type Node_JsonArrayQueryConstructor struct { + JsonArrayQueryConstructor *JsonArrayQueryConstructor `protobuf:"bytes,129,opt,name=json_array_query_constructor,json=JsonArrayQueryConstructor,proto3,oneof"` +} + +type Node_JsonAggConstructor struct { + JsonAggConstructor *JsonAggConstructor `protobuf:"bytes,130,opt,name=json_agg_constructor,json=JsonAggConstructor,proto3,oneof"` +} + +type Node_JsonObjectAgg struct { + JsonObjectAgg *JsonObjectAgg `protobuf:"bytes,131,opt,name=json_object_agg,json=JsonObjectAgg,proto3,oneof"` +} + +type Node_JsonArrayAgg struct { + JsonArrayAgg *JsonArrayAgg `protobuf:"bytes,132,opt,name=json_array_agg,json=JsonArrayAgg,proto3,oneof"` +} + +type Node_RawStmt struct { + RawStmt *RawStmt `protobuf:"bytes,133,opt,name=raw_stmt,json=RawStmt,proto3,oneof"` +} + +type Node_InsertStmt struct { + InsertStmt *InsertStmt `protobuf:"bytes,134,opt,name=insert_stmt,json=InsertStmt,proto3,oneof"` +} + +type Node_DeleteStmt struct { + DeleteStmt *DeleteStmt `protobuf:"bytes,135,opt,name=delete_stmt,json=DeleteStmt,proto3,oneof"` +} + +type Node_UpdateStmt struct { + UpdateStmt *UpdateStmt `protobuf:"bytes,136,opt,name=update_stmt,json=UpdateStmt,proto3,oneof"` +} + +type Node_MergeStmt struct { + MergeStmt *MergeStmt `protobuf:"bytes,137,opt,name=merge_stmt,json=MergeStmt,proto3,oneof"` +} + +type Node_SelectStmt struct { + SelectStmt *SelectStmt `protobuf:"bytes,138,opt,name=select_stmt,json=SelectStmt,proto3,oneof"` +} + +type Node_SetOperationStmt struct { + SetOperationStmt *SetOperationStmt `protobuf:"bytes,139,opt,name=set_operation_stmt,json=SetOperationStmt,proto3,oneof"` +} + +type Node_ReturnStmt struct { + ReturnStmt *ReturnStmt `protobuf:"bytes,140,opt,name=return_stmt,json=ReturnStmt,proto3,oneof"` +} + +type Node_PlassignStmt struct { + PlassignStmt *PLAssignStmt `protobuf:"bytes,141,opt,name=plassign_stmt,json=PLAssignStmt,proto3,oneof"` +} + +type Node_CreateSchemaStmt struct { + CreateSchemaStmt *CreateSchemaStmt `protobuf:"bytes,142,opt,name=create_schema_stmt,json=CreateSchemaStmt,proto3,oneof"` +} + +type Node_AlterTableStmt struct { + AlterTableStmt *AlterTableStmt `protobuf:"bytes,143,opt,name=alter_table_stmt,json=AlterTableStmt,proto3,oneof"` +} + +type Node_AlterTableCmd struct { + AlterTableCmd *AlterTableCmd `protobuf:"bytes,144,opt,name=alter_table_cmd,json=AlterTableCmd,proto3,oneof"` +} + +type Node_AtalterConstraint struct { + AtalterConstraint *ATAlterConstraint `protobuf:"bytes,145,opt,name=atalter_constraint,json=ATAlterConstraint,proto3,oneof"` +} + +type Node_ReplicaIdentityStmt struct { + ReplicaIdentityStmt *ReplicaIdentityStmt `protobuf:"bytes,146,opt,name=replica_identity_stmt,json=ReplicaIdentityStmt,proto3,oneof"` +} + +type Node_AlterCollationStmt struct { + AlterCollationStmt *AlterCollationStmt `protobuf:"bytes,147,opt,name=alter_collation_stmt,json=AlterCollationStmt,proto3,oneof"` +} + +type Node_AlterDomainStmt struct { + AlterDomainStmt *AlterDomainStmt `protobuf:"bytes,148,opt,name=alter_domain_stmt,json=AlterDomainStmt,proto3,oneof"` +} + +type Node_GrantStmt struct { + GrantStmt *GrantStmt `protobuf:"bytes,149,opt,name=grant_stmt,json=GrantStmt,proto3,oneof"` +} + +type Node_ObjectWithArgs struct { + ObjectWithArgs *ObjectWithArgs `protobuf:"bytes,150,opt,name=object_with_args,json=ObjectWithArgs,proto3,oneof"` +} + +type Node_AccessPriv struct { + AccessPriv *AccessPriv `protobuf:"bytes,151,opt,name=access_priv,json=AccessPriv,proto3,oneof"` +} + +type Node_GrantRoleStmt struct { + GrantRoleStmt *GrantRoleStmt `protobuf:"bytes,152,opt,name=grant_role_stmt,json=GrantRoleStmt,proto3,oneof"` +} + +type Node_AlterDefaultPrivilegesStmt struct { + AlterDefaultPrivilegesStmt *AlterDefaultPrivilegesStmt `protobuf:"bytes,153,opt,name=alter_default_privileges_stmt,json=AlterDefaultPrivilegesStmt,proto3,oneof"` +} + +type Node_CopyStmt struct { + CopyStmt *CopyStmt `protobuf:"bytes,154,opt,name=copy_stmt,json=CopyStmt,proto3,oneof"` +} + +type Node_VariableSetStmt struct { + VariableSetStmt *VariableSetStmt `protobuf:"bytes,155,opt,name=variable_set_stmt,json=VariableSetStmt,proto3,oneof"` +} + +type Node_VariableShowStmt struct { + VariableShowStmt *VariableShowStmt `protobuf:"bytes,156,opt,name=variable_show_stmt,json=VariableShowStmt,proto3,oneof"` +} + +type Node_CreateStmt struct { + CreateStmt *CreateStmt `protobuf:"bytes,157,opt,name=create_stmt,json=CreateStmt,proto3,oneof"` +} + +type Node_Constraint struct { + Constraint *Constraint `protobuf:"bytes,158,opt,name=constraint,json=Constraint,proto3,oneof"` +} + +type Node_CreateTableSpaceStmt struct { + CreateTableSpaceStmt *CreateTableSpaceStmt `protobuf:"bytes,159,opt,name=create_table_space_stmt,json=CreateTableSpaceStmt,proto3,oneof"` +} + +type Node_DropTableSpaceStmt struct { + DropTableSpaceStmt *DropTableSpaceStmt `protobuf:"bytes,160,opt,name=drop_table_space_stmt,json=DropTableSpaceStmt,proto3,oneof"` +} + +type Node_AlterTableSpaceOptionsStmt struct { + AlterTableSpaceOptionsStmt *AlterTableSpaceOptionsStmt `protobuf:"bytes,161,opt,name=alter_table_space_options_stmt,json=AlterTableSpaceOptionsStmt,proto3,oneof"` +} + +type Node_AlterTableMoveAllStmt struct { + AlterTableMoveAllStmt *AlterTableMoveAllStmt `protobuf:"bytes,162,opt,name=alter_table_move_all_stmt,json=AlterTableMoveAllStmt,proto3,oneof"` +} + +type Node_CreateExtensionStmt struct { + CreateExtensionStmt *CreateExtensionStmt `protobuf:"bytes,163,opt,name=create_extension_stmt,json=CreateExtensionStmt,proto3,oneof"` +} + +type Node_AlterExtensionStmt struct { + AlterExtensionStmt *AlterExtensionStmt `protobuf:"bytes,164,opt,name=alter_extension_stmt,json=AlterExtensionStmt,proto3,oneof"` +} + +type Node_AlterExtensionContentsStmt struct { + AlterExtensionContentsStmt *AlterExtensionContentsStmt `protobuf:"bytes,165,opt,name=alter_extension_contents_stmt,json=AlterExtensionContentsStmt,proto3,oneof"` +} + +type Node_CreateFdwStmt struct { + CreateFdwStmt *CreateFdwStmt `protobuf:"bytes,166,opt,name=create_fdw_stmt,json=CreateFdwStmt,proto3,oneof"` +} + +type Node_AlterFdwStmt struct { + AlterFdwStmt *AlterFdwStmt `protobuf:"bytes,167,opt,name=alter_fdw_stmt,json=AlterFdwStmt,proto3,oneof"` +} + +type Node_CreateForeignServerStmt struct { + CreateForeignServerStmt *CreateForeignServerStmt `protobuf:"bytes,168,opt,name=create_foreign_server_stmt,json=CreateForeignServerStmt,proto3,oneof"` +} + +type Node_AlterForeignServerStmt struct { + AlterForeignServerStmt *AlterForeignServerStmt `protobuf:"bytes,169,opt,name=alter_foreign_server_stmt,json=AlterForeignServerStmt,proto3,oneof"` +} + +type Node_CreateForeignTableStmt struct { + CreateForeignTableStmt *CreateForeignTableStmt `protobuf:"bytes,170,opt,name=create_foreign_table_stmt,json=CreateForeignTableStmt,proto3,oneof"` +} + +type Node_CreateUserMappingStmt struct { + CreateUserMappingStmt *CreateUserMappingStmt `protobuf:"bytes,171,opt,name=create_user_mapping_stmt,json=CreateUserMappingStmt,proto3,oneof"` +} + +type Node_AlterUserMappingStmt struct { + AlterUserMappingStmt *AlterUserMappingStmt `protobuf:"bytes,172,opt,name=alter_user_mapping_stmt,json=AlterUserMappingStmt,proto3,oneof"` +} + +type Node_DropUserMappingStmt struct { + DropUserMappingStmt *DropUserMappingStmt `protobuf:"bytes,173,opt,name=drop_user_mapping_stmt,json=DropUserMappingStmt,proto3,oneof"` +} + +type Node_ImportForeignSchemaStmt struct { + ImportForeignSchemaStmt *ImportForeignSchemaStmt `protobuf:"bytes,174,opt,name=import_foreign_schema_stmt,json=ImportForeignSchemaStmt,proto3,oneof"` +} + +type Node_CreatePolicyStmt struct { + CreatePolicyStmt *CreatePolicyStmt `protobuf:"bytes,175,opt,name=create_policy_stmt,json=CreatePolicyStmt,proto3,oneof"` +} + +type Node_AlterPolicyStmt struct { + AlterPolicyStmt *AlterPolicyStmt `protobuf:"bytes,176,opt,name=alter_policy_stmt,json=AlterPolicyStmt,proto3,oneof"` +} + +type Node_CreateAmStmt struct { + CreateAmStmt *CreateAmStmt `protobuf:"bytes,177,opt,name=create_am_stmt,json=CreateAmStmt,proto3,oneof"` +} + +type Node_CreateTrigStmt struct { + CreateTrigStmt *CreateTrigStmt `protobuf:"bytes,178,opt,name=create_trig_stmt,json=CreateTrigStmt,proto3,oneof"` +} + +type Node_CreateEventTrigStmt struct { + CreateEventTrigStmt *CreateEventTrigStmt `protobuf:"bytes,179,opt,name=create_event_trig_stmt,json=CreateEventTrigStmt,proto3,oneof"` +} + +type Node_AlterEventTrigStmt struct { + AlterEventTrigStmt *AlterEventTrigStmt `protobuf:"bytes,180,opt,name=alter_event_trig_stmt,json=AlterEventTrigStmt,proto3,oneof"` +} + +type Node_CreatePlangStmt struct { + CreatePlangStmt *CreatePLangStmt `protobuf:"bytes,181,opt,name=create_plang_stmt,json=CreatePLangStmt,proto3,oneof"` +} + +type Node_CreateRoleStmt struct { + CreateRoleStmt *CreateRoleStmt `protobuf:"bytes,182,opt,name=create_role_stmt,json=CreateRoleStmt,proto3,oneof"` +} + +type Node_AlterRoleStmt struct { + AlterRoleStmt *AlterRoleStmt `protobuf:"bytes,183,opt,name=alter_role_stmt,json=AlterRoleStmt,proto3,oneof"` +} + +type Node_AlterRoleSetStmt struct { + AlterRoleSetStmt *AlterRoleSetStmt `protobuf:"bytes,184,opt,name=alter_role_set_stmt,json=AlterRoleSetStmt,proto3,oneof"` +} + +type Node_DropRoleStmt struct { + DropRoleStmt *DropRoleStmt `protobuf:"bytes,185,opt,name=drop_role_stmt,json=DropRoleStmt,proto3,oneof"` +} + +type Node_CreateSeqStmt struct { + CreateSeqStmt *CreateSeqStmt `protobuf:"bytes,186,opt,name=create_seq_stmt,json=CreateSeqStmt,proto3,oneof"` +} + +type Node_AlterSeqStmt struct { + AlterSeqStmt *AlterSeqStmt `protobuf:"bytes,187,opt,name=alter_seq_stmt,json=AlterSeqStmt,proto3,oneof"` +} + +type Node_DefineStmt struct { + DefineStmt *DefineStmt `protobuf:"bytes,188,opt,name=define_stmt,json=DefineStmt,proto3,oneof"` +} + +type Node_CreateDomainStmt struct { + CreateDomainStmt *CreateDomainStmt `protobuf:"bytes,189,opt,name=create_domain_stmt,json=CreateDomainStmt,proto3,oneof"` +} + +type Node_CreateOpClassStmt struct { + CreateOpClassStmt *CreateOpClassStmt `protobuf:"bytes,190,opt,name=create_op_class_stmt,json=CreateOpClassStmt,proto3,oneof"` +} + +type Node_CreateOpClassItem struct { + CreateOpClassItem *CreateOpClassItem `protobuf:"bytes,191,opt,name=create_op_class_item,json=CreateOpClassItem,proto3,oneof"` +} + +type Node_CreateOpFamilyStmt struct { + CreateOpFamilyStmt *CreateOpFamilyStmt `protobuf:"bytes,192,opt,name=create_op_family_stmt,json=CreateOpFamilyStmt,proto3,oneof"` +} + +type Node_AlterOpFamilyStmt struct { + AlterOpFamilyStmt *AlterOpFamilyStmt `protobuf:"bytes,193,opt,name=alter_op_family_stmt,json=AlterOpFamilyStmt,proto3,oneof"` +} + +type Node_DropStmt struct { + DropStmt *DropStmt `protobuf:"bytes,194,opt,name=drop_stmt,json=DropStmt,proto3,oneof"` +} + +type Node_TruncateStmt struct { + TruncateStmt *TruncateStmt `protobuf:"bytes,195,opt,name=truncate_stmt,json=TruncateStmt,proto3,oneof"` +} + +type Node_CommentStmt struct { + CommentStmt *CommentStmt `protobuf:"bytes,196,opt,name=comment_stmt,json=CommentStmt,proto3,oneof"` +} + +type Node_SecLabelStmt struct { + SecLabelStmt *SecLabelStmt `protobuf:"bytes,197,opt,name=sec_label_stmt,json=SecLabelStmt,proto3,oneof"` +} + +type Node_DeclareCursorStmt struct { + DeclareCursorStmt *DeclareCursorStmt `protobuf:"bytes,198,opt,name=declare_cursor_stmt,json=DeclareCursorStmt,proto3,oneof"` +} + +type Node_ClosePortalStmt struct { + ClosePortalStmt *ClosePortalStmt `protobuf:"bytes,199,opt,name=close_portal_stmt,json=ClosePortalStmt,proto3,oneof"` +} + +type Node_FetchStmt struct { + FetchStmt *FetchStmt `protobuf:"bytes,200,opt,name=fetch_stmt,json=FetchStmt,proto3,oneof"` +} + +type Node_IndexStmt struct { + IndexStmt *IndexStmt `protobuf:"bytes,201,opt,name=index_stmt,json=IndexStmt,proto3,oneof"` +} + +type Node_CreateStatsStmt struct { + CreateStatsStmt *CreateStatsStmt `protobuf:"bytes,202,opt,name=create_stats_stmt,json=CreateStatsStmt,proto3,oneof"` +} + +type Node_StatsElem struct { + StatsElem *StatsElem `protobuf:"bytes,203,opt,name=stats_elem,json=StatsElem,proto3,oneof"` +} + +type Node_AlterStatsStmt struct { + AlterStatsStmt *AlterStatsStmt `protobuf:"bytes,204,opt,name=alter_stats_stmt,json=AlterStatsStmt,proto3,oneof"` +} + +type Node_CreateFunctionStmt struct { + CreateFunctionStmt *CreateFunctionStmt `protobuf:"bytes,205,opt,name=create_function_stmt,json=CreateFunctionStmt,proto3,oneof"` +} + +type Node_FunctionParameter struct { + FunctionParameter *FunctionParameter `protobuf:"bytes,206,opt,name=function_parameter,json=FunctionParameter,proto3,oneof"` +} + +type Node_AlterFunctionStmt struct { + AlterFunctionStmt *AlterFunctionStmt `protobuf:"bytes,207,opt,name=alter_function_stmt,json=AlterFunctionStmt,proto3,oneof"` +} + +type Node_DoStmt struct { + DoStmt *DoStmt `protobuf:"bytes,208,opt,name=do_stmt,json=DoStmt,proto3,oneof"` +} + +type Node_InlineCodeBlock struct { + InlineCodeBlock *InlineCodeBlock `protobuf:"bytes,209,opt,name=inline_code_block,json=InlineCodeBlock,proto3,oneof"` +} + +type Node_CallStmt struct { + CallStmt *CallStmt `protobuf:"bytes,210,opt,name=call_stmt,json=CallStmt,proto3,oneof"` +} + +type Node_CallContext struct { + CallContext *CallContext `protobuf:"bytes,211,opt,name=call_context,json=CallContext,proto3,oneof"` +} + +type Node_RenameStmt struct { + RenameStmt *RenameStmt `protobuf:"bytes,212,opt,name=rename_stmt,json=RenameStmt,proto3,oneof"` +} + +type Node_AlterObjectDependsStmt struct { + AlterObjectDependsStmt *AlterObjectDependsStmt `protobuf:"bytes,213,opt,name=alter_object_depends_stmt,json=AlterObjectDependsStmt,proto3,oneof"` +} + +type Node_AlterObjectSchemaStmt struct { + AlterObjectSchemaStmt *AlterObjectSchemaStmt `protobuf:"bytes,214,opt,name=alter_object_schema_stmt,json=AlterObjectSchemaStmt,proto3,oneof"` +} + +type Node_AlterOwnerStmt struct { + AlterOwnerStmt *AlterOwnerStmt `protobuf:"bytes,215,opt,name=alter_owner_stmt,json=AlterOwnerStmt,proto3,oneof"` +} + +type Node_AlterOperatorStmt struct { + AlterOperatorStmt *AlterOperatorStmt `protobuf:"bytes,216,opt,name=alter_operator_stmt,json=AlterOperatorStmt,proto3,oneof"` +} + +type Node_AlterTypeStmt struct { + AlterTypeStmt *AlterTypeStmt `protobuf:"bytes,217,opt,name=alter_type_stmt,json=AlterTypeStmt,proto3,oneof"` +} + +type Node_RuleStmt struct { + RuleStmt *RuleStmt `protobuf:"bytes,218,opt,name=rule_stmt,json=RuleStmt,proto3,oneof"` +} + +type Node_NotifyStmt struct { + NotifyStmt *NotifyStmt `protobuf:"bytes,219,opt,name=notify_stmt,json=NotifyStmt,proto3,oneof"` +} + +type Node_ListenStmt struct { + ListenStmt *ListenStmt `protobuf:"bytes,220,opt,name=listen_stmt,json=ListenStmt,proto3,oneof"` +} + +type Node_UnlistenStmt struct { + UnlistenStmt *UnlistenStmt `protobuf:"bytes,221,opt,name=unlisten_stmt,json=UnlistenStmt,proto3,oneof"` +} + +type Node_TransactionStmt struct { + TransactionStmt *TransactionStmt `protobuf:"bytes,222,opt,name=transaction_stmt,json=TransactionStmt,proto3,oneof"` +} + +type Node_CompositeTypeStmt struct { + CompositeTypeStmt *CompositeTypeStmt `protobuf:"bytes,223,opt,name=composite_type_stmt,json=CompositeTypeStmt,proto3,oneof"` +} + +type Node_CreateEnumStmt struct { + CreateEnumStmt *CreateEnumStmt `protobuf:"bytes,224,opt,name=create_enum_stmt,json=CreateEnumStmt,proto3,oneof"` +} + +type Node_CreateRangeStmt struct { + CreateRangeStmt *CreateRangeStmt `protobuf:"bytes,225,opt,name=create_range_stmt,json=CreateRangeStmt,proto3,oneof"` +} + +type Node_AlterEnumStmt struct { + AlterEnumStmt *AlterEnumStmt `protobuf:"bytes,226,opt,name=alter_enum_stmt,json=AlterEnumStmt,proto3,oneof"` +} + +type Node_ViewStmt struct { + ViewStmt *ViewStmt `protobuf:"bytes,227,opt,name=view_stmt,json=ViewStmt,proto3,oneof"` +} + +type Node_LoadStmt struct { + LoadStmt *LoadStmt `protobuf:"bytes,228,opt,name=load_stmt,json=LoadStmt,proto3,oneof"` +} + +type Node_CreatedbStmt struct { + CreatedbStmt *CreatedbStmt `protobuf:"bytes,229,opt,name=createdb_stmt,json=CreatedbStmt,proto3,oneof"` +} + +type Node_AlterDatabaseStmt struct { + AlterDatabaseStmt *AlterDatabaseStmt `protobuf:"bytes,230,opt,name=alter_database_stmt,json=AlterDatabaseStmt,proto3,oneof"` +} + +type Node_AlterDatabaseRefreshCollStmt struct { + AlterDatabaseRefreshCollStmt *AlterDatabaseRefreshCollStmt `protobuf:"bytes,231,opt,name=alter_database_refresh_coll_stmt,json=AlterDatabaseRefreshCollStmt,proto3,oneof"` +} + +type Node_AlterDatabaseSetStmt struct { + AlterDatabaseSetStmt *AlterDatabaseSetStmt `protobuf:"bytes,232,opt,name=alter_database_set_stmt,json=AlterDatabaseSetStmt,proto3,oneof"` +} + +type Node_DropdbStmt struct { + DropdbStmt *DropdbStmt `protobuf:"bytes,233,opt,name=dropdb_stmt,json=DropdbStmt,proto3,oneof"` +} + +type Node_AlterSystemStmt struct { + AlterSystemStmt *AlterSystemStmt `protobuf:"bytes,234,opt,name=alter_system_stmt,json=AlterSystemStmt,proto3,oneof"` +} + +type Node_ClusterStmt struct { + ClusterStmt *ClusterStmt `protobuf:"bytes,235,opt,name=cluster_stmt,json=ClusterStmt,proto3,oneof"` +} + +type Node_VacuumStmt struct { + VacuumStmt *VacuumStmt `protobuf:"bytes,236,opt,name=vacuum_stmt,json=VacuumStmt,proto3,oneof"` +} + +type Node_VacuumRelation struct { + VacuumRelation *VacuumRelation `protobuf:"bytes,237,opt,name=vacuum_relation,json=VacuumRelation,proto3,oneof"` +} + +type Node_ExplainStmt struct { + ExplainStmt *ExplainStmt `protobuf:"bytes,238,opt,name=explain_stmt,json=ExplainStmt,proto3,oneof"` +} + +type Node_CreateTableAsStmt struct { + CreateTableAsStmt *CreateTableAsStmt `protobuf:"bytes,239,opt,name=create_table_as_stmt,json=CreateTableAsStmt,proto3,oneof"` +} + +type Node_RefreshMatViewStmt struct { + RefreshMatViewStmt *RefreshMatViewStmt `protobuf:"bytes,240,opt,name=refresh_mat_view_stmt,json=RefreshMatViewStmt,proto3,oneof"` +} + +type Node_CheckPointStmt struct { + CheckPointStmt *CheckPointStmt `protobuf:"bytes,241,opt,name=check_point_stmt,json=CheckPointStmt,proto3,oneof"` +} + +type Node_DiscardStmt struct { + DiscardStmt *DiscardStmt `protobuf:"bytes,242,opt,name=discard_stmt,json=DiscardStmt,proto3,oneof"` +} + +type Node_LockStmt struct { + LockStmt *LockStmt `protobuf:"bytes,243,opt,name=lock_stmt,json=LockStmt,proto3,oneof"` +} + +type Node_ConstraintsSetStmt struct { + ConstraintsSetStmt *ConstraintsSetStmt `protobuf:"bytes,244,opt,name=constraints_set_stmt,json=ConstraintsSetStmt,proto3,oneof"` +} + +type Node_ReindexStmt struct { + ReindexStmt *ReindexStmt `protobuf:"bytes,245,opt,name=reindex_stmt,json=ReindexStmt,proto3,oneof"` +} + +type Node_CreateConversionStmt struct { + CreateConversionStmt *CreateConversionStmt `protobuf:"bytes,246,opt,name=create_conversion_stmt,json=CreateConversionStmt,proto3,oneof"` +} + +type Node_CreateCastStmt struct { + CreateCastStmt *CreateCastStmt `protobuf:"bytes,247,opt,name=create_cast_stmt,json=CreateCastStmt,proto3,oneof"` +} + +type Node_CreateTransformStmt struct { + CreateTransformStmt *CreateTransformStmt `protobuf:"bytes,248,opt,name=create_transform_stmt,json=CreateTransformStmt,proto3,oneof"` +} + +type Node_PrepareStmt struct { + PrepareStmt *PrepareStmt `protobuf:"bytes,249,opt,name=prepare_stmt,json=PrepareStmt,proto3,oneof"` +} + +type Node_ExecuteStmt struct { + ExecuteStmt *ExecuteStmt `protobuf:"bytes,250,opt,name=execute_stmt,json=ExecuteStmt,proto3,oneof"` +} + +type Node_DeallocateStmt struct { + DeallocateStmt *DeallocateStmt `protobuf:"bytes,251,opt,name=deallocate_stmt,json=DeallocateStmt,proto3,oneof"` +} + +type Node_DropOwnedStmt struct { + DropOwnedStmt *DropOwnedStmt `protobuf:"bytes,252,opt,name=drop_owned_stmt,json=DropOwnedStmt,proto3,oneof"` +} + +type Node_ReassignOwnedStmt struct { + ReassignOwnedStmt *ReassignOwnedStmt `protobuf:"bytes,253,opt,name=reassign_owned_stmt,json=ReassignOwnedStmt,proto3,oneof"` +} + +type Node_AlterTsdictionaryStmt struct { + AlterTsdictionaryStmt *AlterTSDictionaryStmt `protobuf:"bytes,254,opt,name=alter_tsdictionary_stmt,json=AlterTSDictionaryStmt,proto3,oneof"` +} + +type Node_AlterTsconfigurationStmt struct { + AlterTsconfigurationStmt *AlterTSConfigurationStmt `protobuf:"bytes,255,opt,name=alter_tsconfiguration_stmt,json=AlterTSConfigurationStmt,proto3,oneof"` +} + +type Node_PublicationTable struct { + PublicationTable *PublicationTable `protobuf:"bytes,256,opt,name=publication_table,json=PublicationTable,proto3,oneof"` +} + +type Node_PublicationObjSpec struct { + PublicationObjSpec *PublicationObjSpec `protobuf:"bytes,257,opt,name=publication_obj_spec,json=PublicationObjSpec,proto3,oneof"` +} + +type Node_CreatePublicationStmt struct { + CreatePublicationStmt *CreatePublicationStmt `protobuf:"bytes,258,opt,name=create_publication_stmt,json=CreatePublicationStmt,proto3,oneof"` +} + +type Node_AlterPublicationStmt struct { + AlterPublicationStmt *AlterPublicationStmt `protobuf:"bytes,259,opt,name=alter_publication_stmt,json=AlterPublicationStmt,proto3,oneof"` +} + +type Node_CreateSubscriptionStmt struct { + CreateSubscriptionStmt *CreateSubscriptionStmt `protobuf:"bytes,260,opt,name=create_subscription_stmt,json=CreateSubscriptionStmt,proto3,oneof"` +} + +type Node_AlterSubscriptionStmt struct { + AlterSubscriptionStmt *AlterSubscriptionStmt `protobuf:"bytes,261,opt,name=alter_subscription_stmt,json=AlterSubscriptionStmt,proto3,oneof"` +} + +type Node_DropSubscriptionStmt struct { + DropSubscriptionStmt *DropSubscriptionStmt `protobuf:"bytes,262,opt,name=drop_subscription_stmt,json=DropSubscriptionStmt,proto3,oneof"` +} + +type Node_Integer struct { + Integer *Integer `protobuf:"bytes,263,opt,name=integer,json=Integer,proto3,oneof"` +} + +type Node_Float struct { + Float *Float `protobuf:"bytes,264,opt,name=float,json=Float,proto3,oneof"` +} + +type Node_Boolean struct { + Boolean *Boolean `protobuf:"bytes,265,opt,name=boolean,json=Boolean,proto3,oneof"` +} + +type Node_String_ struct { + String_ *String `protobuf:"bytes,266,opt,name=string,json=String,proto3,oneof"` +} + +type Node_BitString struct { + BitString *BitString `protobuf:"bytes,267,opt,name=bit_string,json=BitString,proto3,oneof"` +} + +type Node_List struct { + List *List `protobuf:"bytes,268,opt,name=list,json=List,proto3,oneof"` +} + +type Node_IntList struct { + IntList *IntList `protobuf:"bytes,269,opt,name=int_list,json=IntList,proto3,oneof"` +} + +type Node_OidList struct { + OidList *OidList `protobuf:"bytes,270,opt,name=oid_list,json=OidList,proto3,oneof"` +} + +type Node_AConst struct { + AConst *A_Const `protobuf:"bytes,271,opt,name=a_const,json=A_Const,proto3,oneof"` +} + +func (*Node_Alias) isNode_Node() {} + +func (*Node_RangeVar) isNode_Node() {} + +func (*Node_TableFunc) isNode_Node() {} + +func (*Node_IntoClause) isNode_Node() {} + +func (*Node_Var) isNode_Node() {} + +func (*Node_Param) isNode_Node() {} + +func (*Node_Aggref) isNode_Node() {} + +func (*Node_GroupingFunc) isNode_Node() {} + +func (*Node_WindowFunc) isNode_Node() {} + +func (*Node_WindowFuncRunCondition) isNode_Node() {} + +func (*Node_MergeSupportFunc) isNode_Node() {} + +func (*Node_SubscriptingRef) isNode_Node() {} + +func (*Node_FuncExpr) isNode_Node() {} + +func (*Node_NamedArgExpr) isNode_Node() {} + +func (*Node_OpExpr) isNode_Node() {} + +func (*Node_DistinctExpr) isNode_Node() {} + +func (*Node_NullIfExpr) isNode_Node() {} + +func (*Node_ScalarArrayOpExpr) isNode_Node() {} + +func (*Node_BoolExpr) isNode_Node() {} + +func (*Node_SubLink) isNode_Node() {} + +func (*Node_SubPlan) isNode_Node() {} + +func (*Node_AlternativeSubPlan) isNode_Node() {} + +func (*Node_FieldSelect) isNode_Node() {} + +func (*Node_FieldStore) isNode_Node() {} + +func (*Node_RelabelType) isNode_Node() {} + +func (*Node_CoerceViaIo) isNode_Node() {} + +func (*Node_ArrayCoerceExpr) isNode_Node() {} + +func (*Node_ConvertRowtypeExpr) isNode_Node() {} + +func (*Node_CollateExpr) isNode_Node() {} + +func (*Node_CaseExpr) isNode_Node() {} + +func (*Node_CaseWhen) isNode_Node() {} + +func (*Node_CaseTestExpr) isNode_Node() {} + +func (*Node_ArrayExpr) isNode_Node() {} + +func (*Node_RowExpr) isNode_Node() {} + +func (*Node_RowCompareExpr) isNode_Node() {} + +func (*Node_CoalesceExpr) isNode_Node() {} + +func (*Node_MinMaxExpr) isNode_Node() {} + +func (*Node_SqlvalueFunction) isNode_Node() {} + +func (*Node_XmlExpr) isNode_Node() {} + +func (*Node_JsonFormat) isNode_Node() {} + +func (*Node_JsonReturning) isNode_Node() {} + +func (*Node_JsonValueExpr) isNode_Node() {} + +func (*Node_JsonConstructorExpr) isNode_Node() {} + +func (*Node_JsonIsPredicate) isNode_Node() {} + +func (*Node_JsonBehavior) isNode_Node() {} + +func (*Node_JsonExpr) isNode_Node() {} + +func (*Node_JsonTablePath) isNode_Node() {} + +func (*Node_JsonTablePathScan) isNode_Node() {} + +func (*Node_JsonTableSiblingJoin) isNode_Node() {} + +func (*Node_NullTest) isNode_Node() {} + +func (*Node_BooleanTest) isNode_Node() {} + +func (*Node_MergeAction) isNode_Node() {} + +func (*Node_CoerceToDomain) isNode_Node() {} + +func (*Node_CoerceToDomainValue) isNode_Node() {} + +func (*Node_SetToDefault) isNode_Node() {} + +func (*Node_CurrentOfExpr) isNode_Node() {} + +func (*Node_NextValueExpr) isNode_Node() {} + +func (*Node_InferenceElem) isNode_Node() {} + +func (*Node_ReturningExpr) isNode_Node() {} + +func (*Node_TargetEntry) isNode_Node() {} + +func (*Node_RangeTblRef) isNode_Node() {} + +func (*Node_JoinExpr) isNode_Node() {} + +func (*Node_FromExpr) isNode_Node() {} + +func (*Node_OnConflictExpr) isNode_Node() {} + +func (*Node_Query) isNode_Node() {} + +func (*Node_TypeName) isNode_Node() {} + +func (*Node_ColumnRef) isNode_Node() {} + +func (*Node_ParamRef) isNode_Node() {} + +func (*Node_AExpr) isNode_Node() {} + +func (*Node_TypeCast) isNode_Node() {} + +func (*Node_CollateClause) isNode_Node() {} + +func (*Node_RoleSpec) isNode_Node() {} + +func (*Node_FuncCall) isNode_Node() {} + +func (*Node_AStar) isNode_Node() {} + +func (*Node_AIndices) isNode_Node() {} + +func (*Node_AIndirection) isNode_Node() {} + +func (*Node_AArrayExpr) isNode_Node() {} + +func (*Node_ResTarget) isNode_Node() {} + +func (*Node_MultiAssignRef) isNode_Node() {} + +func (*Node_SortBy) isNode_Node() {} + +func (*Node_WindowDef) isNode_Node() {} + +func (*Node_RangeSubselect) isNode_Node() {} + +func (*Node_RangeFunction) isNode_Node() {} + +func (*Node_RangeTableFunc) isNode_Node() {} + +func (*Node_RangeTableFuncCol) isNode_Node() {} + +func (*Node_RangeTableSample) isNode_Node() {} + +func (*Node_ColumnDef) isNode_Node() {} + +func (*Node_TableLikeClause) isNode_Node() {} + +func (*Node_IndexElem) isNode_Node() {} + +func (*Node_DefElem) isNode_Node() {} + +func (*Node_LockingClause) isNode_Node() {} + +func (*Node_XmlSerialize) isNode_Node() {} + +func (*Node_PartitionElem) isNode_Node() {} + +func (*Node_PartitionSpec) isNode_Node() {} + +func (*Node_PartitionBoundSpec) isNode_Node() {} + +func (*Node_PartitionRangeDatum) isNode_Node() {} + +func (*Node_PartitionCmd) isNode_Node() {} + +func (*Node_RangeTblEntry) isNode_Node() {} + +func (*Node_RtepermissionInfo) isNode_Node() {} + +func (*Node_RangeTblFunction) isNode_Node() {} + +func (*Node_TableSampleClause) isNode_Node() {} + +func (*Node_WithCheckOption) isNode_Node() {} + +func (*Node_SortGroupClause) isNode_Node() {} + +func (*Node_GroupingSet) isNode_Node() {} + +func (*Node_WindowClause) isNode_Node() {} + +func (*Node_RowMarkClause) isNode_Node() {} + +func (*Node_WithClause) isNode_Node() {} + +func (*Node_InferClause) isNode_Node() {} + +func (*Node_OnConflictClause) isNode_Node() {} + +func (*Node_CtesearchClause) isNode_Node() {} + +func (*Node_CtecycleClause) isNode_Node() {} + +func (*Node_CommonTableExpr) isNode_Node() {} + +func (*Node_MergeWhenClause) isNode_Node() {} + +func (*Node_ReturningOption) isNode_Node() {} + +func (*Node_ReturningClause) isNode_Node() {} + +func (*Node_TriggerTransition) isNode_Node() {} + +func (*Node_JsonOutput) isNode_Node() {} + +func (*Node_JsonArgument) isNode_Node() {} + +func (*Node_JsonFuncExpr) isNode_Node() {} + +func (*Node_JsonTablePathSpec) isNode_Node() {} + +func (*Node_JsonTable) isNode_Node() {} + +func (*Node_JsonTableColumn) isNode_Node() {} + +func (*Node_JsonKeyValue) isNode_Node() {} + +func (*Node_JsonParseExpr) isNode_Node() {} + +func (*Node_JsonScalarExpr) isNode_Node() {} + +func (*Node_JsonSerializeExpr) isNode_Node() {} + +func (*Node_JsonObjectConstructor) isNode_Node() {} + +func (*Node_JsonArrayConstructor) isNode_Node() {} + +func (*Node_JsonArrayQueryConstructor) isNode_Node() {} + +func (*Node_JsonAggConstructor) isNode_Node() {} + +func (*Node_JsonObjectAgg) isNode_Node() {} + +func (*Node_JsonArrayAgg) isNode_Node() {} + +func (*Node_RawStmt) isNode_Node() {} + +func (*Node_InsertStmt) isNode_Node() {} + +func (*Node_DeleteStmt) isNode_Node() {} + +func (*Node_UpdateStmt) isNode_Node() {} + +func (*Node_MergeStmt) isNode_Node() {} + +func (*Node_SelectStmt) isNode_Node() {} + +func (*Node_SetOperationStmt) isNode_Node() {} + +func (*Node_ReturnStmt) isNode_Node() {} + +func (*Node_PlassignStmt) isNode_Node() {} + +func (*Node_CreateSchemaStmt) isNode_Node() {} + +func (*Node_AlterTableStmt) isNode_Node() {} + +func (*Node_AlterTableCmd) isNode_Node() {} + +func (*Node_AtalterConstraint) isNode_Node() {} + +func (*Node_ReplicaIdentityStmt) isNode_Node() {} + +func (*Node_AlterCollationStmt) isNode_Node() {} + +func (*Node_AlterDomainStmt) isNode_Node() {} + +func (*Node_GrantStmt) isNode_Node() {} + +func (*Node_ObjectWithArgs) isNode_Node() {} + +func (*Node_AccessPriv) isNode_Node() {} + +func (*Node_GrantRoleStmt) isNode_Node() {} + +func (*Node_AlterDefaultPrivilegesStmt) isNode_Node() {} + +func (*Node_CopyStmt) isNode_Node() {} + +func (*Node_VariableSetStmt) isNode_Node() {} + +func (*Node_VariableShowStmt) isNode_Node() {} + +func (*Node_CreateStmt) isNode_Node() {} + +func (*Node_Constraint) isNode_Node() {} + +func (*Node_CreateTableSpaceStmt) isNode_Node() {} + +func (*Node_DropTableSpaceStmt) isNode_Node() {} + +func (*Node_AlterTableSpaceOptionsStmt) isNode_Node() {} + +func (*Node_AlterTableMoveAllStmt) isNode_Node() {} + +func (*Node_CreateExtensionStmt) isNode_Node() {} + +func (*Node_AlterExtensionStmt) isNode_Node() {} + +func (*Node_AlterExtensionContentsStmt) isNode_Node() {} + +func (*Node_CreateFdwStmt) isNode_Node() {} + +func (*Node_AlterFdwStmt) isNode_Node() {} + +func (*Node_CreateForeignServerStmt) isNode_Node() {} + +func (*Node_AlterForeignServerStmt) isNode_Node() {} + +func (*Node_CreateForeignTableStmt) isNode_Node() {} + +func (*Node_CreateUserMappingStmt) isNode_Node() {} + +func (*Node_AlterUserMappingStmt) isNode_Node() {} + +func (*Node_DropUserMappingStmt) isNode_Node() {} + +func (*Node_ImportForeignSchemaStmt) isNode_Node() {} + +func (*Node_CreatePolicyStmt) isNode_Node() {} + +func (*Node_AlterPolicyStmt) isNode_Node() {} + +func (*Node_CreateAmStmt) isNode_Node() {} + +func (*Node_CreateTrigStmt) isNode_Node() {} + +func (*Node_CreateEventTrigStmt) isNode_Node() {} + +func (*Node_AlterEventTrigStmt) isNode_Node() {} + +func (*Node_CreatePlangStmt) isNode_Node() {} + +func (*Node_CreateRoleStmt) isNode_Node() {} + +func (*Node_AlterRoleStmt) isNode_Node() {} + +func (*Node_AlterRoleSetStmt) isNode_Node() {} + +func (*Node_DropRoleStmt) isNode_Node() {} + +func (*Node_CreateSeqStmt) isNode_Node() {} + +func (*Node_AlterSeqStmt) isNode_Node() {} + +func (*Node_DefineStmt) isNode_Node() {} + +func (*Node_CreateDomainStmt) isNode_Node() {} + +func (*Node_CreateOpClassStmt) isNode_Node() {} + +func (*Node_CreateOpClassItem) isNode_Node() {} + +func (*Node_CreateOpFamilyStmt) isNode_Node() {} + +func (*Node_AlterOpFamilyStmt) isNode_Node() {} + +func (*Node_DropStmt) isNode_Node() {} + +func (*Node_TruncateStmt) isNode_Node() {} + +func (*Node_CommentStmt) isNode_Node() {} + +func (*Node_SecLabelStmt) isNode_Node() {} + +func (*Node_DeclareCursorStmt) isNode_Node() {} + +func (*Node_ClosePortalStmt) isNode_Node() {} + +func (*Node_FetchStmt) isNode_Node() {} + +func (*Node_IndexStmt) isNode_Node() {} + +func (*Node_CreateStatsStmt) isNode_Node() {} + +func (*Node_StatsElem) isNode_Node() {} + +func (*Node_AlterStatsStmt) isNode_Node() {} + +func (*Node_CreateFunctionStmt) isNode_Node() {} + +func (*Node_FunctionParameter) isNode_Node() {} + +func (*Node_AlterFunctionStmt) isNode_Node() {} + +func (*Node_DoStmt) isNode_Node() {} + +func (*Node_InlineCodeBlock) isNode_Node() {} + +func (*Node_CallStmt) isNode_Node() {} + +func (*Node_CallContext) isNode_Node() {} + +func (*Node_RenameStmt) isNode_Node() {} + +func (*Node_AlterObjectDependsStmt) isNode_Node() {} + +func (*Node_AlterObjectSchemaStmt) isNode_Node() {} + +func (*Node_AlterOwnerStmt) isNode_Node() {} + +func (*Node_AlterOperatorStmt) isNode_Node() {} + +func (*Node_AlterTypeStmt) isNode_Node() {} + +func (*Node_RuleStmt) isNode_Node() {} + +func (*Node_NotifyStmt) isNode_Node() {} + +func (*Node_ListenStmt) isNode_Node() {} + +func (*Node_UnlistenStmt) isNode_Node() {} + +func (*Node_TransactionStmt) isNode_Node() {} + +func (*Node_CompositeTypeStmt) isNode_Node() {} + +func (*Node_CreateEnumStmt) isNode_Node() {} + +func (*Node_CreateRangeStmt) isNode_Node() {} + +func (*Node_AlterEnumStmt) isNode_Node() {} + +func (*Node_ViewStmt) isNode_Node() {} + +func (*Node_LoadStmt) isNode_Node() {} + +func (*Node_CreatedbStmt) isNode_Node() {} + +func (*Node_AlterDatabaseStmt) isNode_Node() {} + +func (*Node_AlterDatabaseRefreshCollStmt) isNode_Node() {} + +func (*Node_AlterDatabaseSetStmt) isNode_Node() {} + +func (*Node_DropdbStmt) isNode_Node() {} + +func (*Node_AlterSystemStmt) isNode_Node() {} + +func (*Node_ClusterStmt) isNode_Node() {} + +func (*Node_VacuumStmt) isNode_Node() {} + +func (*Node_VacuumRelation) isNode_Node() {} + +func (*Node_ExplainStmt) isNode_Node() {} + +func (*Node_CreateTableAsStmt) isNode_Node() {} + +func (*Node_RefreshMatViewStmt) isNode_Node() {} + +func (*Node_CheckPointStmt) isNode_Node() {} + +func (*Node_DiscardStmt) isNode_Node() {} + +func (*Node_LockStmt) isNode_Node() {} + +func (*Node_ConstraintsSetStmt) isNode_Node() {} + +func (*Node_ReindexStmt) isNode_Node() {} + +func (*Node_CreateConversionStmt) isNode_Node() {} + +func (*Node_CreateCastStmt) isNode_Node() {} + +func (*Node_CreateTransformStmt) isNode_Node() {} + +func (*Node_PrepareStmt) isNode_Node() {} + +func (*Node_ExecuteStmt) isNode_Node() {} + +func (*Node_DeallocateStmt) isNode_Node() {} + +func (*Node_DropOwnedStmt) isNode_Node() {} + +func (*Node_ReassignOwnedStmt) isNode_Node() {} + +func (*Node_AlterTsdictionaryStmt) isNode_Node() {} + +func (*Node_AlterTsconfigurationStmt) isNode_Node() {} + +func (*Node_PublicationTable) isNode_Node() {} + +func (*Node_PublicationObjSpec) isNode_Node() {} + +func (*Node_CreatePublicationStmt) isNode_Node() {} + +func (*Node_AlterPublicationStmt) isNode_Node() {} + +func (*Node_CreateSubscriptionStmt) isNode_Node() {} + +func (*Node_AlterSubscriptionStmt) isNode_Node() {} + +func (*Node_DropSubscriptionStmt) isNode_Node() {} + +func (*Node_Integer) isNode_Node() {} + +func (*Node_Float) isNode_Node() {} + +func (*Node_Boolean) isNode_Node() {} + +func (*Node_String_) isNode_Node() {} + +func (*Node_BitString) isNode_Node() {} + +func (*Node_List) isNode_Node() {} + +func (*Node_IntList) isNode_Node() {} + +func (*Node_OidList) isNode_Node() {} + +func (*Node_AConst) isNode_Node() {} + +type Integer struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ival int32 `protobuf:"varint,1,opt,name=ival,proto3" json:"ival,omitempty"` // machine integer + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Integer) Reset() { + *x = Integer{} + mi := &file_pg_query_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Integer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Integer) ProtoMessage() {} + +func (x *Integer) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Integer.ProtoReflect.Descriptor instead. +func (*Integer) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{3} +} + +func (x *Integer) GetIval() int32 { + if x != nil { + return x.Ival + } + return 0 +} + +type Float struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fval string `protobuf:"bytes,1,opt,name=fval,proto3" json:"fval,omitempty"` // string + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Float) Reset() { + *x = Float{} + mi := &file_pg_query_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Float) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Float) ProtoMessage() {} + +func (x *Float) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Float.ProtoReflect.Descriptor instead. +func (*Float) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{4} +} + +func (x *Float) GetFval() string { + if x != nil { + return x.Fval + } + return "" +} + +type Boolean struct { + state protoimpl.MessageState `protogen:"open.v1"` + Boolval bool `protobuf:"varint,1,opt,name=boolval,proto3" json:"boolval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Boolean) Reset() { + *x = Boolean{} + mi := &file_pg_query_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Boolean) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Boolean) ProtoMessage() {} + +func (x *Boolean) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Boolean.ProtoReflect.Descriptor instead. +func (*Boolean) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{5} +} + +func (x *Boolean) GetBoolval() bool { + if x != nil { + return x.Boolval + } + return false +} + +type String struct { + state protoimpl.MessageState `protogen:"open.v1"` + Sval string `protobuf:"bytes,1,opt,name=sval,proto3" json:"sval,omitempty"` // string + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *String) Reset() { + *x = String{} + mi := &file_pg_query_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *String) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*String) ProtoMessage() {} + +func (x *String) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use String.ProtoReflect.Descriptor instead. +func (*String) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{6} +} + +func (x *String) GetSval() string { + if x != nil { + return x.Sval + } + return "" +} + +type BitString struct { + state protoimpl.MessageState `protogen:"open.v1"` + Bsval string `protobuf:"bytes,1,opt,name=bsval,proto3" json:"bsval,omitempty"` // string + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BitString) Reset() { + *x = BitString{} + mi := &file_pg_query_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BitString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BitString) ProtoMessage() {} + +func (x *BitString) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BitString.ProtoReflect.Descriptor instead. +func (*BitString) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{7} +} + +func (x *BitString) GetBsval() string { + if x != nil { + return x.Bsval + } + return "" +} + +type List struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *List) Reset() { + *x = List{} + mi := &file_pg_query_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *List) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*List) ProtoMessage() {} + +func (x *List) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use List.ProtoReflect.Descriptor instead. +func (*List) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{8} +} + +func (x *List) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type OidList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OidList) Reset() { + *x = OidList{} + mi := &file_pg_query_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OidList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OidList) ProtoMessage() {} + +func (x *OidList) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OidList.ProtoReflect.Descriptor instead. +func (*OidList) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{9} +} + +func (x *OidList) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type IntList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*Node `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IntList) Reset() { + *x = IntList{} + mi := &file_pg_query_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IntList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntList) ProtoMessage() {} + +func (x *IntList) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntList.ProtoReflect.Descriptor instead. +func (*IntList) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{10} +} + +func (x *IntList) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type A_Const struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Val: + // + // *A_Const_Ival + // *A_Const_Fval + // *A_Const_Boolval + // *A_Const_Sval + // *A_Const_Bsval + Val isA_Const_Val `protobuf_oneof:"val"` + Isnull bool `protobuf:"varint,10,opt,name=isnull,proto3" json:"isnull,omitempty"` + Location int32 `protobuf:"varint,11,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *A_Const) Reset() { + *x = A_Const{} + mi := &file_pg_query_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *A_Const) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Const) ProtoMessage() {} + +func (x *A_Const) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Const.ProtoReflect.Descriptor instead. +func (*A_Const) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{11} +} + +func (x *A_Const) GetVal() isA_Const_Val { + if x != nil { + return x.Val + } + return nil +} + +func (x *A_Const) GetIval() *Integer { + if x != nil { + if x, ok := x.Val.(*A_Const_Ival); ok { + return x.Ival + } + } + return nil +} + +func (x *A_Const) GetFval() *Float { + if x != nil { + if x, ok := x.Val.(*A_Const_Fval); ok { + return x.Fval + } + } + return nil +} + +func (x *A_Const) GetBoolval() *Boolean { + if x != nil { + if x, ok := x.Val.(*A_Const_Boolval); ok { + return x.Boolval + } + } + return nil +} + +func (x *A_Const) GetSval() *String { + if x != nil { + if x, ok := x.Val.(*A_Const_Sval); ok { + return x.Sval + } + } + return nil +} + +func (x *A_Const) GetBsval() *BitString { + if x != nil { + if x, ok := x.Val.(*A_Const_Bsval); ok { + return x.Bsval + } + } + return nil +} + +func (x *A_Const) GetIsnull() bool { + if x != nil { + return x.Isnull + } + return false +} + +func (x *A_Const) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type isA_Const_Val interface { + isA_Const_Val() +} + +type A_Const_Ival struct { + Ival *Integer `protobuf:"bytes,1,opt,name=ival,proto3,oneof"` +} + +type A_Const_Fval struct { + Fval *Float `protobuf:"bytes,2,opt,name=fval,proto3,oneof"` +} + +type A_Const_Boolval struct { + Boolval *Boolean `protobuf:"bytes,3,opt,name=boolval,proto3,oneof"` +} + +type A_Const_Sval struct { + Sval *String `protobuf:"bytes,4,opt,name=sval,proto3,oneof"` +} + +type A_Const_Bsval struct { + Bsval *BitString `protobuf:"bytes,5,opt,name=bsval,proto3,oneof"` +} + +func (*A_Const_Ival) isA_Const_Val() {} + +func (*A_Const_Fval) isA_Const_Val() {} + +func (*A_Const_Boolval) isA_Const_Val() {} + +func (*A_Const_Sval) isA_Const_Val() {} + +func (*A_Const_Bsval) isA_Const_Val() {} + +type Alias struct { + state protoimpl.MessageState `protogen:"open.v1"` + Aliasname string `protobuf:"bytes,1,opt,name=aliasname,proto3" json:"aliasname,omitempty"` + Colnames []*Node `protobuf:"bytes,2,rep,name=colnames,proto3" json:"colnames,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Alias) Reset() { + *x = Alias{} + mi := &file_pg_query_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Alias) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Alias) ProtoMessage() {} + +func (x *Alias) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Alias.ProtoReflect.Descriptor instead. +func (*Alias) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{12} +} + +func (x *Alias) GetAliasname() string { + if x != nil { + return x.Aliasname + } + return "" +} + +func (x *Alias) GetColnames() []*Node { + if x != nil { + return x.Colnames + } + return nil +} + +type RangeVar struct { + state protoimpl.MessageState `protogen:"open.v1"` + Catalogname string `protobuf:"bytes,1,opt,name=catalogname,proto3" json:"catalogname,omitempty"` + Schemaname string `protobuf:"bytes,2,opt,name=schemaname,proto3" json:"schemaname,omitempty"` + Relname string `protobuf:"bytes,3,opt,name=relname,proto3" json:"relname,omitempty"` + Inh bool `protobuf:"varint,4,opt,name=inh,proto3" json:"inh,omitempty"` + Relpersistence string `protobuf:"bytes,5,opt,name=relpersistence,proto3" json:"relpersistence,omitempty"` + Alias *Alias `protobuf:"bytes,6,opt,name=alias,proto3" json:"alias,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeVar) Reset() { + *x = RangeVar{} + mi := &file_pg_query_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeVar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeVar) ProtoMessage() {} + +func (x *RangeVar) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeVar.ProtoReflect.Descriptor instead. +func (*RangeVar) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{13} +} + +func (x *RangeVar) GetCatalogname() string { + if x != nil { + return x.Catalogname + } + return "" +} + +func (x *RangeVar) GetSchemaname() string { + if x != nil { + return x.Schemaname + } + return "" +} + +func (x *RangeVar) GetRelname() string { + if x != nil { + return x.Relname + } + return "" +} + +func (x *RangeVar) GetInh() bool { + if x != nil { + return x.Inh + } + return false +} + +func (x *RangeVar) GetRelpersistence() string { + if x != nil { + return x.Relpersistence + } + return "" +} + +func (x *RangeVar) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeVar) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type TableFunc struct { + state protoimpl.MessageState `protogen:"open.v1"` + Functype TableFuncType `protobuf:"varint,1,opt,name=functype,proto3,enum=pg_query.TableFuncType" json:"functype,omitempty"` + NsUris []*Node `protobuf:"bytes,2,rep,name=ns_uris,proto3" json:"ns_uris,omitempty"` + NsNames []*Node `protobuf:"bytes,3,rep,name=ns_names,proto3" json:"ns_names,omitempty"` + Docexpr *Node `protobuf:"bytes,4,opt,name=docexpr,proto3" json:"docexpr,omitempty"` + Rowexpr *Node `protobuf:"bytes,5,opt,name=rowexpr,proto3" json:"rowexpr,omitempty"` + Colnames []*Node `protobuf:"bytes,6,rep,name=colnames,proto3" json:"colnames,omitempty"` + Coltypes []*Node `protobuf:"bytes,7,rep,name=coltypes,proto3" json:"coltypes,omitempty"` + Coltypmods []*Node `protobuf:"bytes,8,rep,name=coltypmods,proto3" json:"coltypmods,omitempty"` + Colcollations []*Node `protobuf:"bytes,9,rep,name=colcollations,proto3" json:"colcollations,omitempty"` + Colexprs []*Node `protobuf:"bytes,10,rep,name=colexprs,proto3" json:"colexprs,omitempty"` + Coldefexprs []*Node `protobuf:"bytes,11,rep,name=coldefexprs,proto3" json:"coldefexprs,omitempty"` + Colvalexprs []*Node `protobuf:"bytes,12,rep,name=colvalexprs,proto3" json:"colvalexprs,omitempty"` + Passingvalexprs []*Node `protobuf:"bytes,13,rep,name=passingvalexprs,proto3" json:"passingvalexprs,omitempty"` + Notnulls []uint64 `protobuf:"varint,14,rep,packed,name=notnulls,proto3" json:"notnulls,omitempty"` + Plan *Node `protobuf:"bytes,15,opt,name=plan,proto3" json:"plan,omitempty"` + Ordinalitycol int32 `protobuf:"varint,16,opt,name=ordinalitycol,proto3" json:"ordinalitycol,omitempty"` + Location int32 `protobuf:"varint,17,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TableFunc) Reset() { + *x = TableFunc{} + mi := &file_pg_query_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TableFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableFunc) ProtoMessage() {} + +func (x *TableFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableFunc.ProtoReflect.Descriptor instead. +func (*TableFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{14} +} + +func (x *TableFunc) GetFunctype() TableFuncType { + if x != nil { + return x.Functype + } + return TableFuncType_TABLE_FUNC_TYPE_UNDEFINED +} + +func (x *TableFunc) GetNsUris() []*Node { + if x != nil { + return x.NsUris + } + return nil +} + +func (x *TableFunc) GetNsNames() []*Node { + if x != nil { + return x.NsNames + } + return nil +} + +func (x *TableFunc) GetDocexpr() *Node { + if x != nil { + return x.Docexpr + } + return nil +} + +func (x *TableFunc) GetRowexpr() *Node { + if x != nil { + return x.Rowexpr + } + return nil +} + +func (x *TableFunc) GetColnames() []*Node { + if x != nil { + return x.Colnames + } + return nil +} + +func (x *TableFunc) GetColtypes() []*Node { + if x != nil { + return x.Coltypes + } + return nil +} + +func (x *TableFunc) GetColtypmods() []*Node { + if x != nil { + return x.Coltypmods + } + return nil +} + +func (x *TableFunc) GetColcollations() []*Node { + if x != nil { + return x.Colcollations + } + return nil +} + +func (x *TableFunc) GetColexprs() []*Node { + if x != nil { + return x.Colexprs + } + return nil +} + +func (x *TableFunc) GetColdefexprs() []*Node { + if x != nil { + return x.Coldefexprs + } + return nil +} + +func (x *TableFunc) GetColvalexprs() []*Node { + if x != nil { + return x.Colvalexprs + } + return nil +} + +func (x *TableFunc) GetPassingvalexprs() []*Node { + if x != nil { + return x.Passingvalexprs + } + return nil +} + +func (x *TableFunc) GetNotnulls() []uint64 { + if x != nil { + return x.Notnulls + } + return nil +} + +func (x *TableFunc) GetPlan() *Node { + if x != nil { + return x.Plan + } + return nil +} + +func (x *TableFunc) GetOrdinalitycol() int32 { + if x != nil { + return x.Ordinalitycol + } + return 0 +} + +func (x *TableFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type IntoClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Rel *RangeVar `protobuf:"bytes,1,opt,name=rel,proto3" json:"rel,omitempty"` + ColNames []*Node `protobuf:"bytes,2,rep,name=col_names,json=colNames,proto3" json:"col_names,omitempty"` + AccessMethod string `protobuf:"bytes,3,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + OnCommit OnCommitAction `protobuf:"varint,5,opt,name=on_commit,json=onCommit,proto3,enum=pg_query.OnCommitAction" json:"on_commit,omitempty"` + TableSpaceName string `protobuf:"bytes,6,opt,name=table_space_name,json=tableSpaceName,proto3" json:"table_space_name,omitempty"` + ViewQuery *Query `protobuf:"bytes,7,opt,name=view_query,json=viewQuery,proto3" json:"view_query,omitempty"` + SkipData bool `protobuf:"varint,8,opt,name=skip_data,json=skipData,proto3" json:"skip_data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IntoClause) Reset() { + *x = IntoClause{} + mi := &file_pg_query_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IntoClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntoClause) ProtoMessage() {} + +func (x *IntoClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntoClause.ProtoReflect.Descriptor instead. +func (*IntoClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{15} +} + +func (x *IntoClause) GetRel() *RangeVar { + if x != nil { + return x.Rel + } + return nil +} + +func (x *IntoClause) GetColNames() []*Node { + if x != nil { + return x.ColNames + } + return nil +} + +func (x *IntoClause) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *IntoClause) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *IntoClause) GetOnCommit() OnCommitAction { + if x != nil { + return x.OnCommit + } + return OnCommitAction_ON_COMMIT_ACTION_UNDEFINED +} + +func (x *IntoClause) GetTableSpaceName() string { + if x != nil { + return x.TableSpaceName + } + return "" +} + +func (x *IntoClause) GetViewQuery() *Query { + if x != nil { + return x.ViewQuery + } + return nil +} + +func (x *IntoClause) GetSkipData() bool { + if x != nil { + return x.SkipData + } + return false +} + +type Var struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Varno int32 `protobuf:"varint,2,opt,name=varno,proto3" json:"varno,omitempty"` + Varattno int32 `protobuf:"varint,3,opt,name=varattno,proto3" json:"varattno,omitempty"` + Vartype uint32 `protobuf:"varint,4,opt,name=vartype,proto3" json:"vartype,omitempty"` + Vartypmod int32 `protobuf:"varint,5,opt,name=vartypmod,proto3" json:"vartypmod,omitempty"` + Varcollid uint32 `protobuf:"varint,6,opt,name=varcollid,proto3" json:"varcollid,omitempty"` + Varnullingrels []uint64 `protobuf:"varint,7,rep,packed,name=varnullingrels,proto3" json:"varnullingrels,omitempty"` + Varlevelsup uint32 `protobuf:"varint,8,opt,name=varlevelsup,proto3" json:"varlevelsup,omitempty"` + Varreturningtype VarReturningType `protobuf:"varint,9,opt,name=varreturningtype,proto3,enum=pg_query.VarReturningType" json:"varreturningtype,omitempty"` + Location int32 `protobuf:"varint,10,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Var) Reset() { + *x = Var{} + mi := &file_pg_query_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Var) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Var) ProtoMessage() {} + +func (x *Var) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Var.ProtoReflect.Descriptor instead. +func (*Var) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{16} +} + +func (x *Var) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *Var) GetVarno() int32 { + if x != nil { + return x.Varno + } + return 0 +} + +func (x *Var) GetVarattno() int32 { + if x != nil { + return x.Varattno + } + return 0 +} + +func (x *Var) GetVartype() uint32 { + if x != nil { + return x.Vartype + } + return 0 +} + +func (x *Var) GetVartypmod() int32 { + if x != nil { + return x.Vartypmod + } + return 0 +} + +func (x *Var) GetVarcollid() uint32 { + if x != nil { + return x.Varcollid + } + return 0 +} + +func (x *Var) GetVarnullingrels() []uint64 { + if x != nil { + return x.Varnullingrels + } + return nil +} + +func (x *Var) GetVarlevelsup() uint32 { + if x != nil { + return x.Varlevelsup + } + return 0 +} + +func (x *Var) GetVarreturningtype() VarReturningType { + if x != nil { + return x.Varreturningtype + } + return VarReturningType_VAR_RETURNING_TYPE_UNDEFINED +} + +func (x *Var) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type Param struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Paramkind ParamKind `protobuf:"varint,2,opt,name=paramkind,proto3,enum=pg_query.ParamKind" json:"paramkind,omitempty"` + Paramid int32 `protobuf:"varint,3,opt,name=paramid,proto3" json:"paramid,omitempty"` + Paramtype uint32 `protobuf:"varint,4,opt,name=paramtype,proto3" json:"paramtype,omitempty"` + Paramtypmod int32 `protobuf:"varint,5,opt,name=paramtypmod,proto3" json:"paramtypmod,omitempty"` + Paramcollid uint32 `protobuf:"varint,6,opt,name=paramcollid,proto3" json:"paramcollid,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Param) Reset() { + *x = Param{} + mi := &file_pg_query_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Param) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Param) ProtoMessage() {} + +func (x *Param) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Param.ProtoReflect.Descriptor instead. +func (*Param) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{17} +} + +func (x *Param) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *Param) GetParamkind() ParamKind { + if x != nil { + return x.Paramkind + } + return ParamKind_PARAM_KIND_UNDEFINED +} + +func (x *Param) GetParamid() int32 { + if x != nil { + return x.Paramid + } + return 0 +} + +func (x *Param) GetParamtype() uint32 { + if x != nil { + return x.Paramtype + } + return 0 +} + +func (x *Param) GetParamtypmod() int32 { + if x != nil { + return x.Paramtypmod + } + return 0 +} + +func (x *Param) GetParamcollid() uint32 { + if x != nil { + return x.Paramcollid + } + return 0 +} + +func (x *Param) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type Aggref struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Aggfnoid uint32 `protobuf:"varint,2,opt,name=aggfnoid,proto3" json:"aggfnoid,omitempty"` + Aggtype uint32 `protobuf:"varint,3,opt,name=aggtype,proto3" json:"aggtype,omitempty"` + Aggcollid uint32 `protobuf:"varint,4,opt,name=aggcollid,proto3" json:"aggcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,5,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Aggargtypes []*Node `protobuf:"bytes,6,rep,name=aggargtypes,proto3" json:"aggargtypes,omitempty"` + Aggdirectargs []*Node `protobuf:"bytes,7,rep,name=aggdirectargs,proto3" json:"aggdirectargs,omitempty"` + Args []*Node `protobuf:"bytes,8,rep,name=args,proto3" json:"args,omitempty"` + Aggorder []*Node `protobuf:"bytes,9,rep,name=aggorder,proto3" json:"aggorder,omitempty"` + Aggdistinct []*Node `protobuf:"bytes,10,rep,name=aggdistinct,proto3" json:"aggdistinct,omitempty"` + Aggfilter *Node `protobuf:"bytes,11,opt,name=aggfilter,proto3" json:"aggfilter,omitempty"` + Aggstar bool `protobuf:"varint,12,opt,name=aggstar,proto3" json:"aggstar,omitempty"` + Aggvariadic bool `protobuf:"varint,13,opt,name=aggvariadic,proto3" json:"aggvariadic,omitempty"` + Aggkind string `protobuf:"bytes,14,opt,name=aggkind,proto3" json:"aggkind,omitempty"` + Agglevelsup uint32 `protobuf:"varint,15,opt,name=agglevelsup,proto3" json:"agglevelsup,omitempty"` + Aggsplit AggSplit `protobuf:"varint,16,opt,name=aggsplit,proto3,enum=pg_query.AggSplit" json:"aggsplit,omitempty"` + Aggno int32 `protobuf:"varint,17,opt,name=aggno,proto3" json:"aggno,omitempty"` + Aggtransno int32 `protobuf:"varint,18,opt,name=aggtransno,proto3" json:"aggtransno,omitempty"` + Location int32 `protobuf:"varint,19,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Aggref) Reset() { + *x = Aggref{} + mi := &file_pg_query_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Aggref) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Aggref) ProtoMessage() {} + +func (x *Aggref) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Aggref.ProtoReflect.Descriptor instead. +func (*Aggref) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{18} +} + +func (x *Aggref) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *Aggref) GetAggfnoid() uint32 { + if x != nil { + return x.Aggfnoid + } + return 0 +} + +func (x *Aggref) GetAggtype() uint32 { + if x != nil { + return x.Aggtype + } + return 0 +} + +func (x *Aggref) GetAggcollid() uint32 { + if x != nil { + return x.Aggcollid + } + return 0 +} + +func (x *Aggref) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *Aggref) GetAggargtypes() []*Node { + if x != nil { + return x.Aggargtypes + } + return nil +} + +func (x *Aggref) GetAggdirectargs() []*Node { + if x != nil { + return x.Aggdirectargs + } + return nil +} + +func (x *Aggref) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *Aggref) GetAggorder() []*Node { + if x != nil { + return x.Aggorder + } + return nil +} + +func (x *Aggref) GetAggdistinct() []*Node { + if x != nil { + return x.Aggdistinct + } + return nil +} + +func (x *Aggref) GetAggfilter() *Node { + if x != nil { + return x.Aggfilter + } + return nil +} + +func (x *Aggref) GetAggstar() bool { + if x != nil { + return x.Aggstar + } + return false +} + +func (x *Aggref) GetAggvariadic() bool { + if x != nil { + return x.Aggvariadic + } + return false +} + +func (x *Aggref) GetAggkind() string { + if x != nil { + return x.Aggkind + } + return "" +} + +func (x *Aggref) GetAgglevelsup() uint32 { + if x != nil { + return x.Agglevelsup + } + return 0 +} + +func (x *Aggref) GetAggsplit() AggSplit { + if x != nil { + return x.Aggsplit + } + return AggSplit_AGG_SPLIT_UNDEFINED +} + +func (x *Aggref) GetAggno() int32 { + if x != nil { + return x.Aggno + } + return 0 +} + +func (x *Aggref) GetAggtransno() int32 { + if x != nil { + return x.Aggtransno + } + return 0 +} + +func (x *Aggref) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type GroupingFunc struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Refs []*Node `protobuf:"bytes,3,rep,name=refs,proto3" json:"refs,omitempty"` + Agglevelsup uint32 `protobuf:"varint,4,opt,name=agglevelsup,proto3" json:"agglevelsup,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupingFunc) Reset() { + *x = GroupingFunc{} + mi := &file_pg_query_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupingFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupingFunc) ProtoMessage() {} + +func (x *GroupingFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GroupingFunc.ProtoReflect.Descriptor instead. +func (*GroupingFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{19} +} + +func (x *GroupingFunc) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *GroupingFunc) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *GroupingFunc) GetRefs() []*Node { + if x != nil { + return x.Refs + } + return nil +} + +func (x *GroupingFunc) GetAgglevelsup() uint32 { + if x != nil { + return x.Agglevelsup + } + return 0 +} + +func (x *GroupingFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowFunc struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Winfnoid uint32 `protobuf:"varint,2,opt,name=winfnoid,proto3" json:"winfnoid,omitempty"` + Wintype uint32 `protobuf:"varint,3,opt,name=wintype,proto3" json:"wintype,omitempty"` + Wincollid uint32 `protobuf:"varint,4,opt,name=wincollid,proto3" json:"wincollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,5,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Aggfilter *Node `protobuf:"bytes,7,opt,name=aggfilter,proto3" json:"aggfilter,omitempty"` + RunCondition []*Node `protobuf:"bytes,8,rep,name=run_condition,json=runCondition,proto3" json:"run_condition,omitempty"` + Winref uint32 `protobuf:"varint,9,opt,name=winref,proto3" json:"winref,omitempty"` + Winstar bool `protobuf:"varint,10,opt,name=winstar,proto3" json:"winstar,omitempty"` + Winagg bool `protobuf:"varint,11,opt,name=winagg,proto3" json:"winagg,omitempty"` + Location int32 `protobuf:"varint,12,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WindowFunc) Reset() { + *x = WindowFunc{} + mi := &file_pg_query_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WindowFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowFunc) ProtoMessage() {} + +func (x *WindowFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowFunc.ProtoReflect.Descriptor instead. +func (*WindowFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{20} +} + +func (x *WindowFunc) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *WindowFunc) GetWinfnoid() uint32 { + if x != nil { + return x.Winfnoid + } + return 0 +} + +func (x *WindowFunc) GetWintype() uint32 { + if x != nil { + return x.Wintype + } + return 0 +} + +func (x *WindowFunc) GetWincollid() uint32 { + if x != nil { + return x.Wincollid + } + return 0 +} + +func (x *WindowFunc) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *WindowFunc) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *WindowFunc) GetAggfilter() *Node { + if x != nil { + return x.Aggfilter + } + return nil +} + +func (x *WindowFunc) GetRunCondition() []*Node { + if x != nil { + return x.RunCondition + } + return nil +} + +func (x *WindowFunc) GetWinref() uint32 { + if x != nil { + return x.Winref + } + return 0 +} + +func (x *WindowFunc) GetWinstar() bool { + if x != nil { + return x.Winstar + } + return false +} + +func (x *WindowFunc) GetWinagg() bool { + if x != nil { + return x.Winagg + } + return false +} + +func (x *WindowFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowFuncRunCondition struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Inputcollid uint32 `protobuf:"varint,3,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + WfuncLeft bool `protobuf:"varint,4,opt,name=wfunc_left,proto3" json:"wfunc_left,omitempty"` + Arg *Node `protobuf:"bytes,5,opt,name=arg,proto3" json:"arg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WindowFuncRunCondition) Reset() { + *x = WindowFuncRunCondition{} + mi := &file_pg_query_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WindowFuncRunCondition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowFuncRunCondition) ProtoMessage() {} + +func (x *WindowFuncRunCondition) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowFuncRunCondition.ProtoReflect.Descriptor instead. +func (*WindowFuncRunCondition) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{21} +} + +func (x *WindowFuncRunCondition) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *WindowFuncRunCondition) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *WindowFuncRunCondition) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *WindowFuncRunCondition) GetWfuncLeft() bool { + if x != nil { + return x.WfuncLeft + } + return false +} + +func (x *WindowFuncRunCondition) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +type MergeSupportFunc struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Msftype uint32 `protobuf:"varint,2,opt,name=msftype,proto3" json:"msftype,omitempty"` + Msfcollid uint32 `protobuf:"varint,3,opt,name=msfcollid,proto3" json:"msfcollid,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeSupportFunc) Reset() { + *x = MergeSupportFunc{} + mi := &file_pg_query_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeSupportFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeSupportFunc) ProtoMessage() {} + +func (x *MergeSupportFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeSupportFunc.ProtoReflect.Descriptor instead. +func (*MergeSupportFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{22} +} + +func (x *MergeSupportFunc) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *MergeSupportFunc) GetMsftype() uint32 { + if x != nil { + return x.Msftype + } + return 0 +} + +func (x *MergeSupportFunc) GetMsfcollid() uint32 { + if x != nil { + return x.Msfcollid + } + return 0 +} + +func (x *MergeSupportFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SubscriptingRef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Refcontainertype uint32 `protobuf:"varint,2,opt,name=refcontainertype,proto3" json:"refcontainertype,omitempty"` + Refelemtype uint32 `protobuf:"varint,3,opt,name=refelemtype,proto3" json:"refelemtype,omitempty"` + Refrestype uint32 `protobuf:"varint,4,opt,name=refrestype,proto3" json:"refrestype,omitempty"` + Reftypmod int32 `protobuf:"varint,5,opt,name=reftypmod,proto3" json:"reftypmod,omitempty"` + Refcollid uint32 `protobuf:"varint,6,opt,name=refcollid,proto3" json:"refcollid,omitempty"` + Refupperindexpr []*Node `protobuf:"bytes,7,rep,name=refupperindexpr,proto3" json:"refupperindexpr,omitempty"` + Reflowerindexpr []*Node `protobuf:"bytes,8,rep,name=reflowerindexpr,proto3" json:"reflowerindexpr,omitempty"` + Refexpr *Node `protobuf:"bytes,9,opt,name=refexpr,proto3" json:"refexpr,omitempty"` + Refassgnexpr *Node `protobuf:"bytes,10,opt,name=refassgnexpr,proto3" json:"refassgnexpr,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubscriptingRef) Reset() { + *x = SubscriptingRef{} + mi := &file_pg_query_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubscriptingRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscriptingRef) ProtoMessage() {} + +func (x *SubscriptingRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubscriptingRef.ProtoReflect.Descriptor instead. +func (*SubscriptingRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{23} +} + +func (x *SubscriptingRef) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SubscriptingRef) GetRefcontainertype() uint32 { + if x != nil { + return x.Refcontainertype + } + return 0 +} + +func (x *SubscriptingRef) GetRefelemtype() uint32 { + if x != nil { + return x.Refelemtype + } + return 0 +} + +func (x *SubscriptingRef) GetRefrestype() uint32 { + if x != nil { + return x.Refrestype + } + return 0 +} + +func (x *SubscriptingRef) GetReftypmod() int32 { + if x != nil { + return x.Reftypmod + } + return 0 +} + +func (x *SubscriptingRef) GetRefcollid() uint32 { + if x != nil { + return x.Refcollid + } + return 0 +} + +func (x *SubscriptingRef) GetRefupperindexpr() []*Node { + if x != nil { + return x.Refupperindexpr + } + return nil +} + +func (x *SubscriptingRef) GetReflowerindexpr() []*Node { + if x != nil { + return x.Reflowerindexpr + } + return nil +} + +func (x *SubscriptingRef) GetRefexpr() *Node { + if x != nil { + return x.Refexpr + } + return nil +} + +func (x *SubscriptingRef) GetRefassgnexpr() *Node { + if x != nil { + return x.Refassgnexpr + } + return nil +} + +type FuncExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Funcid uint32 `protobuf:"varint,2,opt,name=funcid,proto3" json:"funcid,omitempty"` + Funcresulttype uint32 `protobuf:"varint,3,opt,name=funcresulttype,proto3" json:"funcresulttype,omitempty"` + Funcretset bool `protobuf:"varint,4,opt,name=funcretset,proto3" json:"funcretset,omitempty"` + Funcvariadic bool `protobuf:"varint,5,opt,name=funcvariadic,proto3" json:"funcvariadic,omitempty"` + Funcformat CoercionForm `protobuf:"varint,6,opt,name=funcformat,proto3,enum=pg_query.CoercionForm" json:"funcformat,omitempty"` + Funccollid uint32 `protobuf:"varint,7,opt,name=funccollid,proto3" json:"funccollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,8,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,9,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,10,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FuncExpr) Reset() { + *x = FuncExpr{} + mi := &file_pg_query_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FuncExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FuncExpr) ProtoMessage() {} + +func (x *FuncExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FuncExpr.ProtoReflect.Descriptor instead. +func (*FuncExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{24} +} + +func (x *FuncExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *FuncExpr) GetFuncid() uint32 { + if x != nil { + return x.Funcid + } + return 0 +} + +func (x *FuncExpr) GetFuncresulttype() uint32 { + if x != nil { + return x.Funcresulttype + } + return 0 +} + +func (x *FuncExpr) GetFuncretset() bool { + if x != nil { + return x.Funcretset + } + return false +} + +func (x *FuncExpr) GetFuncvariadic() bool { + if x != nil { + return x.Funcvariadic + } + return false +} + +func (x *FuncExpr) GetFuncformat() CoercionForm { + if x != nil { + return x.Funcformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *FuncExpr) GetFunccollid() uint32 { + if x != nil { + return x.Funccollid + } + return 0 +} + +func (x *FuncExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *FuncExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *FuncExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type NamedArgExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Argnumber int32 `protobuf:"varint,4,opt,name=argnumber,proto3" json:"argnumber,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NamedArgExpr) Reset() { + *x = NamedArgExpr{} + mi := &file_pg_query_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NamedArgExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamedArgExpr) ProtoMessage() {} + +func (x *NamedArgExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamedArgExpr.ProtoReflect.Descriptor instead. +func (*NamedArgExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{25} +} + +func (x *NamedArgExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NamedArgExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *NamedArgExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NamedArgExpr) GetArgnumber() int32 { + if x != nil { + return x.Argnumber + } + return 0 +} + +func (x *NamedArgExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type OpExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opresulttype uint32 `protobuf:"varint,3,opt,name=opresulttype,proto3" json:"opresulttype,omitempty"` + Opretset bool `protobuf:"varint,4,opt,name=opretset,proto3" json:"opretset,omitempty"` + Opcollid uint32 `protobuf:"varint,5,opt,name=opcollid,proto3" json:"opcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,6,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,7,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OpExpr) Reset() { + *x = OpExpr{} + mi := &file_pg_query_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OpExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpExpr) ProtoMessage() {} + +func (x *OpExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpExpr.ProtoReflect.Descriptor instead. +func (*OpExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{26} +} + +func (x *OpExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *OpExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *OpExpr) GetOpresulttype() uint32 { + if x != nil { + return x.Opresulttype + } + return 0 +} + +func (x *OpExpr) GetOpretset() bool { + if x != nil { + return x.Opretset + } + return false +} + +func (x *OpExpr) GetOpcollid() uint32 { + if x != nil { + return x.Opcollid + } + return 0 +} + +func (x *OpExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *OpExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *OpExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type DistinctExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opresulttype uint32 `protobuf:"varint,3,opt,name=opresulttype,proto3" json:"opresulttype,omitempty"` + Opretset bool `protobuf:"varint,4,opt,name=opretset,proto3" json:"opretset,omitempty"` + Opcollid uint32 `protobuf:"varint,5,opt,name=opcollid,proto3" json:"opcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,6,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,7,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DistinctExpr) Reset() { + *x = DistinctExpr{} + mi := &file_pg_query_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DistinctExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DistinctExpr) ProtoMessage() {} + +func (x *DistinctExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DistinctExpr.ProtoReflect.Descriptor instead. +func (*DistinctExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{27} +} + +func (x *DistinctExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *DistinctExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *DistinctExpr) GetOpresulttype() uint32 { + if x != nil { + return x.Opresulttype + } + return 0 +} + +func (x *DistinctExpr) GetOpretset() bool { + if x != nil { + return x.Opretset + } + return false +} + +func (x *DistinctExpr) GetOpcollid() uint32 { + if x != nil { + return x.Opcollid + } + return 0 +} + +func (x *DistinctExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *DistinctExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *DistinctExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type NullIfExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + Opresulttype uint32 `protobuf:"varint,3,opt,name=opresulttype,proto3" json:"opresulttype,omitempty"` + Opretset bool `protobuf:"varint,4,opt,name=opretset,proto3" json:"opretset,omitempty"` + Opcollid uint32 `protobuf:"varint,5,opt,name=opcollid,proto3" json:"opcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,6,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,7,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NullIfExpr) Reset() { + *x = NullIfExpr{} + mi := &file_pg_query_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NullIfExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NullIfExpr) ProtoMessage() {} + +func (x *NullIfExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NullIfExpr.ProtoReflect.Descriptor instead. +func (*NullIfExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{28} +} + +func (x *NullIfExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NullIfExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *NullIfExpr) GetOpresulttype() uint32 { + if x != nil { + return x.Opresulttype + } + return 0 +} + +func (x *NullIfExpr) GetOpretset() bool { + if x != nil { + return x.Opretset + } + return false +} + +func (x *NullIfExpr) GetOpcollid() uint32 { + if x != nil { + return x.Opcollid + } + return 0 +} + +func (x *NullIfExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *NullIfExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *NullIfExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ScalarArrayOpExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Opno uint32 `protobuf:"varint,2,opt,name=opno,proto3" json:"opno,omitempty"` + UseOr bool `protobuf:"varint,3,opt,name=use_or,json=useOr,proto3" json:"use_or,omitempty"` + Inputcollid uint32 `protobuf:"varint,4,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Args []*Node `protobuf:"bytes,5,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScalarArrayOpExpr) Reset() { + *x = ScalarArrayOpExpr{} + mi := &file_pg_query_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScalarArrayOpExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScalarArrayOpExpr) ProtoMessage() {} + +func (x *ScalarArrayOpExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScalarArrayOpExpr.ProtoReflect.Descriptor instead. +func (*ScalarArrayOpExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{29} +} + +func (x *ScalarArrayOpExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ScalarArrayOpExpr) GetOpno() uint32 { + if x != nil { + return x.Opno + } + return 0 +} + +func (x *ScalarArrayOpExpr) GetUseOr() bool { + if x != nil { + return x.UseOr + } + return false +} + +func (x *ScalarArrayOpExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *ScalarArrayOpExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *ScalarArrayOpExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type BoolExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Boolop BoolExprType `protobuf:"varint,2,opt,name=boolop,proto3,enum=pg_query.BoolExprType" json:"boolop,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BoolExpr) Reset() { + *x = BoolExpr{} + mi := &file_pg_query_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BoolExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BoolExpr) ProtoMessage() {} + +func (x *BoolExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BoolExpr.ProtoReflect.Descriptor instead. +func (*BoolExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{30} +} + +func (x *BoolExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *BoolExpr) GetBoolop() BoolExprType { + if x != nil { + return x.Boolop + } + return BoolExprType_BOOL_EXPR_TYPE_UNDEFINED +} + +func (x *BoolExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *BoolExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SubLink struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + SubLinkType SubLinkType `protobuf:"varint,2,opt,name=sub_link_type,json=subLinkType,proto3,enum=pg_query.SubLinkType" json:"sub_link_type,omitempty"` + SubLinkId int32 `protobuf:"varint,3,opt,name=sub_link_id,json=subLinkId,proto3" json:"sub_link_id,omitempty"` + Testexpr *Node `protobuf:"bytes,4,opt,name=testexpr,proto3" json:"testexpr,omitempty"` + OperName []*Node `protobuf:"bytes,5,rep,name=oper_name,json=operName,proto3" json:"oper_name,omitempty"` + Subselect *Node `protobuf:"bytes,6,opt,name=subselect,proto3" json:"subselect,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubLink) Reset() { + *x = SubLink{} + mi := &file_pg_query_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubLink) ProtoMessage() {} + +func (x *SubLink) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubLink.ProtoReflect.Descriptor instead. +func (*SubLink) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{31} +} + +func (x *SubLink) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SubLink) GetSubLinkType() SubLinkType { + if x != nil { + return x.SubLinkType + } + return SubLinkType_SUB_LINK_TYPE_UNDEFINED +} + +func (x *SubLink) GetSubLinkId() int32 { + if x != nil { + return x.SubLinkId + } + return 0 +} + +func (x *SubLink) GetTestexpr() *Node { + if x != nil { + return x.Testexpr + } + return nil +} + +func (x *SubLink) GetOperName() []*Node { + if x != nil { + return x.OperName + } + return nil +} + +func (x *SubLink) GetSubselect() *Node { + if x != nil { + return x.Subselect + } + return nil +} + +func (x *SubLink) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SubPlan struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + SubLinkType SubLinkType `protobuf:"varint,2,opt,name=sub_link_type,json=subLinkType,proto3,enum=pg_query.SubLinkType" json:"sub_link_type,omitempty"` + Testexpr *Node `protobuf:"bytes,3,opt,name=testexpr,proto3" json:"testexpr,omitempty"` + ParamIds []*Node `protobuf:"bytes,4,rep,name=param_ids,json=paramIds,proto3" json:"param_ids,omitempty"` + PlanId int32 `protobuf:"varint,5,opt,name=plan_id,proto3" json:"plan_id,omitempty"` + PlanName string `protobuf:"bytes,6,opt,name=plan_name,proto3" json:"plan_name,omitempty"` + FirstColType uint32 `protobuf:"varint,7,opt,name=first_col_type,json=firstColType,proto3" json:"first_col_type,omitempty"` + FirstColTypmod int32 `protobuf:"varint,8,opt,name=first_col_typmod,json=firstColTypmod,proto3" json:"first_col_typmod,omitempty"` + FirstColCollation uint32 `protobuf:"varint,9,opt,name=first_col_collation,json=firstColCollation,proto3" json:"first_col_collation,omitempty"` + UseHashTable bool `protobuf:"varint,10,opt,name=use_hash_table,json=useHashTable,proto3" json:"use_hash_table,omitempty"` + UnknownEqFalse bool `protobuf:"varint,11,opt,name=unknown_eq_false,json=unknownEqFalse,proto3" json:"unknown_eq_false,omitempty"` + ParallelSafe bool `protobuf:"varint,12,opt,name=parallel_safe,proto3" json:"parallel_safe,omitempty"` + SetParam []*Node `protobuf:"bytes,13,rep,name=set_param,json=setParam,proto3" json:"set_param,omitempty"` + ParParam []*Node `protobuf:"bytes,14,rep,name=par_param,json=parParam,proto3" json:"par_param,omitempty"` + Args []*Node `protobuf:"bytes,15,rep,name=args,proto3" json:"args,omitempty"` + StartupCost float64 `protobuf:"fixed64,16,opt,name=startup_cost,proto3" json:"startup_cost,omitempty"` + PerCallCost float64 `protobuf:"fixed64,17,opt,name=per_call_cost,proto3" json:"per_call_cost,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubPlan) Reset() { + *x = SubPlan{} + mi := &file_pg_query_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubPlan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubPlan) ProtoMessage() {} + +func (x *SubPlan) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubPlan.ProtoReflect.Descriptor instead. +func (*SubPlan) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{32} +} + +func (x *SubPlan) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SubPlan) GetSubLinkType() SubLinkType { + if x != nil { + return x.SubLinkType + } + return SubLinkType_SUB_LINK_TYPE_UNDEFINED +} + +func (x *SubPlan) GetTestexpr() *Node { + if x != nil { + return x.Testexpr + } + return nil +} + +func (x *SubPlan) GetParamIds() []*Node { + if x != nil { + return x.ParamIds + } + return nil +} + +func (x *SubPlan) GetPlanId() int32 { + if x != nil { + return x.PlanId + } + return 0 +} + +func (x *SubPlan) GetPlanName() string { + if x != nil { + return x.PlanName + } + return "" +} + +func (x *SubPlan) GetFirstColType() uint32 { + if x != nil { + return x.FirstColType + } + return 0 +} + +func (x *SubPlan) GetFirstColTypmod() int32 { + if x != nil { + return x.FirstColTypmod + } + return 0 +} + +func (x *SubPlan) GetFirstColCollation() uint32 { + if x != nil { + return x.FirstColCollation + } + return 0 +} + +func (x *SubPlan) GetUseHashTable() bool { + if x != nil { + return x.UseHashTable + } + return false +} + +func (x *SubPlan) GetUnknownEqFalse() bool { + if x != nil { + return x.UnknownEqFalse + } + return false +} + +func (x *SubPlan) GetParallelSafe() bool { + if x != nil { + return x.ParallelSafe + } + return false +} + +func (x *SubPlan) GetSetParam() []*Node { + if x != nil { + return x.SetParam + } + return nil +} + +func (x *SubPlan) GetParParam() []*Node { + if x != nil { + return x.ParParam + } + return nil +} + +func (x *SubPlan) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *SubPlan) GetStartupCost() float64 { + if x != nil { + return x.StartupCost + } + return 0 +} + +func (x *SubPlan) GetPerCallCost() float64 { + if x != nil { + return x.PerCallCost + } + return 0 +} + +type AlternativeSubPlan struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Subplans []*Node `protobuf:"bytes,2,rep,name=subplans,proto3" json:"subplans,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlternativeSubPlan) Reset() { + *x = AlternativeSubPlan{} + mi := &file_pg_query_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlternativeSubPlan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlternativeSubPlan) ProtoMessage() {} + +func (x *AlternativeSubPlan) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlternativeSubPlan.ProtoReflect.Descriptor instead. +func (*AlternativeSubPlan) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{33} +} + +func (x *AlternativeSubPlan) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *AlternativeSubPlan) GetSubplans() []*Node { + if x != nil { + return x.Subplans + } + return nil +} + +type FieldSelect struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Fieldnum int32 `protobuf:"varint,3,opt,name=fieldnum,proto3" json:"fieldnum,omitempty"` + Resulttype uint32 `protobuf:"varint,4,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,5,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,6,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FieldSelect) Reset() { + *x = FieldSelect{} + mi := &file_pg_query_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldSelect) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldSelect) ProtoMessage() {} + +func (x *FieldSelect) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldSelect.ProtoReflect.Descriptor instead. +func (*FieldSelect) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{34} +} + +func (x *FieldSelect) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *FieldSelect) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *FieldSelect) GetFieldnum() int32 { + if x != nil { + return x.Fieldnum + } + return 0 +} + +func (x *FieldSelect) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *FieldSelect) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *FieldSelect) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +type FieldStore struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Newvals []*Node `protobuf:"bytes,3,rep,name=newvals,proto3" json:"newvals,omitempty"` + Fieldnums []*Node `protobuf:"bytes,4,rep,name=fieldnums,proto3" json:"fieldnums,omitempty"` + Resulttype uint32 `protobuf:"varint,5,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FieldStore) Reset() { + *x = FieldStore{} + mi := &file_pg_query_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FieldStore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FieldStore) ProtoMessage() {} + +func (x *FieldStore) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FieldStore.ProtoReflect.Descriptor instead. +func (*FieldStore) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{35} +} + +func (x *FieldStore) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *FieldStore) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *FieldStore) GetNewvals() []*Node { + if x != nil { + return x.Newvals + } + return nil +} + +func (x *FieldStore) GetFieldnums() []*Node { + if x != nil { + return x.Fieldnums + } + return nil +} + +func (x *FieldStore) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +type RelabelType struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,4,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,5,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Relabelformat CoercionForm `protobuf:"varint,6,opt,name=relabelformat,proto3,enum=pg_query.CoercionForm" json:"relabelformat,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RelabelType) Reset() { + *x = RelabelType{} + mi := &file_pg_query_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RelabelType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RelabelType) ProtoMessage() {} + +func (x *RelabelType) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RelabelType.ProtoReflect.Descriptor instead. +func (*RelabelType) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{36} +} + +func (x *RelabelType) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *RelabelType) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *RelabelType) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *RelabelType) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *RelabelType) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *RelabelType) GetRelabelformat() CoercionForm { + if x != nil { + return x.Relabelformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *RelabelType) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CoerceViaIO struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resultcollid uint32 `protobuf:"varint,4,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Coerceformat CoercionForm `protobuf:"varint,5,opt,name=coerceformat,proto3,enum=pg_query.CoercionForm" json:"coerceformat,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CoerceViaIO) Reset() { + *x = CoerceViaIO{} + mi := &file_pg_query_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CoerceViaIO) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoerceViaIO) ProtoMessage() {} + +func (x *CoerceViaIO) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoerceViaIO.ProtoReflect.Descriptor instead. +func (*CoerceViaIO) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{37} +} + +func (x *CoerceViaIO) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoerceViaIO) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CoerceViaIO) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *CoerceViaIO) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *CoerceViaIO) GetCoerceformat() CoercionForm { + if x != nil { + return x.Coerceformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *CoerceViaIO) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ArrayCoerceExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Elemexpr *Node `protobuf:"bytes,3,opt,name=elemexpr,proto3" json:"elemexpr,omitempty"` + Resulttype uint32 `protobuf:"varint,4,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,5,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,6,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Coerceformat CoercionForm `protobuf:"varint,7,opt,name=coerceformat,proto3,enum=pg_query.CoercionForm" json:"coerceformat,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArrayCoerceExpr) Reset() { + *x = ArrayCoerceExpr{} + mi := &file_pg_query_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArrayCoerceExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArrayCoerceExpr) ProtoMessage() {} + +func (x *ArrayCoerceExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArrayCoerceExpr.ProtoReflect.Descriptor instead. +func (*ArrayCoerceExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{38} +} + +func (x *ArrayCoerceExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ArrayCoerceExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *ArrayCoerceExpr) GetElemexpr() *Node { + if x != nil { + return x.Elemexpr + } + return nil +} + +func (x *ArrayCoerceExpr) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *ArrayCoerceExpr) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *ArrayCoerceExpr) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *ArrayCoerceExpr) GetCoerceformat() CoercionForm { + if x != nil { + return x.Coerceformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *ArrayCoerceExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ConvertRowtypeExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Convertformat CoercionForm `protobuf:"varint,4,opt,name=convertformat,proto3,enum=pg_query.CoercionForm" json:"convertformat,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConvertRowtypeExpr) Reset() { + *x = ConvertRowtypeExpr{} + mi := &file_pg_query_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConvertRowtypeExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConvertRowtypeExpr) ProtoMessage() {} + +func (x *ConvertRowtypeExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConvertRowtypeExpr.ProtoReflect.Descriptor instead. +func (*ConvertRowtypeExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{39} +} + +func (x *ConvertRowtypeExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ConvertRowtypeExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *ConvertRowtypeExpr) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *ConvertRowtypeExpr) GetConvertformat() CoercionForm { + if x != nil { + return x.Convertformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *ConvertRowtypeExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CollateExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + CollOid uint32 `protobuf:"varint,3,opt,name=coll_oid,json=collOid,proto3" json:"coll_oid,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollateExpr) Reset() { + *x = CollateExpr{} + mi := &file_pg_query_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollateExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollateExpr) ProtoMessage() {} + +func (x *CollateExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollateExpr.ProtoReflect.Descriptor instead. +func (*CollateExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{40} +} + +func (x *CollateExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CollateExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CollateExpr) GetCollOid() uint32 { + if x != nil { + return x.CollOid + } + return 0 +} + +func (x *CollateExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CaseExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Casetype uint32 `protobuf:"varint,2,opt,name=casetype,proto3" json:"casetype,omitempty"` + Casecollid uint32 `protobuf:"varint,3,opt,name=casecollid,proto3" json:"casecollid,omitempty"` + Arg *Node `protobuf:"bytes,4,opt,name=arg,proto3" json:"arg,omitempty"` + Args []*Node `protobuf:"bytes,5,rep,name=args,proto3" json:"args,omitempty"` + Defresult *Node `protobuf:"bytes,6,opt,name=defresult,proto3" json:"defresult,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CaseExpr) Reset() { + *x = CaseExpr{} + mi := &file_pg_query_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CaseExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaseExpr) ProtoMessage() {} + +func (x *CaseExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaseExpr.ProtoReflect.Descriptor instead. +func (*CaseExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{41} +} + +func (x *CaseExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CaseExpr) GetCasetype() uint32 { + if x != nil { + return x.Casetype + } + return 0 +} + +func (x *CaseExpr) GetCasecollid() uint32 { + if x != nil { + return x.Casecollid + } + return 0 +} + +func (x *CaseExpr) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CaseExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *CaseExpr) GetDefresult() *Node { + if x != nil { + return x.Defresult + } + return nil +} + +func (x *CaseExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CaseWhen struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Result *Node `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CaseWhen) Reset() { + *x = CaseWhen{} + mi := &file_pg_query_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CaseWhen) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaseWhen) ProtoMessage() {} + +func (x *CaseWhen) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaseWhen.ProtoReflect.Descriptor instead. +func (*CaseWhen) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{42} +} + +func (x *CaseWhen) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CaseWhen) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *CaseWhen) GetResult() *Node { + if x != nil { + return x.Result + } + return nil +} + +func (x *CaseWhen) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CaseTestExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + TypeId uint32 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeMod int32 `protobuf:"varint,3,opt,name=type_mod,json=typeMod,proto3" json:"type_mod,omitempty"` + Collation uint32 `protobuf:"varint,4,opt,name=collation,proto3" json:"collation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CaseTestExpr) Reset() { + *x = CaseTestExpr{} + mi := &file_pg_query_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CaseTestExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaseTestExpr) ProtoMessage() {} + +func (x *CaseTestExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CaseTestExpr.ProtoReflect.Descriptor instead. +func (*CaseTestExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{43} +} + +func (x *CaseTestExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CaseTestExpr) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *CaseTestExpr) GetTypeMod() int32 { + if x != nil { + return x.TypeMod + } + return 0 +} + +func (x *CaseTestExpr) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +type ArrayExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + ArrayTypeid uint32 `protobuf:"varint,2,opt,name=array_typeid,proto3" json:"array_typeid,omitempty"` + ArrayCollid uint32 `protobuf:"varint,3,opt,name=array_collid,proto3" json:"array_collid,omitempty"` + ElementTypeid uint32 `protobuf:"varint,4,opt,name=element_typeid,proto3" json:"element_typeid,omitempty"` + Elements []*Node `protobuf:"bytes,5,rep,name=elements,proto3" json:"elements,omitempty"` + Multidims bool `protobuf:"varint,6,opt,name=multidims,proto3" json:"multidims,omitempty"` + ListStart int32 `protobuf:"varint,7,opt,name=list_start,proto3" json:"list_start,omitempty"` + ListEnd int32 `protobuf:"varint,8,opt,name=list_end,proto3" json:"list_end,omitempty"` + Location int32 `protobuf:"varint,9,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ArrayExpr) Reset() { + *x = ArrayExpr{} + mi := &file_pg_query_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ArrayExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArrayExpr) ProtoMessage() {} + +func (x *ArrayExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArrayExpr.ProtoReflect.Descriptor instead. +func (*ArrayExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{44} +} + +func (x *ArrayExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ArrayExpr) GetArrayTypeid() uint32 { + if x != nil { + return x.ArrayTypeid + } + return 0 +} + +func (x *ArrayExpr) GetArrayCollid() uint32 { + if x != nil { + return x.ArrayCollid + } + return 0 +} + +func (x *ArrayExpr) GetElementTypeid() uint32 { + if x != nil { + return x.ElementTypeid + } + return 0 +} + +func (x *ArrayExpr) GetElements() []*Node { + if x != nil { + return x.Elements + } + return nil +} + +func (x *ArrayExpr) GetMultidims() bool { + if x != nil { + return x.Multidims + } + return false +} + +func (x *ArrayExpr) GetListStart() int32 { + if x != nil { + return x.ListStart + } + return 0 +} + +func (x *ArrayExpr) GetListEnd() int32 { + if x != nil { + return x.ListEnd + } + return 0 +} + +func (x *ArrayExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RowExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + RowTypeid uint32 `protobuf:"varint,3,opt,name=row_typeid,proto3" json:"row_typeid,omitempty"` + RowFormat CoercionForm `protobuf:"varint,4,opt,name=row_format,proto3,enum=pg_query.CoercionForm" json:"row_format,omitempty"` + Colnames []*Node `protobuf:"bytes,5,rep,name=colnames,proto3" json:"colnames,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RowExpr) Reset() { + *x = RowExpr{} + mi := &file_pg_query_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RowExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RowExpr) ProtoMessage() {} + +func (x *RowExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RowExpr.ProtoReflect.Descriptor instead. +func (*RowExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{45} +} + +func (x *RowExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *RowExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *RowExpr) GetRowTypeid() uint32 { + if x != nil { + return x.RowTypeid + } + return 0 +} + +func (x *RowExpr) GetRowFormat() CoercionForm { + if x != nil { + return x.RowFormat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *RowExpr) GetColnames() []*Node { + if x != nil { + return x.Colnames + } + return nil +} + +func (x *RowExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RowCompareExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Cmptype CompareType `protobuf:"varint,2,opt,name=cmptype,proto3,enum=pg_query.CompareType" json:"cmptype,omitempty"` + Opnos []*Node `protobuf:"bytes,3,rep,name=opnos,proto3" json:"opnos,omitempty"` + Opfamilies []*Node `protobuf:"bytes,4,rep,name=opfamilies,proto3" json:"opfamilies,omitempty"` + Inputcollids []*Node `protobuf:"bytes,5,rep,name=inputcollids,proto3" json:"inputcollids,omitempty"` + Largs []*Node `protobuf:"bytes,6,rep,name=largs,proto3" json:"largs,omitempty"` + Rargs []*Node `protobuf:"bytes,7,rep,name=rargs,proto3" json:"rargs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RowCompareExpr) Reset() { + *x = RowCompareExpr{} + mi := &file_pg_query_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RowCompareExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RowCompareExpr) ProtoMessage() {} + +func (x *RowCompareExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RowCompareExpr.ProtoReflect.Descriptor instead. +func (*RowCompareExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{46} +} + +func (x *RowCompareExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *RowCompareExpr) GetCmptype() CompareType { + if x != nil { + return x.Cmptype + } + return CompareType_COMPARE_TYPE_UNDEFINED +} + +func (x *RowCompareExpr) GetOpnos() []*Node { + if x != nil { + return x.Opnos + } + return nil +} + +func (x *RowCompareExpr) GetOpfamilies() []*Node { + if x != nil { + return x.Opfamilies + } + return nil +} + +func (x *RowCompareExpr) GetInputcollids() []*Node { + if x != nil { + return x.Inputcollids + } + return nil +} + +func (x *RowCompareExpr) GetLargs() []*Node { + if x != nil { + return x.Largs + } + return nil +} + +func (x *RowCompareExpr) GetRargs() []*Node { + if x != nil { + return x.Rargs + } + return nil +} + +type CoalesceExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Coalescetype uint32 `protobuf:"varint,2,opt,name=coalescetype,proto3" json:"coalescetype,omitempty"` + Coalescecollid uint32 `protobuf:"varint,3,opt,name=coalescecollid,proto3" json:"coalescecollid,omitempty"` + Args []*Node `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CoalesceExpr) Reset() { + *x = CoalesceExpr{} + mi := &file_pg_query_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CoalesceExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoalesceExpr) ProtoMessage() {} + +func (x *CoalesceExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoalesceExpr.ProtoReflect.Descriptor instead. +func (*CoalesceExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{47} +} + +func (x *CoalesceExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoalesceExpr) GetCoalescetype() uint32 { + if x != nil { + return x.Coalescetype + } + return 0 +} + +func (x *CoalesceExpr) GetCoalescecollid() uint32 { + if x != nil { + return x.Coalescecollid + } + return 0 +} + +func (x *CoalesceExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *CoalesceExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type MinMaxExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Minmaxtype uint32 `protobuf:"varint,2,opt,name=minmaxtype,proto3" json:"minmaxtype,omitempty"` + Minmaxcollid uint32 `protobuf:"varint,3,opt,name=minmaxcollid,proto3" json:"minmaxcollid,omitempty"` + Inputcollid uint32 `protobuf:"varint,4,opt,name=inputcollid,proto3" json:"inputcollid,omitempty"` + Op MinMaxOp `protobuf:"varint,5,opt,name=op,proto3,enum=pg_query.MinMaxOp" json:"op,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MinMaxExpr) Reset() { + *x = MinMaxExpr{} + mi := &file_pg_query_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MinMaxExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MinMaxExpr) ProtoMessage() {} + +func (x *MinMaxExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MinMaxExpr.ProtoReflect.Descriptor instead. +func (*MinMaxExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{48} +} + +func (x *MinMaxExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *MinMaxExpr) GetMinmaxtype() uint32 { + if x != nil { + return x.Minmaxtype + } + return 0 +} + +func (x *MinMaxExpr) GetMinmaxcollid() uint32 { + if x != nil { + return x.Minmaxcollid + } + return 0 +} + +func (x *MinMaxExpr) GetInputcollid() uint32 { + if x != nil { + return x.Inputcollid + } + return 0 +} + +func (x *MinMaxExpr) GetOp() MinMaxOp { + if x != nil { + return x.Op + } + return MinMaxOp_MIN_MAX_OP_UNDEFINED +} + +func (x *MinMaxExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *MinMaxExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SQLValueFunction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Op SQLValueFunctionOp `protobuf:"varint,2,opt,name=op,proto3,enum=pg_query.SQLValueFunctionOp" json:"op,omitempty"` + Type uint32 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` + Typmod int32 `protobuf:"varint,4,opt,name=typmod,proto3" json:"typmod,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SQLValueFunction) Reset() { + *x = SQLValueFunction{} + mi := &file_pg_query_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SQLValueFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SQLValueFunction) ProtoMessage() {} + +func (x *SQLValueFunction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SQLValueFunction.ProtoReflect.Descriptor instead. +func (*SQLValueFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{49} +} + +func (x *SQLValueFunction) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SQLValueFunction) GetOp() SQLValueFunctionOp { + if x != nil { + return x.Op + } + return SQLValueFunctionOp_SQLVALUE_FUNCTION_OP_UNDEFINED +} + +func (x *SQLValueFunction) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *SQLValueFunction) GetTypmod() int32 { + if x != nil { + return x.Typmod + } + return 0 +} + +func (x *SQLValueFunction) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type XmlExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Op XmlExprOp `protobuf:"varint,2,opt,name=op,proto3,enum=pg_query.XmlExprOp" json:"op,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + NamedArgs []*Node `protobuf:"bytes,4,rep,name=named_args,proto3" json:"named_args,omitempty"` + ArgNames []*Node `protobuf:"bytes,5,rep,name=arg_names,proto3" json:"arg_names,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Xmloption XmlOptionType `protobuf:"varint,7,opt,name=xmloption,proto3,enum=pg_query.XmlOptionType" json:"xmloption,omitempty"` + Indent bool `protobuf:"varint,8,opt,name=indent,proto3" json:"indent,omitempty"` + Type uint32 `protobuf:"varint,9,opt,name=type,proto3" json:"type,omitempty"` + Typmod int32 `protobuf:"varint,10,opt,name=typmod,proto3" json:"typmod,omitempty"` + Location int32 `protobuf:"varint,11,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *XmlExpr) Reset() { + *x = XmlExpr{} + mi := &file_pg_query_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *XmlExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlExpr) ProtoMessage() {} + +func (x *XmlExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlExpr.ProtoReflect.Descriptor instead. +func (*XmlExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{50} +} + +func (x *XmlExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *XmlExpr) GetOp() XmlExprOp { + if x != nil { + return x.Op + } + return XmlExprOp_XML_EXPR_OP_UNDEFINED +} + +func (x *XmlExpr) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *XmlExpr) GetNamedArgs() []*Node { + if x != nil { + return x.NamedArgs + } + return nil +} + +func (x *XmlExpr) GetArgNames() []*Node { + if x != nil { + return x.ArgNames + } + return nil +} + +func (x *XmlExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *XmlExpr) GetXmloption() XmlOptionType { + if x != nil { + return x.Xmloption + } + return XmlOptionType_XML_OPTION_TYPE_UNDEFINED +} + +func (x *XmlExpr) GetIndent() bool { + if x != nil { + return x.Indent + } + return false +} + +func (x *XmlExpr) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *XmlExpr) GetTypmod() int32 { + if x != nil { + return x.Typmod + } + return 0 +} + +func (x *XmlExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonFormat struct { + state protoimpl.MessageState `protogen:"open.v1"` + FormatType JsonFormatType `protobuf:"varint,1,opt,name=format_type,proto3,enum=pg_query.JsonFormatType" json:"format_type,omitempty"` + Encoding JsonEncoding `protobuf:"varint,2,opt,name=encoding,proto3,enum=pg_query.JsonEncoding" json:"encoding,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonFormat) Reset() { + *x = JsonFormat{} + mi := &file_pg_query_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonFormat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonFormat) ProtoMessage() {} + +func (x *JsonFormat) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[51] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonFormat.ProtoReflect.Descriptor instead. +func (*JsonFormat) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{51} +} + +func (x *JsonFormat) GetFormatType() JsonFormatType { + if x != nil { + return x.FormatType + } + return JsonFormatType_JSON_FORMAT_TYPE_UNDEFINED +} + +func (x *JsonFormat) GetEncoding() JsonEncoding { + if x != nil { + return x.Encoding + } + return JsonEncoding_JSON_ENCODING_UNDEFINED +} + +func (x *JsonFormat) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonReturning struct { + state protoimpl.MessageState `protogen:"open.v1"` + Format *JsonFormat `protobuf:"bytes,1,opt,name=format,proto3" json:"format,omitempty"` + Typid uint32 `protobuf:"varint,2,opt,name=typid,proto3" json:"typid,omitempty"` + Typmod int32 `protobuf:"varint,3,opt,name=typmod,proto3" json:"typmod,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonReturning) Reset() { + *x = JsonReturning{} + mi := &file_pg_query_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonReturning) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonReturning) ProtoMessage() {} + +func (x *JsonReturning) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonReturning.ProtoReflect.Descriptor instead. +func (*JsonReturning) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{52} +} + +func (x *JsonReturning) GetFormat() *JsonFormat { + if x != nil { + return x.Format + } + return nil +} + +func (x *JsonReturning) GetTypid() uint32 { + if x != nil { + return x.Typid + } + return 0 +} + +func (x *JsonReturning) GetTypmod() int32 { + if x != nil { + return x.Typmod + } + return 0 +} + +type JsonValueExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + RawExpr *Node `protobuf:"bytes,1,opt,name=raw_expr,proto3" json:"raw_expr,omitempty"` + FormattedExpr *Node `protobuf:"bytes,2,opt,name=formatted_expr,proto3" json:"formatted_expr,omitempty"` + Format *JsonFormat `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonValueExpr) Reset() { + *x = JsonValueExpr{} + mi := &file_pg_query_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonValueExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonValueExpr) ProtoMessage() {} + +func (x *JsonValueExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonValueExpr.ProtoReflect.Descriptor instead. +func (*JsonValueExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{53} +} + +func (x *JsonValueExpr) GetRawExpr() *Node { + if x != nil { + return x.RawExpr + } + return nil +} + +func (x *JsonValueExpr) GetFormattedExpr() *Node { + if x != nil { + return x.FormattedExpr + } + return nil +} + +func (x *JsonValueExpr) GetFormat() *JsonFormat { + if x != nil { + return x.Format + } + return nil +} + +type JsonConstructorExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Type JsonConstructorType `protobuf:"varint,2,opt,name=type,proto3,enum=pg_query.JsonConstructorType" json:"type,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + Func *Node `protobuf:"bytes,4,opt,name=func,proto3" json:"func,omitempty"` + Coercion *Node `protobuf:"bytes,5,opt,name=coercion,proto3" json:"coercion,omitempty"` + Returning *JsonReturning `protobuf:"bytes,6,opt,name=returning,proto3" json:"returning,omitempty"` + AbsentOnNull bool `protobuf:"varint,7,opt,name=absent_on_null,proto3" json:"absent_on_null,omitempty"` + Unique bool `protobuf:"varint,8,opt,name=unique,proto3" json:"unique,omitempty"` + Location int32 `protobuf:"varint,9,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonConstructorExpr) Reset() { + *x = JsonConstructorExpr{} + mi := &file_pg_query_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonConstructorExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonConstructorExpr) ProtoMessage() {} + +func (x *JsonConstructorExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonConstructorExpr.ProtoReflect.Descriptor instead. +func (*JsonConstructorExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{54} +} + +func (x *JsonConstructorExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *JsonConstructorExpr) GetType() JsonConstructorType { + if x != nil { + return x.Type + } + return JsonConstructorType_JSON_CONSTRUCTOR_TYPE_UNDEFINED +} + +func (x *JsonConstructorExpr) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *JsonConstructorExpr) GetFunc() *Node { + if x != nil { + return x.Func + } + return nil +} + +func (x *JsonConstructorExpr) GetCoercion() *Node { + if x != nil { + return x.Coercion + } + return nil +} + +func (x *JsonConstructorExpr) GetReturning() *JsonReturning { + if x != nil { + return x.Returning + } + return nil +} + +func (x *JsonConstructorExpr) GetAbsentOnNull() bool { + if x != nil { + return x.AbsentOnNull + } + return false +} + +func (x *JsonConstructorExpr) GetUnique() bool { + if x != nil { + return x.Unique + } + return false +} + +func (x *JsonConstructorExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonIsPredicate struct { + state protoimpl.MessageState `protogen:"open.v1"` + Expr *Node `protobuf:"bytes,1,opt,name=expr,proto3" json:"expr,omitempty"` + Format *JsonFormat `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` + ItemType JsonValueType `protobuf:"varint,3,opt,name=item_type,proto3,enum=pg_query.JsonValueType" json:"item_type,omitempty"` + UniqueKeys bool `protobuf:"varint,4,opt,name=unique_keys,proto3" json:"unique_keys,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonIsPredicate) Reset() { + *x = JsonIsPredicate{} + mi := &file_pg_query_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonIsPredicate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonIsPredicate) ProtoMessage() {} + +func (x *JsonIsPredicate) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[55] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonIsPredicate.ProtoReflect.Descriptor instead. +func (*JsonIsPredicate) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{55} +} + +func (x *JsonIsPredicate) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *JsonIsPredicate) GetFormat() *JsonFormat { + if x != nil { + return x.Format + } + return nil +} + +func (x *JsonIsPredicate) GetItemType() JsonValueType { + if x != nil { + return x.ItemType + } + return JsonValueType_JSON_VALUE_TYPE_UNDEFINED +} + +func (x *JsonIsPredicate) GetUniqueKeys() bool { + if x != nil { + return x.UniqueKeys + } + return false +} + +func (x *JsonIsPredicate) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonBehavior struct { + state protoimpl.MessageState `protogen:"open.v1"` + Btype JsonBehaviorType `protobuf:"varint,1,opt,name=btype,proto3,enum=pg_query.JsonBehaviorType" json:"btype,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Coerce bool `protobuf:"varint,3,opt,name=coerce,proto3" json:"coerce,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonBehavior) Reset() { + *x = JsonBehavior{} + mi := &file_pg_query_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonBehavior) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonBehavior) ProtoMessage() {} + +func (x *JsonBehavior) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[56] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonBehavior.ProtoReflect.Descriptor instead. +func (*JsonBehavior) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{56} +} + +func (x *JsonBehavior) GetBtype() JsonBehaviorType { + if x != nil { + return x.Btype + } + return JsonBehaviorType_JSON_BEHAVIOR_TYPE_UNDEFINED +} + +func (x *JsonBehavior) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *JsonBehavior) GetCoerce() bool { + if x != nil { + return x.Coerce + } + return false +} + +func (x *JsonBehavior) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Op JsonExprOp `protobuf:"varint,2,opt,name=op,proto3,enum=pg_query.JsonExprOp" json:"op,omitempty"` + ColumnName string `protobuf:"bytes,3,opt,name=column_name,proto3" json:"column_name,omitempty"` + FormattedExpr *Node `protobuf:"bytes,4,opt,name=formatted_expr,proto3" json:"formatted_expr,omitempty"` + Format *JsonFormat `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + PathSpec *Node `protobuf:"bytes,6,opt,name=path_spec,proto3" json:"path_spec,omitempty"` + Returning *JsonReturning `protobuf:"bytes,7,opt,name=returning,proto3" json:"returning,omitempty"` + PassingNames []*Node `protobuf:"bytes,8,rep,name=passing_names,proto3" json:"passing_names,omitempty"` + PassingValues []*Node `protobuf:"bytes,9,rep,name=passing_values,proto3" json:"passing_values,omitempty"` + OnEmpty *JsonBehavior `protobuf:"bytes,10,opt,name=on_empty,proto3" json:"on_empty,omitempty"` + OnError *JsonBehavior `protobuf:"bytes,11,opt,name=on_error,proto3" json:"on_error,omitempty"` + UseIoCoercion bool `protobuf:"varint,12,opt,name=use_io_coercion,proto3" json:"use_io_coercion,omitempty"` + UseJsonCoercion bool `protobuf:"varint,13,opt,name=use_json_coercion,proto3" json:"use_json_coercion,omitempty"` + Wrapper JsonWrapper `protobuf:"varint,14,opt,name=wrapper,proto3,enum=pg_query.JsonWrapper" json:"wrapper,omitempty"` + OmitQuotes bool `protobuf:"varint,15,opt,name=omit_quotes,proto3" json:"omit_quotes,omitempty"` + Collation uint32 `protobuf:"varint,16,opt,name=collation,proto3" json:"collation,omitempty"` + Location int32 `protobuf:"varint,17,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonExpr) Reset() { + *x = JsonExpr{} + mi := &file_pg_query_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonExpr) ProtoMessage() {} + +func (x *JsonExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[57] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonExpr.ProtoReflect.Descriptor instead. +func (*JsonExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{57} +} + +func (x *JsonExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *JsonExpr) GetOp() JsonExprOp { + if x != nil { + return x.Op + } + return JsonExprOp_JSON_EXPR_OP_UNDEFINED +} + +func (x *JsonExpr) GetColumnName() string { + if x != nil { + return x.ColumnName + } + return "" +} + +func (x *JsonExpr) GetFormattedExpr() *Node { + if x != nil { + return x.FormattedExpr + } + return nil +} + +func (x *JsonExpr) GetFormat() *JsonFormat { + if x != nil { + return x.Format + } + return nil +} + +func (x *JsonExpr) GetPathSpec() *Node { + if x != nil { + return x.PathSpec + } + return nil +} + +func (x *JsonExpr) GetReturning() *JsonReturning { + if x != nil { + return x.Returning + } + return nil +} + +func (x *JsonExpr) GetPassingNames() []*Node { + if x != nil { + return x.PassingNames + } + return nil +} + +func (x *JsonExpr) GetPassingValues() []*Node { + if x != nil { + return x.PassingValues + } + return nil +} + +func (x *JsonExpr) GetOnEmpty() *JsonBehavior { + if x != nil { + return x.OnEmpty + } + return nil +} + +func (x *JsonExpr) GetOnError() *JsonBehavior { + if x != nil { + return x.OnError + } + return nil +} + +func (x *JsonExpr) GetUseIoCoercion() bool { + if x != nil { + return x.UseIoCoercion + } + return false +} + +func (x *JsonExpr) GetUseJsonCoercion() bool { + if x != nil { + return x.UseJsonCoercion + } + return false +} + +func (x *JsonExpr) GetWrapper() JsonWrapper { + if x != nil { + return x.Wrapper + } + return JsonWrapper_JSON_WRAPPER_UNDEFINED +} + +func (x *JsonExpr) GetOmitQuotes() bool { + if x != nil { + return x.OmitQuotes + } + return false +} + +func (x *JsonExpr) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +func (x *JsonExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonTablePath struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonTablePath) Reset() { + *x = JsonTablePath{} + mi := &file_pg_query_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonTablePath) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonTablePath) ProtoMessage() {} + +func (x *JsonTablePath) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[58] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonTablePath.ProtoReflect.Descriptor instead. +func (*JsonTablePath) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{58} +} + +func (x *JsonTablePath) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type JsonTablePathScan struct { + state protoimpl.MessageState `protogen:"open.v1"` + Plan *Node `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + Path *JsonTablePath `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + ErrorOnError bool `protobuf:"varint,3,opt,name=error_on_error,json=errorOnError,proto3" json:"error_on_error,omitempty"` + Child *Node `protobuf:"bytes,4,opt,name=child,proto3" json:"child,omitempty"` + ColMin int32 `protobuf:"varint,5,opt,name=col_min,json=colMin,proto3" json:"col_min,omitempty"` + ColMax int32 `protobuf:"varint,6,opt,name=col_max,json=colMax,proto3" json:"col_max,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonTablePathScan) Reset() { + *x = JsonTablePathScan{} + mi := &file_pg_query_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonTablePathScan) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonTablePathScan) ProtoMessage() {} + +func (x *JsonTablePathScan) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[59] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonTablePathScan.ProtoReflect.Descriptor instead. +func (*JsonTablePathScan) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{59} +} + +func (x *JsonTablePathScan) GetPlan() *Node { + if x != nil { + return x.Plan + } + return nil +} + +func (x *JsonTablePathScan) GetPath() *JsonTablePath { + if x != nil { + return x.Path + } + return nil +} + +func (x *JsonTablePathScan) GetErrorOnError() bool { + if x != nil { + return x.ErrorOnError + } + return false +} + +func (x *JsonTablePathScan) GetChild() *Node { + if x != nil { + return x.Child + } + return nil +} + +func (x *JsonTablePathScan) GetColMin() int32 { + if x != nil { + return x.ColMin + } + return 0 +} + +func (x *JsonTablePathScan) GetColMax() int32 { + if x != nil { + return x.ColMax + } + return 0 +} + +type JsonTableSiblingJoin struct { + state protoimpl.MessageState `protogen:"open.v1"` + Plan *Node `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + Lplan *Node `protobuf:"bytes,2,opt,name=lplan,proto3" json:"lplan,omitempty"` + Rplan *Node `protobuf:"bytes,3,opt,name=rplan,proto3" json:"rplan,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonTableSiblingJoin) Reset() { + *x = JsonTableSiblingJoin{} + mi := &file_pg_query_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonTableSiblingJoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonTableSiblingJoin) ProtoMessage() {} + +func (x *JsonTableSiblingJoin) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[60] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonTableSiblingJoin.ProtoReflect.Descriptor instead. +func (*JsonTableSiblingJoin) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{60} +} + +func (x *JsonTableSiblingJoin) GetPlan() *Node { + if x != nil { + return x.Plan + } + return nil +} + +func (x *JsonTableSiblingJoin) GetLplan() *Node { + if x != nil { + return x.Lplan + } + return nil +} + +func (x *JsonTableSiblingJoin) GetRplan() *Node { + if x != nil { + return x.Rplan + } + return nil +} + +type NullTest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Nulltesttype NullTestType `protobuf:"varint,3,opt,name=nulltesttype,proto3,enum=pg_query.NullTestType" json:"nulltesttype,omitempty"` + Argisrow bool `protobuf:"varint,4,opt,name=argisrow,proto3" json:"argisrow,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NullTest) Reset() { + *x = NullTest{} + mi := &file_pg_query_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NullTest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NullTest) ProtoMessage() {} + +func (x *NullTest) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[61] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NullTest.ProtoReflect.Descriptor instead. +func (*NullTest) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{61} +} + +func (x *NullTest) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NullTest) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *NullTest) GetNulltesttype() NullTestType { + if x != nil { + return x.Nulltesttype + } + return NullTestType_NULL_TEST_TYPE_UNDEFINED +} + +func (x *NullTest) GetArgisrow() bool { + if x != nil { + return x.Argisrow + } + return false +} + +func (x *NullTest) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type BooleanTest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Booltesttype BoolTestType `protobuf:"varint,3,opt,name=booltesttype,proto3,enum=pg_query.BoolTestType" json:"booltesttype,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BooleanTest) Reset() { + *x = BooleanTest{} + mi := &file_pg_query_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BooleanTest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BooleanTest) ProtoMessage() {} + +func (x *BooleanTest) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[62] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BooleanTest.ProtoReflect.Descriptor instead. +func (*BooleanTest) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{62} +} + +func (x *BooleanTest) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *BooleanTest) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *BooleanTest) GetBooltesttype() BoolTestType { + if x != nil { + return x.Booltesttype + } + return BoolTestType_BOOL_TEST_TYPE_UNDEFINED +} + +func (x *BooleanTest) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type MergeAction struct { + state protoimpl.MessageState `protogen:"open.v1"` + MatchKind MergeMatchKind `protobuf:"varint,1,opt,name=match_kind,json=matchKind,proto3,enum=pg_query.MergeMatchKind" json:"match_kind,omitempty"` + CommandType CmdType `protobuf:"varint,2,opt,name=command_type,json=commandType,proto3,enum=pg_query.CmdType" json:"command_type,omitempty"` + Override OverridingKind `protobuf:"varint,3,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` + Qual *Node `protobuf:"bytes,4,opt,name=qual,proto3" json:"qual,omitempty"` + TargetList []*Node `protobuf:"bytes,5,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + UpdateColnos []*Node `protobuf:"bytes,6,rep,name=update_colnos,json=updateColnos,proto3" json:"update_colnos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeAction) Reset() { + *x = MergeAction{} + mi := &file_pg_query_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeAction) ProtoMessage() {} + +func (x *MergeAction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[63] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeAction.ProtoReflect.Descriptor instead. +func (*MergeAction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{63} +} + +func (x *MergeAction) GetMatchKind() MergeMatchKind { + if x != nil { + return x.MatchKind + } + return MergeMatchKind_MERGE_MATCH_KIND_UNDEFINED +} + +func (x *MergeAction) GetCommandType() CmdType { + if x != nil { + return x.CommandType + } + return CmdType_CMD_TYPE_UNDEFINED +} + +func (x *MergeAction) GetOverride() OverridingKind { + if x != nil { + return x.Override + } + return OverridingKind_OVERRIDING_KIND_UNDEFINED +} + +func (x *MergeAction) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *MergeAction) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *MergeAction) GetUpdateColnos() []*Node { + if x != nil { + return x.UpdateColnos + } + return nil +} + +type CoerceToDomain struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Arg *Node `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + Resulttype uint32 `protobuf:"varint,3,opt,name=resulttype,proto3" json:"resulttype,omitempty"` + Resulttypmod int32 `protobuf:"varint,4,opt,name=resulttypmod,proto3" json:"resulttypmod,omitempty"` + Resultcollid uint32 `protobuf:"varint,5,opt,name=resultcollid,proto3" json:"resultcollid,omitempty"` + Coercionformat CoercionForm `protobuf:"varint,6,opt,name=coercionformat,proto3,enum=pg_query.CoercionForm" json:"coercionformat,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CoerceToDomain) Reset() { + *x = CoerceToDomain{} + mi := &file_pg_query_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CoerceToDomain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoerceToDomain) ProtoMessage() {} + +func (x *CoerceToDomain) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[64] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoerceToDomain.ProtoReflect.Descriptor instead. +func (*CoerceToDomain) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{64} +} + +func (x *CoerceToDomain) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoerceToDomain) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CoerceToDomain) GetResulttype() uint32 { + if x != nil { + return x.Resulttype + } + return 0 +} + +func (x *CoerceToDomain) GetResulttypmod() int32 { + if x != nil { + return x.Resulttypmod + } + return 0 +} + +func (x *CoerceToDomain) GetResultcollid() uint32 { + if x != nil { + return x.Resultcollid + } + return 0 +} + +func (x *CoerceToDomain) GetCoercionformat() CoercionForm { + if x != nil { + return x.Coercionformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *CoerceToDomain) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CoerceToDomainValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + TypeId uint32 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeMod int32 `protobuf:"varint,3,opt,name=type_mod,json=typeMod,proto3" json:"type_mod,omitempty"` + Collation uint32 `protobuf:"varint,4,opt,name=collation,proto3" json:"collation,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CoerceToDomainValue) Reset() { + *x = CoerceToDomainValue{} + mi := &file_pg_query_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CoerceToDomainValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CoerceToDomainValue) ProtoMessage() {} + +func (x *CoerceToDomainValue) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[65] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CoerceToDomainValue.ProtoReflect.Descriptor instead. +func (*CoerceToDomainValue) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{65} +} + +func (x *CoerceToDomainValue) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CoerceToDomainValue) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *CoerceToDomainValue) GetTypeMod() int32 { + if x != nil { + return x.TypeMod + } + return 0 +} + +func (x *CoerceToDomainValue) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +func (x *CoerceToDomainValue) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type SetToDefault struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + TypeId uint32 `protobuf:"varint,2,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + TypeMod int32 `protobuf:"varint,3,opt,name=type_mod,json=typeMod,proto3" json:"type_mod,omitempty"` + Collation uint32 `protobuf:"varint,4,opt,name=collation,proto3" json:"collation,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetToDefault) Reset() { + *x = SetToDefault{} + mi := &file_pg_query_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetToDefault) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetToDefault) ProtoMessage() {} + +func (x *SetToDefault) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[66] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetToDefault.ProtoReflect.Descriptor instead. +func (*SetToDefault) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{66} +} + +func (x *SetToDefault) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *SetToDefault) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *SetToDefault) GetTypeMod() int32 { + if x != nil { + return x.TypeMod + } + return 0 +} + +func (x *SetToDefault) GetCollation() uint32 { + if x != nil { + return x.Collation + } + return 0 +} + +func (x *SetToDefault) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CurrentOfExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Cvarno uint32 `protobuf:"varint,2,opt,name=cvarno,proto3" json:"cvarno,omitempty"` + CursorName string `protobuf:"bytes,3,opt,name=cursor_name,proto3" json:"cursor_name,omitempty"` + CursorParam int32 `protobuf:"varint,4,opt,name=cursor_param,proto3" json:"cursor_param,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CurrentOfExpr) Reset() { + *x = CurrentOfExpr{} + mi := &file_pg_query_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CurrentOfExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CurrentOfExpr) ProtoMessage() {} + +func (x *CurrentOfExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[67] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CurrentOfExpr.ProtoReflect.Descriptor instead. +func (*CurrentOfExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{67} +} + +func (x *CurrentOfExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *CurrentOfExpr) GetCvarno() uint32 { + if x != nil { + return x.Cvarno + } + return 0 +} + +func (x *CurrentOfExpr) GetCursorName() string { + if x != nil { + return x.CursorName + } + return "" +} + +func (x *CurrentOfExpr) GetCursorParam() int32 { + if x != nil { + return x.CursorParam + } + return 0 +} + +type NextValueExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Seqid uint32 `protobuf:"varint,2,opt,name=seqid,proto3" json:"seqid,omitempty"` + TypeId uint32 `protobuf:"varint,3,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NextValueExpr) Reset() { + *x = NextValueExpr{} + mi := &file_pg_query_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NextValueExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NextValueExpr) ProtoMessage() {} + +func (x *NextValueExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[68] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NextValueExpr.ProtoReflect.Descriptor instead. +func (*NextValueExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{68} +} + +func (x *NextValueExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *NextValueExpr) GetSeqid() uint32 { + if x != nil { + return x.Seqid + } + return 0 +} + +func (x *NextValueExpr) GetTypeId() uint32 { + if x != nil { + return x.TypeId + } + return 0 +} + +type InferenceElem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Infercollid uint32 `protobuf:"varint,3,opt,name=infercollid,proto3" json:"infercollid,omitempty"` + Inferopclass uint32 `protobuf:"varint,4,opt,name=inferopclass,proto3" json:"inferopclass,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InferenceElem) Reset() { + *x = InferenceElem{} + mi := &file_pg_query_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InferenceElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InferenceElem) ProtoMessage() {} + +func (x *InferenceElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InferenceElem.ProtoReflect.Descriptor instead. +func (*InferenceElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{69} +} + +func (x *InferenceElem) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *InferenceElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *InferenceElem) GetInfercollid() uint32 { + if x != nil { + return x.Infercollid + } + return 0 +} + +func (x *InferenceElem) GetInferopclass() uint32 { + if x != nil { + return x.Inferopclass + } + return 0 +} + +type ReturningExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Retlevelsup int32 `protobuf:"varint,2,opt,name=retlevelsup,proto3" json:"retlevelsup,omitempty"` + Retold bool `protobuf:"varint,3,opt,name=retold,proto3" json:"retold,omitempty"` + Retexpr *Node `protobuf:"bytes,4,opt,name=retexpr,proto3" json:"retexpr,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReturningExpr) Reset() { + *x = ReturningExpr{} + mi := &file_pg_query_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReturningExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReturningExpr) ProtoMessage() {} + +func (x *ReturningExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[70] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReturningExpr.ProtoReflect.Descriptor instead. +func (*ReturningExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{70} +} + +func (x *ReturningExpr) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *ReturningExpr) GetRetlevelsup() int32 { + if x != nil { + return x.Retlevelsup + } + return 0 +} + +func (x *ReturningExpr) GetRetold() bool { + if x != nil { + return x.Retold + } + return false +} + +func (x *ReturningExpr) GetRetexpr() *Node { + if x != nil { + return x.Retexpr + } + return nil +} + +type TargetEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Resno int32 `protobuf:"varint,3,opt,name=resno,proto3" json:"resno,omitempty"` + Resname string `protobuf:"bytes,4,opt,name=resname,proto3" json:"resname,omitempty"` + Ressortgroupref uint32 `protobuf:"varint,5,opt,name=ressortgroupref,proto3" json:"ressortgroupref,omitempty"` + Resorigtbl uint32 `protobuf:"varint,6,opt,name=resorigtbl,proto3" json:"resorigtbl,omitempty"` + Resorigcol int32 `protobuf:"varint,7,opt,name=resorigcol,proto3" json:"resorigcol,omitempty"` + Resjunk bool `protobuf:"varint,8,opt,name=resjunk,proto3" json:"resjunk,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TargetEntry) Reset() { + *x = TargetEntry{} + mi := &file_pg_query_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TargetEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TargetEntry) ProtoMessage() {} + +func (x *TargetEntry) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[71] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TargetEntry.ProtoReflect.Descriptor instead. +func (*TargetEntry) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{71} +} + +func (x *TargetEntry) GetXpr() *Node { + if x != nil { + return x.Xpr + } + return nil +} + +func (x *TargetEntry) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *TargetEntry) GetResno() int32 { + if x != nil { + return x.Resno + } + return 0 +} + +func (x *TargetEntry) GetResname() string { + if x != nil { + return x.Resname + } + return "" +} + +func (x *TargetEntry) GetRessortgroupref() uint32 { + if x != nil { + return x.Ressortgroupref + } + return 0 +} + +func (x *TargetEntry) GetResorigtbl() uint32 { + if x != nil { + return x.Resorigtbl + } + return 0 +} + +func (x *TargetEntry) GetResorigcol() int32 { + if x != nil { + return x.Resorigcol + } + return 0 +} + +func (x *TargetEntry) GetResjunk() bool { + if x != nil { + return x.Resjunk + } + return false +} + +type RangeTblRef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Rtindex int32 `protobuf:"varint,1,opt,name=rtindex,proto3" json:"rtindex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeTblRef) Reset() { + *x = RangeTblRef{} + mi := &file_pg_query_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeTblRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTblRef) ProtoMessage() {} + +func (x *RangeTblRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[72] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTblRef.ProtoReflect.Descriptor instead. +func (*RangeTblRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{72} +} + +func (x *RangeTblRef) GetRtindex() int32 { + if x != nil { + return x.Rtindex + } + return 0 +} + +type JoinExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Jointype JoinType `protobuf:"varint,1,opt,name=jointype,proto3,enum=pg_query.JoinType" json:"jointype,omitempty"` + IsNatural bool `protobuf:"varint,2,opt,name=is_natural,json=isNatural,proto3" json:"is_natural,omitempty"` + Larg *Node `protobuf:"bytes,3,opt,name=larg,proto3" json:"larg,omitempty"` + Rarg *Node `protobuf:"bytes,4,opt,name=rarg,proto3" json:"rarg,omitempty"` + UsingClause []*Node `protobuf:"bytes,5,rep,name=using_clause,json=usingClause,proto3" json:"using_clause,omitempty"` + JoinUsingAlias *Alias `protobuf:"bytes,6,opt,name=join_using_alias,proto3" json:"join_using_alias,omitempty"` + Quals *Node `protobuf:"bytes,7,opt,name=quals,proto3" json:"quals,omitempty"` + Alias *Alias `protobuf:"bytes,8,opt,name=alias,proto3" json:"alias,omitempty"` + Rtindex int32 `protobuf:"varint,9,opt,name=rtindex,proto3" json:"rtindex,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JoinExpr) Reset() { + *x = JoinExpr{} + mi := &file_pg_query_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JoinExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JoinExpr) ProtoMessage() {} + +func (x *JoinExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[73] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JoinExpr.ProtoReflect.Descriptor instead. +func (*JoinExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{73} +} + +func (x *JoinExpr) GetJointype() JoinType { + if x != nil { + return x.Jointype + } + return JoinType_JOIN_TYPE_UNDEFINED +} + +func (x *JoinExpr) GetIsNatural() bool { + if x != nil { + return x.IsNatural + } + return false +} + +func (x *JoinExpr) GetLarg() *Node { + if x != nil { + return x.Larg + } + return nil +} + +func (x *JoinExpr) GetRarg() *Node { + if x != nil { + return x.Rarg + } + return nil +} + +func (x *JoinExpr) GetUsingClause() []*Node { + if x != nil { + return x.UsingClause + } + return nil +} + +func (x *JoinExpr) GetJoinUsingAlias() *Alias { + if x != nil { + return x.JoinUsingAlias + } + return nil +} + +func (x *JoinExpr) GetQuals() *Node { + if x != nil { + return x.Quals + } + return nil +} + +func (x *JoinExpr) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *JoinExpr) GetRtindex() int32 { + if x != nil { + return x.Rtindex + } + return 0 +} + +type FromExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fromlist []*Node `protobuf:"bytes,1,rep,name=fromlist,proto3" json:"fromlist,omitempty"` + Quals *Node `protobuf:"bytes,2,opt,name=quals,proto3" json:"quals,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FromExpr) Reset() { + *x = FromExpr{} + mi := &file_pg_query_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FromExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FromExpr) ProtoMessage() {} + +func (x *FromExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[74] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FromExpr.ProtoReflect.Descriptor instead. +func (*FromExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{74} +} + +func (x *FromExpr) GetFromlist() []*Node { + if x != nil { + return x.Fromlist + } + return nil +} + +func (x *FromExpr) GetQuals() *Node { + if x != nil { + return x.Quals + } + return nil +} + +type OnConflictExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Action OnConflictAction `protobuf:"varint,1,opt,name=action,proto3,enum=pg_query.OnConflictAction" json:"action,omitempty"` + ArbiterElems []*Node `protobuf:"bytes,2,rep,name=arbiter_elems,json=arbiterElems,proto3" json:"arbiter_elems,omitempty"` + ArbiterWhere *Node `protobuf:"bytes,3,opt,name=arbiter_where,json=arbiterWhere,proto3" json:"arbiter_where,omitempty"` + Constraint uint32 `protobuf:"varint,4,opt,name=constraint,proto3" json:"constraint,omitempty"` + OnConflictSet []*Node `protobuf:"bytes,5,rep,name=on_conflict_set,json=onConflictSet,proto3" json:"on_conflict_set,omitempty"` + OnConflictWhere *Node `protobuf:"bytes,6,opt,name=on_conflict_where,json=onConflictWhere,proto3" json:"on_conflict_where,omitempty"` + ExclRelIndex int32 `protobuf:"varint,7,opt,name=excl_rel_index,json=exclRelIndex,proto3" json:"excl_rel_index,omitempty"` + ExclRelTlist []*Node `protobuf:"bytes,8,rep,name=excl_rel_tlist,json=exclRelTlist,proto3" json:"excl_rel_tlist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OnConflictExpr) Reset() { + *x = OnConflictExpr{} + mi := &file_pg_query_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OnConflictExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnConflictExpr) ProtoMessage() {} + +func (x *OnConflictExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[75] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnConflictExpr.ProtoReflect.Descriptor instead. +func (*OnConflictExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{75} +} + +func (x *OnConflictExpr) GetAction() OnConflictAction { + if x != nil { + return x.Action + } + return OnConflictAction_ON_CONFLICT_ACTION_UNDEFINED +} + +func (x *OnConflictExpr) GetArbiterElems() []*Node { + if x != nil { + return x.ArbiterElems + } + return nil +} + +func (x *OnConflictExpr) GetArbiterWhere() *Node { + if x != nil { + return x.ArbiterWhere + } + return nil +} + +func (x *OnConflictExpr) GetConstraint() uint32 { + if x != nil { + return x.Constraint + } + return 0 +} + +func (x *OnConflictExpr) GetOnConflictSet() []*Node { + if x != nil { + return x.OnConflictSet + } + return nil +} + +func (x *OnConflictExpr) GetOnConflictWhere() *Node { + if x != nil { + return x.OnConflictWhere + } + return nil +} + +func (x *OnConflictExpr) GetExclRelIndex() int32 { + if x != nil { + return x.ExclRelIndex + } + return 0 +} + +func (x *OnConflictExpr) GetExclRelTlist() []*Node { + if x != nil { + return x.ExclRelTlist + } + return nil +} + +type Query struct { + state protoimpl.MessageState `protogen:"open.v1"` + CommandType CmdType `protobuf:"varint,1,opt,name=command_type,json=commandType,proto3,enum=pg_query.CmdType" json:"command_type,omitempty"` + QuerySource QuerySource `protobuf:"varint,2,opt,name=query_source,json=querySource,proto3,enum=pg_query.QuerySource" json:"query_source,omitempty"` + CanSetTag bool `protobuf:"varint,3,opt,name=can_set_tag,json=canSetTag,proto3" json:"can_set_tag,omitempty"` + UtilityStmt *Node `protobuf:"bytes,4,opt,name=utility_stmt,json=utilityStmt,proto3" json:"utility_stmt,omitempty"` + ResultRelation int32 `protobuf:"varint,5,opt,name=result_relation,json=resultRelation,proto3" json:"result_relation,omitempty"` + HasAggs bool `protobuf:"varint,6,opt,name=has_aggs,json=hasAggs,proto3" json:"has_aggs,omitempty"` + HasWindowFuncs bool `protobuf:"varint,7,opt,name=has_window_funcs,json=hasWindowFuncs,proto3" json:"has_window_funcs,omitempty"` + HasTargetSrfs bool `protobuf:"varint,8,opt,name=has_target_srfs,json=hasTargetSRFs,proto3" json:"has_target_srfs,omitempty"` + HasSubLinks bool `protobuf:"varint,9,opt,name=has_sub_links,json=hasSubLinks,proto3" json:"has_sub_links,omitempty"` + HasDistinctOn bool `protobuf:"varint,10,opt,name=has_distinct_on,json=hasDistinctOn,proto3" json:"has_distinct_on,omitempty"` + HasRecursive bool `protobuf:"varint,11,opt,name=has_recursive,json=hasRecursive,proto3" json:"has_recursive,omitempty"` + HasModifyingCte bool `protobuf:"varint,12,opt,name=has_modifying_cte,json=hasModifyingCTE,proto3" json:"has_modifying_cte,omitempty"` + HasForUpdate bool `protobuf:"varint,13,opt,name=has_for_update,json=hasForUpdate,proto3" json:"has_for_update,omitempty"` + HasRowSecurity bool `protobuf:"varint,14,opt,name=has_row_security,json=hasRowSecurity,proto3" json:"has_row_security,omitempty"` + HasGroupRte bool `protobuf:"varint,15,opt,name=has_group_rte,json=hasGroupRTE,proto3" json:"has_group_rte,omitempty"` + IsReturn bool `protobuf:"varint,16,opt,name=is_return,json=isReturn,proto3" json:"is_return,omitempty"` + CteList []*Node `protobuf:"bytes,17,rep,name=cte_list,json=cteList,proto3" json:"cte_list,omitempty"` + Rtable []*Node `protobuf:"bytes,18,rep,name=rtable,proto3" json:"rtable,omitempty"` + Rteperminfos []*Node `protobuf:"bytes,19,rep,name=rteperminfos,proto3" json:"rteperminfos,omitempty"` + Jointree *FromExpr `protobuf:"bytes,20,opt,name=jointree,proto3" json:"jointree,omitempty"` + MergeActionList []*Node `protobuf:"bytes,21,rep,name=merge_action_list,json=mergeActionList,proto3" json:"merge_action_list,omitempty"` + MergeTargetRelation int32 `protobuf:"varint,22,opt,name=merge_target_relation,json=mergeTargetRelation,proto3" json:"merge_target_relation,omitempty"` + MergeJoinCondition *Node `protobuf:"bytes,23,opt,name=merge_join_condition,json=mergeJoinCondition,proto3" json:"merge_join_condition,omitempty"` + TargetList []*Node `protobuf:"bytes,24,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + Override OverridingKind `protobuf:"varint,25,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` + OnConflict *OnConflictExpr `protobuf:"bytes,26,opt,name=on_conflict,json=onConflict,proto3" json:"on_conflict,omitempty"` + ReturningOldAlias string `protobuf:"bytes,27,opt,name=returning_old_alias,json=returningOldAlias,proto3" json:"returning_old_alias,omitempty"` + ReturningNewAlias string `protobuf:"bytes,28,opt,name=returning_new_alias,json=returningNewAlias,proto3" json:"returning_new_alias,omitempty"` + ReturningList []*Node `protobuf:"bytes,29,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` + GroupClause []*Node `protobuf:"bytes,30,rep,name=group_clause,json=groupClause,proto3" json:"group_clause,omitempty"` + GroupDistinct bool `protobuf:"varint,31,opt,name=group_distinct,json=groupDistinct,proto3" json:"group_distinct,omitempty"` + GroupingSets []*Node `protobuf:"bytes,32,rep,name=grouping_sets,json=groupingSets,proto3" json:"grouping_sets,omitempty"` + HavingQual *Node `protobuf:"bytes,33,opt,name=having_qual,json=havingQual,proto3" json:"having_qual,omitempty"` + WindowClause []*Node `protobuf:"bytes,34,rep,name=window_clause,json=windowClause,proto3" json:"window_clause,omitempty"` + DistinctClause []*Node `protobuf:"bytes,35,rep,name=distinct_clause,json=distinctClause,proto3" json:"distinct_clause,omitempty"` + SortClause []*Node `protobuf:"bytes,36,rep,name=sort_clause,json=sortClause,proto3" json:"sort_clause,omitempty"` + LimitOffset *Node `protobuf:"bytes,37,opt,name=limit_offset,json=limitOffset,proto3" json:"limit_offset,omitempty"` + LimitCount *Node `protobuf:"bytes,38,opt,name=limit_count,json=limitCount,proto3" json:"limit_count,omitempty"` + LimitOption LimitOption `protobuf:"varint,39,opt,name=limit_option,json=limitOption,proto3,enum=pg_query.LimitOption" json:"limit_option,omitempty"` + RowMarks []*Node `protobuf:"bytes,40,rep,name=row_marks,json=rowMarks,proto3" json:"row_marks,omitempty"` + SetOperations *Node `protobuf:"bytes,41,opt,name=set_operations,json=setOperations,proto3" json:"set_operations,omitempty"` + ConstraintDeps []*Node `protobuf:"bytes,42,rep,name=constraint_deps,json=constraintDeps,proto3" json:"constraint_deps,omitempty"` + WithCheckOptions []*Node `protobuf:"bytes,43,rep,name=with_check_options,json=withCheckOptions,proto3" json:"with_check_options,omitempty"` + StmtLocation int32 `protobuf:"varint,44,opt,name=stmt_location,proto3" json:"stmt_location,omitempty"` + StmtLen int32 `protobuf:"varint,45,opt,name=stmt_len,proto3" json:"stmt_len,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Query) Reset() { + *x = Query{} + mi := &file_pg_query_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Query) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Query) ProtoMessage() {} + +func (x *Query) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[76] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Query.ProtoReflect.Descriptor instead. +func (*Query) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{76} +} + +func (x *Query) GetCommandType() CmdType { + if x != nil { + return x.CommandType + } + return CmdType_CMD_TYPE_UNDEFINED +} + +func (x *Query) GetQuerySource() QuerySource { + if x != nil { + return x.QuerySource + } + return QuerySource_QUERY_SOURCE_UNDEFINED +} + +func (x *Query) GetCanSetTag() bool { + if x != nil { + return x.CanSetTag + } + return false +} + +func (x *Query) GetUtilityStmt() *Node { + if x != nil { + return x.UtilityStmt + } + return nil +} + +func (x *Query) GetResultRelation() int32 { + if x != nil { + return x.ResultRelation + } + return 0 +} + +func (x *Query) GetHasAggs() bool { + if x != nil { + return x.HasAggs + } + return false +} + +func (x *Query) GetHasWindowFuncs() bool { + if x != nil { + return x.HasWindowFuncs + } + return false +} + +func (x *Query) GetHasTargetSrfs() bool { + if x != nil { + return x.HasTargetSrfs + } + return false +} + +func (x *Query) GetHasSubLinks() bool { + if x != nil { + return x.HasSubLinks + } + return false +} + +func (x *Query) GetHasDistinctOn() bool { + if x != nil { + return x.HasDistinctOn + } + return false +} + +func (x *Query) GetHasRecursive() bool { + if x != nil { + return x.HasRecursive + } + return false +} + +func (x *Query) GetHasModifyingCte() bool { + if x != nil { + return x.HasModifyingCte + } + return false +} + +func (x *Query) GetHasForUpdate() bool { + if x != nil { + return x.HasForUpdate + } + return false +} + +func (x *Query) GetHasRowSecurity() bool { + if x != nil { + return x.HasRowSecurity + } + return false +} + +func (x *Query) GetHasGroupRte() bool { + if x != nil { + return x.HasGroupRte + } + return false +} + +func (x *Query) GetIsReturn() bool { + if x != nil { + return x.IsReturn + } + return false +} + +func (x *Query) GetCteList() []*Node { + if x != nil { + return x.CteList + } + return nil +} + +func (x *Query) GetRtable() []*Node { + if x != nil { + return x.Rtable + } + return nil +} + +func (x *Query) GetRteperminfos() []*Node { + if x != nil { + return x.Rteperminfos + } + return nil +} + +func (x *Query) GetJointree() *FromExpr { + if x != nil { + return x.Jointree + } + return nil +} + +func (x *Query) GetMergeActionList() []*Node { + if x != nil { + return x.MergeActionList + } + return nil +} + +func (x *Query) GetMergeTargetRelation() int32 { + if x != nil { + return x.MergeTargetRelation + } + return 0 +} + +func (x *Query) GetMergeJoinCondition() *Node { + if x != nil { + return x.MergeJoinCondition + } + return nil +} + +func (x *Query) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *Query) GetOverride() OverridingKind { + if x != nil { + return x.Override + } + return OverridingKind_OVERRIDING_KIND_UNDEFINED +} + +func (x *Query) GetOnConflict() *OnConflictExpr { + if x != nil { + return x.OnConflict + } + return nil +} + +func (x *Query) GetReturningOldAlias() string { + if x != nil { + return x.ReturningOldAlias + } + return "" +} + +func (x *Query) GetReturningNewAlias() string { + if x != nil { + return x.ReturningNewAlias + } + return "" +} + +func (x *Query) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + return nil +} + +func (x *Query) GetGroupClause() []*Node { + if x != nil { + return x.GroupClause + } + return nil +} + +func (x *Query) GetGroupDistinct() bool { + if x != nil { + return x.GroupDistinct + } + return false +} + +func (x *Query) GetGroupingSets() []*Node { + if x != nil { + return x.GroupingSets + } + return nil +} + +func (x *Query) GetHavingQual() *Node { + if x != nil { + return x.HavingQual + } + return nil +} + +func (x *Query) GetWindowClause() []*Node { + if x != nil { + return x.WindowClause + } + return nil +} + +func (x *Query) GetDistinctClause() []*Node { + if x != nil { + return x.DistinctClause + } + return nil +} + +func (x *Query) GetSortClause() []*Node { + if x != nil { + return x.SortClause + } + return nil +} + +func (x *Query) GetLimitOffset() *Node { + if x != nil { + return x.LimitOffset + } + return nil +} + +func (x *Query) GetLimitCount() *Node { + if x != nil { + return x.LimitCount + } + return nil +} + +func (x *Query) GetLimitOption() LimitOption { + if x != nil { + return x.LimitOption + } + return LimitOption_LIMIT_OPTION_UNDEFINED +} + +func (x *Query) GetRowMarks() []*Node { + if x != nil { + return x.RowMarks + } + return nil +} + +func (x *Query) GetSetOperations() *Node { + if x != nil { + return x.SetOperations + } + return nil +} + +func (x *Query) GetConstraintDeps() []*Node { + if x != nil { + return x.ConstraintDeps + } + return nil +} + +func (x *Query) GetWithCheckOptions() []*Node { + if x != nil { + return x.WithCheckOptions + } + return nil +} + +func (x *Query) GetStmtLocation() int32 { + if x != nil { + return x.StmtLocation + } + return 0 +} + +func (x *Query) GetStmtLen() int32 { + if x != nil { + return x.StmtLen + } + return 0 +} + +type TypeName struct { + state protoimpl.MessageState `protogen:"open.v1"` + Names []*Node `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + TypeOid uint32 `protobuf:"varint,2,opt,name=type_oid,json=typeOid,proto3" json:"type_oid,omitempty"` + Setof bool `protobuf:"varint,3,opt,name=setof,proto3" json:"setof,omitempty"` + PctType bool `protobuf:"varint,4,opt,name=pct_type,proto3" json:"pct_type,omitempty"` + Typmods []*Node `protobuf:"bytes,5,rep,name=typmods,proto3" json:"typmods,omitempty"` + Typemod int32 `protobuf:"varint,6,opt,name=typemod,proto3" json:"typemod,omitempty"` + ArrayBounds []*Node `protobuf:"bytes,7,rep,name=array_bounds,json=arrayBounds,proto3" json:"array_bounds,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TypeName) Reset() { + *x = TypeName{} + mi := &file_pg_query_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TypeName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TypeName) ProtoMessage() {} + +func (x *TypeName) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[77] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TypeName.ProtoReflect.Descriptor instead. +func (*TypeName) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{77} +} + +func (x *TypeName) GetNames() []*Node { + if x != nil { + return x.Names + } + return nil +} + +func (x *TypeName) GetTypeOid() uint32 { + if x != nil { + return x.TypeOid + } + return 0 +} + +func (x *TypeName) GetSetof() bool { + if x != nil { + return x.Setof + } + return false +} + +func (x *TypeName) GetPctType() bool { + if x != nil { + return x.PctType + } + return false +} + +func (x *TypeName) GetTypmods() []*Node { + if x != nil { + return x.Typmods + } + return nil +} + +func (x *TypeName) GetTypemod() int32 { + if x != nil { + return x.Typemod + } + return 0 +} + +func (x *TypeName) GetArrayBounds() []*Node { + if x != nil { + return x.ArrayBounds + } + return nil +} + +func (x *TypeName) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ColumnRef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fields []*Node `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ColumnRef) Reset() { + *x = ColumnRef{} + mi := &file_pg_query_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ColumnRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ColumnRef) ProtoMessage() {} + +func (x *ColumnRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[78] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ColumnRef.ProtoReflect.Descriptor instead. +func (*ColumnRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{78} +} + +func (x *ColumnRef) GetFields() []*Node { + if x != nil { + return x.Fields + } + return nil +} + +func (x *ColumnRef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ParamRef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` + Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ParamRef) Reset() { + *x = ParamRef{} + mi := &file_pg_query_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParamRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParamRef) ProtoMessage() {} + +func (x *ParamRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[79] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParamRef.ProtoReflect.Descriptor instead. +func (*ParamRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{79} +} + +func (x *ParamRef) GetNumber() int32 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *ParamRef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type A_Expr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind A_Expr_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.A_Expr_Kind" json:"kind,omitempty"` + Name []*Node `protobuf:"bytes,2,rep,name=name,proto3" json:"name,omitempty"` + Lexpr *Node `protobuf:"bytes,3,opt,name=lexpr,proto3" json:"lexpr,omitempty"` + Rexpr *Node `protobuf:"bytes,4,opt,name=rexpr,proto3" json:"rexpr,omitempty"` + RexprListStart int32 `protobuf:"varint,5,opt,name=rexpr_list_start,proto3" json:"rexpr_list_start,omitempty"` + RexprListEnd int32 `protobuf:"varint,6,opt,name=rexpr_list_end,proto3" json:"rexpr_list_end,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *A_Expr) Reset() { + *x = A_Expr{} + mi := &file_pg_query_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *A_Expr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Expr) ProtoMessage() {} + +func (x *A_Expr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[80] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Expr.ProtoReflect.Descriptor instead. +func (*A_Expr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{80} +} + +func (x *A_Expr) GetKind() A_Expr_Kind { + if x != nil { + return x.Kind + } + return A_Expr_Kind_A_EXPR_KIND_UNDEFINED +} + +func (x *A_Expr) GetName() []*Node { + if x != nil { + return x.Name + } + return nil +} + +func (x *A_Expr) GetLexpr() *Node { + if x != nil { + return x.Lexpr + } + return nil +} + +func (x *A_Expr) GetRexpr() *Node { + if x != nil { + return x.Rexpr + } + return nil +} + +func (x *A_Expr) GetRexprListStart() int32 { + if x != nil { + return x.RexprListStart + } + return 0 +} + +func (x *A_Expr) GetRexprListEnd() int32 { + if x != nil { + return x.RexprListEnd + } + return 0 +} + +func (x *A_Expr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type TypeCast struct { + state protoimpl.MessageState `protogen:"open.v1"` + Arg *Node `protobuf:"bytes,1,opt,name=arg,proto3" json:"arg,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TypeCast) Reset() { + *x = TypeCast{} + mi := &file_pg_query_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TypeCast) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TypeCast) ProtoMessage() {} + +func (x *TypeCast) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[81] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TypeCast.ProtoReflect.Descriptor instead. +func (*TypeCast) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{81} +} + +func (x *TypeCast) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *TypeCast) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *TypeCast) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CollateClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Arg *Node `protobuf:"bytes,1,opt,name=arg,proto3" json:"arg,omitempty"` + Collname []*Node `protobuf:"bytes,2,rep,name=collname,proto3" json:"collname,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CollateClause) Reset() { + *x = CollateClause{} + mi := &file_pg_query_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CollateClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CollateClause) ProtoMessage() {} + +func (x *CollateClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[82] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CollateClause.ProtoReflect.Descriptor instead. +func (*CollateClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{82} +} + +func (x *CollateClause) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *CollateClause) GetCollname() []*Node { + if x != nil { + return x.Collname + } + return nil +} + +func (x *CollateClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RoleSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Roletype RoleSpecType `protobuf:"varint,1,opt,name=roletype,proto3,enum=pg_query.RoleSpecType" json:"roletype,omitempty"` + Rolename string `protobuf:"bytes,2,opt,name=rolename,proto3" json:"rolename,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RoleSpec) Reset() { + *x = RoleSpec{} + mi := &file_pg_query_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RoleSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoleSpec) ProtoMessage() {} + +func (x *RoleSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[83] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RoleSpec.ProtoReflect.Descriptor instead. +func (*RoleSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{83} +} + +func (x *RoleSpec) GetRoletype() RoleSpecType { + if x != nil { + return x.Roletype + } + return RoleSpecType_ROLE_SPEC_TYPE_UNDEFINED +} + +func (x *RoleSpec) GetRolename() string { + if x != nil { + return x.Rolename + } + return "" +} + +func (x *RoleSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type FuncCall struct { + state protoimpl.MessageState `protogen:"open.v1"` + Funcname []*Node `protobuf:"bytes,1,rep,name=funcname,proto3" json:"funcname,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + AggOrder []*Node `protobuf:"bytes,3,rep,name=agg_order,proto3" json:"agg_order,omitempty"` + AggFilter *Node `protobuf:"bytes,4,opt,name=agg_filter,proto3" json:"agg_filter,omitempty"` + Over *WindowDef `protobuf:"bytes,5,opt,name=over,proto3" json:"over,omitempty"` + AggWithinGroup bool `protobuf:"varint,6,opt,name=agg_within_group,proto3" json:"agg_within_group,omitempty"` + AggStar bool `protobuf:"varint,7,opt,name=agg_star,proto3" json:"agg_star,omitempty"` + AggDistinct bool `protobuf:"varint,8,opt,name=agg_distinct,proto3" json:"agg_distinct,omitempty"` + FuncVariadic bool `protobuf:"varint,9,opt,name=func_variadic,proto3" json:"func_variadic,omitempty"` + Funcformat CoercionForm `protobuf:"varint,10,opt,name=funcformat,proto3,enum=pg_query.CoercionForm" json:"funcformat,omitempty"` + Location int32 `protobuf:"varint,11,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FuncCall) Reset() { + *x = FuncCall{} + mi := &file_pg_query_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FuncCall) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FuncCall) ProtoMessage() {} + +func (x *FuncCall) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[84] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FuncCall.ProtoReflect.Descriptor instead. +func (*FuncCall) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{84} +} + +func (x *FuncCall) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +func (x *FuncCall) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *FuncCall) GetAggOrder() []*Node { + if x != nil { + return x.AggOrder + } + return nil +} + +func (x *FuncCall) GetAggFilter() *Node { + if x != nil { + return x.AggFilter + } + return nil +} + +func (x *FuncCall) GetOver() *WindowDef { + if x != nil { + return x.Over + } + return nil +} + +func (x *FuncCall) GetAggWithinGroup() bool { + if x != nil { + return x.AggWithinGroup + } + return false +} + +func (x *FuncCall) GetAggStar() bool { + if x != nil { + return x.AggStar + } + return false +} + +func (x *FuncCall) GetAggDistinct() bool { + if x != nil { + return x.AggDistinct + } + return false +} + +func (x *FuncCall) GetFuncVariadic() bool { + if x != nil { + return x.FuncVariadic + } + return false +} + +func (x *FuncCall) GetFuncformat() CoercionForm { + if x != nil { + return x.Funcformat + } + return CoercionForm_COERCION_FORM_UNDEFINED +} + +func (x *FuncCall) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type A_Star struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *A_Star) Reset() { + *x = A_Star{} + mi := &file_pg_query_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *A_Star) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Star) ProtoMessage() {} + +func (x *A_Star) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[85] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Star.ProtoReflect.Descriptor instead. +func (*A_Star) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{85} +} + +type A_Indices struct { + state protoimpl.MessageState `protogen:"open.v1"` + IsSlice bool `protobuf:"varint,1,opt,name=is_slice,proto3" json:"is_slice,omitempty"` + Lidx *Node `protobuf:"bytes,2,opt,name=lidx,proto3" json:"lidx,omitempty"` + Uidx *Node `protobuf:"bytes,3,opt,name=uidx,proto3" json:"uidx,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *A_Indices) Reset() { + *x = A_Indices{} + mi := &file_pg_query_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *A_Indices) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Indices) ProtoMessage() {} + +func (x *A_Indices) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[86] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Indices.ProtoReflect.Descriptor instead. +func (*A_Indices) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{86} +} + +func (x *A_Indices) GetIsSlice() bool { + if x != nil { + return x.IsSlice + } + return false +} + +func (x *A_Indices) GetLidx() *Node { + if x != nil { + return x.Lidx + } + return nil +} + +func (x *A_Indices) GetUidx() *Node { + if x != nil { + return x.Uidx + } + return nil +} + +type A_Indirection struct { + state protoimpl.MessageState `protogen:"open.v1"` + Arg *Node `protobuf:"bytes,1,opt,name=arg,proto3" json:"arg,omitempty"` + Indirection []*Node `protobuf:"bytes,2,rep,name=indirection,proto3" json:"indirection,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *A_Indirection) Reset() { + *x = A_Indirection{} + mi := &file_pg_query_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *A_Indirection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_Indirection) ProtoMessage() {} + +func (x *A_Indirection) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[87] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_Indirection.ProtoReflect.Descriptor instead. +func (*A_Indirection) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{87} +} + +func (x *A_Indirection) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *A_Indirection) GetIndirection() []*Node { + if x != nil { + return x.Indirection + } + return nil +} + +type A_ArrayExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Elements []*Node `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` + ListStart int32 `protobuf:"varint,2,opt,name=list_start,proto3" json:"list_start,omitempty"` + ListEnd int32 `protobuf:"varint,3,opt,name=list_end,proto3" json:"list_end,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *A_ArrayExpr) Reset() { + *x = A_ArrayExpr{} + mi := &file_pg_query_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *A_ArrayExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*A_ArrayExpr) ProtoMessage() {} + +func (x *A_ArrayExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[88] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use A_ArrayExpr.ProtoReflect.Descriptor instead. +func (*A_ArrayExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{88} +} + +func (x *A_ArrayExpr) GetElements() []*Node { + if x != nil { + return x.Elements + } + return nil +} + +func (x *A_ArrayExpr) GetListStart() int32 { + if x != nil { + return x.ListStart + } + return 0 +} + +func (x *A_ArrayExpr) GetListEnd() int32 { + if x != nil { + return x.ListEnd + } + return 0 +} + +func (x *A_ArrayExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ResTarget struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Indirection []*Node `protobuf:"bytes,2,rep,name=indirection,proto3" json:"indirection,omitempty"` + Val *Node `protobuf:"bytes,3,opt,name=val,proto3" json:"val,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResTarget) Reset() { + *x = ResTarget{} + mi := &file_pg_query_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResTarget) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResTarget) ProtoMessage() {} + +func (x *ResTarget) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[89] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResTarget.ProtoReflect.Descriptor instead. +func (*ResTarget) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{89} +} + +func (x *ResTarget) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResTarget) GetIndirection() []*Node { + if x != nil { + return x.Indirection + } + return nil +} + +func (x *ResTarget) GetVal() *Node { + if x != nil { + return x.Val + } + return nil +} + +func (x *ResTarget) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type MultiAssignRef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Source *Node `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + Colno int32 `protobuf:"varint,2,opt,name=colno,proto3" json:"colno,omitempty"` + Ncolumns int32 `protobuf:"varint,3,opt,name=ncolumns,proto3" json:"ncolumns,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MultiAssignRef) Reset() { + *x = MultiAssignRef{} + mi := &file_pg_query_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MultiAssignRef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MultiAssignRef) ProtoMessage() {} + +func (x *MultiAssignRef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[90] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MultiAssignRef.ProtoReflect.Descriptor instead. +func (*MultiAssignRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{90} +} + +func (x *MultiAssignRef) GetSource() *Node { + if x != nil { + return x.Source + } + return nil +} + +func (x *MultiAssignRef) GetColno() int32 { + if x != nil { + return x.Colno + } + return 0 +} + +func (x *MultiAssignRef) GetNcolumns() int32 { + if x != nil { + return x.Ncolumns + } + return 0 +} + +type SortBy struct { + state protoimpl.MessageState `protogen:"open.v1"` + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + SortbyDir SortByDir `protobuf:"varint,2,opt,name=sortby_dir,proto3,enum=pg_query.SortByDir" json:"sortby_dir,omitempty"` + SortbyNulls SortByNulls `protobuf:"varint,3,opt,name=sortby_nulls,proto3,enum=pg_query.SortByNulls" json:"sortby_nulls,omitempty"` + UseOp []*Node `protobuf:"bytes,4,rep,name=use_op,json=useOp,proto3" json:"use_op,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SortBy) Reset() { + *x = SortBy{} + mi := &file_pg_query_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SortBy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SortBy) ProtoMessage() {} + +func (x *SortBy) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[91] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SortBy.ProtoReflect.Descriptor instead. +func (*SortBy) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{91} +} + +func (x *SortBy) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +func (x *SortBy) GetSortbyDir() SortByDir { + if x != nil { + return x.SortbyDir + } + return SortByDir_SORT_BY_DIR_UNDEFINED +} + +func (x *SortBy) GetSortbyNulls() SortByNulls { + if x != nil { + return x.SortbyNulls + } + return SortByNulls_SORT_BY_NULLS_UNDEFINED +} + +func (x *SortBy) GetUseOp() []*Node { + if x != nil { + return x.UseOp + } + return nil +} + +func (x *SortBy) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowDef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Refname string `protobuf:"bytes,2,opt,name=refname,proto3" json:"refname,omitempty"` + PartitionClause []*Node `protobuf:"bytes,3,rep,name=partition_clause,json=partitionClause,proto3" json:"partition_clause,omitempty"` + OrderClause []*Node `protobuf:"bytes,4,rep,name=order_clause,json=orderClause,proto3" json:"order_clause,omitempty"` + FrameOptions int32 `protobuf:"varint,5,opt,name=frame_options,json=frameOptions,proto3" json:"frame_options,omitempty"` + StartOffset *Node `protobuf:"bytes,6,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"` + EndOffset *Node `protobuf:"bytes,7,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WindowDef) Reset() { + *x = WindowDef{} + mi := &file_pg_query_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WindowDef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowDef) ProtoMessage() {} + +func (x *WindowDef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[92] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowDef.ProtoReflect.Descriptor instead. +func (*WindowDef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{92} +} + +func (x *WindowDef) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WindowDef) GetRefname() string { + if x != nil { + return x.Refname + } + return "" +} + +func (x *WindowDef) GetPartitionClause() []*Node { + if x != nil { + return x.PartitionClause + } + return nil +} + +func (x *WindowDef) GetOrderClause() []*Node { + if x != nil { + return x.OrderClause + } + return nil +} + +func (x *WindowDef) GetFrameOptions() int32 { + if x != nil { + return x.FrameOptions + } + return 0 +} + +func (x *WindowDef) GetStartOffset() *Node { + if x != nil { + return x.StartOffset + } + return nil +} + +func (x *WindowDef) GetEndOffset() *Node { + if x != nil { + return x.EndOffset + } + return nil +} + +func (x *WindowDef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeSubselect struct { + state protoimpl.MessageState `protogen:"open.v1"` + Lateral bool `protobuf:"varint,1,opt,name=lateral,proto3" json:"lateral,omitempty"` + Subquery *Node `protobuf:"bytes,2,opt,name=subquery,proto3" json:"subquery,omitempty"` + Alias *Alias `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeSubselect) Reset() { + *x = RangeSubselect{} + mi := &file_pg_query_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeSubselect) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeSubselect) ProtoMessage() {} + +func (x *RangeSubselect) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[93] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeSubselect.ProtoReflect.Descriptor instead. +func (*RangeSubselect) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{93} +} + +func (x *RangeSubselect) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeSubselect) GetSubquery() *Node { + if x != nil { + return x.Subquery + } + return nil +} + +func (x *RangeSubselect) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +type RangeFunction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Lateral bool `protobuf:"varint,1,opt,name=lateral,proto3" json:"lateral,omitempty"` + Ordinality bool `protobuf:"varint,2,opt,name=ordinality,proto3" json:"ordinality,omitempty"` + IsRowsfrom bool `protobuf:"varint,3,opt,name=is_rowsfrom,proto3" json:"is_rowsfrom,omitempty"` + Functions []*Node `protobuf:"bytes,4,rep,name=functions,proto3" json:"functions,omitempty"` + Alias *Alias `protobuf:"bytes,5,opt,name=alias,proto3" json:"alias,omitempty"` + Coldeflist []*Node `protobuf:"bytes,6,rep,name=coldeflist,proto3" json:"coldeflist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeFunction) Reset() { + *x = RangeFunction{} + mi := &file_pg_query_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeFunction) ProtoMessage() {} + +func (x *RangeFunction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[94] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeFunction.ProtoReflect.Descriptor instead. +func (*RangeFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{94} +} + +func (x *RangeFunction) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeFunction) GetOrdinality() bool { + if x != nil { + return x.Ordinality + } + return false +} + +func (x *RangeFunction) GetIsRowsfrom() bool { + if x != nil { + return x.IsRowsfrom + } + return false +} + +func (x *RangeFunction) GetFunctions() []*Node { + if x != nil { + return x.Functions + } + return nil +} + +func (x *RangeFunction) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeFunction) GetColdeflist() []*Node { + if x != nil { + return x.Coldeflist + } + return nil +} + +type RangeTableFunc struct { + state protoimpl.MessageState `protogen:"open.v1"` + Lateral bool `protobuf:"varint,1,opt,name=lateral,proto3" json:"lateral,omitempty"` + Docexpr *Node `protobuf:"bytes,2,opt,name=docexpr,proto3" json:"docexpr,omitempty"` + Rowexpr *Node `protobuf:"bytes,3,opt,name=rowexpr,proto3" json:"rowexpr,omitempty"` + Namespaces []*Node `protobuf:"bytes,4,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + Columns []*Node `protobuf:"bytes,5,rep,name=columns,proto3" json:"columns,omitempty"` + Alias *Alias `protobuf:"bytes,6,opt,name=alias,proto3" json:"alias,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeTableFunc) Reset() { + *x = RangeTableFunc{} + mi := &file_pg_query_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeTableFunc) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTableFunc) ProtoMessage() {} + +func (x *RangeTableFunc) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[95] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTableFunc.ProtoReflect.Descriptor instead. +func (*RangeTableFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{95} +} + +func (x *RangeTableFunc) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeTableFunc) GetDocexpr() *Node { + if x != nil { + return x.Docexpr + } + return nil +} + +func (x *RangeTableFunc) GetRowexpr() *Node { + if x != nil { + return x.Rowexpr + } + return nil +} + +func (x *RangeTableFunc) GetNamespaces() []*Node { + if x != nil { + return x.Namespaces + } + return nil +} + +func (x *RangeTableFunc) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +func (x *RangeTableFunc) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeTableFunc) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeTableFuncCol struct { + state protoimpl.MessageState `protogen:"open.v1"` + Colname string `protobuf:"bytes,1,opt,name=colname,proto3" json:"colname,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + ForOrdinality bool `protobuf:"varint,3,opt,name=for_ordinality,proto3" json:"for_ordinality,omitempty"` + IsNotNull bool `protobuf:"varint,4,opt,name=is_not_null,proto3" json:"is_not_null,omitempty"` + Colexpr *Node `protobuf:"bytes,5,opt,name=colexpr,proto3" json:"colexpr,omitempty"` + Coldefexpr *Node `protobuf:"bytes,6,opt,name=coldefexpr,proto3" json:"coldefexpr,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeTableFuncCol) Reset() { + *x = RangeTableFuncCol{} + mi := &file_pg_query_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeTableFuncCol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTableFuncCol) ProtoMessage() {} + +func (x *RangeTableFuncCol) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[96] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTableFuncCol.ProtoReflect.Descriptor instead. +func (*RangeTableFuncCol) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{96} +} + +func (x *RangeTableFuncCol) GetColname() string { + if x != nil { + return x.Colname + } + return "" +} + +func (x *RangeTableFuncCol) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *RangeTableFuncCol) GetForOrdinality() bool { + if x != nil { + return x.ForOrdinality + } + return false +} + +func (x *RangeTableFuncCol) GetIsNotNull() bool { + if x != nil { + return x.IsNotNull + } + return false +} + +func (x *RangeTableFuncCol) GetColexpr() *Node { + if x != nil { + return x.Colexpr + } + return nil +} + +func (x *RangeTableFuncCol) GetColdefexpr() *Node { + if x != nil { + return x.Coldefexpr + } + return nil +} + +func (x *RangeTableFuncCol) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type RangeTableSample struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *Node `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Method []*Node `protobuf:"bytes,2,rep,name=method,proto3" json:"method,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + Repeatable *Node `protobuf:"bytes,4,opt,name=repeatable,proto3" json:"repeatable,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeTableSample) Reset() { + *x = RangeTableSample{} + mi := &file_pg_query_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeTableSample) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTableSample) ProtoMessage() {} + +func (x *RangeTableSample) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[97] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTableSample.ProtoReflect.Descriptor instead. +func (*RangeTableSample) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{97} +} + +func (x *RangeTableSample) GetRelation() *Node { + if x != nil { + return x.Relation + } + return nil +} + +func (x *RangeTableSample) GetMethod() []*Node { + if x != nil { + return x.Method + } + return nil +} + +func (x *RangeTableSample) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *RangeTableSample) GetRepeatable() *Node { + if x != nil { + return x.Repeatable + } + return nil +} + +func (x *RangeTableSample) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ColumnDef struct { + state protoimpl.MessageState `protogen:"open.v1"` + Colname string `protobuf:"bytes,1,opt,name=colname,proto3" json:"colname,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Compression string `protobuf:"bytes,3,opt,name=compression,proto3" json:"compression,omitempty"` + Inhcount int32 `protobuf:"varint,4,opt,name=inhcount,proto3" json:"inhcount,omitempty"` + IsLocal bool `protobuf:"varint,5,opt,name=is_local,proto3" json:"is_local,omitempty"` + IsNotNull bool `protobuf:"varint,6,opt,name=is_not_null,proto3" json:"is_not_null,omitempty"` + IsFromType bool `protobuf:"varint,7,opt,name=is_from_type,proto3" json:"is_from_type,omitempty"` + Storage string `protobuf:"bytes,8,opt,name=storage,proto3" json:"storage,omitempty"` + StorageName string `protobuf:"bytes,9,opt,name=storage_name,proto3" json:"storage_name,omitempty"` + RawDefault *Node `protobuf:"bytes,10,opt,name=raw_default,proto3" json:"raw_default,omitempty"` + CookedDefault *Node `protobuf:"bytes,11,opt,name=cooked_default,proto3" json:"cooked_default,omitempty"` + Identity string `protobuf:"bytes,12,opt,name=identity,proto3" json:"identity,omitempty"` + IdentitySequence *RangeVar `protobuf:"bytes,13,opt,name=identity_sequence,json=identitySequence,proto3" json:"identity_sequence,omitempty"` + Generated string `protobuf:"bytes,14,opt,name=generated,proto3" json:"generated,omitempty"` + CollClause *CollateClause `protobuf:"bytes,15,opt,name=coll_clause,json=collClause,proto3" json:"coll_clause,omitempty"` + CollOid uint32 `protobuf:"varint,16,opt,name=coll_oid,json=collOid,proto3" json:"coll_oid,omitempty"` + Constraints []*Node `protobuf:"bytes,17,rep,name=constraints,proto3" json:"constraints,omitempty"` + Fdwoptions []*Node `protobuf:"bytes,18,rep,name=fdwoptions,proto3" json:"fdwoptions,omitempty"` + Location int32 `protobuf:"varint,19,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ColumnDef) Reset() { + *x = ColumnDef{} + mi := &file_pg_query_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ColumnDef) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ColumnDef) ProtoMessage() {} + +func (x *ColumnDef) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[98] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ColumnDef.ProtoReflect.Descriptor instead. +func (*ColumnDef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{98} +} + +func (x *ColumnDef) GetColname() string { + if x != nil { + return x.Colname + } + return "" +} + +func (x *ColumnDef) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *ColumnDef) GetCompression() string { + if x != nil { + return x.Compression + } + return "" +} + +func (x *ColumnDef) GetInhcount() int32 { + if x != nil { + return x.Inhcount + } + return 0 +} + +func (x *ColumnDef) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +func (x *ColumnDef) GetIsNotNull() bool { + if x != nil { + return x.IsNotNull + } + return false +} + +func (x *ColumnDef) GetIsFromType() bool { + if x != nil { + return x.IsFromType + } + return false +} + +func (x *ColumnDef) GetStorage() string { + if x != nil { + return x.Storage + } + return "" +} + +func (x *ColumnDef) GetStorageName() string { + if x != nil { + return x.StorageName + } + return "" +} + +func (x *ColumnDef) GetRawDefault() *Node { + if x != nil { + return x.RawDefault + } + return nil +} + +func (x *ColumnDef) GetCookedDefault() *Node { + if x != nil { + return x.CookedDefault + } + return nil +} + +func (x *ColumnDef) GetIdentity() string { + if x != nil { + return x.Identity + } + return "" +} + +func (x *ColumnDef) GetIdentitySequence() *RangeVar { + if x != nil { + return x.IdentitySequence + } + return nil +} + +func (x *ColumnDef) GetGenerated() string { + if x != nil { + return x.Generated + } + return "" +} + +func (x *ColumnDef) GetCollClause() *CollateClause { + if x != nil { + return x.CollClause + } + return nil +} + +func (x *ColumnDef) GetCollOid() uint32 { + if x != nil { + return x.CollOid + } + return 0 +} + +func (x *ColumnDef) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +func (x *ColumnDef) GetFdwoptions() []*Node { + if x != nil { + return x.Fdwoptions + } + return nil +} + +func (x *ColumnDef) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type TableLikeClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Options uint32 `protobuf:"varint,2,opt,name=options,proto3" json:"options,omitempty"` + RelationOid uint32 `protobuf:"varint,3,opt,name=relation_oid,json=relationOid,proto3" json:"relation_oid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TableLikeClause) Reset() { + *x = TableLikeClause{} + mi := &file_pg_query_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TableLikeClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableLikeClause) ProtoMessage() {} + +func (x *TableLikeClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[99] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableLikeClause.ProtoReflect.Descriptor instead. +func (*TableLikeClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{99} +} + +func (x *TableLikeClause) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *TableLikeClause) GetOptions() uint32 { + if x != nil { + return x.Options + } + return 0 +} + +func (x *TableLikeClause) GetRelationOid() uint32 { + if x != nil { + return x.RelationOid + } + return 0 +} + +type IndexElem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Indexcolname string `protobuf:"bytes,3,opt,name=indexcolname,proto3" json:"indexcolname,omitempty"` + Collation []*Node `protobuf:"bytes,4,rep,name=collation,proto3" json:"collation,omitempty"` + Opclass []*Node `protobuf:"bytes,5,rep,name=opclass,proto3" json:"opclass,omitempty"` + Opclassopts []*Node `protobuf:"bytes,6,rep,name=opclassopts,proto3" json:"opclassopts,omitempty"` + Ordering SortByDir `protobuf:"varint,7,opt,name=ordering,proto3,enum=pg_query.SortByDir" json:"ordering,omitempty"` + NullsOrdering SortByNulls `protobuf:"varint,8,opt,name=nulls_ordering,proto3,enum=pg_query.SortByNulls" json:"nulls_ordering,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IndexElem) Reset() { + *x = IndexElem{} + mi := &file_pg_query_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IndexElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexElem) ProtoMessage() {} + +func (x *IndexElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[100] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexElem.ProtoReflect.Descriptor instead. +func (*IndexElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{100} +} + +func (x *IndexElem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *IndexElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *IndexElem) GetIndexcolname() string { + if x != nil { + return x.Indexcolname + } + return "" +} + +func (x *IndexElem) GetCollation() []*Node { + if x != nil { + return x.Collation + } + return nil +} + +func (x *IndexElem) GetOpclass() []*Node { + if x != nil { + return x.Opclass + } + return nil +} + +func (x *IndexElem) GetOpclassopts() []*Node { + if x != nil { + return x.Opclassopts + } + return nil +} + +func (x *IndexElem) GetOrdering() SortByDir { + if x != nil { + return x.Ordering + } + return SortByDir_SORT_BY_DIR_UNDEFINED +} + +func (x *IndexElem) GetNullsOrdering() SortByNulls { + if x != nil { + return x.NullsOrdering + } + return SortByNulls_SORT_BY_NULLS_UNDEFINED +} + +type DefElem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Defnamespace string `protobuf:"bytes,1,opt,name=defnamespace,proto3" json:"defnamespace,omitempty"` + Defname string `protobuf:"bytes,2,opt,name=defname,proto3" json:"defname,omitempty"` + Arg *Node `protobuf:"bytes,3,opt,name=arg,proto3" json:"arg,omitempty"` + Defaction DefElemAction `protobuf:"varint,4,opt,name=defaction,proto3,enum=pg_query.DefElemAction" json:"defaction,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DefElem) Reset() { + *x = DefElem{} + mi := &file_pg_query_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DefElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DefElem) ProtoMessage() {} + +func (x *DefElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[101] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DefElem.ProtoReflect.Descriptor instead. +func (*DefElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{101} +} + +func (x *DefElem) GetDefnamespace() string { + if x != nil { + return x.Defnamespace + } + return "" +} + +func (x *DefElem) GetDefname() string { + if x != nil { + return x.Defname + } + return "" +} + +func (x *DefElem) GetArg() *Node { + if x != nil { + return x.Arg + } + return nil +} + +func (x *DefElem) GetDefaction() DefElemAction { + if x != nil { + return x.Defaction + } + return DefElemAction_DEF_ELEM_ACTION_UNDEFINED +} + +func (x *DefElem) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type LockingClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + LockedRels []*Node `protobuf:"bytes,1,rep,name=locked_rels,json=lockedRels,proto3" json:"locked_rels,omitempty"` + Strength LockClauseStrength `protobuf:"varint,2,opt,name=strength,proto3,enum=pg_query.LockClauseStrength" json:"strength,omitempty"` + WaitPolicy LockWaitPolicy `protobuf:"varint,3,opt,name=wait_policy,json=waitPolicy,proto3,enum=pg_query.LockWaitPolicy" json:"wait_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LockingClause) Reset() { + *x = LockingClause{} + mi := &file_pg_query_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LockingClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LockingClause) ProtoMessage() {} + +func (x *LockingClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[102] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LockingClause.ProtoReflect.Descriptor instead. +func (*LockingClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{102} +} + +func (x *LockingClause) GetLockedRels() []*Node { + if x != nil { + return x.LockedRels + } + return nil +} + +func (x *LockingClause) GetStrength() LockClauseStrength { + if x != nil { + return x.Strength + } + return LockClauseStrength_LOCK_CLAUSE_STRENGTH_UNDEFINED +} + +func (x *LockingClause) GetWaitPolicy() LockWaitPolicy { + if x != nil { + return x.WaitPolicy + } + return LockWaitPolicy_LOCK_WAIT_POLICY_UNDEFINED +} + +type XmlSerialize struct { + state protoimpl.MessageState `protogen:"open.v1"` + Xmloption XmlOptionType `protobuf:"varint,1,opt,name=xmloption,proto3,enum=pg_query.XmlOptionType" json:"xmloption,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + TypeName *TypeName `protobuf:"bytes,3,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Indent bool `protobuf:"varint,4,opt,name=indent,proto3" json:"indent,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *XmlSerialize) Reset() { + *x = XmlSerialize{} + mi := &file_pg_query_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *XmlSerialize) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlSerialize) ProtoMessage() {} + +func (x *XmlSerialize) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[103] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlSerialize.ProtoReflect.Descriptor instead. +func (*XmlSerialize) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{103} +} + +func (x *XmlSerialize) GetXmloption() XmlOptionType { + if x != nil { + return x.Xmloption + } + return XmlOptionType_XML_OPTION_TYPE_UNDEFINED +} + +func (x *XmlSerialize) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *XmlSerialize) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *XmlSerialize) GetIndent() bool { + if x != nil { + return x.Indent + } + return false +} + +func (x *XmlSerialize) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionElem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + Collation []*Node `protobuf:"bytes,3,rep,name=collation,proto3" json:"collation,omitempty"` + Opclass []*Node `protobuf:"bytes,4,rep,name=opclass,proto3" json:"opclass,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PartitionElem) Reset() { + *x = PartitionElem{} + mi := &file_pg_query_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PartitionElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionElem) ProtoMessage() {} + +func (x *PartitionElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[104] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionElem.ProtoReflect.Descriptor instead. +func (*PartitionElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{104} +} + +func (x *PartitionElem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PartitionElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *PartitionElem) GetCollation() []*Node { + if x != nil { + return x.Collation + } + return nil +} + +func (x *PartitionElem) GetOpclass() []*Node { + if x != nil { + return x.Opclass + } + return nil +} + +func (x *PartitionElem) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Strategy PartitionStrategy `protobuf:"varint,1,opt,name=strategy,proto3,enum=pg_query.PartitionStrategy" json:"strategy,omitempty"` + PartParams []*Node `protobuf:"bytes,2,rep,name=part_params,json=partParams,proto3" json:"part_params,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PartitionSpec) Reset() { + *x = PartitionSpec{} + mi := &file_pg_query_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PartitionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionSpec) ProtoMessage() {} + +func (x *PartitionSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[105] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionSpec.ProtoReflect.Descriptor instead. +func (*PartitionSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{105} +} + +func (x *PartitionSpec) GetStrategy() PartitionStrategy { + if x != nil { + return x.Strategy + } + return PartitionStrategy_PARTITION_STRATEGY_UNDEFINED +} + +func (x *PartitionSpec) GetPartParams() []*Node { + if x != nil { + return x.PartParams + } + return nil +} + +func (x *PartitionSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionBoundSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Strategy string `protobuf:"bytes,1,opt,name=strategy,proto3" json:"strategy,omitempty"` + IsDefault bool `protobuf:"varint,2,opt,name=is_default,proto3" json:"is_default,omitempty"` + Modulus int32 `protobuf:"varint,3,opt,name=modulus,proto3" json:"modulus,omitempty"` + Remainder int32 `protobuf:"varint,4,opt,name=remainder,proto3" json:"remainder,omitempty"` + Listdatums []*Node `protobuf:"bytes,5,rep,name=listdatums,proto3" json:"listdatums,omitempty"` + Lowerdatums []*Node `protobuf:"bytes,6,rep,name=lowerdatums,proto3" json:"lowerdatums,omitempty"` + Upperdatums []*Node `protobuf:"bytes,7,rep,name=upperdatums,proto3" json:"upperdatums,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PartitionBoundSpec) Reset() { + *x = PartitionBoundSpec{} + mi := &file_pg_query_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PartitionBoundSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionBoundSpec) ProtoMessage() {} + +func (x *PartitionBoundSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[106] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionBoundSpec.ProtoReflect.Descriptor instead. +func (*PartitionBoundSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{106} +} + +func (x *PartitionBoundSpec) GetStrategy() string { + if x != nil { + return x.Strategy + } + return "" +} + +func (x *PartitionBoundSpec) GetIsDefault() bool { + if x != nil { + return x.IsDefault + } + return false +} + +func (x *PartitionBoundSpec) GetModulus() int32 { + if x != nil { + return x.Modulus + } + return 0 +} + +func (x *PartitionBoundSpec) GetRemainder() int32 { + if x != nil { + return x.Remainder + } + return 0 +} + +func (x *PartitionBoundSpec) GetListdatums() []*Node { + if x != nil { + return x.Listdatums + } + return nil +} + +func (x *PartitionBoundSpec) GetLowerdatums() []*Node { + if x != nil { + return x.Lowerdatums + } + return nil +} + +func (x *PartitionBoundSpec) GetUpperdatums() []*Node { + if x != nil { + return x.Upperdatums + } + return nil +} + +func (x *PartitionBoundSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionRangeDatum struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind PartitionRangeDatumKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.PartitionRangeDatumKind" json:"kind,omitempty"` + Value *Node `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PartitionRangeDatum) Reset() { + *x = PartitionRangeDatum{} + mi := &file_pg_query_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PartitionRangeDatum) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionRangeDatum) ProtoMessage() {} + +func (x *PartitionRangeDatum) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[107] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionRangeDatum.ProtoReflect.Descriptor instead. +func (*PartitionRangeDatum) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{107} +} + +func (x *PartitionRangeDatum) GetKind() PartitionRangeDatumKind { + if x != nil { + return x.Kind + } + return PartitionRangeDatumKind_PARTITION_RANGE_DATUM_KIND_UNDEFINED +} + +func (x *PartitionRangeDatum) GetValue() *Node { + if x != nil { + return x.Value + } + return nil +} + +func (x *PartitionRangeDatum) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type PartitionCmd struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name *RangeVar `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Bound *PartitionBoundSpec `protobuf:"bytes,2,opt,name=bound,proto3" json:"bound,omitempty"` + Concurrent bool `protobuf:"varint,3,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PartitionCmd) Reset() { + *x = PartitionCmd{} + mi := &file_pg_query_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PartitionCmd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartitionCmd) ProtoMessage() {} + +func (x *PartitionCmd) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[108] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PartitionCmd.ProtoReflect.Descriptor instead. +func (*PartitionCmd) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{108} +} + +func (x *PartitionCmd) GetName() *RangeVar { + if x != nil { + return x.Name + } + return nil +} + +func (x *PartitionCmd) GetBound() *PartitionBoundSpec { + if x != nil { + return x.Bound + } + return nil +} + +func (x *PartitionCmd) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +type RangeTblEntry struct { + state protoimpl.MessageState `protogen:"open.v1"` + Alias *Alias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + Eref *Alias `protobuf:"bytes,2,opt,name=eref,proto3" json:"eref,omitempty"` + Rtekind RTEKind `protobuf:"varint,3,opt,name=rtekind,proto3,enum=pg_query.RTEKind" json:"rtekind,omitempty"` + Relid uint32 `protobuf:"varint,4,opt,name=relid,proto3" json:"relid,omitempty"` + Inh bool `protobuf:"varint,5,opt,name=inh,proto3" json:"inh,omitempty"` + Relkind string `protobuf:"bytes,6,opt,name=relkind,proto3" json:"relkind,omitempty"` + Rellockmode int32 `protobuf:"varint,7,opt,name=rellockmode,proto3" json:"rellockmode,omitempty"` + Perminfoindex uint32 `protobuf:"varint,8,opt,name=perminfoindex,proto3" json:"perminfoindex,omitempty"` + Tablesample *TableSampleClause `protobuf:"bytes,9,opt,name=tablesample,proto3" json:"tablesample,omitempty"` + Subquery *Query `protobuf:"bytes,10,opt,name=subquery,proto3" json:"subquery,omitempty"` + SecurityBarrier bool `protobuf:"varint,11,opt,name=security_barrier,proto3" json:"security_barrier,omitempty"` + Jointype JoinType `protobuf:"varint,12,opt,name=jointype,proto3,enum=pg_query.JoinType" json:"jointype,omitempty"` + Joinmergedcols int32 `protobuf:"varint,13,opt,name=joinmergedcols,proto3" json:"joinmergedcols,omitempty"` + Joinaliasvars []*Node `protobuf:"bytes,14,rep,name=joinaliasvars,proto3" json:"joinaliasvars,omitempty"` + Joinleftcols []*Node `protobuf:"bytes,15,rep,name=joinleftcols,proto3" json:"joinleftcols,omitempty"` + Joinrightcols []*Node `protobuf:"bytes,16,rep,name=joinrightcols,proto3" json:"joinrightcols,omitempty"` + JoinUsingAlias *Alias `protobuf:"bytes,17,opt,name=join_using_alias,proto3" json:"join_using_alias,omitempty"` + Functions []*Node `protobuf:"bytes,18,rep,name=functions,proto3" json:"functions,omitempty"` + Funcordinality bool `protobuf:"varint,19,opt,name=funcordinality,proto3" json:"funcordinality,omitempty"` + Tablefunc *TableFunc `protobuf:"bytes,20,opt,name=tablefunc,proto3" json:"tablefunc,omitempty"` + ValuesLists []*Node `protobuf:"bytes,21,rep,name=values_lists,proto3" json:"values_lists,omitempty"` + Ctename string `protobuf:"bytes,22,opt,name=ctename,proto3" json:"ctename,omitempty"` + Ctelevelsup uint32 `protobuf:"varint,23,opt,name=ctelevelsup,proto3" json:"ctelevelsup,omitempty"` + SelfReference bool `protobuf:"varint,24,opt,name=self_reference,proto3" json:"self_reference,omitempty"` + Coltypes []*Node `protobuf:"bytes,25,rep,name=coltypes,proto3" json:"coltypes,omitempty"` + Coltypmods []*Node `protobuf:"bytes,26,rep,name=coltypmods,proto3" json:"coltypmods,omitempty"` + Colcollations []*Node `protobuf:"bytes,27,rep,name=colcollations,proto3" json:"colcollations,omitempty"` + Enrname string `protobuf:"bytes,28,opt,name=enrname,proto3" json:"enrname,omitempty"` + Enrtuples float64 `protobuf:"fixed64,29,opt,name=enrtuples,proto3" json:"enrtuples,omitempty"` + Groupexprs []*Node `protobuf:"bytes,30,rep,name=groupexprs,proto3" json:"groupexprs,omitempty"` + Lateral bool `protobuf:"varint,31,opt,name=lateral,proto3" json:"lateral,omitempty"` + InFromCl bool `protobuf:"varint,32,opt,name=in_from_cl,json=inFromCl,proto3" json:"in_from_cl,omitempty"` + SecurityQuals []*Node `protobuf:"bytes,33,rep,name=security_quals,json=securityQuals,proto3" json:"security_quals,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeTblEntry) Reset() { + *x = RangeTblEntry{} + mi := &file_pg_query_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeTblEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTblEntry) ProtoMessage() {} + +func (x *RangeTblEntry) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[109] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTblEntry.ProtoReflect.Descriptor instead. +func (*RangeTblEntry) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{109} +} + +func (x *RangeTblEntry) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *RangeTblEntry) GetEref() *Alias { + if x != nil { + return x.Eref + } + return nil +} + +func (x *RangeTblEntry) GetRtekind() RTEKind { + if x != nil { + return x.Rtekind + } + return RTEKind_RTEKIND_UNDEFINED +} + +func (x *RangeTblEntry) GetRelid() uint32 { + if x != nil { + return x.Relid + } + return 0 +} + +func (x *RangeTblEntry) GetInh() bool { + if x != nil { + return x.Inh + } + return false +} + +func (x *RangeTblEntry) GetRelkind() string { + if x != nil { + return x.Relkind + } + return "" +} + +func (x *RangeTblEntry) GetRellockmode() int32 { + if x != nil { + return x.Rellockmode + } + return 0 +} + +func (x *RangeTblEntry) GetPerminfoindex() uint32 { + if x != nil { + return x.Perminfoindex + } + return 0 +} + +func (x *RangeTblEntry) GetTablesample() *TableSampleClause { + if x != nil { + return x.Tablesample + } + return nil +} + +func (x *RangeTblEntry) GetSubquery() *Query { + if x != nil { + return x.Subquery + } + return nil +} + +func (x *RangeTblEntry) GetSecurityBarrier() bool { + if x != nil { + return x.SecurityBarrier + } + return false +} + +func (x *RangeTblEntry) GetJointype() JoinType { + if x != nil { + return x.Jointype + } + return JoinType_JOIN_TYPE_UNDEFINED +} + +func (x *RangeTblEntry) GetJoinmergedcols() int32 { + if x != nil { + return x.Joinmergedcols + } + return 0 +} + +func (x *RangeTblEntry) GetJoinaliasvars() []*Node { + if x != nil { + return x.Joinaliasvars + } + return nil +} + +func (x *RangeTblEntry) GetJoinleftcols() []*Node { + if x != nil { + return x.Joinleftcols + } + return nil +} + +func (x *RangeTblEntry) GetJoinrightcols() []*Node { + if x != nil { + return x.Joinrightcols + } + return nil +} + +func (x *RangeTblEntry) GetJoinUsingAlias() *Alias { + if x != nil { + return x.JoinUsingAlias + } + return nil +} + +func (x *RangeTblEntry) GetFunctions() []*Node { + if x != nil { + return x.Functions + } + return nil +} + +func (x *RangeTblEntry) GetFuncordinality() bool { + if x != nil { + return x.Funcordinality + } + return false +} + +func (x *RangeTblEntry) GetTablefunc() *TableFunc { + if x != nil { + return x.Tablefunc + } + return nil +} + +func (x *RangeTblEntry) GetValuesLists() []*Node { + if x != nil { + return x.ValuesLists + } + return nil +} + +func (x *RangeTblEntry) GetCtename() string { + if x != nil { + return x.Ctename + } + return "" +} + +func (x *RangeTblEntry) GetCtelevelsup() uint32 { + if x != nil { + return x.Ctelevelsup + } + return 0 +} + +func (x *RangeTblEntry) GetSelfReference() bool { + if x != nil { + return x.SelfReference + } + return false +} + +func (x *RangeTblEntry) GetColtypes() []*Node { + if x != nil { + return x.Coltypes + } + return nil +} + +func (x *RangeTblEntry) GetColtypmods() []*Node { + if x != nil { + return x.Coltypmods + } + return nil +} + +func (x *RangeTblEntry) GetColcollations() []*Node { + if x != nil { + return x.Colcollations + } + return nil +} + +func (x *RangeTblEntry) GetEnrname() string { + if x != nil { + return x.Enrname + } + return "" +} + +func (x *RangeTblEntry) GetEnrtuples() float64 { + if x != nil { + return x.Enrtuples + } + return 0 +} + +func (x *RangeTblEntry) GetGroupexprs() []*Node { + if x != nil { + return x.Groupexprs + } + return nil +} + +func (x *RangeTblEntry) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *RangeTblEntry) GetInFromCl() bool { + if x != nil { + return x.InFromCl + } + return false +} + +func (x *RangeTblEntry) GetSecurityQuals() []*Node { + if x != nil { + return x.SecurityQuals + } + return nil +} + +type RTEPermissionInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relid uint32 `protobuf:"varint,1,opt,name=relid,proto3" json:"relid,omitempty"` + Inh bool `protobuf:"varint,2,opt,name=inh,proto3" json:"inh,omitempty"` + RequiredPerms uint64 `protobuf:"varint,3,opt,name=required_perms,json=requiredPerms,proto3" json:"required_perms,omitempty"` + CheckAsUser uint32 `protobuf:"varint,4,opt,name=check_as_user,json=checkAsUser,proto3" json:"check_as_user,omitempty"` + SelectedCols []uint64 `protobuf:"varint,5,rep,packed,name=selected_cols,json=selectedCols,proto3" json:"selected_cols,omitempty"` + InsertedCols []uint64 `protobuf:"varint,6,rep,packed,name=inserted_cols,json=insertedCols,proto3" json:"inserted_cols,omitempty"` + UpdatedCols []uint64 `protobuf:"varint,7,rep,packed,name=updated_cols,json=updatedCols,proto3" json:"updated_cols,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RTEPermissionInfo) Reset() { + *x = RTEPermissionInfo{} + mi := &file_pg_query_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RTEPermissionInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RTEPermissionInfo) ProtoMessage() {} + +func (x *RTEPermissionInfo) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[110] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RTEPermissionInfo.ProtoReflect.Descriptor instead. +func (*RTEPermissionInfo) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{110} +} + +func (x *RTEPermissionInfo) GetRelid() uint32 { + if x != nil { + return x.Relid + } + return 0 +} + +func (x *RTEPermissionInfo) GetInh() bool { + if x != nil { + return x.Inh + } + return false +} + +func (x *RTEPermissionInfo) GetRequiredPerms() uint64 { + if x != nil { + return x.RequiredPerms + } + return 0 +} + +func (x *RTEPermissionInfo) GetCheckAsUser() uint32 { + if x != nil { + return x.CheckAsUser + } + return 0 +} + +func (x *RTEPermissionInfo) GetSelectedCols() []uint64 { + if x != nil { + return x.SelectedCols + } + return nil +} + +func (x *RTEPermissionInfo) GetInsertedCols() []uint64 { + if x != nil { + return x.InsertedCols + } + return nil +} + +func (x *RTEPermissionInfo) GetUpdatedCols() []uint64 { + if x != nil { + return x.UpdatedCols + } + return nil +} + +type RangeTblFunction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Funcexpr *Node `protobuf:"bytes,1,opt,name=funcexpr,proto3" json:"funcexpr,omitempty"` + Funccolcount int32 `protobuf:"varint,2,opt,name=funccolcount,proto3" json:"funccolcount,omitempty"` + Funccolnames []*Node `protobuf:"bytes,3,rep,name=funccolnames,proto3" json:"funccolnames,omitempty"` + Funccoltypes []*Node `protobuf:"bytes,4,rep,name=funccoltypes,proto3" json:"funccoltypes,omitempty"` + Funccoltypmods []*Node `protobuf:"bytes,5,rep,name=funccoltypmods,proto3" json:"funccoltypmods,omitempty"` + Funccolcollations []*Node `protobuf:"bytes,6,rep,name=funccolcollations,proto3" json:"funccolcollations,omitempty"` + Funcparams []uint64 `protobuf:"varint,7,rep,packed,name=funcparams,proto3" json:"funcparams,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RangeTblFunction) Reset() { + *x = RangeTblFunction{} + mi := &file_pg_query_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RangeTblFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RangeTblFunction) ProtoMessage() {} + +func (x *RangeTblFunction) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[111] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RangeTblFunction.ProtoReflect.Descriptor instead. +func (*RangeTblFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{111} +} + +func (x *RangeTblFunction) GetFuncexpr() *Node { + if x != nil { + return x.Funcexpr + } + return nil +} + +func (x *RangeTblFunction) GetFunccolcount() int32 { + if x != nil { + return x.Funccolcount + } + return 0 +} + +func (x *RangeTblFunction) GetFunccolnames() []*Node { + if x != nil { + return x.Funccolnames + } + return nil +} + +func (x *RangeTblFunction) GetFunccoltypes() []*Node { + if x != nil { + return x.Funccoltypes + } + return nil +} + +func (x *RangeTblFunction) GetFunccoltypmods() []*Node { + if x != nil { + return x.Funccoltypmods + } + return nil +} + +func (x *RangeTblFunction) GetFunccolcollations() []*Node { + if x != nil { + return x.Funccolcollations + } + return nil +} + +func (x *RangeTblFunction) GetFuncparams() []uint64 { + if x != nil { + return x.Funcparams + } + return nil +} + +type TableSampleClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tsmhandler uint32 `protobuf:"varint,1,opt,name=tsmhandler,proto3" json:"tsmhandler,omitempty"` + Args []*Node `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"` + Repeatable *Node `protobuf:"bytes,3,opt,name=repeatable,proto3" json:"repeatable,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TableSampleClause) Reset() { + *x = TableSampleClause{} + mi := &file_pg_query_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TableSampleClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TableSampleClause) ProtoMessage() {} + +func (x *TableSampleClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[112] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TableSampleClause.ProtoReflect.Descriptor instead. +func (*TableSampleClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{112} +} + +func (x *TableSampleClause) GetTsmhandler() uint32 { + if x != nil { + return x.Tsmhandler + } + return 0 +} + +func (x *TableSampleClause) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *TableSampleClause) GetRepeatable() *Node { + if x != nil { + return x.Repeatable + } + return nil +} + +type WithCheckOption struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind WCOKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.WCOKind" json:"kind,omitempty"` + Relname string `protobuf:"bytes,2,opt,name=relname,proto3" json:"relname,omitempty"` + Polname string `protobuf:"bytes,3,opt,name=polname,proto3" json:"polname,omitempty"` + Qual *Node `protobuf:"bytes,4,opt,name=qual,proto3" json:"qual,omitempty"` + Cascaded bool `protobuf:"varint,5,opt,name=cascaded,proto3" json:"cascaded,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WithCheckOption) Reset() { + *x = WithCheckOption{} + mi := &file_pg_query_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WithCheckOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithCheckOption) ProtoMessage() {} + +func (x *WithCheckOption) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[113] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithCheckOption.ProtoReflect.Descriptor instead. +func (*WithCheckOption) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{113} +} + +func (x *WithCheckOption) GetKind() WCOKind { + if x != nil { + return x.Kind + } + return WCOKind_WCOKIND_UNDEFINED +} + +func (x *WithCheckOption) GetRelname() string { + if x != nil { + return x.Relname + } + return "" +} + +func (x *WithCheckOption) GetPolname() string { + if x != nil { + return x.Polname + } + return "" +} + +func (x *WithCheckOption) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *WithCheckOption) GetCascaded() bool { + if x != nil { + return x.Cascaded + } + return false +} + +type SortGroupClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + TleSortGroupRef uint32 `protobuf:"varint,1,opt,name=tle_sort_group_ref,json=tleSortGroupRef,proto3" json:"tle_sort_group_ref,omitempty"` + Eqop uint32 `protobuf:"varint,2,opt,name=eqop,proto3" json:"eqop,omitempty"` + Sortop uint32 `protobuf:"varint,3,opt,name=sortop,proto3" json:"sortop,omitempty"` + ReverseSort bool `protobuf:"varint,4,opt,name=reverse_sort,proto3" json:"reverse_sort,omitempty"` + NullsFirst bool `protobuf:"varint,5,opt,name=nulls_first,proto3" json:"nulls_first,omitempty"` + Hashable bool `protobuf:"varint,6,opt,name=hashable,proto3" json:"hashable,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SortGroupClause) Reset() { + *x = SortGroupClause{} + mi := &file_pg_query_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SortGroupClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SortGroupClause) ProtoMessage() {} + +func (x *SortGroupClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[114] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SortGroupClause.ProtoReflect.Descriptor instead. +func (*SortGroupClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{114} +} + +func (x *SortGroupClause) GetTleSortGroupRef() uint32 { + if x != nil { + return x.TleSortGroupRef + } + return 0 +} + +func (x *SortGroupClause) GetEqop() uint32 { + if x != nil { + return x.Eqop + } + return 0 +} + +func (x *SortGroupClause) GetSortop() uint32 { + if x != nil { + return x.Sortop + } + return 0 +} + +func (x *SortGroupClause) GetReverseSort() bool { + if x != nil { + return x.ReverseSort + } + return false +} + +func (x *SortGroupClause) GetNullsFirst() bool { + if x != nil { + return x.NullsFirst + } + return false +} + +func (x *SortGroupClause) GetHashable() bool { + if x != nil { + return x.Hashable + } + return false +} + +type GroupingSet struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind GroupingSetKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.GroupingSetKind" json:"kind,omitempty"` + Content []*Node `protobuf:"bytes,2,rep,name=content,proto3" json:"content,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupingSet) Reset() { + *x = GroupingSet{} + mi := &file_pg_query_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupingSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupingSet) ProtoMessage() {} + +func (x *GroupingSet) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[115] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GroupingSet.ProtoReflect.Descriptor instead. +func (*GroupingSet) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{115} +} + +func (x *GroupingSet) GetKind() GroupingSetKind { + if x != nil { + return x.Kind + } + return GroupingSetKind_GROUPING_SET_KIND_UNDEFINED +} + +func (x *GroupingSet) GetContent() []*Node { + if x != nil { + return x.Content + } + return nil +} + +func (x *GroupingSet) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type WindowClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Refname string `protobuf:"bytes,2,opt,name=refname,proto3" json:"refname,omitempty"` + PartitionClause []*Node `protobuf:"bytes,3,rep,name=partition_clause,json=partitionClause,proto3" json:"partition_clause,omitempty"` + OrderClause []*Node `protobuf:"bytes,4,rep,name=order_clause,json=orderClause,proto3" json:"order_clause,omitempty"` + FrameOptions int32 `protobuf:"varint,5,opt,name=frame_options,json=frameOptions,proto3" json:"frame_options,omitempty"` + StartOffset *Node `protobuf:"bytes,6,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"` + EndOffset *Node `protobuf:"bytes,7,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"` + StartInRangeFunc uint32 `protobuf:"varint,8,opt,name=start_in_range_func,json=startInRangeFunc,proto3" json:"start_in_range_func,omitempty"` + EndInRangeFunc uint32 `protobuf:"varint,9,opt,name=end_in_range_func,json=endInRangeFunc,proto3" json:"end_in_range_func,omitempty"` + InRangeColl uint32 `protobuf:"varint,10,opt,name=in_range_coll,json=inRangeColl,proto3" json:"in_range_coll,omitempty"` + InRangeAsc bool `protobuf:"varint,11,opt,name=in_range_asc,json=inRangeAsc,proto3" json:"in_range_asc,omitempty"` + InRangeNullsFirst bool `protobuf:"varint,12,opt,name=in_range_nulls_first,json=inRangeNullsFirst,proto3" json:"in_range_nulls_first,omitempty"` + Winref uint32 `protobuf:"varint,13,opt,name=winref,proto3" json:"winref,omitempty"` + CopiedOrder bool `protobuf:"varint,14,opt,name=copied_order,json=copiedOrder,proto3" json:"copied_order,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WindowClause) Reset() { + *x = WindowClause{} + mi := &file_pg_query_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WindowClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WindowClause) ProtoMessage() {} + +func (x *WindowClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[116] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WindowClause.ProtoReflect.Descriptor instead. +func (*WindowClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{116} +} + +func (x *WindowClause) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WindowClause) GetRefname() string { + if x != nil { + return x.Refname + } + return "" +} + +func (x *WindowClause) GetPartitionClause() []*Node { + if x != nil { + return x.PartitionClause + } + return nil +} + +func (x *WindowClause) GetOrderClause() []*Node { + if x != nil { + return x.OrderClause + } + return nil +} + +func (x *WindowClause) GetFrameOptions() int32 { + if x != nil { + return x.FrameOptions + } + return 0 +} + +func (x *WindowClause) GetStartOffset() *Node { + if x != nil { + return x.StartOffset + } + return nil +} + +func (x *WindowClause) GetEndOffset() *Node { + if x != nil { + return x.EndOffset + } + return nil +} + +func (x *WindowClause) GetStartInRangeFunc() uint32 { + if x != nil { + return x.StartInRangeFunc + } + return 0 +} + +func (x *WindowClause) GetEndInRangeFunc() uint32 { + if x != nil { + return x.EndInRangeFunc + } + return 0 +} + +func (x *WindowClause) GetInRangeColl() uint32 { + if x != nil { + return x.InRangeColl + } + return 0 +} + +func (x *WindowClause) GetInRangeAsc() bool { + if x != nil { + return x.InRangeAsc + } + return false +} + +func (x *WindowClause) GetInRangeNullsFirst() bool { + if x != nil { + return x.InRangeNullsFirst + } + return false +} + +func (x *WindowClause) GetWinref() uint32 { + if x != nil { + return x.Winref + } + return 0 +} + +func (x *WindowClause) GetCopiedOrder() bool { + if x != nil { + return x.CopiedOrder + } + return false +} + +type RowMarkClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Rti uint32 `protobuf:"varint,1,opt,name=rti,proto3" json:"rti,omitempty"` + Strength LockClauseStrength `protobuf:"varint,2,opt,name=strength,proto3,enum=pg_query.LockClauseStrength" json:"strength,omitempty"` + WaitPolicy LockWaitPolicy `protobuf:"varint,3,opt,name=wait_policy,json=waitPolicy,proto3,enum=pg_query.LockWaitPolicy" json:"wait_policy,omitempty"` + PushedDown bool `protobuf:"varint,4,opt,name=pushed_down,json=pushedDown,proto3" json:"pushed_down,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RowMarkClause) Reset() { + *x = RowMarkClause{} + mi := &file_pg_query_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RowMarkClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RowMarkClause) ProtoMessage() {} + +func (x *RowMarkClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[117] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RowMarkClause.ProtoReflect.Descriptor instead. +func (*RowMarkClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{117} +} + +func (x *RowMarkClause) GetRti() uint32 { + if x != nil { + return x.Rti + } + return 0 +} + +func (x *RowMarkClause) GetStrength() LockClauseStrength { + if x != nil { + return x.Strength + } + return LockClauseStrength_LOCK_CLAUSE_STRENGTH_UNDEFINED +} + +func (x *RowMarkClause) GetWaitPolicy() LockWaitPolicy { + if x != nil { + return x.WaitPolicy + } + return LockWaitPolicy_LOCK_WAIT_POLICY_UNDEFINED +} + +func (x *RowMarkClause) GetPushedDown() bool { + if x != nil { + return x.PushedDown + } + return false +} + +type WithClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ctes []*Node `protobuf:"bytes,1,rep,name=ctes,proto3" json:"ctes,omitempty"` + Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WithClause) Reset() { + *x = WithClause{} + mi := &file_pg_query_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WithClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithClause) ProtoMessage() {} + +func (x *WithClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[118] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithClause.ProtoReflect.Descriptor instead. +func (*WithClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{118} +} + +func (x *WithClause) GetCtes() []*Node { + if x != nil { + return x.Ctes + } + return nil +} + +func (x *WithClause) GetRecursive() bool { + if x != nil { + return x.Recursive + } + return false +} + +func (x *WithClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type InferClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + IndexElems []*Node `protobuf:"bytes,1,rep,name=index_elems,json=indexElems,proto3" json:"index_elems,omitempty"` + WhereClause *Node `protobuf:"bytes,2,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Conname string `protobuf:"bytes,3,opt,name=conname,proto3" json:"conname,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InferClause) Reset() { + *x = InferClause{} + mi := &file_pg_query_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InferClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InferClause) ProtoMessage() {} + +func (x *InferClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[119] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InferClause.ProtoReflect.Descriptor instead. +func (*InferClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{119} +} + +func (x *InferClause) GetIndexElems() []*Node { + if x != nil { + return x.IndexElems + } + return nil +} + +func (x *InferClause) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *InferClause) GetConname() string { + if x != nil { + return x.Conname + } + return "" +} + +func (x *InferClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type OnConflictClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Action OnConflictAction `protobuf:"varint,1,opt,name=action,proto3,enum=pg_query.OnConflictAction" json:"action,omitempty"` + Infer *InferClause `protobuf:"bytes,2,opt,name=infer,proto3" json:"infer,omitempty"` + TargetList []*Node `protobuf:"bytes,3,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + WhereClause *Node `protobuf:"bytes,4,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OnConflictClause) Reset() { + *x = OnConflictClause{} + mi := &file_pg_query_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OnConflictClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnConflictClause) ProtoMessage() {} + +func (x *OnConflictClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[120] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnConflictClause.ProtoReflect.Descriptor instead. +func (*OnConflictClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{120} +} + +func (x *OnConflictClause) GetAction() OnConflictAction { + if x != nil { + return x.Action + } + return OnConflictAction_ON_CONFLICT_ACTION_UNDEFINED +} + +func (x *OnConflictClause) GetInfer() *InferClause { + if x != nil { + return x.Infer + } + return nil +} + +func (x *OnConflictClause) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *OnConflictClause) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *OnConflictClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CTESearchClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + SearchColList []*Node `protobuf:"bytes,1,rep,name=search_col_list,proto3" json:"search_col_list,omitempty"` + SearchBreadthFirst bool `protobuf:"varint,2,opt,name=search_breadth_first,proto3" json:"search_breadth_first,omitempty"` + SearchSeqColumn string `protobuf:"bytes,3,opt,name=search_seq_column,proto3" json:"search_seq_column,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CTESearchClause) Reset() { + *x = CTESearchClause{} + mi := &file_pg_query_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CTESearchClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CTESearchClause) ProtoMessage() {} + +func (x *CTESearchClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[121] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CTESearchClause.ProtoReflect.Descriptor instead. +func (*CTESearchClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{121} +} + +func (x *CTESearchClause) GetSearchColList() []*Node { + if x != nil { + return x.SearchColList + } + return nil +} + +func (x *CTESearchClause) GetSearchBreadthFirst() bool { + if x != nil { + return x.SearchBreadthFirst + } + return false +} + +func (x *CTESearchClause) GetSearchSeqColumn() string { + if x != nil { + return x.SearchSeqColumn + } + return "" +} + +func (x *CTESearchClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CTECycleClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + CycleColList []*Node `protobuf:"bytes,1,rep,name=cycle_col_list,proto3" json:"cycle_col_list,omitempty"` + CycleMarkColumn string `protobuf:"bytes,2,opt,name=cycle_mark_column,proto3" json:"cycle_mark_column,omitempty"` + CycleMarkValue *Node `protobuf:"bytes,3,opt,name=cycle_mark_value,proto3" json:"cycle_mark_value,omitempty"` + CycleMarkDefault *Node `protobuf:"bytes,4,opt,name=cycle_mark_default,proto3" json:"cycle_mark_default,omitempty"` + CyclePathColumn string `protobuf:"bytes,5,opt,name=cycle_path_column,proto3" json:"cycle_path_column,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` + CycleMarkType uint32 `protobuf:"varint,7,opt,name=cycle_mark_type,proto3" json:"cycle_mark_type,omitempty"` + CycleMarkTypmod int32 `protobuf:"varint,8,opt,name=cycle_mark_typmod,proto3" json:"cycle_mark_typmod,omitempty"` + CycleMarkCollation uint32 `protobuf:"varint,9,opt,name=cycle_mark_collation,proto3" json:"cycle_mark_collation,omitempty"` + CycleMarkNeop uint32 `protobuf:"varint,10,opt,name=cycle_mark_neop,proto3" json:"cycle_mark_neop,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CTECycleClause) Reset() { + *x = CTECycleClause{} + mi := &file_pg_query_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CTECycleClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CTECycleClause) ProtoMessage() {} + +func (x *CTECycleClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[122] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CTECycleClause.ProtoReflect.Descriptor instead. +func (*CTECycleClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{122} +} + +func (x *CTECycleClause) GetCycleColList() []*Node { + if x != nil { + return x.CycleColList + } + return nil +} + +func (x *CTECycleClause) GetCycleMarkColumn() string { + if x != nil { + return x.CycleMarkColumn + } + return "" +} + +func (x *CTECycleClause) GetCycleMarkValue() *Node { + if x != nil { + return x.CycleMarkValue + } + return nil +} + +func (x *CTECycleClause) GetCycleMarkDefault() *Node { + if x != nil { + return x.CycleMarkDefault + } + return nil +} + +func (x *CTECycleClause) GetCyclePathColumn() string { + if x != nil { + return x.CyclePathColumn + } + return "" +} + +func (x *CTECycleClause) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +func (x *CTECycleClause) GetCycleMarkType() uint32 { + if x != nil { + return x.CycleMarkType + } + return 0 +} + +func (x *CTECycleClause) GetCycleMarkTypmod() int32 { + if x != nil { + return x.CycleMarkTypmod + } + return 0 +} + +func (x *CTECycleClause) GetCycleMarkCollation() uint32 { + if x != nil { + return x.CycleMarkCollation + } + return 0 +} + +func (x *CTECycleClause) GetCycleMarkNeop() uint32 { + if x != nil { + return x.CycleMarkNeop + } + return 0 +} + +type CommonTableExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ctename string `protobuf:"bytes,1,opt,name=ctename,proto3" json:"ctename,omitempty"` + Aliascolnames []*Node `protobuf:"bytes,2,rep,name=aliascolnames,proto3" json:"aliascolnames,omitempty"` + Ctematerialized CTEMaterialize `protobuf:"varint,3,opt,name=ctematerialized,proto3,enum=pg_query.CTEMaterialize" json:"ctematerialized,omitempty"` + Ctequery *Node `protobuf:"bytes,4,opt,name=ctequery,proto3" json:"ctequery,omitempty"` + SearchClause *CTESearchClause `protobuf:"bytes,5,opt,name=search_clause,proto3" json:"search_clause,omitempty"` + CycleClause *CTECycleClause `protobuf:"bytes,6,opt,name=cycle_clause,proto3" json:"cycle_clause,omitempty"` + Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,omitempty"` + Cterecursive bool `protobuf:"varint,8,opt,name=cterecursive,proto3" json:"cterecursive,omitempty"` + Cterefcount int32 `protobuf:"varint,9,opt,name=cterefcount,proto3" json:"cterefcount,omitempty"` + Ctecolnames []*Node `protobuf:"bytes,10,rep,name=ctecolnames,proto3" json:"ctecolnames,omitempty"` + Ctecoltypes []*Node `protobuf:"bytes,11,rep,name=ctecoltypes,proto3" json:"ctecoltypes,omitempty"` + Ctecoltypmods []*Node `protobuf:"bytes,12,rep,name=ctecoltypmods,proto3" json:"ctecoltypmods,omitempty"` + Ctecolcollations []*Node `protobuf:"bytes,13,rep,name=ctecolcollations,proto3" json:"ctecolcollations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CommonTableExpr) Reset() { + *x = CommonTableExpr{} + mi := &file_pg_query_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CommonTableExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommonTableExpr) ProtoMessage() {} + +func (x *CommonTableExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[123] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommonTableExpr.ProtoReflect.Descriptor instead. +func (*CommonTableExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{123} +} + +func (x *CommonTableExpr) GetCtename() string { + if x != nil { + return x.Ctename + } + return "" +} + +func (x *CommonTableExpr) GetAliascolnames() []*Node { + if x != nil { + return x.Aliascolnames + } + return nil +} + +func (x *CommonTableExpr) GetCtematerialized() CTEMaterialize { + if x != nil { + return x.Ctematerialized + } + return CTEMaterialize_CTEMATERIALIZE_UNDEFINED +} + +func (x *CommonTableExpr) GetCtequery() *Node { + if x != nil { + return x.Ctequery + } + return nil +} + +func (x *CommonTableExpr) GetSearchClause() *CTESearchClause { + if x != nil { + return x.SearchClause + } + return nil +} + +func (x *CommonTableExpr) GetCycleClause() *CTECycleClause { + if x != nil { + return x.CycleClause + } + return nil +} + +func (x *CommonTableExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +func (x *CommonTableExpr) GetCterecursive() bool { + if x != nil { + return x.Cterecursive + } + return false +} + +func (x *CommonTableExpr) GetCterefcount() int32 { + if x != nil { + return x.Cterefcount + } + return 0 +} + +func (x *CommonTableExpr) GetCtecolnames() []*Node { + if x != nil { + return x.Ctecolnames + } + return nil +} + +func (x *CommonTableExpr) GetCtecoltypes() []*Node { + if x != nil { + return x.Ctecoltypes + } + return nil +} + +func (x *CommonTableExpr) GetCtecoltypmods() []*Node { + if x != nil { + return x.Ctecoltypmods + } + return nil +} + +func (x *CommonTableExpr) GetCtecolcollations() []*Node { + if x != nil { + return x.Ctecolcollations + } + return nil +} + +type MergeWhenClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + MatchKind MergeMatchKind `protobuf:"varint,1,opt,name=match_kind,json=matchKind,proto3,enum=pg_query.MergeMatchKind" json:"match_kind,omitempty"` + CommandType CmdType `protobuf:"varint,2,opt,name=command_type,json=commandType,proto3,enum=pg_query.CmdType" json:"command_type,omitempty"` + Override OverridingKind `protobuf:"varint,3,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` + Condition *Node `protobuf:"bytes,4,opt,name=condition,proto3" json:"condition,omitempty"` + TargetList []*Node `protobuf:"bytes,5,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + Values []*Node `protobuf:"bytes,6,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeWhenClause) Reset() { + *x = MergeWhenClause{} + mi := &file_pg_query_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeWhenClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeWhenClause) ProtoMessage() {} + +func (x *MergeWhenClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[124] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeWhenClause.ProtoReflect.Descriptor instead. +func (*MergeWhenClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{124} +} + +func (x *MergeWhenClause) GetMatchKind() MergeMatchKind { + if x != nil { + return x.MatchKind + } + return MergeMatchKind_MERGE_MATCH_KIND_UNDEFINED +} + +func (x *MergeWhenClause) GetCommandType() CmdType { + if x != nil { + return x.CommandType + } + return CmdType_CMD_TYPE_UNDEFINED +} + +func (x *MergeWhenClause) GetOverride() OverridingKind { + if x != nil { + return x.Override + } + return OverridingKind_OVERRIDING_KIND_UNDEFINED +} + +func (x *MergeWhenClause) GetCondition() *Node { + if x != nil { + return x.Condition + } + return nil +} + +func (x *MergeWhenClause) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *MergeWhenClause) GetValues() []*Node { + if x != nil { + return x.Values + } + return nil +} + +type ReturningOption struct { + state protoimpl.MessageState `protogen:"open.v1"` + Option ReturningOptionKind `protobuf:"varint,1,opt,name=option,proto3,enum=pg_query.ReturningOptionKind" json:"option,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReturningOption) Reset() { + *x = ReturningOption{} + mi := &file_pg_query_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReturningOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReturningOption) ProtoMessage() {} + +func (x *ReturningOption) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[125] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReturningOption.ProtoReflect.Descriptor instead. +func (*ReturningOption) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{125} +} + +func (x *ReturningOption) GetOption() ReturningOptionKind { + if x != nil { + return x.Option + } + return ReturningOptionKind_RETURNING_OPTION_KIND_UNDEFINED +} + +func (x *ReturningOption) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *ReturningOption) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type ReturningClause struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options []*Node `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + Exprs []*Node `protobuf:"bytes,2,rep,name=exprs,proto3" json:"exprs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReturningClause) Reset() { + *x = ReturningClause{} + mi := &file_pg_query_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReturningClause) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReturningClause) ProtoMessage() {} + +func (x *ReturningClause) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[126] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReturningClause.ProtoReflect.Descriptor instead. +func (*ReturningClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{126} +} + +func (x *ReturningClause) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *ReturningClause) GetExprs() []*Node { + if x != nil { + return x.Exprs + } + return nil +} + +type TriggerTransition struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + IsNew bool `protobuf:"varint,2,opt,name=is_new,json=isNew,proto3" json:"is_new,omitempty"` + IsTable bool `protobuf:"varint,3,opt,name=is_table,json=isTable,proto3" json:"is_table,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TriggerTransition) Reset() { + *x = TriggerTransition{} + mi := &file_pg_query_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TriggerTransition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TriggerTransition) ProtoMessage() {} + +func (x *TriggerTransition) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[127] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TriggerTransition.ProtoReflect.Descriptor instead. +func (*TriggerTransition) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{127} +} + +func (x *TriggerTransition) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TriggerTransition) GetIsNew() bool { + if x != nil { + return x.IsNew + } + return false +} + +func (x *TriggerTransition) GetIsTable() bool { + if x != nil { + return x.IsTable + } + return false +} + +type JsonOutput struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName *TypeName `protobuf:"bytes,1,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Returning *JsonReturning `protobuf:"bytes,2,opt,name=returning,proto3" json:"returning,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonOutput) Reset() { + *x = JsonOutput{} + mi := &file_pg_query_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonOutput) ProtoMessage() {} + +func (x *JsonOutput) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[128] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonOutput.ProtoReflect.Descriptor instead. +func (*JsonOutput) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{128} +} + +func (x *JsonOutput) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *JsonOutput) GetReturning() *JsonReturning { + if x != nil { + return x.Returning + } + return nil +} + +type JsonArgument struct { + state protoimpl.MessageState `protogen:"open.v1"` + Val *JsonValueExpr `protobuf:"bytes,1,opt,name=val,proto3" json:"val,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonArgument) Reset() { + *x = JsonArgument{} + mi := &file_pg_query_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonArgument) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonArgument) ProtoMessage() {} + +func (x *JsonArgument) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[129] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonArgument.ProtoReflect.Descriptor instead. +func (*JsonArgument) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{129} +} + +func (x *JsonArgument) GetVal() *JsonValueExpr { + if x != nil { + return x.Val + } + return nil +} + +func (x *JsonArgument) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type JsonFuncExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Op JsonExprOp `protobuf:"varint,1,opt,name=op,proto3,enum=pg_query.JsonExprOp" json:"op,omitempty"` + ColumnName string `protobuf:"bytes,2,opt,name=column_name,proto3" json:"column_name,omitempty"` + ContextItem *JsonValueExpr `protobuf:"bytes,3,opt,name=context_item,proto3" json:"context_item,omitempty"` + Pathspec *Node `protobuf:"bytes,4,opt,name=pathspec,proto3" json:"pathspec,omitempty"` + Passing []*Node `protobuf:"bytes,5,rep,name=passing,proto3" json:"passing,omitempty"` + Output *JsonOutput `protobuf:"bytes,6,opt,name=output,proto3" json:"output,omitempty"` + OnEmpty *JsonBehavior `protobuf:"bytes,7,opt,name=on_empty,proto3" json:"on_empty,omitempty"` + OnError *JsonBehavior `protobuf:"bytes,8,opt,name=on_error,proto3" json:"on_error,omitempty"` + Wrapper JsonWrapper `protobuf:"varint,9,opt,name=wrapper,proto3,enum=pg_query.JsonWrapper" json:"wrapper,omitempty"` + Quotes JsonQuotes `protobuf:"varint,10,opt,name=quotes,proto3,enum=pg_query.JsonQuotes" json:"quotes,omitempty"` + Location int32 `protobuf:"varint,11,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonFuncExpr) Reset() { + *x = JsonFuncExpr{} + mi := &file_pg_query_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonFuncExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonFuncExpr) ProtoMessage() {} + +func (x *JsonFuncExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[130] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonFuncExpr.ProtoReflect.Descriptor instead. +func (*JsonFuncExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{130} +} + +func (x *JsonFuncExpr) GetOp() JsonExprOp { + if x != nil { + return x.Op + } + return JsonExprOp_JSON_EXPR_OP_UNDEFINED +} + +func (x *JsonFuncExpr) GetColumnName() string { + if x != nil { + return x.ColumnName + } + return "" +} + +func (x *JsonFuncExpr) GetContextItem() *JsonValueExpr { + if x != nil { + return x.ContextItem + } + return nil +} + +func (x *JsonFuncExpr) GetPathspec() *Node { + if x != nil { + return x.Pathspec + } + return nil +} + +func (x *JsonFuncExpr) GetPassing() []*Node { + if x != nil { + return x.Passing + } + return nil +} + +func (x *JsonFuncExpr) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonFuncExpr) GetOnEmpty() *JsonBehavior { + if x != nil { + return x.OnEmpty + } + return nil +} + +func (x *JsonFuncExpr) GetOnError() *JsonBehavior { + if x != nil { + return x.OnError + } + return nil +} + +func (x *JsonFuncExpr) GetWrapper() JsonWrapper { + if x != nil { + return x.Wrapper + } + return JsonWrapper_JSON_WRAPPER_UNDEFINED +} + +func (x *JsonFuncExpr) GetQuotes() JsonQuotes { + if x != nil { + return x.Quotes + } + return JsonQuotes_JSON_QUOTES_UNDEFINED +} + +func (x *JsonFuncExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonTablePathSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + String_ *Node `protobuf:"bytes,1,opt,name=string,proto3" json:"string,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + NameLocation int32 `protobuf:"varint,3,opt,name=name_location,proto3" json:"name_location,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonTablePathSpec) Reset() { + *x = JsonTablePathSpec{} + mi := &file_pg_query_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonTablePathSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonTablePathSpec) ProtoMessage() {} + +func (x *JsonTablePathSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[131] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonTablePathSpec.ProtoReflect.Descriptor instead. +func (*JsonTablePathSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{131} +} + +func (x *JsonTablePathSpec) GetString_() *Node { + if x != nil { + return x.String_ + } + return nil +} + +func (x *JsonTablePathSpec) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *JsonTablePathSpec) GetNameLocation() int32 { + if x != nil { + return x.NameLocation + } + return 0 +} + +func (x *JsonTablePathSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonTable struct { + state protoimpl.MessageState `protogen:"open.v1"` + ContextItem *JsonValueExpr `protobuf:"bytes,1,opt,name=context_item,proto3" json:"context_item,omitempty"` + Pathspec *JsonTablePathSpec `protobuf:"bytes,2,opt,name=pathspec,proto3" json:"pathspec,omitempty"` + Passing []*Node `protobuf:"bytes,3,rep,name=passing,proto3" json:"passing,omitempty"` + Columns []*Node `protobuf:"bytes,4,rep,name=columns,proto3" json:"columns,omitempty"` + OnError *JsonBehavior `protobuf:"bytes,5,opt,name=on_error,proto3" json:"on_error,omitempty"` + Alias *Alias `protobuf:"bytes,6,opt,name=alias,proto3" json:"alias,omitempty"` + Lateral bool `protobuf:"varint,7,opt,name=lateral,proto3" json:"lateral,omitempty"` + Location int32 `protobuf:"varint,8,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonTable) Reset() { + *x = JsonTable{} + mi := &file_pg_query_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonTable) ProtoMessage() {} + +func (x *JsonTable) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[132] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonTable.ProtoReflect.Descriptor instead. +func (*JsonTable) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{132} +} + +func (x *JsonTable) GetContextItem() *JsonValueExpr { + if x != nil { + return x.ContextItem + } + return nil +} + +func (x *JsonTable) GetPathspec() *JsonTablePathSpec { + if x != nil { + return x.Pathspec + } + return nil +} + +func (x *JsonTable) GetPassing() []*Node { + if x != nil { + return x.Passing + } + return nil +} + +func (x *JsonTable) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +func (x *JsonTable) GetOnError() *JsonBehavior { + if x != nil { + return x.OnError + } + return nil +} + +func (x *JsonTable) GetAlias() *Alias { + if x != nil { + return x.Alias + } + return nil +} + +func (x *JsonTable) GetLateral() bool { + if x != nil { + return x.Lateral + } + return false +} + +func (x *JsonTable) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonTableColumn struct { + state protoimpl.MessageState `protogen:"open.v1"` + Coltype JsonTableColumnType `protobuf:"varint,1,opt,name=coltype,proto3,enum=pg_query.JsonTableColumnType" json:"coltype,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + TypeName *TypeName `protobuf:"bytes,3,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Pathspec *JsonTablePathSpec `protobuf:"bytes,4,opt,name=pathspec,proto3" json:"pathspec,omitempty"` + Format *JsonFormat `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + Wrapper JsonWrapper `protobuf:"varint,6,opt,name=wrapper,proto3,enum=pg_query.JsonWrapper" json:"wrapper,omitempty"` + Quotes JsonQuotes `protobuf:"varint,7,opt,name=quotes,proto3,enum=pg_query.JsonQuotes" json:"quotes,omitempty"` + Columns []*Node `protobuf:"bytes,8,rep,name=columns,proto3" json:"columns,omitempty"` + OnEmpty *JsonBehavior `protobuf:"bytes,9,opt,name=on_empty,proto3" json:"on_empty,omitempty"` + OnError *JsonBehavior `protobuf:"bytes,10,opt,name=on_error,proto3" json:"on_error,omitempty"` + Location int32 `protobuf:"varint,11,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonTableColumn) Reset() { + *x = JsonTableColumn{} + mi := &file_pg_query_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonTableColumn) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonTableColumn) ProtoMessage() {} + +func (x *JsonTableColumn) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[133] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonTableColumn.ProtoReflect.Descriptor instead. +func (*JsonTableColumn) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{133} +} + +func (x *JsonTableColumn) GetColtype() JsonTableColumnType { + if x != nil { + return x.Coltype + } + return JsonTableColumnType_JSON_TABLE_COLUMN_TYPE_UNDEFINED +} + +func (x *JsonTableColumn) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *JsonTableColumn) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *JsonTableColumn) GetPathspec() *JsonTablePathSpec { + if x != nil { + return x.Pathspec + } + return nil +} + +func (x *JsonTableColumn) GetFormat() *JsonFormat { + if x != nil { + return x.Format + } + return nil +} + +func (x *JsonTableColumn) GetWrapper() JsonWrapper { + if x != nil { + return x.Wrapper + } + return JsonWrapper_JSON_WRAPPER_UNDEFINED +} + +func (x *JsonTableColumn) GetQuotes() JsonQuotes { + if x != nil { + return x.Quotes + } + return JsonQuotes_JSON_QUOTES_UNDEFINED +} + +func (x *JsonTableColumn) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +func (x *JsonTableColumn) GetOnEmpty() *JsonBehavior { + if x != nil { + return x.OnEmpty + } + return nil +} + +func (x *JsonTableColumn) GetOnError() *JsonBehavior { + if x != nil { + return x.OnError + } + return nil +} + +func (x *JsonTableColumn) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonKeyValue struct { + state protoimpl.MessageState `protogen:"open.v1"` + Key *Node `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *JsonValueExpr `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonKeyValue) Reset() { + *x = JsonKeyValue{} + mi := &file_pg_query_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonKeyValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonKeyValue) ProtoMessage() {} + +func (x *JsonKeyValue) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[134] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonKeyValue.ProtoReflect.Descriptor instead. +func (*JsonKeyValue) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{134} +} + +func (x *JsonKeyValue) GetKey() *Node { + if x != nil { + return x.Key + } + return nil +} + +func (x *JsonKeyValue) GetValue() *JsonValueExpr { + if x != nil { + return x.Value + } + return nil +} + +type JsonParseExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Expr *JsonValueExpr `protobuf:"bytes,1,opt,name=expr,proto3" json:"expr,omitempty"` + Output *JsonOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + UniqueKeys bool `protobuf:"varint,3,opt,name=unique_keys,proto3" json:"unique_keys,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonParseExpr) Reset() { + *x = JsonParseExpr{} + mi := &file_pg_query_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonParseExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonParseExpr) ProtoMessage() {} + +func (x *JsonParseExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[135] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonParseExpr.ProtoReflect.Descriptor instead. +func (*JsonParseExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{135} +} + +func (x *JsonParseExpr) GetExpr() *JsonValueExpr { + if x != nil { + return x.Expr + } + return nil +} + +func (x *JsonParseExpr) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonParseExpr) GetUniqueKeys() bool { + if x != nil { + return x.UniqueKeys + } + return false +} + +func (x *JsonParseExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonScalarExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Expr *Node `protobuf:"bytes,1,opt,name=expr,proto3" json:"expr,omitempty"` + Output *JsonOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonScalarExpr) Reset() { + *x = JsonScalarExpr{} + mi := &file_pg_query_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonScalarExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonScalarExpr) ProtoMessage() {} + +func (x *JsonScalarExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[136] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonScalarExpr.ProtoReflect.Descriptor instead. +func (*JsonScalarExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{136} +} + +func (x *JsonScalarExpr) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +func (x *JsonScalarExpr) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonScalarExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonSerializeExpr struct { + state protoimpl.MessageState `protogen:"open.v1"` + Expr *JsonValueExpr `protobuf:"bytes,1,opt,name=expr,proto3" json:"expr,omitempty"` + Output *JsonOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonSerializeExpr) Reset() { + *x = JsonSerializeExpr{} + mi := &file_pg_query_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonSerializeExpr) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonSerializeExpr) ProtoMessage() {} + +func (x *JsonSerializeExpr) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[137] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonSerializeExpr.ProtoReflect.Descriptor instead. +func (*JsonSerializeExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{137} +} + +func (x *JsonSerializeExpr) GetExpr() *JsonValueExpr { + if x != nil { + return x.Expr + } + return nil +} + +func (x *JsonSerializeExpr) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonSerializeExpr) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonObjectConstructor struct { + state protoimpl.MessageState `protogen:"open.v1"` + Exprs []*Node `protobuf:"bytes,1,rep,name=exprs,proto3" json:"exprs,omitempty"` + Output *JsonOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + AbsentOnNull bool `protobuf:"varint,3,opt,name=absent_on_null,proto3" json:"absent_on_null,omitempty"` + Unique bool `protobuf:"varint,4,opt,name=unique,proto3" json:"unique,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonObjectConstructor) Reset() { + *x = JsonObjectConstructor{} + mi := &file_pg_query_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonObjectConstructor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonObjectConstructor) ProtoMessage() {} + +func (x *JsonObjectConstructor) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[138] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonObjectConstructor.ProtoReflect.Descriptor instead. +func (*JsonObjectConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{138} +} + +func (x *JsonObjectConstructor) GetExprs() []*Node { + if x != nil { + return x.Exprs + } + return nil +} + +func (x *JsonObjectConstructor) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonObjectConstructor) GetAbsentOnNull() bool { + if x != nil { + return x.AbsentOnNull + } + return false +} + +func (x *JsonObjectConstructor) GetUnique() bool { + if x != nil { + return x.Unique + } + return false +} + +func (x *JsonObjectConstructor) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonArrayConstructor struct { + state protoimpl.MessageState `protogen:"open.v1"` + Exprs []*Node `protobuf:"bytes,1,rep,name=exprs,proto3" json:"exprs,omitempty"` + Output *JsonOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + AbsentOnNull bool `protobuf:"varint,3,opt,name=absent_on_null,proto3" json:"absent_on_null,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonArrayConstructor) Reset() { + *x = JsonArrayConstructor{} + mi := &file_pg_query_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonArrayConstructor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonArrayConstructor) ProtoMessage() {} + +func (x *JsonArrayConstructor) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[139] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonArrayConstructor.ProtoReflect.Descriptor instead. +func (*JsonArrayConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{139} +} + +func (x *JsonArrayConstructor) GetExprs() []*Node { + if x != nil { + return x.Exprs + } + return nil +} + +func (x *JsonArrayConstructor) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonArrayConstructor) GetAbsentOnNull() bool { + if x != nil { + return x.AbsentOnNull + } + return false +} + +func (x *JsonArrayConstructor) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonArrayQueryConstructor struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query *Node `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Output *JsonOutput `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + Format *JsonFormat `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"` + AbsentOnNull bool `protobuf:"varint,4,opt,name=absent_on_null,proto3" json:"absent_on_null,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonArrayQueryConstructor) Reset() { + *x = JsonArrayQueryConstructor{} + mi := &file_pg_query_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonArrayQueryConstructor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonArrayQueryConstructor) ProtoMessage() {} + +func (x *JsonArrayQueryConstructor) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[140] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonArrayQueryConstructor.ProtoReflect.Descriptor instead. +func (*JsonArrayQueryConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{140} +} + +func (x *JsonArrayQueryConstructor) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *JsonArrayQueryConstructor) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonArrayQueryConstructor) GetFormat() *JsonFormat { + if x != nil { + return x.Format + } + return nil +} + +func (x *JsonArrayQueryConstructor) GetAbsentOnNull() bool { + if x != nil { + return x.AbsentOnNull + } + return false +} + +func (x *JsonArrayQueryConstructor) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonAggConstructor struct { + state protoimpl.MessageState `protogen:"open.v1"` + Output *JsonOutput `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` + AggFilter *Node `protobuf:"bytes,2,opt,name=agg_filter,proto3" json:"agg_filter,omitempty"` + AggOrder []*Node `protobuf:"bytes,3,rep,name=agg_order,proto3" json:"agg_order,omitempty"` + Over *WindowDef `protobuf:"bytes,4,opt,name=over,proto3" json:"over,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonAggConstructor) Reset() { + *x = JsonAggConstructor{} + mi := &file_pg_query_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonAggConstructor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonAggConstructor) ProtoMessage() {} + +func (x *JsonAggConstructor) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[141] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonAggConstructor.ProtoReflect.Descriptor instead. +func (*JsonAggConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{141} +} + +func (x *JsonAggConstructor) GetOutput() *JsonOutput { + if x != nil { + return x.Output + } + return nil +} + +func (x *JsonAggConstructor) GetAggFilter() *Node { + if x != nil { + return x.AggFilter + } + return nil +} + +func (x *JsonAggConstructor) GetAggOrder() []*Node { + if x != nil { + return x.AggOrder + } + return nil +} + +func (x *JsonAggConstructor) GetOver() *WindowDef { + if x != nil { + return x.Over + } + return nil +} + +func (x *JsonAggConstructor) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type JsonObjectAgg struct { + state protoimpl.MessageState `protogen:"open.v1"` + Constructor *JsonAggConstructor `protobuf:"bytes,1,opt,name=constructor,proto3" json:"constructor,omitempty"` + Arg *JsonKeyValue `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + AbsentOnNull bool `protobuf:"varint,3,opt,name=absent_on_null,proto3" json:"absent_on_null,omitempty"` + Unique bool `protobuf:"varint,4,opt,name=unique,proto3" json:"unique,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonObjectAgg) Reset() { + *x = JsonObjectAgg{} + mi := &file_pg_query_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonObjectAgg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonObjectAgg) ProtoMessage() {} + +func (x *JsonObjectAgg) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[142] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonObjectAgg.ProtoReflect.Descriptor instead. +func (*JsonObjectAgg) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{142} +} + +func (x *JsonObjectAgg) GetConstructor() *JsonAggConstructor { + if x != nil { + return x.Constructor + } + return nil +} + +func (x *JsonObjectAgg) GetArg() *JsonKeyValue { + if x != nil { + return x.Arg + } + return nil +} + +func (x *JsonObjectAgg) GetAbsentOnNull() bool { + if x != nil { + return x.AbsentOnNull + } + return false +} + +func (x *JsonObjectAgg) GetUnique() bool { + if x != nil { + return x.Unique + } + return false +} + +type JsonArrayAgg struct { + state protoimpl.MessageState `protogen:"open.v1"` + Constructor *JsonAggConstructor `protobuf:"bytes,1,opt,name=constructor,proto3" json:"constructor,omitempty"` + Arg *JsonValueExpr `protobuf:"bytes,2,opt,name=arg,proto3" json:"arg,omitempty"` + AbsentOnNull bool `protobuf:"varint,3,opt,name=absent_on_null,proto3" json:"absent_on_null,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JsonArrayAgg) Reset() { + *x = JsonArrayAgg{} + mi := &file_pg_query_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JsonArrayAgg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JsonArrayAgg) ProtoMessage() {} + +func (x *JsonArrayAgg) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[143] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JsonArrayAgg.ProtoReflect.Descriptor instead. +func (*JsonArrayAgg) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{143} +} + +func (x *JsonArrayAgg) GetConstructor() *JsonAggConstructor { + if x != nil { + return x.Constructor + } + return nil +} + +func (x *JsonArrayAgg) GetArg() *JsonValueExpr { + if x != nil { + return x.Arg + } + return nil +} + +func (x *JsonArrayAgg) GetAbsentOnNull() bool { + if x != nil { + return x.AbsentOnNull + } + return false +} + +type RawStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Stmt *Node `protobuf:"bytes,1,opt,name=stmt,proto3" json:"stmt,omitempty"` + StmtLocation int32 `protobuf:"varint,2,opt,name=stmt_location,proto3" json:"stmt_location,omitempty"` + StmtLen int32 `protobuf:"varint,3,opt,name=stmt_len,proto3" json:"stmt_len,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RawStmt) Reset() { + *x = RawStmt{} + mi := &file_pg_query_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RawStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawStmt) ProtoMessage() {} + +func (x *RawStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[144] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawStmt.ProtoReflect.Descriptor instead. +func (*RawStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{144} +} + +func (x *RawStmt) GetStmt() *Node { + if x != nil { + return x.Stmt + } + return nil +} + +func (x *RawStmt) GetStmtLocation() int32 { + if x != nil { + return x.StmtLocation + } + return 0 +} + +func (x *RawStmt) GetStmtLen() int32 { + if x != nil { + return x.StmtLen + } + return 0 +} + +type InsertStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Cols []*Node `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"` + SelectStmt *Node `protobuf:"bytes,3,opt,name=select_stmt,json=selectStmt,proto3" json:"select_stmt,omitempty"` + OnConflictClause *OnConflictClause `protobuf:"bytes,4,opt,name=on_conflict_clause,json=onConflictClause,proto3" json:"on_conflict_clause,omitempty"` + ReturningClause *ReturningClause `protobuf:"bytes,5,opt,name=returning_clause,json=returningClause,proto3" json:"returning_clause,omitempty"` + WithClause *WithClause `protobuf:"bytes,6,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + Override OverridingKind `protobuf:"varint,7,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InsertStmt) Reset() { + *x = InsertStmt{} + mi := &file_pg_query_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InsertStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InsertStmt) ProtoMessage() {} + +func (x *InsertStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[145] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InsertStmt.ProtoReflect.Descriptor instead. +func (*InsertStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{145} +} + +func (x *InsertStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *InsertStmt) GetCols() []*Node { + if x != nil { + return x.Cols + } + return nil +} + +func (x *InsertStmt) GetSelectStmt() *Node { + if x != nil { + return x.SelectStmt + } + return nil +} + +func (x *InsertStmt) GetOnConflictClause() *OnConflictClause { + if x != nil { + return x.OnConflictClause + } + return nil +} + +func (x *InsertStmt) GetReturningClause() *ReturningClause { + if x != nil { + return x.ReturningClause + } + return nil +} + +func (x *InsertStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +func (x *InsertStmt) GetOverride() OverridingKind { + if x != nil { + return x.Override + } + return OverridingKind_OVERRIDING_KIND_UNDEFINED +} + +type DeleteStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + UsingClause []*Node `protobuf:"bytes,2,rep,name=using_clause,json=usingClause,proto3" json:"using_clause,omitempty"` + WhereClause *Node `protobuf:"bytes,3,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + ReturningClause *ReturningClause `protobuf:"bytes,4,opt,name=returning_clause,json=returningClause,proto3" json:"returning_clause,omitempty"` + WithClause *WithClause `protobuf:"bytes,5,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteStmt) Reset() { + *x = DeleteStmt{} + mi := &file_pg_query_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteStmt) ProtoMessage() {} + +func (x *DeleteStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[146] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteStmt.ProtoReflect.Descriptor instead. +func (*DeleteStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{146} +} + +func (x *DeleteStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *DeleteStmt) GetUsingClause() []*Node { + if x != nil { + return x.UsingClause + } + return nil +} + +func (x *DeleteStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *DeleteStmt) GetReturningClause() *ReturningClause { + if x != nil { + return x.ReturningClause + } + return nil +} + +func (x *DeleteStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +type UpdateStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + TargetList []*Node `protobuf:"bytes,2,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + WhereClause *Node `protobuf:"bytes,3,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + FromClause []*Node `protobuf:"bytes,4,rep,name=from_clause,json=fromClause,proto3" json:"from_clause,omitempty"` + ReturningClause *ReturningClause `protobuf:"bytes,5,opt,name=returning_clause,json=returningClause,proto3" json:"returning_clause,omitempty"` + WithClause *WithClause `protobuf:"bytes,6,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateStmt) Reset() { + *x = UpdateStmt{} + mi := &file_pg_query_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateStmt) ProtoMessage() {} + +func (x *UpdateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[147] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateStmt.ProtoReflect.Descriptor instead. +func (*UpdateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{147} +} + +func (x *UpdateStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *UpdateStmt) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *UpdateStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *UpdateStmt) GetFromClause() []*Node { + if x != nil { + return x.FromClause + } + return nil +} + +func (x *UpdateStmt) GetReturningClause() *ReturningClause { + if x != nil { + return x.ReturningClause + } + return nil +} + +func (x *UpdateStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +type MergeStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + SourceRelation *Node `protobuf:"bytes,2,opt,name=source_relation,json=sourceRelation,proto3" json:"source_relation,omitempty"` + JoinCondition *Node `protobuf:"bytes,3,opt,name=join_condition,json=joinCondition,proto3" json:"join_condition,omitempty"` + MergeWhenClauses []*Node `protobuf:"bytes,4,rep,name=merge_when_clauses,json=mergeWhenClauses,proto3" json:"merge_when_clauses,omitempty"` + ReturningClause *ReturningClause `protobuf:"bytes,5,opt,name=returning_clause,json=returningClause,proto3" json:"returning_clause,omitempty"` + WithClause *WithClause `protobuf:"bytes,6,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MergeStmt) Reset() { + *x = MergeStmt{} + mi := &file_pg_query_proto_msgTypes[148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MergeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MergeStmt) ProtoMessage() {} + +func (x *MergeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[148] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MergeStmt.ProtoReflect.Descriptor instead. +func (*MergeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{148} +} + +func (x *MergeStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *MergeStmt) GetSourceRelation() *Node { + if x != nil { + return x.SourceRelation + } + return nil +} + +func (x *MergeStmt) GetJoinCondition() *Node { + if x != nil { + return x.JoinCondition + } + return nil +} + +func (x *MergeStmt) GetMergeWhenClauses() []*Node { + if x != nil { + return x.MergeWhenClauses + } + return nil +} + +func (x *MergeStmt) GetReturningClause() *ReturningClause { + if x != nil { + return x.ReturningClause + } + return nil +} + +func (x *MergeStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +type SelectStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + DistinctClause []*Node `protobuf:"bytes,1,rep,name=distinct_clause,json=distinctClause,proto3" json:"distinct_clause,omitempty"` + IntoClause *IntoClause `protobuf:"bytes,2,opt,name=into_clause,json=intoClause,proto3" json:"into_clause,omitempty"` + TargetList []*Node `protobuf:"bytes,3,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + FromClause []*Node `protobuf:"bytes,4,rep,name=from_clause,json=fromClause,proto3" json:"from_clause,omitempty"` + WhereClause *Node `protobuf:"bytes,5,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + GroupClause []*Node `protobuf:"bytes,6,rep,name=group_clause,json=groupClause,proto3" json:"group_clause,omitempty"` + GroupDistinct bool `protobuf:"varint,7,opt,name=group_distinct,json=groupDistinct,proto3" json:"group_distinct,omitempty"` + HavingClause *Node `protobuf:"bytes,8,opt,name=having_clause,json=havingClause,proto3" json:"having_clause,omitempty"` + WindowClause []*Node `protobuf:"bytes,9,rep,name=window_clause,json=windowClause,proto3" json:"window_clause,omitempty"` + ValuesLists []*Node `protobuf:"bytes,10,rep,name=values_lists,json=valuesLists,proto3" json:"values_lists,omitempty"` + SortClause []*Node `protobuf:"bytes,11,rep,name=sort_clause,json=sortClause,proto3" json:"sort_clause,omitempty"` + LimitOffset *Node `protobuf:"bytes,12,opt,name=limit_offset,json=limitOffset,proto3" json:"limit_offset,omitempty"` + LimitCount *Node `protobuf:"bytes,13,opt,name=limit_count,json=limitCount,proto3" json:"limit_count,omitempty"` + LimitOption LimitOption `protobuf:"varint,14,opt,name=limit_option,json=limitOption,proto3,enum=pg_query.LimitOption" json:"limit_option,omitempty"` + LockingClause []*Node `protobuf:"bytes,15,rep,name=locking_clause,json=lockingClause,proto3" json:"locking_clause,omitempty"` + WithClause *WithClause `protobuf:"bytes,16,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` + Op SetOperation `protobuf:"varint,17,opt,name=op,proto3,enum=pg_query.SetOperation" json:"op,omitempty"` + All bool `protobuf:"varint,18,opt,name=all,proto3" json:"all,omitempty"` + Larg *SelectStmt `protobuf:"bytes,19,opt,name=larg,proto3" json:"larg,omitempty"` + Rarg *SelectStmt `protobuf:"bytes,20,opt,name=rarg,proto3" json:"rarg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SelectStmt) Reset() { + *x = SelectStmt{} + mi := &file_pg_query_proto_msgTypes[149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SelectStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SelectStmt) ProtoMessage() {} + +func (x *SelectStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[149] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SelectStmt.ProtoReflect.Descriptor instead. +func (*SelectStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{149} +} + +func (x *SelectStmt) GetDistinctClause() []*Node { + if x != nil { + return x.DistinctClause + } + return nil +} + +func (x *SelectStmt) GetIntoClause() *IntoClause { + if x != nil { + return x.IntoClause + } + return nil +} + +func (x *SelectStmt) GetTargetList() []*Node { + if x != nil { + return x.TargetList + } + return nil +} + +func (x *SelectStmt) GetFromClause() []*Node { + if x != nil { + return x.FromClause + } + return nil +} + +func (x *SelectStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *SelectStmt) GetGroupClause() []*Node { + if x != nil { + return x.GroupClause + } + return nil +} + +func (x *SelectStmt) GetGroupDistinct() bool { + if x != nil { + return x.GroupDistinct + } + return false +} + +func (x *SelectStmt) GetHavingClause() *Node { + if x != nil { + return x.HavingClause + } + return nil +} + +func (x *SelectStmt) GetWindowClause() []*Node { + if x != nil { + return x.WindowClause + } + return nil +} + +func (x *SelectStmt) GetValuesLists() []*Node { + if x != nil { + return x.ValuesLists + } + return nil +} + +func (x *SelectStmt) GetSortClause() []*Node { + if x != nil { + return x.SortClause + } + return nil +} + +func (x *SelectStmt) GetLimitOffset() *Node { + if x != nil { + return x.LimitOffset + } + return nil +} + +func (x *SelectStmt) GetLimitCount() *Node { + if x != nil { + return x.LimitCount + } + return nil +} + +func (x *SelectStmt) GetLimitOption() LimitOption { + if x != nil { + return x.LimitOption + } + return LimitOption_LIMIT_OPTION_UNDEFINED +} + +func (x *SelectStmt) GetLockingClause() []*Node { + if x != nil { + return x.LockingClause + } + return nil +} + +func (x *SelectStmt) GetWithClause() *WithClause { + if x != nil { + return x.WithClause + } + return nil +} + +func (x *SelectStmt) GetOp() SetOperation { + if x != nil { + return x.Op + } + return SetOperation_SET_OPERATION_UNDEFINED +} + +func (x *SelectStmt) GetAll() bool { + if x != nil { + return x.All + } + return false +} + +func (x *SelectStmt) GetLarg() *SelectStmt { + if x != nil { + return x.Larg + } + return nil +} + +func (x *SelectStmt) GetRarg() *SelectStmt { + if x != nil { + return x.Rarg + } + return nil +} + +type SetOperationStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Op SetOperation `protobuf:"varint,1,opt,name=op,proto3,enum=pg_query.SetOperation" json:"op,omitempty"` + All bool `protobuf:"varint,2,opt,name=all,proto3" json:"all,omitempty"` + Larg *Node `protobuf:"bytes,3,opt,name=larg,proto3" json:"larg,omitempty"` + Rarg *Node `protobuf:"bytes,4,opt,name=rarg,proto3" json:"rarg,omitempty"` + ColTypes []*Node `protobuf:"bytes,5,rep,name=col_types,json=colTypes,proto3" json:"col_types,omitempty"` + ColTypmods []*Node `protobuf:"bytes,6,rep,name=col_typmods,json=colTypmods,proto3" json:"col_typmods,omitempty"` + ColCollations []*Node `protobuf:"bytes,7,rep,name=col_collations,json=colCollations,proto3" json:"col_collations,omitempty"` + GroupClauses []*Node `protobuf:"bytes,8,rep,name=group_clauses,json=groupClauses,proto3" json:"group_clauses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetOperationStmt) Reset() { + *x = SetOperationStmt{} + mi := &file_pg_query_proto_msgTypes[150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetOperationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetOperationStmt) ProtoMessage() {} + +func (x *SetOperationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[150] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetOperationStmt.ProtoReflect.Descriptor instead. +func (*SetOperationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{150} +} + +func (x *SetOperationStmt) GetOp() SetOperation { + if x != nil { + return x.Op + } + return SetOperation_SET_OPERATION_UNDEFINED +} + +func (x *SetOperationStmt) GetAll() bool { + if x != nil { + return x.All + } + return false +} + +func (x *SetOperationStmt) GetLarg() *Node { + if x != nil { + return x.Larg + } + return nil +} + +func (x *SetOperationStmt) GetRarg() *Node { + if x != nil { + return x.Rarg + } + return nil +} + +func (x *SetOperationStmt) GetColTypes() []*Node { + if x != nil { + return x.ColTypes + } + return nil +} + +func (x *SetOperationStmt) GetColTypmods() []*Node { + if x != nil { + return x.ColTypmods + } + return nil +} + +func (x *SetOperationStmt) GetColCollations() []*Node { + if x != nil { + return x.ColCollations + } + return nil +} + +func (x *SetOperationStmt) GetGroupClauses() []*Node { + if x != nil { + return x.GroupClauses + } + return nil +} + +type ReturnStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Returnval *Node `protobuf:"bytes,1,opt,name=returnval,proto3" json:"returnval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReturnStmt) Reset() { + *x = ReturnStmt{} + mi := &file_pg_query_proto_msgTypes[151] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReturnStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReturnStmt) ProtoMessage() {} + +func (x *ReturnStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[151] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReturnStmt.ProtoReflect.Descriptor instead. +func (*ReturnStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{151} +} + +func (x *ReturnStmt) GetReturnval() *Node { + if x != nil { + return x.Returnval + } + return nil +} + +type PLAssignStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Indirection []*Node `protobuf:"bytes,2,rep,name=indirection,proto3" json:"indirection,omitempty"` + Nnames int32 `protobuf:"varint,3,opt,name=nnames,proto3" json:"nnames,omitempty"` + Val *SelectStmt `protobuf:"bytes,4,opt,name=val,proto3" json:"val,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PLAssignStmt) Reset() { + *x = PLAssignStmt{} + mi := &file_pg_query_proto_msgTypes[152] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PLAssignStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PLAssignStmt) ProtoMessage() {} + +func (x *PLAssignStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[152] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PLAssignStmt.ProtoReflect.Descriptor instead. +func (*PLAssignStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{152} +} + +func (x *PLAssignStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PLAssignStmt) GetIndirection() []*Node { + if x != nil { + return x.Indirection + } + return nil +} + +func (x *PLAssignStmt) GetNnames() int32 { + if x != nil { + return x.Nnames + } + return 0 +} + +func (x *PLAssignStmt) GetVal() *SelectStmt { + if x != nil { + return x.Val + } + return nil +} + +func (x *PLAssignStmt) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CreateSchemaStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Schemaname string `protobuf:"bytes,1,opt,name=schemaname,proto3" json:"schemaname,omitempty"` + Authrole *RoleSpec `protobuf:"bytes,2,opt,name=authrole,proto3" json:"authrole,omitempty"` + SchemaElts []*Node `protobuf:"bytes,3,rep,name=schema_elts,json=schemaElts,proto3" json:"schema_elts,omitempty"` + IfNotExists bool `protobuf:"varint,4,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateSchemaStmt) Reset() { + *x = CreateSchemaStmt{} + mi := &file_pg_query_proto_msgTypes[153] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateSchemaStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSchemaStmt) ProtoMessage() {} + +func (x *CreateSchemaStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[153] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSchemaStmt.ProtoReflect.Descriptor instead. +func (*CreateSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{153} +} + +func (x *CreateSchemaStmt) GetSchemaname() string { + if x != nil { + return x.Schemaname + } + return "" +} + +func (x *CreateSchemaStmt) GetAuthrole() *RoleSpec { + if x != nil { + return x.Authrole + } + return nil +} + +func (x *CreateSchemaStmt) GetSchemaElts() []*Node { + if x != nil { + return x.SchemaElts + } + return nil +} + +func (x *CreateSchemaStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type AlterTableStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Cmds []*Node `protobuf:"bytes,2,rep,name=cmds,proto3" json:"cmds,omitempty"` + Objtype ObjectType `protobuf:"varint,3,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + MissingOk bool `protobuf:"varint,4,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTableStmt) Reset() { + *x = AlterTableStmt{} + mi := &file_pg_query_proto_msgTypes[154] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTableStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableStmt) ProtoMessage() {} + +func (x *AlterTableStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[154] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableStmt.ProtoReflect.Descriptor instead. +func (*AlterTableStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{154} +} + +func (x *AlterTableStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterTableStmt) GetCmds() []*Node { + if x != nil { + return x.Cmds + } + return nil +} + +func (x *AlterTableStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterTableStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterTableCmd struct { + state protoimpl.MessageState `protogen:"open.v1"` + Subtype AlterTableType `protobuf:"varint,1,opt,name=subtype,proto3,enum=pg_query.AlterTableType" json:"subtype,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num,omitempty"` + Newowner *RoleSpec `protobuf:"bytes,4,opt,name=newowner,proto3" json:"newowner,omitempty"` + Def *Node `protobuf:"bytes,5,opt,name=def,proto3" json:"def,omitempty"` + Behavior DropBehavior `protobuf:"varint,6,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,7,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Recurse bool `protobuf:"varint,8,opt,name=recurse,proto3" json:"recurse,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTableCmd) Reset() { + *x = AlterTableCmd{} + mi := &file_pg_query_proto_msgTypes[155] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTableCmd) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableCmd) ProtoMessage() {} + +func (x *AlterTableCmd) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[155] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableCmd.ProtoReflect.Descriptor instead. +func (*AlterTableCmd) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{155} +} + +func (x *AlterTableCmd) GetSubtype() AlterTableType { + if x != nil { + return x.Subtype + } + return AlterTableType_ALTER_TABLE_TYPE_UNDEFINED +} + +func (x *AlterTableCmd) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlterTableCmd) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *AlterTableCmd) GetNewowner() *RoleSpec { + if x != nil { + return x.Newowner + } + return nil +} + +func (x *AlterTableCmd) GetDef() *Node { + if x != nil { + return x.Def + } + return nil +} + +func (x *AlterTableCmd) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *AlterTableCmd) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *AlterTableCmd) GetRecurse() bool { + if x != nil { + return x.Recurse + } + return false +} + +type ATAlterConstraint struct { + state protoimpl.MessageState `protogen:"open.v1"` + Conname string `protobuf:"bytes,1,opt,name=conname,proto3" json:"conname,omitempty"` + AlterEnforceability bool `protobuf:"varint,2,opt,name=alter_enforceability,json=alterEnforceability,proto3" json:"alter_enforceability,omitempty"` + IsEnforced bool `protobuf:"varint,3,opt,name=is_enforced,proto3" json:"is_enforced,omitempty"` + AlterDeferrability bool `protobuf:"varint,4,opt,name=alter_deferrability,json=alterDeferrability,proto3" json:"alter_deferrability,omitempty"` + Deferrable bool `protobuf:"varint,5,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,6,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + AlterInheritability bool `protobuf:"varint,7,opt,name=alter_inheritability,json=alterInheritability,proto3" json:"alter_inheritability,omitempty"` + Noinherit bool `protobuf:"varint,8,opt,name=noinherit,proto3" json:"noinherit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ATAlterConstraint) Reset() { + *x = ATAlterConstraint{} + mi := &file_pg_query_proto_msgTypes[156] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ATAlterConstraint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ATAlterConstraint) ProtoMessage() {} + +func (x *ATAlterConstraint) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[156] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ATAlterConstraint.ProtoReflect.Descriptor instead. +func (*ATAlterConstraint) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{156} +} + +func (x *ATAlterConstraint) GetConname() string { + if x != nil { + return x.Conname + } + return "" +} + +func (x *ATAlterConstraint) GetAlterEnforceability() bool { + if x != nil { + return x.AlterEnforceability + } + return false +} + +func (x *ATAlterConstraint) GetIsEnforced() bool { + if x != nil { + return x.IsEnforced + } + return false +} + +func (x *ATAlterConstraint) GetAlterDeferrability() bool { + if x != nil { + return x.AlterDeferrability + } + return false +} + +func (x *ATAlterConstraint) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *ATAlterConstraint) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *ATAlterConstraint) GetAlterInheritability() bool { + if x != nil { + return x.AlterInheritability + } + return false +} + +func (x *ATAlterConstraint) GetNoinherit() bool { + if x != nil { + return x.Noinherit + } + return false +} + +type ReplicaIdentityStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + IdentityType string `protobuf:"bytes,1,opt,name=identity_type,proto3" json:"identity_type,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReplicaIdentityStmt) Reset() { + *x = ReplicaIdentityStmt{} + mi := &file_pg_query_proto_msgTypes[157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReplicaIdentityStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReplicaIdentityStmt) ProtoMessage() {} + +func (x *ReplicaIdentityStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[157] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReplicaIdentityStmt.ProtoReflect.Descriptor instead. +func (*ReplicaIdentityStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{157} +} + +func (x *ReplicaIdentityStmt) GetIdentityType() string { + if x != nil { + return x.IdentityType + } + return "" +} + +func (x *ReplicaIdentityStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type AlterCollationStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Collname []*Node `protobuf:"bytes,1,rep,name=collname,proto3" json:"collname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterCollationStmt) Reset() { + *x = AlterCollationStmt{} + mi := &file_pg_query_proto_msgTypes[158] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterCollationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterCollationStmt) ProtoMessage() {} + +func (x *AlterCollationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[158] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterCollationStmt.ProtoReflect.Descriptor instead. +func (*AlterCollationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{158} +} + +func (x *AlterCollationStmt) GetCollname() []*Node { + if x != nil { + return x.Collname + } + return nil +} + +type AlterDomainStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Subtype string `protobuf:"bytes,1,opt,name=subtype,proto3" json:"subtype,omitempty"` + TypeName []*Node `protobuf:"bytes,2,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Def *Node `protobuf:"bytes,4,opt,name=def,proto3" json:"def,omitempty"` + Behavior DropBehavior `protobuf:"varint,5,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,6,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterDomainStmt) Reset() { + *x = AlterDomainStmt{} + mi := &file_pg_query_proto_msgTypes[159] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterDomainStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDomainStmt) ProtoMessage() {} + +func (x *AlterDomainStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[159] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDomainStmt.ProtoReflect.Descriptor instead. +func (*AlterDomainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{159} +} + +func (x *AlterDomainStmt) GetSubtype() string { + if x != nil { + return x.Subtype + } + return "" +} + +func (x *AlterDomainStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *AlterDomainStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AlterDomainStmt) GetDef() *Node { + if x != nil { + return x.Def + } + return nil +} + +func (x *AlterDomainStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *AlterDomainStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type GrantStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + IsGrant bool `protobuf:"varint,1,opt,name=is_grant,proto3" json:"is_grant,omitempty"` + Targtype GrantTargetType `protobuf:"varint,2,opt,name=targtype,proto3,enum=pg_query.GrantTargetType" json:"targtype,omitempty"` + Objtype ObjectType `protobuf:"varint,3,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Objects []*Node `protobuf:"bytes,4,rep,name=objects,proto3" json:"objects,omitempty"` + Privileges []*Node `protobuf:"bytes,5,rep,name=privileges,proto3" json:"privileges,omitempty"` + Grantees []*Node `protobuf:"bytes,6,rep,name=grantees,proto3" json:"grantees,omitempty"` + GrantOption bool `protobuf:"varint,7,opt,name=grant_option,proto3" json:"grant_option,omitempty"` + Grantor *RoleSpec `protobuf:"bytes,8,opt,name=grantor,proto3" json:"grantor,omitempty"` + Behavior DropBehavior `protobuf:"varint,9,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrantStmt) Reset() { + *x = GrantStmt{} + mi := &file_pg_query_proto_msgTypes[160] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrantStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrantStmt) ProtoMessage() {} + +func (x *GrantStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[160] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrantStmt.ProtoReflect.Descriptor instead. +func (*GrantStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{160} +} + +func (x *GrantStmt) GetIsGrant() bool { + if x != nil { + return x.IsGrant + } + return false +} + +func (x *GrantStmt) GetTargtype() GrantTargetType { + if x != nil { + return x.Targtype + } + return GrantTargetType_GRANT_TARGET_TYPE_UNDEFINED +} + +func (x *GrantStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *GrantStmt) GetObjects() []*Node { + if x != nil { + return x.Objects + } + return nil +} + +func (x *GrantStmt) GetPrivileges() []*Node { + if x != nil { + return x.Privileges + } + return nil +} + +func (x *GrantStmt) GetGrantees() []*Node { + if x != nil { + return x.Grantees + } + return nil +} + +func (x *GrantStmt) GetGrantOption() bool { + if x != nil { + return x.GrantOption + } + return false +} + +func (x *GrantStmt) GetGrantor() *RoleSpec { + if x != nil { + return x.Grantor + } + return nil +} + +func (x *GrantStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type ObjectWithArgs struct { + state protoimpl.MessageState `protogen:"open.v1"` + Objname []*Node `protobuf:"bytes,1,rep,name=objname,proto3" json:"objname,omitempty"` + Objargs []*Node `protobuf:"bytes,2,rep,name=objargs,proto3" json:"objargs,omitempty"` + Objfuncargs []*Node `protobuf:"bytes,3,rep,name=objfuncargs,proto3" json:"objfuncargs,omitempty"` + ArgsUnspecified bool `protobuf:"varint,4,opt,name=args_unspecified,proto3" json:"args_unspecified,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ObjectWithArgs) Reset() { + *x = ObjectWithArgs{} + mi := &file_pg_query_proto_msgTypes[161] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ObjectWithArgs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObjectWithArgs) ProtoMessage() {} + +func (x *ObjectWithArgs) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[161] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObjectWithArgs.ProtoReflect.Descriptor instead. +func (*ObjectWithArgs) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{161} +} + +func (x *ObjectWithArgs) GetObjname() []*Node { + if x != nil { + return x.Objname + } + return nil +} + +func (x *ObjectWithArgs) GetObjargs() []*Node { + if x != nil { + return x.Objargs + } + return nil +} + +func (x *ObjectWithArgs) GetObjfuncargs() []*Node { + if x != nil { + return x.Objfuncargs + } + return nil +} + +func (x *ObjectWithArgs) GetArgsUnspecified() bool { + if x != nil { + return x.ArgsUnspecified + } + return false +} + +type AccessPriv struct { + state protoimpl.MessageState `protogen:"open.v1"` + PrivName string `protobuf:"bytes,1,opt,name=priv_name,proto3" json:"priv_name,omitempty"` + Cols []*Node `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AccessPriv) Reset() { + *x = AccessPriv{} + mi := &file_pg_query_proto_msgTypes[162] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AccessPriv) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccessPriv) ProtoMessage() {} + +func (x *AccessPriv) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[162] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccessPriv.ProtoReflect.Descriptor instead. +func (*AccessPriv) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{162} +} + +func (x *AccessPriv) GetPrivName() string { + if x != nil { + return x.PrivName + } + return "" +} + +func (x *AccessPriv) GetCols() []*Node { + if x != nil { + return x.Cols + } + return nil +} + +type GrantRoleStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + GrantedRoles []*Node `protobuf:"bytes,1,rep,name=granted_roles,proto3" json:"granted_roles,omitempty"` + GranteeRoles []*Node `protobuf:"bytes,2,rep,name=grantee_roles,proto3" json:"grantee_roles,omitempty"` + IsGrant bool `protobuf:"varint,3,opt,name=is_grant,proto3" json:"is_grant,omitempty"` + Opt []*Node `protobuf:"bytes,4,rep,name=opt,proto3" json:"opt,omitempty"` + Grantor *RoleSpec `protobuf:"bytes,5,opt,name=grantor,proto3" json:"grantor,omitempty"` + Behavior DropBehavior `protobuf:"varint,6,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GrantRoleStmt) Reset() { + *x = GrantRoleStmt{} + mi := &file_pg_query_proto_msgTypes[163] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GrantRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GrantRoleStmt) ProtoMessage() {} + +func (x *GrantRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[163] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GrantRoleStmt.ProtoReflect.Descriptor instead. +func (*GrantRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{163} +} + +func (x *GrantRoleStmt) GetGrantedRoles() []*Node { + if x != nil { + return x.GrantedRoles + } + return nil +} + +func (x *GrantRoleStmt) GetGranteeRoles() []*Node { + if x != nil { + return x.GranteeRoles + } + return nil +} + +func (x *GrantRoleStmt) GetIsGrant() bool { + if x != nil { + return x.IsGrant + } + return false +} + +func (x *GrantRoleStmt) GetOpt() []*Node { + if x != nil { + return x.Opt + } + return nil +} + +func (x *GrantRoleStmt) GetGrantor() *RoleSpec { + if x != nil { + return x.Grantor + } + return nil +} + +func (x *GrantRoleStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type AlterDefaultPrivilegesStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options []*Node `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + Action *GrantStmt `protobuf:"bytes,2,opt,name=action,proto3" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterDefaultPrivilegesStmt) Reset() { + *x = AlterDefaultPrivilegesStmt{} + mi := &file_pg_query_proto_msgTypes[164] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterDefaultPrivilegesStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDefaultPrivilegesStmt) ProtoMessage() {} + +func (x *AlterDefaultPrivilegesStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[164] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDefaultPrivilegesStmt.ProtoReflect.Descriptor instead. +func (*AlterDefaultPrivilegesStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{164} +} + +func (x *AlterDefaultPrivilegesStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterDefaultPrivilegesStmt) GetAction() *GrantStmt { + if x != nil { + return x.Action + } + return nil +} + +type CopyStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Query *Node `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + Attlist []*Node `protobuf:"bytes,3,rep,name=attlist,proto3" json:"attlist,omitempty"` + IsFrom bool `protobuf:"varint,4,opt,name=is_from,proto3" json:"is_from,omitempty"` + IsProgram bool `protobuf:"varint,5,opt,name=is_program,proto3" json:"is_program,omitempty"` + Filename string `protobuf:"bytes,6,opt,name=filename,proto3" json:"filename,omitempty"` + Options []*Node `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` + WhereClause *Node `protobuf:"bytes,8,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CopyStmt) Reset() { + *x = CopyStmt{} + mi := &file_pg_query_proto_msgTypes[165] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CopyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CopyStmt) ProtoMessage() {} + +func (x *CopyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[165] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CopyStmt.ProtoReflect.Descriptor instead. +func (*CopyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{165} +} + +func (x *CopyStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *CopyStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *CopyStmt) GetAttlist() []*Node { + if x != nil { + return x.Attlist + } + return nil +} + +func (x *CopyStmt) GetIsFrom() bool { + if x != nil { + return x.IsFrom + } + return false +} + +func (x *CopyStmt) GetIsProgram() bool { + if x != nil { + return x.IsProgram + } + return false +} + +func (x *CopyStmt) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *CopyStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CopyStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +type VariableSetStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind VariableSetKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.VariableSetKind" json:"kind,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Args []*Node `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` + JumbleArgs bool `protobuf:"varint,4,opt,name=jumble_args,proto3" json:"jumble_args,omitempty"` + IsLocal bool `protobuf:"varint,5,opt,name=is_local,proto3" json:"is_local,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VariableSetStmt) Reset() { + *x = VariableSetStmt{} + mi := &file_pg_query_proto_msgTypes[166] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VariableSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VariableSetStmt) ProtoMessage() {} + +func (x *VariableSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[166] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VariableSetStmt.ProtoReflect.Descriptor instead. +func (*VariableSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{166} +} + +func (x *VariableSetStmt) GetKind() VariableSetKind { + if x != nil { + return x.Kind + } + return VariableSetKind_VARIABLE_SET_KIND_UNDEFINED +} + +func (x *VariableSetStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *VariableSetStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *VariableSetStmt) GetJumbleArgs() bool { + if x != nil { + return x.JumbleArgs + } + return false +} + +func (x *VariableSetStmt) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +func (x *VariableSetStmt) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type VariableShowStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VariableShowStmt) Reset() { + *x = VariableShowStmt{} + mi := &file_pg_query_proto_msgTypes[167] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VariableShowStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VariableShowStmt) ProtoMessage() {} + +func (x *VariableShowStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[167] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VariableShowStmt.ProtoReflect.Descriptor instead. +func (*VariableShowStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{167} +} + +func (x *VariableShowStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type CreateStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + TableElts []*Node `protobuf:"bytes,2,rep,name=table_elts,json=tableElts,proto3" json:"table_elts,omitempty"` + InhRelations []*Node `protobuf:"bytes,3,rep,name=inh_relations,json=inhRelations,proto3" json:"inh_relations,omitempty"` + Partbound *PartitionBoundSpec `protobuf:"bytes,4,opt,name=partbound,proto3" json:"partbound,omitempty"` + Partspec *PartitionSpec `protobuf:"bytes,5,opt,name=partspec,proto3" json:"partspec,omitempty"` + OfTypename *TypeName `protobuf:"bytes,6,opt,name=of_typename,json=ofTypename,proto3" json:"of_typename,omitempty"` + Constraints []*Node `protobuf:"bytes,7,rep,name=constraints,proto3" json:"constraints,omitempty"` + Nnconstraints []*Node `protobuf:"bytes,8,rep,name=nnconstraints,proto3" json:"nnconstraints,omitempty"` + Options []*Node `protobuf:"bytes,9,rep,name=options,proto3" json:"options,omitempty"` + Oncommit OnCommitAction `protobuf:"varint,10,opt,name=oncommit,proto3,enum=pg_query.OnCommitAction" json:"oncommit,omitempty"` + Tablespacename string `protobuf:"bytes,11,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + AccessMethod string `protobuf:"bytes,12,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + IfNotExists bool `protobuf:"varint,13,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateStmt) Reset() { + *x = CreateStmt{} + mi := &file_pg_query_proto_msgTypes[168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateStmt) ProtoMessage() {} + +func (x *CreateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[168] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateStmt.ProtoReflect.Descriptor instead. +func (*CreateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{168} +} + +func (x *CreateStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *CreateStmt) GetTableElts() []*Node { + if x != nil { + return x.TableElts + } + return nil +} + +func (x *CreateStmt) GetInhRelations() []*Node { + if x != nil { + return x.InhRelations + } + return nil +} + +func (x *CreateStmt) GetPartbound() *PartitionBoundSpec { + if x != nil { + return x.Partbound + } + return nil +} + +func (x *CreateStmt) GetPartspec() *PartitionSpec { + if x != nil { + return x.Partspec + } + return nil +} + +func (x *CreateStmt) GetOfTypename() *TypeName { + if x != nil { + return x.OfTypename + } + return nil +} + +func (x *CreateStmt) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +func (x *CreateStmt) GetNnconstraints() []*Node { + if x != nil { + return x.Nnconstraints + } + return nil +} + +func (x *CreateStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreateStmt) GetOncommit() OnCommitAction { + if x != nil { + return x.Oncommit + } + return OnCommitAction_ON_COMMIT_ACTION_UNDEFINED +} + +func (x *CreateStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *CreateStmt) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *CreateStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type Constraint struct { + state protoimpl.MessageState `protogen:"open.v1"` + Contype ConstrType `protobuf:"varint,1,opt,name=contype,proto3,enum=pg_query.ConstrType" json:"contype,omitempty"` + Conname string `protobuf:"bytes,2,opt,name=conname,proto3" json:"conname,omitempty"` + Deferrable bool `protobuf:"varint,3,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,4,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + IsEnforced bool `protobuf:"varint,5,opt,name=is_enforced,proto3" json:"is_enforced,omitempty"` + SkipValidation bool `protobuf:"varint,6,opt,name=skip_validation,proto3" json:"skip_validation,omitempty"` + InitiallyValid bool `protobuf:"varint,7,opt,name=initially_valid,proto3" json:"initially_valid,omitempty"` + IsNoInherit bool `protobuf:"varint,8,opt,name=is_no_inherit,proto3" json:"is_no_inherit,omitempty"` + RawExpr *Node `protobuf:"bytes,9,opt,name=raw_expr,proto3" json:"raw_expr,omitempty"` + CookedExpr string `protobuf:"bytes,10,opt,name=cooked_expr,proto3" json:"cooked_expr,omitempty"` + GeneratedWhen string `protobuf:"bytes,11,opt,name=generated_when,proto3" json:"generated_when,omitempty"` + GeneratedKind string `protobuf:"bytes,12,opt,name=generated_kind,proto3" json:"generated_kind,omitempty"` + NullsNotDistinct bool `protobuf:"varint,13,opt,name=nulls_not_distinct,proto3" json:"nulls_not_distinct,omitempty"` + Keys []*Node `protobuf:"bytes,14,rep,name=keys,proto3" json:"keys,omitempty"` + WithoutOverlaps bool `protobuf:"varint,15,opt,name=without_overlaps,proto3" json:"without_overlaps,omitempty"` + Including []*Node `protobuf:"bytes,16,rep,name=including,proto3" json:"including,omitempty"` + Exclusions []*Node `protobuf:"bytes,17,rep,name=exclusions,proto3" json:"exclusions,omitempty"` + Options []*Node `protobuf:"bytes,18,rep,name=options,proto3" json:"options,omitempty"` + Indexname string `protobuf:"bytes,19,opt,name=indexname,proto3" json:"indexname,omitempty"` + Indexspace string `protobuf:"bytes,20,opt,name=indexspace,proto3" json:"indexspace,omitempty"` + ResetDefaultTblspc bool `protobuf:"varint,21,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,omitempty"` + AccessMethod string `protobuf:"bytes,22,opt,name=access_method,proto3" json:"access_method,omitempty"` + WhereClause *Node `protobuf:"bytes,23,opt,name=where_clause,proto3" json:"where_clause,omitempty"` + Pktable *RangeVar `protobuf:"bytes,24,opt,name=pktable,proto3" json:"pktable,omitempty"` + FkAttrs []*Node `protobuf:"bytes,25,rep,name=fk_attrs,proto3" json:"fk_attrs,omitempty"` + PkAttrs []*Node `protobuf:"bytes,26,rep,name=pk_attrs,proto3" json:"pk_attrs,omitempty"` + FkWithPeriod bool `protobuf:"varint,27,opt,name=fk_with_period,proto3" json:"fk_with_period,omitempty"` + PkWithPeriod bool `protobuf:"varint,28,opt,name=pk_with_period,proto3" json:"pk_with_period,omitempty"` + FkMatchtype string `protobuf:"bytes,29,opt,name=fk_matchtype,proto3" json:"fk_matchtype,omitempty"` + FkUpdAction string `protobuf:"bytes,30,opt,name=fk_upd_action,proto3" json:"fk_upd_action,omitempty"` + FkDelAction string `protobuf:"bytes,31,opt,name=fk_del_action,proto3" json:"fk_del_action,omitempty"` + FkDelSetCols []*Node `protobuf:"bytes,32,rep,name=fk_del_set_cols,proto3" json:"fk_del_set_cols,omitempty"` + OldConpfeqop []*Node `protobuf:"bytes,33,rep,name=old_conpfeqop,proto3" json:"old_conpfeqop,omitempty"` + OldPktableOid uint32 `protobuf:"varint,34,opt,name=old_pktable_oid,proto3" json:"old_pktable_oid,omitempty"` + Location int32 `protobuf:"varint,35,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Constraint) Reset() { + *x = Constraint{} + mi := &file_pg_query_proto_msgTypes[169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Constraint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Constraint) ProtoMessage() {} + +func (x *Constraint) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[169] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Constraint.ProtoReflect.Descriptor instead. +func (*Constraint) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{169} +} + +func (x *Constraint) GetContype() ConstrType { + if x != nil { + return x.Contype + } + return ConstrType_CONSTR_TYPE_UNDEFINED +} + +func (x *Constraint) GetConname() string { + if x != nil { + return x.Conname + } + return "" +} + +func (x *Constraint) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *Constraint) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *Constraint) GetIsEnforced() bool { + if x != nil { + return x.IsEnforced + } + return false +} + +func (x *Constraint) GetSkipValidation() bool { + if x != nil { + return x.SkipValidation + } + return false +} + +func (x *Constraint) GetInitiallyValid() bool { + if x != nil { + return x.InitiallyValid + } + return false +} + +func (x *Constraint) GetIsNoInherit() bool { + if x != nil { + return x.IsNoInherit + } + return false +} + +func (x *Constraint) GetRawExpr() *Node { + if x != nil { + return x.RawExpr + } + return nil +} + +func (x *Constraint) GetCookedExpr() string { + if x != nil { + return x.CookedExpr + } + return "" +} + +func (x *Constraint) GetGeneratedWhen() string { + if x != nil { + return x.GeneratedWhen + } + return "" +} + +func (x *Constraint) GetGeneratedKind() string { + if x != nil { + return x.GeneratedKind + } + return "" +} + +func (x *Constraint) GetNullsNotDistinct() bool { + if x != nil { + return x.NullsNotDistinct + } + return false +} + +func (x *Constraint) GetKeys() []*Node { + if x != nil { + return x.Keys + } + return nil +} + +func (x *Constraint) GetWithoutOverlaps() bool { + if x != nil { + return x.WithoutOverlaps + } + return false +} + +func (x *Constraint) GetIncluding() []*Node { + if x != nil { + return x.Including + } + return nil +} + +func (x *Constraint) GetExclusions() []*Node { + if x != nil { + return x.Exclusions + } + return nil +} + +func (x *Constraint) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *Constraint) GetIndexname() string { + if x != nil { + return x.Indexname + } + return "" +} + +func (x *Constraint) GetIndexspace() string { + if x != nil { + return x.Indexspace + } + return "" +} + +func (x *Constraint) GetResetDefaultTblspc() bool { + if x != nil { + return x.ResetDefaultTblspc + } + return false +} + +func (x *Constraint) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *Constraint) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *Constraint) GetPktable() *RangeVar { + if x != nil { + return x.Pktable + } + return nil +} + +func (x *Constraint) GetFkAttrs() []*Node { + if x != nil { + return x.FkAttrs + } + return nil +} + +func (x *Constraint) GetPkAttrs() []*Node { + if x != nil { + return x.PkAttrs + } + return nil +} + +func (x *Constraint) GetFkWithPeriod() bool { + if x != nil { + return x.FkWithPeriod + } + return false +} + +func (x *Constraint) GetPkWithPeriod() bool { + if x != nil { + return x.PkWithPeriod + } + return false +} + +func (x *Constraint) GetFkMatchtype() string { + if x != nil { + return x.FkMatchtype + } + return "" +} + +func (x *Constraint) GetFkUpdAction() string { + if x != nil { + return x.FkUpdAction + } + return "" +} + +func (x *Constraint) GetFkDelAction() string { + if x != nil { + return x.FkDelAction + } + return "" +} + +func (x *Constraint) GetFkDelSetCols() []*Node { + if x != nil { + return x.FkDelSetCols + } + return nil +} + +func (x *Constraint) GetOldConpfeqop() []*Node { + if x != nil { + return x.OldConpfeqop + } + return nil +} + +func (x *Constraint) GetOldPktableOid() uint32 { + if x != nil { + return x.OldPktableOid + } + return 0 +} + +func (x *Constraint) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CreateTableSpaceStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tablespacename string `protobuf:"bytes,1,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + Owner *RoleSpec `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"` + Location string `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateTableSpaceStmt) Reset() { + *x = CreateTableSpaceStmt{} + mi := &file_pg_query_proto_msgTypes[170] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTableSpaceStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTableSpaceStmt) ProtoMessage() {} + +func (x *CreateTableSpaceStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[170] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTableSpaceStmt.ProtoReflect.Descriptor instead. +func (*CreateTableSpaceStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{170} +} + +func (x *CreateTableSpaceStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *CreateTableSpaceStmt) GetOwner() *RoleSpec { + if x != nil { + return x.Owner + } + return nil +} + +func (x *CreateTableSpaceStmt) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *CreateTableSpaceStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropTableSpaceStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tablespacename string `protobuf:"bytes,1,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropTableSpaceStmt) Reset() { + *x = DropTableSpaceStmt{} + mi := &file_pg_query_proto_msgTypes[171] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropTableSpaceStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropTableSpaceStmt) ProtoMessage() {} + +func (x *DropTableSpaceStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[171] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropTableSpaceStmt.ProtoReflect.Descriptor instead. +func (*DropTableSpaceStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{171} +} + +func (x *DropTableSpaceStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *DropTableSpaceStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterTableSpaceOptionsStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tablespacename string `protobuf:"bytes,1,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + IsReset bool `protobuf:"varint,3,opt,name=is_reset,json=isReset,proto3" json:"is_reset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTableSpaceOptionsStmt) Reset() { + *x = AlterTableSpaceOptionsStmt{} + mi := &file_pg_query_proto_msgTypes[172] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTableSpaceOptionsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableSpaceOptionsStmt) ProtoMessage() {} + +func (x *AlterTableSpaceOptionsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[172] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableSpaceOptionsStmt.ProtoReflect.Descriptor instead. +func (*AlterTableSpaceOptionsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{172} +} + +func (x *AlterTableSpaceOptionsStmt) GetTablespacename() string { + if x != nil { + return x.Tablespacename + } + return "" +} + +func (x *AlterTableSpaceOptionsStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterTableSpaceOptionsStmt) GetIsReset() bool { + if x != nil { + return x.IsReset + } + return false +} + +type AlterTableMoveAllStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + OrigTablespacename string `protobuf:"bytes,1,opt,name=orig_tablespacename,proto3" json:"orig_tablespacename,omitempty"` + Objtype ObjectType `protobuf:"varint,2,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Roles []*Node `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` + NewTablespacename string `protobuf:"bytes,4,opt,name=new_tablespacename,proto3" json:"new_tablespacename,omitempty"` + Nowait bool `protobuf:"varint,5,opt,name=nowait,proto3" json:"nowait,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTableMoveAllStmt) Reset() { + *x = AlterTableMoveAllStmt{} + mi := &file_pg_query_proto_msgTypes[173] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTableMoveAllStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTableMoveAllStmt) ProtoMessage() {} + +func (x *AlterTableMoveAllStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[173] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTableMoveAllStmt.ProtoReflect.Descriptor instead. +func (*AlterTableMoveAllStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{173} +} + +func (x *AlterTableMoveAllStmt) GetOrigTablespacename() string { + if x != nil { + return x.OrigTablespacename + } + return "" +} + +func (x *AlterTableMoveAllStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterTableMoveAllStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *AlterTableMoveAllStmt) GetNewTablespacename() string { + if x != nil { + return x.NewTablespacename + } + return "" +} + +func (x *AlterTableMoveAllStmt) GetNowait() bool { + if x != nil { + return x.Nowait + } + return false +} + +type CreateExtensionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Extname string `protobuf:"bytes,1,opt,name=extname,proto3" json:"extname,omitempty"` + IfNotExists bool `protobuf:"varint,2,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateExtensionStmt) Reset() { + *x = CreateExtensionStmt{} + mi := &file_pg_query_proto_msgTypes[174] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateExtensionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateExtensionStmt) ProtoMessage() {} + +func (x *CreateExtensionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[174] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateExtensionStmt.ProtoReflect.Descriptor instead. +func (*CreateExtensionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{174} +} + +func (x *CreateExtensionStmt) GetExtname() string { + if x != nil { + return x.Extname + } + return "" +} + +func (x *CreateExtensionStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *CreateExtensionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterExtensionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Extname string `protobuf:"bytes,1,opt,name=extname,proto3" json:"extname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterExtensionStmt) Reset() { + *x = AlterExtensionStmt{} + mi := &file_pg_query_proto_msgTypes[175] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterExtensionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterExtensionStmt) ProtoMessage() {} + +func (x *AlterExtensionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[175] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterExtensionStmt.ProtoReflect.Descriptor instead. +func (*AlterExtensionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{175} +} + +func (x *AlterExtensionStmt) GetExtname() string { + if x != nil { + return x.Extname + } + return "" +} + +func (x *AlterExtensionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterExtensionContentsStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Extname string `protobuf:"bytes,1,opt,name=extname,proto3" json:"extname,omitempty"` + Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"` + Objtype ObjectType `protobuf:"varint,3,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Object *Node `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterExtensionContentsStmt) Reset() { + *x = AlterExtensionContentsStmt{} + mi := &file_pg_query_proto_msgTypes[176] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterExtensionContentsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterExtensionContentsStmt) ProtoMessage() {} + +func (x *AlterExtensionContentsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[176] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterExtensionContentsStmt.ProtoReflect.Descriptor instead. +func (*AlterExtensionContentsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{176} +} + +func (x *AlterExtensionContentsStmt) GetExtname() string { + if x != nil { + return x.Extname + } + return "" +} + +func (x *AlterExtensionContentsStmt) GetAction() int32 { + if x != nil { + return x.Action + } + return 0 +} + +func (x *AlterExtensionContentsStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterExtensionContentsStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +type CreateFdwStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fdwname string `protobuf:"bytes,1,opt,name=fdwname,proto3" json:"fdwname,omitempty"` + FuncOptions []*Node `protobuf:"bytes,2,rep,name=func_options,proto3" json:"func_options,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateFdwStmt) Reset() { + *x = CreateFdwStmt{} + mi := &file_pg_query_proto_msgTypes[177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateFdwStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFdwStmt) ProtoMessage() {} + +func (x *CreateFdwStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[177] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFdwStmt.ProtoReflect.Descriptor instead. +func (*CreateFdwStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{177} +} + +func (x *CreateFdwStmt) GetFdwname() string { + if x != nil { + return x.Fdwname + } + return "" +} + +func (x *CreateFdwStmt) GetFuncOptions() []*Node { + if x != nil { + return x.FuncOptions + } + return nil +} + +func (x *CreateFdwStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterFdwStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Fdwname string `protobuf:"bytes,1,opt,name=fdwname,proto3" json:"fdwname,omitempty"` + FuncOptions []*Node `protobuf:"bytes,2,rep,name=func_options,proto3" json:"func_options,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterFdwStmt) Reset() { + *x = AlterFdwStmt{} + mi := &file_pg_query_proto_msgTypes[178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterFdwStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterFdwStmt) ProtoMessage() {} + +func (x *AlterFdwStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[178] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterFdwStmt.ProtoReflect.Descriptor instead. +func (*AlterFdwStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{178} +} + +func (x *AlterFdwStmt) GetFdwname() string { + if x != nil { + return x.Fdwname + } + return "" +} + +func (x *AlterFdwStmt) GetFuncOptions() []*Node { + if x != nil { + return x.FuncOptions + } + return nil +} + +func (x *AlterFdwStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreateForeignServerStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Servername string `protobuf:"bytes,1,opt,name=servername,proto3" json:"servername,omitempty"` + Servertype string `protobuf:"bytes,2,opt,name=servertype,proto3" json:"servertype,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + Fdwname string `protobuf:"bytes,4,opt,name=fdwname,proto3" json:"fdwname,omitempty"` + IfNotExists bool `protobuf:"varint,5,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Options []*Node `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateForeignServerStmt) Reset() { + *x = CreateForeignServerStmt{} + mi := &file_pg_query_proto_msgTypes[179] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateForeignServerStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateForeignServerStmt) ProtoMessage() {} + +func (x *CreateForeignServerStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[179] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateForeignServerStmt.ProtoReflect.Descriptor instead. +func (*CreateForeignServerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{179} +} + +func (x *CreateForeignServerStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *CreateForeignServerStmt) GetServertype() string { + if x != nil { + return x.Servertype + } + return "" +} + +func (x *CreateForeignServerStmt) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *CreateForeignServerStmt) GetFdwname() string { + if x != nil { + return x.Fdwname + } + return "" +} + +func (x *CreateForeignServerStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *CreateForeignServerStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterForeignServerStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Servername string `protobuf:"bytes,1,opt,name=servername,proto3" json:"servername,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + HasVersion bool `protobuf:"varint,4,opt,name=has_version,proto3" json:"has_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterForeignServerStmt) Reset() { + *x = AlterForeignServerStmt{} + mi := &file_pg_query_proto_msgTypes[180] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterForeignServerStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterForeignServerStmt) ProtoMessage() {} + +func (x *AlterForeignServerStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[180] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterForeignServerStmt.ProtoReflect.Descriptor instead. +func (*AlterForeignServerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{180} +} + +func (x *AlterForeignServerStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *AlterForeignServerStmt) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *AlterForeignServerStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterForeignServerStmt) GetHasVersion() bool { + if x != nil { + return x.HasVersion + } + return false +} + +type CreateForeignTableStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + BaseStmt *CreateStmt `protobuf:"bytes,1,opt,name=base_stmt,json=base,proto3" json:"base_stmt,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateForeignTableStmt) Reset() { + *x = CreateForeignTableStmt{} + mi := &file_pg_query_proto_msgTypes[181] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateForeignTableStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateForeignTableStmt) ProtoMessage() {} + +func (x *CreateForeignTableStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[181] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateForeignTableStmt.ProtoReflect.Descriptor instead. +func (*CreateForeignTableStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{181} +} + +func (x *CreateForeignTableStmt) GetBaseStmt() *CreateStmt { + if x != nil { + return x.BaseStmt + } + return nil +} + +func (x *CreateForeignTableStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *CreateForeignTableStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreateUserMappingStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + User *RoleSpec `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + IfNotExists bool `protobuf:"varint,3,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateUserMappingStmt) Reset() { + *x = CreateUserMappingStmt{} + mi := &file_pg_query_proto_msgTypes[182] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateUserMappingStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateUserMappingStmt) ProtoMessage() {} + +func (x *CreateUserMappingStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[182] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateUserMappingStmt.ProtoReflect.Descriptor instead. +func (*CreateUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{182} +} + +func (x *CreateUserMappingStmt) GetUser() *RoleSpec { + if x != nil { + return x.User + } + return nil +} + +func (x *CreateUserMappingStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *CreateUserMappingStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *CreateUserMappingStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterUserMappingStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + User *RoleSpec `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterUserMappingStmt) Reset() { + *x = AlterUserMappingStmt{} + mi := &file_pg_query_proto_msgTypes[183] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterUserMappingStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterUserMappingStmt) ProtoMessage() {} + +func (x *AlterUserMappingStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[183] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterUserMappingStmt.ProtoReflect.Descriptor instead. +func (*AlterUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{183} +} + +func (x *AlterUserMappingStmt) GetUser() *RoleSpec { + if x != nil { + return x.User + } + return nil +} + +func (x *AlterUserMappingStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *AlterUserMappingStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropUserMappingStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + User *RoleSpec `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Servername string `protobuf:"bytes,2,opt,name=servername,proto3" json:"servername,omitempty"` + MissingOk bool `protobuf:"varint,3,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropUserMappingStmt) Reset() { + *x = DropUserMappingStmt{} + mi := &file_pg_query_proto_msgTypes[184] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropUserMappingStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropUserMappingStmt) ProtoMessage() {} + +func (x *DropUserMappingStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[184] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropUserMappingStmt.ProtoReflect.Descriptor instead. +func (*DropUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{184} +} + +func (x *DropUserMappingStmt) GetUser() *RoleSpec { + if x != nil { + return x.User + } + return nil +} + +func (x *DropUserMappingStmt) GetServername() string { + if x != nil { + return x.Servername + } + return "" +} + +func (x *DropUserMappingStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type ImportForeignSchemaStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerName string `protobuf:"bytes,1,opt,name=server_name,proto3" json:"server_name,omitempty"` + RemoteSchema string `protobuf:"bytes,2,opt,name=remote_schema,proto3" json:"remote_schema,omitempty"` + LocalSchema string `protobuf:"bytes,3,opt,name=local_schema,proto3" json:"local_schema,omitempty"` + ListType ImportForeignSchemaType `protobuf:"varint,4,opt,name=list_type,proto3,enum=pg_query.ImportForeignSchemaType" json:"list_type,omitempty"` + TableList []*Node `protobuf:"bytes,5,rep,name=table_list,proto3" json:"table_list,omitempty"` + Options []*Node `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImportForeignSchemaStmt) Reset() { + *x = ImportForeignSchemaStmt{} + mi := &file_pg_query_proto_msgTypes[185] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImportForeignSchemaStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportForeignSchemaStmt) ProtoMessage() {} + +func (x *ImportForeignSchemaStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[185] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportForeignSchemaStmt.ProtoReflect.Descriptor instead. +func (*ImportForeignSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{185} +} + +func (x *ImportForeignSchemaStmt) GetServerName() string { + if x != nil { + return x.ServerName + } + return "" +} + +func (x *ImportForeignSchemaStmt) GetRemoteSchema() string { + if x != nil { + return x.RemoteSchema + } + return "" +} + +func (x *ImportForeignSchemaStmt) GetLocalSchema() string { + if x != nil { + return x.LocalSchema + } + return "" +} + +func (x *ImportForeignSchemaStmt) GetListType() ImportForeignSchemaType { + if x != nil { + return x.ListType + } + return ImportForeignSchemaType_IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED +} + +func (x *ImportForeignSchemaStmt) GetTableList() []*Node { + if x != nil { + return x.TableList + } + return nil +} + +func (x *ImportForeignSchemaStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreatePolicyStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + PolicyName string `protobuf:"bytes,1,opt,name=policy_name,proto3" json:"policy_name,omitempty"` + Table *RangeVar `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + CmdName string `protobuf:"bytes,3,opt,name=cmd_name,proto3" json:"cmd_name,omitempty"` + Permissive bool `protobuf:"varint,4,opt,name=permissive,proto3" json:"permissive,omitempty"` + Roles []*Node `protobuf:"bytes,5,rep,name=roles,proto3" json:"roles,omitempty"` + Qual *Node `protobuf:"bytes,6,opt,name=qual,proto3" json:"qual,omitempty"` + WithCheck *Node `protobuf:"bytes,7,opt,name=with_check,proto3" json:"with_check,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreatePolicyStmt) Reset() { + *x = CreatePolicyStmt{} + mi := &file_pg_query_proto_msgTypes[186] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreatePolicyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePolicyStmt) ProtoMessage() {} + +func (x *CreatePolicyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[186] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePolicyStmt.ProtoReflect.Descriptor instead. +func (*CreatePolicyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{186} +} + +func (x *CreatePolicyStmt) GetPolicyName() string { + if x != nil { + return x.PolicyName + } + return "" +} + +func (x *CreatePolicyStmt) GetTable() *RangeVar { + if x != nil { + return x.Table + } + return nil +} + +func (x *CreatePolicyStmt) GetCmdName() string { + if x != nil { + return x.CmdName + } + return "" +} + +func (x *CreatePolicyStmt) GetPermissive() bool { + if x != nil { + return x.Permissive + } + return false +} + +func (x *CreatePolicyStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *CreatePolicyStmt) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *CreatePolicyStmt) GetWithCheck() *Node { + if x != nil { + return x.WithCheck + } + return nil +} + +type AlterPolicyStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + PolicyName string `protobuf:"bytes,1,opt,name=policy_name,proto3" json:"policy_name,omitempty"` + Table *RangeVar `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + Roles []*Node `protobuf:"bytes,3,rep,name=roles,proto3" json:"roles,omitempty"` + Qual *Node `protobuf:"bytes,4,opt,name=qual,proto3" json:"qual,omitempty"` + WithCheck *Node `protobuf:"bytes,5,opt,name=with_check,proto3" json:"with_check,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterPolicyStmt) Reset() { + *x = AlterPolicyStmt{} + mi := &file_pg_query_proto_msgTypes[187] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterPolicyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterPolicyStmt) ProtoMessage() {} + +func (x *AlterPolicyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[187] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterPolicyStmt.ProtoReflect.Descriptor instead. +func (*AlterPolicyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{187} +} + +func (x *AlterPolicyStmt) GetPolicyName() string { + if x != nil { + return x.PolicyName + } + return "" +} + +func (x *AlterPolicyStmt) GetTable() *RangeVar { + if x != nil { + return x.Table + } + return nil +} + +func (x *AlterPolicyStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *AlterPolicyStmt) GetQual() *Node { + if x != nil { + return x.Qual + } + return nil +} + +func (x *AlterPolicyStmt) GetWithCheck() *Node { + if x != nil { + return x.WithCheck + } + return nil +} + +type CreateAmStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Amname string `protobuf:"bytes,1,opt,name=amname,proto3" json:"amname,omitempty"` + HandlerName []*Node `protobuf:"bytes,2,rep,name=handler_name,proto3" json:"handler_name,omitempty"` + Amtype string `protobuf:"bytes,3,opt,name=amtype,proto3" json:"amtype,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateAmStmt) Reset() { + *x = CreateAmStmt{} + mi := &file_pg_query_proto_msgTypes[188] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateAmStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAmStmt) ProtoMessage() {} + +func (x *CreateAmStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[188] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAmStmt.ProtoReflect.Descriptor instead. +func (*CreateAmStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{188} +} + +func (x *CreateAmStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +func (x *CreateAmStmt) GetHandlerName() []*Node { + if x != nil { + return x.HandlerName + } + return nil +} + +func (x *CreateAmStmt) GetAmtype() string { + if x != nil { + return x.Amtype + } + return "" +} + +type CreateTrigStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Replace bool `protobuf:"varint,1,opt,name=replace,proto3" json:"replace,omitempty"` + Isconstraint bool `protobuf:"varint,2,opt,name=isconstraint,proto3" json:"isconstraint,omitempty"` + Trigname string `protobuf:"bytes,3,opt,name=trigname,proto3" json:"trigname,omitempty"` + Relation *RangeVar `protobuf:"bytes,4,opt,name=relation,proto3" json:"relation,omitempty"` + Funcname []*Node `protobuf:"bytes,5,rep,name=funcname,proto3" json:"funcname,omitempty"` + Args []*Node `protobuf:"bytes,6,rep,name=args,proto3" json:"args,omitempty"` + Row bool `protobuf:"varint,7,opt,name=row,proto3" json:"row,omitempty"` + Timing int32 `protobuf:"varint,8,opt,name=timing,proto3" json:"timing,omitempty"` + Events int32 `protobuf:"varint,9,opt,name=events,proto3" json:"events,omitempty"` + Columns []*Node `protobuf:"bytes,10,rep,name=columns,proto3" json:"columns,omitempty"` + WhenClause *Node `protobuf:"bytes,11,opt,name=when_clause,json=whenClause,proto3" json:"when_clause,omitempty"` + TransitionRels []*Node `protobuf:"bytes,12,rep,name=transition_rels,json=transitionRels,proto3" json:"transition_rels,omitempty"` + Deferrable bool `protobuf:"varint,13,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,14,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + Constrrel *RangeVar `protobuf:"bytes,15,opt,name=constrrel,proto3" json:"constrrel,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateTrigStmt) Reset() { + *x = CreateTrigStmt{} + mi := &file_pg_query_proto_msgTypes[189] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTrigStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTrigStmt) ProtoMessage() {} + +func (x *CreateTrigStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[189] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTrigStmt.ProtoReflect.Descriptor instead. +func (*CreateTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{189} +} + +func (x *CreateTrigStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreateTrigStmt) GetIsconstraint() bool { + if x != nil { + return x.Isconstraint + } + return false +} + +func (x *CreateTrigStmt) GetTrigname() string { + if x != nil { + return x.Trigname + } + return "" +} + +func (x *CreateTrigStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *CreateTrigStmt) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +func (x *CreateTrigStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *CreateTrigStmt) GetRow() bool { + if x != nil { + return x.Row + } + return false +} + +func (x *CreateTrigStmt) GetTiming() int32 { + if x != nil { + return x.Timing + } + return 0 +} + +func (x *CreateTrigStmt) GetEvents() int32 { + if x != nil { + return x.Events + } + return 0 +} + +func (x *CreateTrigStmt) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +func (x *CreateTrigStmt) GetWhenClause() *Node { + if x != nil { + return x.WhenClause + } + return nil +} + +func (x *CreateTrigStmt) GetTransitionRels() []*Node { + if x != nil { + return x.TransitionRels + } + return nil +} + +func (x *CreateTrigStmt) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *CreateTrigStmt) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *CreateTrigStmt) GetConstrrel() *RangeVar { + if x != nil { + return x.Constrrel + } + return nil +} + +type CreateEventTrigStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Trigname string `protobuf:"bytes,1,opt,name=trigname,proto3" json:"trigname,omitempty"` + Eventname string `protobuf:"bytes,2,opt,name=eventname,proto3" json:"eventname,omitempty"` + Whenclause []*Node `protobuf:"bytes,3,rep,name=whenclause,proto3" json:"whenclause,omitempty"` + Funcname []*Node `protobuf:"bytes,4,rep,name=funcname,proto3" json:"funcname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateEventTrigStmt) Reset() { + *x = CreateEventTrigStmt{} + mi := &file_pg_query_proto_msgTypes[190] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateEventTrigStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateEventTrigStmt) ProtoMessage() {} + +func (x *CreateEventTrigStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[190] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateEventTrigStmt.ProtoReflect.Descriptor instead. +func (*CreateEventTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{190} +} + +func (x *CreateEventTrigStmt) GetTrigname() string { + if x != nil { + return x.Trigname + } + return "" +} + +func (x *CreateEventTrigStmt) GetEventname() string { + if x != nil { + return x.Eventname + } + return "" +} + +func (x *CreateEventTrigStmt) GetWhenclause() []*Node { + if x != nil { + return x.Whenclause + } + return nil +} + +func (x *CreateEventTrigStmt) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +type AlterEventTrigStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Trigname string `protobuf:"bytes,1,opt,name=trigname,proto3" json:"trigname,omitempty"` + Tgenabled string `protobuf:"bytes,2,opt,name=tgenabled,proto3" json:"tgenabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterEventTrigStmt) Reset() { + *x = AlterEventTrigStmt{} + mi := &file_pg_query_proto_msgTypes[191] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterEventTrigStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterEventTrigStmt) ProtoMessage() {} + +func (x *AlterEventTrigStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[191] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterEventTrigStmt.ProtoReflect.Descriptor instead. +func (*AlterEventTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{191} +} + +func (x *AlterEventTrigStmt) GetTrigname() string { + if x != nil { + return x.Trigname + } + return "" +} + +func (x *AlterEventTrigStmt) GetTgenabled() string { + if x != nil { + return x.Tgenabled + } + return "" +} + +type CreatePLangStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Replace bool `protobuf:"varint,1,opt,name=replace,proto3" json:"replace,omitempty"` + Plname string `protobuf:"bytes,2,opt,name=plname,proto3" json:"plname,omitempty"` + Plhandler []*Node `protobuf:"bytes,3,rep,name=plhandler,proto3" json:"plhandler,omitempty"` + Plinline []*Node `protobuf:"bytes,4,rep,name=plinline,proto3" json:"plinline,omitempty"` + Plvalidator []*Node `protobuf:"bytes,5,rep,name=plvalidator,proto3" json:"plvalidator,omitempty"` + Pltrusted bool `protobuf:"varint,6,opt,name=pltrusted,proto3" json:"pltrusted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreatePLangStmt) Reset() { + *x = CreatePLangStmt{} + mi := &file_pg_query_proto_msgTypes[192] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreatePLangStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePLangStmt) ProtoMessage() {} + +func (x *CreatePLangStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[192] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePLangStmt.ProtoReflect.Descriptor instead. +func (*CreatePLangStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{192} +} + +func (x *CreatePLangStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreatePLangStmt) GetPlname() string { + if x != nil { + return x.Plname + } + return "" +} + +func (x *CreatePLangStmt) GetPlhandler() []*Node { + if x != nil { + return x.Plhandler + } + return nil +} + +func (x *CreatePLangStmt) GetPlinline() []*Node { + if x != nil { + return x.Plinline + } + return nil +} + +func (x *CreatePLangStmt) GetPlvalidator() []*Node { + if x != nil { + return x.Plvalidator + } + return nil +} + +func (x *CreatePLangStmt) GetPltrusted() bool { + if x != nil { + return x.Pltrusted + } + return false +} + +type CreateRoleStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + StmtType RoleStmtType `protobuf:"varint,1,opt,name=stmt_type,proto3,enum=pg_query.RoleStmtType" json:"stmt_type,omitempty"` + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateRoleStmt) Reset() { + *x = CreateRoleStmt{} + mi := &file_pg_query_proto_msgTypes[193] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRoleStmt) ProtoMessage() {} + +func (x *CreateRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[193] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateRoleStmt.ProtoReflect.Descriptor instead. +func (*CreateRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{193} +} + +func (x *CreateRoleStmt) GetStmtType() RoleStmtType { + if x != nil { + return x.StmtType + } + return RoleStmtType_ROLE_STMT_TYPE_UNDEFINED +} + +func (x *CreateRoleStmt) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *CreateRoleStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterRoleStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Role *RoleSpec `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + Action int32 `protobuf:"varint,3,opt,name=action,proto3" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterRoleStmt) Reset() { + *x = AlterRoleStmt{} + mi := &file_pg_query_proto_msgTypes[194] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterRoleStmt) ProtoMessage() {} + +func (x *AlterRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[194] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterRoleStmt.ProtoReflect.Descriptor instead. +func (*AlterRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{194} +} + +func (x *AlterRoleStmt) GetRole() *RoleSpec { + if x != nil { + return x.Role + } + return nil +} + +func (x *AlterRoleStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterRoleStmt) GetAction() int32 { + if x != nil { + return x.Action + } + return 0 +} + +type AlterRoleSetStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Role *RoleSpec `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"` + Database string `protobuf:"bytes,2,opt,name=database,proto3" json:"database,omitempty"` + Setstmt *VariableSetStmt `protobuf:"bytes,3,opt,name=setstmt,proto3" json:"setstmt,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterRoleSetStmt) Reset() { + *x = AlterRoleSetStmt{} + mi := &file_pg_query_proto_msgTypes[195] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterRoleSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterRoleSetStmt) ProtoMessage() {} + +func (x *AlterRoleSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[195] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterRoleSetStmt.ProtoReflect.Descriptor instead. +func (*AlterRoleSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{195} +} + +func (x *AlterRoleSetStmt) GetRole() *RoleSpec { + if x != nil { + return x.Role + } + return nil +} + +func (x *AlterRoleSetStmt) GetDatabase() string { + if x != nil { + return x.Database + } + return "" +} + +func (x *AlterRoleSetStmt) GetSetstmt() *VariableSetStmt { + if x != nil { + return x.Setstmt + } + return nil +} + +type DropRoleStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Roles []*Node `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropRoleStmt) Reset() { + *x = DropRoleStmt{} + mi := &file_pg_query_proto_msgTypes[196] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropRoleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropRoleStmt) ProtoMessage() {} + +func (x *DropRoleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[196] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropRoleStmt.ProtoReflect.Descriptor instead. +func (*DropRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{196} +} + +func (x *DropRoleStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *DropRoleStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type CreateSeqStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Sequence *RangeVar `protobuf:"bytes,1,opt,name=sequence,proto3" json:"sequence,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + OwnerId uint32 `protobuf:"varint,3,opt,name=owner_id,json=ownerId,proto3" json:"owner_id,omitempty"` + ForIdentity bool `protobuf:"varint,4,opt,name=for_identity,proto3" json:"for_identity,omitempty"` + IfNotExists bool `protobuf:"varint,5,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateSeqStmt) Reset() { + *x = CreateSeqStmt{} + mi := &file_pg_query_proto_msgTypes[197] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateSeqStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSeqStmt) ProtoMessage() {} + +func (x *CreateSeqStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[197] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSeqStmt.ProtoReflect.Descriptor instead. +func (*CreateSeqStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{197} +} + +func (x *CreateSeqStmt) GetSequence() *RangeVar { + if x != nil { + return x.Sequence + } + return nil +} + +func (x *CreateSeqStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreateSeqStmt) GetOwnerId() uint32 { + if x != nil { + return x.OwnerId + } + return 0 +} + +func (x *CreateSeqStmt) GetForIdentity() bool { + if x != nil { + return x.ForIdentity + } + return false +} + +func (x *CreateSeqStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type AlterSeqStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Sequence *RangeVar `protobuf:"bytes,1,opt,name=sequence,proto3" json:"sequence,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + ForIdentity bool `protobuf:"varint,3,opt,name=for_identity,proto3" json:"for_identity,omitempty"` + MissingOk bool `protobuf:"varint,4,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterSeqStmt) Reset() { + *x = AlterSeqStmt{} + mi := &file_pg_query_proto_msgTypes[198] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterSeqStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterSeqStmt) ProtoMessage() {} + +func (x *AlterSeqStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[198] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterSeqStmt.ProtoReflect.Descriptor instead. +func (*AlterSeqStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{198} +} + +func (x *AlterSeqStmt) GetSequence() *RangeVar { + if x != nil { + return x.Sequence + } + return nil +} + +func (x *AlterSeqStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterSeqStmt) GetForIdentity() bool { + if x != nil { + return x.ForIdentity + } + return false +} + +func (x *AlterSeqStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type DefineStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind ObjectType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.ObjectType" json:"kind,omitempty"` + Oldstyle bool `protobuf:"varint,2,opt,name=oldstyle,proto3" json:"oldstyle,omitempty"` + Defnames []*Node `protobuf:"bytes,3,rep,name=defnames,proto3" json:"defnames,omitempty"` + Args []*Node `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"` + Definition []*Node `protobuf:"bytes,5,rep,name=definition,proto3" json:"definition,omitempty"` + IfNotExists bool `protobuf:"varint,6,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + Replace bool `protobuf:"varint,7,opt,name=replace,proto3" json:"replace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DefineStmt) Reset() { + *x = DefineStmt{} + mi := &file_pg_query_proto_msgTypes[199] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DefineStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DefineStmt) ProtoMessage() {} + +func (x *DefineStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[199] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DefineStmt.ProtoReflect.Descriptor instead. +func (*DefineStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{199} +} + +func (x *DefineStmt) GetKind() ObjectType { + if x != nil { + return x.Kind + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *DefineStmt) GetOldstyle() bool { + if x != nil { + return x.Oldstyle + } + return false +} + +func (x *DefineStmt) GetDefnames() []*Node { + if x != nil { + return x.Defnames + } + return nil +} + +func (x *DefineStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +func (x *DefineStmt) GetDefinition() []*Node { + if x != nil { + return x.Definition + } + return nil +} + +func (x *DefineStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *DefineStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +type CreateDomainStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Domainname []*Node `protobuf:"bytes,1,rep,name=domainname,proto3" json:"domainname,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + CollClause *CollateClause `protobuf:"bytes,3,opt,name=coll_clause,json=collClause,proto3" json:"coll_clause,omitempty"` + Constraints []*Node `protobuf:"bytes,4,rep,name=constraints,proto3" json:"constraints,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateDomainStmt) Reset() { + *x = CreateDomainStmt{} + mi := &file_pg_query_proto_msgTypes[200] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateDomainStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateDomainStmt) ProtoMessage() {} + +func (x *CreateDomainStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[200] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateDomainStmt.ProtoReflect.Descriptor instead. +func (*CreateDomainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{200} +} + +func (x *CreateDomainStmt) GetDomainname() []*Node { + if x != nil { + return x.Domainname + } + return nil +} + +func (x *CreateDomainStmt) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateDomainStmt) GetCollClause() *CollateClause { + if x != nil { + return x.CollClause + } + return nil +} + +func (x *CreateDomainStmt) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +type CreateOpClassStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Opclassname []*Node `protobuf:"bytes,1,rep,name=opclassname,proto3" json:"opclassname,omitempty"` + Opfamilyname []*Node `protobuf:"bytes,2,rep,name=opfamilyname,proto3" json:"opfamilyname,omitempty"` + Amname string `protobuf:"bytes,3,opt,name=amname,proto3" json:"amname,omitempty"` + Datatype *TypeName `protobuf:"bytes,4,opt,name=datatype,proto3" json:"datatype,omitempty"` + Items []*Node `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"` + IsDefault bool `protobuf:"varint,6,opt,name=is_default,json=isDefault,proto3" json:"is_default,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateOpClassStmt) Reset() { + *x = CreateOpClassStmt{} + mi := &file_pg_query_proto_msgTypes[201] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateOpClassStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOpClassStmt) ProtoMessage() {} + +func (x *CreateOpClassStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[201] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOpClassStmt.ProtoReflect.Descriptor instead. +func (*CreateOpClassStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{201} +} + +func (x *CreateOpClassStmt) GetOpclassname() []*Node { + if x != nil { + return x.Opclassname + } + return nil +} + +func (x *CreateOpClassStmt) GetOpfamilyname() []*Node { + if x != nil { + return x.Opfamilyname + } + return nil +} + +func (x *CreateOpClassStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +func (x *CreateOpClassStmt) GetDatatype() *TypeName { + if x != nil { + return x.Datatype + } + return nil +} + +func (x *CreateOpClassStmt) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +func (x *CreateOpClassStmt) GetIsDefault() bool { + if x != nil { + return x.IsDefault + } + return false +} + +type CreateOpClassItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Itemtype int32 `protobuf:"varint,1,opt,name=itemtype,proto3" json:"itemtype,omitempty"` + Name *ObjectWithArgs `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Number int32 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"` + OrderFamily []*Node `protobuf:"bytes,4,rep,name=order_family,proto3" json:"order_family,omitempty"` + ClassArgs []*Node `protobuf:"bytes,5,rep,name=class_args,proto3" json:"class_args,omitempty"` + Storedtype *TypeName `protobuf:"bytes,6,opt,name=storedtype,proto3" json:"storedtype,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateOpClassItem) Reset() { + *x = CreateOpClassItem{} + mi := &file_pg_query_proto_msgTypes[202] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateOpClassItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOpClassItem) ProtoMessage() {} + +func (x *CreateOpClassItem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[202] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOpClassItem.ProtoReflect.Descriptor instead. +func (*CreateOpClassItem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{202} +} + +func (x *CreateOpClassItem) GetItemtype() int32 { + if x != nil { + return x.Itemtype + } + return 0 +} + +func (x *CreateOpClassItem) GetName() *ObjectWithArgs { + if x != nil { + return x.Name + } + return nil +} + +func (x *CreateOpClassItem) GetNumber() int32 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *CreateOpClassItem) GetOrderFamily() []*Node { + if x != nil { + return x.OrderFamily + } + return nil +} + +func (x *CreateOpClassItem) GetClassArgs() []*Node { + if x != nil { + return x.ClassArgs + } + return nil +} + +func (x *CreateOpClassItem) GetStoredtype() *TypeName { + if x != nil { + return x.Storedtype + } + return nil +} + +type CreateOpFamilyStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Opfamilyname []*Node `protobuf:"bytes,1,rep,name=opfamilyname,proto3" json:"opfamilyname,omitempty"` + Amname string `protobuf:"bytes,2,opt,name=amname,proto3" json:"amname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateOpFamilyStmt) Reset() { + *x = CreateOpFamilyStmt{} + mi := &file_pg_query_proto_msgTypes[203] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateOpFamilyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOpFamilyStmt) ProtoMessage() {} + +func (x *CreateOpFamilyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[203] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOpFamilyStmt.ProtoReflect.Descriptor instead. +func (*CreateOpFamilyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{203} +} + +func (x *CreateOpFamilyStmt) GetOpfamilyname() []*Node { + if x != nil { + return x.Opfamilyname + } + return nil +} + +func (x *CreateOpFamilyStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +type AlterOpFamilyStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Opfamilyname []*Node `protobuf:"bytes,1,rep,name=opfamilyname,proto3" json:"opfamilyname,omitempty"` + Amname string `protobuf:"bytes,2,opt,name=amname,proto3" json:"amname,omitempty"` + IsDrop bool `protobuf:"varint,3,opt,name=is_drop,json=isDrop,proto3" json:"is_drop,omitempty"` + Items []*Node `protobuf:"bytes,4,rep,name=items,proto3" json:"items,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterOpFamilyStmt) Reset() { + *x = AlterOpFamilyStmt{} + mi := &file_pg_query_proto_msgTypes[204] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterOpFamilyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterOpFamilyStmt) ProtoMessage() {} + +func (x *AlterOpFamilyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[204] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterOpFamilyStmt.ProtoReflect.Descriptor instead. +func (*AlterOpFamilyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{204} +} + +func (x *AlterOpFamilyStmt) GetOpfamilyname() []*Node { + if x != nil { + return x.Opfamilyname + } + return nil +} + +func (x *AlterOpFamilyStmt) GetAmname() string { + if x != nil { + return x.Amname + } + return "" +} + +func (x *AlterOpFamilyStmt) GetIsDrop() bool { + if x != nil { + return x.IsDrop + } + return false +} + +func (x *AlterOpFamilyStmt) GetItems() []*Node { + if x != nil { + return x.Items + } + return nil +} + +type DropStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Objects []*Node `protobuf:"bytes,1,rep,name=objects,proto3" json:"objects,omitempty"` + RemoveType ObjectType `protobuf:"varint,2,opt,name=remove_type,json=removeType,proto3,enum=pg_query.ObjectType" json:"remove_type,omitempty"` + Behavior DropBehavior `protobuf:"varint,3,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,4,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Concurrent bool `protobuf:"varint,5,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropStmt) Reset() { + *x = DropStmt{} + mi := &file_pg_query_proto_msgTypes[205] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropStmt) ProtoMessage() {} + +func (x *DropStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[205] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropStmt.ProtoReflect.Descriptor instead. +func (*DropStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{205} +} + +func (x *DropStmt) GetObjects() []*Node { + if x != nil { + return x.Objects + } + return nil +} + +func (x *DropStmt) GetRemoveType() ObjectType { + if x != nil { + return x.RemoveType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *DropStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *DropStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *DropStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +type TruncateStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relations []*Node `protobuf:"bytes,1,rep,name=relations,proto3" json:"relations,omitempty"` + RestartSeqs bool `protobuf:"varint,2,opt,name=restart_seqs,proto3" json:"restart_seqs,omitempty"` + Behavior DropBehavior `protobuf:"varint,3,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TruncateStmt) Reset() { + *x = TruncateStmt{} + mi := &file_pg_query_proto_msgTypes[206] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TruncateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TruncateStmt) ProtoMessage() {} + +func (x *TruncateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[206] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TruncateStmt.ProtoReflect.Descriptor instead. +func (*TruncateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{206} +} + +func (x *TruncateStmt) GetRelations() []*Node { + if x != nil { + return x.Relations + } + return nil +} + +func (x *TruncateStmt) GetRestartSeqs() bool { + if x != nil { + return x.RestartSeqs + } + return false +} + +func (x *TruncateStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type CommentStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Objtype ObjectType `protobuf:"varint,1,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Object *Node `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CommentStmt) Reset() { + *x = CommentStmt{} + mi := &file_pg_query_proto_msgTypes[207] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CommentStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommentStmt) ProtoMessage() {} + +func (x *CommentStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[207] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommentStmt.ProtoReflect.Descriptor instead. +func (*CommentStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{207} +} + +func (x *CommentStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *CommentStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *CommentStmt) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +type SecLabelStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Objtype ObjectType `protobuf:"varint,1,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Object *Node `protobuf:"bytes,2,opt,name=object,proto3" json:"object,omitempty"` + Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"` + Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecLabelStmt) Reset() { + *x = SecLabelStmt{} + mi := &file_pg_query_proto_msgTypes[208] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecLabelStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecLabelStmt) ProtoMessage() {} + +func (x *SecLabelStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[208] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecLabelStmt.ProtoReflect.Descriptor instead. +func (*SecLabelStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{208} +} + +func (x *SecLabelStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *SecLabelStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *SecLabelStmt) GetProvider() string { + if x != nil { + return x.Provider + } + return "" +} + +func (x *SecLabelStmt) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +type DeclareCursorStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Portalname string `protobuf:"bytes,1,opt,name=portalname,proto3" json:"portalname,omitempty"` + Options int32 `protobuf:"varint,2,opt,name=options,proto3" json:"options,omitempty"` + Query *Node `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeclareCursorStmt) Reset() { + *x = DeclareCursorStmt{} + mi := &file_pg_query_proto_msgTypes[209] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeclareCursorStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclareCursorStmt) ProtoMessage() {} + +func (x *DeclareCursorStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[209] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeclareCursorStmt.ProtoReflect.Descriptor instead. +func (*DeclareCursorStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{209} +} + +func (x *DeclareCursorStmt) GetPortalname() string { + if x != nil { + return x.Portalname + } + return "" +} + +func (x *DeclareCursorStmt) GetOptions() int32 { + if x != nil { + return x.Options + } + return 0 +} + +func (x *DeclareCursorStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +type ClosePortalStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Portalname string `protobuf:"bytes,1,opt,name=portalname,proto3" json:"portalname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClosePortalStmt) Reset() { + *x = ClosePortalStmt{} + mi := &file_pg_query_proto_msgTypes[210] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClosePortalStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClosePortalStmt) ProtoMessage() {} + +func (x *ClosePortalStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[210] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClosePortalStmt.ProtoReflect.Descriptor instead. +func (*ClosePortalStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{210} +} + +func (x *ClosePortalStmt) GetPortalname() string { + if x != nil { + return x.Portalname + } + return "" +} + +type FetchStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Direction FetchDirection `protobuf:"varint,1,opt,name=direction,proto3,enum=pg_query.FetchDirection" json:"direction,omitempty"` + HowMany int64 `protobuf:"varint,2,opt,name=how_many,json=howMany,proto3" json:"how_many,omitempty"` + Portalname string `protobuf:"bytes,3,opt,name=portalname,proto3" json:"portalname,omitempty"` + Ismove bool `protobuf:"varint,4,opt,name=ismove,proto3" json:"ismove,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FetchStmt) Reset() { + *x = FetchStmt{} + mi := &file_pg_query_proto_msgTypes[211] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FetchStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FetchStmt) ProtoMessage() {} + +func (x *FetchStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[211] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FetchStmt.ProtoReflect.Descriptor instead. +func (*FetchStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{211} +} + +func (x *FetchStmt) GetDirection() FetchDirection { + if x != nil { + return x.Direction + } + return FetchDirection_FETCH_DIRECTION_UNDEFINED +} + +func (x *FetchStmt) GetHowMany() int64 { + if x != nil { + return x.HowMany + } + return 0 +} + +func (x *FetchStmt) GetPortalname() string { + if x != nil { + return x.Portalname + } + return "" +} + +func (x *FetchStmt) GetIsmove() bool { + if x != nil { + return x.Ismove + } + return false +} + +type IndexStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Idxname string `protobuf:"bytes,1,opt,name=idxname,proto3" json:"idxname,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + AccessMethod string `protobuf:"bytes,3,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + TableSpace string `protobuf:"bytes,4,opt,name=table_space,json=tableSpace,proto3" json:"table_space,omitempty"` + IndexParams []*Node `protobuf:"bytes,5,rep,name=index_params,json=indexParams,proto3" json:"index_params,omitempty"` + IndexIncludingParams []*Node `protobuf:"bytes,6,rep,name=index_including_params,json=indexIncludingParams,proto3" json:"index_including_params,omitempty"` + Options []*Node `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` + WhereClause *Node `protobuf:"bytes,8,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + ExcludeOpNames []*Node `protobuf:"bytes,9,rep,name=exclude_op_names,json=excludeOpNames,proto3" json:"exclude_op_names,omitempty"` + Idxcomment string `protobuf:"bytes,10,opt,name=idxcomment,proto3" json:"idxcomment,omitempty"` + IndexOid uint32 `protobuf:"varint,11,opt,name=index_oid,json=indexOid,proto3" json:"index_oid,omitempty"` + OldNumber uint32 `protobuf:"varint,12,opt,name=old_number,json=oldNumber,proto3" json:"old_number,omitempty"` + OldCreateSubid uint32 `protobuf:"varint,13,opt,name=old_create_subid,json=oldCreateSubid,proto3" json:"old_create_subid,omitempty"` + OldFirstRelfilelocatorSubid uint32 `protobuf:"varint,14,opt,name=old_first_relfilelocator_subid,json=oldFirstRelfilelocatorSubid,proto3" json:"old_first_relfilelocator_subid,omitempty"` + Unique bool `protobuf:"varint,15,opt,name=unique,proto3" json:"unique,omitempty"` + NullsNotDistinct bool `protobuf:"varint,16,opt,name=nulls_not_distinct,proto3" json:"nulls_not_distinct,omitempty"` + Primary bool `protobuf:"varint,17,opt,name=primary,proto3" json:"primary,omitempty"` + Isconstraint bool `protobuf:"varint,18,opt,name=isconstraint,proto3" json:"isconstraint,omitempty"` + Iswithoutoverlaps bool `protobuf:"varint,19,opt,name=iswithoutoverlaps,proto3" json:"iswithoutoverlaps,omitempty"` + Deferrable bool `protobuf:"varint,20,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,21,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + Transformed bool `protobuf:"varint,22,opt,name=transformed,proto3" json:"transformed,omitempty"` + Concurrent bool `protobuf:"varint,23,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + IfNotExists bool `protobuf:"varint,24,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + ResetDefaultTblspc bool `protobuf:"varint,25,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IndexStmt) Reset() { + *x = IndexStmt{} + mi := &file_pg_query_proto_msgTypes[212] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IndexStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexStmt) ProtoMessage() {} + +func (x *IndexStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[212] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexStmt.ProtoReflect.Descriptor instead. +func (*IndexStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{212} +} + +func (x *IndexStmt) GetIdxname() string { + if x != nil { + return x.Idxname + } + return "" +} + +func (x *IndexStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *IndexStmt) GetAccessMethod() string { + if x != nil { + return x.AccessMethod + } + return "" +} + +func (x *IndexStmt) GetTableSpace() string { + if x != nil { + return x.TableSpace + } + return "" +} + +func (x *IndexStmt) GetIndexParams() []*Node { + if x != nil { + return x.IndexParams + } + return nil +} + +func (x *IndexStmt) GetIndexIncludingParams() []*Node { + if x != nil { + return x.IndexIncludingParams + } + return nil +} + +func (x *IndexStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *IndexStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *IndexStmt) GetExcludeOpNames() []*Node { + if x != nil { + return x.ExcludeOpNames + } + return nil +} + +func (x *IndexStmt) GetIdxcomment() string { + if x != nil { + return x.Idxcomment + } + return "" +} + +func (x *IndexStmt) GetIndexOid() uint32 { + if x != nil { + return x.IndexOid + } + return 0 +} + +func (x *IndexStmt) GetOldNumber() uint32 { + if x != nil { + return x.OldNumber + } + return 0 +} + +func (x *IndexStmt) GetOldCreateSubid() uint32 { + if x != nil { + return x.OldCreateSubid + } + return 0 +} + +func (x *IndexStmt) GetOldFirstRelfilelocatorSubid() uint32 { + if x != nil { + return x.OldFirstRelfilelocatorSubid + } + return 0 +} + +func (x *IndexStmt) GetUnique() bool { + if x != nil { + return x.Unique + } + return false +} + +func (x *IndexStmt) GetNullsNotDistinct() bool { + if x != nil { + return x.NullsNotDistinct + } + return false +} + +func (x *IndexStmt) GetPrimary() bool { + if x != nil { + return x.Primary + } + return false +} + +func (x *IndexStmt) GetIsconstraint() bool { + if x != nil { + return x.Isconstraint + } + return false +} + +func (x *IndexStmt) GetIswithoutoverlaps() bool { + if x != nil { + return x.Iswithoutoverlaps + } + return false +} + +func (x *IndexStmt) GetDeferrable() bool { + if x != nil { + return x.Deferrable + } + return false +} + +func (x *IndexStmt) GetInitdeferred() bool { + if x != nil { + return x.Initdeferred + } + return false +} + +func (x *IndexStmt) GetTransformed() bool { + if x != nil { + return x.Transformed + } + return false +} + +func (x *IndexStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +func (x *IndexStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +func (x *IndexStmt) GetResetDefaultTblspc() bool { + if x != nil { + return x.ResetDefaultTblspc + } + return false +} + +type CreateStatsStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Defnames []*Node `protobuf:"bytes,1,rep,name=defnames,proto3" json:"defnames,omitempty"` + StatTypes []*Node `protobuf:"bytes,2,rep,name=stat_types,proto3" json:"stat_types,omitempty"` + Exprs []*Node `protobuf:"bytes,3,rep,name=exprs,proto3" json:"exprs,omitempty"` + Relations []*Node `protobuf:"bytes,4,rep,name=relations,proto3" json:"relations,omitempty"` + Stxcomment string `protobuf:"bytes,5,opt,name=stxcomment,proto3" json:"stxcomment,omitempty"` + Transformed bool `protobuf:"varint,6,opt,name=transformed,proto3" json:"transformed,omitempty"` + IfNotExists bool `protobuf:"varint,7,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateStatsStmt) Reset() { + *x = CreateStatsStmt{} + mi := &file_pg_query_proto_msgTypes[213] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateStatsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateStatsStmt) ProtoMessage() {} + +func (x *CreateStatsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[213] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateStatsStmt.ProtoReflect.Descriptor instead. +func (*CreateStatsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{213} +} + +func (x *CreateStatsStmt) GetDefnames() []*Node { + if x != nil { + return x.Defnames + } + return nil +} + +func (x *CreateStatsStmt) GetStatTypes() []*Node { + if x != nil { + return x.StatTypes + } + return nil +} + +func (x *CreateStatsStmt) GetExprs() []*Node { + if x != nil { + return x.Exprs + } + return nil +} + +func (x *CreateStatsStmt) GetRelations() []*Node { + if x != nil { + return x.Relations + } + return nil +} + +func (x *CreateStatsStmt) GetStxcomment() string { + if x != nil { + return x.Stxcomment + } + return "" +} + +func (x *CreateStatsStmt) GetTransformed() bool { + if x != nil { + return x.Transformed + } + return false +} + +func (x *CreateStatsStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type StatsElem struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Expr *Node `protobuf:"bytes,2,opt,name=expr,proto3" json:"expr,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatsElem) Reset() { + *x = StatsElem{} + mi := &file_pg_query_proto_msgTypes[214] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatsElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatsElem) ProtoMessage() {} + +func (x *StatsElem) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[214] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatsElem.ProtoReflect.Descriptor instead. +func (*StatsElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{214} +} + +func (x *StatsElem) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StatsElem) GetExpr() *Node { + if x != nil { + return x.Expr + } + return nil +} + +type AlterStatsStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Defnames []*Node `protobuf:"bytes,1,rep,name=defnames,proto3" json:"defnames,omitempty"` + Stxstattarget *Node `protobuf:"bytes,2,opt,name=stxstattarget,proto3" json:"stxstattarget,omitempty"` + MissingOk bool `protobuf:"varint,3,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterStatsStmt) Reset() { + *x = AlterStatsStmt{} + mi := &file_pg_query_proto_msgTypes[215] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterStatsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterStatsStmt) ProtoMessage() {} + +func (x *AlterStatsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[215] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterStatsStmt.ProtoReflect.Descriptor instead. +func (*AlterStatsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{215} +} + +func (x *AlterStatsStmt) GetDefnames() []*Node { + if x != nil { + return x.Defnames + } + return nil +} + +func (x *AlterStatsStmt) GetStxstattarget() *Node { + if x != nil { + return x.Stxstattarget + } + return nil +} + +func (x *AlterStatsStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type CreateFunctionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + IsProcedure bool `protobuf:"varint,1,opt,name=is_procedure,proto3" json:"is_procedure,omitempty"` + Replace bool `protobuf:"varint,2,opt,name=replace,proto3" json:"replace,omitempty"` + Funcname []*Node `protobuf:"bytes,3,rep,name=funcname,proto3" json:"funcname,omitempty"` + Parameters []*Node `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` + ReturnType *TypeName `protobuf:"bytes,5,opt,name=return_type,json=returnType,proto3" json:"return_type,omitempty"` + Options []*Node `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` + SqlBody *Node `protobuf:"bytes,7,opt,name=sql_body,proto3" json:"sql_body,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateFunctionStmt) Reset() { + *x = CreateFunctionStmt{} + mi := &file_pg_query_proto_msgTypes[216] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateFunctionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFunctionStmt) ProtoMessage() {} + +func (x *CreateFunctionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[216] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFunctionStmt.ProtoReflect.Descriptor instead. +func (*CreateFunctionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{216} +} + +func (x *CreateFunctionStmt) GetIsProcedure() bool { + if x != nil { + return x.IsProcedure + } + return false +} + +func (x *CreateFunctionStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreateFunctionStmt) GetFuncname() []*Node { + if x != nil { + return x.Funcname + } + return nil +} + +func (x *CreateFunctionStmt) GetParameters() []*Node { + if x != nil { + return x.Parameters + } + return nil +} + +func (x *CreateFunctionStmt) GetReturnType() *TypeName { + if x != nil { + return x.ReturnType + } + return nil +} + +func (x *CreateFunctionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreateFunctionStmt) GetSqlBody() *Node { + if x != nil { + return x.SqlBody + } + return nil +} + +type FunctionParameter struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + ArgType *TypeName `protobuf:"bytes,2,opt,name=arg_type,json=argType,proto3" json:"arg_type,omitempty"` + Mode FunctionParameterMode `protobuf:"varint,3,opt,name=mode,proto3,enum=pg_query.FunctionParameterMode" json:"mode,omitempty"` + Defexpr *Node `protobuf:"bytes,4,opt,name=defexpr,proto3" json:"defexpr,omitempty"` + Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FunctionParameter) Reset() { + *x = FunctionParameter{} + mi := &file_pg_query_proto_msgTypes[217] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FunctionParameter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FunctionParameter) ProtoMessage() {} + +func (x *FunctionParameter) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[217] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FunctionParameter.ProtoReflect.Descriptor instead. +func (*FunctionParameter) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{217} +} + +func (x *FunctionParameter) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FunctionParameter) GetArgType() *TypeName { + if x != nil { + return x.ArgType + } + return nil +} + +func (x *FunctionParameter) GetMode() FunctionParameterMode { + if x != nil { + return x.Mode + } + return FunctionParameterMode_FUNCTION_PARAMETER_MODE_UNDEFINED +} + +func (x *FunctionParameter) GetDefexpr() *Node { + if x != nil { + return x.Defexpr + } + return nil +} + +func (x *FunctionParameter) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type AlterFunctionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Objtype ObjectType `protobuf:"varint,1,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + Func *ObjectWithArgs `protobuf:"bytes,2,opt,name=func,proto3" json:"func,omitempty"` + Actions []*Node `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterFunctionStmt) Reset() { + *x = AlterFunctionStmt{} + mi := &file_pg_query_proto_msgTypes[218] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterFunctionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterFunctionStmt) ProtoMessage() {} + +func (x *AlterFunctionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[218] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterFunctionStmt.ProtoReflect.Descriptor instead. +func (*AlterFunctionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{218} +} + +func (x *AlterFunctionStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterFunctionStmt) GetFunc() *ObjectWithArgs { + if x != nil { + return x.Func + } + return nil +} + +func (x *AlterFunctionStmt) GetActions() []*Node { + if x != nil { + return x.Actions + } + return nil +} + +type DoStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Args []*Node `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DoStmt) Reset() { + *x = DoStmt{} + mi := &file_pg_query_proto_msgTypes[219] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DoStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DoStmt) ProtoMessage() {} + +func (x *DoStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[219] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DoStmt.ProtoReflect.Descriptor instead. +func (*DoStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{219} +} + +func (x *DoStmt) GetArgs() []*Node { + if x != nil { + return x.Args + } + return nil +} + +type InlineCodeBlock struct { + state protoimpl.MessageState `protogen:"open.v1"` + SourceText string `protobuf:"bytes,1,opt,name=source_text,proto3" json:"source_text,omitempty"` + LangOid uint32 `protobuf:"varint,2,opt,name=lang_oid,json=langOid,proto3" json:"lang_oid,omitempty"` + LangIsTrusted bool `protobuf:"varint,3,opt,name=lang_is_trusted,json=langIsTrusted,proto3" json:"lang_is_trusted,omitempty"` + Atomic bool `protobuf:"varint,4,opt,name=atomic,proto3" json:"atomic,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *InlineCodeBlock) Reset() { + *x = InlineCodeBlock{} + mi := &file_pg_query_proto_msgTypes[220] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InlineCodeBlock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InlineCodeBlock) ProtoMessage() {} + +func (x *InlineCodeBlock) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[220] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InlineCodeBlock.ProtoReflect.Descriptor instead. +func (*InlineCodeBlock) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{220} +} + +func (x *InlineCodeBlock) GetSourceText() string { + if x != nil { + return x.SourceText + } + return "" +} + +func (x *InlineCodeBlock) GetLangOid() uint32 { + if x != nil { + return x.LangOid + } + return 0 +} + +func (x *InlineCodeBlock) GetLangIsTrusted() bool { + if x != nil { + return x.LangIsTrusted + } + return false +} + +func (x *InlineCodeBlock) GetAtomic() bool { + if x != nil { + return x.Atomic + } + return false +} + +type CallStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Funccall *FuncCall `protobuf:"bytes,1,opt,name=funccall,proto3" json:"funccall,omitempty"` + Funcexpr *FuncExpr `protobuf:"bytes,2,opt,name=funcexpr,proto3" json:"funcexpr,omitempty"` + Outargs []*Node `protobuf:"bytes,3,rep,name=outargs,proto3" json:"outargs,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CallStmt) Reset() { + *x = CallStmt{} + mi := &file_pg_query_proto_msgTypes[221] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CallStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallStmt) ProtoMessage() {} + +func (x *CallStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[221] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallStmt.ProtoReflect.Descriptor instead. +func (*CallStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{221} +} + +func (x *CallStmt) GetFunccall() *FuncCall { + if x != nil { + return x.Funccall + } + return nil +} + +func (x *CallStmt) GetFuncexpr() *FuncExpr { + if x != nil { + return x.Funcexpr + } + return nil +} + +func (x *CallStmt) GetOutargs() []*Node { + if x != nil { + return x.Outargs + } + return nil +} + +type CallContext struct { + state protoimpl.MessageState `protogen:"open.v1"` + Atomic bool `protobuf:"varint,1,opt,name=atomic,proto3" json:"atomic,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CallContext) Reset() { + *x = CallContext{} + mi := &file_pg_query_proto_msgTypes[222] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CallContext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallContext) ProtoMessage() {} + +func (x *CallContext) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[222] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CallContext.ProtoReflect.Descriptor instead. +func (*CallContext) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{222} +} + +func (x *CallContext) GetAtomic() bool { + if x != nil { + return x.Atomic + } + return false +} + +type RenameStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + RenameType ObjectType `protobuf:"varint,1,opt,name=rename_type,json=renameType,proto3,enum=pg_query.ObjectType" json:"rename_type,omitempty"` + RelationType ObjectType `protobuf:"varint,2,opt,name=relation_type,json=relationType,proto3,enum=pg_query.ObjectType" json:"relation_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,3,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,4,opt,name=object,proto3" json:"object,omitempty"` + Subname string `protobuf:"bytes,5,opt,name=subname,proto3" json:"subname,omitempty"` + Newname string `protobuf:"bytes,6,opt,name=newname,proto3" json:"newname,omitempty"` + Behavior DropBehavior `protobuf:"varint,7,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + MissingOk bool `protobuf:"varint,8,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RenameStmt) Reset() { + *x = RenameStmt{} + mi := &file_pg_query_proto_msgTypes[223] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RenameStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RenameStmt) ProtoMessage() {} + +func (x *RenameStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[223] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RenameStmt.ProtoReflect.Descriptor instead. +func (*RenameStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{223} +} + +func (x *RenameStmt) GetRenameType() ObjectType { + if x != nil { + return x.RenameType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *RenameStmt) GetRelationType() ObjectType { + if x != nil { + return x.RelationType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *RenameStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *RenameStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *RenameStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *RenameStmt) GetNewname() string { + if x != nil { + return x.Newname + } + return "" +} + +func (x *RenameStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +func (x *RenameStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterObjectDependsStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=pg_query.ObjectType" json:"object_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Extname *String `protobuf:"bytes,4,opt,name=extname,proto3" json:"extname,omitempty"` + Remove bool `protobuf:"varint,5,opt,name=remove,proto3" json:"remove,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterObjectDependsStmt) Reset() { + *x = AlterObjectDependsStmt{} + mi := &file_pg_query_proto_msgTypes[224] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterObjectDependsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterObjectDependsStmt) ProtoMessage() {} + +func (x *AlterObjectDependsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[224] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterObjectDependsStmt.ProtoReflect.Descriptor instead. +func (*AlterObjectDependsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{224} +} + +func (x *AlterObjectDependsStmt) GetObjectType() ObjectType { + if x != nil { + return x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterObjectDependsStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterObjectDependsStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *AlterObjectDependsStmt) GetExtname() *String { + if x != nil { + return x.Extname + } + return nil +} + +func (x *AlterObjectDependsStmt) GetRemove() bool { + if x != nil { + return x.Remove + } + return false +} + +type AlterObjectSchemaStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=pg_query.ObjectType" json:"object_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Newschema string `protobuf:"bytes,4,opt,name=newschema,proto3" json:"newschema,omitempty"` + MissingOk bool `protobuf:"varint,5,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterObjectSchemaStmt) Reset() { + *x = AlterObjectSchemaStmt{} + mi := &file_pg_query_proto_msgTypes[225] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterObjectSchemaStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterObjectSchemaStmt) ProtoMessage() {} + +func (x *AlterObjectSchemaStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[225] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterObjectSchemaStmt.ProtoReflect.Descriptor instead. +func (*AlterObjectSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{225} +} + +func (x *AlterObjectSchemaStmt) GetObjectType() ObjectType { + if x != nil { + return x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterObjectSchemaStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterObjectSchemaStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *AlterObjectSchemaStmt) GetNewschema() string { + if x != nil { + return x.Newschema + } + return "" +} + +func (x *AlterObjectSchemaStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type AlterOwnerStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + ObjectType ObjectType `protobuf:"varint,1,opt,name=object_type,json=objectType,proto3,enum=pg_query.ObjectType" json:"object_type,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object *Node `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Newowner *RoleSpec `protobuf:"bytes,4,opt,name=newowner,proto3" json:"newowner,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterOwnerStmt) Reset() { + *x = AlterOwnerStmt{} + mi := &file_pg_query_proto_msgTypes[226] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterOwnerStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterOwnerStmt) ProtoMessage() {} + +func (x *AlterOwnerStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[226] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterOwnerStmt.ProtoReflect.Descriptor instead. +func (*AlterOwnerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{226} +} + +func (x *AlterOwnerStmt) GetObjectType() ObjectType { + if x != nil { + return x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *AlterOwnerStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *AlterOwnerStmt) GetObject() *Node { + if x != nil { + return x.Object + } + return nil +} + +func (x *AlterOwnerStmt) GetNewowner() *RoleSpec { + if x != nil { + return x.Newowner + } + return nil +} + +type AlterOperatorStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Opername *ObjectWithArgs `protobuf:"bytes,1,opt,name=opername,proto3" json:"opername,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterOperatorStmt) Reset() { + *x = AlterOperatorStmt{} + mi := &file_pg_query_proto_msgTypes[227] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterOperatorStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterOperatorStmt) ProtoMessage() {} + +func (x *AlterOperatorStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[227] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterOperatorStmt.ProtoReflect.Descriptor instead. +func (*AlterOperatorStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{227} +} + +func (x *AlterOperatorStmt) GetOpername() *ObjectWithArgs { + if x != nil { + return x.Opername + } + return nil +} + +func (x *AlterOperatorStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterTypeStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTypeStmt) Reset() { + *x = AlterTypeStmt{} + mi := &file_pg_query_proto_msgTypes[228] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTypeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTypeStmt) ProtoMessage() {} + +func (x *AlterTypeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[228] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTypeStmt.ProtoReflect.Descriptor instead. +func (*AlterTypeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{228} +} + +func (x *AlterTypeStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *AlterTypeStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type RuleStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Rulename string `protobuf:"bytes,2,opt,name=rulename,proto3" json:"rulename,omitempty"` + WhereClause *Node `protobuf:"bytes,3,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Event CmdType `protobuf:"varint,4,opt,name=event,proto3,enum=pg_query.CmdType" json:"event,omitempty"` + Instead bool `protobuf:"varint,5,opt,name=instead,proto3" json:"instead,omitempty"` + Actions []*Node `protobuf:"bytes,6,rep,name=actions,proto3" json:"actions,omitempty"` + Replace bool `protobuf:"varint,7,opt,name=replace,proto3" json:"replace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RuleStmt) Reset() { + *x = RuleStmt{} + mi := &file_pg_query_proto_msgTypes[229] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RuleStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuleStmt) ProtoMessage() {} + +func (x *RuleStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[229] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RuleStmt.ProtoReflect.Descriptor instead. +func (*RuleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{229} +} + +func (x *RuleStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *RuleStmt) GetRulename() string { + if x != nil { + return x.Rulename + } + return "" +} + +func (x *RuleStmt) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *RuleStmt) GetEvent() CmdType { + if x != nil { + return x.Event + } + return CmdType_CMD_TYPE_UNDEFINED +} + +func (x *RuleStmt) GetInstead() bool { + if x != nil { + return x.Instead + } + return false +} + +func (x *RuleStmt) GetActions() []*Node { + if x != nil { + return x.Actions + } + return nil +} + +func (x *RuleStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +type NotifyStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Conditionname string `protobuf:"bytes,1,opt,name=conditionname,proto3" json:"conditionname,omitempty"` + Payload string `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotifyStmt) Reset() { + *x = NotifyStmt{} + mi := &file_pg_query_proto_msgTypes[230] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyStmt) ProtoMessage() {} + +func (x *NotifyStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[230] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyStmt.ProtoReflect.Descriptor instead. +func (*NotifyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{230} +} + +func (x *NotifyStmt) GetConditionname() string { + if x != nil { + return x.Conditionname + } + return "" +} + +func (x *NotifyStmt) GetPayload() string { + if x != nil { + return x.Payload + } + return "" +} + +type ListenStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Conditionname string `protobuf:"bytes,1,opt,name=conditionname,proto3" json:"conditionname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListenStmt) Reset() { + *x = ListenStmt{} + mi := &file_pg_query_proto_msgTypes[231] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListenStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListenStmt) ProtoMessage() {} + +func (x *ListenStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[231] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListenStmt.ProtoReflect.Descriptor instead. +func (*ListenStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{231} +} + +func (x *ListenStmt) GetConditionname() string { + if x != nil { + return x.Conditionname + } + return "" +} + +type UnlistenStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Conditionname string `protobuf:"bytes,1,opt,name=conditionname,proto3" json:"conditionname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnlistenStmt) Reset() { + *x = UnlistenStmt{} + mi := &file_pg_query_proto_msgTypes[232] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnlistenStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnlistenStmt) ProtoMessage() {} + +func (x *UnlistenStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[232] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnlistenStmt.ProtoReflect.Descriptor instead. +func (*UnlistenStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{232} +} + +func (x *UnlistenStmt) GetConditionname() string { + if x != nil { + return x.Conditionname + } + return "" +} + +type TransactionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind TransactionStmtKind `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.TransactionStmtKind" json:"kind,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + SavepointName string `protobuf:"bytes,3,opt,name=savepoint_name,proto3" json:"savepoint_name,omitempty"` + Gid string `protobuf:"bytes,4,opt,name=gid,proto3" json:"gid,omitempty"` + Chain bool `protobuf:"varint,5,opt,name=chain,proto3" json:"chain,omitempty"` + Location int32 `protobuf:"varint,6,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TransactionStmt) Reset() { + *x = TransactionStmt{} + mi := &file_pg_query_proto_msgTypes[233] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TransactionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionStmt) ProtoMessage() {} + +func (x *TransactionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[233] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TransactionStmt.ProtoReflect.Descriptor instead. +func (*TransactionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{233} +} + +func (x *TransactionStmt) GetKind() TransactionStmtKind { + if x != nil { + return x.Kind + } + return TransactionStmtKind_TRANSACTION_STMT_KIND_UNDEFINED +} + +func (x *TransactionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *TransactionStmt) GetSavepointName() string { + if x != nil { + return x.SavepointName + } + return "" +} + +func (x *TransactionStmt) GetGid() string { + if x != nil { + return x.Gid + } + return "" +} + +func (x *TransactionStmt) GetChain() bool { + if x != nil { + return x.Chain + } + return false +} + +func (x *TransactionStmt) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CompositeTypeStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Typevar *RangeVar `protobuf:"bytes,1,opt,name=typevar,proto3" json:"typevar,omitempty"` + Coldeflist []*Node `protobuf:"bytes,2,rep,name=coldeflist,proto3" json:"coldeflist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CompositeTypeStmt) Reset() { + *x = CompositeTypeStmt{} + mi := &file_pg_query_proto_msgTypes[234] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CompositeTypeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompositeTypeStmt) ProtoMessage() {} + +func (x *CompositeTypeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[234] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompositeTypeStmt.ProtoReflect.Descriptor instead. +func (*CompositeTypeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{234} +} + +func (x *CompositeTypeStmt) GetTypevar() *RangeVar { + if x != nil { + return x.Typevar + } + return nil +} + +func (x *CompositeTypeStmt) GetColdeflist() []*Node { + if x != nil { + return x.Coldeflist + } + return nil +} + +type CreateEnumStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Vals []*Node `protobuf:"bytes,2,rep,name=vals,proto3" json:"vals,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateEnumStmt) Reset() { + *x = CreateEnumStmt{} + mi := &file_pg_query_proto_msgTypes[235] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateEnumStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateEnumStmt) ProtoMessage() {} + +func (x *CreateEnumStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[235] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateEnumStmt.ProtoReflect.Descriptor instead. +func (*CreateEnumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{235} +} + +func (x *CreateEnumStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateEnumStmt) GetVals() []*Node { + if x != nil { + return x.Vals + } + return nil +} + +type CreateRangeStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + Params []*Node `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateRangeStmt) Reset() { + *x = CreateRangeStmt{} + mi := &file_pg_query_proto_msgTypes[236] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateRangeStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateRangeStmt) ProtoMessage() {} + +func (x *CreateRangeStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[236] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateRangeStmt.ProtoReflect.Descriptor instead. +func (*CreateRangeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{236} +} + +func (x *CreateRangeStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateRangeStmt) GetParams() []*Node { + if x != nil { + return x.Params + } + return nil +} + +type AlterEnumStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + TypeName []*Node `protobuf:"bytes,1,rep,name=type_name,json=typeName,proto3" json:"type_name,omitempty"` + OldVal string `protobuf:"bytes,2,opt,name=old_val,json=oldVal,proto3" json:"old_val,omitempty"` + NewVal string `protobuf:"bytes,3,opt,name=new_val,json=newVal,proto3" json:"new_val,omitempty"` + NewValNeighbor string `protobuf:"bytes,4,opt,name=new_val_neighbor,json=newValNeighbor,proto3" json:"new_val_neighbor,omitempty"` + NewValIsAfter bool `protobuf:"varint,5,opt,name=new_val_is_after,json=newValIsAfter,proto3" json:"new_val_is_after,omitempty"` + SkipIfNewValExists bool `protobuf:"varint,6,opt,name=skip_if_new_val_exists,json=skipIfNewValExists,proto3" json:"skip_if_new_val_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterEnumStmt) Reset() { + *x = AlterEnumStmt{} + mi := &file_pg_query_proto_msgTypes[237] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterEnumStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterEnumStmt) ProtoMessage() {} + +func (x *AlterEnumStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[237] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterEnumStmt.ProtoReflect.Descriptor instead. +func (*AlterEnumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{237} +} + +func (x *AlterEnumStmt) GetTypeName() []*Node { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *AlterEnumStmt) GetOldVal() string { + if x != nil { + return x.OldVal + } + return "" +} + +func (x *AlterEnumStmt) GetNewVal() string { + if x != nil { + return x.NewVal + } + return "" +} + +func (x *AlterEnumStmt) GetNewValNeighbor() string { + if x != nil { + return x.NewValNeighbor + } + return "" +} + +func (x *AlterEnumStmt) GetNewValIsAfter() bool { + if x != nil { + return x.NewValIsAfter + } + return false +} + +func (x *AlterEnumStmt) GetSkipIfNewValExists() bool { + if x != nil { + return x.SkipIfNewValExists + } + return false +} + +type ViewStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + View *RangeVar `protobuf:"bytes,1,opt,name=view,proto3" json:"view,omitempty"` + Aliases []*Node `protobuf:"bytes,2,rep,name=aliases,proto3" json:"aliases,omitempty"` + Query *Node `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Replace bool `protobuf:"varint,4,opt,name=replace,proto3" json:"replace,omitempty"` + Options []*Node `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty"` + WithCheckOption ViewCheckOption `protobuf:"varint,6,opt,name=with_check_option,json=withCheckOption,proto3,enum=pg_query.ViewCheckOption" json:"with_check_option,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ViewStmt) Reset() { + *x = ViewStmt{} + mi := &file_pg_query_proto_msgTypes[238] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ViewStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ViewStmt) ProtoMessage() {} + +func (x *ViewStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[238] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ViewStmt.ProtoReflect.Descriptor instead. +func (*ViewStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{238} +} + +func (x *ViewStmt) GetView() *RangeVar { + if x != nil { + return x.View + } + return nil +} + +func (x *ViewStmt) GetAliases() []*Node { + if x != nil { + return x.Aliases + } + return nil +} + +func (x *ViewStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *ViewStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *ViewStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *ViewStmt) GetWithCheckOption() ViewCheckOption { + if x != nil { + return x.WithCheckOption + } + return ViewCheckOption_VIEW_CHECK_OPTION_UNDEFINED +} + +type LoadStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LoadStmt) Reset() { + *x = LoadStmt{} + mi := &file_pg_query_proto_msgTypes[239] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LoadStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LoadStmt) ProtoMessage() {} + +func (x *LoadStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[239] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LoadStmt.ProtoReflect.Descriptor instead. +func (*LoadStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{239} +} + +func (x *LoadStmt) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +type CreatedbStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreatedbStmt) Reset() { + *x = CreatedbStmt{} + mi := &file_pg_query_proto_msgTypes[240] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreatedbStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatedbStmt) ProtoMessage() {} + +func (x *CreatedbStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[240] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatedbStmt.ProtoReflect.Descriptor instead. +func (*CreatedbStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{240} +} + +func (x *CreatedbStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *CreatedbStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterDatabaseStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterDatabaseStmt) Reset() { + *x = AlterDatabaseStmt{} + mi := &file_pg_query_proto_msgTypes[241] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterDatabaseStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDatabaseStmt) ProtoMessage() {} + +func (x *AlterDatabaseStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[241] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDatabaseStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{241} +} + +func (x *AlterDatabaseStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *AlterDatabaseStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterDatabaseRefreshCollStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterDatabaseRefreshCollStmt) Reset() { + *x = AlterDatabaseRefreshCollStmt{} + mi := &file_pg_query_proto_msgTypes[242] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterDatabaseRefreshCollStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDatabaseRefreshCollStmt) ProtoMessage() {} + +func (x *AlterDatabaseRefreshCollStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[242] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDatabaseRefreshCollStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseRefreshCollStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{242} +} + +func (x *AlterDatabaseRefreshCollStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +type AlterDatabaseSetStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + Setstmt *VariableSetStmt `protobuf:"bytes,2,opt,name=setstmt,proto3" json:"setstmt,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterDatabaseSetStmt) Reset() { + *x = AlterDatabaseSetStmt{} + mi := &file_pg_query_proto_msgTypes[243] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterDatabaseSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterDatabaseSetStmt) ProtoMessage() {} + +func (x *AlterDatabaseSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[243] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterDatabaseSetStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{243} +} + +func (x *AlterDatabaseSetStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *AlterDatabaseSetStmt) GetSetstmt() *VariableSetStmt { + if x != nil { + return x.Setstmt + } + return nil +} + +type DropdbStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dbname string `protobuf:"bytes,1,opt,name=dbname,proto3" json:"dbname,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Options []*Node `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropdbStmt) Reset() { + *x = DropdbStmt{} + mi := &file_pg_query_proto_msgTypes[244] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropdbStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropdbStmt) ProtoMessage() {} + +func (x *DropdbStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[244] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropdbStmt.ProtoReflect.Descriptor instead. +func (*DropdbStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{244} +} + +func (x *DropdbStmt) GetDbname() string { + if x != nil { + return x.Dbname + } + return "" +} + +func (x *DropdbStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *DropdbStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterSystemStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Setstmt *VariableSetStmt `protobuf:"bytes,1,opt,name=setstmt,proto3" json:"setstmt,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterSystemStmt) Reset() { + *x = AlterSystemStmt{} + mi := &file_pg_query_proto_msgTypes[245] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterSystemStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterSystemStmt) ProtoMessage() {} + +func (x *AlterSystemStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[245] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterSystemStmt.ProtoReflect.Descriptor instead. +func (*AlterSystemStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{245} +} + +func (x *AlterSystemStmt) GetSetstmt() *VariableSetStmt { + if x != nil { + return x.Setstmt + } + return nil +} + +type ClusterStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Indexname string `protobuf:"bytes,2,opt,name=indexname,proto3" json:"indexname,omitempty"` + Params []*Node `protobuf:"bytes,3,rep,name=params,proto3" json:"params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ClusterStmt) Reset() { + *x = ClusterStmt{} + mi := &file_pg_query_proto_msgTypes[246] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ClusterStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClusterStmt) ProtoMessage() {} + +func (x *ClusterStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[246] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClusterStmt.ProtoReflect.Descriptor instead. +func (*ClusterStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{246} +} + +func (x *ClusterStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *ClusterStmt) GetIndexname() string { + if x != nil { + return x.Indexname + } + return "" +} + +func (x *ClusterStmt) GetParams() []*Node { + if x != nil { + return x.Params + } + return nil +} + +type VacuumStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options []*Node `protobuf:"bytes,1,rep,name=options,proto3" json:"options,omitempty"` + Rels []*Node `protobuf:"bytes,2,rep,name=rels,proto3" json:"rels,omitempty"` + IsVacuumcmd bool `protobuf:"varint,3,opt,name=is_vacuumcmd,proto3" json:"is_vacuumcmd,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VacuumStmt) Reset() { + *x = VacuumStmt{} + mi := &file_pg_query_proto_msgTypes[247] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VacuumStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VacuumStmt) ProtoMessage() {} + +func (x *VacuumStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[247] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VacuumStmt.ProtoReflect.Descriptor instead. +func (*VacuumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{247} +} + +func (x *VacuumStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *VacuumStmt) GetRels() []*Node { + if x != nil { + return x.Rels + } + return nil +} + +func (x *VacuumStmt) GetIsVacuumcmd() bool { + if x != nil { + return x.IsVacuumcmd + } + return false +} + +type VacuumRelation struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + Oid uint32 `protobuf:"varint,2,opt,name=oid,proto3" json:"oid,omitempty"` + VaCols []*Node `protobuf:"bytes,3,rep,name=va_cols,proto3" json:"va_cols,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VacuumRelation) Reset() { + *x = VacuumRelation{} + mi := &file_pg_query_proto_msgTypes[248] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VacuumRelation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VacuumRelation) ProtoMessage() {} + +func (x *VacuumRelation) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[248] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VacuumRelation.ProtoReflect.Descriptor instead. +func (*VacuumRelation) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{248} +} + +func (x *VacuumRelation) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *VacuumRelation) GetOid() uint32 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *VacuumRelation) GetVaCols() []*Node { + if x != nil { + return x.VaCols + } + return nil +} + +type ExplainStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query *Node `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExplainStmt) Reset() { + *x = ExplainStmt{} + mi := &file_pg_query_proto_msgTypes[249] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExplainStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExplainStmt) ProtoMessage() {} + +func (x *ExplainStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[249] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExplainStmt.ProtoReflect.Descriptor instead. +func (*ExplainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{249} +} + +func (x *ExplainStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *ExplainStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type CreateTableAsStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Query *Node `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + Into *IntoClause `protobuf:"bytes,2,opt,name=into,proto3" json:"into,omitempty"` + Objtype ObjectType `protobuf:"varint,3,opt,name=objtype,proto3,enum=pg_query.ObjectType" json:"objtype,omitempty"` + IsSelectInto bool `protobuf:"varint,4,opt,name=is_select_into,proto3" json:"is_select_into,omitempty"` + IfNotExists bool `protobuf:"varint,5,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateTableAsStmt) Reset() { + *x = CreateTableAsStmt{} + mi := &file_pg_query_proto_msgTypes[250] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTableAsStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTableAsStmt) ProtoMessage() {} + +func (x *CreateTableAsStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[250] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTableAsStmt.ProtoReflect.Descriptor instead. +func (*CreateTableAsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{250} +} + +func (x *CreateTableAsStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +func (x *CreateTableAsStmt) GetInto() *IntoClause { + if x != nil { + return x.Into + } + return nil +} + +func (x *CreateTableAsStmt) GetObjtype() ObjectType { + if x != nil { + return x.Objtype + } + return ObjectType_OBJECT_TYPE_UNDEFINED +} + +func (x *CreateTableAsStmt) GetIsSelectInto() bool { + if x != nil { + return x.IsSelectInto + } + return false +} + +func (x *CreateTableAsStmt) GetIfNotExists() bool { + if x != nil { + return x.IfNotExists + } + return false +} + +type RefreshMatViewStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Concurrent bool `protobuf:"varint,1,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + SkipData bool `protobuf:"varint,2,opt,name=skip_data,json=skipData,proto3" json:"skip_data,omitempty"` + Relation *RangeVar `protobuf:"bytes,3,opt,name=relation,proto3" json:"relation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RefreshMatViewStmt) Reset() { + *x = RefreshMatViewStmt{} + mi := &file_pg_query_proto_msgTypes[251] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RefreshMatViewStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshMatViewStmt) ProtoMessage() {} + +func (x *RefreshMatViewStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[251] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RefreshMatViewStmt.ProtoReflect.Descriptor instead. +func (*RefreshMatViewStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{251} +} + +func (x *RefreshMatViewStmt) GetConcurrent() bool { + if x != nil { + return x.Concurrent + } + return false +} + +func (x *RefreshMatViewStmt) GetSkipData() bool { + if x != nil { + return x.SkipData + } + return false +} + +func (x *RefreshMatViewStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +type CheckPointStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CheckPointStmt) Reset() { + *x = CheckPointStmt{} + mi := &file_pg_query_proto_msgTypes[252] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CheckPointStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckPointStmt) ProtoMessage() {} + +func (x *CheckPointStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[252] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CheckPointStmt.ProtoReflect.Descriptor instead. +func (*CheckPointStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{252} +} + +type DiscardStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Target DiscardMode `protobuf:"varint,1,opt,name=target,proto3,enum=pg_query.DiscardMode" json:"target,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DiscardStmt) Reset() { + *x = DiscardStmt{} + mi := &file_pg_query_proto_msgTypes[253] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DiscardStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscardStmt) ProtoMessage() {} + +func (x *DiscardStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[253] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscardStmt.ProtoReflect.Descriptor instead. +func (*DiscardStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{253} +} + +func (x *DiscardStmt) GetTarget() DiscardMode { + if x != nil { + return x.Target + } + return DiscardMode_DISCARD_MODE_UNDEFINED +} + +type LockStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relations []*Node `protobuf:"bytes,1,rep,name=relations,proto3" json:"relations,omitempty"` + Mode int32 `protobuf:"varint,2,opt,name=mode,proto3" json:"mode,omitempty"` + Nowait bool `protobuf:"varint,3,opt,name=nowait,proto3" json:"nowait,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LockStmt) Reset() { + *x = LockStmt{} + mi := &file_pg_query_proto_msgTypes[254] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LockStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LockStmt) ProtoMessage() {} + +func (x *LockStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[254] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LockStmt.ProtoReflect.Descriptor instead. +func (*LockStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{254} +} + +func (x *LockStmt) GetRelations() []*Node { + if x != nil { + return x.Relations + } + return nil +} + +func (x *LockStmt) GetMode() int32 { + if x != nil { + return x.Mode + } + return 0 +} + +func (x *LockStmt) GetNowait() bool { + if x != nil { + return x.Nowait + } + return false +} + +type ConstraintsSetStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Constraints []*Node `protobuf:"bytes,1,rep,name=constraints,proto3" json:"constraints,omitempty"` + Deferred bool `protobuf:"varint,2,opt,name=deferred,proto3" json:"deferred,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConstraintsSetStmt) Reset() { + *x = ConstraintsSetStmt{} + mi := &file_pg_query_proto_msgTypes[255] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConstraintsSetStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConstraintsSetStmt) ProtoMessage() {} + +func (x *ConstraintsSetStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[255] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConstraintsSetStmt.ProtoReflect.Descriptor instead. +func (*ConstraintsSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{255} +} + +func (x *ConstraintsSetStmt) GetConstraints() []*Node { + if x != nil { + return x.Constraints + } + return nil +} + +func (x *ConstraintsSetStmt) GetDeferred() bool { + if x != nil { + return x.Deferred + } + return false +} + +type ReindexStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind ReindexObjectType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.ReindexObjectType" json:"kind,omitempty"` + Relation *RangeVar `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Params []*Node `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReindexStmt) Reset() { + *x = ReindexStmt{} + mi := &file_pg_query_proto_msgTypes[256] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReindexStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReindexStmt) ProtoMessage() {} + +func (x *ReindexStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[256] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReindexStmt.ProtoReflect.Descriptor instead. +func (*ReindexStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{256} +} + +func (x *ReindexStmt) GetKind() ReindexObjectType { + if x != nil { + return x.Kind + } + return ReindexObjectType_REINDEX_OBJECT_TYPE_UNDEFINED +} + +func (x *ReindexStmt) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *ReindexStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ReindexStmt) GetParams() []*Node { + if x != nil { + return x.Params + } + return nil +} + +type CreateConversionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + ConversionName []*Node `protobuf:"bytes,1,rep,name=conversion_name,proto3" json:"conversion_name,omitempty"` + ForEncodingName string `protobuf:"bytes,2,opt,name=for_encoding_name,proto3" json:"for_encoding_name,omitempty"` + ToEncodingName string `protobuf:"bytes,3,opt,name=to_encoding_name,proto3" json:"to_encoding_name,omitempty"` + FuncName []*Node `protobuf:"bytes,4,rep,name=func_name,proto3" json:"func_name,omitempty"` + Def bool `protobuf:"varint,5,opt,name=def,proto3" json:"def,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateConversionStmt) Reset() { + *x = CreateConversionStmt{} + mi := &file_pg_query_proto_msgTypes[257] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateConversionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateConversionStmt) ProtoMessage() {} + +func (x *CreateConversionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[257] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateConversionStmt.ProtoReflect.Descriptor instead. +func (*CreateConversionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{257} +} + +func (x *CreateConversionStmt) GetConversionName() []*Node { + if x != nil { + return x.ConversionName + } + return nil +} + +func (x *CreateConversionStmt) GetForEncodingName() string { + if x != nil { + return x.ForEncodingName + } + return "" +} + +func (x *CreateConversionStmt) GetToEncodingName() string { + if x != nil { + return x.ToEncodingName + } + return "" +} + +func (x *CreateConversionStmt) GetFuncName() []*Node { + if x != nil { + return x.FuncName + } + return nil +} + +func (x *CreateConversionStmt) GetDef() bool { + if x != nil { + return x.Def + } + return false +} + +type CreateCastStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Sourcetype *TypeName `protobuf:"bytes,1,opt,name=sourcetype,proto3" json:"sourcetype,omitempty"` + Targettype *TypeName `protobuf:"bytes,2,opt,name=targettype,proto3" json:"targettype,omitempty"` + Func *ObjectWithArgs `protobuf:"bytes,3,opt,name=func,proto3" json:"func,omitempty"` + Context CoercionContext `protobuf:"varint,4,opt,name=context,proto3,enum=pg_query.CoercionContext" json:"context,omitempty"` + Inout bool `protobuf:"varint,5,opt,name=inout,proto3" json:"inout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateCastStmt) Reset() { + *x = CreateCastStmt{} + mi := &file_pg_query_proto_msgTypes[258] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateCastStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCastStmt) ProtoMessage() {} + +func (x *CreateCastStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[258] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateCastStmt.ProtoReflect.Descriptor instead. +func (*CreateCastStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{258} +} + +func (x *CreateCastStmt) GetSourcetype() *TypeName { + if x != nil { + return x.Sourcetype + } + return nil +} + +func (x *CreateCastStmt) GetTargettype() *TypeName { + if x != nil { + return x.Targettype + } + return nil +} + +func (x *CreateCastStmt) GetFunc() *ObjectWithArgs { + if x != nil { + return x.Func + } + return nil +} + +func (x *CreateCastStmt) GetContext() CoercionContext { + if x != nil { + return x.Context + } + return CoercionContext_COERCION_CONTEXT_UNDEFINED +} + +func (x *CreateCastStmt) GetInout() bool { + if x != nil { + return x.Inout + } + return false +} + +type CreateTransformStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Replace bool `protobuf:"varint,1,opt,name=replace,proto3" json:"replace,omitempty"` + TypeName *TypeName `protobuf:"bytes,2,opt,name=type_name,proto3" json:"type_name,omitempty"` + Lang string `protobuf:"bytes,3,opt,name=lang,proto3" json:"lang,omitempty"` + Fromsql *ObjectWithArgs `protobuf:"bytes,4,opt,name=fromsql,proto3" json:"fromsql,omitempty"` + Tosql *ObjectWithArgs `protobuf:"bytes,5,opt,name=tosql,proto3" json:"tosql,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateTransformStmt) Reset() { + *x = CreateTransformStmt{} + mi := &file_pg_query_proto_msgTypes[259] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateTransformStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTransformStmt) ProtoMessage() {} + +func (x *CreateTransformStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[259] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTransformStmt.ProtoReflect.Descriptor instead. +func (*CreateTransformStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{259} +} + +func (x *CreateTransformStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *CreateTransformStmt) GetTypeName() *TypeName { + if x != nil { + return x.TypeName + } + return nil +} + +func (x *CreateTransformStmt) GetLang() string { + if x != nil { + return x.Lang + } + return "" +} + +func (x *CreateTransformStmt) GetFromsql() *ObjectWithArgs { + if x != nil { + return x.Fromsql + } + return nil +} + +func (x *CreateTransformStmt) GetTosql() *ObjectWithArgs { + if x != nil { + return x.Tosql + } + return nil +} + +type PrepareStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Argtypes []*Node `protobuf:"bytes,2,rep,name=argtypes,proto3" json:"argtypes,omitempty"` + Query *Node `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PrepareStmt) Reset() { + *x = PrepareStmt{} + mi := &file_pg_query_proto_msgTypes[260] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PrepareStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrepareStmt) ProtoMessage() {} + +func (x *PrepareStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[260] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PrepareStmt.ProtoReflect.Descriptor instead. +func (*PrepareStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{260} +} + +func (x *PrepareStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PrepareStmt) GetArgtypes() []*Node { + if x != nil { + return x.Argtypes + } + return nil +} + +func (x *PrepareStmt) GetQuery() *Node { + if x != nil { + return x.Query + } + return nil +} + +type ExecuteStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Params []*Node `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecuteStmt) Reset() { + *x = ExecuteStmt{} + mi := &file_pg_query_proto_msgTypes[261] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecuteStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteStmt) ProtoMessage() {} + +func (x *ExecuteStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[261] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteStmt.ProtoReflect.Descriptor instead. +func (*ExecuteStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{261} +} + +func (x *ExecuteStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ExecuteStmt) GetParams() []*Node { + if x != nil { + return x.Params + } + return nil +} + +type DeallocateStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Isall bool `protobuf:"varint,2,opt,name=isall,proto3" json:"isall,omitempty"` + Location int32 `protobuf:"varint,3,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeallocateStmt) Reset() { + *x = DeallocateStmt{} + mi := &file_pg_query_proto_msgTypes[262] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeallocateStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeallocateStmt) ProtoMessage() {} + +func (x *DeallocateStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[262] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeallocateStmt.ProtoReflect.Descriptor instead. +func (*DeallocateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{262} +} + +func (x *DeallocateStmt) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeallocateStmt) GetIsall() bool { + if x != nil { + return x.Isall + } + return false +} + +func (x *DeallocateStmt) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type DropOwnedStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Roles []*Node `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + Behavior DropBehavior `protobuf:"varint,2,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropOwnedStmt) Reset() { + *x = DropOwnedStmt{} + mi := &file_pg_query_proto_msgTypes[263] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropOwnedStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropOwnedStmt) ProtoMessage() {} + +func (x *DropOwnedStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[263] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropOwnedStmt.ProtoReflect.Descriptor instead. +func (*DropOwnedStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{263} +} + +func (x *DropOwnedStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *DropOwnedStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type ReassignOwnedStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Roles []*Node `protobuf:"bytes,1,rep,name=roles,proto3" json:"roles,omitempty"` + Newrole *RoleSpec `protobuf:"bytes,2,opt,name=newrole,proto3" json:"newrole,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReassignOwnedStmt) Reset() { + *x = ReassignOwnedStmt{} + mi := &file_pg_query_proto_msgTypes[264] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReassignOwnedStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReassignOwnedStmt) ProtoMessage() {} + +func (x *ReassignOwnedStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[264] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReassignOwnedStmt.ProtoReflect.Descriptor instead. +func (*ReassignOwnedStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{264} +} + +func (x *ReassignOwnedStmt) GetRoles() []*Node { + if x != nil { + return x.Roles + } + return nil +} + +func (x *ReassignOwnedStmt) GetNewrole() *RoleSpec { + if x != nil { + return x.Newrole + } + return nil +} + +type AlterTSDictionaryStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Dictname []*Node `protobuf:"bytes,1,rep,name=dictname,proto3" json:"dictname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTSDictionaryStmt) Reset() { + *x = AlterTSDictionaryStmt{} + mi := &file_pg_query_proto_msgTypes[265] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTSDictionaryStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTSDictionaryStmt) ProtoMessage() {} + +func (x *AlterTSDictionaryStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[265] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTSDictionaryStmt.ProtoReflect.Descriptor instead. +func (*AlterTSDictionaryStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{265} +} + +func (x *AlterTSDictionaryStmt) GetDictname() []*Node { + if x != nil { + return x.Dictname + } + return nil +} + +func (x *AlterTSDictionaryStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterTSConfigurationStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind AlterTSConfigType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.AlterTSConfigType" json:"kind,omitempty"` + Cfgname []*Node `protobuf:"bytes,2,rep,name=cfgname,proto3" json:"cfgname,omitempty"` + Tokentype []*Node `protobuf:"bytes,3,rep,name=tokentype,proto3" json:"tokentype,omitempty"` + Dicts []*Node `protobuf:"bytes,4,rep,name=dicts,proto3" json:"dicts,omitempty"` + Override bool `protobuf:"varint,5,opt,name=override,proto3" json:"override,omitempty"` + Replace bool `protobuf:"varint,6,opt,name=replace,proto3" json:"replace,omitempty"` + MissingOk bool `protobuf:"varint,7,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterTSConfigurationStmt) Reset() { + *x = AlterTSConfigurationStmt{} + mi := &file_pg_query_proto_msgTypes[266] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterTSConfigurationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterTSConfigurationStmt) ProtoMessage() {} + +func (x *AlterTSConfigurationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[266] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterTSConfigurationStmt.ProtoReflect.Descriptor instead. +func (*AlterTSConfigurationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{266} +} + +func (x *AlterTSConfigurationStmt) GetKind() AlterTSConfigType { + if x != nil { + return x.Kind + } + return AlterTSConfigType_ALTER_TSCONFIG_TYPE_UNDEFINED +} + +func (x *AlterTSConfigurationStmt) GetCfgname() []*Node { + if x != nil { + return x.Cfgname + } + return nil +} + +func (x *AlterTSConfigurationStmt) GetTokentype() []*Node { + if x != nil { + return x.Tokentype + } + return nil +} + +func (x *AlterTSConfigurationStmt) GetDicts() []*Node { + if x != nil { + return x.Dicts + } + return nil +} + +func (x *AlterTSConfigurationStmt) GetOverride() bool { + if x != nil { + return x.Override + } + return false +} + +func (x *AlterTSConfigurationStmt) GetReplace() bool { + if x != nil { + return x.Replace + } + return false +} + +func (x *AlterTSConfigurationStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +type PublicationTable struct { + state protoimpl.MessageState `protogen:"open.v1"` + Relation *RangeVar `protobuf:"bytes,1,opt,name=relation,proto3" json:"relation,omitempty"` + WhereClause *Node `protobuf:"bytes,2,opt,name=where_clause,json=whereClause,proto3" json:"where_clause,omitempty"` + Columns []*Node `protobuf:"bytes,3,rep,name=columns,proto3" json:"columns,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PublicationTable) Reset() { + *x = PublicationTable{} + mi := &file_pg_query_proto_msgTypes[267] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PublicationTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublicationTable) ProtoMessage() {} + +func (x *PublicationTable) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[267] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublicationTable.ProtoReflect.Descriptor instead. +func (*PublicationTable) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{267} +} + +func (x *PublicationTable) GetRelation() *RangeVar { + if x != nil { + return x.Relation + } + return nil +} + +func (x *PublicationTable) GetWhereClause() *Node { + if x != nil { + return x.WhereClause + } + return nil +} + +func (x *PublicationTable) GetColumns() []*Node { + if x != nil { + return x.Columns + } + return nil +} + +type PublicationObjSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + Pubobjtype PublicationObjSpecType `protobuf:"varint,1,opt,name=pubobjtype,proto3,enum=pg_query.PublicationObjSpecType" json:"pubobjtype,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Pubtable *PublicationTable `protobuf:"bytes,3,opt,name=pubtable,proto3" json:"pubtable,omitempty"` + Location int32 `protobuf:"varint,4,opt,name=location,proto3" json:"location,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PublicationObjSpec) Reset() { + *x = PublicationObjSpec{} + mi := &file_pg_query_proto_msgTypes[268] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PublicationObjSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublicationObjSpec) ProtoMessage() {} + +func (x *PublicationObjSpec) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[268] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublicationObjSpec.ProtoReflect.Descriptor instead. +func (*PublicationObjSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{268} +} + +func (x *PublicationObjSpec) GetPubobjtype() PublicationObjSpecType { + if x != nil { + return x.Pubobjtype + } + return PublicationObjSpecType_PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED +} + +func (x *PublicationObjSpec) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PublicationObjSpec) GetPubtable() *PublicationTable { + if x != nil { + return x.Pubtable + } + return nil +} + +func (x *PublicationObjSpec) GetLocation() int32 { + if x != nil { + return x.Location + } + return 0 +} + +type CreatePublicationStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Pubname string `protobuf:"bytes,1,opt,name=pubname,proto3" json:"pubname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + Pubobjects []*Node `protobuf:"bytes,3,rep,name=pubobjects,proto3" json:"pubobjects,omitempty"` + ForAllTables bool `protobuf:"varint,4,opt,name=for_all_tables,proto3" json:"for_all_tables,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreatePublicationStmt) Reset() { + *x = CreatePublicationStmt{} + mi := &file_pg_query_proto_msgTypes[269] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreatePublicationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePublicationStmt) ProtoMessage() {} + +func (x *CreatePublicationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[269] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePublicationStmt.ProtoReflect.Descriptor instead. +func (*CreatePublicationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{269} +} + +func (x *CreatePublicationStmt) GetPubname() string { + if x != nil { + return x.Pubname + } + return "" +} + +func (x *CreatePublicationStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *CreatePublicationStmt) GetPubobjects() []*Node { + if x != nil { + return x.Pubobjects + } + return nil +} + +func (x *CreatePublicationStmt) GetForAllTables() bool { + if x != nil { + return x.ForAllTables + } + return false +} + +type AlterPublicationStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Pubname string `protobuf:"bytes,1,opt,name=pubname,proto3" json:"pubname,omitempty"` + Options []*Node `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"` + Pubobjects []*Node `protobuf:"bytes,3,rep,name=pubobjects,proto3" json:"pubobjects,omitempty"` + ForAllTables bool `protobuf:"varint,4,opt,name=for_all_tables,proto3" json:"for_all_tables,omitempty"` + Action AlterPublicationAction `protobuf:"varint,5,opt,name=action,proto3,enum=pg_query.AlterPublicationAction" json:"action,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterPublicationStmt) Reset() { + *x = AlterPublicationStmt{} + mi := &file_pg_query_proto_msgTypes[270] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterPublicationStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterPublicationStmt) ProtoMessage() {} + +func (x *AlterPublicationStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[270] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterPublicationStmt.ProtoReflect.Descriptor instead. +func (*AlterPublicationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{270} +} + +func (x *AlterPublicationStmt) GetPubname() string { + if x != nil { + return x.Pubname + } + return "" +} + +func (x *AlterPublicationStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +func (x *AlterPublicationStmt) GetPubobjects() []*Node { + if x != nil { + return x.Pubobjects + } + return nil +} + +func (x *AlterPublicationStmt) GetForAllTables() bool { + if x != nil { + return x.ForAllTables + } + return false +} + +func (x *AlterPublicationStmt) GetAction() AlterPublicationAction { + if x != nil { + return x.Action + } + return AlterPublicationAction_ALTER_PUBLICATION_ACTION_UNDEFINED +} + +type CreateSubscriptionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Subname string `protobuf:"bytes,1,opt,name=subname,proto3" json:"subname,omitempty"` + Conninfo string `protobuf:"bytes,2,opt,name=conninfo,proto3" json:"conninfo,omitempty"` + Publication []*Node `protobuf:"bytes,3,rep,name=publication,proto3" json:"publication,omitempty"` + Options []*Node `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateSubscriptionStmt) Reset() { + *x = CreateSubscriptionStmt{} + mi := &file_pg_query_proto_msgTypes[271] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateSubscriptionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateSubscriptionStmt) ProtoMessage() {} + +func (x *CreateSubscriptionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[271] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*CreateSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{271} +} + +func (x *CreateSubscriptionStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *CreateSubscriptionStmt) GetConninfo() string { + if x != nil { + return x.Conninfo + } + return "" +} + +func (x *CreateSubscriptionStmt) GetPublication() []*Node { + if x != nil { + return x.Publication + } + return nil +} + +func (x *CreateSubscriptionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type AlterSubscriptionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Kind AlterSubscriptionType `protobuf:"varint,1,opt,name=kind,proto3,enum=pg_query.AlterSubscriptionType" json:"kind,omitempty"` + Subname string `protobuf:"bytes,2,opt,name=subname,proto3" json:"subname,omitempty"` + Conninfo string `protobuf:"bytes,3,opt,name=conninfo,proto3" json:"conninfo,omitempty"` + Publication []*Node `protobuf:"bytes,4,rep,name=publication,proto3" json:"publication,omitempty"` + Options []*Node `protobuf:"bytes,5,rep,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AlterSubscriptionStmt) Reset() { + *x = AlterSubscriptionStmt{} + mi := &file_pg_query_proto_msgTypes[272] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AlterSubscriptionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AlterSubscriptionStmt) ProtoMessage() {} + +func (x *AlterSubscriptionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[272] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AlterSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*AlterSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{272} +} + +func (x *AlterSubscriptionStmt) GetKind() AlterSubscriptionType { + if x != nil { + return x.Kind + } + return AlterSubscriptionType_ALTER_SUBSCRIPTION_TYPE_UNDEFINED +} + +func (x *AlterSubscriptionStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *AlterSubscriptionStmt) GetConninfo() string { + if x != nil { + return x.Conninfo + } + return "" +} + +func (x *AlterSubscriptionStmt) GetPublication() []*Node { + if x != nil { + return x.Publication + } + return nil +} + +func (x *AlterSubscriptionStmt) GetOptions() []*Node { + if x != nil { + return x.Options + } + return nil +} + +type DropSubscriptionStmt struct { + state protoimpl.MessageState `protogen:"open.v1"` + Subname string `protobuf:"bytes,1,opt,name=subname,proto3" json:"subname,omitempty"` + MissingOk bool `protobuf:"varint,2,opt,name=missing_ok,proto3" json:"missing_ok,omitempty"` + Behavior DropBehavior `protobuf:"varint,3,opt,name=behavior,proto3,enum=pg_query.DropBehavior" json:"behavior,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DropSubscriptionStmt) Reset() { + *x = DropSubscriptionStmt{} + mi := &file_pg_query_proto_msgTypes[273] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DropSubscriptionStmt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DropSubscriptionStmt) ProtoMessage() {} + +func (x *DropSubscriptionStmt) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[273] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DropSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*DropSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{273} +} + +func (x *DropSubscriptionStmt) GetSubname() string { + if x != nil { + return x.Subname + } + return "" +} + +func (x *DropSubscriptionStmt) GetMissingOk() bool { + if x != nil { + return x.MissingOk + } + return false +} + +func (x *DropSubscriptionStmt) GetBehavior() DropBehavior { + if x != nil { + return x.Behavior + } + return DropBehavior_DROP_BEHAVIOR_UNDEFINED +} + +type ScanToken struct { + state protoimpl.MessageState `protogen:"open.v1"` + Start int32 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + End int32 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"` + Token Token `protobuf:"varint,4,opt,name=token,proto3,enum=pg_query.Token" json:"token,omitempty"` + KeywordKind KeywordKind `protobuf:"varint,5,opt,name=keyword_kind,json=keywordKind,proto3,enum=pg_query.KeywordKind" json:"keyword_kind,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScanToken) Reset() { + *x = ScanToken{} + mi := &file_pg_query_proto_msgTypes[274] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScanToken) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScanToken) ProtoMessage() {} + +func (x *ScanToken) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[274] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScanToken.ProtoReflect.Descriptor instead. +func (*ScanToken) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{274} +} + +func (x *ScanToken) GetStart() int32 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *ScanToken) GetEnd() int32 { + if x != nil { + return x.End + } + return 0 +} + +func (x *ScanToken) GetToken() Token { + if x != nil { + return x.Token + } + return Token_NUL +} + +func (x *ScanToken) GetKeywordKind() KeywordKind { + if x != nil { + return x.KeywordKind + } + return KeywordKind_NO_KEYWORD +} + +// protobuf-c doesn't support optional fields, so any optional strings +// are just an empty string if it should be the equivalent of None/nil. +// +// These fields have `// optional` at the end of the line. +// +// Upstream issue: https://github.com/protobuf-c/protobuf-c/issues/476 +type SummaryResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tables []*SummaryResult_Table `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` + // The value here is the table name (i.e. schema.table or just table). + Aliases map[string]string `protobuf:"bytes,2,rep,name=aliases,proto3" json:"aliases,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + CteNames []string `protobuf:"bytes,3,rep,name=cte_names,json=cteNames,proto3" json:"cte_names,omitempty"` + Functions []*SummaryResult_Function `protobuf:"bytes,4,rep,name=functions,proto3" json:"functions,omitempty"` + FilterColumns []*SummaryResult_FilterColumn `protobuf:"bytes,5,rep,name=filter_columns,json=filterColumns,proto3" json:"filter_columns,omitempty"` + StatementTypes []string `protobuf:"bytes,6,rep,name=statement_types,json=statementTypes,proto3" json:"statement_types,omitempty"` + TruncatedQuery string `protobuf:"bytes,7,opt,name=truncated_query,json=truncatedQuery,proto3" json:"truncated_query,omitempty"` // optional, empty if truncation limit is -1 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SummaryResult) Reset() { + *x = SummaryResult{} + mi := &file_pg_query_proto_msgTypes[275] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SummaryResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SummaryResult) ProtoMessage() {} + +func (x *SummaryResult) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[275] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SummaryResult.ProtoReflect.Descriptor instead. +func (*SummaryResult) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{275} +} + +func (x *SummaryResult) GetTables() []*SummaryResult_Table { + if x != nil { + return x.Tables + } + return nil +} + +func (x *SummaryResult) GetAliases() map[string]string { + if x != nil { + return x.Aliases + } + return nil +} + +func (x *SummaryResult) GetCteNames() []string { + if x != nil { + return x.CteNames + } + return nil +} + +func (x *SummaryResult) GetFunctions() []*SummaryResult_Function { + if x != nil { + return x.Functions + } + return nil +} + +func (x *SummaryResult) GetFilterColumns() []*SummaryResult_FilterColumn { + if x != nil { + return x.FilterColumns + } + return nil +} + +func (x *SummaryResult) GetStatementTypes() []string { + if x != nil { + return x.StatementTypes + } + return nil +} + +func (x *SummaryResult) GetTruncatedQuery() string { + if x != nil { + return x.TruncatedQuery + } + return "" +} + +type SummaryResult_Table struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + SchemaName string `protobuf:"bytes,2,opt,name=schema_name,json=schemaName,proto3" json:"schema_name,omitempty"` + TableName string `protobuf:"bytes,3,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` + Context SummaryResult_Context `protobuf:"varint,4,opt,name=context,proto3,enum=pg_query.SummaryResult_Context" json:"context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SummaryResult_Table) Reset() { + *x = SummaryResult_Table{} + mi := &file_pg_query_proto_msgTypes[276] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SummaryResult_Table) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SummaryResult_Table) ProtoMessage() {} + +func (x *SummaryResult_Table) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[276] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SummaryResult_Table.ProtoReflect.Descriptor instead. +func (*SummaryResult_Table) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{275, 0} +} + +func (x *SummaryResult_Table) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SummaryResult_Table) GetSchemaName() string { + if x != nil { + return x.SchemaName + } + return "" +} + +func (x *SummaryResult_Table) GetTableName() string { + if x != nil { + return x.TableName + } + return "" +} + +func (x *SummaryResult_Table) GetContext() SummaryResult_Context { + if x != nil { + return x.Context + } + return SummaryResult_None +} + +type SummaryResult_Function struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + FunctionName string `protobuf:"bytes,2,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"` + SchemaName string `protobuf:"bytes,3,opt,name=schema_name,json=schemaName,proto3" json:"schema_name,omitempty"` // optional + Context SummaryResult_Context `protobuf:"varint,4,opt,name=context,proto3,enum=pg_query.SummaryResult_Context" json:"context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SummaryResult_Function) Reset() { + *x = SummaryResult_Function{} + mi := &file_pg_query_proto_msgTypes[278] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SummaryResult_Function) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SummaryResult_Function) ProtoMessage() {} + +func (x *SummaryResult_Function) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[278] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SummaryResult_Function.ProtoReflect.Descriptor instead. +func (*SummaryResult_Function) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{275, 2} +} + +func (x *SummaryResult_Function) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SummaryResult_Function) GetFunctionName() string { + if x != nil { + return x.FunctionName + } + return "" +} + +func (x *SummaryResult_Function) GetSchemaName() string { + if x != nil { + return x.SchemaName + } + return "" +} + +func (x *SummaryResult_Function) GetContext() SummaryResult_Context { + if x != nil { + return x.Context + } + return SummaryResult_None +} + +type SummaryResult_FilterColumn struct { + state protoimpl.MessageState `protogen:"open.v1"` + SchemaName string `protobuf:"bytes,1,opt,name=schema_name,json=schemaName,proto3" json:"schema_name,omitempty"` // optional + TableName string `protobuf:"bytes,2,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` // optional + Column string `protobuf:"bytes,3,opt,name=column,proto3" json:"column,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SummaryResult_FilterColumn) Reset() { + *x = SummaryResult_FilterColumn{} + mi := &file_pg_query_proto_msgTypes[279] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SummaryResult_FilterColumn) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SummaryResult_FilterColumn) ProtoMessage() {} + +func (x *SummaryResult_FilterColumn) ProtoReflect() protoreflect.Message { + mi := &file_pg_query_proto_msgTypes[279] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SummaryResult_FilterColumn.ProtoReflect.Descriptor instead. +func (*SummaryResult_FilterColumn) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{275, 3} +} + +func (x *SummaryResult_FilterColumn) GetSchemaName() string { + if x != nil { + return x.SchemaName + } + return "" +} + +func (x *SummaryResult_FilterColumn) GetTableName() string { + if x != nil { + return x.TableName + } + return "" +} + +func (x *SummaryResult_FilterColumn) GetColumn() string { + if x != nil { + return x.Column + } + return "" +} + +var File_pg_query_proto protoreflect.FileDescriptor + +const file_pg_query_proto_rawDesc = "" + + "\n" + + "\x0epg_query.proto\x12\bpg_query\"P\n" + + "\vParseResult\x12\x18\n" + + "\aversion\x18\x01 \x01(\x05R\aversion\x12'\n" + + "\x05stmts\x18\x02 \x03(\v2\x11.pg_query.RawStmtR\x05stmts\"S\n" + + "\n" + + "ScanResult\x12\x18\n" + + "\aversion\x18\x01 \x01(\x05R\aversion\x12+\n" + + "\x06tokens\x18\x02 \x03(\v2\x13.pg_query.ScanTokenR\x06tokens\"\xa3\x90\x01\n" + + "\x04Node\x12'\n" + + "\x05alias\x18\x01 \x01(\v2\x0f.pg_query.AliasH\x00R\x05Alias\x121\n" + + "\trange_var\x18\x02 \x01(\v2\x12.pg_query.RangeVarH\x00R\bRangeVar\x124\n" + + "\n" + + "table_func\x18\x03 \x01(\v2\x13.pg_query.TableFuncH\x00R\tTableFunc\x127\n" + + "\vinto_clause\x18\x04 \x01(\v2\x14.pg_query.IntoClauseH\x00R\n" + + "IntoClause\x12!\n" + + "\x03var\x18\x05 \x01(\v2\r.pg_query.VarH\x00R\x03Var\x12'\n" + + "\x05param\x18\x06 \x01(\v2\x0f.pg_query.ParamH\x00R\x05Param\x12*\n" + + "\x06aggref\x18\a \x01(\v2\x10.pg_query.AggrefH\x00R\x06Aggref\x12=\n" + + "\rgrouping_func\x18\b \x01(\v2\x16.pg_query.GroupingFuncH\x00R\fGroupingFunc\x127\n" + + "\vwindow_func\x18\t \x01(\v2\x14.pg_query.WindowFuncH\x00R\n" + + "WindowFunc\x12]\n" + + "\x19window_func_run_condition\x18\n" + + " \x01(\v2 .pg_query.WindowFuncRunConditionH\x00R\x16WindowFuncRunCondition\x12J\n" + + "\x12merge_support_func\x18\v \x01(\v2\x1a.pg_query.MergeSupportFuncH\x00R\x10MergeSupportFunc\x12F\n" + + "\x10subscripting_ref\x18\f \x01(\v2\x19.pg_query.SubscriptingRefH\x00R\x0fSubscriptingRef\x121\n" + + "\tfunc_expr\x18\r \x01(\v2\x12.pg_query.FuncExprH\x00R\bFuncExpr\x12>\n" + + "\x0enamed_arg_expr\x18\x0e \x01(\v2\x16.pg_query.NamedArgExprH\x00R\fNamedArgExpr\x12+\n" + + "\aop_expr\x18\x0f \x01(\v2\x10.pg_query.OpExprH\x00R\x06OpExpr\x12=\n" + + "\rdistinct_expr\x18\x10 \x01(\v2\x16.pg_query.DistinctExprH\x00R\fDistinctExpr\x128\n" + + "\fnull_if_expr\x18\x11 \x01(\v2\x14.pg_query.NullIfExprH\x00R\n" + + "NullIfExpr\x12N\n" + + "\x14scalar_array_op_expr\x18\x12 \x01(\v2\x1b.pg_query.ScalarArrayOpExprH\x00R\x11ScalarArrayOpExpr\x121\n" + + "\tbool_expr\x18\x13 \x01(\v2\x12.pg_query.BoolExprH\x00R\bBoolExpr\x12.\n" + + "\bsub_link\x18\x14 \x01(\v2\x11.pg_query.SubLinkH\x00R\aSubLink\x12.\n" + + "\bsub_plan\x18\x15 \x01(\v2\x11.pg_query.SubPlanH\x00R\aSubPlan\x12P\n" + + "\x14alternative_sub_plan\x18\x16 \x01(\v2\x1c.pg_query.AlternativeSubPlanH\x00R\x12AlternativeSubPlan\x12:\n" + + "\ffield_select\x18\x17 \x01(\v2\x15.pg_query.FieldSelectH\x00R\vFieldSelect\x127\n" + + "\vfield_store\x18\x18 \x01(\v2\x14.pg_query.FieldStoreH\x00R\n" + + "FieldStore\x12:\n" + + "\frelabel_type\x18\x19 \x01(\v2\x15.pg_query.RelabelTypeH\x00R\vRelabelType\x12;\n" + + "\rcoerce_via_io\x18\x1a \x01(\v2\x15.pg_query.CoerceViaIOH\x00R\vCoerceViaIO\x12G\n" + + "\x11array_coerce_expr\x18\x1b \x01(\v2\x19.pg_query.ArrayCoerceExprH\x00R\x0fArrayCoerceExpr\x12P\n" + + "\x14convert_rowtype_expr\x18\x1c \x01(\v2\x1c.pg_query.ConvertRowtypeExprH\x00R\x12ConvertRowtypeExpr\x12:\n" + + "\fcollate_expr\x18\x1d \x01(\v2\x15.pg_query.CollateExprH\x00R\vCollateExpr\x121\n" + + "\tcase_expr\x18\x1e \x01(\v2\x12.pg_query.CaseExprH\x00R\bCaseExpr\x121\n" + + "\tcase_when\x18\x1f \x01(\v2\x12.pg_query.CaseWhenH\x00R\bCaseWhen\x12>\n" + + "\x0ecase_test_expr\x18 \x01(\v2\x16.pg_query.CaseTestExprH\x00R\fCaseTestExpr\x124\n" + + "\n" + + "array_expr\x18! \x01(\v2\x13.pg_query.ArrayExprH\x00R\tArrayExpr\x12.\n" + + "\brow_expr\x18\" \x01(\v2\x11.pg_query.RowExprH\x00R\aRowExpr\x12D\n" + + "\x10row_compare_expr\x18# \x01(\v2\x18.pg_query.RowCompareExprH\x00R\x0eRowCompareExpr\x12=\n" + + "\rcoalesce_expr\x18$ \x01(\v2\x16.pg_query.CoalesceExprH\x00R\fCoalesceExpr\x128\n" + + "\fmin_max_expr\x18% \x01(\v2\x14.pg_query.MinMaxExprH\x00R\n" + + "MinMaxExpr\x12I\n" + + "\x11sqlvalue_function\x18& \x01(\v2\x1a.pg_query.SQLValueFunctionH\x00R\x10SQLValueFunction\x12.\n" + + "\bxml_expr\x18' \x01(\v2\x11.pg_query.XmlExprH\x00R\aXmlExpr\x127\n" + + "\vjson_format\x18( \x01(\v2\x14.pg_query.JsonFormatH\x00R\n" + + "JsonFormat\x12@\n" + + "\x0ejson_returning\x18) \x01(\v2\x17.pg_query.JsonReturningH\x00R\rJsonReturning\x12A\n" + + "\x0fjson_value_expr\x18* \x01(\v2\x17.pg_query.JsonValueExprH\x00R\rJsonValueExpr\x12S\n" + + "\x15json_constructor_expr\x18+ \x01(\v2\x1d.pg_query.JsonConstructorExprH\x00R\x13JsonConstructorExpr\x12G\n" + + "\x11json_is_predicate\x18, \x01(\v2\x19.pg_query.JsonIsPredicateH\x00R\x0fJsonIsPredicate\x12=\n" + + "\rjson_behavior\x18- \x01(\v2\x16.pg_query.JsonBehaviorH\x00R\fJsonBehavior\x121\n" + + "\tjson_expr\x18. \x01(\v2\x12.pg_query.JsonExprH\x00R\bJsonExpr\x12A\n" + + "\x0fjson_table_path\x18/ \x01(\v2\x17.pg_query.JsonTablePathH\x00R\rJsonTablePath\x12N\n" + + "\x14json_table_path_scan\x180 \x01(\v2\x1b.pg_query.JsonTablePathScanH\x00R\x11JsonTablePathScan\x12W\n" + + "\x17json_table_sibling_join\x181 \x01(\v2\x1e.pg_query.JsonTableSiblingJoinH\x00R\x14JsonTableSiblingJoin\x121\n" + + "\tnull_test\x182 \x01(\v2\x12.pg_query.NullTestH\x00R\bNullTest\x12:\n" + + "\fboolean_test\x183 \x01(\v2\x15.pg_query.BooleanTestH\x00R\vBooleanTest\x12:\n" + + "\fmerge_action\x184 \x01(\v2\x15.pg_query.MergeActionH\x00R\vMergeAction\x12D\n" + + "\x10coerce_to_domain\x185 \x01(\v2\x18.pg_query.CoerceToDomainH\x00R\x0eCoerceToDomain\x12T\n" + + "\x16coerce_to_domain_value\x186 \x01(\v2\x1d.pg_query.CoerceToDomainValueH\x00R\x13CoerceToDomainValue\x12>\n" + + "\x0eset_to_default\x187 \x01(\v2\x16.pg_query.SetToDefaultH\x00R\fSetToDefault\x12A\n" + + "\x0fcurrent_of_expr\x188 \x01(\v2\x17.pg_query.CurrentOfExprH\x00R\rCurrentOfExpr\x12A\n" + + "\x0fnext_value_expr\x189 \x01(\v2\x17.pg_query.NextValueExprH\x00R\rNextValueExpr\x12@\n" + + "\x0einference_elem\x18: \x01(\v2\x17.pg_query.InferenceElemH\x00R\rInferenceElem\x12@\n" + + "\x0ereturning_expr\x18; \x01(\v2\x17.pg_query.ReturningExprH\x00R\rReturningExpr\x12:\n" + + "\ftarget_entry\x18< \x01(\v2\x15.pg_query.TargetEntryH\x00R\vTargetEntry\x12;\n" + + "\rrange_tbl_ref\x18= \x01(\v2\x15.pg_query.RangeTblRefH\x00R\vRangeTblRef\x121\n" + + "\tjoin_expr\x18> \x01(\v2\x12.pg_query.JoinExprH\x00R\bJoinExpr\x121\n" + + "\tfrom_expr\x18? \x01(\v2\x12.pg_query.FromExprH\x00R\bFromExpr\x12D\n" + + "\x10on_conflict_expr\x18@ \x01(\v2\x18.pg_query.OnConflictExprH\x00R\x0eOnConflictExpr\x12'\n" + + "\x05query\x18A \x01(\v2\x0f.pg_query.QueryH\x00R\x05Query\x121\n" + + "\ttype_name\x18B \x01(\v2\x12.pg_query.TypeNameH\x00R\bTypeName\x124\n" + + "\n" + + "column_ref\x18C \x01(\v2\x13.pg_query.ColumnRefH\x00R\tColumnRef\x121\n" + + "\tparam_ref\x18D \x01(\v2\x12.pg_query.ParamRefH\x00R\bParamRef\x12*\n" + + "\x06a_expr\x18E \x01(\v2\x10.pg_query.A_ExprH\x00R\x06A_Expr\x121\n" + + "\ttype_cast\x18F \x01(\v2\x12.pg_query.TypeCastH\x00R\bTypeCast\x12@\n" + + "\x0ecollate_clause\x18G \x01(\v2\x17.pg_query.CollateClauseH\x00R\rCollateClause\x121\n" + + "\trole_spec\x18H \x01(\v2\x12.pg_query.RoleSpecH\x00R\bRoleSpec\x121\n" + + "\tfunc_call\x18I \x01(\v2\x12.pg_query.FuncCallH\x00R\bFuncCall\x12*\n" + + "\x06a_star\x18J \x01(\v2\x10.pg_query.A_StarH\x00R\x06A_Star\x123\n" + + "\ta_indices\x18K \x01(\v2\x13.pg_query.A_IndicesH\x00R\tA_Indices\x12?\n" + + "\ra_indirection\x18L \x01(\v2\x17.pg_query.A_IndirectionH\x00R\rA_Indirection\x12:\n" + + "\fa_array_expr\x18M \x01(\v2\x15.pg_query.A_ArrayExprH\x00R\vA_ArrayExpr\x124\n" + + "\n" + + "res_target\x18N \x01(\v2\x13.pg_query.ResTargetH\x00R\tResTarget\x12D\n" + + "\x10multi_assign_ref\x18O \x01(\v2\x18.pg_query.MultiAssignRefH\x00R\x0eMultiAssignRef\x12+\n" + + "\asort_by\x18P \x01(\v2\x10.pg_query.SortByH\x00R\x06SortBy\x124\n" + + "\n" + + "window_def\x18Q \x01(\v2\x13.pg_query.WindowDefH\x00R\tWindowDef\x12C\n" + + "\x0frange_subselect\x18R \x01(\v2\x18.pg_query.RangeSubselectH\x00R\x0eRangeSubselect\x12@\n" + + "\x0erange_function\x18S \x01(\v2\x17.pg_query.RangeFunctionH\x00R\rRangeFunction\x12D\n" + + "\x10range_table_func\x18T \x01(\v2\x18.pg_query.RangeTableFuncH\x00R\x0eRangeTableFunc\x12N\n" + + "\x14range_table_func_col\x18U \x01(\v2\x1b.pg_query.RangeTableFuncColH\x00R\x11RangeTableFuncCol\x12J\n" + + "\x12range_table_sample\x18V \x01(\v2\x1a.pg_query.RangeTableSampleH\x00R\x10RangeTableSample\x124\n" + + "\n" + + "column_def\x18W \x01(\v2\x13.pg_query.ColumnDefH\x00R\tColumnDef\x12G\n" + + "\x11table_like_clause\x18X \x01(\v2\x19.pg_query.TableLikeClauseH\x00R\x0fTableLikeClause\x124\n" + + "\n" + + "index_elem\x18Y \x01(\v2\x13.pg_query.IndexElemH\x00R\tIndexElem\x12.\n" + + "\bdef_elem\x18Z \x01(\v2\x11.pg_query.DefElemH\x00R\aDefElem\x12@\n" + + "\x0elocking_clause\x18[ \x01(\v2\x17.pg_query.LockingClauseH\x00R\rLockingClause\x12=\n" + + "\rxml_serialize\x18\\ \x01(\v2\x16.pg_query.XmlSerializeH\x00R\fXmlSerialize\x12@\n" + + "\x0epartition_elem\x18] \x01(\v2\x17.pg_query.PartitionElemH\x00R\rPartitionElem\x12@\n" + + "\x0epartition_spec\x18^ \x01(\v2\x17.pg_query.PartitionSpecH\x00R\rPartitionSpec\x12P\n" + + "\x14partition_bound_spec\x18_ \x01(\v2\x1c.pg_query.PartitionBoundSpecH\x00R\x12PartitionBoundSpec\x12S\n" + + "\x15partition_range_datum\x18` \x01(\v2\x1d.pg_query.PartitionRangeDatumH\x00R\x13PartitionRangeDatum\x12=\n" + + "\rpartition_cmd\x18a \x01(\v2\x16.pg_query.PartitionCmdH\x00R\fPartitionCmd\x12A\n" + + "\x0frange_tbl_entry\x18b \x01(\v2\x17.pg_query.RangeTblEntryH\x00R\rRangeTblEntry\x12L\n" + + "\x12rtepermission_info\x18c \x01(\v2\x1b.pg_query.RTEPermissionInfoH\x00R\x11RTEPermissionInfo\x12J\n" + + "\x12range_tbl_function\x18d \x01(\v2\x1a.pg_query.RangeTblFunctionH\x00R\x10RangeTblFunction\x12M\n" + + "\x13table_sample_clause\x18e \x01(\v2\x1b.pg_query.TableSampleClauseH\x00R\x11TableSampleClause\x12G\n" + + "\x11with_check_option\x18f \x01(\v2\x19.pg_query.WithCheckOptionH\x00R\x0fWithCheckOption\x12G\n" + + "\x11sort_group_clause\x18g \x01(\v2\x19.pg_query.SortGroupClauseH\x00R\x0fSortGroupClause\x12:\n" + + "\fgrouping_set\x18h \x01(\v2\x15.pg_query.GroupingSetH\x00R\vGroupingSet\x12=\n" + + "\rwindow_clause\x18i \x01(\v2\x16.pg_query.WindowClauseH\x00R\fWindowClause\x12A\n" + + "\x0frow_mark_clause\x18j \x01(\v2\x17.pg_query.RowMarkClauseH\x00R\rRowMarkClause\x127\n" + + "\vwith_clause\x18k \x01(\v2\x14.pg_query.WithClauseH\x00R\n" + + "WithClause\x12:\n" + + "\finfer_clause\x18l \x01(\v2\x15.pg_query.InferClauseH\x00R\vInferClause\x12J\n" + + "\x12on_conflict_clause\x18m \x01(\v2\x1a.pg_query.OnConflictClauseH\x00R\x10OnConflictClause\x12F\n" + + "\x10ctesearch_clause\x18n \x01(\v2\x19.pg_query.CTESearchClauseH\x00R\x0fCTESearchClause\x12C\n" + + "\x0fctecycle_clause\x18o \x01(\v2\x18.pg_query.CTECycleClauseH\x00R\x0eCTECycleClause\x12G\n" + + "\x11common_table_expr\x18p \x01(\v2\x19.pg_query.CommonTableExprH\x00R\x0fCommonTableExpr\x12G\n" + + "\x11merge_when_clause\x18q \x01(\v2\x19.pg_query.MergeWhenClauseH\x00R\x0fMergeWhenClause\x12F\n" + + "\x10returning_option\x18r \x01(\v2\x19.pg_query.ReturningOptionH\x00R\x0fReturningOption\x12F\n" + + "\x10returning_clause\x18s \x01(\v2\x19.pg_query.ReturningClauseH\x00R\x0fReturningClause\x12L\n" + + "\x12trigger_transition\x18t \x01(\v2\x1b.pg_query.TriggerTransitionH\x00R\x11TriggerTransition\x127\n" + + "\vjson_output\x18u \x01(\v2\x14.pg_query.JsonOutputH\x00R\n" + + "JsonOutput\x12=\n" + + "\rjson_argument\x18v \x01(\v2\x16.pg_query.JsonArgumentH\x00R\fJsonArgument\x12>\n" + + "\x0ejson_func_expr\x18w \x01(\v2\x16.pg_query.JsonFuncExprH\x00R\fJsonFuncExpr\x12N\n" + + "\x14json_table_path_spec\x18x \x01(\v2\x1b.pg_query.JsonTablePathSpecH\x00R\x11JsonTablePathSpec\x124\n" + + "\n" + + "json_table\x18y \x01(\v2\x13.pg_query.JsonTableH\x00R\tJsonTable\x12G\n" + + "\x11json_table_column\x18z \x01(\v2\x19.pg_query.JsonTableColumnH\x00R\x0fJsonTableColumn\x12>\n" + + "\x0ejson_key_value\x18{ \x01(\v2\x16.pg_query.JsonKeyValueH\x00R\fJsonKeyValue\x12A\n" + + "\x0fjson_parse_expr\x18| \x01(\v2\x17.pg_query.JsonParseExprH\x00R\rJsonParseExpr\x12D\n" + + "\x10json_scalar_expr\x18} \x01(\v2\x18.pg_query.JsonScalarExprH\x00R\x0eJsonScalarExpr\x12M\n" + + "\x13json_serialize_expr\x18~ \x01(\v2\x1b.pg_query.JsonSerializeExprH\x00R\x11JsonSerializeExpr\x12Y\n" + + "\x17json_object_constructor\x18\x7f \x01(\v2\x1f.pg_query.JsonObjectConstructorH\x00R\x15JsonObjectConstructor\x12W\n" + + "\x16json_array_constructor\x18\x80\x01 \x01(\v2\x1e.pg_query.JsonArrayConstructorH\x00R\x14JsonArrayConstructor\x12g\n" + + "\x1cjson_array_query_constructor\x18\x81\x01 \x01(\v2#.pg_query.JsonArrayQueryConstructorH\x00R\x19JsonArrayQueryConstructor\x12Q\n" + + "\x14json_agg_constructor\x18\x82\x01 \x01(\v2\x1c.pg_query.JsonAggConstructorH\x00R\x12JsonAggConstructor\x12B\n" + + "\x0fjson_object_agg\x18\x83\x01 \x01(\v2\x17.pg_query.JsonObjectAggH\x00R\rJsonObjectAgg\x12?\n" + + "\x0ejson_array_agg\x18\x84\x01 \x01(\v2\x16.pg_query.JsonArrayAggH\x00R\fJsonArrayAgg\x12/\n" + + "\braw_stmt\x18\x85\x01 \x01(\v2\x11.pg_query.RawStmtH\x00R\aRawStmt\x128\n" + + "\vinsert_stmt\x18\x86\x01 \x01(\v2\x14.pg_query.InsertStmtH\x00R\n" + + "InsertStmt\x128\n" + + "\vdelete_stmt\x18\x87\x01 \x01(\v2\x14.pg_query.DeleteStmtH\x00R\n" + + "DeleteStmt\x128\n" + + "\vupdate_stmt\x18\x88\x01 \x01(\v2\x14.pg_query.UpdateStmtH\x00R\n" + + "UpdateStmt\x125\n" + + "\n" + + "merge_stmt\x18\x89\x01 \x01(\v2\x13.pg_query.MergeStmtH\x00R\tMergeStmt\x128\n" + + "\vselect_stmt\x18\x8a\x01 \x01(\v2\x14.pg_query.SelectStmtH\x00R\n" + + "SelectStmt\x12K\n" + + "\x12set_operation_stmt\x18\x8b\x01 \x01(\v2\x1a.pg_query.SetOperationStmtH\x00R\x10SetOperationStmt\x128\n" + + "\vreturn_stmt\x18\x8c\x01 \x01(\v2\x14.pg_query.ReturnStmtH\x00R\n" + + "ReturnStmt\x12>\n" + + "\rplassign_stmt\x18\x8d\x01 \x01(\v2\x16.pg_query.PLAssignStmtH\x00R\fPLAssignStmt\x12K\n" + + "\x12create_schema_stmt\x18\x8e\x01 \x01(\v2\x1a.pg_query.CreateSchemaStmtH\x00R\x10CreateSchemaStmt\x12E\n" + + "\x10alter_table_stmt\x18\x8f\x01 \x01(\v2\x18.pg_query.AlterTableStmtH\x00R\x0eAlterTableStmt\x12B\n" + + "\x0falter_table_cmd\x18\x90\x01 \x01(\v2\x17.pg_query.AlterTableCmdH\x00R\rAlterTableCmd\x12M\n" + + "\x12atalter_constraint\x18\x91\x01 \x01(\v2\x1b.pg_query.ATAlterConstraintH\x00R\x11ATAlterConstraint\x12T\n" + + "\x15replica_identity_stmt\x18\x92\x01 \x01(\v2\x1d.pg_query.ReplicaIdentityStmtH\x00R\x13ReplicaIdentityStmt\x12Q\n" + + "\x14alter_collation_stmt\x18\x93\x01 \x01(\v2\x1c.pg_query.AlterCollationStmtH\x00R\x12AlterCollationStmt\x12H\n" + + "\x11alter_domain_stmt\x18\x94\x01 \x01(\v2\x19.pg_query.AlterDomainStmtH\x00R\x0fAlterDomainStmt\x125\n" + + "\n" + + "grant_stmt\x18\x95\x01 \x01(\v2\x13.pg_query.GrantStmtH\x00R\tGrantStmt\x12E\n" + + "\x10object_with_args\x18\x96\x01 \x01(\v2\x18.pg_query.ObjectWithArgsH\x00R\x0eObjectWithArgs\x128\n" + + "\vaccess_priv\x18\x97\x01 \x01(\v2\x14.pg_query.AccessPrivH\x00R\n" + + "AccessPriv\x12B\n" + + "\x0fgrant_role_stmt\x18\x98\x01 \x01(\v2\x17.pg_query.GrantRoleStmtH\x00R\rGrantRoleStmt\x12j\n" + + "\x1dalter_default_privileges_stmt\x18\x99\x01 \x01(\v2$.pg_query.AlterDefaultPrivilegesStmtH\x00R\x1aAlterDefaultPrivilegesStmt\x122\n" + + "\tcopy_stmt\x18\x9a\x01 \x01(\v2\x12.pg_query.CopyStmtH\x00R\bCopyStmt\x12H\n" + + "\x11variable_set_stmt\x18\x9b\x01 \x01(\v2\x19.pg_query.VariableSetStmtH\x00R\x0fVariableSetStmt\x12K\n" + + "\x12variable_show_stmt\x18\x9c\x01 \x01(\v2\x1a.pg_query.VariableShowStmtH\x00R\x10VariableShowStmt\x128\n" + + "\vcreate_stmt\x18\x9d\x01 \x01(\v2\x14.pg_query.CreateStmtH\x00R\n" + + "CreateStmt\x127\n" + + "\n" + + "constraint\x18\x9e\x01 \x01(\v2\x14.pg_query.ConstraintH\x00R\n" + + "Constraint\x12X\n" + + "\x17create_table_space_stmt\x18\x9f\x01 \x01(\v2\x1e.pg_query.CreateTableSpaceStmtH\x00R\x14CreateTableSpaceStmt\x12R\n" + + "\x15drop_table_space_stmt\x18\xa0\x01 \x01(\v2\x1c.pg_query.DropTableSpaceStmtH\x00R\x12DropTableSpaceStmt\x12k\n" + + "\x1ealter_table_space_options_stmt\x18\xa1\x01 \x01(\v2$.pg_query.AlterTableSpaceOptionsStmtH\x00R\x1aAlterTableSpaceOptionsStmt\x12\\\n" + + "\x19alter_table_move_all_stmt\x18\xa2\x01 \x01(\v2\x1f.pg_query.AlterTableMoveAllStmtH\x00R\x15AlterTableMoveAllStmt\x12T\n" + + "\x15create_extension_stmt\x18\xa3\x01 \x01(\v2\x1d.pg_query.CreateExtensionStmtH\x00R\x13CreateExtensionStmt\x12Q\n" + + "\x14alter_extension_stmt\x18\xa4\x01 \x01(\v2\x1c.pg_query.AlterExtensionStmtH\x00R\x12AlterExtensionStmt\x12j\n" + + "\x1dalter_extension_contents_stmt\x18\xa5\x01 \x01(\v2$.pg_query.AlterExtensionContentsStmtH\x00R\x1aAlterExtensionContentsStmt\x12B\n" + + "\x0fcreate_fdw_stmt\x18\xa6\x01 \x01(\v2\x17.pg_query.CreateFdwStmtH\x00R\rCreateFdwStmt\x12?\n" + + "\x0ealter_fdw_stmt\x18\xa7\x01 \x01(\v2\x16.pg_query.AlterFdwStmtH\x00R\fAlterFdwStmt\x12a\n" + + "\x1acreate_foreign_server_stmt\x18\xa8\x01 \x01(\v2!.pg_query.CreateForeignServerStmtH\x00R\x17CreateForeignServerStmt\x12^\n" + + "\x19alter_foreign_server_stmt\x18\xa9\x01 \x01(\v2 .pg_query.AlterForeignServerStmtH\x00R\x16AlterForeignServerStmt\x12^\n" + + "\x19create_foreign_table_stmt\x18\xaa\x01 \x01(\v2 .pg_query.CreateForeignTableStmtH\x00R\x16CreateForeignTableStmt\x12[\n" + + "\x18create_user_mapping_stmt\x18\xab\x01 \x01(\v2\x1f.pg_query.CreateUserMappingStmtH\x00R\x15CreateUserMappingStmt\x12X\n" + + "\x17alter_user_mapping_stmt\x18\xac\x01 \x01(\v2\x1e.pg_query.AlterUserMappingStmtH\x00R\x14AlterUserMappingStmt\x12U\n" + + "\x16drop_user_mapping_stmt\x18\xad\x01 \x01(\v2\x1d.pg_query.DropUserMappingStmtH\x00R\x13DropUserMappingStmt\x12a\n" + + "\x1aimport_foreign_schema_stmt\x18\xae\x01 \x01(\v2!.pg_query.ImportForeignSchemaStmtH\x00R\x17ImportForeignSchemaStmt\x12K\n" + + "\x12create_policy_stmt\x18\xaf\x01 \x01(\v2\x1a.pg_query.CreatePolicyStmtH\x00R\x10CreatePolicyStmt\x12H\n" + + "\x11alter_policy_stmt\x18\xb0\x01 \x01(\v2\x19.pg_query.AlterPolicyStmtH\x00R\x0fAlterPolicyStmt\x12?\n" + + "\x0ecreate_am_stmt\x18\xb1\x01 \x01(\v2\x16.pg_query.CreateAmStmtH\x00R\fCreateAmStmt\x12E\n" + + "\x10create_trig_stmt\x18\xb2\x01 \x01(\v2\x18.pg_query.CreateTrigStmtH\x00R\x0eCreateTrigStmt\x12U\n" + + "\x16create_event_trig_stmt\x18\xb3\x01 \x01(\v2\x1d.pg_query.CreateEventTrigStmtH\x00R\x13CreateEventTrigStmt\x12R\n" + + "\x15alter_event_trig_stmt\x18\xb4\x01 \x01(\v2\x1c.pg_query.AlterEventTrigStmtH\x00R\x12AlterEventTrigStmt\x12H\n" + + "\x11create_plang_stmt\x18\xb5\x01 \x01(\v2\x19.pg_query.CreatePLangStmtH\x00R\x0fCreatePLangStmt\x12E\n" + + "\x10create_role_stmt\x18\xb6\x01 \x01(\v2\x18.pg_query.CreateRoleStmtH\x00R\x0eCreateRoleStmt\x12B\n" + + "\x0falter_role_stmt\x18\xb7\x01 \x01(\v2\x17.pg_query.AlterRoleStmtH\x00R\rAlterRoleStmt\x12L\n" + + "\x13alter_role_set_stmt\x18\xb8\x01 \x01(\v2\x1a.pg_query.AlterRoleSetStmtH\x00R\x10AlterRoleSetStmt\x12?\n" + + "\x0edrop_role_stmt\x18\xb9\x01 \x01(\v2\x16.pg_query.DropRoleStmtH\x00R\fDropRoleStmt\x12B\n" + + "\x0fcreate_seq_stmt\x18\xba\x01 \x01(\v2\x17.pg_query.CreateSeqStmtH\x00R\rCreateSeqStmt\x12?\n" + + "\x0ealter_seq_stmt\x18\xbb\x01 \x01(\v2\x16.pg_query.AlterSeqStmtH\x00R\fAlterSeqStmt\x128\n" + + "\vdefine_stmt\x18\xbc\x01 \x01(\v2\x14.pg_query.DefineStmtH\x00R\n" + + "DefineStmt\x12K\n" + + "\x12create_domain_stmt\x18\xbd\x01 \x01(\v2\x1a.pg_query.CreateDomainStmtH\x00R\x10CreateDomainStmt\x12O\n" + + "\x14create_op_class_stmt\x18\xbe\x01 \x01(\v2\x1b.pg_query.CreateOpClassStmtH\x00R\x11CreateOpClassStmt\x12O\n" + + "\x14create_op_class_item\x18\xbf\x01 \x01(\v2\x1b.pg_query.CreateOpClassItemH\x00R\x11CreateOpClassItem\x12R\n" + + "\x15create_op_family_stmt\x18\xc0\x01 \x01(\v2\x1c.pg_query.CreateOpFamilyStmtH\x00R\x12CreateOpFamilyStmt\x12O\n" + + "\x14alter_op_family_stmt\x18\xc1\x01 \x01(\v2\x1b.pg_query.AlterOpFamilyStmtH\x00R\x11AlterOpFamilyStmt\x122\n" + + "\tdrop_stmt\x18\xc2\x01 \x01(\v2\x12.pg_query.DropStmtH\x00R\bDropStmt\x12>\n" + + "\rtruncate_stmt\x18\xc3\x01 \x01(\v2\x16.pg_query.TruncateStmtH\x00R\fTruncateStmt\x12;\n" + + "\fcomment_stmt\x18\xc4\x01 \x01(\v2\x15.pg_query.CommentStmtH\x00R\vCommentStmt\x12?\n" + + "\x0esec_label_stmt\x18\xc5\x01 \x01(\v2\x16.pg_query.SecLabelStmtH\x00R\fSecLabelStmt\x12N\n" + + "\x13declare_cursor_stmt\x18\xc6\x01 \x01(\v2\x1b.pg_query.DeclareCursorStmtH\x00R\x11DeclareCursorStmt\x12H\n" + + "\x11close_portal_stmt\x18\xc7\x01 \x01(\v2\x19.pg_query.ClosePortalStmtH\x00R\x0fClosePortalStmt\x125\n" + + "\n" + + "fetch_stmt\x18\xc8\x01 \x01(\v2\x13.pg_query.FetchStmtH\x00R\tFetchStmt\x125\n" + + "\n" + + "index_stmt\x18\xc9\x01 \x01(\v2\x13.pg_query.IndexStmtH\x00R\tIndexStmt\x12H\n" + + "\x11create_stats_stmt\x18\xca\x01 \x01(\v2\x19.pg_query.CreateStatsStmtH\x00R\x0fCreateStatsStmt\x125\n" + + "\n" + + "stats_elem\x18\xcb\x01 \x01(\v2\x13.pg_query.StatsElemH\x00R\tStatsElem\x12E\n" + + "\x10alter_stats_stmt\x18\xcc\x01 \x01(\v2\x18.pg_query.AlterStatsStmtH\x00R\x0eAlterStatsStmt\x12Q\n" + + "\x14create_function_stmt\x18\xcd\x01 \x01(\v2\x1c.pg_query.CreateFunctionStmtH\x00R\x12CreateFunctionStmt\x12M\n" + + "\x12function_parameter\x18\xce\x01 \x01(\v2\x1b.pg_query.FunctionParameterH\x00R\x11FunctionParameter\x12N\n" + + "\x13alter_function_stmt\x18\xcf\x01 \x01(\v2\x1b.pg_query.AlterFunctionStmtH\x00R\x11AlterFunctionStmt\x12,\n" + + "\ado_stmt\x18\xd0\x01 \x01(\v2\x10.pg_query.DoStmtH\x00R\x06DoStmt\x12H\n" + + "\x11inline_code_block\x18\xd1\x01 \x01(\v2\x19.pg_query.InlineCodeBlockH\x00R\x0fInlineCodeBlock\x122\n" + + "\tcall_stmt\x18\xd2\x01 \x01(\v2\x12.pg_query.CallStmtH\x00R\bCallStmt\x12;\n" + + "\fcall_context\x18\xd3\x01 \x01(\v2\x15.pg_query.CallContextH\x00R\vCallContext\x128\n" + + "\vrename_stmt\x18\xd4\x01 \x01(\v2\x14.pg_query.RenameStmtH\x00R\n" + + "RenameStmt\x12^\n" + + "\x19alter_object_depends_stmt\x18\xd5\x01 \x01(\v2 .pg_query.AlterObjectDependsStmtH\x00R\x16AlterObjectDependsStmt\x12[\n" + + "\x18alter_object_schema_stmt\x18\xd6\x01 \x01(\v2\x1f.pg_query.AlterObjectSchemaStmtH\x00R\x15AlterObjectSchemaStmt\x12E\n" + + "\x10alter_owner_stmt\x18\xd7\x01 \x01(\v2\x18.pg_query.AlterOwnerStmtH\x00R\x0eAlterOwnerStmt\x12N\n" + + "\x13alter_operator_stmt\x18\xd8\x01 \x01(\v2\x1b.pg_query.AlterOperatorStmtH\x00R\x11AlterOperatorStmt\x12B\n" + + "\x0falter_type_stmt\x18\xd9\x01 \x01(\v2\x17.pg_query.AlterTypeStmtH\x00R\rAlterTypeStmt\x122\n" + + "\trule_stmt\x18\xda\x01 \x01(\v2\x12.pg_query.RuleStmtH\x00R\bRuleStmt\x128\n" + + "\vnotify_stmt\x18\xdb\x01 \x01(\v2\x14.pg_query.NotifyStmtH\x00R\n" + + "NotifyStmt\x128\n" + + "\vlisten_stmt\x18\xdc\x01 \x01(\v2\x14.pg_query.ListenStmtH\x00R\n" + + "ListenStmt\x12>\n" + + "\runlisten_stmt\x18\xdd\x01 \x01(\v2\x16.pg_query.UnlistenStmtH\x00R\fUnlistenStmt\x12G\n" + + "\x10transaction_stmt\x18\xde\x01 \x01(\v2\x19.pg_query.TransactionStmtH\x00R\x0fTransactionStmt\x12N\n" + + "\x13composite_type_stmt\x18\xdf\x01 \x01(\v2\x1b.pg_query.CompositeTypeStmtH\x00R\x11CompositeTypeStmt\x12E\n" + + "\x10create_enum_stmt\x18\xe0\x01 \x01(\v2\x18.pg_query.CreateEnumStmtH\x00R\x0eCreateEnumStmt\x12H\n" + + "\x11create_range_stmt\x18\xe1\x01 \x01(\v2\x19.pg_query.CreateRangeStmtH\x00R\x0fCreateRangeStmt\x12B\n" + + "\x0falter_enum_stmt\x18\xe2\x01 \x01(\v2\x17.pg_query.AlterEnumStmtH\x00R\rAlterEnumStmt\x122\n" + + "\tview_stmt\x18\xe3\x01 \x01(\v2\x12.pg_query.ViewStmtH\x00R\bViewStmt\x122\n" + + "\tload_stmt\x18\xe4\x01 \x01(\v2\x12.pg_query.LoadStmtH\x00R\bLoadStmt\x12>\n" + + "\rcreatedb_stmt\x18\xe5\x01 \x01(\v2\x16.pg_query.CreatedbStmtH\x00R\fCreatedbStmt\x12N\n" + + "\x13alter_database_stmt\x18\xe6\x01 \x01(\v2\x1b.pg_query.AlterDatabaseStmtH\x00R\x11AlterDatabaseStmt\x12q\n" + + " alter_database_refresh_coll_stmt\x18\xe7\x01 \x01(\v2&.pg_query.AlterDatabaseRefreshCollStmtH\x00R\x1cAlterDatabaseRefreshCollStmt\x12X\n" + + "\x17alter_database_set_stmt\x18\xe8\x01 \x01(\v2\x1e.pg_query.AlterDatabaseSetStmtH\x00R\x14AlterDatabaseSetStmt\x128\n" + + "\vdropdb_stmt\x18\xe9\x01 \x01(\v2\x14.pg_query.DropdbStmtH\x00R\n" + + "DropdbStmt\x12H\n" + + "\x11alter_system_stmt\x18\xea\x01 \x01(\v2\x19.pg_query.AlterSystemStmtH\x00R\x0fAlterSystemStmt\x12;\n" + + "\fcluster_stmt\x18\xeb\x01 \x01(\v2\x15.pg_query.ClusterStmtH\x00R\vClusterStmt\x128\n" + + "\vvacuum_stmt\x18\xec\x01 \x01(\v2\x14.pg_query.VacuumStmtH\x00R\n" + + "VacuumStmt\x12D\n" + + "\x0fvacuum_relation\x18\xed\x01 \x01(\v2\x18.pg_query.VacuumRelationH\x00R\x0eVacuumRelation\x12;\n" + + "\fexplain_stmt\x18\xee\x01 \x01(\v2\x15.pg_query.ExplainStmtH\x00R\vExplainStmt\x12O\n" + + "\x14create_table_as_stmt\x18\xef\x01 \x01(\v2\x1b.pg_query.CreateTableAsStmtH\x00R\x11CreateTableAsStmt\x12R\n" + + "\x15refresh_mat_view_stmt\x18\xf0\x01 \x01(\v2\x1c.pg_query.RefreshMatViewStmtH\x00R\x12RefreshMatViewStmt\x12E\n" + + "\x10check_point_stmt\x18\xf1\x01 \x01(\v2\x18.pg_query.CheckPointStmtH\x00R\x0eCheckPointStmt\x12;\n" + + "\fdiscard_stmt\x18\xf2\x01 \x01(\v2\x15.pg_query.DiscardStmtH\x00R\vDiscardStmt\x122\n" + + "\tlock_stmt\x18\xf3\x01 \x01(\v2\x12.pg_query.LockStmtH\x00R\bLockStmt\x12Q\n" + + "\x14constraints_set_stmt\x18\xf4\x01 \x01(\v2\x1c.pg_query.ConstraintsSetStmtH\x00R\x12ConstraintsSetStmt\x12;\n" + + "\freindex_stmt\x18\xf5\x01 \x01(\v2\x15.pg_query.ReindexStmtH\x00R\vReindexStmt\x12W\n" + + "\x16create_conversion_stmt\x18\xf6\x01 \x01(\v2\x1e.pg_query.CreateConversionStmtH\x00R\x14CreateConversionStmt\x12E\n" + + "\x10create_cast_stmt\x18\xf7\x01 \x01(\v2\x18.pg_query.CreateCastStmtH\x00R\x0eCreateCastStmt\x12T\n" + + "\x15create_transform_stmt\x18\xf8\x01 \x01(\v2\x1d.pg_query.CreateTransformStmtH\x00R\x13CreateTransformStmt\x12;\n" + + "\fprepare_stmt\x18\xf9\x01 \x01(\v2\x15.pg_query.PrepareStmtH\x00R\vPrepareStmt\x12;\n" + + "\fexecute_stmt\x18\xfa\x01 \x01(\v2\x15.pg_query.ExecuteStmtH\x00R\vExecuteStmt\x12D\n" + + "\x0fdeallocate_stmt\x18\xfb\x01 \x01(\v2\x18.pg_query.DeallocateStmtH\x00R\x0eDeallocateStmt\x12B\n" + + "\x0fdrop_owned_stmt\x18\xfc\x01 \x01(\v2\x17.pg_query.DropOwnedStmtH\x00R\rDropOwnedStmt\x12N\n" + + "\x13reassign_owned_stmt\x18\xfd\x01 \x01(\v2\x1b.pg_query.ReassignOwnedStmtH\x00R\x11ReassignOwnedStmt\x12Z\n" + + "\x17alter_tsdictionary_stmt\x18\xfe\x01 \x01(\v2\x1f.pg_query.AlterTSDictionaryStmtH\x00R\x15AlterTSDictionaryStmt\x12c\n" + + "\x1aalter_tsconfiguration_stmt\x18\xff\x01 \x01(\v2\".pg_query.AlterTSConfigurationStmtH\x00R\x18AlterTSConfigurationStmt\x12J\n" + + "\x11publication_table\x18\x80\x02 \x01(\v2\x1a.pg_query.PublicationTableH\x00R\x10PublicationTable\x12Q\n" + + "\x14publication_obj_spec\x18\x81\x02 \x01(\v2\x1c.pg_query.PublicationObjSpecH\x00R\x12PublicationObjSpec\x12Z\n" + + "\x17create_publication_stmt\x18\x82\x02 \x01(\v2\x1f.pg_query.CreatePublicationStmtH\x00R\x15CreatePublicationStmt\x12W\n" + + "\x16alter_publication_stmt\x18\x83\x02 \x01(\v2\x1e.pg_query.AlterPublicationStmtH\x00R\x14AlterPublicationStmt\x12]\n" + + "\x18create_subscription_stmt\x18\x84\x02 \x01(\v2 .pg_query.CreateSubscriptionStmtH\x00R\x16CreateSubscriptionStmt\x12Z\n" + + "\x17alter_subscription_stmt\x18\x85\x02 \x01(\v2\x1f.pg_query.AlterSubscriptionStmtH\x00R\x15AlterSubscriptionStmt\x12W\n" + + "\x16drop_subscription_stmt\x18\x86\x02 \x01(\v2\x1e.pg_query.DropSubscriptionStmtH\x00R\x14DropSubscriptionStmt\x12.\n" + + "\ainteger\x18\x87\x02 \x01(\v2\x11.pg_query.IntegerH\x00R\aInteger\x12(\n" + + "\x05float\x18\x88\x02 \x01(\v2\x0f.pg_query.FloatH\x00R\x05Float\x12.\n" + + "\aboolean\x18\x89\x02 \x01(\v2\x11.pg_query.BooleanH\x00R\aBoolean\x12+\n" + + "\x06string\x18\x8a\x02 \x01(\v2\x10.pg_query.StringH\x00R\x06String\x125\n" + + "\n" + + "bit_string\x18\x8b\x02 \x01(\v2\x13.pg_query.BitStringH\x00R\tBitString\x12%\n" + + "\x04list\x18\x8c\x02 \x01(\v2\x0e.pg_query.ListH\x00R\x04List\x12/\n" + + "\bint_list\x18\x8d\x02 \x01(\v2\x11.pg_query.IntListH\x00R\aIntList\x12/\n" + + "\boid_list\x18\x8e\x02 \x01(\v2\x11.pg_query.OidListH\x00R\aOidList\x12.\n" + + "\aa_const\x18\x8f\x02 \x01(\v2\x11.pg_query.A_ConstH\x00R\aA_ConstB\x06\n" + + "\x04node\"\x1d\n" + + "\aInteger\x12\x12\n" + + "\x04ival\x18\x01 \x01(\x05R\x04ival\"\x1b\n" + + "\x05Float\x12\x12\n" + + "\x04fval\x18\x01 \x01(\tR\x04fval\"#\n" + + "\aBoolean\x12\x18\n" + + "\aboolval\x18\x01 \x01(\bR\aboolval\"\x1c\n" + + "\x06String\x12\x12\n" + + "\x04sval\x18\x01 \x01(\tR\x04sval\"!\n" + + "\tBitString\x12\x14\n" + + "\x05bsval\x18\x01 \x01(\tR\x05bsval\",\n" + + "\x04List\x12$\n" + + "\x05items\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05items\"/\n" + + "\aOidList\x12$\n" + + "\x05items\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05items\"/\n" + + "\aIntList\x12$\n" + + "\x05items\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05items\"\x98\x02\n" + + "\aA_Const\x12'\n" + + "\x04ival\x18\x01 \x01(\v2\x11.pg_query.IntegerH\x00R\x04ival\x12%\n" + + "\x04fval\x18\x02 \x01(\v2\x0f.pg_query.FloatH\x00R\x04fval\x12-\n" + + "\aboolval\x18\x03 \x01(\v2\x11.pg_query.BooleanH\x00R\aboolval\x12&\n" + + "\x04sval\x18\x04 \x01(\v2\x10.pg_query.StringH\x00R\x04sval\x12+\n" + + "\x05bsval\x18\x05 \x01(\v2\x13.pg_query.BitStringH\x00R\x05bsval\x12\x16\n" + + "\x06isnull\x18\n" + + " \x01(\bR\x06isnull\x12\x1a\n" + + "\blocation\x18\v \x01(\x05R\blocationB\x05\n" + + "\x03val\"Q\n" + + "\x05Alias\x12\x1c\n" + + "\taliasname\x18\x01 \x01(\tR\taliasname\x12*\n" + + "\bcolnames\x18\x02 \x03(\v2\x0e.pg_query.NodeR\bcolnames\"\xe3\x01\n" + + "\bRangeVar\x12 \n" + + "\vcatalogname\x18\x01 \x01(\tR\vcatalogname\x12\x1e\n" + + "\n" + + "schemaname\x18\x02 \x01(\tR\n" + + "schemaname\x12\x18\n" + + "\arelname\x18\x03 \x01(\tR\arelname\x12\x10\n" + + "\x03inh\x18\x04 \x01(\bR\x03inh\x12&\n" + + "\x0erelpersistence\x18\x05 \x01(\tR\x0erelpersistence\x12%\n" + + "\x05alias\x18\x06 \x01(\v2\x0f.pg_query.AliasR\x05alias\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xf4\x05\n" + + "\tTableFunc\x123\n" + + "\bfunctype\x18\x01 \x01(\x0e2\x17.pg_query.TableFuncTypeR\bfunctype\x12(\n" + + "\ans_uris\x18\x02 \x03(\v2\x0e.pg_query.NodeR\ans_uris\x12*\n" + + "\bns_names\x18\x03 \x03(\v2\x0e.pg_query.NodeR\bns_names\x12(\n" + + "\adocexpr\x18\x04 \x01(\v2\x0e.pg_query.NodeR\adocexpr\x12(\n" + + "\arowexpr\x18\x05 \x01(\v2\x0e.pg_query.NodeR\arowexpr\x12*\n" + + "\bcolnames\x18\x06 \x03(\v2\x0e.pg_query.NodeR\bcolnames\x12*\n" + + "\bcoltypes\x18\a \x03(\v2\x0e.pg_query.NodeR\bcoltypes\x12.\n" + + "\n" + + "coltypmods\x18\b \x03(\v2\x0e.pg_query.NodeR\n" + + "coltypmods\x124\n" + + "\rcolcollations\x18\t \x03(\v2\x0e.pg_query.NodeR\rcolcollations\x12*\n" + + "\bcolexprs\x18\n" + + " \x03(\v2\x0e.pg_query.NodeR\bcolexprs\x120\n" + + "\vcoldefexprs\x18\v \x03(\v2\x0e.pg_query.NodeR\vcoldefexprs\x120\n" + + "\vcolvalexprs\x18\f \x03(\v2\x0e.pg_query.NodeR\vcolvalexprs\x128\n" + + "\x0fpassingvalexprs\x18\r \x03(\v2\x0e.pg_query.NodeR\x0fpassingvalexprs\x12\x1a\n" + + "\bnotnulls\x18\x0e \x03(\x04R\bnotnulls\x12\"\n" + + "\x04plan\x18\x0f \x01(\v2\x0e.pg_query.NodeR\x04plan\x12$\n" + + "\rordinalitycol\x18\x10 \x01(\x05R\rordinalitycol\x12\x1a\n" + + "\blocation\x18\x11 \x01(\x05R\blocation\"\xdc\x02\n" + + "\n" + + "IntoClause\x12$\n" + + "\x03rel\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\x03rel\x12+\n" + + "\tcol_names\x18\x02 \x03(\v2\x0e.pg_query.NodeR\bcolNames\x12#\n" + + "\raccess_method\x18\x03 \x01(\tR\faccessMethod\x12(\n" + + "\aoptions\x18\x04 \x03(\v2\x0e.pg_query.NodeR\aoptions\x125\n" + + "\ton_commit\x18\x05 \x01(\x0e2\x18.pg_query.OnCommitActionR\bonCommit\x12(\n" + + "\x10table_space_name\x18\x06 \x01(\tR\x0etableSpaceName\x12.\n" + + "\n" + + "view_query\x18\a \x01(\v2\x0f.pg_query.QueryR\tviewQuery\x12\x1b\n" + + "\tskip_data\x18\b \x01(\bR\bskipData\"\xdd\x02\n" + + "\x03Var\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x14\n" + + "\x05varno\x18\x02 \x01(\x05R\x05varno\x12\x1a\n" + + "\bvarattno\x18\x03 \x01(\x05R\bvarattno\x12\x18\n" + + "\avartype\x18\x04 \x01(\rR\avartype\x12\x1c\n" + + "\tvartypmod\x18\x05 \x01(\x05R\tvartypmod\x12\x1c\n" + + "\tvarcollid\x18\x06 \x01(\rR\tvarcollid\x12&\n" + + "\x0evarnullingrels\x18\a \x03(\x04R\x0evarnullingrels\x12 \n" + + "\vvarlevelsup\x18\b \x01(\rR\vvarlevelsup\x12F\n" + + "\x10varreturningtype\x18\t \x01(\x0e2\x1a.pg_query.VarReturningTypeR\x10varreturningtype\x12\x1a\n" + + "\blocation\x18\n" + + " \x01(\x05R\blocation\"\xf4\x01\n" + + "\x05Param\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x121\n" + + "\tparamkind\x18\x02 \x01(\x0e2\x13.pg_query.ParamKindR\tparamkind\x12\x18\n" + + "\aparamid\x18\x03 \x01(\x05R\aparamid\x12\x1c\n" + + "\tparamtype\x18\x04 \x01(\rR\tparamtype\x12 \n" + + "\vparamtypmod\x18\x05 \x01(\x05R\vparamtypmod\x12 \n" + + "\vparamcollid\x18\x06 \x01(\rR\vparamcollid\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xb2\x05\n" + + "\x06Aggref\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x1a\n" + + "\baggfnoid\x18\x02 \x01(\rR\baggfnoid\x12\x18\n" + + "\aaggtype\x18\x03 \x01(\rR\aaggtype\x12\x1c\n" + + "\taggcollid\x18\x04 \x01(\rR\taggcollid\x12 \n" + + "\vinputcollid\x18\x05 \x01(\rR\vinputcollid\x120\n" + + "\vaggargtypes\x18\x06 \x03(\v2\x0e.pg_query.NodeR\vaggargtypes\x124\n" + + "\raggdirectargs\x18\a \x03(\v2\x0e.pg_query.NodeR\raggdirectargs\x12\"\n" + + "\x04args\x18\b \x03(\v2\x0e.pg_query.NodeR\x04args\x12*\n" + + "\baggorder\x18\t \x03(\v2\x0e.pg_query.NodeR\baggorder\x120\n" + + "\vaggdistinct\x18\n" + + " \x03(\v2\x0e.pg_query.NodeR\vaggdistinct\x12,\n" + + "\taggfilter\x18\v \x01(\v2\x0e.pg_query.NodeR\taggfilter\x12\x18\n" + + "\aaggstar\x18\f \x01(\bR\aaggstar\x12 \n" + + "\vaggvariadic\x18\r \x01(\bR\vaggvariadic\x12\x18\n" + + "\aaggkind\x18\x0e \x01(\tR\aaggkind\x12 \n" + + "\vagglevelsup\x18\x0f \x01(\rR\vagglevelsup\x12.\n" + + "\baggsplit\x18\x10 \x01(\x0e2\x12.pg_query.AggSplitR\baggsplit\x12\x14\n" + + "\x05aggno\x18\x11 \x01(\x05R\x05aggno\x12\x1e\n" + + "\n" + + "aggtransno\x18\x12 \x01(\x05R\n" + + "aggtransno\x12\x1a\n" + + "\blocation\x18\x13 \x01(\x05R\blocation\"\xb6\x01\n" + + "\fGroupingFunc\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\x04args\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\"\n" + + "\x04refs\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x04refs\x12 \n" + + "\vagglevelsup\x18\x04 \x01(\rR\vagglevelsup\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x91\x03\n" + + "\n" + + "WindowFunc\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x1a\n" + + "\bwinfnoid\x18\x02 \x01(\rR\bwinfnoid\x12\x18\n" + + "\awintype\x18\x03 \x01(\rR\awintype\x12\x1c\n" + + "\twincollid\x18\x04 \x01(\rR\twincollid\x12 \n" + + "\vinputcollid\x18\x05 \x01(\rR\vinputcollid\x12\"\n" + + "\x04args\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x04args\x12,\n" + + "\taggfilter\x18\a \x01(\v2\x0e.pg_query.NodeR\taggfilter\x123\n" + + "\rrun_condition\x18\b \x03(\v2\x0e.pg_query.NodeR\frunCondition\x12\x16\n" + + "\x06winref\x18\t \x01(\rR\x06winref\x12\x18\n" + + "\awinstar\x18\n" + + " \x01(\bR\awinstar\x12\x16\n" + + "\x06winagg\x18\v \x01(\bR\x06winagg\x12\x1a\n" + + "\blocation\x18\f \x01(\x05R\blocation\"\xb2\x01\n" + + "\x16WindowFuncRunCondition\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x12\n" + + "\x04opno\x18\x02 \x01(\rR\x04opno\x12 \n" + + "\vinputcollid\x18\x03 \x01(\rR\vinputcollid\x12\x1e\n" + + "\n" + + "wfunc_left\x18\x04 \x01(\bR\n" + + "wfunc_left\x12 \n" + + "\x03arg\x18\x05 \x01(\v2\x0e.pg_query.NodeR\x03arg\"\x88\x01\n" + + "\x10MergeSupportFunc\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x18\n" + + "\amsftype\x18\x02 \x01(\rR\amsftype\x12\x1c\n" + + "\tmsfcollid\x18\x03 \x01(\rR\tmsfcollid\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xaf\x03\n" + + "\x0fSubscriptingRef\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12*\n" + + "\x10refcontainertype\x18\x02 \x01(\rR\x10refcontainertype\x12 \n" + + "\vrefelemtype\x18\x03 \x01(\rR\vrefelemtype\x12\x1e\n" + + "\n" + + "refrestype\x18\x04 \x01(\rR\n" + + "refrestype\x12\x1c\n" + + "\treftypmod\x18\x05 \x01(\x05R\treftypmod\x12\x1c\n" + + "\trefcollid\x18\x06 \x01(\rR\trefcollid\x128\n" + + "\x0frefupperindexpr\x18\a \x03(\v2\x0e.pg_query.NodeR\x0frefupperindexpr\x128\n" + + "\x0freflowerindexpr\x18\b \x03(\v2\x0e.pg_query.NodeR\x0freflowerindexpr\x12(\n" + + "\arefexpr\x18\t \x01(\v2\x0e.pg_query.NodeR\arefexpr\x122\n" + + "\frefassgnexpr\x18\n" + + " \x01(\v2\x0e.pg_query.NodeR\frefassgnexpr\"\xea\x02\n" + + "\bFuncExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x16\n" + + "\x06funcid\x18\x02 \x01(\rR\x06funcid\x12&\n" + + "\x0efuncresulttype\x18\x03 \x01(\rR\x0efuncresulttype\x12\x1e\n" + + "\n" + + "funcretset\x18\x04 \x01(\bR\n" + + "funcretset\x12\"\n" + + "\ffuncvariadic\x18\x05 \x01(\bR\ffuncvariadic\x126\n" + + "\n" + + "funcformat\x18\x06 \x01(\x0e2\x16.pg_query.CoercionFormR\n" + + "funcformat\x12\x1e\n" + + "\n" + + "funccollid\x18\a \x01(\rR\n" + + "funccollid\x12 \n" + + "\vinputcollid\x18\b \x01(\rR\vinputcollid\x12\"\n" + + "\x04args\x18\t \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\n" + + " \x01(\x05R\blocation\"\xa0\x01\n" + + "\fNamedArgExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x1c\n" + + "\targnumber\x18\x04 \x01(\x05R\targnumber\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xfc\x01\n" + + "\x06OpExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x12\n" + + "\x04opno\x18\x02 \x01(\rR\x04opno\x12\"\n" + + "\fopresulttype\x18\x03 \x01(\rR\fopresulttype\x12\x1a\n" + + "\bopretset\x18\x04 \x01(\bR\bopretset\x12\x1a\n" + + "\bopcollid\x18\x05 \x01(\rR\bopcollid\x12 \n" + + "\vinputcollid\x18\x06 \x01(\rR\vinputcollid\x12\"\n" + + "\x04args\x18\a \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"\x82\x02\n" + + "\fDistinctExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x12\n" + + "\x04opno\x18\x02 \x01(\rR\x04opno\x12\"\n" + + "\fopresulttype\x18\x03 \x01(\rR\fopresulttype\x12\x1a\n" + + "\bopretset\x18\x04 \x01(\bR\bopretset\x12\x1a\n" + + "\bopcollid\x18\x05 \x01(\rR\bopcollid\x12 \n" + + "\vinputcollid\x18\x06 \x01(\rR\vinputcollid\x12\"\n" + + "\x04args\x18\a \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"\x80\x02\n" + + "\n" + + "NullIfExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x12\n" + + "\x04opno\x18\x02 \x01(\rR\x04opno\x12\"\n" + + "\fopresulttype\x18\x03 \x01(\rR\fopresulttype\x12\x1a\n" + + "\bopretset\x18\x04 \x01(\bR\bopretset\x12\x1a\n" + + "\bopcollid\x18\x05 \x01(\rR\bopcollid\x12 \n" + + "\vinputcollid\x18\x06 \x01(\rR\vinputcollid\x12\"\n" + + "\x04args\x18\a \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"\xc2\x01\n" + + "\x11ScalarArrayOpExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x12\n" + + "\x04opno\x18\x02 \x01(\rR\x04opno\x12\x15\n" + + "\x06use_or\x18\x03 \x01(\bR\x05useOr\x12 \n" + + "\vinputcollid\x18\x04 \x01(\rR\vinputcollid\x12\"\n" + + "\x04args\x18\x05 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\"\x9c\x01\n" + + "\bBoolExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12.\n" + + "\x06boolop\x18\x02 \x01(\x0e2\x16.pg_query.BoolExprTypeR\x06boolop\x12\"\n" + + "\x04args\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xa9\x02\n" + + "\aSubLink\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x129\n" + + "\rsub_link_type\x18\x02 \x01(\x0e2\x15.pg_query.SubLinkTypeR\vsubLinkType\x12\x1e\n" + + "\vsub_link_id\x18\x03 \x01(\x05R\tsubLinkId\x12*\n" + + "\btestexpr\x18\x04 \x01(\v2\x0e.pg_query.NodeR\btestexpr\x12+\n" + + "\toper_name\x18\x05 \x03(\v2\x0e.pg_query.NodeR\boperName\x12,\n" + + "\tsubselect\x18\x06 \x01(\v2\x0e.pg_query.NodeR\tsubselect\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xb5\x05\n" + + "\aSubPlan\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x129\n" + + "\rsub_link_type\x18\x02 \x01(\x0e2\x15.pg_query.SubLinkTypeR\vsubLinkType\x12*\n" + + "\btestexpr\x18\x03 \x01(\v2\x0e.pg_query.NodeR\btestexpr\x12+\n" + + "\tparam_ids\x18\x04 \x03(\v2\x0e.pg_query.NodeR\bparamIds\x12\x18\n" + + "\aplan_id\x18\x05 \x01(\x05R\aplan_id\x12\x1c\n" + + "\tplan_name\x18\x06 \x01(\tR\tplan_name\x12$\n" + + "\x0efirst_col_type\x18\a \x01(\rR\ffirstColType\x12(\n" + + "\x10first_col_typmod\x18\b \x01(\x05R\x0efirstColTypmod\x12.\n" + + "\x13first_col_collation\x18\t \x01(\rR\x11firstColCollation\x12$\n" + + "\x0euse_hash_table\x18\n" + + " \x01(\bR\fuseHashTable\x12(\n" + + "\x10unknown_eq_false\x18\v \x01(\bR\x0eunknownEqFalse\x12$\n" + + "\rparallel_safe\x18\f \x01(\bR\rparallel_safe\x12+\n" + + "\tset_param\x18\r \x03(\v2\x0e.pg_query.NodeR\bsetParam\x12+\n" + + "\tpar_param\x18\x0e \x03(\v2\x0e.pg_query.NodeR\bparParam\x12\"\n" + + "\x04args\x18\x0f \x03(\v2\x0e.pg_query.NodeR\x04args\x12\"\n" + + "\fstartup_cost\x18\x10 \x01(\x01R\fstartup_cost\x12$\n" + + "\rper_call_cost\x18\x11 \x01(\x01R\rper_call_cost\"b\n" + + "\x12AlternativeSubPlan\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12*\n" + + "\bsubplans\x18\x02 \x03(\v2\x0e.pg_query.NodeR\bsubplans\"\xd5\x01\n" + + "\vFieldSelect\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x1a\n" + + "\bfieldnum\x18\x03 \x01(\x05R\bfieldnum\x12\x1e\n" + + "\n" + + "resulttype\x18\x04 \x01(\rR\n" + + "resulttype\x12\"\n" + + "\fresulttypmod\x18\x05 \x01(\x05R\fresulttypmod\x12\"\n" + + "\fresultcollid\x18\x06 \x01(\rR\fresultcollid\"\xc8\x01\n" + + "\n" + + "FieldStore\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12(\n" + + "\anewvals\x18\x03 \x03(\v2\x0e.pg_query.NodeR\anewvals\x12,\n" + + "\tfieldnums\x18\x04 \x03(\v2\x0e.pg_query.NodeR\tfieldnums\x12\x1e\n" + + "\n" + + "resulttype\x18\x05 \x01(\rR\n" + + "resulttype\"\x93\x02\n" + + "\vRelabelType\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x1e\n" + + "\n" + + "resulttype\x18\x03 \x01(\rR\n" + + "resulttype\x12\"\n" + + "\fresulttypmod\x18\x04 \x01(\x05R\fresulttypmod\x12\"\n" + + "\fresultcollid\x18\x05 \x01(\rR\fresultcollid\x12<\n" + + "\rrelabelformat\x18\x06 \x01(\x0e2\x16.pg_query.CoercionFormR\rrelabelformat\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xed\x01\n" + + "\vCoerceViaIO\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x1e\n" + + "\n" + + "resulttype\x18\x03 \x01(\rR\n" + + "resulttype\x12\"\n" + + "\fresultcollid\x18\x04 \x01(\rR\fresultcollid\x12:\n" + + "\fcoerceformat\x18\x05 \x01(\x0e2\x16.pg_query.CoercionFormR\fcoerceformat\x12\x1a\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\"\xc1\x02\n" + + "\x0fArrayCoerceExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12*\n" + + "\belemexpr\x18\x03 \x01(\v2\x0e.pg_query.NodeR\belemexpr\x12\x1e\n" + + "\n" + + "resulttype\x18\x04 \x01(\rR\n" + + "resulttype\x12\"\n" + + "\fresulttypmod\x18\x05 \x01(\x05R\fresulttypmod\x12\"\n" + + "\fresultcollid\x18\x06 \x01(\rR\fresultcollid\x12:\n" + + "\fcoerceformat\x18\a \x01(\x0e2\x16.pg_query.CoercionFormR\fcoerceformat\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"\xd2\x01\n" + + "\x12ConvertRowtypeExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x1e\n" + + "\n" + + "resulttype\x18\x03 \x01(\rR\n" + + "resulttype\x12<\n" + + "\rconvertformat\x18\x04 \x01(\x0e2\x16.pg_query.CoercionFormR\rconvertformat\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x88\x01\n" + + "\vCollateExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x19\n" + + "\bcoll_oid\x18\x03 \x01(\rR\acollOid\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xf8\x01\n" + + "\bCaseExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x1a\n" + + "\bcasetype\x18\x02 \x01(\rR\bcasetype\x12\x1e\n" + + "\n" + + "casecollid\x18\x03 \x01(\rR\n" + + "casecollid\x12 \n" + + "\x03arg\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\"\n" + + "\x04args\x18\x05 \x03(\v2\x0e.pg_query.NodeR\x04args\x12,\n" + + "\tdefresult\x18\x06 \x01(\v2\x0e.pg_query.NodeR\tdefresult\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\x94\x01\n" + + "\bCaseWhen\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12&\n" + + "\x06result\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x06result\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\x82\x01\n" + + "\fCaseTestExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x17\n" + + "\atype_id\x18\x02 \x01(\rR\x06typeId\x12\x19\n" + + "\btype_mod\x18\x03 \x01(\x05R\atypeMod\x12\x1c\n" + + "\tcollation\x18\x04 \x01(\rR\tcollation\"\xbf\x02\n" + + "\tArrayExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\farray_typeid\x18\x02 \x01(\rR\farray_typeid\x12\"\n" + + "\farray_collid\x18\x03 \x01(\rR\farray_collid\x12&\n" + + "\x0eelement_typeid\x18\x04 \x01(\rR\x0eelement_typeid\x12*\n" + + "\belements\x18\x05 \x03(\v2\x0e.pg_query.NodeR\belements\x12\x1c\n" + + "\tmultidims\x18\x06 \x01(\bR\tmultidims\x12\x1e\n" + + "\n" + + "list_start\x18\a \x01(\x05R\n" + + "list_start\x12\x1a\n" + + "\blist_end\x18\b \x01(\x05R\blist_end\x12\x1a\n" + + "\blocation\x18\t \x01(\x05R\blocation\"\xef\x01\n" + + "\aRowExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\x04args\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1e\n" + + "\n" + + "row_typeid\x18\x03 \x01(\rR\n" + + "row_typeid\x126\n" + + "\n" + + "row_format\x18\x04 \x01(\x0e2\x16.pg_query.CoercionFormR\n" + + "row_format\x12*\n" + + "\bcolnames\x18\x05 \x03(\v2\x0e.pg_query.NodeR\bcolnames\x12\x1a\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\"\xb9\x02\n" + + "\x0eRowCompareExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12/\n" + + "\acmptype\x18\x02 \x01(\x0e2\x15.pg_query.CompareTypeR\acmptype\x12$\n" + + "\x05opnos\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x05opnos\x12.\n" + + "\n" + + "opfamilies\x18\x04 \x03(\v2\x0e.pg_query.NodeR\n" + + "opfamilies\x122\n" + + "\finputcollids\x18\x05 \x03(\v2\x0e.pg_query.NodeR\finputcollids\x12$\n" + + "\x05largs\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x05largs\x12$\n" + + "\x05rargs\x18\a \x03(\v2\x0e.pg_query.NodeR\x05rargs\"\xbc\x01\n" + + "\fCoalesceExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\fcoalescetype\x18\x02 \x01(\rR\fcoalescetype\x12&\n" + + "\x0ecoalescecollid\x18\x03 \x01(\rR\x0ecoalescecollid\x12\"\n" + + "\x04args\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xf8\x01\n" + + "\n" + + "MinMaxExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x1e\n" + + "\n" + + "minmaxtype\x18\x02 \x01(\rR\n" + + "minmaxtype\x12\"\n" + + "\fminmaxcollid\x18\x03 \x01(\rR\fminmaxcollid\x12 \n" + + "\vinputcollid\x18\x04 \x01(\rR\vinputcollid\x12\"\n" + + "\x02op\x18\x05 \x01(\x0e2\x12.pg_query.MinMaxOpR\x02op\x12\"\n" + + "\x04args\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xaa\x01\n" + + "\x10SQLValueFunction\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12,\n" + + "\x02op\x18\x02 \x01(\x0e2\x1c.pg_query.SQLValueFunctionOpR\x02op\x12\x12\n" + + "\x04type\x18\x03 \x01(\rR\x04type\x12\x16\n" + + "\x06typmod\x18\x04 \x01(\x05R\x06typmod\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xfd\x02\n" + + "\aXmlExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12#\n" + + "\x02op\x18\x02 \x01(\x0e2\x13.pg_query.XmlExprOpR\x02op\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12.\n" + + "\n" + + "named_args\x18\x04 \x03(\v2\x0e.pg_query.NodeR\n" + + "named_args\x12,\n" + + "\targ_names\x18\x05 \x03(\v2\x0e.pg_query.NodeR\targ_names\x12\"\n" + + "\x04args\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x04args\x125\n" + + "\txmloption\x18\a \x01(\x0e2\x17.pg_query.XmlOptionTypeR\txmloption\x12\x16\n" + + "\x06indent\x18\b \x01(\bR\x06indent\x12\x12\n" + + "\x04type\x18\t \x01(\rR\x04type\x12\x16\n" + + "\x06typmod\x18\n" + + " \x01(\x05R\x06typmod\x12\x1a\n" + + "\blocation\x18\v \x01(\x05R\blocation\"\x98\x01\n" + + "\n" + + "JsonFormat\x12:\n" + + "\vformat_type\x18\x01 \x01(\x0e2\x18.pg_query.JsonFormatTypeR\vformat_type\x122\n" + + "\bencoding\x18\x02 \x01(\x0e2\x16.pg_query.JsonEncodingR\bencoding\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"k\n" + + "\rJsonReturning\x12,\n" + + "\x06format\x18\x01 \x01(\v2\x14.pg_query.JsonFormatR\x06format\x12\x14\n" + + "\x05typid\x18\x02 \x01(\rR\x05typid\x12\x16\n" + + "\x06typmod\x18\x03 \x01(\x05R\x06typmod\"\xa1\x01\n" + + "\rJsonValueExpr\x12*\n" + + "\braw_expr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\braw_expr\x126\n" + + "\x0eformatted_expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x0eformatted_expr\x12,\n" + + "\x06format\x18\x03 \x01(\v2\x14.pg_query.JsonFormatR\x06format\"\xf1\x02\n" + + "\x13JsonConstructorExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x121\n" + + "\x04type\x18\x02 \x01(\x0e2\x1d.pg_query.JsonConstructorTypeR\x04type\x12\"\n" + + "\x04args\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\"\n" + + "\x04func\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x04func\x12*\n" + + "\bcoercion\x18\x05 \x01(\v2\x0e.pg_query.NodeR\bcoercion\x125\n" + + "\treturning\x18\x06 \x01(\v2\x17.pg_query.JsonReturningR\treturning\x12&\n" + + "\x0eabsent_on_null\x18\a \x01(\bR\x0eabsent_on_null\x12\x16\n" + + "\x06unique\x18\b \x01(\bR\x06unique\x12\x1a\n" + + "\blocation\x18\t \x01(\x05R\blocation\"\xd8\x01\n" + + "\x0fJsonIsPredicate\x12\"\n" + + "\x04expr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12,\n" + + "\x06format\x18\x02 \x01(\v2\x14.pg_query.JsonFormatR\x06format\x125\n" + + "\titem_type\x18\x03 \x01(\x0e2\x17.pg_query.JsonValueTypeR\titem_type\x12 \n" + + "\vunique_keys\x18\x04 \x01(\bR\vunique_keys\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x98\x01\n" + + "\fJsonBehavior\x120\n" + + "\x05btype\x18\x01 \x01(\x0e2\x1a.pg_query.JsonBehaviorTypeR\x05btype\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12\x16\n" + + "\x06coerce\x18\x03 \x01(\bR\x06coerce\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xfa\x05\n" + + "\bJsonExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12$\n" + + "\x02op\x18\x02 \x01(\x0e2\x14.pg_query.JsonExprOpR\x02op\x12 \n" + + "\vcolumn_name\x18\x03 \x01(\tR\vcolumn_name\x126\n" + + "\x0eformatted_expr\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x0eformatted_expr\x12,\n" + + "\x06format\x18\x05 \x01(\v2\x14.pg_query.JsonFormatR\x06format\x12,\n" + + "\tpath_spec\x18\x06 \x01(\v2\x0e.pg_query.NodeR\tpath_spec\x125\n" + + "\treturning\x18\a \x01(\v2\x17.pg_query.JsonReturningR\treturning\x124\n" + + "\rpassing_names\x18\b \x03(\v2\x0e.pg_query.NodeR\rpassing_names\x126\n" + + "\x0epassing_values\x18\t \x03(\v2\x0e.pg_query.NodeR\x0epassing_values\x122\n" + + "\bon_empty\x18\n" + + " \x01(\v2\x16.pg_query.JsonBehaviorR\bon_empty\x122\n" + + "\bon_error\x18\v \x01(\v2\x16.pg_query.JsonBehaviorR\bon_error\x12(\n" + + "\x0fuse_io_coercion\x18\f \x01(\bR\x0fuse_io_coercion\x12,\n" + + "\x11use_json_coercion\x18\r \x01(\bR\x11use_json_coercion\x12/\n" + + "\awrapper\x18\x0e \x01(\x0e2\x15.pg_query.JsonWrapperR\awrapper\x12 \n" + + "\vomit_quotes\x18\x0f \x01(\bR\vomit_quotes\x12\x1c\n" + + "\tcollation\x18\x10 \x01(\rR\tcollation\x12\x1a\n" + + "\blocation\x18\x11 \x01(\x05R\blocation\"#\n" + + "\rJsonTablePath\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\xe2\x01\n" + + "\x11JsonTablePathScan\x12\"\n" + + "\x04plan\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x04plan\x12+\n" + + "\x04path\x18\x02 \x01(\v2\x17.pg_query.JsonTablePathR\x04path\x12$\n" + + "\x0eerror_on_error\x18\x03 \x01(\bR\ferrorOnError\x12$\n" + + "\x05child\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x05child\x12\x17\n" + + "\acol_min\x18\x05 \x01(\x05R\x06colMin\x12\x17\n" + + "\acol_max\x18\x06 \x01(\x05R\x06colMax\"\x86\x01\n" + + "\x14JsonTableSiblingJoin\x12\"\n" + + "\x04plan\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x04plan\x12$\n" + + "\x05lplan\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x05lplan\x12$\n" + + "\x05rplan\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x05rplan\"\xc2\x01\n" + + "\bNullTest\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12:\n" + + "\fnulltesttype\x18\x03 \x01(\x0e2\x16.pg_query.NullTestTypeR\fnulltesttype\x12\x1a\n" + + "\bargisrow\x18\x04 \x01(\bR\bargisrow\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xa9\x01\n" + + "\vBooleanTest\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12:\n" + + "\fbooltesttype\x18\x03 \x01(\x0e2\x16.pg_query.BoolTestTypeR\fbooltesttype\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xbc\x02\n" + + "\vMergeAction\x127\n" + + "\n" + + "match_kind\x18\x01 \x01(\x0e2\x18.pg_query.MergeMatchKindR\tmatchKind\x124\n" + + "\fcommand_type\x18\x02 \x01(\x0e2\x11.pg_query.CmdTypeR\vcommandType\x124\n" + + "\boverride\x18\x03 \x01(\x0e2\x18.pg_query.OverridingKindR\boverride\x12\"\n" + + "\x04qual\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x04qual\x12/\n" + + "\vtarget_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x123\n" + + "\rupdate_colnos\x18\x06 \x03(\v2\x0e.pg_query.NodeR\fupdateColnos\"\x98\x02\n" + + "\x0eCoerceToDomain\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\x03arg\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12\x1e\n" + + "\n" + + "resulttype\x18\x03 \x01(\rR\n" + + "resulttype\x12\"\n" + + "\fresulttypmod\x18\x04 \x01(\x05R\fresulttypmod\x12\"\n" + + "\fresultcollid\x18\x05 \x01(\rR\fresultcollid\x12>\n" + + "\x0ecoercionformat\x18\x06 \x01(\x0e2\x16.pg_query.CoercionFormR\x0ecoercionformat\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xa5\x01\n" + + "\x13CoerceToDomainValue\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x17\n" + + "\atype_id\x18\x02 \x01(\rR\x06typeId\x12\x19\n" + + "\btype_mod\x18\x03 \x01(\x05R\atypeMod\x12\x1c\n" + + "\tcollation\x18\x04 \x01(\rR\tcollation\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x9e\x01\n" + + "\fSetToDefault\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x17\n" + + "\atype_id\x18\x02 \x01(\rR\x06typeId\x12\x19\n" + + "\btype_mod\x18\x03 \x01(\x05R\atypeMod\x12\x1c\n" + + "\tcollation\x18\x04 \x01(\rR\tcollation\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x8f\x01\n" + + "\rCurrentOfExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x16\n" + + "\x06cvarno\x18\x02 \x01(\rR\x06cvarno\x12 \n" + + "\vcursor_name\x18\x03 \x01(\tR\vcursor_name\x12\"\n" + + "\fcursor_param\x18\x04 \x01(\x05R\fcursor_param\"`\n" + + "\rNextValueExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\x14\n" + + "\x05seqid\x18\x02 \x01(\rR\x05seqid\x12\x17\n" + + "\atype_id\x18\x03 \x01(\rR\x06typeId\"\x9b\x01\n" + + "\rInferenceElem\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12 \n" + + "\vinfercollid\x18\x03 \x01(\rR\vinfercollid\x12\"\n" + + "\finferopclass\x18\x04 \x01(\rR\finferopclass\"\x95\x01\n" + + "\rReturningExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12 \n" + + "\vretlevelsup\x18\x02 \x01(\x05R\vretlevelsup\x12\x16\n" + + "\x06retold\x18\x03 \x01(\bR\x06retold\x12(\n" + + "\aretexpr\x18\x04 \x01(\v2\x0e.pg_query.NodeR\aretexpr\"\x87\x02\n" + + "\vTargetEntry\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12\x14\n" + + "\x05resno\x18\x03 \x01(\x05R\x05resno\x12\x18\n" + + "\aresname\x18\x04 \x01(\tR\aresname\x12(\n" + + "\x0fressortgroupref\x18\x05 \x01(\rR\x0fressortgroupref\x12\x1e\n" + + "\n" + + "resorigtbl\x18\x06 \x01(\rR\n" + + "resorigtbl\x12\x1e\n" + + "\n" + + "resorigcol\x18\a \x01(\x05R\n" + + "resorigcol\x12\x18\n" + + "\aresjunk\x18\b \x01(\bR\aresjunk\"'\n" + + "\vRangeTblRef\x12\x18\n" + + "\artindex\x18\x01 \x01(\x05R\artindex\"\xf8\x02\n" + + "\bJoinExpr\x12.\n" + + "\bjointype\x18\x01 \x01(\x0e2\x12.pg_query.JoinTypeR\bjointype\x12\x1d\n" + + "\n" + + "is_natural\x18\x02 \x01(\bR\tisNatural\x12\"\n" + + "\x04larg\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x04larg\x12\"\n" + + "\x04rarg\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x04rarg\x121\n" + + "\fusing_clause\x18\x05 \x03(\v2\x0e.pg_query.NodeR\vusingClause\x12;\n" + + "\x10join_using_alias\x18\x06 \x01(\v2\x0f.pg_query.AliasR\x10join_using_alias\x12$\n" + + "\x05quals\x18\a \x01(\v2\x0e.pg_query.NodeR\x05quals\x12%\n" + + "\x05alias\x18\b \x01(\v2\x0f.pg_query.AliasR\x05alias\x12\x18\n" + + "\artindex\x18\t \x01(\x05R\artindex\"\\\n" + + "\bFromExpr\x12*\n" + + "\bfromlist\x18\x01 \x03(\v2\x0e.pg_query.NodeR\bfromlist\x12$\n" + + "\x05quals\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x05quals\"\x9e\x03\n" + + "\x0eOnConflictExpr\x122\n" + + "\x06action\x18\x01 \x01(\x0e2\x1a.pg_query.OnConflictActionR\x06action\x123\n" + + "\rarbiter_elems\x18\x02 \x03(\v2\x0e.pg_query.NodeR\farbiterElems\x123\n" + + "\rarbiter_where\x18\x03 \x01(\v2\x0e.pg_query.NodeR\farbiterWhere\x12\x1e\n" + + "\n" + + "constraint\x18\x04 \x01(\rR\n" + + "constraint\x126\n" + + "\x0fon_conflict_set\x18\x05 \x03(\v2\x0e.pg_query.NodeR\ronConflictSet\x12:\n" + + "\x11on_conflict_where\x18\x06 \x01(\v2\x0e.pg_query.NodeR\x0fonConflictWhere\x12$\n" + + "\x0eexcl_rel_index\x18\a \x01(\x05R\fexclRelIndex\x124\n" + + "\x0eexcl_rel_tlist\x18\b \x03(\v2\x0e.pg_query.NodeR\fexclRelTlist\"\xca\x10\n" + + "\x05Query\x124\n" + + "\fcommand_type\x18\x01 \x01(\x0e2\x11.pg_query.CmdTypeR\vcommandType\x128\n" + + "\fquery_source\x18\x02 \x01(\x0e2\x15.pg_query.QuerySourceR\vquerySource\x12\x1e\n" + + "\vcan_set_tag\x18\x03 \x01(\bR\tcanSetTag\x121\n" + + "\futility_stmt\x18\x04 \x01(\v2\x0e.pg_query.NodeR\vutilityStmt\x12'\n" + + "\x0fresult_relation\x18\x05 \x01(\x05R\x0eresultRelation\x12\x19\n" + + "\bhas_aggs\x18\x06 \x01(\bR\ahasAggs\x12(\n" + + "\x10has_window_funcs\x18\a \x01(\bR\x0ehasWindowFuncs\x12&\n" + + "\x0fhas_target_srfs\x18\b \x01(\bR\rhasTargetSRFs\x12\"\n" + + "\rhas_sub_links\x18\t \x01(\bR\vhasSubLinks\x12&\n" + + "\x0fhas_distinct_on\x18\n" + + " \x01(\bR\rhasDistinctOn\x12#\n" + + "\rhas_recursive\x18\v \x01(\bR\fhasRecursive\x12*\n" + + "\x11has_modifying_cte\x18\f \x01(\bR\x0fhasModifyingCTE\x12$\n" + + "\x0ehas_for_update\x18\r \x01(\bR\fhasForUpdate\x12(\n" + + "\x10has_row_security\x18\x0e \x01(\bR\x0ehasRowSecurity\x12\"\n" + + "\rhas_group_rte\x18\x0f \x01(\bR\vhasGroupRTE\x12\x1b\n" + + "\tis_return\x18\x10 \x01(\bR\bisReturn\x12)\n" + + "\bcte_list\x18\x11 \x03(\v2\x0e.pg_query.NodeR\acteList\x12&\n" + + "\x06rtable\x18\x12 \x03(\v2\x0e.pg_query.NodeR\x06rtable\x122\n" + + "\frteperminfos\x18\x13 \x03(\v2\x0e.pg_query.NodeR\frteperminfos\x12.\n" + + "\bjointree\x18\x14 \x01(\v2\x12.pg_query.FromExprR\bjointree\x12:\n" + + "\x11merge_action_list\x18\x15 \x03(\v2\x0e.pg_query.NodeR\x0fmergeActionList\x122\n" + + "\x15merge_target_relation\x18\x16 \x01(\x05R\x13mergeTargetRelation\x12@\n" + + "\x14merge_join_condition\x18\x17 \x01(\v2\x0e.pg_query.NodeR\x12mergeJoinCondition\x12/\n" + + "\vtarget_list\x18\x18 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x124\n" + + "\boverride\x18\x19 \x01(\x0e2\x18.pg_query.OverridingKindR\boverride\x129\n" + + "\von_conflict\x18\x1a \x01(\v2\x18.pg_query.OnConflictExprR\n" + + "onConflict\x12.\n" + + "\x13returning_old_alias\x18\x1b \x01(\tR\x11returningOldAlias\x12.\n" + + "\x13returning_new_alias\x18\x1c \x01(\tR\x11returningNewAlias\x125\n" + + "\x0ereturning_list\x18\x1d \x03(\v2\x0e.pg_query.NodeR\rreturningList\x121\n" + + "\fgroup_clause\x18\x1e \x03(\v2\x0e.pg_query.NodeR\vgroupClause\x12%\n" + + "\x0egroup_distinct\x18\x1f \x01(\bR\rgroupDistinct\x123\n" + + "\rgrouping_sets\x18 \x03(\v2\x0e.pg_query.NodeR\fgroupingSets\x12/\n" + + "\vhaving_qual\x18! \x01(\v2\x0e.pg_query.NodeR\n" + + "havingQual\x123\n" + + "\rwindow_clause\x18\" \x03(\v2\x0e.pg_query.NodeR\fwindowClause\x127\n" + + "\x0fdistinct_clause\x18# \x03(\v2\x0e.pg_query.NodeR\x0edistinctClause\x12/\n" + + "\vsort_clause\x18$ \x03(\v2\x0e.pg_query.NodeR\n" + + "sortClause\x121\n" + + "\flimit_offset\x18% \x01(\v2\x0e.pg_query.NodeR\vlimitOffset\x12/\n" + + "\vlimit_count\x18& \x01(\v2\x0e.pg_query.NodeR\n" + + "limitCount\x128\n" + + "\flimit_option\x18' \x01(\x0e2\x15.pg_query.LimitOptionR\vlimitOption\x12+\n" + + "\trow_marks\x18( \x03(\v2\x0e.pg_query.NodeR\browMarks\x125\n" + + "\x0eset_operations\x18) \x01(\v2\x0e.pg_query.NodeR\rsetOperations\x127\n" + + "\x0fconstraint_deps\x18* \x03(\v2\x0e.pg_query.NodeR\x0econstraintDeps\x12<\n" + + "\x12with_check_options\x18+ \x03(\v2\x0e.pg_query.NodeR\x10withCheckOptions\x12$\n" + + "\rstmt_location\x18, \x01(\x05R\rstmt_location\x12\x1a\n" + + "\bstmt_len\x18- \x01(\x05R\bstmt_len\"\x90\x02\n" + + "\bTypeName\x12$\n" + + "\x05names\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05names\x12\x19\n" + + "\btype_oid\x18\x02 \x01(\rR\atypeOid\x12\x14\n" + + "\x05setof\x18\x03 \x01(\bR\x05setof\x12\x1a\n" + + "\bpct_type\x18\x04 \x01(\bR\bpct_type\x12(\n" + + "\atypmods\x18\x05 \x03(\v2\x0e.pg_query.NodeR\atypmods\x12\x18\n" + + "\atypemod\x18\x06 \x01(\x05R\atypemod\x121\n" + + "\farray_bounds\x18\a \x03(\v2\x0e.pg_query.NodeR\varrayBounds\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"O\n" + + "\tColumnRef\x12&\n" + + "\x06fields\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x06fields\x12\x1a\n" + + "\blocation\x18\x02 \x01(\x05R\blocation\">\n" + + "\bParamRef\x12\x16\n" + + "\x06number\x18\x01 \x01(\x05R\x06number\x12\x1a\n" + + "\blocation\x18\x02 \x01(\x05R\blocation\"\x93\x02\n" + + "\x06A_Expr\x12)\n" + + "\x04kind\x18\x01 \x01(\x0e2\x15.pg_query.A_Expr_KindR\x04kind\x12\"\n" + + "\x04name\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04name\x12$\n" + + "\x05lexpr\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x05lexpr\x12$\n" + + "\x05rexpr\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x05rexpr\x12*\n" + + "\x10rexpr_list_start\x18\x05 \x01(\x05R\x10rexpr_list_start\x12&\n" + + "\x0erexpr_list_end\x18\x06 \x01(\x05R\x0erexpr_list_end\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"y\n" + + "\bTypeCast\x12 \n" + + "\x03arg\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12/\n" + + "\ttype_name\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"y\n" + + "\rCollateClause\x12 \n" + + "\x03arg\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03arg\x12*\n" + + "\bcollname\x18\x02 \x03(\v2\x0e.pg_query.NodeR\bcollname\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"v\n" + + "\bRoleSpec\x122\n" + + "\broletype\x18\x01 \x01(\x0e2\x16.pg_query.RoleSpecTypeR\broletype\x12\x1a\n" + + "\brolename\x18\x02 \x01(\tR\brolename\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\xc7\x03\n" + + "\bFuncCall\x12*\n" + + "\bfuncname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\bfuncname\x12\"\n" + + "\x04args\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04args\x12,\n" + + "\tagg_order\x18\x03 \x03(\v2\x0e.pg_query.NodeR\tagg_order\x12.\n" + + "\n" + + "agg_filter\x18\x04 \x01(\v2\x0e.pg_query.NodeR\n" + + "agg_filter\x12'\n" + + "\x04over\x18\x05 \x01(\v2\x13.pg_query.WindowDefR\x04over\x12*\n" + + "\x10agg_within_group\x18\x06 \x01(\bR\x10agg_within_group\x12\x1a\n" + + "\bagg_star\x18\a \x01(\bR\bagg_star\x12\"\n" + + "\fagg_distinct\x18\b \x01(\bR\fagg_distinct\x12$\n" + + "\rfunc_variadic\x18\t \x01(\bR\rfunc_variadic\x126\n" + + "\n" + + "funcformat\x18\n" + + " \x01(\x0e2\x16.pg_query.CoercionFormR\n" + + "funcformat\x12\x1a\n" + + "\blocation\x18\v \x01(\x05R\blocation\"\b\n" + + "\x06A_Star\"o\n" + + "\tA_Indices\x12\x1a\n" + + "\bis_slice\x18\x01 \x01(\bR\bis_slice\x12\"\n" + + "\x04lidx\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04lidx\x12\"\n" + + "\x04uidx\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x04uidx\"c\n" + + "\rA_Indirection\x12 \n" + + "\x03arg\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03arg\x120\n" + + "\vindirection\x18\x02 \x03(\v2\x0e.pg_query.NodeR\vindirection\"\x91\x01\n" + + "\vA_ArrayExpr\x12*\n" + + "\belements\x18\x01 \x03(\v2\x0e.pg_query.NodeR\belements\x12\x1e\n" + + "\n" + + "list_start\x18\x02 \x01(\x05R\n" + + "list_start\x12\x1a\n" + + "\blist_end\x18\x03 \x01(\x05R\blist_end\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\x8f\x01\n" + + "\tResTarget\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x120\n" + + "\vindirection\x18\x02 \x03(\v2\x0e.pg_query.NodeR\vindirection\x12 \n" + + "\x03val\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x03val\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"j\n" + + "\x0eMultiAssignRef\x12&\n" + + "\x06source\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x06source\x12\x14\n" + + "\x05colno\x18\x02 \x01(\x05R\x05colno\x12\x1a\n" + + "\bncolumns\x18\x03 \x01(\x05R\bncolumns\"\xdf\x01\n" + + "\x06SortBy\x12\"\n" + + "\x04node\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x04node\x123\n" + + "\n" + + "sortby_dir\x18\x02 \x01(\x0e2\x13.pg_query.SortByDirR\n" + + "sortby_dir\x129\n" + + "\fsortby_nulls\x18\x03 \x01(\x0e2\x15.pg_query.SortByNullsR\fsortby_nulls\x12%\n" + + "\x06use_op\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x05useOp\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xca\x02\n" + + "\tWindowDef\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\arefname\x18\x02 \x01(\tR\arefname\x129\n" + + "\x10partition_clause\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x0fpartitionClause\x121\n" + + "\forder_clause\x18\x04 \x03(\v2\x0e.pg_query.NodeR\vorderClause\x12#\n" + + "\rframe_options\x18\x05 \x01(\x05R\fframeOptions\x121\n" + + "\fstart_offset\x18\x06 \x01(\v2\x0e.pg_query.NodeR\vstartOffset\x12-\n" + + "\n" + + "end_offset\x18\a \x01(\v2\x0e.pg_query.NodeR\tendOffset\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"}\n" + + "\x0eRangeSubselect\x12\x18\n" + + "\alateral\x18\x01 \x01(\bR\alateral\x12*\n" + + "\bsubquery\x18\x02 \x01(\v2\x0e.pg_query.NodeR\bsubquery\x12%\n" + + "\x05alias\x18\x03 \x01(\v2\x0f.pg_query.AliasR\x05alias\"\xf0\x01\n" + + "\rRangeFunction\x12\x18\n" + + "\alateral\x18\x01 \x01(\bR\alateral\x12\x1e\n" + + "\n" + + "ordinality\x18\x02 \x01(\bR\n" + + "ordinality\x12 \n" + + "\vis_rowsfrom\x18\x03 \x01(\bR\vis_rowsfrom\x12,\n" + + "\tfunctions\x18\x04 \x03(\v2\x0e.pg_query.NodeR\tfunctions\x12%\n" + + "\x05alias\x18\x05 \x01(\v2\x0f.pg_query.AliasR\x05alias\x12.\n" + + "\n" + + "coldeflist\x18\x06 \x03(\v2\x0e.pg_query.NodeR\n" + + "coldeflist\"\x9b\x02\n" + + "\x0eRangeTableFunc\x12\x18\n" + + "\alateral\x18\x01 \x01(\bR\alateral\x12(\n" + + "\adocexpr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\adocexpr\x12(\n" + + "\arowexpr\x18\x03 \x01(\v2\x0e.pg_query.NodeR\arowexpr\x12.\n" + + "\n" + + "namespaces\x18\x04 \x03(\v2\x0e.pg_query.NodeR\n" + + "namespaces\x12(\n" + + "\acolumns\x18\x05 \x03(\v2\x0e.pg_query.NodeR\acolumns\x12%\n" + + "\x05alias\x18\x06 \x01(\v2\x0f.pg_query.AliasR\x05alias\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\x9e\x02\n" + + "\x11RangeTableFuncCol\x12\x18\n" + + "\acolname\x18\x01 \x01(\tR\acolname\x12/\n" + + "\ttype_name\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x12&\n" + + "\x0efor_ordinality\x18\x03 \x01(\bR\x0efor_ordinality\x12 \n" + + "\vis_not_null\x18\x04 \x01(\bR\vis_not_null\x12(\n" + + "\acolexpr\x18\x05 \x01(\v2\x0e.pg_query.NodeR\acolexpr\x12.\n" + + "\n" + + "coldefexpr\x18\x06 \x01(\v2\x0e.pg_query.NodeR\n" + + "coldefexpr\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\"\xd6\x01\n" + + "\x10RangeTableSample\x12*\n" + + "\brelation\x18\x01 \x01(\v2\x0e.pg_query.NodeR\brelation\x12&\n" + + "\x06method\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x06method\x12\"\n" + + "\x04args\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x04args\x12.\n" + + "\n" + + "repeatable\x18\x04 \x01(\v2\x0e.pg_query.NodeR\n" + + "repeatable\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xec\x05\n" + + "\tColumnDef\x12\x18\n" + + "\acolname\x18\x01 \x01(\tR\acolname\x12/\n" + + "\ttype_name\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x12 \n" + + "\vcompression\x18\x03 \x01(\tR\vcompression\x12\x1a\n" + + "\binhcount\x18\x04 \x01(\x05R\binhcount\x12\x1a\n" + + "\bis_local\x18\x05 \x01(\bR\bis_local\x12 \n" + + "\vis_not_null\x18\x06 \x01(\bR\vis_not_null\x12\"\n" + + "\fis_from_type\x18\a \x01(\bR\fis_from_type\x12\x18\n" + + "\astorage\x18\b \x01(\tR\astorage\x12\"\n" + + "\fstorage_name\x18\t \x01(\tR\fstorage_name\x120\n" + + "\vraw_default\x18\n" + + " \x01(\v2\x0e.pg_query.NodeR\vraw_default\x126\n" + + "\x0ecooked_default\x18\v \x01(\v2\x0e.pg_query.NodeR\x0ecooked_default\x12\x1a\n" + + "\bidentity\x18\f \x01(\tR\bidentity\x12?\n" + + "\x11identity_sequence\x18\r \x01(\v2\x12.pg_query.RangeVarR\x10identitySequence\x12\x1c\n" + + "\tgenerated\x18\x0e \x01(\tR\tgenerated\x128\n" + + "\vcoll_clause\x18\x0f \x01(\v2\x17.pg_query.CollateClauseR\n" + + "collClause\x12\x19\n" + + "\bcoll_oid\x18\x10 \x01(\rR\acollOid\x120\n" + + "\vconstraints\x18\x11 \x03(\v2\x0e.pg_query.NodeR\vconstraints\x12.\n" + + "\n" + + "fdwoptions\x18\x12 \x03(\v2\x0e.pg_query.NodeR\n" + + "fdwoptions\x12\x1a\n" + + "\blocation\x18\x13 \x01(\x05R\blocation\"~\n" + + "\x0fTableLikeClause\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\x18\n" + + "\aoptions\x18\x02 \x01(\rR\aoptions\x12!\n" + + "\frelation_oid\x18\x03 \x01(\rR\vrelationOid\"\xe1\x02\n" + + "\tIndexElem\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12\"\n" + + "\findexcolname\x18\x03 \x01(\tR\findexcolname\x12,\n" + + "\tcollation\x18\x04 \x03(\v2\x0e.pg_query.NodeR\tcollation\x12(\n" + + "\aopclass\x18\x05 \x03(\v2\x0e.pg_query.NodeR\aopclass\x120\n" + + "\vopclassopts\x18\x06 \x03(\v2\x0e.pg_query.NodeR\vopclassopts\x12/\n" + + "\bordering\x18\a \x01(\x0e2\x13.pg_query.SortByDirR\bordering\x12=\n" + + "\x0enulls_ordering\x18\b \x01(\x0e2\x15.pg_query.SortByNullsR\x0enulls_ordering\"\xbc\x01\n" + + "\aDefElem\x12\"\n" + + "\fdefnamespace\x18\x01 \x01(\tR\fdefnamespace\x12\x18\n" + + "\adefname\x18\x02 \x01(\tR\adefname\x12 \n" + + "\x03arg\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x03arg\x125\n" + + "\tdefaction\x18\x04 \x01(\x0e2\x17.pg_query.DefElemActionR\tdefaction\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xb5\x01\n" + + "\rLockingClause\x12/\n" + + "\vlocked_rels\x18\x01 \x03(\v2\x0e.pg_query.NodeR\n" + + "lockedRels\x128\n" + + "\bstrength\x18\x02 \x01(\x0e2\x1c.pg_query.LockClauseStrengthR\bstrength\x129\n" + + "\vwait_policy\x18\x03 \x01(\x0e2\x18.pg_query.LockWaitPolicyR\n" + + "waitPolicy\"\xce\x01\n" + + "\fXmlSerialize\x125\n" + + "\txmloption\x18\x01 \x01(\x0e2\x17.pg_query.XmlOptionTypeR\txmloption\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12/\n" + + "\ttype_name\x18\x03 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x12\x16\n" + + "\x06indent\x18\x04 \x01(\bR\x06indent\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xbb\x01\n" + + "\rPartitionElem\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12,\n" + + "\tcollation\x18\x03 \x03(\v2\x0e.pg_query.NodeR\tcollation\x12(\n" + + "\aopclass\x18\x04 \x03(\v2\x0e.pg_query.NodeR\aopclass\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x95\x01\n" + + "\rPartitionSpec\x127\n" + + "\bstrategy\x18\x01 \x01(\x0e2\x1b.pg_query.PartitionStrategyR\bstrategy\x12/\n" + + "\vpart_params\x18\x02 \x03(\v2\x0e.pg_query.NodeR\n" + + "partParams\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\xb8\x02\n" + + "\x12PartitionBoundSpec\x12\x1a\n" + + "\bstrategy\x18\x01 \x01(\tR\bstrategy\x12\x1e\n" + + "\n" + + "is_default\x18\x02 \x01(\bR\n" + + "is_default\x12\x18\n" + + "\amodulus\x18\x03 \x01(\x05R\amodulus\x12\x1c\n" + + "\tremainder\x18\x04 \x01(\x05R\tremainder\x12.\n" + + "\n" + + "listdatums\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "listdatums\x120\n" + + "\vlowerdatums\x18\x06 \x03(\v2\x0e.pg_query.NodeR\vlowerdatums\x120\n" + + "\vupperdatums\x18\a \x03(\v2\x0e.pg_query.NodeR\vupperdatums\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"\x8e\x01\n" + + "\x13PartitionRangeDatum\x125\n" + + "\x04kind\x18\x01 \x01(\x0e2!.pg_query.PartitionRangeDatumKindR\x04kind\x12$\n" + + "\x05value\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x05value\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\x8a\x01\n" + + "\fPartitionCmd\x12&\n" + + "\x04name\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\x04name\x122\n" + + "\x05bound\x18\x02 \x01(\v2\x1c.pg_query.PartitionBoundSpecR\x05bound\x12\x1e\n" + + "\n" + + "concurrent\x18\x03 \x01(\bR\n" + + "concurrent\"\xe9\n" + + "\n" + + "\rRangeTblEntry\x12%\n" + + "\x05alias\x18\x01 \x01(\v2\x0f.pg_query.AliasR\x05alias\x12#\n" + + "\x04eref\x18\x02 \x01(\v2\x0f.pg_query.AliasR\x04eref\x12+\n" + + "\artekind\x18\x03 \x01(\x0e2\x11.pg_query.RTEKindR\artekind\x12\x14\n" + + "\x05relid\x18\x04 \x01(\rR\x05relid\x12\x10\n" + + "\x03inh\x18\x05 \x01(\bR\x03inh\x12\x18\n" + + "\arelkind\x18\x06 \x01(\tR\arelkind\x12 \n" + + "\vrellockmode\x18\a \x01(\x05R\vrellockmode\x12$\n" + + "\rperminfoindex\x18\b \x01(\rR\rperminfoindex\x12=\n" + + "\vtablesample\x18\t \x01(\v2\x1b.pg_query.TableSampleClauseR\vtablesample\x12+\n" + + "\bsubquery\x18\n" + + " \x01(\v2\x0f.pg_query.QueryR\bsubquery\x12*\n" + + "\x10security_barrier\x18\v \x01(\bR\x10security_barrier\x12.\n" + + "\bjointype\x18\f \x01(\x0e2\x12.pg_query.JoinTypeR\bjointype\x12&\n" + + "\x0ejoinmergedcols\x18\r \x01(\x05R\x0ejoinmergedcols\x124\n" + + "\rjoinaliasvars\x18\x0e \x03(\v2\x0e.pg_query.NodeR\rjoinaliasvars\x122\n" + + "\fjoinleftcols\x18\x0f \x03(\v2\x0e.pg_query.NodeR\fjoinleftcols\x124\n" + + "\rjoinrightcols\x18\x10 \x03(\v2\x0e.pg_query.NodeR\rjoinrightcols\x12;\n" + + "\x10join_using_alias\x18\x11 \x01(\v2\x0f.pg_query.AliasR\x10join_using_alias\x12,\n" + + "\tfunctions\x18\x12 \x03(\v2\x0e.pg_query.NodeR\tfunctions\x12&\n" + + "\x0efuncordinality\x18\x13 \x01(\bR\x0efuncordinality\x121\n" + + "\ttablefunc\x18\x14 \x01(\v2\x13.pg_query.TableFuncR\ttablefunc\x122\n" + + "\fvalues_lists\x18\x15 \x03(\v2\x0e.pg_query.NodeR\fvalues_lists\x12\x18\n" + + "\actename\x18\x16 \x01(\tR\actename\x12 \n" + + "\vctelevelsup\x18\x17 \x01(\rR\vctelevelsup\x12&\n" + + "\x0eself_reference\x18\x18 \x01(\bR\x0eself_reference\x12*\n" + + "\bcoltypes\x18\x19 \x03(\v2\x0e.pg_query.NodeR\bcoltypes\x12.\n" + + "\n" + + "coltypmods\x18\x1a \x03(\v2\x0e.pg_query.NodeR\n" + + "coltypmods\x124\n" + + "\rcolcollations\x18\x1b \x03(\v2\x0e.pg_query.NodeR\rcolcollations\x12\x18\n" + + "\aenrname\x18\x1c \x01(\tR\aenrname\x12\x1c\n" + + "\tenrtuples\x18\x1d \x01(\x01R\tenrtuples\x12.\n" + + "\n" + + "groupexprs\x18\x1e \x03(\v2\x0e.pg_query.NodeR\n" + + "groupexprs\x12\x18\n" + + "\alateral\x18\x1f \x01(\bR\alateral\x12\x1c\n" + + "\n" + + "in_from_cl\x18 \x01(\bR\binFromCl\x125\n" + + "\x0esecurity_quals\x18! \x03(\v2\x0e.pg_query.NodeR\rsecurityQuals\"\xf3\x01\n" + + "\x11RTEPermissionInfo\x12\x14\n" + + "\x05relid\x18\x01 \x01(\rR\x05relid\x12\x10\n" + + "\x03inh\x18\x02 \x01(\bR\x03inh\x12%\n" + + "\x0erequired_perms\x18\x03 \x01(\x04R\rrequiredPerms\x12\"\n" + + "\rcheck_as_user\x18\x04 \x01(\rR\vcheckAsUser\x12#\n" + + "\rselected_cols\x18\x05 \x03(\x04R\fselectedCols\x12#\n" + + "\rinserted_cols\x18\x06 \x03(\x04R\finsertedCols\x12!\n" + + "\fupdated_cols\x18\a \x03(\x04R\vupdatedCols\"\xe0\x02\n" + + "\x10RangeTblFunction\x12*\n" + + "\bfuncexpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\bfuncexpr\x12\"\n" + + "\ffunccolcount\x18\x02 \x01(\x05R\ffunccolcount\x122\n" + + "\ffunccolnames\x18\x03 \x03(\v2\x0e.pg_query.NodeR\ffunccolnames\x122\n" + + "\ffunccoltypes\x18\x04 \x03(\v2\x0e.pg_query.NodeR\ffunccoltypes\x126\n" + + "\x0efunccoltypmods\x18\x05 \x03(\v2\x0e.pg_query.NodeR\x0efunccoltypmods\x12<\n" + + "\x11funccolcollations\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x11funccolcollations\x12\x1e\n" + + "\n" + + "funcparams\x18\a \x03(\x04R\n" + + "funcparams\"\x87\x01\n" + + "\x11TableSampleClause\x12\x1e\n" + + "\n" + + "tsmhandler\x18\x01 \x01(\rR\n" + + "tsmhandler\x12\"\n" + + "\x04args\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04args\x12.\n" + + "\n" + + "repeatable\x18\x03 \x01(\v2\x0e.pg_query.NodeR\n" + + "repeatable\"\xac\x01\n" + + "\x0fWithCheckOption\x12%\n" + + "\x04kind\x18\x01 \x01(\x0e2\x11.pg_query.WCOKindR\x04kind\x12\x18\n" + + "\arelname\x18\x02 \x01(\tR\arelname\x12\x18\n" + + "\apolname\x18\x03 \x01(\tR\apolname\x12\"\n" + + "\x04qual\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x04qual\x12\x1a\n" + + "\bcascaded\x18\x05 \x01(\bR\bcascaded\"\xcc\x01\n" + + "\x0fSortGroupClause\x12+\n" + + "\x12tle_sort_group_ref\x18\x01 \x01(\rR\x0ftleSortGroupRef\x12\x12\n" + + "\x04eqop\x18\x02 \x01(\rR\x04eqop\x12\x16\n" + + "\x06sortop\x18\x03 \x01(\rR\x06sortop\x12\"\n" + + "\freverse_sort\x18\x04 \x01(\bR\freverse_sort\x12 \n" + + "\vnulls_first\x18\x05 \x01(\bR\vnulls_first\x12\x1a\n" + + "\bhashable\x18\x06 \x01(\bR\bhashable\"\x82\x01\n" + + "\vGroupingSet\x12-\n" + + "\x04kind\x18\x01 \x01(\x0e2\x19.pg_query.GroupingSetKindR\x04kind\x12(\n" + + "\acontent\x18\x02 \x03(\v2\x0e.pg_query.NodeR\acontent\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\xbd\x04\n" + + "\fWindowClause\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" + + "\arefname\x18\x02 \x01(\tR\arefname\x129\n" + + "\x10partition_clause\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x0fpartitionClause\x121\n" + + "\forder_clause\x18\x04 \x03(\v2\x0e.pg_query.NodeR\vorderClause\x12#\n" + + "\rframe_options\x18\x05 \x01(\x05R\fframeOptions\x121\n" + + "\fstart_offset\x18\x06 \x01(\v2\x0e.pg_query.NodeR\vstartOffset\x12-\n" + + "\n" + + "end_offset\x18\a \x01(\v2\x0e.pg_query.NodeR\tendOffset\x12-\n" + + "\x13start_in_range_func\x18\b \x01(\rR\x10startInRangeFunc\x12)\n" + + "\x11end_in_range_func\x18\t \x01(\rR\x0eendInRangeFunc\x12\"\n" + + "\rin_range_coll\x18\n" + + " \x01(\rR\vinRangeColl\x12 \n" + + "\fin_range_asc\x18\v \x01(\bR\n" + + "inRangeAsc\x12/\n" + + "\x14in_range_nulls_first\x18\f \x01(\bR\x11inRangeNullsFirst\x12\x16\n" + + "\x06winref\x18\r \x01(\rR\x06winref\x12!\n" + + "\fcopied_order\x18\x0e \x01(\bR\vcopiedOrder\"\xb7\x01\n" + + "\rRowMarkClause\x12\x10\n" + + "\x03rti\x18\x01 \x01(\rR\x03rti\x128\n" + + "\bstrength\x18\x02 \x01(\x0e2\x1c.pg_query.LockClauseStrengthR\bstrength\x129\n" + + "\vwait_policy\x18\x03 \x01(\x0e2\x18.pg_query.LockWaitPolicyR\n" + + "waitPolicy\x12\x1f\n" + + "\vpushed_down\x18\x04 \x01(\bR\n" + + "pushedDown\"j\n" + + "\n" + + "WithClause\x12\"\n" + + "\x04ctes\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x04ctes\x12\x1c\n" + + "\trecursive\x18\x02 \x01(\bR\trecursive\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\xa7\x01\n" + + "\vInferClause\x12/\n" + + "\vindex_elems\x18\x01 \x03(\v2\x0e.pg_query.NodeR\n" + + "indexElems\x121\n" + + "\fwhere_clause\x18\x02 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x12\x18\n" + + "\aconname\x18\x03 \x01(\tR\aconname\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xf3\x01\n" + + "\x10OnConflictClause\x122\n" + + "\x06action\x18\x01 \x01(\x0e2\x1a.pg_query.OnConflictActionR\x06action\x12+\n" + + "\x05infer\x18\x02 \x01(\v2\x15.pg_query.InferClauseR\x05infer\x12/\n" + + "\vtarget_list\x18\x03 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x121\n" + + "\fwhere_clause\x18\x04 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xc9\x01\n" + + "\x0fCTESearchClause\x128\n" + + "\x0fsearch_col_list\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x0fsearch_col_list\x122\n" + + "\x14search_breadth_first\x18\x02 \x01(\bR\x14search_breadth_first\x12,\n" + + "\x11search_seq_column\x18\x03 \x01(\tR\x11search_seq_column\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xf2\x03\n" + + "\x0eCTECycleClause\x126\n" + + "\x0ecycle_col_list\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x0ecycle_col_list\x12,\n" + + "\x11cycle_mark_column\x18\x02 \x01(\tR\x11cycle_mark_column\x12:\n" + + "\x10cycle_mark_value\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x10cycle_mark_value\x12>\n" + + "\x12cycle_mark_default\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x12cycle_mark_default\x12,\n" + + "\x11cycle_path_column\x18\x05 \x01(\tR\x11cycle_path_column\x12\x1a\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\x12(\n" + + "\x0fcycle_mark_type\x18\a \x01(\rR\x0fcycle_mark_type\x12,\n" + + "\x11cycle_mark_typmod\x18\b \x01(\x05R\x11cycle_mark_typmod\x122\n" + + "\x14cycle_mark_collation\x18\t \x01(\rR\x14cycle_mark_collation\x12(\n" + + "\x0fcycle_mark_neop\x18\n" + + " \x01(\rR\x0fcycle_mark_neop\"\x88\x05\n" + + "\x0fCommonTableExpr\x12\x18\n" + + "\actename\x18\x01 \x01(\tR\actename\x124\n" + + "\raliascolnames\x18\x02 \x03(\v2\x0e.pg_query.NodeR\raliascolnames\x12B\n" + + "\x0fctematerialized\x18\x03 \x01(\x0e2\x18.pg_query.CTEMaterializeR\x0fctematerialized\x12*\n" + + "\bctequery\x18\x04 \x01(\v2\x0e.pg_query.NodeR\bctequery\x12?\n" + + "\rsearch_clause\x18\x05 \x01(\v2\x19.pg_query.CTESearchClauseR\rsearch_clause\x12<\n" + + "\fcycle_clause\x18\x06 \x01(\v2\x18.pg_query.CTECycleClauseR\fcycle_clause\x12\x1a\n" + + "\blocation\x18\a \x01(\x05R\blocation\x12\"\n" + + "\fcterecursive\x18\b \x01(\bR\fcterecursive\x12 \n" + + "\vcterefcount\x18\t \x01(\x05R\vcterefcount\x120\n" + + "\vctecolnames\x18\n" + + " \x03(\v2\x0e.pg_query.NodeR\vctecolnames\x120\n" + + "\vctecoltypes\x18\v \x03(\v2\x0e.pg_query.NodeR\vctecoltypes\x124\n" + + "\rctecoltypmods\x18\f \x03(\v2\x0e.pg_query.NodeR\rctecoltypmods\x12:\n" + + "\x10ctecolcollations\x18\r \x03(\v2\x0e.pg_query.NodeR\x10ctecolcollations\"\xbd\x02\n" + + "\x0fMergeWhenClause\x127\n" + + "\n" + + "match_kind\x18\x01 \x01(\x0e2\x18.pg_query.MergeMatchKindR\tmatchKind\x124\n" + + "\fcommand_type\x18\x02 \x01(\x0e2\x11.pg_query.CmdTypeR\vcommandType\x124\n" + + "\boverride\x18\x03 \x01(\x0e2\x18.pg_query.OverridingKindR\boverride\x12,\n" + + "\tcondition\x18\x04 \x01(\v2\x0e.pg_query.NodeR\tcondition\x12/\n" + + "\vtarget_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x12&\n" + + "\x06values\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x06values\"z\n" + + "\x0fReturningOption\x125\n" + + "\x06option\x18\x01 \x01(\x0e2\x1d.pg_query.ReturningOptionKindR\x06option\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"a\n" + + "\x0fReturningClause\x12(\n" + + "\aoptions\x18\x01 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12$\n" + + "\x05exprs\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x05exprs\"Y\n" + + "\x11TriggerTransition\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x15\n" + + "\x06is_new\x18\x02 \x01(\bR\x05isNew\x12\x19\n" + + "\bis_table\x18\x03 \x01(\bR\aisTable\"t\n" + + "\n" + + "JsonOutput\x12/\n" + + "\ttype_name\x18\x01 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x125\n" + + "\treturning\x18\x02 \x01(\v2\x17.pg_query.JsonReturningR\treturning\"M\n" + + "\fJsonArgument\x12)\n" + + "\x03val\x18\x01 \x01(\v2\x17.pg_query.JsonValueExprR\x03val\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"\xfa\x03\n" + + "\fJsonFuncExpr\x12$\n" + + "\x02op\x18\x01 \x01(\x0e2\x14.pg_query.JsonExprOpR\x02op\x12 \n" + + "\vcolumn_name\x18\x02 \x01(\tR\vcolumn_name\x12;\n" + + "\fcontext_item\x18\x03 \x01(\v2\x17.pg_query.JsonValueExprR\fcontext_item\x12*\n" + + "\bpathspec\x18\x04 \x01(\v2\x0e.pg_query.NodeR\bpathspec\x12(\n" + + "\apassing\x18\x05 \x03(\v2\x0e.pg_query.NodeR\apassing\x12,\n" + + "\x06output\x18\x06 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x122\n" + + "\bon_empty\x18\a \x01(\v2\x16.pg_query.JsonBehaviorR\bon_empty\x122\n" + + "\bon_error\x18\b \x01(\v2\x16.pg_query.JsonBehaviorR\bon_error\x12/\n" + + "\awrapper\x18\t \x01(\x0e2\x15.pg_query.JsonWrapperR\awrapper\x12,\n" + + "\x06quotes\x18\n" + + " \x01(\x0e2\x14.pg_query.JsonQuotesR\x06quotes\x12\x1a\n" + + "\blocation\x18\v \x01(\x05R\blocation\"\x91\x01\n" + + "\x11JsonTablePathSpec\x12&\n" + + "\x06string\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x06string\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12$\n" + + "\rname_location\x18\x03 \x01(\x05R\rname_location\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xe6\x02\n" + + "\tJsonTable\x12;\n" + + "\fcontext_item\x18\x01 \x01(\v2\x17.pg_query.JsonValueExprR\fcontext_item\x127\n" + + "\bpathspec\x18\x02 \x01(\v2\x1b.pg_query.JsonTablePathSpecR\bpathspec\x12(\n" + + "\apassing\x18\x03 \x03(\v2\x0e.pg_query.NodeR\apassing\x12(\n" + + "\acolumns\x18\x04 \x03(\v2\x0e.pg_query.NodeR\acolumns\x122\n" + + "\bon_error\x18\x05 \x01(\v2\x16.pg_query.JsonBehaviorR\bon_error\x12%\n" + + "\x05alias\x18\x06 \x01(\v2\x0f.pg_query.AliasR\x05alias\x12\x18\n" + + "\alateral\x18\a \x01(\bR\alateral\x12\x1a\n" + + "\blocation\x18\b \x01(\x05R\blocation\"\x83\x04\n" + + "\x0fJsonTableColumn\x127\n" + + "\acoltype\x18\x01 \x01(\x0e2\x1d.pg_query.JsonTableColumnTypeR\acoltype\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12/\n" + + "\ttype_name\x18\x03 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x127\n" + + "\bpathspec\x18\x04 \x01(\v2\x1b.pg_query.JsonTablePathSpecR\bpathspec\x12,\n" + + "\x06format\x18\x05 \x01(\v2\x14.pg_query.JsonFormatR\x06format\x12/\n" + + "\awrapper\x18\x06 \x01(\x0e2\x15.pg_query.JsonWrapperR\awrapper\x12,\n" + + "\x06quotes\x18\a \x01(\x0e2\x14.pg_query.JsonQuotesR\x06quotes\x12(\n" + + "\acolumns\x18\b \x03(\v2\x0e.pg_query.NodeR\acolumns\x122\n" + + "\bon_empty\x18\t \x01(\v2\x16.pg_query.JsonBehaviorR\bon_empty\x122\n" + + "\bon_error\x18\n" + + " \x01(\v2\x16.pg_query.JsonBehaviorR\bon_error\x12\x1a\n" + + "\blocation\x18\v \x01(\x05R\blocation\"_\n" + + "\fJsonKeyValue\x12 \n" + + "\x03key\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03key\x12-\n" + + "\x05value\x18\x02 \x01(\v2\x17.pg_query.JsonValueExprR\x05value\"\xa8\x01\n" + + "\rJsonParseExpr\x12+\n" + + "\x04expr\x18\x01 \x01(\v2\x17.pg_query.JsonValueExprR\x04expr\x12,\n" + + "\x06output\x18\x02 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12 \n" + + "\vunique_keys\x18\x03 \x01(\bR\vunique_keys\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"~\n" + + "\x0eJsonScalarExpr\x12\"\n" + + "\x04expr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x04expr\x12,\n" + + "\x06output\x18\x02 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\x8a\x01\n" + + "\x11JsonSerializeExpr\x12+\n" + + "\x04expr\x18\x01 \x01(\v2\x17.pg_query.JsonValueExprR\x04expr\x12,\n" + + "\x06output\x18\x02 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"\xc7\x01\n" + + "\x15JsonObjectConstructor\x12$\n" + + "\x05exprs\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05exprs\x12,\n" + + "\x06output\x18\x02 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12&\n" + + "\x0eabsent_on_null\x18\x03 \x01(\bR\x0eabsent_on_null\x12\x16\n" + + "\x06unique\x18\x04 \x01(\bR\x06unique\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xae\x01\n" + + "\x14JsonArrayConstructor\x12$\n" + + "\x05exprs\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05exprs\x12,\n" + + "\x06output\x18\x02 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12&\n" + + "\x0eabsent_on_null\x18\x03 \x01(\bR\x0eabsent_on_null\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xe1\x01\n" + + "\x19JsonArrayQueryConstructor\x12$\n" + + "\x05query\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x05query\x12,\n" + + "\x06output\x18\x02 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12,\n" + + "\x06format\x18\x03 \x01(\v2\x14.pg_query.JsonFormatR\x06format\x12&\n" + + "\x0eabsent_on_null\x18\x04 \x01(\bR\x0eabsent_on_null\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xe5\x01\n" + + "\x12JsonAggConstructor\x12,\n" + + "\x06output\x18\x01 \x01(\v2\x14.pg_query.JsonOutputR\x06output\x12.\n" + + "\n" + + "agg_filter\x18\x02 \x01(\v2\x0e.pg_query.NodeR\n" + + "agg_filter\x12,\n" + + "\tagg_order\x18\x03 \x03(\v2\x0e.pg_query.NodeR\tagg_order\x12'\n" + + "\x04over\x18\x04 \x01(\v2\x13.pg_query.WindowDefR\x04over\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xb9\x01\n" + + "\rJsonObjectAgg\x12>\n" + + "\vconstructor\x18\x01 \x01(\v2\x1c.pg_query.JsonAggConstructorR\vconstructor\x12(\n" + + "\x03arg\x18\x02 \x01(\v2\x16.pg_query.JsonKeyValueR\x03arg\x12&\n" + + "\x0eabsent_on_null\x18\x03 \x01(\bR\x0eabsent_on_null\x12\x16\n" + + "\x06unique\x18\x04 \x01(\bR\x06unique\"\xa1\x01\n" + + "\fJsonArrayAgg\x12>\n" + + "\vconstructor\x18\x01 \x01(\v2\x1c.pg_query.JsonAggConstructorR\vconstructor\x12)\n" + + "\x03arg\x18\x02 \x01(\v2\x17.pg_query.JsonValueExprR\x03arg\x12&\n" + + "\x0eabsent_on_null\x18\x03 \x01(\bR\x0eabsent_on_null\"o\n" + + "\aRawStmt\x12\"\n" + + "\x04stmt\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x04stmt\x12$\n" + + "\rstmt_location\x18\x02 \x01(\x05R\rstmt_location\x12\x1a\n" + + "\bstmt_len\x18\x03 \x01(\x05R\bstmt_len\"\x8e\x03\n" + + "\n" + + "InsertStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\"\n" + + "\x04cols\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04cols\x12/\n" + + "\vselect_stmt\x18\x03 \x01(\v2\x0e.pg_query.NodeR\n" + + "selectStmt\x12H\n" + + "\x12on_conflict_clause\x18\x04 \x01(\v2\x1a.pg_query.OnConflictClauseR\x10onConflictClause\x12D\n" + + "\x10returning_clause\x18\x05 \x01(\v2\x19.pg_query.ReturningClauseR\x0freturningClause\x125\n" + + "\vwith_clause\x18\x06 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\x124\n" + + "\boverride\x18\a \x01(\x0e2\x18.pg_query.OverridingKindR\boverride\"\x9f\x02\n" + + "\n" + + "DeleteStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x121\n" + + "\fusing_clause\x18\x02 \x03(\v2\x0e.pg_query.NodeR\vusingClause\x121\n" + + "\fwhere_clause\x18\x03 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x12D\n" + + "\x10returning_clause\x18\x04 \x01(\v2\x19.pg_query.ReturningClauseR\x0freturningClause\x125\n" + + "\vwith_clause\x18\x05 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\"\xce\x02\n" + + "\n" + + "UpdateStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12/\n" + + "\vtarget_list\x18\x02 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x121\n" + + "\fwhere_clause\x18\x03 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x12/\n" + + "\vfrom_clause\x18\x04 \x03(\v2\x0e.pg_query.NodeR\n" + + "fromClause\x12D\n" + + "\x10returning_clause\x18\x05 \x01(\v2\x19.pg_query.ReturningClauseR\x0freturningClause\x125\n" + + "\vwith_clause\x18\x06 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\"\xe6\x02\n" + + "\tMergeStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x127\n" + + "\x0fsource_relation\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x0esourceRelation\x125\n" + + "\x0ejoin_condition\x18\x03 \x01(\v2\x0e.pg_query.NodeR\rjoinCondition\x12<\n" + + "\x12merge_when_clauses\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x10mergeWhenClauses\x12D\n" + + "\x10returning_clause\x18\x05 \x01(\v2\x19.pg_query.ReturningClauseR\x0freturningClause\x125\n" + + "\vwith_clause\x18\x06 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\"\xd3\a\n" + + "\n" + + "SelectStmt\x127\n" + + "\x0fdistinct_clause\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x0edistinctClause\x125\n" + + "\vinto_clause\x18\x02 \x01(\v2\x14.pg_query.IntoClauseR\n" + + "intoClause\x12/\n" + + "\vtarget_list\x18\x03 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x12/\n" + + "\vfrom_clause\x18\x04 \x03(\v2\x0e.pg_query.NodeR\n" + + "fromClause\x121\n" + + "\fwhere_clause\x18\x05 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x121\n" + + "\fgroup_clause\x18\x06 \x03(\v2\x0e.pg_query.NodeR\vgroupClause\x12%\n" + + "\x0egroup_distinct\x18\a \x01(\bR\rgroupDistinct\x123\n" + + "\rhaving_clause\x18\b \x01(\v2\x0e.pg_query.NodeR\fhavingClause\x123\n" + + "\rwindow_clause\x18\t \x03(\v2\x0e.pg_query.NodeR\fwindowClause\x121\n" + + "\fvalues_lists\x18\n" + + " \x03(\v2\x0e.pg_query.NodeR\vvaluesLists\x12/\n" + + "\vsort_clause\x18\v \x03(\v2\x0e.pg_query.NodeR\n" + + "sortClause\x121\n" + + "\flimit_offset\x18\f \x01(\v2\x0e.pg_query.NodeR\vlimitOffset\x12/\n" + + "\vlimit_count\x18\r \x01(\v2\x0e.pg_query.NodeR\n" + + "limitCount\x128\n" + + "\flimit_option\x18\x0e \x01(\x0e2\x15.pg_query.LimitOptionR\vlimitOption\x125\n" + + "\x0elocking_clause\x18\x0f \x03(\v2\x0e.pg_query.NodeR\rlockingClause\x125\n" + + "\vwith_clause\x18\x10 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\x12&\n" + + "\x02op\x18\x11 \x01(\x0e2\x16.pg_query.SetOperationR\x02op\x12\x10\n" + + "\x03all\x18\x12 \x01(\bR\x03all\x12(\n" + + "\x04larg\x18\x13 \x01(\v2\x14.pg_query.SelectStmtR\x04larg\x12(\n" + + "\x04rarg\x18\x14 \x01(\v2\x14.pg_query.SelectStmtR\x04rarg\"\xde\x02\n" + + "\x10SetOperationStmt\x12&\n" + + "\x02op\x18\x01 \x01(\x0e2\x16.pg_query.SetOperationR\x02op\x12\x10\n" + + "\x03all\x18\x02 \x01(\bR\x03all\x12\"\n" + + "\x04larg\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x04larg\x12\"\n" + + "\x04rarg\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x04rarg\x12+\n" + + "\tcol_types\x18\x05 \x03(\v2\x0e.pg_query.NodeR\bcolTypes\x12/\n" + + "\vcol_typmods\x18\x06 \x03(\v2\x0e.pg_query.NodeR\n" + + "colTypmods\x125\n" + + "\x0ecol_collations\x18\a \x03(\v2\x0e.pg_query.NodeR\rcolCollations\x123\n" + + "\rgroup_clauses\x18\b \x03(\v2\x0e.pg_query.NodeR\fgroupClauses\":\n" + + "\n" + + "ReturnStmt\x12,\n" + + "\treturnval\x18\x01 \x01(\v2\x0e.pg_query.NodeR\treturnval\"\xb0\x01\n" + + "\fPLAssignStmt\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x120\n" + + "\vindirection\x18\x02 \x03(\v2\x0e.pg_query.NodeR\vindirection\x12\x16\n" + + "\x06nnames\x18\x03 \x01(\x05R\x06nnames\x12&\n" + + "\x03val\x18\x04 \x01(\v2\x14.pg_query.SelectStmtR\x03val\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\xb9\x01\n" + + "\x10CreateSchemaStmt\x12\x1e\n" + + "\n" + + "schemaname\x18\x01 \x01(\tR\n" + + "schemaname\x12.\n" + + "\bauthrole\x18\x02 \x01(\v2\x12.pg_query.RoleSpecR\bauthrole\x12/\n" + + "\vschema_elts\x18\x03 \x03(\v2\x0e.pg_query.NodeR\n" + + "schemaElts\x12$\n" + + "\rif_not_exists\x18\x04 \x01(\bR\rif_not_exists\"\xb4\x01\n" + + "\x0eAlterTableStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\"\n" + + "\x04cmds\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04cmds\x12.\n" + + "\aobjtype\x18\x03 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12\x1e\n" + + "\n" + + "missing_ok\x18\x04 \x01(\bR\n" + + "missing_ok\"\xa9\x02\n" + + "\rAlterTableCmd\x122\n" + + "\asubtype\x18\x01 \x01(\x0e2\x18.pg_query.AlterTableTypeR\asubtype\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n" + + "\x03num\x18\x03 \x01(\x05R\x03num\x12.\n" + + "\bnewowner\x18\x04 \x01(\v2\x12.pg_query.RoleSpecR\bnewowner\x12 \n" + + "\x03def\x18\x05 \x01(\v2\x0e.pg_query.NodeR\x03def\x122\n" + + "\bbehavior\x18\x06 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\x12\x1e\n" + + "\n" + + "missing_ok\x18\a \x01(\bR\n" + + "missing_ok\x12\x18\n" + + "\arecurse\x18\b \x01(\bR\arecurse\"\xc8\x02\n" + + "\x11ATAlterConstraint\x12\x18\n" + + "\aconname\x18\x01 \x01(\tR\aconname\x121\n" + + "\x14alter_enforceability\x18\x02 \x01(\bR\x13alterEnforceability\x12 \n" + + "\vis_enforced\x18\x03 \x01(\bR\vis_enforced\x12/\n" + + "\x13alter_deferrability\x18\x04 \x01(\bR\x12alterDeferrability\x12\x1e\n" + + "\n" + + "deferrable\x18\x05 \x01(\bR\n" + + "deferrable\x12\"\n" + + "\finitdeferred\x18\x06 \x01(\bR\finitdeferred\x121\n" + + "\x14alter_inheritability\x18\a \x01(\bR\x13alterInheritability\x12\x1c\n" + + "\tnoinherit\x18\b \x01(\bR\tnoinherit\"O\n" + + "\x13ReplicaIdentityStmt\x12$\n" + + "\ridentity_type\x18\x01 \x01(\tR\ridentity_type\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"@\n" + + "\x12AlterCollationStmt\x12*\n" + + "\bcollname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\bcollname\"\xe2\x01\n" + + "\x0fAlterDomainStmt\x12\x18\n" + + "\asubtype\x18\x01 \x01(\tR\asubtype\x12+\n" + + "\ttype_name\x18\x02 \x03(\v2\x0e.pg_query.NodeR\btypeName\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12 \n" + + "\x03def\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x03def\x122\n" + + "\bbehavior\x18\x05 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\x12\x1e\n" + + "\n" + + "missing_ok\x18\x06 \x01(\bR\n" + + "missing_ok\"\x9a\x03\n" + + "\tGrantStmt\x12\x1a\n" + + "\bis_grant\x18\x01 \x01(\bR\bis_grant\x125\n" + + "\btargtype\x18\x02 \x01(\x0e2\x19.pg_query.GrantTargetTypeR\btargtype\x12.\n" + + "\aobjtype\x18\x03 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12(\n" + + "\aobjects\x18\x04 \x03(\v2\x0e.pg_query.NodeR\aobjects\x12.\n" + + "\n" + + "privileges\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "privileges\x12*\n" + + "\bgrantees\x18\x06 \x03(\v2\x0e.pg_query.NodeR\bgrantees\x12\"\n" + + "\fgrant_option\x18\a \x01(\bR\fgrant_option\x12,\n" + + "\agrantor\x18\b \x01(\v2\x12.pg_query.RoleSpecR\agrantor\x122\n" + + "\bbehavior\x18\t \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\"\xc2\x01\n" + + "\x0eObjectWithArgs\x12(\n" + + "\aobjname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\aobjname\x12(\n" + + "\aobjargs\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aobjargs\x120\n" + + "\vobjfuncargs\x18\x03 \x03(\v2\x0e.pg_query.NodeR\vobjfuncargs\x12*\n" + + "\x10args_unspecified\x18\x04 \x01(\bR\x10args_unspecified\"N\n" + + "\n" + + "AccessPriv\x12\x1c\n" + + "\tpriv_name\x18\x01 \x01(\tR\tpriv_name\x12\"\n" + + "\x04cols\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04cols\"\x9b\x02\n" + + "\rGrantRoleStmt\x124\n" + + "\rgranted_roles\x18\x01 \x03(\v2\x0e.pg_query.NodeR\rgranted_roles\x124\n" + + "\rgrantee_roles\x18\x02 \x03(\v2\x0e.pg_query.NodeR\rgrantee_roles\x12\x1a\n" + + "\bis_grant\x18\x03 \x01(\bR\bis_grant\x12 \n" + + "\x03opt\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x03opt\x12,\n" + + "\agrantor\x18\x05 \x01(\v2\x12.pg_query.RoleSpecR\agrantor\x122\n" + + "\bbehavior\x18\x06 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\"s\n" + + "\x1aAlterDefaultPrivilegesStmt\x12(\n" + + "\aoptions\x18\x01 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12+\n" + + "\x06action\x18\x02 \x01(\v2\x13.pg_query.GrantStmtR\x06action\"\xbd\x02\n" + + "\bCopyStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12$\n" + + "\x05query\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x05query\x12(\n" + + "\aattlist\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aattlist\x12\x18\n" + + "\ais_from\x18\x04 \x01(\bR\ais_from\x12\x1e\n" + + "\n" + + "is_program\x18\x05 \x01(\bR\n" + + "is_program\x12\x1a\n" + + "\bfilename\x18\x06 \x01(\tR\bfilename\x12(\n" + + "\aoptions\x18\a \x03(\v2\x0e.pg_query.NodeR\aoptions\x121\n" + + "\fwhere_clause\x18\b \x01(\v2\x0e.pg_query.NodeR\vwhereClause\"\xd2\x01\n" + + "\x0fVariableSetStmt\x12-\n" + + "\x04kind\x18\x01 \x01(\x0e2\x19.pg_query.VariableSetKindR\x04kind\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\"\n" + + "\x04args\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x04args\x12 \n" + + "\vjumble_args\x18\x04 \x01(\bR\vjumble_args\x12\x1a\n" + + "\bis_local\x18\x05 \x01(\bR\bis_local\x12\x1a\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\"&\n" + + "\x10VariableShowStmt\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\x81\x05\n" + + "\n" + + "CreateStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12-\n" + + "\n" + + "table_elts\x18\x02 \x03(\v2\x0e.pg_query.NodeR\ttableElts\x123\n" + + "\rinh_relations\x18\x03 \x03(\v2\x0e.pg_query.NodeR\finhRelations\x12:\n" + + "\tpartbound\x18\x04 \x01(\v2\x1c.pg_query.PartitionBoundSpecR\tpartbound\x123\n" + + "\bpartspec\x18\x05 \x01(\v2\x17.pg_query.PartitionSpecR\bpartspec\x123\n" + + "\vof_typename\x18\x06 \x01(\v2\x12.pg_query.TypeNameR\n" + + "ofTypename\x120\n" + + "\vconstraints\x18\a \x03(\v2\x0e.pg_query.NodeR\vconstraints\x124\n" + + "\rnnconstraints\x18\b \x03(\v2\x0e.pg_query.NodeR\rnnconstraints\x12(\n" + + "\aoptions\x18\t \x03(\v2\x0e.pg_query.NodeR\aoptions\x124\n" + + "\boncommit\x18\n" + + " \x01(\x0e2\x18.pg_query.OnCommitActionR\boncommit\x12&\n" + + "\x0etablespacename\x18\v \x01(\tR\x0etablespacename\x12#\n" + + "\raccess_method\x18\f \x01(\tR\faccessMethod\x12$\n" + + "\rif_not_exists\x18\r \x01(\bR\rif_not_exists\"\xa4\v\n" + + "\n" + + "Constraint\x12.\n" + + "\acontype\x18\x01 \x01(\x0e2\x14.pg_query.ConstrTypeR\acontype\x12\x18\n" + + "\aconname\x18\x02 \x01(\tR\aconname\x12\x1e\n" + + "\n" + + "deferrable\x18\x03 \x01(\bR\n" + + "deferrable\x12\"\n" + + "\finitdeferred\x18\x04 \x01(\bR\finitdeferred\x12 \n" + + "\vis_enforced\x18\x05 \x01(\bR\vis_enforced\x12(\n" + + "\x0fskip_validation\x18\x06 \x01(\bR\x0fskip_validation\x12(\n" + + "\x0finitially_valid\x18\a \x01(\bR\x0finitially_valid\x12$\n" + + "\ris_no_inherit\x18\b \x01(\bR\ris_no_inherit\x12*\n" + + "\braw_expr\x18\t \x01(\v2\x0e.pg_query.NodeR\braw_expr\x12 \n" + + "\vcooked_expr\x18\n" + + " \x01(\tR\vcooked_expr\x12&\n" + + "\x0egenerated_when\x18\v \x01(\tR\x0egenerated_when\x12&\n" + + "\x0egenerated_kind\x18\f \x01(\tR\x0egenerated_kind\x12.\n" + + "\x12nulls_not_distinct\x18\r \x01(\bR\x12nulls_not_distinct\x12\"\n" + + "\x04keys\x18\x0e \x03(\v2\x0e.pg_query.NodeR\x04keys\x12*\n" + + "\x10without_overlaps\x18\x0f \x01(\bR\x10without_overlaps\x12,\n" + + "\tincluding\x18\x10 \x03(\v2\x0e.pg_query.NodeR\tincluding\x12.\n" + + "\n" + + "exclusions\x18\x11 \x03(\v2\x0e.pg_query.NodeR\n" + + "exclusions\x12(\n" + + "\aoptions\x18\x12 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\x1c\n" + + "\tindexname\x18\x13 \x01(\tR\tindexname\x12\x1e\n" + + "\n" + + "indexspace\x18\x14 \x01(\tR\n" + + "indexspace\x122\n" + + "\x14reset_default_tblspc\x18\x15 \x01(\bR\x14reset_default_tblspc\x12$\n" + + "\raccess_method\x18\x16 \x01(\tR\raccess_method\x122\n" + + "\fwhere_clause\x18\x17 \x01(\v2\x0e.pg_query.NodeR\fwhere_clause\x12,\n" + + "\apktable\x18\x18 \x01(\v2\x12.pg_query.RangeVarR\apktable\x12*\n" + + "\bfk_attrs\x18\x19 \x03(\v2\x0e.pg_query.NodeR\bfk_attrs\x12*\n" + + "\bpk_attrs\x18\x1a \x03(\v2\x0e.pg_query.NodeR\bpk_attrs\x12&\n" + + "\x0efk_with_period\x18\x1b \x01(\bR\x0efk_with_period\x12&\n" + + "\x0epk_with_period\x18\x1c \x01(\bR\x0epk_with_period\x12\"\n" + + "\ffk_matchtype\x18\x1d \x01(\tR\ffk_matchtype\x12$\n" + + "\rfk_upd_action\x18\x1e \x01(\tR\rfk_upd_action\x12$\n" + + "\rfk_del_action\x18\x1f \x01(\tR\rfk_del_action\x128\n" + + "\x0ffk_del_set_cols\x18 \x03(\v2\x0e.pg_query.NodeR\x0ffk_del_set_cols\x124\n" + + "\rold_conpfeqop\x18! \x03(\v2\x0e.pg_query.NodeR\rold_conpfeqop\x12(\n" + + "\x0fold_pktable_oid\x18\" \x01(\rR\x0fold_pktable_oid\x12\x1a\n" + + "\blocation\x18# \x01(\x05R\blocation\"\xae\x01\n" + + "\x14CreateTableSpaceStmt\x12&\n" + + "\x0etablespacename\x18\x01 \x01(\tR\x0etablespacename\x12(\n" + + "\x05owner\x18\x02 \x01(\v2\x12.pg_query.RoleSpecR\x05owner\x12\x1a\n" + + "\blocation\x18\x03 \x01(\tR\blocation\x12(\n" + + "\aoptions\x18\x04 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\\\n" + + "\x12DropTableSpaceStmt\x12&\n" + + "\x0etablespacename\x18\x01 \x01(\tR\x0etablespacename\x12\x1e\n" + + "\n" + + "missing_ok\x18\x02 \x01(\bR\n" + + "missing_ok\"\x89\x01\n" + + "\x1aAlterTableSpaceOptionsStmt\x12&\n" + + "\x0etablespacename\x18\x01 \x01(\tR\x0etablespacename\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\x19\n" + + "\bis_reset\x18\x03 \x01(\bR\aisReset\"\xe7\x01\n" + + "\x15AlterTableMoveAllStmt\x120\n" + + "\x13orig_tablespacename\x18\x01 \x01(\tR\x13orig_tablespacename\x12.\n" + + "\aobjtype\x18\x02 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12$\n" + + "\x05roles\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x05roles\x12.\n" + + "\x12new_tablespacename\x18\x04 \x01(\tR\x12new_tablespacename\x12\x16\n" + + "\x06nowait\x18\x05 \x01(\bR\x06nowait\"\x7f\n" + + "\x13CreateExtensionStmt\x12\x18\n" + + "\aextname\x18\x01 \x01(\tR\aextname\x12$\n" + + "\rif_not_exists\x18\x02 \x01(\bR\rif_not_exists\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"X\n" + + "\x12AlterExtensionStmt\x12\x18\n" + + "\aextname\x18\x01 \x01(\tR\aextname\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\xa6\x01\n" + + "\x1aAlterExtensionContentsStmt\x12\x18\n" + + "\aextname\x18\x01 \x01(\tR\aextname\x12\x16\n" + + "\x06action\x18\x02 \x01(\x05R\x06action\x12.\n" + + "\aobjtype\x18\x03 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12&\n" + + "\x06object\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x06object\"\x87\x01\n" + + "\rCreateFdwStmt\x12\x18\n" + + "\afdwname\x18\x01 \x01(\tR\afdwname\x122\n" + + "\ffunc_options\x18\x02 \x03(\v2\x0e.pg_query.NodeR\ffunc_options\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x86\x01\n" + + "\fAlterFdwStmt\x12\x18\n" + + "\afdwname\x18\x01 \x01(\tR\afdwname\x122\n" + + "\ffunc_options\x18\x02 \x03(\v2\x0e.pg_query.NodeR\ffunc_options\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\xdd\x01\n" + + "\x17CreateForeignServerStmt\x12\x1e\n" + + "\n" + + "servername\x18\x01 \x01(\tR\n" + + "servername\x12\x1e\n" + + "\n" + + "servertype\x18\x02 \x01(\tR\n" + + "servertype\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12\x18\n" + + "\afdwname\x18\x04 \x01(\tR\afdwname\x12$\n" + + "\rif_not_exists\x18\x05 \x01(\bR\rif_not_exists\x12(\n" + + "\aoptions\x18\x06 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x9e\x01\n" + + "\x16AlterForeignServerStmt\x12\x1e\n" + + "\n" + + "servername\x18\x01 \x01(\tR\n" + + "servername\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12 \n" + + "\vhas_version\x18\x04 \x01(\bR\vhas_version\"\x91\x01\n" + + "\x16CreateForeignTableStmt\x12-\n" + + "\tbase_stmt\x18\x01 \x01(\v2\x14.pg_query.CreateStmtR\x04base\x12\x1e\n" + + "\n" + + "servername\x18\x02 \x01(\tR\n" + + "servername\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\xaf\x01\n" + + "\x15CreateUserMappingStmt\x12&\n" + + "\x04user\x18\x01 \x01(\v2\x12.pg_query.RoleSpecR\x04user\x12\x1e\n" + + "\n" + + "servername\x18\x02 \x01(\tR\n" + + "servername\x12$\n" + + "\rif_not_exists\x18\x03 \x01(\bR\rif_not_exists\x12(\n" + + "\aoptions\x18\x04 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x88\x01\n" + + "\x14AlterUserMappingStmt\x12&\n" + + "\x04user\x18\x01 \x01(\v2\x12.pg_query.RoleSpecR\x04user\x12\x1e\n" + + "\n" + + "servername\x18\x02 \x01(\tR\n" + + "servername\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"}\n" + + "\x13DropUserMappingStmt\x12&\n" + + "\x04user\x18\x01 \x01(\v2\x12.pg_query.RoleSpecR\x04user\x12\x1e\n" + + "\n" + + "servername\x18\x02 \x01(\tR\n" + + "servername\x12\x1e\n" + + "\n" + + "missing_ok\x18\x03 \x01(\bR\n" + + "missing_ok\"\xa0\x02\n" + + "\x17ImportForeignSchemaStmt\x12 \n" + + "\vserver_name\x18\x01 \x01(\tR\vserver_name\x12$\n" + + "\rremote_schema\x18\x02 \x01(\tR\rremote_schema\x12\"\n" + + "\flocal_schema\x18\x03 \x01(\tR\flocal_schema\x12?\n" + + "\tlist_type\x18\x04 \x01(\x0e2!.pg_query.ImportForeignSchemaTypeR\tlist_type\x12.\n" + + "\n" + + "table_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "table_list\x12(\n" + + "\aoptions\x18\x06 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x94\x02\n" + + "\x10CreatePolicyStmt\x12 \n" + + "\vpolicy_name\x18\x01 \x01(\tR\vpolicy_name\x12(\n" + + "\x05table\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\x05table\x12\x1a\n" + + "\bcmd_name\x18\x03 \x01(\tR\bcmd_name\x12\x1e\n" + + "\n" + + "permissive\x18\x04 \x01(\bR\n" + + "permissive\x12$\n" + + "\x05roles\x18\x05 \x03(\v2\x0e.pg_query.NodeR\x05roles\x12\"\n" + + "\x04qual\x18\x06 \x01(\v2\x0e.pg_query.NodeR\x04qual\x12.\n" + + "\n" + + "with_check\x18\a \x01(\v2\x0e.pg_query.NodeR\n" + + "with_check\"\xd7\x01\n" + + "\x0fAlterPolicyStmt\x12 \n" + + "\vpolicy_name\x18\x01 \x01(\tR\vpolicy_name\x12(\n" + + "\x05table\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\x05table\x12$\n" + + "\x05roles\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x05roles\x12\"\n" + + "\x04qual\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x04qual\x12.\n" + + "\n" + + "with_check\x18\x05 \x01(\v2\x0e.pg_query.NodeR\n" + + "with_check\"r\n" + + "\fCreateAmStmt\x12\x16\n" + + "\x06amname\x18\x01 \x01(\tR\x06amname\x122\n" + + "\fhandler_name\x18\x02 \x03(\v2\x0e.pg_query.NodeR\fhandler_name\x12\x16\n" + + "\x06amtype\x18\x03 \x01(\tR\x06amtype\"\xb6\x04\n" + + "\x0eCreateTrigStmt\x12\x18\n" + + "\areplace\x18\x01 \x01(\bR\areplace\x12\"\n" + + "\fisconstraint\x18\x02 \x01(\bR\fisconstraint\x12\x1a\n" + + "\btrigname\x18\x03 \x01(\tR\btrigname\x12.\n" + + "\brelation\x18\x04 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12*\n" + + "\bfuncname\x18\x05 \x03(\v2\x0e.pg_query.NodeR\bfuncname\x12\"\n" + + "\x04args\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x04args\x12\x10\n" + + "\x03row\x18\a \x01(\bR\x03row\x12\x16\n" + + "\x06timing\x18\b \x01(\x05R\x06timing\x12\x16\n" + + "\x06events\x18\t \x01(\x05R\x06events\x12(\n" + + "\acolumns\x18\n" + + " \x03(\v2\x0e.pg_query.NodeR\acolumns\x12/\n" + + "\vwhen_clause\x18\v \x01(\v2\x0e.pg_query.NodeR\n" + + "whenClause\x127\n" + + "\x0ftransition_rels\x18\f \x03(\v2\x0e.pg_query.NodeR\x0etransitionRels\x12\x1e\n" + + "\n" + + "deferrable\x18\r \x01(\bR\n" + + "deferrable\x12\"\n" + + "\finitdeferred\x18\x0e \x01(\bR\finitdeferred\x120\n" + + "\tconstrrel\x18\x0f \x01(\v2\x12.pg_query.RangeVarR\tconstrrel\"\xab\x01\n" + + "\x13CreateEventTrigStmt\x12\x1a\n" + + "\btrigname\x18\x01 \x01(\tR\btrigname\x12\x1c\n" + + "\teventname\x18\x02 \x01(\tR\teventname\x12.\n" + + "\n" + + "whenclause\x18\x03 \x03(\v2\x0e.pg_query.NodeR\n" + + "whenclause\x12*\n" + + "\bfuncname\x18\x04 \x03(\v2\x0e.pg_query.NodeR\bfuncname\"N\n" + + "\x12AlterEventTrigStmt\x12\x1a\n" + + "\btrigname\x18\x01 \x01(\tR\btrigname\x12\x1c\n" + + "\ttgenabled\x18\x02 \x01(\tR\ttgenabled\"\xed\x01\n" + + "\x0fCreatePLangStmt\x12\x18\n" + + "\areplace\x18\x01 \x01(\bR\areplace\x12\x16\n" + + "\x06plname\x18\x02 \x01(\tR\x06plname\x12,\n" + + "\tplhandler\x18\x03 \x03(\v2\x0e.pg_query.NodeR\tplhandler\x12*\n" + + "\bplinline\x18\x04 \x03(\v2\x0e.pg_query.NodeR\bplinline\x120\n" + + "\vplvalidator\x18\x05 \x03(\v2\x0e.pg_query.NodeR\vplvalidator\x12\x1c\n" + + "\tpltrusted\x18\x06 \x01(\bR\tpltrusted\"\x84\x01\n" + + "\x0eCreateRoleStmt\x124\n" + + "\tstmt_type\x18\x01 \x01(\x0e2\x16.pg_query.RoleStmtTypeR\tstmt_type\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"y\n" + + "\rAlterRoleStmt\x12&\n" + + "\x04role\x18\x01 \x01(\v2\x12.pg_query.RoleSpecR\x04role\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\x16\n" + + "\x06action\x18\x03 \x01(\x05R\x06action\"\x8b\x01\n" + + "\x10AlterRoleSetStmt\x12&\n" + + "\x04role\x18\x01 \x01(\v2\x12.pg_query.RoleSpecR\x04role\x12\x1a\n" + + "\bdatabase\x18\x02 \x01(\tR\bdatabase\x123\n" + + "\asetstmt\x18\x03 \x01(\v2\x19.pg_query.VariableSetStmtR\asetstmt\"T\n" + + "\fDropRoleStmt\x12$\n" + + "\x05roles\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05roles\x12\x1e\n" + + "\n" + + "missing_ok\x18\x02 \x01(\bR\n" + + "missing_ok\"\xce\x01\n" + + "\rCreateSeqStmt\x12.\n" + + "\bsequence\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\bsequence\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\x19\n" + + "\bowner_id\x18\x03 \x01(\rR\aownerId\x12\"\n" + + "\ffor_identity\x18\x04 \x01(\bR\ffor_identity\x12$\n" + + "\rif_not_exists\x18\x05 \x01(\bR\rif_not_exists\"\xac\x01\n" + + "\fAlterSeqStmt\x12.\n" + + "\bsequence\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\bsequence\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\"\n" + + "\ffor_identity\x18\x03 \x01(\bR\ffor_identity\x12\x1e\n" + + "\n" + + "missing_ok\x18\x04 \x01(\bR\n" + + "missing_ok\"\x92\x02\n" + + "\n" + + "DefineStmt\x12(\n" + + "\x04kind\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\x04kind\x12\x1a\n" + + "\boldstyle\x18\x02 \x01(\bR\boldstyle\x12*\n" + + "\bdefnames\x18\x03 \x03(\v2\x0e.pg_query.NodeR\bdefnames\x12\"\n" + + "\x04args\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x04args\x12.\n" + + "\n" + + "definition\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "definition\x12$\n" + + "\rif_not_exists\x18\x06 \x01(\bR\rif_not_exists\x12\x18\n" + + "\areplace\x18\a \x01(\bR\areplace\"\xdf\x01\n" + + "\x10CreateDomainStmt\x12.\n" + + "\n" + + "domainname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\n" + + "domainname\x12/\n" + + "\ttype_name\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\btypeName\x128\n" + + "\vcoll_clause\x18\x03 \x01(\v2\x17.pg_query.CollateClauseR\n" + + "collClause\x120\n" + + "\vconstraints\x18\x04 \x03(\v2\x0e.pg_query.NodeR\vconstraints\"\x86\x02\n" + + "\x11CreateOpClassStmt\x120\n" + + "\vopclassname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\vopclassname\x122\n" + + "\fopfamilyname\x18\x02 \x03(\v2\x0e.pg_query.NodeR\fopfamilyname\x12\x16\n" + + "\x06amname\x18\x03 \x01(\tR\x06amname\x12.\n" + + "\bdatatype\x18\x04 \x01(\v2\x12.pg_query.TypeNameR\bdatatype\x12$\n" + + "\x05items\x18\x05 \x03(\v2\x0e.pg_query.NodeR\x05items\x12\x1d\n" + + "\n" + + "is_default\x18\x06 \x01(\bR\tisDefault\"\x8d\x02\n" + + "\x11CreateOpClassItem\x12\x1a\n" + + "\bitemtype\x18\x01 \x01(\x05R\bitemtype\x12,\n" + + "\x04name\x18\x02 \x01(\v2\x18.pg_query.ObjectWithArgsR\x04name\x12\x16\n" + + "\x06number\x18\x03 \x01(\x05R\x06number\x122\n" + + "\forder_family\x18\x04 \x03(\v2\x0e.pg_query.NodeR\forder_family\x12.\n" + + "\n" + + "class_args\x18\x05 \x03(\v2\x0e.pg_query.NodeR\n" + + "class_args\x122\n" + + "\n" + + "storedtype\x18\x06 \x01(\v2\x12.pg_query.TypeNameR\n" + + "storedtype\"`\n" + + "\x12CreateOpFamilyStmt\x122\n" + + "\fopfamilyname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\fopfamilyname\x12\x16\n" + + "\x06amname\x18\x02 \x01(\tR\x06amname\"\x9e\x01\n" + + "\x11AlterOpFamilyStmt\x122\n" + + "\fopfamilyname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\fopfamilyname\x12\x16\n" + + "\x06amname\x18\x02 \x01(\tR\x06amname\x12\x17\n" + + "\ais_drop\x18\x03 \x01(\bR\x06isDrop\x12$\n" + + "\x05items\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x05items\"\xdf\x01\n" + + "\bDropStmt\x12(\n" + + "\aobjects\x18\x01 \x03(\v2\x0e.pg_query.NodeR\aobjects\x125\n" + + "\vremove_type\x18\x02 \x01(\x0e2\x14.pg_query.ObjectTypeR\n" + + "removeType\x122\n" + + "\bbehavior\x18\x03 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\x12\x1e\n" + + "\n" + + "missing_ok\x18\x04 \x01(\bR\n" + + "missing_ok\x12\x1e\n" + + "\n" + + "concurrent\x18\x05 \x01(\bR\n" + + "concurrent\"\x94\x01\n" + + "\fTruncateStmt\x12,\n" + + "\trelations\x18\x01 \x03(\v2\x0e.pg_query.NodeR\trelations\x12\"\n" + + "\frestart_seqs\x18\x02 \x01(\bR\frestart_seqs\x122\n" + + "\bbehavior\x18\x03 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\"\x7f\n" + + "\vCommentStmt\x12.\n" + + "\aobjtype\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12&\n" + + "\x06object\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x06object\x12\x18\n" + + "\acomment\x18\x03 \x01(\tR\acomment\"\x98\x01\n" + + "\fSecLabelStmt\x12.\n" + + "\aobjtype\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12&\n" + + "\x06object\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x06object\x12\x1a\n" + + "\bprovider\x18\x03 \x01(\tR\bprovider\x12\x14\n" + + "\x05label\x18\x04 \x01(\tR\x05label\"s\n" + + "\x11DeclareCursorStmt\x12\x1e\n" + + "\n" + + "portalname\x18\x01 \x01(\tR\n" + + "portalname\x12\x18\n" + + "\aoptions\x18\x02 \x01(\x05R\aoptions\x12$\n" + + "\x05query\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x05query\"1\n" + + "\x0fClosePortalStmt\x12\x1e\n" + + "\n" + + "portalname\x18\x01 \x01(\tR\n" + + "portalname\"\x96\x01\n" + + "\tFetchStmt\x126\n" + + "\tdirection\x18\x01 \x01(\x0e2\x18.pg_query.FetchDirectionR\tdirection\x12\x19\n" + + "\bhow_many\x18\x02 \x01(\x03R\ahowMany\x12\x1e\n" + + "\n" + + "portalname\x18\x03 \x01(\tR\n" + + "portalname\x12\x16\n" + + "\x06ismove\x18\x04 \x01(\bR\x06ismove\"\x8a\b\n" + + "\tIndexStmt\x12\x18\n" + + "\aidxname\x18\x01 \x01(\tR\aidxname\x12.\n" + + "\brelation\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12#\n" + + "\raccess_method\x18\x03 \x01(\tR\faccessMethod\x12\x1f\n" + + "\vtable_space\x18\x04 \x01(\tR\n" + + "tableSpace\x121\n" + + "\findex_params\x18\x05 \x03(\v2\x0e.pg_query.NodeR\vindexParams\x12D\n" + + "\x16index_including_params\x18\x06 \x03(\v2\x0e.pg_query.NodeR\x14indexIncludingParams\x12(\n" + + "\aoptions\x18\a \x03(\v2\x0e.pg_query.NodeR\aoptions\x121\n" + + "\fwhere_clause\x18\b \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x128\n" + + "\x10exclude_op_names\x18\t \x03(\v2\x0e.pg_query.NodeR\x0eexcludeOpNames\x12\x1e\n" + + "\n" + + "idxcomment\x18\n" + + " \x01(\tR\n" + + "idxcomment\x12\x1b\n" + + "\tindex_oid\x18\v \x01(\rR\bindexOid\x12\x1d\n" + + "\n" + + "old_number\x18\f \x01(\rR\toldNumber\x12(\n" + + "\x10old_create_subid\x18\r \x01(\rR\x0eoldCreateSubid\x12C\n" + + "\x1eold_first_relfilelocator_subid\x18\x0e \x01(\rR\x1boldFirstRelfilelocatorSubid\x12\x16\n" + + "\x06unique\x18\x0f \x01(\bR\x06unique\x12.\n" + + "\x12nulls_not_distinct\x18\x10 \x01(\bR\x12nulls_not_distinct\x12\x18\n" + + "\aprimary\x18\x11 \x01(\bR\aprimary\x12\"\n" + + "\fisconstraint\x18\x12 \x01(\bR\fisconstraint\x12,\n" + + "\x11iswithoutoverlaps\x18\x13 \x01(\bR\x11iswithoutoverlaps\x12\x1e\n" + + "\n" + + "deferrable\x18\x14 \x01(\bR\n" + + "deferrable\x12\"\n" + + "\finitdeferred\x18\x15 \x01(\bR\finitdeferred\x12 \n" + + "\vtransformed\x18\x16 \x01(\bR\vtransformed\x12\x1e\n" + + "\n" + + "concurrent\x18\x17 \x01(\bR\n" + + "concurrent\x12$\n" + + "\rif_not_exists\x18\x18 \x01(\bR\rif_not_exists\x122\n" + + "\x14reset_default_tblspc\x18\x19 \x01(\bR\x14reset_default_tblspc\"\xa9\x02\n" + + "\x0fCreateStatsStmt\x12*\n" + + "\bdefnames\x18\x01 \x03(\v2\x0e.pg_query.NodeR\bdefnames\x12.\n" + + "\n" + + "stat_types\x18\x02 \x03(\v2\x0e.pg_query.NodeR\n" + + "stat_types\x12$\n" + + "\x05exprs\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x05exprs\x12,\n" + + "\trelations\x18\x04 \x03(\v2\x0e.pg_query.NodeR\trelations\x12\x1e\n" + + "\n" + + "stxcomment\x18\x05 \x01(\tR\n" + + "stxcomment\x12 \n" + + "\vtransformed\x18\x06 \x01(\bR\vtransformed\x12$\n" + + "\rif_not_exists\x18\a \x01(\bR\rif_not_exists\"C\n" + + "\tStatsElem\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\"\n" + + "\x04expr\x18\x02 \x01(\v2\x0e.pg_query.NodeR\x04expr\"\x92\x01\n" + + "\x0eAlterStatsStmt\x12*\n" + + "\bdefnames\x18\x01 \x03(\v2\x0e.pg_query.NodeR\bdefnames\x124\n" + + "\rstxstattarget\x18\x02 \x01(\v2\x0e.pg_query.NodeR\rstxstattarget\x12\x1e\n" + + "\n" + + "missing_ok\x18\x03 \x01(\bR\n" + + "missing_ok\"\xb9\x02\n" + + "\x12CreateFunctionStmt\x12\"\n" + + "\fis_procedure\x18\x01 \x01(\bR\fis_procedure\x12\x18\n" + + "\areplace\x18\x02 \x01(\bR\areplace\x12*\n" + + "\bfuncname\x18\x03 \x03(\v2\x0e.pg_query.NodeR\bfuncname\x12.\n" + + "\n" + + "parameters\x18\x04 \x03(\v2\x0e.pg_query.NodeR\n" + + "parameters\x123\n" + + "\vreturn_type\x18\x05 \x01(\v2\x12.pg_query.TypeNameR\n" + + "returnType\x12(\n" + + "\aoptions\x18\x06 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12*\n" + + "\bsql_body\x18\a \x01(\v2\x0e.pg_query.NodeR\bsql_body\"\xd1\x01\n" + + "\x11FunctionParameter\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12-\n" + + "\barg_type\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\aargType\x123\n" + + "\x04mode\x18\x03 \x01(\x0e2\x1f.pg_query.FunctionParameterModeR\x04mode\x12(\n" + + "\adefexpr\x18\x04 \x01(\v2\x0e.pg_query.NodeR\adefexpr\x12\x1a\n" + + "\blocation\x18\x05 \x01(\x05R\blocation\"\x9b\x01\n" + + "\x11AlterFunctionStmt\x12.\n" + + "\aobjtype\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12,\n" + + "\x04func\x18\x02 \x01(\v2\x18.pg_query.ObjectWithArgsR\x04func\x12(\n" + + "\aactions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aactions\",\n" + + "\x06DoStmt\x12\"\n" + + "\x04args\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x04args\"\x8e\x01\n" + + "\x0fInlineCodeBlock\x12 \n" + + "\vsource_text\x18\x01 \x01(\tR\vsource_text\x12\x19\n" + + "\blang_oid\x18\x02 \x01(\rR\alangOid\x12&\n" + + "\x0flang_is_trusted\x18\x03 \x01(\bR\rlangIsTrusted\x12\x16\n" + + "\x06atomic\x18\x04 \x01(\bR\x06atomic\"\x94\x01\n" + + "\bCallStmt\x12.\n" + + "\bfunccall\x18\x01 \x01(\v2\x12.pg_query.FuncCallR\bfunccall\x12.\n" + + "\bfuncexpr\x18\x02 \x01(\v2\x12.pg_query.FuncExprR\bfuncexpr\x12(\n" + + "\aoutargs\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoutargs\"%\n" + + "\vCallContext\x12\x16\n" + + "\x06atomic\x18\x01 \x01(\bR\x06atomic\"\xde\x02\n" + + "\n" + + "RenameStmt\x125\n" + + "\vrename_type\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\n" + + "renameType\x129\n" + + "\rrelation_type\x18\x02 \x01(\x0e2\x14.pg_query.ObjectTypeR\frelationType\x12.\n" + + "\brelation\x18\x03 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12&\n" + + "\x06object\x18\x04 \x01(\v2\x0e.pg_query.NodeR\x06object\x12\x18\n" + + "\asubname\x18\x05 \x01(\tR\asubname\x12\x18\n" + + "\anewname\x18\x06 \x01(\tR\anewname\x122\n" + + "\bbehavior\x18\a \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\x12\x1e\n" + + "\n" + + "missing_ok\x18\b \x01(\bR\n" + + "missing_ok\"\xeb\x01\n" + + "\x16AlterObjectDependsStmt\x125\n" + + "\vobject_type\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\n" + + "objectType\x12.\n" + + "\brelation\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12&\n" + + "\x06object\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x06object\x12*\n" + + "\aextname\x18\x04 \x01(\v2\x10.pg_query.StringR\aextname\x12\x16\n" + + "\x06remove\x18\x05 \x01(\bR\x06remove\"\xe4\x01\n" + + "\x15AlterObjectSchemaStmt\x125\n" + + "\vobject_type\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\n" + + "objectType\x12.\n" + + "\brelation\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12&\n" + + "\x06object\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x06object\x12\x1c\n" + + "\tnewschema\x18\x04 \x01(\tR\tnewschema\x12\x1e\n" + + "\n" + + "missing_ok\x18\x05 \x01(\bR\n" + + "missing_ok\"\xcf\x01\n" + + "\x0eAlterOwnerStmt\x125\n" + + "\vobject_type\x18\x01 \x01(\x0e2\x14.pg_query.ObjectTypeR\n" + + "objectType\x12.\n" + + "\brelation\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12&\n" + + "\x06object\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x06object\x12.\n" + + "\bnewowner\x18\x04 \x01(\v2\x12.pg_query.RoleSpecR\bnewowner\"s\n" + + "\x11AlterOperatorStmt\x124\n" + + "\bopername\x18\x01 \x01(\v2\x18.pg_query.ObjectWithArgsR\bopername\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"f\n" + + "\rAlterTypeStmt\x12+\n" + + "\ttype_name\x18\x01 \x03(\v2\x0e.pg_query.NodeR\btypeName\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x90\x02\n" + + "\bRuleStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\x1a\n" + + "\brulename\x18\x02 \x01(\tR\brulename\x121\n" + + "\fwhere_clause\x18\x03 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x12'\n" + + "\x05event\x18\x04 \x01(\x0e2\x11.pg_query.CmdTypeR\x05event\x12\x18\n" + + "\ainstead\x18\x05 \x01(\bR\ainstead\x12(\n" + + "\aactions\x18\x06 \x03(\v2\x0e.pg_query.NodeR\aactions\x12\x18\n" + + "\areplace\x18\a \x01(\bR\areplace\"L\n" + + "\n" + + "NotifyStmt\x12$\n" + + "\rconditionname\x18\x01 \x01(\tR\rconditionname\x12\x18\n" + + "\apayload\x18\x02 \x01(\tR\apayload\"2\n" + + "\n" + + "ListenStmt\x12$\n" + + "\rconditionname\x18\x01 \x01(\tR\rconditionname\"4\n" + + "\fUnlistenStmt\x12$\n" + + "\rconditionname\x18\x01 \x01(\tR\rconditionname\"\xda\x01\n" + + "\x0fTransactionStmt\x121\n" + + "\x04kind\x18\x01 \x01(\x0e2\x1d.pg_query.TransactionStmtKindR\x04kind\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12&\n" + + "\x0esavepoint_name\x18\x03 \x01(\tR\x0esavepoint_name\x12\x10\n" + + "\x03gid\x18\x04 \x01(\tR\x03gid\x12\x14\n" + + "\x05chain\x18\x05 \x01(\bR\x05chain\x12\x1a\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\"q\n" + + "\x11CompositeTypeStmt\x12,\n" + + "\atypevar\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\atypevar\x12.\n" + + "\n" + + "coldeflist\x18\x02 \x03(\v2\x0e.pg_query.NodeR\n" + + "coldeflist\"a\n" + + "\x0eCreateEnumStmt\x12+\n" + + "\ttype_name\x18\x01 \x03(\v2\x0e.pg_query.NodeR\btypeName\x12\"\n" + + "\x04vals\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04vals\"f\n" + + "\x0fCreateRangeStmt\x12+\n" + + "\ttype_name\x18\x01 \x03(\v2\x0e.pg_query.NodeR\btypeName\x12&\n" + + "\x06params\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x06params\"\xf5\x01\n" + + "\rAlterEnumStmt\x12+\n" + + "\ttype_name\x18\x01 \x03(\v2\x0e.pg_query.NodeR\btypeName\x12\x17\n" + + "\aold_val\x18\x02 \x01(\tR\x06oldVal\x12\x17\n" + + "\anew_val\x18\x03 \x01(\tR\x06newVal\x12(\n" + + "\x10new_val_neighbor\x18\x04 \x01(\tR\x0enewValNeighbor\x12'\n" + + "\x10new_val_is_after\x18\x05 \x01(\bR\rnewValIsAfter\x122\n" + + "\x16skip_if_new_val_exists\x18\x06 \x01(\bR\x12skipIfNewValExists\"\x8d\x02\n" + + "\bViewStmt\x12&\n" + + "\x04view\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\x04view\x12(\n" + + "\aaliases\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aaliases\x12$\n" + + "\x05query\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x05query\x12\x18\n" + + "\areplace\x18\x04 \x01(\bR\areplace\x12(\n" + + "\aoptions\x18\x05 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12E\n" + + "\x11with_check_option\x18\x06 \x01(\x0e2\x19.pg_query.ViewCheckOptionR\x0fwithCheckOption\"&\n" + + "\bLoadStmt\x12\x1a\n" + + "\bfilename\x18\x01 \x01(\tR\bfilename\"P\n" + + "\fCreatedbStmt\x12\x16\n" + + "\x06dbname\x18\x01 \x01(\tR\x06dbname\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"U\n" + + "\x11AlterDatabaseStmt\x12\x16\n" + + "\x06dbname\x18\x01 \x01(\tR\x06dbname\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"6\n" + + "\x1cAlterDatabaseRefreshCollStmt\x12\x16\n" + + "\x06dbname\x18\x01 \x01(\tR\x06dbname\"c\n" + + "\x14AlterDatabaseSetStmt\x12\x16\n" + + "\x06dbname\x18\x01 \x01(\tR\x06dbname\x123\n" + + "\asetstmt\x18\x02 \x01(\v2\x19.pg_query.VariableSetStmtR\asetstmt\"n\n" + + "\n" + + "DropdbStmt\x12\x16\n" + + "\x06dbname\x18\x01 \x01(\tR\x06dbname\x12\x1e\n" + + "\n" + + "missing_ok\x18\x02 \x01(\bR\n" + + "missing_ok\x12(\n" + + "\aoptions\x18\x03 \x03(\v2\x0e.pg_query.NodeR\aoptions\"F\n" + + "\x0fAlterSystemStmt\x123\n" + + "\asetstmt\x18\x01 \x01(\v2\x19.pg_query.VariableSetStmtR\asetstmt\"\x83\x01\n" + + "\vClusterStmt\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\x1c\n" + + "\tindexname\x18\x02 \x01(\tR\tindexname\x12&\n" + + "\x06params\x18\x03 \x03(\v2\x0e.pg_query.NodeR\x06params\"~\n" + + "\n" + + "VacuumStmt\x12(\n" + + "\aoptions\x18\x01 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\"\n" + + "\x04rels\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x04rels\x12\"\n" + + "\fis_vacuumcmd\x18\x03 \x01(\bR\fis_vacuumcmd\"|\n" + + "\x0eVacuumRelation\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\x10\n" + + "\x03oid\x18\x02 \x01(\rR\x03oid\x12(\n" + + "\ava_cols\x18\x03 \x03(\v2\x0e.pg_query.NodeR\ava_cols\"]\n" + + "\vExplainStmt\x12$\n" + + "\x05query\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x05query\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\xe1\x01\n" + + "\x11CreateTableAsStmt\x12$\n" + + "\x05query\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x05query\x12(\n" + + "\x04into\x18\x02 \x01(\v2\x14.pg_query.IntoClauseR\x04into\x12.\n" + + "\aobjtype\x18\x03 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12&\n" + + "\x0eis_select_into\x18\x04 \x01(\bR\x0eis_select_into\x12$\n" + + "\rif_not_exists\x18\x05 \x01(\bR\rif_not_exists\"\x81\x01\n" + + "\x12RefreshMatViewStmt\x12\x1e\n" + + "\n" + + "concurrent\x18\x01 \x01(\bR\n" + + "concurrent\x12\x1b\n" + + "\tskip_data\x18\x02 \x01(\bR\bskipData\x12.\n" + + "\brelation\x18\x03 \x01(\v2\x12.pg_query.RangeVarR\brelation\"\x10\n" + + "\x0eCheckPointStmt\"<\n" + + "\vDiscardStmt\x12-\n" + + "\x06target\x18\x01 \x01(\x0e2\x15.pg_query.DiscardModeR\x06target\"d\n" + + "\bLockStmt\x12,\n" + + "\trelations\x18\x01 \x03(\v2\x0e.pg_query.NodeR\trelations\x12\x12\n" + + "\x04mode\x18\x02 \x01(\x05R\x04mode\x12\x16\n" + + "\x06nowait\x18\x03 \x01(\bR\x06nowait\"b\n" + + "\x12ConstraintsSetStmt\x120\n" + + "\vconstraints\x18\x01 \x03(\v2\x0e.pg_query.NodeR\vconstraints\x12\x1a\n" + + "\bdeferred\x18\x02 \x01(\bR\bdeferred\"\xaa\x01\n" + + "\vReindexStmt\x12/\n" + + "\x04kind\x18\x01 \x01(\x0e2\x1b.pg_query.ReindexObjectTypeR\x04kind\x12.\n" + + "\brelation\x18\x02 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12&\n" + + "\x06params\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x06params\"\xea\x01\n" + + "\x14CreateConversionStmt\x128\n" + + "\x0fconversion_name\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x0fconversion_name\x12,\n" + + "\x11for_encoding_name\x18\x02 \x01(\tR\x11for_encoding_name\x12*\n" + + "\x10to_encoding_name\x18\x03 \x01(\tR\x10to_encoding_name\x12,\n" + + "\tfunc_name\x18\x04 \x03(\v2\x0e.pg_query.NodeR\tfunc_name\x12\x10\n" + + "\x03def\x18\x05 \x01(\bR\x03def\"\xf1\x01\n" + + "\x0eCreateCastStmt\x122\n" + + "\n" + + "sourcetype\x18\x01 \x01(\v2\x12.pg_query.TypeNameR\n" + + "sourcetype\x122\n" + + "\n" + + "targettype\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\n" + + "targettype\x12,\n" + + "\x04func\x18\x03 \x01(\v2\x18.pg_query.ObjectWithArgsR\x04func\x123\n" + + "\acontext\x18\x04 \x01(\x0e2\x19.pg_query.CoercionContextR\acontext\x12\x14\n" + + "\x05inout\x18\x05 \x01(\bR\x05inout\"\xd9\x01\n" + + "\x13CreateTransformStmt\x12\x18\n" + + "\areplace\x18\x01 \x01(\bR\areplace\x120\n" + + "\ttype_name\x18\x02 \x01(\v2\x12.pg_query.TypeNameR\ttype_name\x12\x12\n" + + "\x04lang\x18\x03 \x01(\tR\x04lang\x122\n" + + "\afromsql\x18\x04 \x01(\v2\x18.pg_query.ObjectWithArgsR\afromsql\x12.\n" + + "\x05tosql\x18\x05 \x01(\v2\x18.pg_query.ObjectWithArgsR\x05tosql\"s\n" + + "\vPrepareStmt\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12*\n" + + "\bargtypes\x18\x02 \x03(\v2\x0e.pg_query.NodeR\bargtypes\x12$\n" + + "\x05query\x18\x03 \x01(\v2\x0e.pg_query.NodeR\x05query\"I\n" + + "\vExecuteStmt\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12&\n" + + "\x06params\x18\x02 \x03(\v2\x0e.pg_query.NodeR\x06params\"V\n" + + "\x0eDeallocateStmt\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05isall\x18\x02 \x01(\bR\x05isall\x12\x1a\n" + + "\blocation\x18\x03 \x01(\x05R\blocation\"i\n" + + "\rDropOwnedStmt\x12$\n" + + "\x05roles\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05roles\x122\n" + + "\bbehavior\x18\x02 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\"g\n" + + "\x11ReassignOwnedStmt\x12$\n" + + "\x05roles\x18\x01 \x03(\v2\x0e.pg_query.NodeR\x05roles\x12,\n" + + "\anewrole\x18\x02 \x01(\v2\x12.pg_query.RoleSpecR\anewrole\"m\n" + + "\x15AlterTSDictionaryStmt\x12*\n" + + "\bdictname\x18\x01 \x03(\v2\x0e.pg_query.NodeR\bdictname\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x9f\x02\n" + + "\x18AlterTSConfigurationStmt\x12/\n" + + "\x04kind\x18\x01 \x01(\x0e2\x1b.pg_query.AlterTSConfigTypeR\x04kind\x12(\n" + + "\acfgname\x18\x02 \x03(\v2\x0e.pg_query.NodeR\acfgname\x12,\n" + + "\ttokentype\x18\x03 \x03(\v2\x0e.pg_query.NodeR\ttokentype\x12$\n" + + "\x05dicts\x18\x04 \x03(\v2\x0e.pg_query.NodeR\x05dicts\x12\x1a\n" + + "\boverride\x18\x05 \x01(\bR\boverride\x12\x18\n" + + "\areplace\x18\x06 \x01(\bR\areplace\x12\x1e\n" + + "\n" + + "missing_ok\x18\a \x01(\bR\n" + + "missing_ok\"\x9f\x01\n" + + "\x10PublicationTable\x12.\n" + + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x121\n" + + "\fwhere_clause\x18\x02 \x01(\v2\x0e.pg_query.NodeR\vwhereClause\x12(\n" + + "\acolumns\x18\x03 \x03(\v2\x0e.pg_query.NodeR\acolumns\"\xbe\x01\n" + + "\x12PublicationObjSpec\x12@\n" + + "\n" + + "pubobjtype\x18\x01 \x01(\x0e2 .pg_query.PublicationObjSpecTypeR\n" + + "pubobjtype\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x126\n" + + "\bpubtable\x18\x03 \x01(\v2\x1a.pg_query.PublicationTableR\bpubtable\x12\x1a\n" + + "\blocation\x18\x04 \x01(\x05R\blocation\"\xb3\x01\n" + + "\x15CreatePublicationStmt\x12\x18\n" + + "\apubname\x18\x01 \x01(\tR\apubname\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12.\n" + + "\n" + + "pubobjects\x18\x03 \x03(\v2\x0e.pg_query.NodeR\n" + + "pubobjects\x12&\n" + + "\x0efor_all_tables\x18\x04 \x01(\bR\x0efor_all_tables\"\xec\x01\n" + + "\x14AlterPublicationStmt\x12\x18\n" + + "\apubname\x18\x01 \x01(\tR\apubname\x12(\n" + + "\aoptions\x18\x02 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12.\n" + + "\n" + + "pubobjects\x18\x03 \x03(\v2\x0e.pg_query.NodeR\n" + + "pubobjects\x12&\n" + + "\x0efor_all_tables\x18\x04 \x01(\bR\x0efor_all_tables\x128\n" + + "\x06action\x18\x05 \x01(\x0e2 .pg_query.AlterPublicationActionR\x06action\"\xaa\x01\n" + + "\x16CreateSubscriptionStmt\x12\x18\n" + + "\asubname\x18\x01 \x01(\tR\asubname\x12\x1a\n" + + "\bconninfo\x18\x02 \x01(\tR\bconninfo\x120\n" + + "\vpublication\x18\x03 \x03(\v2\x0e.pg_query.NodeR\vpublication\x12(\n" + + "\aoptions\x18\x04 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\xde\x01\n" + + "\x15AlterSubscriptionStmt\x123\n" + + "\x04kind\x18\x01 \x01(\x0e2\x1f.pg_query.AlterSubscriptionTypeR\x04kind\x12\x18\n" + + "\asubname\x18\x02 \x01(\tR\asubname\x12\x1a\n" + + "\bconninfo\x18\x03 \x01(\tR\bconninfo\x120\n" + + "\vpublication\x18\x04 \x03(\v2\x0e.pg_query.NodeR\vpublication\x12(\n" + + "\aoptions\x18\x05 \x03(\v2\x0e.pg_query.NodeR\aoptions\"\x84\x01\n" + + "\x14DropSubscriptionStmt\x12\x18\n" + + "\asubname\x18\x01 \x01(\tR\asubname\x12\x1e\n" + + "\n" + + "missing_ok\x18\x02 \x01(\bR\n" + + "missing_ok\x122\n" + + "\bbehavior\x18\x03 \x01(\x0e2\x16.pg_query.DropBehaviorR\bbehavior\"\x94\x01\n" + + "\tScanToken\x12\x14\n" + + "\x05start\x18\x01 \x01(\x05R\x05start\x12\x10\n" + + "\x03end\x18\x02 \x01(\x05R\x03end\x12%\n" + + "\x05token\x18\x04 \x01(\x0e2\x0f.pg_query.TokenR\x05token\x128\n" + + "\fkeyword_kind\x18\x05 \x01(\x0e2\x15.pg_query.KeywordKindR\vkeywordKind\"\x9e\a\n" + + "\rSummaryResult\x125\n" + + "\x06tables\x18\x01 \x03(\v2\x1d.pg_query.SummaryResult.TableR\x06tables\x12>\n" + + "\aaliases\x18\x02 \x03(\v2$.pg_query.SummaryResult.AliasesEntryR\aaliases\x12\x1b\n" + + "\tcte_names\x18\x03 \x03(\tR\bcteNames\x12>\n" + + "\tfunctions\x18\x04 \x03(\v2 .pg_query.SummaryResult.FunctionR\tfunctions\x12K\n" + + "\x0efilter_columns\x18\x05 \x03(\v2$.pg_query.SummaryResult.FilterColumnR\rfilterColumns\x12'\n" + + "\x0fstatement_types\x18\x06 \x03(\tR\x0estatementTypes\x12'\n" + + "\x0ftruncated_query\x18\a \x01(\tR\x0etruncatedQuery\x1a\x96\x01\n" + + "\x05Table\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" + + "\vschema_name\x18\x02 \x01(\tR\n" + + "schemaName\x12\x1d\n" + + "\n" + + "table_name\x18\x03 \x01(\tR\ttableName\x129\n" + + "\acontext\x18\x04 \x01(\x0e2\x1f.pg_query.SummaryResult.ContextR\acontext\x1a:\n" + + "\fAliasesEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\x9f\x01\n" + + "\bFunction\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12#\n" + + "\rfunction_name\x18\x02 \x01(\tR\ffunctionName\x12\x1f\n" + + "\vschema_name\x18\x03 \x01(\tR\n" + + "schemaName\x129\n" + + "\acontext\x18\x04 \x01(\x0e2\x1f.pg_query.SummaryResult.ContextR\acontext\x1af\n" + + "\fFilterColumn\x12\x1f\n" + + "\vschema_name\x18\x01 \x01(\tR\n" + + "schemaName\x12\x1d\n" + + "\n" + + "table_name\x18\x02 \x01(\tR\ttableName\x12\x16\n" + + "\x06column\x18\x03 \x01(\tR\x06column\";\n" + + "\aContext\x12\b\n" + + "\x04None\x10\x00\x12\n" + + "\n" + + "\x06Select\x10\x01\x12\a\n" + + "\x03DML\x10\x02\x12\a\n" + + "\x03DDL\x10\x03\x12\b\n" + + "\x04Call\x10\x04*\x9b\x01\n" + + "\vQuerySource\x12\x1a\n" + + "\x16QUERY_SOURCE_UNDEFINED\x10\x00\x12\x11\n" + + "\rQSRC_ORIGINAL\x10\x01\x12\x0f\n" + + "\vQSRC_PARSER\x10\x02\x12\x15\n" + + "\x11QSRC_INSTEAD_RULE\x10\x03\x12\x1a\n" + + "\x16QSRC_QUAL_INSTEAD_RULE\x10\x04\x12\x19\n" + + "\x15QSRC_NON_INSTEAD_RULE\x10\x05*m\n" + + "\tSortByDir\x12\x19\n" + + "\x15SORT_BY_DIR_UNDEFINED\x10\x00\x12\x12\n" + + "\x0eSORTBY_DEFAULT\x10\x01\x12\x0e\n" + + "\n" + + "SORTBY_ASC\x10\x02\x12\x0f\n" + + "\vSORTBY_DESC\x10\x03\x12\x10\n" + + "\fSORTBY_USING\x10\x04*s\n" + + "\vSortByNulls\x12\x1b\n" + + "\x17SORT_BY_NULLS_UNDEFINED\x10\x00\x12\x18\n" + + "\x14SORTBY_NULLS_DEFAULT\x10\x01\x12\x16\n" + + "\x12SORTBY_NULLS_FIRST\x10\x02\x12\x15\n" + + "\x11SORTBY_NULLS_LAST\x10\x03*~\n" + + "\rSetQuantifier\x12\x1c\n" + + "\x18SET_QUANTIFIER_UNDEFINED\x10\x00\x12\x1a\n" + + "\x16SET_QUANTIFIER_DEFAULT\x10\x01\x12\x16\n" + + "\x12SET_QUANTIFIER_ALL\x10\x02\x12\x1b\n" + + "\x17SET_QUANTIFIER_DISTINCT\x10\x03*\xb6\x02\n" + + "\vA_Expr_Kind\x12\x19\n" + + "\x15A_EXPR_KIND_UNDEFINED\x10\x00\x12\f\n" + + "\bAEXPR_OP\x10\x01\x12\x10\n" + + "\fAEXPR_OP_ANY\x10\x02\x12\x10\n" + + "\fAEXPR_OP_ALL\x10\x03\x12\x12\n" + + "\x0eAEXPR_DISTINCT\x10\x04\x12\x16\n" + + "\x12AEXPR_NOT_DISTINCT\x10\x05\x12\x10\n" + + "\fAEXPR_NULLIF\x10\x06\x12\f\n" + + "\bAEXPR_IN\x10\a\x12\x0e\n" + + "\n" + + "AEXPR_LIKE\x10\b\x12\x0f\n" + + "\vAEXPR_ILIKE\x10\t\x12\x11\n" + + "\rAEXPR_SIMILAR\x10\n" + + "\x12\x11\n" + + "\rAEXPR_BETWEEN\x10\v\x12\x15\n" + + "\x11AEXPR_NOT_BETWEEN\x10\f\x12\x15\n" + + "\x11AEXPR_BETWEEN_SYM\x10\r\x12\x19\n" + + "\x15AEXPR_NOT_BETWEEN_SYM\x10\x0e*\xa8\x01\n" + + "\fRoleSpecType\x12\x1c\n" + + "\x18ROLE_SPEC_TYPE_UNDEFINED\x10\x00\x12\x14\n" + + "\x10ROLESPEC_CSTRING\x10\x01\x12\x19\n" + + "\x15ROLESPEC_CURRENT_ROLE\x10\x02\x12\x19\n" + + "\x15ROLESPEC_CURRENT_USER\x10\x03\x12\x19\n" + + "\x15ROLESPEC_SESSION_USER\x10\x04\x12\x13\n" + + "\x0fROLESPEC_PUBLIC\x10\x05*\xf4\x02\n" + + "\x0fTableLikeOption\x12\x1f\n" + + "\x1bTABLE_LIKE_OPTION_UNDEFINED\x10\x00\x12\x1e\n" + + "\x1aCREATE_TABLE_LIKE_COMMENTS\x10\x01\x12!\n" + + "\x1dCREATE_TABLE_LIKE_COMPRESSION\x10\x02\x12!\n" + + "\x1dCREATE_TABLE_LIKE_CONSTRAINTS\x10\x03\x12\x1e\n" + + "\x1aCREATE_TABLE_LIKE_DEFAULTS\x10\x04\x12\x1f\n" + + "\x1bCREATE_TABLE_LIKE_GENERATED\x10\x05\x12\x1e\n" + + "\x1aCREATE_TABLE_LIKE_IDENTITY\x10\x06\x12\x1d\n" + + "\x19CREATE_TABLE_LIKE_INDEXES\x10\a\x12 \n" + + "\x1cCREATE_TABLE_LIKE_STATISTICS\x10\b\x12\x1d\n" + + "\x19CREATE_TABLE_LIKE_STORAGE\x10\t\x12\x19\n" + + "\x15CREATE_TABLE_LIKE_ALL\x10\n" + + "*v\n" + + "\rDefElemAction\x12\x1d\n" + + "\x19DEF_ELEM_ACTION_UNDEFINED\x10\x00\x12\x12\n" + + "\x0eDEFELEM_UNSPEC\x10\x01\x12\x0f\n" + + "\vDEFELEM_SET\x10\x02\x12\x0f\n" + + "\vDEFELEM_ADD\x10\x03\x12\x10\n" + + "\fDEFELEM_DROP\x10\x04*\x8d\x01\n" + + "\x11PartitionStrategy\x12 \n" + + "\x1cPARTITION_STRATEGY_UNDEFINED\x10\x00\x12\x1b\n" + + "\x17PARTITION_STRATEGY_LIST\x10\x01\x12\x1c\n" + + "\x18PARTITION_STRATEGY_RANGE\x10\x02\x12\x1b\n" + + "\x17PARTITION_STRATEGY_HASH\x10\x03*\xac\x01\n" + + "\x17PartitionRangeDatumKind\x12(\n" + + "$PARTITION_RANGE_DATUM_KIND_UNDEFINED\x10\x00\x12\"\n" + + "\x1ePARTITION_RANGE_DATUM_MINVALUE\x10\x01\x12\x1f\n" + + "\x1bPARTITION_RANGE_DATUM_VALUE\x10\x02\x12\"\n" + + "\x1ePARTITION_RANGE_DATUM_MAXVALUE\x10\x03*\xcc\x01\n" + + "\aRTEKind\x12\x15\n" + + "\x11RTEKIND_UNDEFINED\x10\x00\x12\x10\n" + + "\fRTE_RELATION\x10\x01\x12\x10\n" + + "\fRTE_SUBQUERY\x10\x02\x12\f\n" + + "\bRTE_JOIN\x10\x03\x12\x10\n" + + "\fRTE_FUNCTION\x10\x04\x12\x11\n" + + "\rRTE_TABLEFUNC\x10\x05\x12\x0e\n" + + "\n" + + "RTE_VALUES\x10\x06\x12\v\n" + + "\aRTE_CTE\x10\a\x12\x17\n" + + "\x13RTE_NAMEDTUPLESTORE\x10\b\x12\x0e\n" + + "\n" + + "RTE_RESULT\x10\t\x12\r\n" + + "\tRTE_GROUP\x10\n" + + "*\xc4\x01\n" + + "\aWCOKind\x12\x15\n" + + "\x11WCOKIND_UNDEFINED\x10\x00\x12\x12\n" + + "\x0eWCO_VIEW_CHECK\x10\x01\x12\x18\n" + + "\x14WCO_RLS_INSERT_CHECK\x10\x02\x12\x18\n" + + "\x14WCO_RLS_UPDATE_CHECK\x10\x03\x12\x1a\n" + + "\x16WCO_RLS_CONFLICT_CHECK\x10\x04\x12\x1e\n" + + "\x1aWCO_RLS_MERGE_UPDATE_CHECK\x10\x05\x12\x1e\n" + + "\x1aWCO_RLS_MERGE_DELETE_CHECK\x10\x06*\xaa\x01\n" + + "\x0fGroupingSetKind\x12\x1f\n" + + "\x1bGROUPING_SET_KIND_UNDEFINED\x10\x00\x12\x16\n" + + "\x12GROUPING_SET_EMPTY\x10\x01\x12\x17\n" + + "\x13GROUPING_SET_SIMPLE\x10\x02\x12\x17\n" + + "\x13GROUPING_SET_ROLLUP\x10\x03\x12\x15\n" + + "\x11GROUPING_SET_CUBE\x10\x04\x12\x15\n" + + "\x11GROUPING_SET_SETS\x10\x05*|\n" + + "\x0eCTEMaterialize\x12\x1c\n" + + "\x18CTEMATERIALIZE_UNDEFINED\x10\x00\x12\x19\n" + + "\x15CTEMaterializeDefault\x10\x01\x12\x18\n" + + "\x14CTEMaterializeAlways\x10\x02\x12\x17\n" + + "\x13CTEMaterializeNever\x10\x03*n\n" + + "\x13ReturningOptionKind\x12#\n" + + "\x1fRETURNING_OPTION_KIND_UNDEFINED\x10\x00\x12\x18\n" + + "\x14RETURNING_OPTION_OLD\x10\x01\x12\x18\n" + + "\x14RETURNING_OPTION_NEW\x10\x02*e\n" + + "\n" + + "JsonQuotes\x12\x19\n" + + "\x15JSON_QUOTES_UNDEFINED\x10\x00\x12\x14\n" + + "\x10JS_QUOTES_UNSPEC\x10\x01\x12\x12\n" + + "\x0eJS_QUOTES_KEEP\x10\x02\x12\x12\n" + + "\x0eJS_QUOTES_OMIT\x10\x03*\x97\x01\n" + + "\x13JsonTableColumnType\x12$\n" + + " JSON_TABLE_COLUMN_TYPE_UNDEFINED\x10\x00\x12\x16\n" + + "\x12JTC_FOR_ORDINALITY\x10\x01\x12\x0f\n" + + "\vJTC_REGULAR\x10\x02\x12\x0e\n" + + "\n" + + "JTC_EXISTS\x10\x03\x12\x11\n" + + "\rJTC_FORMATTED\x10\x04\x12\x0e\n" + + "\n" + + "JTC_NESTED\x10\x05*s\n" + + "\fSetOperation\x12\x1b\n" + + "\x17SET_OPERATION_UNDEFINED\x10\x00\x12\x0e\n" + + "\n" + + "SETOP_NONE\x10\x01\x12\x0f\n" + + "\vSETOP_UNION\x10\x02\x12\x13\n" + + "\x0fSETOP_INTERSECT\x10\x03\x12\x10\n" + + "\fSETOP_EXCEPT\x10\x04*\x99\t\n" + + "\n" + + "ObjectType\x12\x19\n" + + "\x15OBJECT_TYPE_UNDEFINED\x10\x00\x12\x18\n" + + "\x14OBJECT_ACCESS_METHOD\x10\x01\x12\x14\n" + + "\x10OBJECT_AGGREGATE\x10\x02\x12\x0f\n" + + "\vOBJECT_AMOP\x10\x03\x12\x11\n" + + "\rOBJECT_AMPROC\x10\x04\x12\x14\n" + + "\x10OBJECT_ATTRIBUTE\x10\x05\x12\x0f\n" + + "\vOBJECT_CAST\x10\x06\x12\x11\n" + + "\rOBJECT_COLUMN\x10\a\x12\x14\n" + + "\x10OBJECT_COLLATION\x10\b\x12\x15\n" + + "\x11OBJECT_CONVERSION\x10\t\x12\x13\n" + + "\x0fOBJECT_DATABASE\x10\n" + + "\x12\x12\n" + + "\x0eOBJECT_DEFAULT\x10\v\x12\x11\n" + + "\rOBJECT_DEFACL\x10\f\x12\x11\n" + + "\rOBJECT_DOMAIN\x10\r\x12\x18\n" + + "\x14OBJECT_DOMCONSTRAINT\x10\x0e\x12\x18\n" + + "\x14OBJECT_EVENT_TRIGGER\x10\x0f\x12\x14\n" + + "\x10OBJECT_EXTENSION\x10\x10\x12\x0e\n" + + "\n" + + "OBJECT_FDW\x10\x11\x12\x19\n" + + "\x15OBJECT_FOREIGN_SERVER\x10\x12\x12\x18\n" + + "\x14OBJECT_FOREIGN_TABLE\x10\x13\x12\x13\n" + + "\x0fOBJECT_FUNCTION\x10\x14\x12\x10\n" + + "\fOBJECT_INDEX\x10\x15\x12\x13\n" + + "\x0fOBJECT_LANGUAGE\x10\x16\x12\x16\n" + + "\x12OBJECT_LARGEOBJECT\x10\x17\x12\x12\n" + + "\x0eOBJECT_MATVIEW\x10\x18\x12\x12\n" + + "\x0eOBJECT_OPCLASS\x10\x19\x12\x13\n" + + "\x0fOBJECT_OPERATOR\x10\x1a\x12\x13\n" + + "\x0fOBJECT_OPFAMILY\x10\x1b\x12\x18\n" + + "\x14OBJECT_PARAMETER_ACL\x10\x1c\x12\x11\n" + + "\rOBJECT_POLICY\x10\x1d\x12\x14\n" + + "\x10OBJECT_PROCEDURE\x10\x1e\x12\x16\n" + + "\x12OBJECT_PUBLICATION\x10\x1f\x12 \n" + + "\x1cOBJECT_PUBLICATION_NAMESPACE\x10 \x12\x1a\n" + + "\x16OBJECT_PUBLICATION_REL\x10!\x12\x0f\n" + + "\vOBJECT_ROLE\x10\"\x12\x12\n" + + "\x0eOBJECT_ROUTINE\x10#\x12\x0f\n" + + "\vOBJECT_RULE\x10$\x12\x11\n" + + "\rOBJECT_SCHEMA\x10%\x12\x13\n" + + "\x0fOBJECT_SEQUENCE\x10&\x12\x17\n" + + "\x13OBJECT_SUBSCRIPTION\x10'\x12\x18\n" + + "\x14OBJECT_STATISTIC_EXT\x10(\x12\x18\n" + + "\x14OBJECT_TABCONSTRAINT\x10)\x12\x10\n" + + "\fOBJECT_TABLE\x10*\x12\x15\n" + + "\x11OBJECT_TABLESPACE\x10+\x12\x14\n" + + "\x10OBJECT_TRANSFORM\x10,\x12\x12\n" + + "\x0eOBJECT_TRIGGER\x10-\x12\x1a\n" + + "\x16OBJECT_TSCONFIGURATION\x10.\x12\x17\n" + + "\x13OBJECT_TSDICTIONARY\x10/\x12\x13\n" + + "\x0fOBJECT_TSPARSER\x100\x12\x15\n" + + "\x11OBJECT_TSTEMPLATE\x101\x12\x0f\n" + + "\vOBJECT_TYPE\x102\x12\x17\n" + + "\x13OBJECT_USER_MAPPING\x103\x12\x0f\n" + + "\vOBJECT_VIEW\x104*P\n" + + "\fDropBehavior\x12\x1b\n" + + "\x17DROP_BEHAVIOR_UNDEFINED\x10\x00\x12\x11\n" + + "\rDROP_RESTRICT\x10\x01\x12\x10\n" + + "\fDROP_CASCADE\x10\x02*\xf7\v\n" + + "\x0eAlterTableType\x12\x1e\n" + + "\x1aALTER_TABLE_TYPE_UNDEFINED\x10\x00\x12\x10\n" + + "\fAT_AddColumn\x10\x01\x12\x16\n" + + "\x12AT_AddColumnToView\x10\x02\x12\x14\n" + + "\x10AT_ColumnDefault\x10\x03\x12\x1a\n" + + "\x16AT_CookedColumnDefault\x10\x04\x12\x12\n" + + "\x0eAT_DropNotNull\x10\x05\x12\x11\n" + + "\rAT_SetNotNull\x10\x06\x12\x14\n" + + "\x10AT_SetExpression\x10\a\x12\x15\n" + + "\x11AT_DropExpression\x10\b\x12\x14\n" + + "\x10AT_SetStatistics\x10\t\x12\x11\n" + + "\rAT_SetOptions\x10\n" + + "\x12\x13\n" + + "\x0fAT_ResetOptions\x10\v\x12\x11\n" + + "\rAT_SetStorage\x10\f\x12\x15\n" + + "\x11AT_SetCompression\x10\r\x12\x11\n" + + "\rAT_DropColumn\x10\x0e\x12\x0f\n" + + "\vAT_AddIndex\x10\x0f\x12\x11\n" + + "\rAT_ReAddIndex\x10\x10\x12\x14\n" + + "\x10AT_AddConstraint\x10\x11\x12\x16\n" + + "\x12AT_ReAddConstraint\x10\x12\x12\x1c\n" + + "\x18AT_ReAddDomainConstraint\x10\x13\x12\x16\n" + + "\x12AT_AlterConstraint\x10\x14\x12\x19\n" + + "\x15AT_ValidateConstraint\x10\x15\x12\x19\n" + + "\x15AT_AddIndexConstraint\x10\x16\x12\x15\n" + + "\x11AT_DropConstraint\x10\x17\x12\x13\n" + + "\x0fAT_ReAddComment\x10\x18\x12\x16\n" + + "\x12AT_AlterColumnType\x10\x19\x12 \n" + + "\x1cAT_AlterColumnGenericOptions\x10\x1a\x12\x12\n" + + "\x0eAT_ChangeOwner\x10\x1b\x12\x10\n" + + "\fAT_ClusterOn\x10\x1c\x12\x12\n" + + "\x0eAT_DropCluster\x10\x1d\x12\x10\n" + + "\fAT_SetLogged\x10\x1e\x12\x12\n" + + "\x0eAT_SetUnLogged\x10\x1f\x12\x0f\n" + + "\vAT_DropOids\x10 \x12\x16\n" + + "\x12AT_SetAccessMethod\x10!\x12\x14\n" + + "\x10AT_SetTableSpace\x10\"\x12\x14\n" + + "\x10AT_SetRelOptions\x10#\x12\x16\n" + + "\x12AT_ResetRelOptions\x10$\x12\x18\n" + + "\x14AT_ReplaceRelOptions\x10%\x12\x11\n" + + "\rAT_EnableTrig\x10&\x12\x17\n" + + "\x13AT_EnableAlwaysTrig\x10'\x12\x18\n" + + "\x14AT_EnableReplicaTrig\x10(\x12\x12\n" + + "\x0eAT_DisableTrig\x10)\x12\x14\n" + + "\x10AT_EnableTrigAll\x10*\x12\x15\n" + + "\x11AT_DisableTrigAll\x10+\x12\x15\n" + + "\x11AT_EnableTrigUser\x10,\x12\x16\n" + + "\x12AT_DisableTrigUser\x10-\x12\x11\n" + + "\rAT_EnableRule\x10.\x12\x17\n" + + "\x13AT_EnableAlwaysRule\x10/\x12\x18\n" + + "\x14AT_EnableReplicaRule\x100\x12\x12\n" + + "\x0eAT_DisableRule\x101\x12\x11\n" + + "\rAT_AddInherit\x102\x12\x12\n" + + "\x0eAT_DropInherit\x103\x12\f\n" + + "\bAT_AddOf\x104\x12\r\n" + + "\tAT_DropOf\x105\x12\x16\n" + + "\x12AT_ReplicaIdentity\x106\x12\x18\n" + + "\x14AT_EnableRowSecurity\x107\x12\x19\n" + + "\x15AT_DisableRowSecurity\x108\x12\x17\n" + + "\x13AT_ForceRowSecurity\x109\x12\x19\n" + + "\x15AT_NoForceRowSecurity\x10:\x12\x15\n" + + "\x11AT_GenericOptions\x10;\x12\x16\n" + + "\x12AT_AttachPartition\x10<\x12\x16\n" + + "\x12AT_DetachPartition\x10=\x12\x1e\n" + + "\x1aAT_DetachPartitionFinalize\x10>\x12\x12\n" + + "\x0eAT_AddIdentity\x10?\x12\x12\n" + + "\x0eAT_SetIdentity\x10@\x12\x13\n" + + "\x0fAT_DropIdentity\x10A\x12\x16\n" + + "\x12AT_ReAddStatistics\x10B*\x80\x01\n" + + "\x0fGrantTargetType\x12\x1f\n" + + "\x1bGRANT_TARGET_TYPE_UNDEFINED\x10\x00\x12\x15\n" + + "\x11ACL_TARGET_OBJECT\x10\x01\x12\x1c\n" + + "\x18ACL_TARGET_ALL_IN_SCHEMA\x10\x02\x12\x17\n" + + "\x13ACL_TARGET_DEFAULTS\x10\x03*\xa4\x01\n" + + "\x0fVariableSetKind\x12\x1f\n" + + "\x1bVARIABLE_SET_KIND_UNDEFINED\x10\x00\x12\x11\n" + + "\rVAR_SET_VALUE\x10\x01\x12\x13\n" + + "\x0fVAR_SET_DEFAULT\x10\x02\x12\x13\n" + + "\x0fVAR_SET_CURRENT\x10\x03\x12\x11\n" + + "\rVAR_SET_MULTI\x10\x04\x12\r\n" + + "\tVAR_RESET\x10\x05\x12\x11\n" + + "\rVAR_RESET_ALL\x10\x06*\x97\x03\n" + + "\n" + + "ConstrType\x12\x19\n" + + "\x15CONSTR_TYPE_UNDEFINED\x10\x00\x12\x0f\n" + + "\vCONSTR_NULL\x10\x01\x12\x12\n" + + "\x0eCONSTR_NOTNULL\x10\x02\x12\x12\n" + + "\x0eCONSTR_DEFAULT\x10\x03\x12\x13\n" + + "\x0fCONSTR_IDENTITY\x10\x04\x12\x14\n" + + "\x10CONSTR_GENERATED\x10\x05\x12\x10\n" + + "\fCONSTR_CHECK\x10\x06\x12\x12\n" + + "\x0eCONSTR_PRIMARY\x10\a\x12\x11\n" + + "\rCONSTR_UNIQUE\x10\b\x12\x14\n" + + "\x10CONSTR_EXCLUSION\x10\t\x12\x12\n" + + "\x0eCONSTR_FOREIGN\x10\n" + + "\x12\x1a\n" + + "\x16CONSTR_ATTR_DEFERRABLE\x10\v\x12\x1e\n" + + "\x1aCONSTR_ATTR_NOT_DEFERRABLE\x10\f\x12\x18\n" + + "\x14CONSTR_ATTR_DEFERRED\x10\r\x12\x19\n" + + "\x15CONSTR_ATTR_IMMEDIATE\x10\x0e\x12\x18\n" + + "\x14CONSTR_ATTR_ENFORCED\x10\x0f\x12\x1c\n" + + "\x18CONSTR_ATTR_NOT_ENFORCED\x10\x10*\x9c\x01\n" + + "\x17ImportForeignSchemaType\x12(\n" + + "$IMPORT_FOREIGN_SCHEMA_TYPE_UNDEFINED\x10\x00\x12\x19\n" + + "\x15FDW_IMPORT_SCHEMA_ALL\x10\x01\x12\x1e\n" + + "\x1aFDW_IMPORT_SCHEMA_LIMIT_TO\x10\x02\x12\x1c\n" + + "\x18FDW_IMPORT_SCHEMA_EXCEPT\x10\x03*f\n" + + "\fRoleStmtType\x12\x1c\n" + + "\x18ROLE_STMT_TYPE_UNDEFINED\x10\x00\x12\x11\n" + + "\rROLESTMT_ROLE\x10\x01\x12\x11\n" + + "\rROLESTMT_USER\x10\x02\x12\x12\n" + + "\x0eROLESTMT_GROUP\x10\x03*~\n" + + "\x0eFetchDirection\x12\x1d\n" + + "\x19FETCH_DIRECTION_UNDEFINED\x10\x00\x12\x11\n" + + "\rFETCH_FORWARD\x10\x01\x12\x12\n" + + "\x0eFETCH_BACKWARD\x10\x02\x12\x12\n" + + "\x0eFETCH_ABSOLUTE\x10\x03\x12\x12\n" + + "\x0eFETCH_RELATIVE\x10\x04*\xc2\x01\n" + + "\x15FunctionParameterMode\x12%\n" + + "!FUNCTION_PARAMETER_MODE_UNDEFINED\x10\x00\x12\x11\n" + + "\rFUNC_PARAM_IN\x10\x01\x12\x12\n" + + "\x0eFUNC_PARAM_OUT\x10\x02\x12\x14\n" + + "\x10FUNC_PARAM_INOUT\x10\x03\x12\x17\n" + + "\x13FUNC_PARAM_VARIADIC\x10\x04\x12\x14\n" + + "\x10FUNC_PARAM_TABLE\x10\x05\x12\x16\n" + + "\x12FUNC_PARAM_DEFAULT\x10\x06*\xbe\x02\n" + + "\x13TransactionStmtKind\x12#\n" + + "\x1fTRANSACTION_STMT_KIND_UNDEFINED\x10\x00\x12\x14\n" + + "\x10TRANS_STMT_BEGIN\x10\x01\x12\x14\n" + + "\x10TRANS_STMT_START\x10\x02\x12\x15\n" + + "\x11TRANS_STMT_COMMIT\x10\x03\x12\x17\n" + + "\x13TRANS_STMT_ROLLBACK\x10\x04\x12\x18\n" + + "\x14TRANS_STMT_SAVEPOINT\x10\x05\x12\x16\n" + + "\x12TRANS_STMT_RELEASE\x10\x06\x12\x1a\n" + + "\x16TRANS_STMT_ROLLBACK_TO\x10\a\x12\x16\n" + + "\x12TRANS_STMT_PREPARE\x10\b\x12\x1e\n" + + "\x1aTRANS_STMT_COMMIT_PREPARED\x10\t\x12 \n" + + "\x1cTRANS_STMT_ROLLBACK_PREPARED\x10\n" + + "*z\n" + + "\x0fViewCheckOption\x12\x1f\n" + + "\x1bVIEW_CHECK_OPTION_UNDEFINED\x10\x00\x12\x13\n" + + "\x0fNO_CHECK_OPTION\x10\x01\x12\x16\n" + + "\x12LOCAL_CHECK_OPTION\x10\x02\x12\x19\n" + + "\x15CASCADED_CHECK_OPTION\x10\x03*v\n" + + "\vDiscardMode\x12\x1a\n" + + "\x16DISCARD_MODE_UNDEFINED\x10\x00\x12\x0f\n" + + "\vDISCARD_ALL\x10\x01\x12\x11\n" + + "\rDISCARD_PLANS\x10\x02\x12\x15\n" + + "\x11DISCARD_SEQUENCES\x10\x03\x12\x10\n" + + "\fDISCARD_TEMP\x10\x04*\xbd\x01\n" + + "\x11ReindexObjectType\x12!\n" + + "\x1dREINDEX_OBJECT_TYPE_UNDEFINED\x10\x00\x12\x18\n" + + "\x14REINDEX_OBJECT_INDEX\x10\x01\x12\x18\n" + + "\x14REINDEX_OBJECT_TABLE\x10\x02\x12\x19\n" + + "\x15REINDEX_OBJECT_SCHEMA\x10\x03\x12\x19\n" + + "\x15REINDEX_OBJECT_SYSTEM\x10\x04\x12\x1b\n" + + "\x17REINDEX_OBJECT_DATABASE\x10\x05*\xef\x01\n" + + "\x11AlterTSConfigType\x12!\n" + + "\x1dALTER_TSCONFIG_TYPE_UNDEFINED\x10\x00\x12\x1e\n" + + "\x1aALTER_TSCONFIG_ADD_MAPPING\x10\x01\x12*\n" + + "&ALTER_TSCONFIG_ALTER_MAPPING_FOR_TOKEN\x10\x02\x12\x1f\n" + + "\x1bALTER_TSCONFIG_REPLACE_DICT\x10\x03\x12)\n" + + "%ALTER_TSCONFIG_REPLACE_DICT_FOR_TOKEN\x10\x04\x12\x1f\n" + + "\x1bALTER_TSCONFIG_DROP_MAPPING\x10\x05*\xca\x01\n" + + "\x16PublicationObjSpecType\x12'\n" + + "#PUBLICATION_OBJ_SPEC_TYPE_UNDEFINED\x10\x00\x12\x18\n" + + "\x14PUBLICATIONOBJ_TABLE\x10\x01\x12#\n" + + "\x1fPUBLICATIONOBJ_TABLES_IN_SCHEMA\x10\x02\x12'\n" + + "#PUBLICATIONOBJ_TABLES_IN_CUR_SCHEMA\x10\x03\x12\x1f\n" + + "\x1bPUBLICATIONOBJ_CONTINUATION\x10\x04*z\n" + + "\x16AlterPublicationAction\x12&\n" + + "\"ALTER_PUBLICATION_ACTION_UNDEFINED\x10\x00\x12\x11\n" + + "\rAP_AddObjects\x10\x01\x12\x12\n" + + "\x0eAP_DropObjects\x10\x02\x12\x11\n" + + "\rAP_SetObjects\x10\x03*\xd7\x02\n" + + "\x15AlterSubscriptionType\x12%\n" + + "!ALTER_SUBSCRIPTION_TYPE_UNDEFINED\x10\x00\x12\x1e\n" + + "\x1aALTER_SUBSCRIPTION_OPTIONS\x10\x01\x12!\n" + + "\x1dALTER_SUBSCRIPTION_CONNECTION\x10\x02\x12&\n" + + "\"ALTER_SUBSCRIPTION_SET_PUBLICATION\x10\x03\x12&\n" + + "\"ALTER_SUBSCRIPTION_ADD_PUBLICATION\x10\x04\x12'\n" + + "#ALTER_SUBSCRIPTION_DROP_PUBLICATION\x10\x05\x12\x1e\n" + + "\x1aALTER_SUBSCRIPTION_REFRESH\x10\x06\x12\x1e\n" + + "\x1aALTER_SUBSCRIPTION_ENABLED\x10\a\x12\x1b\n" + + "\x17ALTER_SUBSCRIPTION_SKIP\x10\b*\x7f\n" + + "\x0eOverridingKind\x12\x1d\n" + + "\x19OVERRIDING_KIND_UNDEFINED\x10\x00\x12\x16\n" + + "\x12OVERRIDING_NOT_SET\x10\x01\x12\x19\n" + + "\x15OVERRIDING_USER_VALUE\x10\x02\x12\x1b\n" + + "\x17OVERRIDING_SYSTEM_VALUE\x10\x03*\x8c\x01\n" + + "\x0eOnCommitAction\x12\x1e\n" + + "\x1aON_COMMIT_ACTION_UNDEFINED\x10\x00\x12\x11\n" + + "\rONCOMMIT_NOOP\x10\x01\x12\x1a\n" + + "\x16ONCOMMIT_PRESERVE_ROWS\x10\x02\x12\x18\n" + + "\x14ONCOMMIT_DELETE_ROWS\x10\x03\x12\x11\n" + + "\rONCOMMIT_DROP\x10\x04*T\n" + + "\rTableFuncType\x12\x1d\n" + + "\x19TABLE_FUNC_TYPE_UNDEFINED\x10\x00\x12\x10\n" + + "\fTFT_XMLTABLE\x10\x01\x12\x12\n" + + "\x0eTFT_JSON_TABLE\x10\x02*}\n" + + "\x10VarReturningType\x12 \n" + + "\x1cVAR_RETURNING_TYPE_UNDEFINED\x10\x00\x12\x19\n" + + "\x15VAR_RETURNING_DEFAULT\x10\x01\x12\x15\n" + + "\x11VAR_RETURNING_OLD\x10\x02\x12\x15\n" + + "\x11VAR_RETURNING_NEW\x10\x03*o\n" + + "\tParamKind\x12\x18\n" + + "\x14PARAM_KIND_UNDEFINED\x10\x00\x12\x10\n" + + "\fPARAM_EXTERN\x10\x01\x12\x0e\n" + + "\n" + + "PARAM_EXEC\x10\x02\x12\x11\n" + + "\rPARAM_SUBLINK\x10\x03\x12\x13\n" + + "\x0fPARAM_MULTIEXPR\x10\x04*\x8e\x01\n" + + "\x0fCoercionContext\x12\x1e\n" + + "\x1aCOERCION_CONTEXT_UNDEFINED\x10\x00\x12\x15\n" + + "\x11COERCION_IMPLICIT\x10\x01\x12\x17\n" + + "\x13COERCION_ASSIGNMENT\x10\x02\x12\x14\n" + + "\x10COERCION_PLPGSQL\x10\x03\x12\x15\n" + + "\x11COERCION_EXPLICIT\x10\x04*\x90\x01\n" + + "\fCoercionForm\x12\x1b\n" + + "\x17COERCION_FORM_UNDEFINED\x10\x00\x12\x18\n" + + "\x14COERCE_EXPLICIT_CALL\x10\x01\x12\x18\n" + + "\x14COERCE_EXPLICIT_CAST\x10\x02\x12\x18\n" + + "\x14COERCE_IMPLICIT_CAST\x10\x03\x12\x15\n" + + "\x11COERCE_SQL_SYNTAX\x10\x04*U\n" + + "\fBoolExprType\x12\x1c\n" + + "\x18BOOL_EXPR_TYPE_UNDEFINED\x10\x00\x12\f\n" + + "\bAND_EXPR\x10\x01\x12\v\n" + + "\aOR_EXPR\x10\x02\x12\f\n" + + "\bNOT_EXPR\x10\x03*\xc5\x01\n" + + "\vSubLinkType\x12\x1b\n" + + "\x17SUB_LINK_TYPE_UNDEFINED\x10\x00\x12\x12\n" + + "\x0eEXISTS_SUBLINK\x10\x01\x12\x0f\n" + + "\vALL_SUBLINK\x10\x02\x12\x0f\n" + + "\vANY_SUBLINK\x10\x03\x12\x16\n" + + "\x12ROWCOMPARE_SUBLINK\x10\x04\x12\x10\n" + + "\fEXPR_SUBLINK\x10\x05\x12\x15\n" + + "\x11MULTIEXPR_SUBLINK\x10\x06\x12\x11\n" + + "\rARRAY_SUBLINK\x10\a\x12\x0f\n" + + "\vCTE_SUBLINK\x10\b*C\n" + + "\bMinMaxOp\x12\x18\n" + + "\x14MIN_MAX_OP_UNDEFINED\x10\x00\x12\x0f\n" + + "\vIS_GREATEST\x10\x01\x12\f\n" + + "\bIS_LEAST\x10\x02*\xad\x03\n" + + "\x12SQLValueFunctionOp\x12\"\n" + + "\x1eSQLVALUE_FUNCTION_OP_UNDEFINED\x10\x00\x12\x16\n" + + "\x12SVFOP_CURRENT_DATE\x10\x01\x12\x16\n" + + "\x12SVFOP_CURRENT_TIME\x10\x02\x12\x18\n" + + "\x14SVFOP_CURRENT_TIME_N\x10\x03\x12\x1b\n" + + "\x17SVFOP_CURRENT_TIMESTAMP\x10\x04\x12\x1d\n" + + "\x19SVFOP_CURRENT_TIMESTAMP_N\x10\x05\x12\x13\n" + + "\x0fSVFOP_LOCALTIME\x10\x06\x12\x15\n" + + "\x11SVFOP_LOCALTIME_N\x10\a\x12\x18\n" + + "\x14SVFOP_LOCALTIMESTAMP\x10\b\x12\x1a\n" + + "\x16SVFOP_LOCALTIMESTAMP_N\x10\t\x12\x16\n" + + "\x12SVFOP_CURRENT_ROLE\x10\n" + + "\x12\x16\n" + + "\x12SVFOP_CURRENT_USER\x10\v\x12\x0e\n" + + "\n" + + "SVFOP_USER\x10\f\x12\x16\n" + + "\x12SVFOP_SESSION_USER\x10\r\x12\x19\n" + + "\x15SVFOP_CURRENT_CATALOG\x10\x0e\x12\x18\n" + + "\x14SVFOP_CURRENT_SCHEMA\x10\x0f*\xb2\x01\n" + + "\tXmlExprOp\x12\x19\n" + + "\x15XML_EXPR_OP_UNDEFINED\x10\x00\x12\x10\n" + + "\fIS_XMLCONCAT\x10\x01\x12\x11\n" + + "\rIS_XMLELEMENT\x10\x02\x12\x10\n" + + "\fIS_XMLFOREST\x10\x03\x12\x0f\n" + + "\vIS_XMLPARSE\x10\x04\x12\f\n" + + "\bIS_XMLPI\x10\x05\x12\x0e\n" + + "\n" + + "IS_XMLROOT\x10\x06\x12\x13\n" + + "\x0fIS_XMLSERIALIZE\x10\a\x12\x0f\n" + + "\vIS_DOCUMENT\x10\b*]\n" + + "\rXmlOptionType\x12\x1d\n" + + "\x19XML_OPTION_TYPE_UNDEFINED\x10\x00\x12\x16\n" + + "\x12XMLOPTION_DOCUMENT\x10\x01\x12\x15\n" + + "\x11XMLOPTION_CONTENT\x10\x02*t\n" + + "\fJsonEncoding\x12\x1b\n" + + "\x17JSON_ENCODING_UNDEFINED\x10\x00\x12\x12\n" + + "\x0eJS_ENC_DEFAULT\x10\x01\x12\x0f\n" + + "\vJS_ENC_UTF8\x10\x02\x12\x10\n" + + "\fJS_ENC_UTF16\x10\x03\x12\x10\n" + + "\fJS_ENC_UTF32\x10\x04*p\n" + + "\x0eJsonFormatType\x12\x1e\n" + + "\x1aJSON_FORMAT_TYPE_UNDEFINED\x10\x00\x12\x15\n" + + "\x11JS_FORMAT_DEFAULT\x10\x01\x12\x12\n" + + "\x0eJS_FORMAT_JSON\x10\x02\x12\x13\n" + + "\x0fJS_FORMAT_JSONB\x10\x03*\xe8\x01\n" + + "\x13JsonConstructorType\x12#\n" + + "\x1fJSON_CONSTRUCTOR_TYPE_UNDEFINED\x10\x00\x12\x16\n" + + "\x12JSCTOR_JSON_OBJECT\x10\x01\x12\x15\n" + + "\x11JSCTOR_JSON_ARRAY\x10\x02\x12\x19\n" + + "\x15JSCTOR_JSON_OBJECTAGG\x10\x03\x12\x18\n" + + "\x14JSCTOR_JSON_ARRAYAGG\x10\x04\x12\x15\n" + + "\x11JSCTOR_JSON_PARSE\x10\x05\x12\x16\n" + + "\x12JSCTOR_JSON_SCALAR\x10\x06\x12\x19\n" + + "\x15JSCTOR_JSON_SERIALIZE\x10\a*z\n" + + "\rJsonValueType\x12\x1d\n" + + "\x19JSON_VALUE_TYPE_UNDEFINED\x10\x00\x12\x0f\n" + + "\vJS_TYPE_ANY\x10\x01\x12\x12\n" + + "\x0eJS_TYPE_OBJECT\x10\x02\x12\x11\n" + + "\rJS_TYPE_ARRAY\x10\x03\x12\x12\n" + + "\x0eJS_TYPE_SCALAR\x10\x04*s\n" + + "\vJsonWrapper\x12\x1a\n" + + "\x16JSON_WRAPPER_UNDEFINED\x10\x00\x12\x0e\n" + + "\n" + + "JSW_UNSPEC\x10\x01\x12\f\n" + + "\bJSW_NONE\x10\x02\x12\x13\n" + + "\x0fJSW_CONDITIONAL\x10\x03\x12\x15\n" + + "\x11JSW_UNCONDITIONAL\x10\x04*\xa4\x02\n" + + "\x10JsonBehaviorType\x12 \n" + + "\x1cJSON_BEHAVIOR_TYPE_UNDEFINED\x10\x00\x12\x16\n" + + "\x12JSON_BEHAVIOR_NULL\x10\x01\x12\x17\n" + + "\x13JSON_BEHAVIOR_ERROR\x10\x02\x12\x17\n" + + "\x13JSON_BEHAVIOR_EMPTY\x10\x03\x12\x16\n" + + "\x12JSON_BEHAVIOR_TRUE\x10\x04\x12\x17\n" + + "\x13JSON_BEHAVIOR_FALSE\x10\x05\x12\x19\n" + + "\x15JSON_BEHAVIOR_UNKNOWN\x10\x06\x12\x1d\n" + + "\x19JSON_BEHAVIOR_EMPTY_ARRAY\x10\a\x12\x1e\n" + + "\x1aJSON_BEHAVIOR_EMPTY_OBJECT\x10\b\x12\x19\n" + + "\x15JSON_BEHAVIOR_DEFAULT\x10\t*u\n" + + "\n" + + "JsonExprOp\x12\x1a\n" + + "\x16JSON_EXPR_OP_UNDEFINED\x10\x00\x12\x12\n" + + "\x0eJSON_EXISTS_OP\x10\x01\x12\x11\n" + + "\rJSON_QUERY_OP\x10\x02\x12\x11\n" + + "\rJSON_VALUE_OP\x10\x03\x12\x11\n" + + "\rJSON_TABLE_OP\x10\x04*J\n" + + "\fNullTestType\x12\x1c\n" + + "\x18NULL_TEST_TYPE_UNDEFINED\x10\x00\x12\v\n" + + "\aIS_NULL\x10\x01\x12\x0f\n" + + "\vIS_NOT_NULL\x10\x02*\x8e\x01\n" + + "\fBoolTestType\x12\x1c\n" + + "\x18BOOL_TEST_TYPE_UNDEFINED\x10\x00\x12\v\n" + + "\aIS_TRUE\x10\x01\x12\x0f\n" + + "\vIS_NOT_TRUE\x10\x02\x12\f\n" + + "\bIS_FALSE\x10\x03\x12\x10\n" + + "\fIS_NOT_FALSE\x10\x04\x12\x0e\n" + + "\n" + + "IS_UNKNOWN\x10\x05\x12\x12\n" + + "\x0eIS_NOT_UNKNOWN\x10\x06*\x94\x01\n" + + "\x0eMergeMatchKind\x12\x1e\n" + + "\x1aMERGE_MATCH_KIND_UNDEFINED\x10\x00\x12\x16\n" + + "\x12MERGE_WHEN_MATCHED\x10\x01\x12$\n" + + " MERGE_WHEN_NOT_MATCHED_BY_SOURCE\x10\x02\x12$\n" + + " MERGE_WHEN_NOT_MATCHED_BY_TARGET\x10\x03*\xa3\x01\n" + + "\aCmdType\x12\x16\n" + + "\x12CMD_TYPE_UNDEFINED\x10\x00\x12\x0f\n" + + "\vCMD_UNKNOWN\x10\x01\x12\x0e\n" + + "\n" + + "CMD_SELECT\x10\x02\x12\x0e\n" + + "\n" + + "CMD_UPDATE\x10\x03\x12\x0e\n" + + "\n" + + "CMD_INSERT\x10\x04\x12\x0e\n" + + "\n" + + "CMD_DELETE\x10\x05\x12\r\n" + + "\tCMD_MERGE\x10\x06\x12\x0f\n" + + "\vCMD_UTILITY\x10\a\x12\x0f\n" + + "\vCMD_NOTHING\x10\b*\xd7\x01\n" + + "\bJoinType\x12\x17\n" + + "\x13JOIN_TYPE_UNDEFINED\x10\x00\x12\x0e\n" + + "\n" + + "JOIN_INNER\x10\x01\x12\r\n" + + "\tJOIN_LEFT\x10\x02\x12\r\n" + + "\tJOIN_FULL\x10\x03\x12\x0e\n" + + "\n" + + "JOIN_RIGHT\x10\x04\x12\r\n" + + "\tJOIN_SEMI\x10\x05\x12\r\n" + + "\tJOIN_ANTI\x10\x06\x12\x13\n" + + "\x0fJOIN_RIGHT_SEMI\x10\a\x12\x13\n" + + "\x0fJOIN_RIGHT_ANTI\x10\b\x12\x15\n" + + "\x11JOIN_UNIQUE_OUTER\x10\t\x12\x15\n" + + "\x11JOIN_UNIQUE_INNER\x10\n" + + "*g\n" + + "\vAggStrategy\x12\x1a\n" + + "\x16AGG_STRATEGY_UNDEFINED\x10\x00\x12\r\n" + + "\tAGG_PLAIN\x10\x01\x12\x0e\n" + + "\n" + + "AGG_SORTED\x10\x02\x12\x0e\n" + + "\n" + + "AGG_HASHED\x10\x03\x12\r\n" + + "\tAGG_MIXED\x10\x04*r\n" + + "\bAggSplit\x12\x17\n" + + "\x13AGG_SPLIT_UNDEFINED\x10\x00\x12\x13\n" + + "\x0fAGGSPLIT_SIMPLE\x10\x01\x12\x1b\n" + + "\x17AGGSPLIT_INITIAL_SERIAL\x10\x02\x12\x1b\n" + + "\x17AGGSPLIT_FINAL_DESERIAL\x10\x03*\x86\x01\n" + + "\bSetOpCmd\x12\x18\n" + + "\x14SET_OP_CMD_UNDEFINED\x10\x00\x12\x16\n" + + "\x12SETOPCMD_INTERSECT\x10\x01\x12\x1a\n" + + "\x16SETOPCMD_INTERSECT_ALL\x10\x02\x12\x13\n" + + "\x0fSETOPCMD_EXCEPT\x10\x03\x12\x17\n" + + "\x13SETOPCMD_EXCEPT_ALL\x10\x04*R\n" + + "\rSetOpStrategy\x12\x1d\n" + + "\x19SET_OP_STRATEGY_UNDEFINED\x10\x00\x12\x10\n" + + "\fSETOP_SORTED\x10\x01\x12\x10\n" + + "\fSETOP_HASHED\x10\x02*x\n" + + "\x10OnConflictAction\x12 \n" + + "\x1cON_CONFLICT_ACTION_UNDEFINED\x10\x00\x12\x13\n" + + "\x0fONCONFLICT_NONE\x10\x01\x12\x16\n" + + "\x12ONCONFLICT_NOTHING\x10\x02\x12\x15\n" + + "\x11ONCONFLICT_UPDATE\x10\x03*w\n" + + "\vLimitOption\x12\x1a\n" + + "\x16LIMIT_OPTION_UNDEFINED\x10\x00\x12\x18\n" + + "\x14LIMIT_OPTION_DEFAULT\x10\x01\x12\x16\n" + + "\x12LIMIT_OPTION_COUNT\x10\x02\x12\x1a\n" + + "\x16LIMIT_OPTION_WITH_TIES\x10\x03*\x98\x01\n" + + "\x12LockClauseStrength\x12\"\n" + + "\x1eLOCK_CLAUSE_STRENGTH_UNDEFINED\x10\x00\x12\f\n" + + "\bLCS_NONE\x10\x01\x12\x13\n" + + "\x0fLCS_FORKEYSHARE\x10\x02\x12\x10\n" + + "\fLCS_FORSHARE\x10\x03\x12\x16\n" + + "\x12LCS_FORNOKEYUPDATE\x10\x04\x12\x11\n" + + "\rLCS_FORUPDATE\x10\x05*h\n" + + "\x0eLockWaitPolicy\x12\x1e\n" + + "\x1aLOCK_WAIT_POLICY_UNDEFINED\x10\x00\x12\x11\n" + + "\rLockWaitBlock\x10\x01\x12\x10\n" + + "\fLockWaitSkip\x10\x02\x12\x11\n" + + "\rLockWaitError\x10\x03*\x8e\x01\n" + + "\rLockTupleMode\x12\x1d\n" + + "\x19LOCK_TUPLE_MODE_UNDEFINED\x10\x00\x12\x15\n" + + "\x11LockTupleKeyShare\x10\x01\x12\x12\n" + + "\x0eLockTupleShare\x10\x02\x12\x1b\n" + + "\x17LockTupleNoKeyExclusive\x10\x03\x12\x16\n" + + "\x12LockTupleExclusive\x10\x04*\xcd\x01\n" + + "\vCompareType\x12\x1a\n" + + "\x16COMPARE_TYPE_UNDEFINED\x10\x00\x12\x13\n" + + "\x0fCOMPARE_INVALID\x10\x01\x12\x0e\n" + + "\n" + + "COMPARE_LT\x10\x02\x12\x0e\n" + + "\n" + + "COMPARE_LE\x10\x03\x12\x0e\n" + + "\n" + + "COMPARE_EQ\x10\x04\x12\x0e\n" + + "\n" + + "COMPARE_GE\x10\x05\x12\x0e\n" + + "\n" + + "COMPARE_GT\x10\x06\x12\x0e\n" + + "\n" + + "COMPARE_NE\x10\a\x12\x13\n" + + "\x0fCOMPARE_OVERLAP\x10\b\x12\x18\n" + + "\x14COMPARE_CONTAINED_BY\x10\t*}\n" + + "\vKeywordKind\x12\x0e\n" + + "\n" + + "NO_KEYWORD\x10\x00\x12\x16\n" + + "\x12UNRESERVED_KEYWORD\x10\x01\x12\x14\n" + + "\x10COL_NAME_KEYWORD\x10\x02\x12\x1a\n" + + "\x16TYPE_FUNC_NAME_KEYWORD\x10\x03\x12\x14\n" + + "\x10RESERVED_KEYWORD\x10\x04*\x94<\n" + + "\x05Token\x12\a\n" + + "\x03NUL\x10\x00\x12\f\n" + + "\bASCII_36\x10$\x12\f\n" + + "\bASCII_37\x10%\x12\f\n" + + "\bASCII_40\x10(\x12\f\n" + + "\bASCII_41\x10)\x12\f\n" + + "\bASCII_42\x10*\x12\f\n" + + "\bASCII_43\x10+\x12\f\n" + + "\bASCII_44\x10,\x12\f\n" + + "\bASCII_45\x10-\x12\f\n" + + "\bASCII_46\x10.\x12\f\n" + + "\bASCII_47\x10/\x12\f\n" + + "\bASCII_58\x10:\x12\f\n" + + "\bASCII_59\x10;\x12\f\n" + + "\bASCII_60\x10<\x12\f\n" + + "\bASCII_61\x10=\x12\f\n" + + "\bASCII_62\x10>\x12\f\n" + + "\bASCII_63\x10?\x12\f\n" + + "\bASCII_91\x10[\x12\f\n" + + "\bASCII_92\x10\\\x12\f\n" + + "\bASCII_93\x10]\x12\f\n" + + "\bASCII_94\x10^\x12\n" + + "\n" + + "\x05IDENT\x10\x82\x02\x12\v\n" + + "\x06UIDENT\x10\x83\x02\x12\v\n" + + "\x06FCONST\x10\x84\x02\x12\v\n" + + "\x06SCONST\x10\x85\x02\x12\f\n" + + "\aUSCONST\x10\x86\x02\x12\v\n" + + "\x06BCONST\x10\x87\x02\x12\v\n" + + "\x06XCONST\x10\x88\x02\x12\a\n" + + "\x02Op\x10\x89\x02\x12\v\n" + + "\x06ICONST\x10\x8a\x02\x12\n" + + "\n" + + "\x05PARAM\x10\x8b\x02\x12\r\n" + + "\bTYPECAST\x10\x8c\x02\x12\f\n" + + "\aDOT_DOT\x10\x8d\x02\x12\x11\n" + + "\fCOLON_EQUALS\x10\x8e\x02\x12\x13\n" + + "\x0eEQUALS_GREATER\x10\x8f\x02\x12\x10\n" + + "\vLESS_EQUALS\x10\x90\x02\x12\x13\n" + + "\x0eGREATER_EQUALS\x10\x91\x02\x12\x0f\n" + + "\n" + + "NOT_EQUALS\x10\x92\x02\x12\x10\n" + + "\vSQL_COMMENT\x10\x93\x02\x12\x0e\n" + + "\tC_COMMENT\x10\x94\x02\x12\f\n" + + "\aABORT_P\x10\x95\x02\x12\v\n" + + "\x06ABSENT\x10\x96\x02\x12\x0f\n" + + "\n" + + "ABSOLUTE_P\x10\x97\x02\x12\v\n" + + "\x06ACCESS\x10\x98\x02\x12\v\n" + + "\x06ACTION\x10\x99\x02\x12\n" + + "\n" + + "\x05ADD_P\x10\x9a\x02\x12\n" + + "\n" + + "\x05ADMIN\x10\x9b\x02\x12\n" + + "\n" + + "\x05AFTER\x10\x9c\x02\x12\x0e\n" + + "\tAGGREGATE\x10\x9d\x02\x12\b\n" + + "\x03ALL\x10\x9e\x02\x12\t\n" + + "\x04ALSO\x10\x9f\x02\x12\n" + + "\n" + + "\x05ALTER\x10\xa0\x02\x12\v\n" + + "\x06ALWAYS\x10\xa1\x02\x12\f\n" + + "\aANALYSE\x10\xa2\x02\x12\f\n" + + "\aANALYZE\x10\xa3\x02\x12\b\n" + + "\x03AND\x10\xa4\x02\x12\b\n" + + "\x03ANY\x10\xa5\x02\x12\n" + + "\n" + + "\x05ARRAY\x10\xa6\x02\x12\a\n" + + "\x02AS\x10\xa7\x02\x12\b\n" + + "\x03ASC\x10\xa8\x02\x12\x0f\n" + + "\n" + + "ASENSITIVE\x10\xa9\x02\x12\x0e\n" + + "\tASSERTION\x10\xaa\x02\x12\x0f\n" + + "\n" + + "ASSIGNMENT\x10\xab\x02\x12\x0f\n" + + "\n" + + "ASYMMETRIC\x10\xac\x02\x12\v\n" + + "\x06ATOMIC\x10\xad\x02\x12\a\n" + + "\x02AT\x10\xae\x02\x12\v\n" + + "\x06ATTACH\x10\xaf\x02\x12\x0e\n" + + "\tATTRIBUTE\x10\xb0\x02\x12\x12\n" + + "\rAUTHORIZATION\x10\xb1\x02\x12\r\n" + + "\bBACKWARD\x10\xb2\x02\x12\v\n" + + "\x06BEFORE\x10\xb3\x02\x12\f\n" + + "\aBEGIN_P\x10\xb4\x02\x12\f\n" + + "\aBETWEEN\x10\xb5\x02\x12\v\n" + + "\x06BIGINT\x10\xb6\x02\x12\v\n" + + "\x06BINARY\x10\xb7\x02\x12\b\n" + + "\x03BIT\x10\xb8\x02\x12\x0e\n" + + "\tBOOLEAN_P\x10\xb9\x02\x12\t\n" + + "\x04BOTH\x10\xba\x02\x12\f\n" + + "\aBREADTH\x10\xbb\x02\x12\a\n" + + "\x02BY\x10\xbc\x02\x12\n" + + "\n" + + "\x05CACHE\x10\xbd\x02\x12\t\n" + + "\x04CALL\x10\xbe\x02\x12\v\n" + + "\x06CALLED\x10\xbf\x02\x12\f\n" + + "\aCASCADE\x10\xc0\x02\x12\r\n" + + "\bCASCADED\x10\xc1\x02\x12\t\n" + + "\x04CASE\x10\xc2\x02\x12\t\n" + + "\x04CAST\x10\xc3\x02\x12\x0e\n" + + "\tCATALOG_P\x10\xc4\x02\x12\n" + + "\n" + + "\x05CHAIN\x10\xc5\x02\x12\v\n" + + "\x06CHAR_P\x10\xc6\x02\x12\x0e\n" + + "\tCHARACTER\x10\xc7\x02\x12\x14\n" + + "\x0fCHARACTERISTICS\x10\xc8\x02\x12\n" + + "\n" + + "\x05CHECK\x10\xc9\x02\x12\x0f\n" + + "\n" + + "CHECKPOINT\x10\xca\x02\x12\n" + + "\n" + + "\x05CLASS\x10\xcb\x02\x12\n" + + "\n" + + "\x05CLOSE\x10\xcc\x02\x12\f\n" + + "\aCLUSTER\x10\xcd\x02\x12\r\n" + + "\bCOALESCE\x10\xce\x02\x12\f\n" + + "\aCOLLATE\x10\xcf\x02\x12\x0e\n" + + "\tCOLLATION\x10\xd0\x02\x12\v\n" + + "\x06COLUMN\x10\xd1\x02\x12\f\n" + + "\aCOLUMNS\x10\xd2\x02\x12\f\n" + + "\aCOMMENT\x10\xd3\x02\x12\r\n" + + "\bCOMMENTS\x10\xd4\x02\x12\v\n" + + "\x06COMMIT\x10\xd5\x02\x12\x0e\n" + + "\tCOMMITTED\x10\xd6\x02\x12\x10\n" + + "\vCOMPRESSION\x10\xd7\x02\x12\x11\n" + + "\fCONCURRENTLY\x10\xd8\x02\x12\x10\n" + + "\vCONDITIONAL\x10\xd9\x02\x12\x12\n" + + "\rCONFIGURATION\x10\xda\x02\x12\r\n" + + "\bCONFLICT\x10\xdb\x02\x12\x0f\n" + + "\n" + + "CONNECTION\x10\xdc\x02\x12\x0f\n" + + "\n" + + "CONSTRAINT\x10\xdd\x02\x12\x10\n" + + "\vCONSTRAINTS\x10\xde\x02\x12\x0e\n" + + "\tCONTENT_P\x10\xdf\x02\x12\x0f\n" + + "\n" + + "CONTINUE_P\x10\xe0\x02\x12\x11\n" + + "\fCONVERSION_P\x10\xe1\x02\x12\t\n" + + "\x04COPY\x10\xe2\x02\x12\t\n" + + "\x04COST\x10\xe3\x02\x12\v\n" + + "\x06CREATE\x10\xe4\x02\x12\n" + + "\n" + + "\x05CROSS\x10\xe5\x02\x12\b\n" + + "\x03CSV\x10\xe6\x02\x12\t\n" + + "\x04CUBE\x10\xe7\x02\x12\x0e\n" + + "\tCURRENT_P\x10\xe8\x02\x12\x14\n" + + "\x0fCURRENT_CATALOG\x10\xe9\x02\x12\x11\n" + + "\fCURRENT_DATE\x10\xea\x02\x12\x11\n" + + "\fCURRENT_ROLE\x10\xeb\x02\x12\x13\n" + + "\x0eCURRENT_SCHEMA\x10\xec\x02\x12\x11\n" + + "\fCURRENT_TIME\x10\xed\x02\x12\x16\n" + + "\x11CURRENT_TIMESTAMP\x10\xee\x02\x12\x11\n" + + "\fCURRENT_USER\x10\xef\x02\x12\v\n" + + "\x06CURSOR\x10\xf0\x02\x12\n" + + "\n" + + "\x05CYCLE\x10\xf1\x02\x12\v\n" + + "\x06DATA_P\x10\xf2\x02\x12\r\n" + + "\bDATABASE\x10\xf3\x02\x12\n" + + "\n" + + "\x05DAY_P\x10\xf4\x02\x12\x0f\n" + + "\n" + + "DEALLOCATE\x10\xf5\x02\x12\b\n" + + "\x03DEC\x10\xf6\x02\x12\x0e\n" + + "\tDECIMAL_P\x10\xf7\x02\x12\f\n" + + "\aDECLARE\x10\xf8\x02\x12\f\n" + + "\aDEFAULT\x10\xf9\x02\x12\r\n" + + "\bDEFAULTS\x10\xfa\x02\x12\x0f\n" + + "\n" + + "DEFERRABLE\x10\xfb\x02\x12\r\n" + + "\bDEFERRED\x10\xfc\x02\x12\f\n" + + "\aDEFINER\x10\xfd\x02\x12\r\n" + + "\bDELETE_P\x10\xfe\x02\x12\x0e\n" + + "\tDELIMITER\x10\xff\x02\x12\x0f\n" + + "\n" + + "DELIMITERS\x10\x80\x03\x12\f\n" + + "\aDEPENDS\x10\x81\x03\x12\n" + + "\n" + + "\x05DEPTH\x10\x82\x03\x12\t\n" + + "\x04DESC\x10\x83\x03\x12\v\n" + + "\x06DETACH\x10\x84\x03\x12\x0f\n" + + "\n" + + "DICTIONARY\x10\x85\x03\x12\x0e\n" + + "\tDISABLE_P\x10\x86\x03\x12\f\n" + + "\aDISCARD\x10\x87\x03\x12\r\n" + + "\bDISTINCT\x10\x88\x03\x12\a\n" + + "\x02DO\x10\x89\x03\x12\x0f\n" + + "\n" + + "DOCUMENT_P\x10\x8a\x03\x12\r\n" + + "\bDOMAIN_P\x10\x8b\x03\x12\r\n" + + "\bDOUBLE_P\x10\x8c\x03\x12\t\n" + + "\x04DROP\x10\x8d\x03\x12\t\n" + + "\x04EACH\x10\x8e\x03\x12\t\n" + + "\x04ELSE\x10\x8f\x03\x12\f\n" + + "\aEMPTY_P\x10\x90\x03\x12\r\n" + + "\bENABLE_P\x10\x91\x03\x12\r\n" + + "\bENCODING\x10\x92\x03\x12\x0e\n" + + "\tENCRYPTED\x10\x93\x03\x12\n" + + "\n" + + "\x05END_P\x10\x94\x03\x12\r\n" + + "\bENFORCED\x10\x95\x03\x12\v\n" + + "\x06ENUM_P\x10\x96\x03\x12\f\n" + + "\aERROR_P\x10\x97\x03\x12\v\n" + + "\x06ESCAPE\x10\x98\x03\x12\n" + + "\n" + + "\x05EVENT\x10\x99\x03\x12\v\n" + + "\x06EXCEPT\x10\x9a\x03\x12\f\n" + + "\aEXCLUDE\x10\x9b\x03\x12\x0e\n" + + "\tEXCLUDING\x10\x9c\x03\x12\x0e\n" + + "\tEXCLUSIVE\x10\x9d\x03\x12\f\n" + + "\aEXECUTE\x10\x9e\x03\x12\v\n" + + "\x06EXISTS\x10\x9f\x03\x12\f\n" + + "\aEXPLAIN\x10\xa0\x03\x12\x0f\n" + + "\n" + + "EXPRESSION\x10\xa1\x03\x12\x0e\n" + + "\tEXTENSION\x10\xa2\x03\x12\r\n" + + "\bEXTERNAL\x10\xa3\x03\x12\f\n" + + "\aEXTRACT\x10\xa4\x03\x12\f\n" + + "\aFALSE_P\x10\xa5\x03\x12\v\n" + + "\x06FAMILY\x10\xa6\x03\x12\n" + + "\n" + + "\x05FETCH\x10\xa7\x03\x12\v\n" + + "\x06FILTER\x10\xa8\x03\x12\r\n" + + "\bFINALIZE\x10\xa9\x03\x12\f\n" + + "\aFIRST_P\x10\xaa\x03\x12\f\n" + + "\aFLOAT_P\x10\xab\x03\x12\x0e\n" + + "\tFOLLOWING\x10\xac\x03\x12\b\n" + + "\x03FOR\x10\xad\x03\x12\n" + + "\n" + + "\x05FORCE\x10\xae\x03\x12\f\n" + + "\aFOREIGN\x10\xaf\x03\x12\v\n" + + "\x06FORMAT\x10\xb0\x03\x12\f\n" + + "\aFORWARD\x10\xb1\x03\x12\v\n" + + "\x06FREEZE\x10\xb2\x03\x12\t\n" + + "\x04FROM\x10\xb3\x03\x12\t\n" + + "\x04FULL\x10\xb4\x03\x12\r\n" + + "\bFUNCTION\x10\xb5\x03\x12\x0e\n" + + "\tFUNCTIONS\x10\xb6\x03\x12\x0e\n" + + "\tGENERATED\x10\xb7\x03\x12\v\n" + + "\x06GLOBAL\x10\xb8\x03\x12\n" + + "\n" + + "\x05GRANT\x10\xb9\x03\x12\f\n" + + "\aGRANTED\x10\xba\x03\x12\r\n" + + "\bGREATEST\x10\xbb\x03\x12\f\n" + + "\aGROUP_P\x10\xbc\x03\x12\r\n" + + "\bGROUPING\x10\xbd\x03\x12\v\n" + + "\x06GROUPS\x10\xbe\x03\x12\f\n" + + "\aHANDLER\x10\xbf\x03\x12\v\n" + + "\x06HAVING\x10\xc0\x03\x12\r\n" + + "\bHEADER_P\x10\xc1\x03\x12\t\n" + + "\x04HOLD\x10\xc2\x03\x12\v\n" + + "\x06HOUR_P\x10\xc3\x03\x12\x0f\n" + + "\n" + + "IDENTITY_P\x10\xc4\x03\x12\t\n" + + "\x04IF_P\x10\xc5\x03\x12\n" + + "\n" + + "\x05ILIKE\x10\xc6\x03\x12\x0e\n" + + "\tIMMEDIATE\x10\xc7\x03\x12\x0e\n" + + "\tIMMUTABLE\x10\xc8\x03\x12\x0f\n" + + "\n" + + "IMPLICIT_P\x10\xc9\x03\x12\r\n" + + "\bIMPORT_P\x10\xca\x03\x12\t\n" + + "\x04IN_P\x10\xcb\x03\x12\f\n" + + "\aINCLUDE\x10\xcc\x03\x12\x0e\n" + + "\tINCLUDING\x10\xcd\x03\x12\x0e\n" + + "\tINCREMENT\x10\xce\x03\x12\v\n" + + "\x06INDENT\x10\xcf\x03\x12\n" + + "\n" + + "\x05INDEX\x10\xd0\x03\x12\f\n" + + "\aINDEXES\x10\xd1\x03\x12\f\n" + + "\aINHERIT\x10\xd2\x03\x12\r\n" + + "\bINHERITS\x10\xd3\x03\x12\x0e\n" + + "\tINITIALLY\x10\xd4\x03\x12\r\n" + + "\bINLINE_P\x10\xd5\x03\x12\f\n" + + "\aINNER_P\x10\xd6\x03\x12\n" + + "\n" + + "\x05INOUT\x10\xd7\x03\x12\f\n" + + "\aINPUT_P\x10\xd8\x03\x12\x10\n" + + "\vINSENSITIVE\x10\xd9\x03\x12\v\n" + + "\x06INSERT\x10\xda\x03\x12\f\n" + + "\aINSTEAD\x10\xdb\x03\x12\n" + + "\n" + + "\x05INT_P\x10\xdc\x03\x12\f\n" + + "\aINTEGER\x10\xdd\x03\x12\x0e\n" + + "\tINTERSECT\x10\xde\x03\x12\r\n" + + "\bINTERVAL\x10\xdf\x03\x12\t\n" + + "\x04INTO\x10\xe0\x03\x12\f\n" + + "\aINVOKER\x10\xe1\x03\x12\a\n" + + "\x02IS\x10\xe2\x03\x12\v\n" + + "\x06ISNULL\x10\xe3\x03\x12\x0e\n" + + "\tISOLATION\x10\xe4\x03\x12\t\n" + + "\x04JOIN\x10\xe5\x03\x12\t\n" + + "\x04JSON\x10\xe6\x03\x12\x0f\n" + + "\n" + + "JSON_ARRAY\x10\xe7\x03\x12\x12\n" + + "\rJSON_ARRAYAGG\x10\xe8\x03\x12\x10\n" + + "\vJSON_EXISTS\x10\xe9\x03\x12\x10\n" + + "\vJSON_OBJECT\x10\xea\x03\x12\x13\n" + + "\x0eJSON_OBJECTAGG\x10\xeb\x03\x12\x0f\n" + + "\n" + + "JSON_QUERY\x10\xec\x03\x12\x10\n" + + "\vJSON_SCALAR\x10\xed\x03\x12\x13\n" + + "\x0eJSON_SERIALIZE\x10\xee\x03\x12\x0f\n" + + "\n" + + "JSON_TABLE\x10\xef\x03\x12\x0f\n" + + "\n" + + "JSON_VALUE\x10\xf0\x03\x12\t\n" + + "\x04KEEP\x10\xf1\x03\x12\b\n" + + "\x03KEY\x10\xf2\x03\x12\t\n" + + "\x04KEYS\x10\xf3\x03\x12\n" + + "\n" + + "\x05LABEL\x10\xf4\x03\x12\r\n" + + "\bLANGUAGE\x10\xf5\x03\x12\f\n" + + "\aLARGE_P\x10\xf6\x03\x12\v\n" + + "\x06LAST_P\x10\xf7\x03\x12\x0e\n" + + "\tLATERAL_P\x10\xf8\x03\x12\f\n" + + "\aLEADING\x10\xf9\x03\x12\x0e\n" + + "\tLEAKPROOF\x10\xfa\x03\x12\n" + + "\n" + + "\x05LEAST\x10\xfb\x03\x12\t\n" + + "\x04LEFT\x10\xfc\x03\x12\n" + + "\n" + + "\x05LEVEL\x10\xfd\x03\x12\t\n" + + "\x04LIKE\x10\xfe\x03\x12\n" + + "\n" + + "\x05LIMIT\x10\xff\x03\x12\v\n" + + "\x06LISTEN\x10\x80\x04\x12\t\n" + + "\x04LOAD\x10\x81\x04\x12\n" + + "\n" + + "\x05LOCAL\x10\x82\x04\x12\x0e\n" + + "\tLOCALTIME\x10\x83\x04\x12\x13\n" + + "\x0eLOCALTIMESTAMP\x10\x84\x04\x12\r\n" + + "\bLOCATION\x10\x85\x04\x12\v\n" + + "\x06LOCK_P\x10\x86\x04\x12\v\n" + + "\x06LOCKED\x10\x87\x04\x12\v\n" + + "\x06LOGGED\x10\x88\x04\x12\f\n" + + "\aMAPPING\x10\x89\x04\x12\n" + + "\n" + + "\x05MATCH\x10\x8a\x04\x12\f\n" + + "\aMATCHED\x10\x8b\x04\x12\x11\n" + + "\fMATERIALIZED\x10\x8c\x04\x12\r\n" + + "\bMAXVALUE\x10\x8d\x04\x12\n" + + "\n" + + "\x05MERGE\x10\x8e\x04\x12\x11\n" + + "\fMERGE_ACTION\x10\x8f\x04\x12\v\n" + + "\x06METHOD\x10\x90\x04\x12\r\n" + + "\bMINUTE_P\x10\x91\x04\x12\r\n" + + "\bMINVALUE\x10\x92\x04\x12\t\n" + + "\x04MODE\x10\x93\x04\x12\f\n" + + "\aMONTH_P\x10\x94\x04\x12\t\n" + + "\x04MOVE\x10\x95\x04\x12\v\n" + + "\x06NAME_P\x10\x96\x04\x12\n" + + "\n" + + "\x05NAMES\x10\x97\x04\x12\r\n" + + "\bNATIONAL\x10\x98\x04\x12\f\n" + + "\aNATURAL\x10\x99\x04\x12\n" + + "\n" + + "\x05NCHAR\x10\x9a\x04\x12\v\n" + + "\x06NESTED\x10\x9b\x04\x12\b\n" + + "\x03NEW\x10\x9c\x04\x12\t\n" + + "\x04NEXT\x10\x9d\x04\x12\b\n" + + "\x03NFC\x10\x9e\x04\x12\b\n" + + "\x03NFD\x10\x9f\x04\x12\t\n" + + "\x04NFKC\x10\xa0\x04\x12\t\n" + + "\x04NFKD\x10\xa1\x04\x12\a\n" + + "\x02NO\x10\xa2\x04\x12\t\n" + + "\x04NONE\x10\xa3\x04\x12\x0e\n" + + "\tNORMALIZE\x10\xa4\x04\x12\x0f\n" + + "\n" + + "NORMALIZED\x10\xa5\x04\x12\b\n" + + "\x03NOT\x10\xa6\x04\x12\f\n" + + "\aNOTHING\x10\xa7\x04\x12\v\n" + + "\x06NOTIFY\x10\xa8\x04\x12\f\n" + + "\aNOTNULL\x10\xa9\x04\x12\v\n" + + "\x06NOWAIT\x10\xaa\x04\x12\v\n" + + "\x06NULL_P\x10\xab\x04\x12\v\n" + + "\x06NULLIF\x10\xac\x04\x12\f\n" + + "\aNULLS_P\x10\xad\x04\x12\f\n" + + "\aNUMERIC\x10\xae\x04\x12\r\n" + + "\bOBJECT_P\x10\xaf\x04\x12\x0e\n" + + "\tOBJECTS_P\x10\xb0\x04\x12\a\n" + + "\x02OF\x10\xb1\x04\x12\b\n" + + "\x03OFF\x10\xb2\x04\x12\v\n" + + "\x06OFFSET\x10\xb3\x04\x12\t\n" + + "\x04OIDS\x10\xb4\x04\x12\b\n" + + "\x03OLD\x10\xb5\x04\x12\t\n" + + "\x04OMIT\x10\xb6\x04\x12\a\n" + + "\x02ON\x10\xb7\x04\x12\t\n" + + "\x04ONLY\x10\xb8\x04\x12\r\n" + + "\bOPERATOR\x10\xb9\x04\x12\v\n" + + "\x06OPTION\x10\xba\x04\x12\f\n" + + "\aOPTIONS\x10\xbb\x04\x12\a\n" + + "\x02OR\x10\xbc\x04\x12\n" + + "\n" + + "\x05ORDER\x10\xbd\x04\x12\x0f\n" + + "\n" + + "ORDINALITY\x10\xbe\x04\x12\v\n" + + "\x06OTHERS\x10\xbf\x04\x12\n" + + "\n" + + "\x05OUT_P\x10\xc0\x04\x12\f\n" + + "\aOUTER_P\x10\xc1\x04\x12\t\n" + + "\x04OVER\x10\xc2\x04\x12\r\n" + + "\bOVERLAPS\x10\xc3\x04\x12\f\n" + + "\aOVERLAY\x10\xc4\x04\x12\x0f\n" + + "\n" + + "OVERRIDING\x10\xc5\x04\x12\n" + + "\n" + + "\x05OWNED\x10\xc6\x04\x12\n" + + "\n" + + "\x05OWNER\x10\xc7\x04\x12\r\n" + + "\bPARALLEL\x10\xc8\x04\x12\x0e\n" + + "\tPARAMETER\x10\xc9\x04\x12\v\n" + + "\x06PARSER\x10\xca\x04\x12\f\n" + + "\aPARTIAL\x10\xcb\x04\x12\x0e\n" + + "\tPARTITION\x10\xcc\x04\x12\f\n" + + "\aPASSING\x10\xcd\x04\x12\r\n" + + "\bPASSWORD\x10\xce\x04\x12\t\n" + + "\x04PATH\x10\xcf\x04\x12\v\n" + + "\x06PERIOD\x10\xd0\x04\x12\f\n" + + "\aPLACING\x10\xd1\x04\x12\t\n" + + "\x04PLAN\x10\xd2\x04\x12\n" + + "\n" + + "\x05PLANS\x10\xd3\x04\x12\v\n" + + "\x06POLICY\x10\xd4\x04\x12\r\n" + + "\bPOSITION\x10\xd5\x04\x12\x0e\n" + + "\tPRECEDING\x10\xd6\x04\x12\x0e\n" + + "\tPRECISION\x10\xd7\x04\x12\r\n" + + "\bPRESERVE\x10\xd8\x04\x12\f\n" + + "\aPREPARE\x10\xd9\x04\x12\r\n" + + "\bPREPARED\x10\xda\x04\x12\f\n" + + "\aPRIMARY\x10\xdb\x04\x12\n" + + "\n" + + "\x05PRIOR\x10\xdc\x04\x12\x0f\n" + + "\n" + + "PRIVILEGES\x10\xdd\x04\x12\x0f\n" + + "\n" + + "PROCEDURAL\x10\xde\x04\x12\x0e\n" + + "\tPROCEDURE\x10\xdf\x04\x12\x0f\n" + + "\n" + + "PROCEDURES\x10\xe0\x04\x12\f\n" + + "\aPROGRAM\x10\xe1\x04\x12\x10\n" + + "\vPUBLICATION\x10\xe2\x04\x12\n" + + "\n" + + "\x05QUOTE\x10\xe3\x04\x12\v\n" + + "\x06QUOTES\x10\xe4\x04\x12\n" + + "\n" + + "\x05RANGE\x10\xe5\x04\x12\t\n" + + "\x04READ\x10\xe6\x04\x12\t\n" + + "\x04REAL\x10\xe7\x04\x12\r\n" + + "\bREASSIGN\x10\xe8\x04\x12\x0e\n" + + "\tRECURSIVE\x10\xe9\x04\x12\n" + + "\n" + + "\x05REF_P\x10\xea\x04\x12\x0f\n" + + "\n" + + "REFERENCES\x10\xeb\x04\x12\x10\n" + + "\vREFERENCING\x10\xec\x04\x12\f\n" + + "\aREFRESH\x10\xed\x04\x12\f\n" + + "\aREINDEX\x10\xee\x04\x12\x0f\n" + + "\n" + + "RELATIVE_P\x10\xef\x04\x12\f\n" + + "\aRELEASE\x10\xf0\x04\x12\v\n" + + "\x06RENAME\x10\xf1\x04\x12\x0f\n" + + "\n" + + "REPEATABLE\x10\xf2\x04\x12\f\n" + + "\aREPLACE\x10\xf3\x04\x12\f\n" + + "\aREPLICA\x10\xf4\x04\x12\n" + + "\n" + + "\x05RESET\x10\xf5\x04\x12\f\n" + + "\aRESTART\x10\xf6\x04\x12\r\n" + + "\bRESTRICT\x10\xf7\x04\x12\v\n" + + "\x06RETURN\x10\xf8\x04\x12\x0e\n" + + "\tRETURNING\x10\xf9\x04\x12\f\n" + + "\aRETURNS\x10\xfa\x04\x12\v\n" + + "\x06REVOKE\x10\xfb\x04\x12\n" + + "\n" + + "\x05RIGHT\x10\xfc\x04\x12\t\n" + + "\x04ROLE\x10\xfd\x04\x12\r\n" + + "\bROLLBACK\x10\xfe\x04\x12\v\n" + + "\x06ROLLUP\x10\xff\x04\x12\f\n" + + "\aROUTINE\x10\x80\x05\x12\r\n" + + "\bROUTINES\x10\x81\x05\x12\b\n" + + "\x03ROW\x10\x82\x05\x12\t\n" + + "\x04ROWS\x10\x83\x05\x12\t\n" + + "\x04RULE\x10\x84\x05\x12\x0e\n" + + "\tSAVEPOINT\x10\x85\x05\x12\v\n" + + "\x06SCALAR\x10\x86\x05\x12\v\n" + + "\x06SCHEMA\x10\x87\x05\x12\f\n" + + "\aSCHEMAS\x10\x88\x05\x12\v\n" + + "\x06SCROLL\x10\x89\x05\x12\v\n" + + "\x06SEARCH\x10\x8a\x05\x12\r\n" + + "\bSECOND_P\x10\x8b\x05\x12\r\n" + + "\bSECURITY\x10\x8c\x05\x12\v\n" + + "\x06SELECT\x10\x8d\x05\x12\r\n" + + "\bSEQUENCE\x10\x8e\x05\x12\x0e\n" + + "\tSEQUENCES\x10\x8f\x05\x12\x11\n" + + "\fSERIALIZABLE\x10\x90\x05\x12\v\n" + + "\x06SERVER\x10\x91\x05\x12\f\n" + + "\aSESSION\x10\x92\x05\x12\x11\n" + + "\fSESSION_USER\x10\x93\x05\x12\b\n" + + "\x03SET\x10\x94\x05\x12\t\n" + + "\x04SETS\x10\x95\x05\x12\n" + + "\n" + + "\x05SETOF\x10\x96\x05\x12\n" + + "\n" + + "\x05SHARE\x10\x97\x05\x12\t\n" + + "\x04SHOW\x10\x98\x05\x12\f\n" + + "\aSIMILAR\x10\x99\x05\x12\v\n" + + "\x06SIMPLE\x10\x9a\x05\x12\t\n" + + "\x04SKIP\x10\x9b\x05\x12\r\n" + + "\bSMALLINT\x10\x9c\x05\x12\r\n" + + "\bSNAPSHOT\x10\x9d\x05\x12\t\n" + + "\x04SOME\x10\x9e\x05\x12\v\n" + + "\x06SOURCE\x10\x9f\x05\x12\n" + + "\n" + + "\x05SQL_P\x10\xa0\x05\x12\v\n" + + "\x06STABLE\x10\xa1\x05\x12\x11\n" + + "\fSTANDALONE_P\x10\xa2\x05\x12\n" + + "\n" + + "\x05START\x10\xa3\x05\x12\x0e\n" + + "\tSTATEMENT\x10\xa4\x05\x12\x0f\n" + + "\n" + + "STATISTICS\x10\xa5\x05\x12\n" + + "\n" + + "\x05STDIN\x10\xa6\x05\x12\v\n" + + "\x06STDOUT\x10\xa7\x05\x12\f\n" + + "\aSTORAGE\x10\xa8\x05\x12\v\n" + + "\x06STORED\x10\xa9\x05\x12\r\n" + + "\bSTRICT_P\x10\xaa\x05\x12\r\n" + + "\bSTRING_P\x10\xab\x05\x12\f\n" + + "\aSTRIP_P\x10\xac\x05\x12\x11\n" + + "\fSUBSCRIPTION\x10\xad\x05\x12\x0e\n" + + "\tSUBSTRING\x10\xae\x05\x12\f\n" + + "\aSUPPORT\x10\xaf\x05\x12\x0e\n" + + "\tSYMMETRIC\x10\xb0\x05\x12\n" + + "\n" + + "\x05SYSID\x10\xb1\x05\x12\r\n" + + "\bSYSTEM_P\x10\xb2\x05\x12\x10\n" + + "\vSYSTEM_USER\x10\xb3\x05\x12\n" + + "\n" + + "\x05TABLE\x10\xb4\x05\x12\v\n" + + "\x06TABLES\x10\xb5\x05\x12\x10\n" + + "\vTABLESAMPLE\x10\xb6\x05\x12\x0f\n" + + "\n" + + "TABLESPACE\x10\xb7\x05\x12\v\n" + + "\x06TARGET\x10\xb8\x05\x12\t\n" + + "\x04TEMP\x10\xb9\x05\x12\r\n" + + "\bTEMPLATE\x10\xba\x05\x12\x0e\n" + + "\tTEMPORARY\x10\xbb\x05\x12\v\n" + + "\x06TEXT_P\x10\xbc\x05\x12\t\n" + + "\x04THEN\x10\xbd\x05\x12\t\n" + + "\x04TIES\x10\xbe\x05\x12\t\n" + + "\x04TIME\x10\xbf\x05\x12\x0e\n" + + "\tTIMESTAMP\x10\xc0\x05\x12\a\n" + + "\x02TO\x10\xc1\x05\x12\r\n" + + "\bTRAILING\x10\xc2\x05\x12\x10\n" + + "\vTRANSACTION\x10\xc3\x05\x12\x0e\n" + + "\tTRANSFORM\x10\xc4\x05\x12\n" + + "\n" + + "\x05TREAT\x10\xc5\x05\x12\f\n" + + "\aTRIGGER\x10\xc6\x05\x12\t\n" + + "\x04TRIM\x10\xc7\x05\x12\v\n" + + "\x06TRUE_P\x10\xc8\x05\x12\r\n" + + "\bTRUNCATE\x10\xc9\x05\x12\f\n" + + "\aTRUSTED\x10\xca\x05\x12\v\n" + + "\x06TYPE_P\x10\xcb\x05\x12\f\n" + + "\aTYPES_P\x10\xcc\x05\x12\f\n" + + "\aUESCAPE\x10\xcd\x05\x12\x0e\n" + + "\tUNBOUNDED\x10\xce\x05\x12\x12\n" + + "\rUNCONDITIONAL\x10\xcf\x05\x12\x10\n" + + "\vUNCOMMITTED\x10\xd0\x05\x12\x10\n" + + "\vUNENCRYPTED\x10\xd1\x05\x12\n" + + "\n" + + "\x05UNION\x10\xd2\x05\x12\v\n" + + "\x06UNIQUE\x10\xd3\x05\x12\f\n" + + "\aUNKNOWN\x10\xd4\x05\x12\r\n" + + "\bUNLISTEN\x10\xd5\x05\x12\r\n" + + "\bUNLOGGED\x10\xd6\x05\x12\n" + + "\n" + + "\x05UNTIL\x10\xd7\x05\x12\v\n" + + "\x06UPDATE\x10\xd8\x05\x12\t\n" + + "\x04USER\x10\xd9\x05\x12\n" + + "\n" + + "\x05USING\x10\xda\x05\x12\v\n" + + "\x06VACUUM\x10\xdb\x05\x12\n" + + "\n" + + "\x05VALID\x10\xdc\x05\x12\r\n" + + "\bVALIDATE\x10\xdd\x05\x12\x0e\n" + + "\tVALIDATOR\x10\xde\x05\x12\f\n" + + "\aVALUE_P\x10\xdf\x05\x12\v\n" + + "\x06VALUES\x10\xe0\x05\x12\f\n" + + "\aVARCHAR\x10\xe1\x05\x12\r\n" + + "\bVARIADIC\x10\xe2\x05\x12\f\n" + + "\aVARYING\x10\xe3\x05\x12\f\n" + + "\aVERBOSE\x10\xe4\x05\x12\x0e\n" + + "\tVERSION_P\x10\xe5\x05\x12\t\n" + + "\x04VIEW\x10\xe6\x05\x12\n" + + "\n" + + "\x05VIEWS\x10\xe7\x05\x12\f\n" + + "\aVIRTUAL\x10\xe8\x05\x12\r\n" + + "\bVOLATILE\x10\xe9\x05\x12\t\n" + + "\x04WHEN\x10\xea\x05\x12\n" + + "\n" + + "\x05WHERE\x10\xeb\x05\x12\x11\n" + + "\fWHITESPACE_P\x10\xec\x05\x12\v\n" + + "\x06WINDOW\x10\xed\x05\x12\t\n" + + "\x04WITH\x10\xee\x05\x12\v\n" + + "\x06WITHIN\x10\xef\x05\x12\f\n" + + "\aWITHOUT\x10\xf0\x05\x12\t\n" + + "\x04WORK\x10\xf1\x05\x12\f\n" + + "\aWRAPPER\x10\xf2\x05\x12\n" + + "\n" + + "\x05WRITE\x10\xf3\x05\x12\n" + + "\n" + + "\x05XML_P\x10\xf4\x05\x12\x12\n" + + "\rXMLATTRIBUTES\x10\xf5\x05\x12\x0e\n" + + "\tXMLCONCAT\x10\xf6\x05\x12\x0f\n" + + "\n" + + "XMLELEMENT\x10\xf7\x05\x12\x0e\n" + + "\tXMLEXISTS\x10\xf8\x05\x12\x0e\n" + + "\tXMLFOREST\x10\xf9\x05\x12\x12\n" + + "\rXMLNAMESPACES\x10\xfa\x05\x12\r\n" + + "\bXMLPARSE\x10\xfb\x05\x12\n" + + "\n" + + "\x05XMLPI\x10\xfc\x05\x12\f\n" + + "\aXMLROOT\x10\xfd\x05\x12\x11\n" + + "\fXMLSERIALIZE\x10\xfe\x05\x12\r\n" + + "\bXMLTABLE\x10\xff\x05\x12\v\n" + + "\x06YEAR_P\x10\x80\x06\x12\n" + + "\n" + + "\x05YES_P\x10\x81\x06\x12\t\n" + + "\x04ZONE\x10\x82\x06\x12\x0e\n" + + "\tFORMAT_LA\x10\x83\x06\x12\v\n" + + "\x06NOT_LA\x10\x84\x06\x12\r\n" + + "\bNULLS_LA\x10\x85\x06\x12\f\n" + + "\aWITH_LA\x10\x86\x06\x12\x0f\n" + + "\n" + + "WITHOUT_LA\x10\x87\x06\x12\x13\n" + + "\x0eMODE_TYPE_NAME\x10\x88\x06\x12\x16\n" + + "\x11MODE_PLPGSQL_EXPR\x10\x89\x06\x12\x19\n" + + "\x14MODE_PLPGSQL_ASSIGN1\x10\x8a\x06\x12\x19\n" + + "\x14MODE_PLPGSQL_ASSIGN2\x10\x8b\x06\x12\x19\n" + + "\x14MODE_PLPGSQL_ASSIGN3\x10\x8c\x06\x12\v\n" + + "\x06UMINUS\x10\x8d\x06b\x06proto3" + +var ( + file_pg_query_proto_rawDescOnce sync.Once + file_pg_query_proto_rawDescData []byte +) + +func file_pg_query_proto_rawDescGZIP() []byte { + file_pg_query_proto_rawDescOnce.Do(func() { + file_pg_query_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_pg_query_proto_rawDesc), len(file_pg_query_proto_rawDesc))) + }) + return file_pg_query_proto_rawDescData +} + +var file_pg_query_proto_enumTypes = make([]protoimpl.EnumInfo, 74) +var file_pg_query_proto_msgTypes = make([]protoimpl.MessageInfo, 280) +var file_pg_query_proto_goTypes = []any{ + (QuerySource)(0), // 0: pg_query.QuerySource + (SortByDir)(0), // 1: pg_query.SortByDir + (SortByNulls)(0), // 2: pg_query.SortByNulls + (SetQuantifier)(0), // 3: pg_query.SetQuantifier + (A_Expr_Kind)(0), // 4: pg_query.A_Expr_Kind + (RoleSpecType)(0), // 5: pg_query.RoleSpecType + (TableLikeOption)(0), // 6: pg_query.TableLikeOption + (DefElemAction)(0), // 7: pg_query.DefElemAction + (PartitionStrategy)(0), // 8: pg_query.PartitionStrategy + (PartitionRangeDatumKind)(0), // 9: pg_query.PartitionRangeDatumKind + (RTEKind)(0), // 10: pg_query.RTEKind + (WCOKind)(0), // 11: pg_query.WCOKind + (GroupingSetKind)(0), // 12: pg_query.GroupingSetKind + (CTEMaterialize)(0), // 13: pg_query.CTEMaterialize + (ReturningOptionKind)(0), // 14: pg_query.ReturningOptionKind + (JsonQuotes)(0), // 15: pg_query.JsonQuotes + (JsonTableColumnType)(0), // 16: pg_query.JsonTableColumnType + (SetOperation)(0), // 17: pg_query.SetOperation + (ObjectType)(0), // 18: pg_query.ObjectType + (DropBehavior)(0), // 19: pg_query.DropBehavior + (AlterTableType)(0), // 20: pg_query.AlterTableType + (GrantTargetType)(0), // 21: pg_query.GrantTargetType + (VariableSetKind)(0), // 22: pg_query.VariableSetKind + (ConstrType)(0), // 23: pg_query.ConstrType + (ImportForeignSchemaType)(0), // 24: pg_query.ImportForeignSchemaType + (RoleStmtType)(0), // 25: pg_query.RoleStmtType + (FetchDirection)(0), // 26: pg_query.FetchDirection + (FunctionParameterMode)(0), // 27: pg_query.FunctionParameterMode + (TransactionStmtKind)(0), // 28: pg_query.TransactionStmtKind + (ViewCheckOption)(0), // 29: pg_query.ViewCheckOption + (DiscardMode)(0), // 30: pg_query.DiscardMode + (ReindexObjectType)(0), // 31: pg_query.ReindexObjectType + (AlterTSConfigType)(0), // 32: pg_query.AlterTSConfigType + (PublicationObjSpecType)(0), // 33: pg_query.PublicationObjSpecType + (AlterPublicationAction)(0), // 34: pg_query.AlterPublicationAction + (AlterSubscriptionType)(0), // 35: pg_query.AlterSubscriptionType + (OverridingKind)(0), // 36: pg_query.OverridingKind + (OnCommitAction)(0), // 37: pg_query.OnCommitAction + (TableFuncType)(0), // 38: pg_query.TableFuncType + (VarReturningType)(0), // 39: pg_query.VarReturningType + (ParamKind)(0), // 40: pg_query.ParamKind + (CoercionContext)(0), // 41: pg_query.CoercionContext + (CoercionForm)(0), // 42: pg_query.CoercionForm + (BoolExprType)(0), // 43: pg_query.BoolExprType + (SubLinkType)(0), // 44: pg_query.SubLinkType + (MinMaxOp)(0), // 45: pg_query.MinMaxOp + (SQLValueFunctionOp)(0), // 46: pg_query.SQLValueFunctionOp + (XmlExprOp)(0), // 47: pg_query.XmlExprOp + (XmlOptionType)(0), // 48: pg_query.XmlOptionType + (JsonEncoding)(0), // 49: pg_query.JsonEncoding + (JsonFormatType)(0), // 50: pg_query.JsonFormatType + (JsonConstructorType)(0), // 51: pg_query.JsonConstructorType + (JsonValueType)(0), // 52: pg_query.JsonValueType + (JsonWrapper)(0), // 53: pg_query.JsonWrapper + (JsonBehaviorType)(0), // 54: pg_query.JsonBehaviorType + (JsonExprOp)(0), // 55: pg_query.JsonExprOp + (NullTestType)(0), // 56: pg_query.NullTestType + (BoolTestType)(0), // 57: pg_query.BoolTestType + (MergeMatchKind)(0), // 58: pg_query.MergeMatchKind + (CmdType)(0), // 59: pg_query.CmdType + (JoinType)(0), // 60: pg_query.JoinType + (AggStrategy)(0), // 61: pg_query.AggStrategy + (AggSplit)(0), // 62: pg_query.AggSplit + (SetOpCmd)(0), // 63: pg_query.SetOpCmd + (SetOpStrategy)(0), // 64: pg_query.SetOpStrategy + (OnConflictAction)(0), // 65: pg_query.OnConflictAction + (LimitOption)(0), // 66: pg_query.LimitOption + (LockClauseStrength)(0), // 67: pg_query.LockClauseStrength + (LockWaitPolicy)(0), // 68: pg_query.LockWaitPolicy + (LockTupleMode)(0), // 69: pg_query.LockTupleMode + (CompareType)(0), // 70: pg_query.CompareType + (KeywordKind)(0), // 71: pg_query.KeywordKind + (Token)(0), // 72: pg_query.Token + (SummaryResult_Context)(0), // 73: pg_query.SummaryResult.Context + (*ParseResult)(nil), // 74: pg_query.ParseResult + (*ScanResult)(nil), // 75: pg_query.ScanResult + (*Node)(nil), // 76: pg_query.Node + (*Integer)(nil), // 77: pg_query.Integer + (*Float)(nil), // 78: pg_query.Float + (*Boolean)(nil), // 79: pg_query.Boolean + (*String)(nil), // 80: pg_query.String + (*BitString)(nil), // 81: pg_query.BitString + (*List)(nil), // 82: pg_query.List + (*OidList)(nil), // 83: pg_query.OidList + (*IntList)(nil), // 84: pg_query.IntList + (*A_Const)(nil), // 85: pg_query.A_Const + (*Alias)(nil), // 86: pg_query.Alias + (*RangeVar)(nil), // 87: pg_query.RangeVar + (*TableFunc)(nil), // 88: pg_query.TableFunc + (*IntoClause)(nil), // 89: pg_query.IntoClause + (*Var)(nil), // 90: pg_query.Var + (*Param)(nil), // 91: pg_query.Param + (*Aggref)(nil), // 92: pg_query.Aggref + (*GroupingFunc)(nil), // 93: pg_query.GroupingFunc + (*WindowFunc)(nil), // 94: pg_query.WindowFunc + (*WindowFuncRunCondition)(nil), // 95: pg_query.WindowFuncRunCondition + (*MergeSupportFunc)(nil), // 96: pg_query.MergeSupportFunc + (*SubscriptingRef)(nil), // 97: pg_query.SubscriptingRef + (*FuncExpr)(nil), // 98: pg_query.FuncExpr + (*NamedArgExpr)(nil), // 99: pg_query.NamedArgExpr + (*OpExpr)(nil), // 100: pg_query.OpExpr + (*DistinctExpr)(nil), // 101: pg_query.DistinctExpr + (*NullIfExpr)(nil), // 102: pg_query.NullIfExpr + (*ScalarArrayOpExpr)(nil), // 103: pg_query.ScalarArrayOpExpr + (*BoolExpr)(nil), // 104: pg_query.BoolExpr + (*SubLink)(nil), // 105: pg_query.SubLink + (*SubPlan)(nil), // 106: pg_query.SubPlan + (*AlternativeSubPlan)(nil), // 107: pg_query.AlternativeSubPlan + (*FieldSelect)(nil), // 108: pg_query.FieldSelect + (*FieldStore)(nil), // 109: pg_query.FieldStore + (*RelabelType)(nil), // 110: pg_query.RelabelType + (*CoerceViaIO)(nil), // 111: pg_query.CoerceViaIO + (*ArrayCoerceExpr)(nil), // 112: pg_query.ArrayCoerceExpr + (*ConvertRowtypeExpr)(nil), // 113: pg_query.ConvertRowtypeExpr + (*CollateExpr)(nil), // 114: pg_query.CollateExpr + (*CaseExpr)(nil), // 115: pg_query.CaseExpr + (*CaseWhen)(nil), // 116: pg_query.CaseWhen + (*CaseTestExpr)(nil), // 117: pg_query.CaseTestExpr + (*ArrayExpr)(nil), // 118: pg_query.ArrayExpr + (*RowExpr)(nil), // 119: pg_query.RowExpr + (*RowCompareExpr)(nil), // 120: pg_query.RowCompareExpr + (*CoalesceExpr)(nil), // 121: pg_query.CoalesceExpr + (*MinMaxExpr)(nil), // 122: pg_query.MinMaxExpr + (*SQLValueFunction)(nil), // 123: pg_query.SQLValueFunction + (*XmlExpr)(nil), // 124: pg_query.XmlExpr + (*JsonFormat)(nil), // 125: pg_query.JsonFormat + (*JsonReturning)(nil), // 126: pg_query.JsonReturning + (*JsonValueExpr)(nil), // 127: pg_query.JsonValueExpr + (*JsonConstructorExpr)(nil), // 128: pg_query.JsonConstructorExpr + (*JsonIsPredicate)(nil), // 129: pg_query.JsonIsPredicate + (*JsonBehavior)(nil), // 130: pg_query.JsonBehavior + (*JsonExpr)(nil), // 131: pg_query.JsonExpr + (*JsonTablePath)(nil), // 132: pg_query.JsonTablePath + (*JsonTablePathScan)(nil), // 133: pg_query.JsonTablePathScan + (*JsonTableSiblingJoin)(nil), // 134: pg_query.JsonTableSiblingJoin + (*NullTest)(nil), // 135: pg_query.NullTest + (*BooleanTest)(nil), // 136: pg_query.BooleanTest + (*MergeAction)(nil), // 137: pg_query.MergeAction + (*CoerceToDomain)(nil), // 138: pg_query.CoerceToDomain + (*CoerceToDomainValue)(nil), // 139: pg_query.CoerceToDomainValue + (*SetToDefault)(nil), // 140: pg_query.SetToDefault + (*CurrentOfExpr)(nil), // 141: pg_query.CurrentOfExpr + (*NextValueExpr)(nil), // 142: pg_query.NextValueExpr + (*InferenceElem)(nil), // 143: pg_query.InferenceElem + (*ReturningExpr)(nil), // 144: pg_query.ReturningExpr + (*TargetEntry)(nil), // 145: pg_query.TargetEntry + (*RangeTblRef)(nil), // 146: pg_query.RangeTblRef + (*JoinExpr)(nil), // 147: pg_query.JoinExpr + (*FromExpr)(nil), // 148: pg_query.FromExpr + (*OnConflictExpr)(nil), // 149: pg_query.OnConflictExpr + (*Query)(nil), // 150: pg_query.Query + (*TypeName)(nil), // 151: pg_query.TypeName + (*ColumnRef)(nil), // 152: pg_query.ColumnRef + (*ParamRef)(nil), // 153: pg_query.ParamRef + (*A_Expr)(nil), // 154: pg_query.A_Expr + (*TypeCast)(nil), // 155: pg_query.TypeCast + (*CollateClause)(nil), // 156: pg_query.CollateClause + (*RoleSpec)(nil), // 157: pg_query.RoleSpec + (*FuncCall)(nil), // 158: pg_query.FuncCall + (*A_Star)(nil), // 159: pg_query.A_Star + (*A_Indices)(nil), // 160: pg_query.A_Indices + (*A_Indirection)(nil), // 161: pg_query.A_Indirection + (*A_ArrayExpr)(nil), // 162: pg_query.A_ArrayExpr + (*ResTarget)(nil), // 163: pg_query.ResTarget + (*MultiAssignRef)(nil), // 164: pg_query.MultiAssignRef + (*SortBy)(nil), // 165: pg_query.SortBy + (*WindowDef)(nil), // 166: pg_query.WindowDef + (*RangeSubselect)(nil), // 167: pg_query.RangeSubselect + (*RangeFunction)(nil), // 168: pg_query.RangeFunction + (*RangeTableFunc)(nil), // 169: pg_query.RangeTableFunc + (*RangeTableFuncCol)(nil), // 170: pg_query.RangeTableFuncCol + (*RangeTableSample)(nil), // 171: pg_query.RangeTableSample + (*ColumnDef)(nil), // 172: pg_query.ColumnDef + (*TableLikeClause)(nil), // 173: pg_query.TableLikeClause + (*IndexElem)(nil), // 174: pg_query.IndexElem + (*DefElem)(nil), // 175: pg_query.DefElem + (*LockingClause)(nil), // 176: pg_query.LockingClause + (*XmlSerialize)(nil), // 177: pg_query.XmlSerialize + (*PartitionElem)(nil), // 178: pg_query.PartitionElem + (*PartitionSpec)(nil), // 179: pg_query.PartitionSpec + (*PartitionBoundSpec)(nil), // 180: pg_query.PartitionBoundSpec + (*PartitionRangeDatum)(nil), // 181: pg_query.PartitionRangeDatum + (*PartitionCmd)(nil), // 182: pg_query.PartitionCmd + (*RangeTblEntry)(nil), // 183: pg_query.RangeTblEntry + (*RTEPermissionInfo)(nil), // 184: pg_query.RTEPermissionInfo + (*RangeTblFunction)(nil), // 185: pg_query.RangeTblFunction + (*TableSampleClause)(nil), // 186: pg_query.TableSampleClause + (*WithCheckOption)(nil), // 187: pg_query.WithCheckOption + (*SortGroupClause)(nil), // 188: pg_query.SortGroupClause + (*GroupingSet)(nil), // 189: pg_query.GroupingSet + (*WindowClause)(nil), // 190: pg_query.WindowClause + (*RowMarkClause)(nil), // 191: pg_query.RowMarkClause + (*WithClause)(nil), // 192: pg_query.WithClause + (*InferClause)(nil), // 193: pg_query.InferClause + (*OnConflictClause)(nil), // 194: pg_query.OnConflictClause + (*CTESearchClause)(nil), // 195: pg_query.CTESearchClause + (*CTECycleClause)(nil), // 196: pg_query.CTECycleClause + (*CommonTableExpr)(nil), // 197: pg_query.CommonTableExpr + (*MergeWhenClause)(nil), // 198: pg_query.MergeWhenClause + (*ReturningOption)(nil), // 199: pg_query.ReturningOption + (*ReturningClause)(nil), // 200: pg_query.ReturningClause + (*TriggerTransition)(nil), // 201: pg_query.TriggerTransition + (*JsonOutput)(nil), // 202: pg_query.JsonOutput + (*JsonArgument)(nil), // 203: pg_query.JsonArgument + (*JsonFuncExpr)(nil), // 204: pg_query.JsonFuncExpr + (*JsonTablePathSpec)(nil), // 205: pg_query.JsonTablePathSpec + (*JsonTable)(nil), // 206: pg_query.JsonTable + (*JsonTableColumn)(nil), // 207: pg_query.JsonTableColumn + (*JsonKeyValue)(nil), // 208: pg_query.JsonKeyValue + (*JsonParseExpr)(nil), // 209: pg_query.JsonParseExpr + (*JsonScalarExpr)(nil), // 210: pg_query.JsonScalarExpr + (*JsonSerializeExpr)(nil), // 211: pg_query.JsonSerializeExpr + (*JsonObjectConstructor)(nil), // 212: pg_query.JsonObjectConstructor + (*JsonArrayConstructor)(nil), // 213: pg_query.JsonArrayConstructor + (*JsonArrayQueryConstructor)(nil), // 214: pg_query.JsonArrayQueryConstructor + (*JsonAggConstructor)(nil), // 215: pg_query.JsonAggConstructor + (*JsonObjectAgg)(nil), // 216: pg_query.JsonObjectAgg + (*JsonArrayAgg)(nil), // 217: pg_query.JsonArrayAgg + (*RawStmt)(nil), // 218: pg_query.RawStmt + (*InsertStmt)(nil), // 219: pg_query.InsertStmt + (*DeleteStmt)(nil), // 220: pg_query.DeleteStmt + (*UpdateStmt)(nil), // 221: pg_query.UpdateStmt + (*MergeStmt)(nil), // 222: pg_query.MergeStmt + (*SelectStmt)(nil), // 223: pg_query.SelectStmt + (*SetOperationStmt)(nil), // 224: pg_query.SetOperationStmt + (*ReturnStmt)(nil), // 225: pg_query.ReturnStmt + (*PLAssignStmt)(nil), // 226: pg_query.PLAssignStmt + (*CreateSchemaStmt)(nil), // 227: pg_query.CreateSchemaStmt + (*AlterTableStmt)(nil), // 228: pg_query.AlterTableStmt + (*AlterTableCmd)(nil), // 229: pg_query.AlterTableCmd + (*ATAlterConstraint)(nil), // 230: pg_query.ATAlterConstraint + (*ReplicaIdentityStmt)(nil), // 231: pg_query.ReplicaIdentityStmt + (*AlterCollationStmt)(nil), // 232: pg_query.AlterCollationStmt + (*AlterDomainStmt)(nil), // 233: pg_query.AlterDomainStmt + (*GrantStmt)(nil), // 234: pg_query.GrantStmt + (*ObjectWithArgs)(nil), // 235: pg_query.ObjectWithArgs + (*AccessPriv)(nil), // 236: pg_query.AccessPriv + (*GrantRoleStmt)(nil), // 237: pg_query.GrantRoleStmt + (*AlterDefaultPrivilegesStmt)(nil), // 238: pg_query.AlterDefaultPrivilegesStmt + (*CopyStmt)(nil), // 239: pg_query.CopyStmt + (*VariableSetStmt)(nil), // 240: pg_query.VariableSetStmt + (*VariableShowStmt)(nil), // 241: pg_query.VariableShowStmt + (*CreateStmt)(nil), // 242: pg_query.CreateStmt + (*Constraint)(nil), // 243: pg_query.Constraint + (*CreateTableSpaceStmt)(nil), // 244: pg_query.CreateTableSpaceStmt + (*DropTableSpaceStmt)(nil), // 245: pg_query.DropTableSpaceStmt + (*AlterTableSpaceOptionsStmt)(nil), // 246: pg_query.AlterTableSpaceOptionsStmt + (*AlterTableMoveAllStmt)(nil), // 247: pg_query.AlterTableMoveAllStmt + (*CreateExtensionStmt)(nil), // 248: pg_query.CreateExtensionStmt + (*AlterExtensionStmt)(nil), // 249: pg_query.AlterExtensionStmt + (*AlterExtensionContentsStmt)(nil), // 250: pg_query.AlterExtensionContentsStmt + (*CreateFdwStmt)(nil), // 251: pg_query.CreateFdwStmt + (*AlterFdwStmt)(nil), // 252: pg_query.AlterFdwStmt + (*CreateForeignServerStmt)(nil), // 253: pg_query.CreateForeignServerStmt + (*AlterForeignServerStmt)(nil), // 254: pg_query.AlterForeignServerStmt + (*CreateForeignTableStmt)(nil), // 255: pg_query.CreateForeignTableStmt + (*CreateUserMappingStmt)(nil), // 256: pg_query.CreateUserMappingStmt + (*AlterUserMappingStmt)(nil), // 257: pg_query.AlterUserMappingStmt + (*DropUserMappingStmt)(nil), // 258: pg_query.DropUserMappingStmt + (*ImportForeignSchemaStmt)(nil), // 259: pg_query.ImportForeignSchemaStmt + (*CreatePolicyStmt)(nil), // 260: pg_query.CreatePolicyStmt + (*AlterPolicyStmt)(nil), // 261: pg_query.AlterPolicyStmt + (*CreateAmStmt)(nil), // 262: pg_query.CreateAmStmt + (*CreateTrigStmt)(nil), // 263: pg_query.CreateTrigStmt + (*CreateEventTrigStmt)(nil), // 264: pg_query.CreateEventTrigStmt + (*AlterEventTrigStmt)(nil), // 265: pg_query.AlterEventTrigStmt + (*CreatePLangStmt)(nil), // 266: pg_query.CreatePLangStmt + (*CreateRoleStmt)(nil), // 267: pg_query.CreateRoleStmt + (*AlterRoleStmt)(nil), // 268: pg_query.AlterRoleStmt + (*AlterRoleSetStmt)(nil), // 269: pg_query.AlterRoleSetStmt + (*DropRoleStmt)(nil), // 270: pg_query.DropRoleStmt + (*CreateSeqStmt)(nil), // 271: pg_query.CreateSeqStmt + (*AlterSeqStmt)(nil), // 272: pg_query.AlterSeqStmt + (*DefineStmt)(nil), // 273: pg_query.DefineStmt + (*CreateDomainStmt)(nil), // 274: pg_query.CreateDomainStmt + (*CreateOpClassStmt)(nil), // 275: pg_query.CreateOpClassStmt + (*CreateOpClassItem)(nil), // 276: pg_query.CreateOpClassItem + (*CreateOpFamilyStmt)(nil), // 277: pg_query.CreateOpFamilyStmt + (*AlterOpFamilyStmt)(nil), // 278: pg_query.AlterOpFamilyStmt + (*DropStmt)(nil), // 279: pg_query.DropStmt + (*TruncateStmt)(nil), // 280: pg_query.TruncateStmt + (*CommentStmt)(nil), // 281: pg_query.CommentStmt + (*SecLabelStmt)(nil), // 282: pg_query.SecLabelStmt + (*DeclareCursorStmt)(nil), // 283: pg_query.DeclareCursorStmt + (*ClosePortalStmt)(nil), // 284: pg_query.ClosePortalStmt + (*FetchStmt)(nil), // 285: pg_query.FetchStmt + (*IndexStmt)(nil), // 286: pg_query.IndexStmt + (*CreateStatsStmt)(nil), // 287: pg_query.CreateStatsStmt + (*StatsElem)(nil), // 288: pg_query.StatsElem + (*AlterStatsStmt)(nil), // 289: pg_query.AlterStatsStmt + (*CreateFunctionStmt)(nil), // 290: pg_query.CreateFunctionStmt + (*FunctionParameter)(nil), // 291: pg_query.FunctionParameter + (*AlterFunctionStmt)(nil), // 292: pg_query.AlterFunctionStmt + (*DoStmt)(nil), // 293: pg_query.DoStmt + (*InlineCodeBlock)(nil), // 294: pg_query.InlineCodeBlock + (*CallStmt)(nil), // 295: pg_query.CallStmt + (*CallContext)(nil), // 296: pg_query.CallContext + (*RenameStmt)(nil), // 297: pg_query.RenameStmt + (*AlterObjectDependsStmt)(nil), // 298: pg_query.AlterObjectDependsStmt + (*AlterObjectSchemaStmt)(nil), // 299: pg_query.AlterObjectSchemaStmt + (*AlterOwnerStmt)(nil), // 300: pg_query.AlterOwnerStmt + (*AlterOperatorStmt)(nil), // 301: pg_query.AlterOperatorStmt + (*AlterTypeStmt)(nil), // 302: pg_query.AlterTypeStmt + (*RuleStmt)(nil), // 303: pg_query.RuleStmt + (*NotifyStmt)(nil), // 304: pg_query.NotifyStmt + (*ListenStmt)(nil), // 305: pg_query.ListenStmt + (*UnlistenStmt)(nil), // 306: pg_query.UnlistenStmt + (*TransactionStmt)(nil), // 307: pg_query.TransactionStmt + (*CompositeTypeStmt)(nil), // 308: pg_query.CompositeTypeStmt + (*CreateEnumStmt)(nil), // 309: pg_query.CreateEnumStmt + (*CreateRangeStmt)(nil), // 310: pg_query.CreateRangeStmt + (*AlterEnumStmt)(nil), // 311: pg_query.AlterEnumStmt + (*ViewStmt)(nil), // 312: pg_query.ViewStmt + (*LoadStmt)(nil), // 313: pg_query.LoadStmt + (*CreatedbStmt)(nil), // 314: pg_query.CreatedbStmt + (*AlterDatabaseStmt)(nil), // 315: pg_query.AlterDatabaseStmt + (*AlterDatabaseRefreshCollStmt)(nil), // 316: pg_query.AlterDatabaseRefreshCollStmt + (*AlterDatabaseSetStmt)(nil), // 317: pg_query.AlterDatabaseSetStmt + (*DropdbStmt)(nil), // 318: pg_query.DropdbStmt + (*AlterSystemStmt)(nil), // 319: pg_query.AlterSystemStmt + (*ClusterStmt)(nil), // 320: pg_query.ClusterStmt + (*VacuumStmt)(nil), // 321: pg_query.VacuumStmt + (*VacuumRelation)(nil), // 322: pg_query.VacuumRelation + (*ExplainStmt)(nil), // 323: pg_query.ExplainStmt + (*CreateTableAsStmt)(nil), // 324: pg_query.CreateTableAsStmt + (*RefreshMatViewStmt)(nil), // 325: pg_query.RefreshMatViewStmt + (*CheckPointStmt)(nil), // 326: pg_query.CheckPointStmt + (*DiscardStmt)(nil), // 327: pg_query.DiscardStmt + (*LockStmt)(nil), // 328: pg_query.LockStmt + (*ConstraintsSetStmt)(nil), // 329: pg_query.ConstraintsSetStmt + (*ReindexStmt)(nil), // 330: pg_query.ReindexStmt + (*CreateConversionStmt)(nil), // 331: pg_query.CreateConversionStmt + (*CreateCastStmt)(nil), // 332: pg_query.CreateCastStmt + (*CreateTransformStmt)(nil), // 333: pg_query.CreateTransformStmt + (*PrepareStmt)(nil), // 334: pg_query.PrepareStmt + (*ExecuteStmt)(nil), // 335: pg_query.ExecuteStmt + (*DeallocateStmt)(nil), // 336: pg_query.DeallocateStmt + (*DropOwnedStmt)(nil), // 337: pg_query.DropOwnedStmt + (*ReassignOwnedStmt)(nil), // 338: pg_query.ReassignOwnedStmt + (*AlterTSDictionaryStmt)(nil), // 339: pg_query.AlterTSDictionaryStmt + (*AlterTSConfigurationStmt)(nil), // 340: pg_query.AlterTSConfigurationStmt + (*PublicationTable)(nil), // 341: pg_query.PublicationTable + (*PublicationObjSpec)(nil), // 342: pg_query.PublicationObjSpec + (*CreatePublicationStmt)(nil), // 343: pg_query.CreatePublicationStmt + (*AlterPublicationStmt)(nil), // 344: pg_query.AlterPublicationStmt + (*CreateSubscriptionStmt)(nil), // 345: pg_query.CreateSubscriptionStmt + (*AlterSubscriptionStmt)(nil), // 346: pg_query.AlterSubscriptionStmt + (*DropSubscriptionStmt)(nil), // 347: pg_query.DropSubscriptionStmt + (*ScanToken)(nil), // 348: pg_query.ScanToken + (*SummaryResult)(nil), // 349: pg_query.SummaryResult + (*SummaryResult_Table)(nil), // 350: pg_query.SummaryResult.Table + nil, // 351: pg_query.SummaryResult.AliasesEntry + (*SummaryResult_Function)(nil), // 352: pg_query.SummaryResult.Function + (*SummaryResult_FilterColumn)(nil), // 353: pg_query.SummaryResult.FilterColumn +} +var file_pg_query_proto_depIdxs = []int32{ + 218, // 0: pg_query.ParseResult.stmts:type_name -> pg_query.RawStmt + 348, // 1: pg_query.ScanResult.tokens:type_name -> pg_query.ScanToken + 86, // 2: pg_query.Node.alias:type_name -> pg_query.Alias + 87, // 3: pg_query.Node.range_var:type_name -> pg_query.RangeVar + 88, // 4: pg_query.Node.table_func:type_name -> pg_query.TableFunc + 89, // 5: pg_query.Node.into_clause:type_name -> pg_query.IntoClause + 90, // 6: pg_query.Node.var:type_name -> pg_query.Var + 91, // 7: pg_query.Node.param:type_name -> pg_query.Param + 92, // 8: pg_query.Node.aggref:type_name -> pg_query.Aggref + 93, // 9: pg_query.Node.grouping_func:type_name -> pg_query.GroupingFunc + 94, // 10: pg_query.Node.window_func:type_name -> pg_query.WindowFunc + 95, // 11: pg_query.Node.window_func_run_condition:type_name -> pg_query.WindowFuncRunCondition + 96, // 12: pg_query.Node.merge_support_func:type_name -> pg_query.MergeSupportFunc + 97, // 13: pg_query.Node.subscripting_ref:type_name -> pg_query.SubscriptingRef + 98, // 14: pg_query.Node.func_expr:type_name -> pg_query.FuncExpr + 99, // 15: pg_query.Node.named_arg_expr:type_name -> pg_query.NamedArgExpr + 100, // 16: pg_query.Node.op_expr:type_name -> pg_query.OpExpr + 101, // 17: pg_query.Node.distinct_expr:type_name -> pg_query.DistinctExpr + 102, // 18: pg_query.Node.null_if_expr:type_name -> pg_query.NullIfExpr + 103, // 19: pg_query.Node.scalar_array_op_expr:type_name -> pg_query.ScalarArrayOpExpr + 104, // 20: pg_query.Node.bool_expr:type_name -> pg_query.BoolExpr + 105, // 21: pg_query.Node.sub_link:type_name -> pg_query.SubLink + 106, // 22: pg_query.Node.sub_plan:type_name -> pg_query.SubPlan + 107, // 23: pg_query.Node.alternative_sub_plan:type_name -> pg_query.AlternativeSubPlan + 108, // 24: pg_query.Node.field_select:type_name -> pg_query.FieldSelect + 109, // 25: pg_query.Node.field_store:type_name -> pg_query.FieldStore + 110, // 26: pg_query.Node.relabel_type:type_name -> pg_query.RelabelType + 111, // 27: pg_query.Node.coerce_via_io:type_name -> pg_query.CoerceViaIO + 112, // 28: pg_query.Node.array_coerce_expr:type_name -> pg_query.ArrayCoerceExpr + 113, // 29: pg_query.Node.convert_rowtype_expr:type_name -> pg_query.ConvertRowtypeExpr + 114, // 30: pg_query.Node.collate_expr:type_name -> pg_query.CollateExpr + 115, // 31: pg_query.Node.case_expr:type_name -> pg_query.CaseExpr + 116, // 32: pg_query.Node.case_when:type_name -> pg_query.CaseWhen + 117, // 33: pg_query.Node.case_test_expr:type_name -> pg_query.CaseTestExpr + 118, // 34: pg_query.Node.array_expr:type_name -> pg_query.ArrayExpr + 119, // 35: pg_query.Node.row_expr:type_name -> pg_query.RowExpr + 120, // 36: pg_query.Node.row_compare_expr:type_name -> pg_query.RowCompareExpr + 121, // 37: pg_query.Node.coalesce_expr:type_name -> pg_query.CoalesceExpr + 122, // 38: pg_query.Node.min_max_expr:type_name -> pg_query.MinMaxExpr + 123, // 39: pg_query.Node.sqlvalue_function:type_name -> pg_query.SQLValueFunction + 124, // 40: pg_query.Node.xml_expr:type_name -> pg_query.XmlExpr + 125, // 41: pg_query.Node.json_format:type_name -> pg_query.JsonFormat + 126, // 42: pg_query.Node.json_returning:type_name -> pg_query.JsonReturning + 127, // 43: pg_query.Node.json_value_expr:type_name -> pg_query.JsonValueExpr + 128, // 44: pg_query.Node.json_constructor_expr:type_name -> pg_query.JsonConstructorExpr + 129, // 45: pg_query.Node.json_is_predicate:type_name -> pg_query.JsonIsPredicate + 130, // 46: pg_query.Node.json_behavior:type_name -> pg_query.JsonBehavior + 131, // 47: pg_query.Node.json_expr:type_name -> pg_query.JsonExpr + 132, // 48: pg_query.Node.json_table_path:type_name -> pg_query.JsonTablePath + 133, // 49: pg_query.Node.json_table_path_scan:type_name -> pg_query.JsonTablePathScan + 134, // 50: pg_query.Node.json_table_sibling_join:type_name -> pg_query.JsonTableSiblingJoin + 135, // 51: pg_query.Node.null_test:type_name -> pg_query.NullTest + 136, // 52: pg_query.Node.boolean_test:type_name -> pg_query.BooleanTest + 137, // 53: pg_query.Node.merge_action:type_name -> pg_query.MergeAction + 138, // 54: pg_query.Node.coerce_to_domain:type_name -> pg_query.CoerceToDomain + 139, // 55: pg_query.Node.coerce_to_domain_value:type_name -> pg_query.CoerceToDomainValue + 140, // 56: pg_query.Node.set_to_default:type_name -> pg_query.SetToDefault + 141, // 57: pg_query.Node.current_of_expr:type_name -> pg_query.CurrentOfExpr + 142, // 58: pg_query.Node.next_value_expr:type_name -> pg_query.NextValueExpr + 143, // 59: pg_query.Node.inference_elem:type_name -> pg_query.InferenceElem + 144, // 60: pg_query.Node.returning_expr:type_name -> pg_query.ReturningExpr + 145, // 61: pg_query.Node.target_entry:type_name -> pg_query.TargetEntry + 146, // 62: pg_query.Node.range_tbl_ref:type_name -> pg_query.RangeTblRef + 147, // 63: pg_query.Node.join_expr:type_name -> pg_query.JoinExpr + 148, // 64: pg_query.Node.from_expr:type_name -> pg_query.FromExpr + 149, // 65: pg_query.Node.on_conflict_expr:type_name -> pg_query.OnConflictExpr + 150, // 66: pg_query.Node.query:type_name -> pg_query.Query + 151, // 67: pg_query.Node.type_name:type_name -> pg_query.TypeName + 152, // 68: pg_query.Node.column_ref:type_name -> pg_query.ColumnRef + 153, // 69: pg_query.Node.param_ref:type_name -> pg_query.ParamRef + 154, // 70: pg_query.Node.a_expr:type_name -> pg_query.A_Expr + 155, // 71: pg_query.Node.type_cast:type_name -> pg_query.TypeCast + 156, // 72: pg_query.Node.collate_clause:type_name -> pg_query.CollateClause + 157, // 73: pg_query.Node.role_spec:type_name -> pg_query.RoleSpec + 158, // 74: pg_query.Node.func_call:type_name -> pg_query.FuncCall + 159, // 75: pg_query.Node.a_star:type_name -> pg_query.A_Star + 160, // 76: pg_query.Node.a_indices:type_name -> pg_query.A_Indices + 161, // 77: pg_query.Node.a_indirection:type_name -> pg_query.A_Indirection + 162, // 78: pg_query.Node.a_array_expr:type_name -> pg_query.A_ArrayExpr + 163, // 79: pg_query.Node.res_target:type_name -> pg_query.ResTarget + 164, // 80: pg_query.Node.multi_assign_ref:type_name -> pg_query.MultiAssignRef + 165, // 81: pg_query.Node.sort_by:type_name -> pg_query.SortBy + 166, // 82: pg_query.Node.window_def:type_name -> pg_query.WindowDef + 167, // 83: pg_query.Node.range_subselect:type_name -> pg_query.RangeSubselect + 168, // 84: pg_query.Node.range_function:type_name -> pg_query.RangeFunction + 169, // 85: pg_query.Node.range_table_func:type_name -> pg_query.RangeTableFunc + 170, // 86: pg_query.Node.range_table_func_col:type_name -> pg_query.RangeTableFuncCol + 171, // 87: pg_query.Node.range_table_sample:type_name -> pg_query.RangeTableSample + 172, // 88: pg_query.Node.column_def:type_name -> pg_query.ColumnDef + 173, // 89: pg_query.Node.table_like_clause:type_name -> pg_query.TableLikeClause + 174, // 90: pg_query.Node.index_elem:type_name -> pg_query.IndexElem + 175, // 91: pg_query.Node.def_elem:type_name -> pg_query.DefElem + 176, // 92: pg_query.Node.locking_clause:type_name -> pg_query.LockingClause + 177, // 93: pg_query.Node.xml_serialize:type_name -> pg_query.XmlSerialize + 178, // 94: pg_query.Node.partition_elem:type_name -> pg_query.PartitionElem + 179, // 95: pg_query.Node.partition_spec:type_name -> pg_query.PartitionSpec + 180, // 96: pg_query.Node.partition_bound_spec:type_name -> pg_query.PartitionBoundSpec + 181, // 97: pg_query.Node.partition_range_datum:type_name -> pg_query.PartitionRangeDatum + 182, // 98: pg_query.Node.partition_cmd:type_name -> pg_query.PartitionCmd + 183, // 99: pg_query.Node.range_tbl_entry:type_name -> pg_query.RangeTblEntry + 184, // 100: pg_query.Node.rtepermission_info:type_name -> pg_query.RTEPermissionInfo + 185, // 101: pg_query.Node.range_tbl_function:type_name -> pg_query.RangeTblFunction + 186, // 102: pg_query.Node.table_sample_clause:type_name -> pg_query.TableSampleClause + 187, // 103: pg_query.Node.with_check_option:type_name -> pg_query.WithCheckOption + 188, // 104: pg_query.Node.sort_group_clause:type_name -> pg_query.SortGroupClause + 189, // 105: pg_query.Node.grouping_set:type_name -> pg_query.GroupingSet + 190, // 106: pg_query.Node.window_clause:type_name -> pg_query.WindowClause + 191, // 107: pg_query.Node.row_mark_clause:type_name -> pg_query.RowMarkClause + 192, // 108: pg_query.Node.with_clause:type_name -> pg_query.WithClause + 193, // 109: pg_query.Node.infer_clause:type_name -> pg_query.InferClause + 194, // 110: pg_query.Node.on_conflict_clause:type_name -> pg_query.OnConflictClause + 195, // 111: pg_query.Node.ctesearch_clause:type_name -> pg_query.CTESearchClause + 196, // 112: pg_query.Node.ctecycle_clause:type_name -> pg_query.CTECycleClause + 197, // 113: pg_query.Node.common_table_expr:type_name -> pg_query.CommonTableExpr + 198, // 114: pg_query.Node.merge_when_clause:type_name -> pg_query.MergeWhenClause + 199, // 115: pg_query.Node.returning_option:type_name -> pg_query.ReturningOption + 200, // 116: pg_query.Node.returning_clause:type_name -> pg_query.ReturningClause + 201, // 117: pg_query.Node.trigger_transition:type_name -> pg_query.TriggerTransition + 202, // 118: pg_query.Node.json_output:type_name -> pg_query.JsonOutput + 203, // 119: pg_query.Node.json_argument:type_name -> pg_query.JsonArgument + 204, // 120: pg_query.Node.json_func_expr:type_name -> pg_query.JsonFuncExpr + 205, // 121: pg_query.Node.json_table_path_spec:type_name -> pg_query.JsonTablePathSpec + 206, // 122: pg_query.Node.json_table:type_name -> pg_query.JsonTable + 207, // 123: pg_query.Node.json_table_column:type_name -> pg_query.JsonTableColumn + 208, // 124: pg_query.Node.json_key_value:type_name -> pg_query.JsonKeyValue + 209, // 125: pg_query.Node.json_parse_expr:type_name -> pg_query.JsonParseExpr + 210, // 126: pg_query.Node.json_scalar_expr:type_name -> pg_query.JsonScalarExpr + 211, // 127: pg_query.Node.json_serialize_expr:type_name -> pg_query.JsonSerializeExpr + 212, // 128: pg_query.Node.json_object_constructor:type_name -> pg_query.JsonObjectConstructor + 213, // 129: pg_query.Node.json_array_constructor:type_name -> pg_query.JsonArrayConstructor + 214, // 130: pg_query.Node.json_array_query_constructor:type_name -> pg_query.JsonArrayQueryConstructor + 215, // 131: pg_query.Node.json_agg_constructor:type_name -> pg_query.JsonAggConstructor + 216, // 132: pg_query.Node.json_object_agg:type_name -> pg_query.JsonObjectAgg + 217, // 133: pg_query.Node.json_array_agg:type_name -> pg_query.JsonArrayAgg + 218, // 134: pg_query.Node.raw_stmt:type_name -> pg_query.RawStmt + 219, // 135: pg_query.Node.insert_stmt:type_name -> pg_query.InsertStmt + 220, // 136: pg_query.Node.delete_stmt:type_name -> pg_query.DeleteStmt + 221, // 137: pg_query.Node.update_stmt:type_name -> pg_query.UpdateStmt + 222, // 138: pg_query.Node.merge_stmt:type_name -> pg_query.MergeStmt + 223, // 139: pg_query.Node.select_stmt:type_name -> pg_query.SelectStmt + 224, // 140: pg_query.Node.set_operation_stmt:type_name -> pg_query.SetOperationStmt + 225, // 141: pg_query.Node.return_stmt:type_name -> pg_query.ReturnStmt + 226, // 142: pg_query.Node.plassign_stmt:type_name -> pg_query.PLAssignStmt + 227, // 143: pg_query.Node.create_schema_stmt:type_name -> pg_query.CreateSchemaStmt + 228, // 144: pg_query.Node.alter_table_stmt:type_name -> pg_query.AlterTableStmt + 229, // 145: pg_query.Node.alter_table_cmd:type_name -> pg_query.AlterTableCmd + 230, // 146: pg_query.Node.atalter_constraint:type_name -> pg_query.ATAlterConstraint + 231, // 147: pg_query.Node.replica_identity_stmt:type_name -> pg_query.ReplicaIdentityStmt + 232, // 148: pg_query.Node.alter_collation_stmt:type_name -> pg_query.AlterCollationStmt + 233, // 149: pg_query.Node.alter_domain_stmt:type_name -> pg_query.AlterDomainStmt + 234, // 150: pg_query.Node.grant_stmt:type_name -> pg_query.GrantStmt + 235, // 151: pg_query.Node.object_with_args:type_name -> pg_query.ObjectWithArgs + 236, // 152: pg_query.Node.access_priv:type_name -> pg_query.AccessPriv + 237, // 153: pg_query.Node.grant_role_stmt:type_name -> pg_query.GrantRoleStmt + 238, // 154: pg_query.Node.alter_default_privileges_stmt:type_name -> pg_query.AlterDefaultPrivilegesStmt + 239, // 155: pg_query.Node.copy_stmt:type_name -> pg_query.CopyStmt + 240, // 156: pg_query.Node.variable_set_stmt:type_name -> pg_query.VariableSetStmt + 241, // 157: pg_query.Node.variable_show_stmt:type_name -> pg_query.VariableShowStmt + 242, // 158: pg_query.Node.create_stmt:type_name -> pg_query.CreateStmt + 243, // 159: pg_query.Node.constraint:type_name -> pg_query.Constraint + 244, // 160: pg_query.Node.create_table_space_stmt:type_name -> pg_query.CreateTableSpaceStmt + 245, // 161: pg_query.Node.drop_table_space_stmt:type_name -> pg_query.DropTableSpaceStmt + 246, // 162: pg_query.Node.alter_table_space_options_stmt:type_name -> pg_query.AlterTableSpaceOptionsStmt + 247, // 163: pg_query.Node.alter_table_move_all_stmt:type_name -> pg_query.AlterTableMoveAllStmt + 248, // 164: pg_query.Node.create_extension_stmt:type_name -> pg_query.CreateExtensionStmt + 249, // 165: pg_query.Node.alter_extension_stmt:type_name -> pg_query.AlterExtensionStmt + 250, // 166: pg_query.Node.alter_extension_contents_stmt:type_name -> pg_query.AlterExtensionContentsStmt + 251, // 167: pg_query.Node.create_fdw_stmt:type_name -> pg_query.CreateFdwStmt + 252, // 168: pg_query.Node.alter_fdw_stmt:type_name -> pg_query.AlterFdwStmt + 253, // 169: pg_query.Node.create_foreign_server_stmt:type_name -> pg_query.CreateForeignServerStmt + 254, // 170: pg_query.Node.alter_foreign_server_stmt:type_name -> pg_query.AlterForeignServerStmt + 255, // 171: pg_query.Node.create_foreign_table_stmt:type_name -> pg_query.CreateForeignTableStmt + 256, // 172: pg_query.Node.create_user_mapping_stmt:type_name -> pg_query.CreateUserMappingStmt + 257, // 173: pg_query.Node.alter_user_mapping_stmt:type_name -> pg_query.AlterUserMappingStmt + 258, // 174: pg_query.Node.drop_user_mapping_stmt:type_name -> pg_query.DropUserMappingStmt + 259, // 175: pg_query.Node.import_foreign_schema_stmt:type_name -> pg_query.ImportForeignSchemaStmt + 260, // 176: pg_query.Node.create_policy_stmt:type_name -> pg_query.CreatePolicyStmt + 261, // 177: pg_query.Node.alter_policy_stmt:type_name -> pg_query.AlterPolicyStmt + 262, // 178: pg_query.Node.create_am_stmt:type_name -> pg_query.CreateAmStmt + 263, // 179: pg_query.Node.create_trig_stmt:type_name -> pg_query.CreateTrigStmt + 264, // 180: pg_query.Node.create_event_trig_stmt:type_name -> pg_query.CreateEventTrigStmt + 265, // 181: pg_query.Node.alter_event_trig_stmt:type_name -> pg_query.AlterEventTrigStmt + 266, // 182: pg_query.Node.create_plang_stmt:type_name -> pg_query.CreatePLangStmt + 267, // 183: pg_query.Node.create_role_stmt:type_name -> pg_query.CreateRoleStmt + 268, // 184: pg_query.Node.alter_role_stmt:type_name -> pg_query.AlterRoleStmt + 269, // 185: pg_query.Node.alter_role_set_stmt:type_name -> pg_query.AlterRoleSetStmt + 270, // 186: pg_query.Node.drop_role_stmt:type_name -> pg_query.DropRoleStmt + 271, // 187: pg_query.Node.create_seq_stmt:type_name -> pg_query.CreateSeqStmt + 272, // 188: pg_query.Node.alter_seq_stmt:type_name -> pg_query.AlterSeqStmt + 273, // 189: pg_query.Node.define_stmt:type_name -> pg_query.DefineStmt + 274, // 190: pg_query.Node.create_domain_stmt:type_name -> pg_query.CreateDomainStmt + 275, // 191: pg_query.Node.create_op_class_stmt:type_name -> pg_query.CreateOpClassStmt + 276, // 192: pg_query.Node.create_op_class_item:type_name -> pg_query.CreateOpClassItem + 277, // 193: pg_query.Node.create_op_family_stmt:type_name -> pg_query.CreateOpFamilyStmt + 278, // 194: pg_query.Node.alter_op_family_stmt:type_name -> pg_query.AlterOpFamilyStmt + 279, // 195: pg_query.Node.drop_stmt:type_name -> pg_query.DropStmt + 280, // 196: pg_query.Node.truncate_stmt:type_name -> pg_query.TruncateStmt + 281, // 197: pg_query.Node.comment_stmt:type_name -> pg_query.CommentStmt + 282, // 198: pg_query.Node.sec_label_stmt:type_name -> pg_query.SecLabelStmt + 283, // 199: pg_query.Node.declare_cursor_stmt:type_name -> pg_query.DeclareCursorStmt + 284, // 200: pg_query.Node.close_portal_stmt:type_name -> pg_query.ClosePortalStmt + 285, // 201: pg_query.Node.fetch_stmt:type_name -> pg_query.FetchStmt + 286, // 202: pg_query.Node.index_stmt:type_name -> pg_query.IndexStmt + 287, // 203: pg_query.Node.create_stats_stmt:type_name -> pg_query.CreateStatsStmt + 288, // 204: pg_query.Node.stats_elem:type_name -> pg_query.StatsElem + 289, // 205: pg_query.Node.alter_stats_stmt:type_name -> pg_query.AlterStatsStmt + 290, // 206: pg_query.Node.create_function_stmt:type_name -> pg_query.CreateFunctionStmt + 291, // 207: pg_query.Node.function_parameter:type_name -> pg_query.FunctionParameter + 292, // 208: pg_query.Node.alter_function_stmt:type_name -> pg_query.AlterFunctionStmt + 293, // 209: pg_query.Node.do_stmt:type_name -> pg_query.DoStmt + 294, // 210: pg_query.Node.inline_code_block:type_name -> pg_query.InlineCodeBlock + 295, // 211: pg_query.Node.call_stmt:type_name -> pg_query.CallStmt + 296, // 212: pg_query.Node.call_context:type_name -> pg_query.CallContext + 297, // 213: pg_query.Node.rename_stmt:type_name -> pg_query.RenameStmt + 298, // 214: pg_query.Node.alter_object_depends_stmt:type_name -> pg_query.AlterObjectDependsStmt + 299, // 215: pg_query.Node.alter_object_schema_stmt:type_name -> pg_query.AlterObjectSchemaStmt + 300, // 216: pg_query.Node.alter_owner_stmt:type_name -> pg_query.AlterOwnerStmt + 301, // 217: pg_query.Node.alter_operator_stmt:type_name -> pg_query.AlterOperatorStmt + 302, // 218: pg_query.Node.alter_type_stmt:type_name -> pg_query.AlterTypeStmt + 303, // 219: pg_query.Node.rule_stmt:type_name -> pg_query.RuleStmt + 304, // 220: pg_query.Node.notify_stmt:type_name -> pg_query.NotifyStmt + 305, // 221: pg_query.Node.listen_stmt:type_name -> pg_query.ListenStmt + 306, // 222: pg_query.Node.unlisten_stmt:type_name -> pg_query.UnlistenStmt + 307, // 223: pg_query.Node.transaction_stmt:type_name -> pg_query.TransactionStmt + 308, // 224: pg_query.Node.composite_type_stmt:type_name -> pg_query.CompositeTypeStmt + 309, // 225: pg_query.Node.create_enum_stmt:type_name -> pg_query.CreateEnumStmt + 310, // 226: pg_query.Node.create_range_stmt:type_name -> pg_query.CreateRangeStmt + 311, // 227: pg_query.Node.alter_enum_stmt:type_name -> pg_query.AlterEnumStmt + 312, // 228: pg_query.Node.view_stmt:type_name -> pg_query.ViewStmt + 313, // 229: pg_query.Node.load_stmt:type_name -> pg_query.LoadStmt + 314, // 230: pg_query.Node.createdb_stmt:type_name -> pg_query.CreatedbStmt + 315, // 231: pg_query.Node.alter_database_stmt:type_name -> pg_query.AlterDatabaseStmt + 316, // 232: pg_query.Node.alter_database_refresh_coll_stmt:type_name -> pg_query.AlterDatabaseRefreshCollStmt + 317, // 233: pg_query.Node.alter_database_set_stmt:type_name -> pg_query.AlterDatabaseSetStmt + 318, // 234: pg_query.Node.dropdb_stmt:type_name -> pg_query.DropdbStmt + 319, // 235: pg_query.Node.alter_system_stmt:type_name -> pg_query.AlterSystemStmt + 320, // 236: pg_query.Node.cluster_stmt:type_name -> pg_query.ClusterStmt + 321, // 237: pg_query.Node.vacuum_stmt:type_name -> pg_query.VacuumStmt + 322, // 238: pg_query.Node.vacuum_relation:type_name -> pg_query.VacuumRelation + 323, // 239: pg_query.Node.explain_stmt:type_name -> pg_query.ExplainStmt + 324, // 240: pg_query.Node.create_table_as_stmt:type_name -> pg_query.CreateTableAsStmt + 325, // 241: pg_query.Node.refresh_mat_view_stmt:type_name -> pg_query.RefreshMatViewStmt + 326, // 242: pg_query.Node.check_point_stmt:type_name -> pg_query.CheckPointStmt + 327, // 243: pg_query.Node.discard_stmt:type_name -> pg_query.DiscardStmt + 328, // 244: pg_query.Node.lock_stmt:type_name -> pg_query.LockStmt + 329, // 245: pg_query.Node.constraints_set_stmt:type_name -> pg_query.ConstraintsSetStmt + 330, // 246: pg_query.Node.reindex_stmt:type_name -> pg_query.ReindexStmt + 331, // 247: pg_query.Node.create_conversion_stmt:type_name -> pg_query.CreateConversionStmt + 332, // 248: pg_query.Node.create_cast_stmt:type_name -> pg_query.CreateCastStmt + 333, // 249: pg_query.Node.create_transform_stmt:type_name -> pg_query.CreateTransformStmt + 334, // 250: pg_query.Node.prepare_stmt:type_name -> pg_query.PrepareStmt + 335, // 251: pg_query.Node.execute_stmt:type_name -> pg_query.ExecuteStmt + 336, // 252: pg_query.Node.deallocate_stmt:type_name -> pg_query.DeallocateStmt + 337, // 253: pg_query.Node.drop_owned_stmt:type_name -> pg_query.DropOwnedStmt + 338, // 254: pg_query.Node.reassign_owned_stmt:type_name -> pg_query.ReassignOwnedStmt + 339, // 255: pg_query.Node.alter_tsdictionary_stmt:type_name -> pg_query.AlterTSDictionaryStmt + 340, // 256: pg_query.Node.alter_tsconfiguration_stmt:type_name -> pg_query.AlterTSConfigurationStmt + 341, // 257: pg_query.Node.publication_table:type_name -> pg_query.PublicationTable + 342, // 258: pg_query.Node.publication_obj_spec:type_name -> pg_query.PublicationObjSpec + 343, // 259: pg_query.Node.create_publication_stmt:type_name -> pg_query.CreatePublicationStmt + 344, // 260: pg_query.Node.alter_publication_stmt:type_name -> pg_query.AlterPublicationStmt + 345, // 261: pg_query.Node.create_subscription_stmt:type_name -> pg_query.CreateSubscriptionStmt + 346, // 262: pg_query.Node.alter_subscription_stmt:type_name -> pg_query.AlterSubscriptionStmt + 347, // 263: pg_query.Node.drop_subscription_stmt:type_name -> pg_query.DropSubscriptionStmt + 77, // 264: pg_query.Node.integer:type_name -> pg_query.Integer + 78, // 265: pg_query.Node.float:type_name -> pg_query.Float + 79, // 266: pg_query.Node.boolean:type_name -> pg_query.Boolean + 80, // 267: pg_query.Node.string:type_name -> pg_query.String + 81, // 268: pg_query.Node.bit_string:type_name -> pg_query.BitString + 82, // 269: pg_query.Node.list:type_name -> pg_query.List + 84, // 270: pg_query.Node.int_list:type_name -> pg_query.IntList + 83, // 271: pg_query.Node.oid_list:type_name -> pg_query.OidList + 85, // 272: pg_query.Node.a_const:type_name -> pg_query.A_Const + 76, // 273: pg_query.List.items:type_name -> pg_query.Node + 76, // 274: pg_query.OidList.items:type_name -> pg_query.Node + 76, // 275: pg_query.IntList.items:type_name -> pg_query.Node + 77, // 276: pg_query.A_Const.ival:type_name -> pg_query.Integer + 78, // 277: pg_query.A_Const.fval:type_name -> pg_query.Float + 79, // 278: pg_query.A_Const.boolval:type_name -> pg_query.Boolean + 80, // 279: pg_query.A_Const.sval:type_name -> pg_query.String + 81, // 280: pg_query.A_Const.bsval:type_name -> pg_query.BitString + 76, // 281: pg_query.Alias.colnames:type_name -> pg_query.Node + 86, // 282: pg_query.RangeVar.alias:type_name -> pg_query.Alias + 38, // 283: pg_query.TableFunc.functype:type_name -> pg_query.TableFuncType + 76, // 284: pg_query.TableFunc.ns_uris:type_name -> pg_query.Node + 76, // 285: pg_query.TableFunc.ns_names:type_name -> pg_query.Node + 76, // 286: pg_query.TableFunc.docexpr:type_name -> pg_query.Node + 76, // 287: pg_query.TableFunc.rowexpr:type_name -> pg_query.Node + 76, // 288: pg_query.TableFunc.colnames:type_name -> pg_query.Node + 76, // 289: pg_query.TableFunc.coltypes:type_name -> pg_query.Node + 76, // 290: pg_query.TableFunc.coltypmods:type_name -> pg_query.Node + 76, // 291: pg_query.TableFunc.colcollations:type_name -> pg_query.Node + 76, // 292: pg_query.TableFunc.colexprs:type_name -> pg_query.Node + 76, // 293: pg_query.TableFunc.coldefexprs:type_name -> pg_query.Node + 76, // 294: pg_query.TableFunc.colvalexprs:type_name -> pg_query.Node + 76, // 295: pg_query.TableFunc.passingvalexprs:type_name -> pg_query.Node + 76, // 296: pg_query.TableFunc.plan:type_name -> pg_query.Node + 87, // 297: pg_query.IntoClause.rel:type_name -> pg_query.RangeVar + 76, // 298: pg_query.IntoClause.col_names:type_name -> pg_query.Node + 76, // 299: pg_query.IntoClause.options:type_name -> pg_query.Node + 37, // 300: pg_query.IntoClause.on_commit:type_name -> pg_query.OnCommitAction + 150, // 301: pg_query.IntoClause.view_query:type_name -> pg_query.Query + 76, // 302: pg_query.Var.xpr:type_name -> pg_query.Node + 39, // 303: pg_query.Var.varreturningtype:type_name -> pg_query.VarReturningType + 76, // 304: pg_query.Param.xpr:type_name -> pg_query.Node + 40, // 305: pg_query.Param.paramkind:type_name -> pg_query.ParamKind + 76, // 306: pg_query.Aggref.xpr:type_name -> pg_query.Node + 76, // 307: pg_query.Aggref.aggargtypes:type_name -> pg_query.Node + 76, // 308: pg_query.Aggref.aggdirectargs:type_name -> pg_query.Node + 76, // 309: pg_query.Aggref.args:type_name -> pg_query.Node + 76, // 310: pg_query.Aggref.aggorder:type_name -> pg_query.Node + 76, // 311: pg_query.Aggref.aggdistinct:type_name -> pg_query.Node + 76, // 312: pg_query.Aggref.aggfilter:type_name -> pg_query.Node + 62, // 313: pg_query.Aggref.aggsplit:type_name -> pg_query.AggSplit + 76, // 314: pg_query.GroupingFunc.xpr:type_name -> pg_query.Node + 76, // 315: pg_query.GroupingFunc.args:type_name -> pg_query.Node + 76, // 316: pg_query.GroupingFunc.refs:type_name -> pg_query.Node + 76, // 317: pg_query.WindowFunc.xpr:type_name -> pg_query.Node + 76, // 318: pg_query.WindowFunc.args:type_name -> pg_query.Node + 76, // 319: pg_query.WindowFunc.aggfilter:type_name -> pg_query.Node + 76, // 320: pg_query.WindowFunc.run_condition:type_name -> pg_query.Node + 76, // 321: pg_query.WindowFuncRunCondition.xpr:type_name -> pg_query.Node + 76, // 322: pg_query.WindowFuncRunCondition.arg:type_name -> pg_query.Node + 76, // 323: pg_query.MergeSupportFunc.xpr:type_name -> pg_query.Node + 76, // 324: pg_query.SubscriptingRef.xpr:type_name -> pg_query.Node + 76, // 325: pg_query.SubscriptingRef.refupperindexpr:type_name -> pg_query.Node + 76, // 326: pg_query.SubscriptingRef.reflowerindexpr:type_name -> pg_query.Node + 76, // 327: pg_query.SubscriptingRef.refexpr:type_name -> pg_query.Node + 76, // 328: pg_query.SubscriptingRef.refassgnexpr:type_name -> pg_query.Node + 76, // 329: pg_query.FuncExpr.xpr:type_name -> pg_query.Node + 42, // 330: pg_query.FuncExpr.funcformat:type_name -> pg_query.CoercionForm + 76, // 331: pg_query.FuncExpr.args:type_name -> pg_query.Node + 76, // 332: pg_query.NamedArgExpr.xpr:type_name -> pg_query.Node + 76, // 333: pg_query.NamedArgExpr.arg:type_name -> pg_query.Node + 76, // 334: pg_query.OpExpr.xpr:type_name -> pg_query.Node + 76, // 335: pg_query.OpExpr.args:type_name -> pg_query.Node + 76, // 336: pg_query.DistinctExpr.xpr:type_name -> pg_query.Node + 76, // 337: pg_query.DistinctExpr.args:type_name -> pg_query.Node + 76, // 338: pg_query.NullIfExpr.xpr:type_name -> pg_query.Node + 76, // 339: pg_query.NullIfExpr.args:type_name -> pg_query.Node + 76, // 340: pg_query.ScalarArrayOpExpr.xpr:type_name -> pg_query.Node + 76, // 341: pg_query.ScalarArrayOpExpr.args:type_name -> pg_query.Node + 76, // 342: pg_query.BoolExpr.xpr:type_name -> pg_query.Node + 43, // 343: pg_query.BoolExpr.boolop:type_name -> pg_query.BoolExprType + 76, // 344: pg_query.BoolExpr.args:type_name -> pg_query.Node + 76, // 345: pg_query.SubLink.xpr:type_name -> pg_query.Node + 44, // 346: pg_query.SubLink.sub_link_type:type_name -> pg_query.SubLinkType + 76, // 347: pg_query.SubLink.testexpr:type_name -> pg_query.Node + 76, // 348: pg_query.SubLink.oper_name:type_name -> pg_query.Node + 76, // 349: pg_query.SubLink.subselect:type_name -> pg_query.Node + 76, // 350: pg_query.SubPlan.xpr:type_name -> pg_query.Node + 44, // 351: pg_query.SubPlan.sub_link_type:type_name -> pg_query.SubLinkType + 76, // 352: pg_query.SubPlan.testexpr:type_name -> pg_query.Node + 76, // 353: pg_query.SubPlan.param_ids:type_name -> pg_query.Node + 76, // 354: pg_query.SubPlan.set_param:type_name -> pg_query.Node + 76, // 355: pg_query.SubPlan.par_param:type_name -> pg_query.Node + 76, // 356: pg_query.SubPlan.args:type_name -> pg_query.Node + 76, // 357: pg_query.AlternativeSubPlan.xpr:type_name -> pg_query.Node + 76, // 358: pg_query.AlternativeSubPlan.subplans:type_name -> pg_query.Node + 76, // 359: pg_query.FieldSelect.xpr:type_name -> pg_query.Node + 76, // 360: pg_query.FieldSelect.arg:type_name -> pg_query.Node + 76, // 361: pg_query.FieldStore.xpr:type_name -> pg_query.Node + 76, // 362: pg_query.FieldStore.arg:type_name -> pg_query.Node + 76, // 363: pg_query.FieldStore.newvals:type_name -> pg_query.Node + 76, // 364: pg_query.FieldStore.fieldnums:type_name -> pg_query.Node + 76, // 365: pg_query.RelabelType.xpr:type_name -> pg_query.Node + 76, // 366: pg_query.RelabelType.arg:type_name -> pg_query.Node + 42, // 367: pg_query.RelabelType.relabelformat:type_name -> pg_query.CoercionForm + 76, // 368: pg_query.CoerceViaIO.xpr:type_name -> pg_query.Node + 76, // 369: pg_query.CoerceViaIO.arg:type_name -> pg_query.Node + 42, // 370: pg_query.CoerceViaIO.coerceformat:type_name -> pg_query.CoercionForm + 76, // 371: pg_query.ArrayCoerceExpr.xpr:type_name -> pg_query.Node + 76, // 372: pg_query.ArrayCoerceExpr.arg:type_name -> pg_query.Node + 76, // 373: pg_query.ArrayCoerceExpr.elemexpr:type_name -> pg_query.Node + 42, // 374: pg_query.ArrayCoerceExpr.coerceformat:type_name -> pg_query.CoercionForm + 76, // 375: pg_query.ConvertRowtypeExpr.xpr:type_name -> pg_query.Node + 76, // 376: pg_query.ConvertRowtypeExpr.arg:type_name -> pg_query.Node + 42, // 377: pg_query.ConvertRowtypeExpr.convertformat:type_name -> pg_query.CoercionForm + 76, // 378: pg_query.CollateExpr.xpr:type_name -> pg_query.Node + 76, // 379: pg_query.CollateExpr.arg:type_name -> pg_query.Node + 76, // 380: pg_query.CaseExpr.xpr:type_name -> pg_query.Node + 76, // 381: pg_query.CaseExpr.arg:type_name -> pg_query.Node + 76, // 382: pg_query.CaseExpr.args:type_name -> pg_query.Node + 76, // 383: pg_query.CaseExpr.defresult:type_name -> pg_query.Node + 76, // 384: pg_query.CaseWhen.xpr:type_name -> pg_query.Node + 76, // 385: pg_query.CaseWhen.expr:type_name -> pg_query.Node + 76, // 386: pg_query.CaseWhen.result:type_name -> pg_query.Node + 76, // 387: pg_query.CaseTestExpr.xpr:type_name -> pg_query.Node + 76, // 388: pg_query.ArrayExpr.xpr:type_name -> pg_query.Node + 76, // 389: pg_query.ArrayExpr.elements:type_name -> pg_query.Node + 76, // 390: pg_query.RowExpr.xpr:type_name -> pg_query.Node + 76, // 391: pg_query.RowExpr.args:type_name -> pg_query.Node + 42, // 392: pg_query.RowExpr.row_format:type_name -> pg_query.CoercionForm + 76, // 393: pg_query.RowExpr.colnames:type_name -> pg_query.Node + 76, // 394: pg_query.RowCompareExpr.xpr:type_name -> pg_query.Node + 70, // 395: pg_query.RowCompareExpr.cmptype:type_name -> pg_query.CompareType + 76, // 396: pg_query.RowCompareExpr.opnos:type_name -> pg_query.Node + 76, // 397: pg_query.RowCompareExpr.opfamilies:type_name -> pg_query.Node + 76, // 398: pg_query.RowCompareExpr.inputcollids:type_name -> pg_query.Node + 76, // 399: pg_query.RowCompareExpr.largs:type_name -> pg_query.Node + 76, // 400: pg_query.RowCompareExpr.rargs:type_name -> pg_query.Node + 76, // 401: pg_query.CoalesceExpr.xpr:type_name -> pg_query.Node + 76, // 402: pg_query.CoalesceExpr.args:type_name -> pg_query.Node + 76, // 403: pg_query.MinMaxExpr.xpr:type_name -> pg_query.Node + 45, // 404: pg_query.MinMaxExpr.op:type_name -> pg_query.MinMaxOp + 76, // 405: pg_query.MinMaxExpr.args:type_name -> pg_query.Node + 76, // 406: pg_query.SQLValueFunction.xpr:type_name -> pg_query.Node + 46, // 407: pg_query.SQLValueFunction.op:type_name -> pg_query.SQLValueFunctionOp + 76, // 408: pg_query.XmlExpr.xpr:type_name -> pg_query.Node + 47, // 409: pg_query.XmlExpr.op:type_name -> pg_query.XmlExprOp + 76, // 410: pg_query.XmlExpr.named_args:type_name -> pg_query.Node + 76, // 411: pg_query.XmlExpr.arg_names:type_name -> pg_query.Node + 76, // 412: pg_query.XmlExpr.args:type_name -> pg_query.Node + 48, // 413: pg_query.XmlExpr.xmloption:type_name -> pg_query.XmlOptionType + 50, // 414: pg_query.JsonFormat.format_type:type_name -> pg_query.JsonFormatType + 49, // 415: pg_query.JsonFormat.encoding:type_name -> pg_query.JsonEncoding + 125, // 416: pg_query.JsonReturning.format:type_name -> pg_query.JsonFormat + 76, // 417: pg_query.JsonValueExpr.raw_expr:type_name -> pg_query.Node + 76, // 418: pg_query.JsonValueExpr.formatted_expr:type_name -> pg_query.Node + 125, // 419: pg_query.JsonValueExpr.format:type_name -> pg_query.JsonFormat + 76, // 420: pg_query.JsonConstructorExpr.xpr:type_name -> pg_query.Node + 51, // 421: pg_query.JsonConstructorExpr.type:type_name -> pg_query.JsonConstructorType + 76, // 422: pg_query.JsonConstructorExpr.args:type_name -> pg_query.Node + 76, // 423: pg_query.JsonConstructorExpr.func:type_name -> pg_query.Node + 76, // 424: pg_query.JsonConstructorExpr.coercion:type_name -> pg_query.Node + 126, // 425: pg_query.JsonConstructorExpr.returning:type_name -> pg_query.JsonReturning + 76, // 426: pg_query.JsonIsPredicate.expr:type_name -> pg_query.Node + 125, // 427: pg_query.JsonIsPredicate.format:type_name -> pg_query.JsonFormat + 52, // 428: pg_query.JsonIsPredicate.item_type:type_name -> pg_query.JsonValueType + 54, // 429: pg_query.JsonBehavior.btype:type_name -> pg_query.JsonBehaviorType + 76, // 430: pg_query.JsonBehavior.expr:type_name -> pg_query.Node + 76, // 431: pg_query.JsonExpr.xpr:type_name -> pg_query.Node + 55, // 432: pg_query.JsonExpr.op:type_name -> pg_query.JsonExprOp + 76, // 433: pg_query.JsonExpr.formatted_expr:type_name -> pg_query.Node + 125, // 434: pg_query.JsonExpr.format:type_name -> pg_query.JsonFormat + 76, // 435: pg_query.JsonExpr.path_spec:type_name -> pg_query.Node + 126, // 436: pg_query.JsonExpr.returning:type_name -> pg_query.JsonReturning + 76, // 437: pg_query.JsonExpr.passing_names:type_name -> pg_query.Node + 76, // 438: pg_query.JsonExpr.passing_values:type_name -> pg_query.Node + 130, // 439: pg_query.JsonExpr.on_empty:type_name -> pg_query.JsonBehavior + 130, // 440: pg_query.JsonExpr.on_error:type_name -> pg_query.JsonBehavior + 53, // 441: pg_query.JsonExpr.wrapper:type_name -> pg_query.JsonWrapper + 76, // 442: pg_query.JsonTablePathScan.plan:type_name -> pg_query.Node + 132, // 443: pg_query.JsonTablePathScan.path:type_name -> pg_query.JsonTablePath + 76, // 444: pg_query.JsonTablePathScan.child:type_name -> pg_query.Node + 76, // 445: pg_query.JsonTableSiblingJoin.plan:type_name -> pg_query.Node + 76, // 446: pg_query.JsonTableSiblingJoin.lplan:type_name -> pg_query.Node + 76, // 447: pg_query.JsonTableSiblingJoin.rplan:type_name -> pg_query.Node + 76, // 448: pg_query.NullTest.xpr:type_name -> pg_query.Node + 76, // 449: pg_query.NullTest.arg:type_name -> pg_query.Node + 56, // 450: pg_query.NullTest.nulltesttype:type_name -> pg_query.NullTestType + 76, // 451: pg_query.BooleanTest.xpr:type_name -> pg_query.Node + 76, // 452: pg_query.BooleanTest.arg:type_name -> pg_query.Node + 57, // 453: pg_query.BooleanTest.booltesttype:type_name -> pg_query.BoolTestType + 58, // 454: pg_query.MergeAction.match_kind:type_name -> pg_query.MergeMatchKind + 59, // 455: pg_query.MergeAction.command_type:type_name -> pg_query.CmdType + 36, // 456: pg_query.MergeAction.override:type_name -> pg_query.OverridingKind + 76, // 457: pg_query.MergeAction.qual:type_name -> pg_query.Node + 76, // 458: pg_query.MergeAction.target_list:type_name -> pg_query.Node + 76, // 459: pg_query.MergeAction.update_colnos:type_name -> pg_query.Node + 76, // 460: pg_query.CoerceToDomain.xpr:type_name -> pg_query.Node + 76, // 461: pg_query.CoerceToDomain.arg:type_name -> pg_query.Node + 42, // 462: pg_query.CoerceToDomain.coercionformat:type_name -> pg_query.CoercionForm + 76, // 463: pg_query.CoerceToDomainValue.xpr:type_name -> pg_query.Node + 76, // 464: pg_query.SetToDefault.xpr:type_name -> pg_query.Node + 76, // 465: pg_query.CurrentOfExpr.xpr:type_name -> pg_query.Node + 76, // 466: pg_query.NextValueExpr.xpr:type_name -> pg_query.Node + 76, // 467: pg_query.InferenceElem.xpr:type_name -> pg_query.Node + 76, // 468: pg_query.InferenceElem.expr:type_name -> pg_query.Node + 76, // 469: pg_query.ReturningExpr.xpr:type_name -> pg_query.Node + 76, // 470: pg_query.ReturningExpr.retexpr:type_name -> pg_query.Node + 76, // 471: pg_query.TargetEntry.xpr:type_name -> pg_query.Node + 76, // 472: pg_query.TargetEntry.expr:type_name -> pg_query.Node + 60, // 473: pg_query.JoinExpr.jointype:type_name -> pg_query.JoinType + 76, // 474: pg_query.JoinExpr.larg:type_name -> pg_query.Node + 76, // 475: pg_query.JoinExpr.rarg:type_name -> pg_query.Node + 76, // 476: pg_query.JoinExpr.using_clause:type_name -> pg_query.Node + 86, // 477: pg_query.JoinExpr.join_using_alias:type_name -> pg_query.Alias + 76, // 478: pg_query.JoinExpr.quals:type_name -> pg_query.Node + 86, // 479: pg_query.JoinExpr.alias:type_name -> pg_query.Alias + 76, // 480: pg_query.FromExpr.fromlist:type_name -> pg_query.Node + 76, // 481: pg_query.FromExpr.quals:type_name -> pg_query.Node + 65, // 482: pg_query.OnConflictExpr.action:type_name -> pg_query.OnConflictAction + 76, // 483: pg_query.OnConflictExpr.arbiter_elems:type_name -> pg_query.Node + 76, // 484: pg_query.OnConflictExpr.arbiter_where:type_name -> pg_query.Node + 76, // 485: pg_query.OnConflictExpr.on_conflict_set:type_name -> pg_query.Node + 76, // 486: pg_query.OnConflictExpr.on_conflict_where:type_name -> pg_query.Node + 76, // 487: pg_query.OnConflictExpr.excl_rel_tlist:type_name -> pg_query.Node + 59, // 488: pg_query.Query.command_type:type_name -> pg_query.CmdType + 0, // 489: pg_query.Query.query_source:type_name -> pg_query.QuerySource + 76, // 490: pg_query.Query.utility_stmt:type_name -> pg_query.Node + 76, // 491: pg_query.Query.cte_list:type_name -> pg_query.Node + 76, // 492: pg_query.Query.rtable:type_name -> pg_query.Node + 76, // 493: pg_query.Query.rteperminfos:type_name -> pg_query.Node + 148, // 494: pg_query.Query.jointree:type_name -> pg_query.FromExpr + 76, // 495: pg_query.Query.merge_action_list:type_name -> pg_query.Node + 76, // 496: pg_query.Query.merge_join_condition:type_name -> pg_query.Node + 76, // 497: pg_query.Query.target_list:type_name -> pg_query.Node + 36, // 498: pg_query.Query.override:type_name -> pg_query.OverridingKind + 149, // 499: pg_query.Query.on_conflict:type_name -> pg_query.OnConflictExpr + 76, // 500: pg_query.Query.returning_list:type_name -> pg_query.Node + 76, // 501: pg_query.Query.group_clause:type_name -> pg_query.Node + 76, // 502: pg_query.Query.grouping_sets:type_name -> pg_query.Node + 76, // 503: pg_query.Query.having_qual:type_name -> pg_query.Node + 76, // 504: pg_query.Query.window_clause:type_name -> pg_query.Node + 76, // 505: pg_query.Query.distinct_clause:type_name -> pg_query.Node + 76, // 506: pg_query.Query.sort_clause:type_name -> pg_query.Node + 76, // 507: pg_query.Query.limit_offset:type_name -> pg_query.Node + 76, // 508: pg_query.Query.limit_count:type_name -> pg_query.Node + 66, // 509: pg_query.Query.limit_option:type_name -> pg_query.LimitOption + 76, // 510: pg_query.Query.row_marks:type_name -> pg_query.Node + 76, // 511: pg_query.Query.set_operations:type_name -> pg_query.Node + 76, // 512: pg_query.Query.constraint_deps:type_name -> pg_query.Node + 76, // 513: pg_query.Query.with_check_options:type_name -> pg_query.Node + 76, // 514: pg_query.TypeName.names:type_name -> pg_query.Node + 76, // 515: pg_query.TypeName.typmods:type_name -> pg_query.Node + 76, // 516: pg_query.TypeName.array_bounds:type_name -> pg_query.Node + 76, // 517: pg_query.ColumnRef.fields:type_name -> pg_query.Node + 4, // 518: pg_query.A_Expr.kind:type_name -> pg_query.A_Expr_Kind + 76, // 519: pg_query.A_Expr.name:type_name -> pg_query.Node + 76, // 520: pg_query.A_Expr.lexpr:type_name -> pg_query.Node + 76, // 521: pg_query.A_Expr.rexpr:type_name -> pg_query.Node + 76, // 522: pg_query.TypeCast.arg:type_name -> pg_query.Node + 151, // 523: pg_query.TypeCast.type_name:type_name -> pg_query.TypeName + 76, // 524: pg_query.CollateClause.arg:type_name -> pg_query.Node + 76, // 525: pg_query.CollateClause.collname:type_name -> pg_query.Node + 5, // 526: pg_query.RoleSpec.roletype:type_name -> pg_query.RoleSpecType + 76, // 527: pg_query.FuncCall.funcname:type_name -> pg_query.Node + 76, // 528: pg_query.FuncCall.args:type_name -> pg_query.Node + 76, // 529: pg_query.FuncCall.agg_order:type_name -> pg_query.Node + 76, // 530: pg_query.FuncCall.agg_filter:type_name -> pg_query.Node + 166, // 531: pg_query.FuncCall.over:type_name -> pg_query.WindowDef + 42, // 532: pg_query.FuncCall.funcformat:type_name -> pg_query.CoercionForm + 76, // 533: pg_query.A_Indices.lidx:type_name -> pg_query.Node + 76, // 534: pg_query.A_Indices.uidx:type_name -> pg_query.Node + 76, // 535: pg_query.A_Indirection.arg:type_name -> pg_query.Node + 76, // 536: pg_query.A_Indirection.indirection:type_name -> pg_query.Node + 76, // 537: pg_query.A_ArrayExpr.elements:type_name -> pg_query.Node + 76, // 538: pg_query.ResTarget.indirection:type_name -> pg_query.Node + 76, // 539: pg_query.ResTarget.val:type_name -> pg_query.Node + 76, // 540: pg_query.MultiAssignRef.source:type_name -> pg_query.Node + 76, // 541: pg_query.SortBy.node:type_name -> pg_query.Node + 1, // 542: pg_query.SortBy.sortby_dir:type_name -> pg_query.SortByDir + 2, // 543: pg_query.SortBy.sortby_nulls:type_name -> pg_query.SortByNulls + 76, // 544: pg_query.SortBy.use_op:type_name -> pg_query.Node + 76, // 545: pg_query.WindowDef.partition_clause:type_name -> pg_query.Node + 76, // 546: pg_query.WindowDef.order_clause:type_name -> pg_query.Node + 76, // 547: pg_query.WindowDef.start_offset:type_name -> pg_query.Node + 76, // 548: pg_query.WindowDef.end_offset:type_name -> pg_query.Node + 76, // 549: pg_query.RangeSubselect.subquery:type_name -> pg_query.Node + 86, // 550: pg_query.RangeSubselect.alias:type_name -> pg_query.Alias + 76, // 551: pg_query.RangeFunction.functions:type_name -> pg_query.Node + 86, // 552: pg_query.RangeFunction.alias:type_name -> pg_query.Alias + 76, // 553: pg_query.RangeFunction.coldeflist:type_name -> pg_query.Node + 76, // 554: pg_query.RangeTableFunc.docexpr:type_name -> pg_query.Node + 76, // 555: pg_query.RangeTableFunc.rowexpr:type_name -> pg_query.Node + 76, // 556: pg_query.RangeTableFunc.namespaces:type_name -> pg_query.Node + 76, // 557: pg_query.RangeTableFunc.columns:type_name -> pg_query.Node + 86, // 558: pg_query.RangeTableFunc.alias:type_name -> pg_query.Alias + 151, // 559: pg_query.RangeTableFuncCol.type_name:type_name -> pg_query.TypeName + 76, // 560: pg_query.RangeTableFuncCol.colexpr:type_name -> pg_query.Node + 76, // 561: pg_query.RangeTableFuncCol.coldefexpr:type_name -> pg_query.Node + 76, // 562: pg_query.RangeTableSample.relation:type_name -> pg_query.Node + 76, // 563: pg_query.RangeTableSample.method:type_name -> pg_query.Node + 76, // 564: pg_query.RangeTableSample.args:type_name -> pg_query.Node + 76, // 565: pg_query.RangeTableSample.repeatable:type_name -> pg_query.Node + 151, // 566: pg_query.ColumnDef.type_name:type_name -> pg_query.TypeName + 76, // 567: pg_query.ColumnDef.raw_default:type_name -> pg_query.Node + 76, // 568: pg_query.ColumnDef.cooked_default:type_name -> pg_query.Node + 87, // 569: pg_query.ColumnDef.identity_sequence:type_name -> pg_query.RangeVar + 156, // 570: pg_query.ColumnDef.coll_clause:type_name -> pg_query.CollateClause + 76, // 571: pg_query.ColumnDef.constraints:type_name -> pg_query.Node + 76, // 572: pg_query.ColumnDef.fdwoptions:type_name -> pg_query.Node + 87, // 573: pg_query.TableLikeClause.relation:type_name -> pg_query.RangeVar + 76, // 574: pg_query.IndexElem.expr:type_name -> pg_query.Node + 76, // 575: pg_query.IndexElem.collation:type_name -> pg_query.Node + 76, // 576: pg_query.IndexElem.opclass:type_name -> pg_query.Node + 76, // 577: pg_query.IndexElem.opclassopts:type_name -> pg_query.Node + 1, // 578: pg_query.IndexElem.ordering:type_name -> pg_query.SortByDir + 2, // 579: pg_query.IndexElem.nulls_ordering:type_name -> pg_query.SortByNulls + 76, // 580: pg_query.DefElem.arg:type_name -> pg_query.Node + 7, // 581: pg_query.DefElem.defaction:type_name -> pg_query.DefElemAction + 76, // 582: pg_query.LockingClause.locked_rels:type_name -> pg_query.Node + 67, // 583: pg_query.LockingClause.strength:type_name -> pg_query.LockClauseStrength + 68, // 584: pg_query.LockingClause.wait_policy:type_name -> pg_query.LockWaitPolicy + 48, // 585: pg_query.XmlSerialize.xmloption:type_name -> pg_query.XmlOptionType + 76, // 586: pg_query.XmlSerialize.expr:type_name -> pg_query.Node + 151, // 587: pg_query.XmlSerialize.type_name:type_name -> pg_query.TypeName + 76, // 588: pg_query.PartitionElem.expr:type_name -> pg_query.Node + 76, // 589: pg_query.PartitionElem.collation:type_name -> pg_query.Node + 76, // 590: pg_query.PartitionElem.opclass:type_name -> pg_query.Node + 8, // 591: pg_query.PartitionSpec.strategy:type_name -> pg_query.PartitionStrategy + 76, // 592: pg_query.PartitionSpec.part_params:type_name -> pg_query.Node + 76, // 593: pg_query.PartitionBoundSpec.listdatums:type_name -> pg_query.Node + 76, // 594: pg_query.PartitionBoundSpec.lowerdatums:type_name -> pg_query.Node + 76, // 595: pg_query.PartitionBoundSpec.upperdatums:type_name -> pg_query.Node + 9, // 596: pg_query.PartitionRangeDatum.kind:type_name -> pg_query.PartitionRangeDatumKind + 76, // 597: pg_query.PartitionRangeDatum.value:type_name -> pg_query.Node + 87, // 598: pg_query.PartitionCmd.name:type_name -> pg_query.RangeVar + 180, // 599: pg_query.PartitionCmd.bound:type_name -> pg_query.PartitionBoundSpec + 86, // 600: pg_query.RangeTblEntry.alias:type_name -> pg_query.Alias + 86, // 601: pg_query.RangeTblEntry.eref:type_name -> pg_query.Alias + 10, // 602: pg_query.RangeTblEntry.rtekind:type_name -> pg_query.RTEKind + 186, // 603: pg_query.RangeTblEntry.tablesample:type_name -> pg_query.TableSampleClause + 150, // 604: pg_query.RangeTblEntry.subquery:type_name -> pg_query.Query + 60, // 605: pg_query.RangeTblEntry.jointype:type_name -> pg_query.JoinType + 76, // 606: pg_query.RangeTblEntry.joinaliasvars:type_name -> pg_query.Node + 76, // 607: pg_query.RangeTblEntry.joinleftcols:type_name -> pg_query.Node + 76, // 608: pg_query.RangeTblEntry.joinrightcols:type_name -> pg_query.Node + 86, // 609: pg_query.RangeTblEntry.join_using_alias:type_name -> pg_query.Alias + 76, // 610: pg_query.RangeTblEntry.functions:type_name -> pg_query.Node + 88, // 611: pg_query.RangeTblEntry.tablefunc:type_name -> pg_query.TableFunc + 76, // 612: pg_query.RangeTblEntry.values_lists:type_name -> pg_query.Node + 76, // 613: pg_query.RangeTblEntry.coltypes:type_name -> pg_query.Node + 76, // 614: pg_query.RangeTblEntry.coltypmods:type_name -> pg_query.Node + 76, // 615: pg_query.RangeTblEntry.colcollations:type_name -> pg_query.Node + 76, // 616: pg_query.RangeTblEntry.groupexprs:type_name -> pg_query.Node + 76, // 617: pg_query.RangeTblEntry.security_quals:type_name -> pg_query.Node + 76, // 618: pg_query.RangeTblFunction.funcexpr:type_name -> pg_query.Node + 76, // 619: pg_query.RangeTblFunction.funccolnames:type_name -> pg_query.Node + 76, // 620: pg_query.RangeTblFunction.funccoltypes:type_name -> pg_query.Node + 76, // 621: pg_query.RangeTblFunction.funccoltypmods:type_name -> pg_query.Node + 76, // 622: pg_query.RangeTblFunction.funccolcollations:type_name -> pg_query.Node + 76, // 623: pg_query.TableSampleClause.args:type_name -> pg_query.Node + 76, // 624: pg_query.TableSampleClause.repeatable:type_name -> pg_query.Node + 11, // 625: pg_query.WithCheckOption.kind:type_name -> pg_query.WCOKind + 76, // 626: pg_query.WithCheckOption.qual:type_name -> pg_query.Node + 12, // 627: pg_query.GroupingSet.kind:type_name -> pg_query.GroupingSetKind + 76, // 628: pg_query.GroupingSet.content:type_name -> pg_query.Node + 76, // 629: pg_query.WindowClause.partition_clause:type_name -> pg_query.Node + 76, // 630: pg_query.WindowClause.order_clause:type_name -> pg_query.Node + 76, // 631: pg_query.WindowClause.start_offset:type_name -> pg_query.Node + 76, // 632: pg_query.WindowClause.end_offset:type_name -> pg_query.Node + 67, // 633: pg_query.RowMarkClause.strength:type_name -> pg_query.LockClauseStrength + 68, // 634: pg_query.RowMarkClause.wait_policy:type_name -> pg_query.LockWaitPolicy + 76, // 635: pg_query.WithClause.ctes:type_name -> pg_query.Node + 76, // 636: pg_query.InferClause.index_elems:type_name -> pg_query.Node + 76, // 637: pg_query.InferClause.where_clause:type_name -> pg_query.Node + 65, // 638: pg_query.OnConflictClause.action:type_name -> pg_query.OnConflictAction + 193, // 639: pg_query.OnConflictClause.infer:type_name -> pg_query.InferClause + 76, // 640: pg_query.OnConflictClause.target_list:type_name -> pg_query.Node + 76, // 641: pg_query.OnConflictClause.where_clause:type_name -> pg_query.Node + 76, // 642: pg_query.CTESearchClause.search_col_list:type_name -> pg_query.Node + 76, // 643: pg_query.CTECycleClause.cycle_col_list:type_name -> pg_query.Node + 76, // 644: pg_query.CTECycleClause.cycle_mark_value:type_name -> pg_query.Node + 76, // 645: pg_query.CTECycleClause.cycle_mark_default:type_name -> pg_query.Node + 76, // 646: pg_query.CommonTableExpr.aliascolnames:type_name -> pg_query.Node + 13, // 647: pg_query.CommonTableExpr.ctematerialized:type_name -> pg_query.CTEMaterialize + 76, // 648: pg_query.CommonTableExpr.ctequery:type_name -> pg_query.Node + 195, // 649: pg_query.CommonTableExpr.search_clause:type_name -> pg_query.CTESearchClause + 196, // 650: pg_query.CommonTableExpr.cycle_clause:type_name -> pg_query.CTECycleClause + 76, // 651: pg_query.CommonTableExpr.ctecolnames:type_name -> pg_query.Node + 76, // 652: pg_query.CommonTableExpr.ctecoltypes:type_name -> pg_query.Node + 76, // 653: pg_query.CommonTableExpr.ctecoltypmods:type_name -> pg_query.Node + 76, // 654: pg_query.CommonTableExpr.ctecolcollations:type_name -> pg_query.Node + 58, // 655: pg_query.MergeWhenClause.match_kind:type_name -> pg_query.MergeMatchKind + 59, // 656: pg_query.MergeWhenClause.command_type:type_name -> pg_query.CmdType + 36, // 657: pg_query.MergeWhenClause.override:type_name -> pg_query.OverridingKind + 76, // 658: pg_query.MergeWhenClause.condition:type_name -> pg_query.Node + 76, // 659: pg_query.MergeWhenClause.target_list:type_name -> pg_query.Node + 76, // 660: pg_query.MergeWhenClause.values:type_name -> pg_query.Node + 14, // 661: pg_query.ReturningOption.option:type_name -> pg_query.ReturningOptionKind + 76, // 662: pg_query.ReturningClause.options:type_name -> pg_query.Node + 76, // 663: pg_query.ReturningClause.exprs:type_name -> pg_query.Node + 151, // 664: pg_query.JsonOutput.type_name:type_name -> pg_query.TypeName + 126, // 665: pg_query.JsonOutput.returning:type_name -> pg_query.JsonReturning + 127, // 666: pg_query.JsonArgument.val:type_name -> pg_query.JsonValueExpr + 55, // 667: pg_query.JsonFuncExpr.op:type_name -> pg_query.JsonExprOp + 127, // 668: pg_query.JsonFuncExpr.context_item:type_name -> pg_query.JsonValueExpr + 76, // 669: pg_query.JsonFuncExpr.pathspec:type_name -> pg_query.Node + 76, // 670: pg_query.JsonFuncExpr.passing:type_name -> pg_query.Node + 202, // 671: pg_query.JsonFuncExpr.output:type_name -> pg_query.JsonOutput + 130, // 672: pg_query.JsonFuncExpr.on_empty:type_name -> pg_query.JsonBehavior + 130, // 673: pg_query.JsonFuncExpr.on_error:type_name -> pg_query.JsonBehavior + 53, // 674: pg_query.JsonFuncExpr.wrapper:type_name -> pg_query.JsonWrapper + 15, // 675: pg_query.JsonFuncExpr.quotes:type_name -> pg_query.JsonQuotes + 76, // 676: pg_query.JsonTablePathSpec.string:type_name -> pg_query.Node + 127, // 677: pg_query.JsonTable.context_item:type_name -> pg_query.JsonValueExpr + 205, // 678: pg_query.JsonTable.pathspec:type_name -> pg_query.JsonTablePathSpec + 76, // 679: pg_query.JsonTable.passing:type_name -> pg_query.Node + 76, // 680: pg_query.JsonTable.columns:type_name -> pg_query.Node + 130, // 681: pg_query.JsonTable.on_error:type_name -> pg_query.JsonBehavior + 86, // 682: pg_query.JsonTable.alias:type_name -> pg_query.Alias + 16, // 683: pg_query.JsonTableColumn.coltype:type_name -> pg_query.JsonTableColumnType + 151, // 684: pg_query.JsonTableColumn.type_name:type_name -> pg_query.TypeName + 205, // 685: pg_query.JsonTableColumn.pathspec:type_name -> pg_query.JsonTablePathSpec + 125, // 686: pg_query.JsonTableColumn.format:type_name -> pg_query.JsonFormat + 53, // 687: pg_query.JsonTableColumn.wrapper:type_name -> pg_query.JsonWrapper + 15, // 688: pg_query.JsonTableColumn.quotes:type_name -> pg_query.JsonQuotes + 76, // 689: pg_query.JsonTableColumn.columns:type_name -> pg_query.Node + 130, // 690: pg_query.JsonTableColumn.on_empty:type_name -> pg_query.JsonBehavior + 130, // 691: pg_query.JsonTableColumn.on_error:type_name -> pg_query.JsonBehavior + 76, // 692: pg_query.JsonKeyValue.key:type_name -> pg_query.Node + 127, // 693: pg_query.JsonKeyValue.value:type_name -> pg_query.JsonValueExpr + 127, // 694: pg_query.JsonParseExpr.expr:type_name -> pg_query.JsonValueExpr + 202, // 695: pg_query.JsonParseExpr.output:type_name -> pg_query.JsonOutput + 76, // 696: pg_query.JsonScalarExpr.expr:type_name -> pg_query.Node + 202, // 697: pg_query.JsonScalarExpr.output:type_name -> pg_query.JsonOutput + 127, // 698: pg_query.JsonSerializeExpr.expr:type_name -> pg_query.JsonValueExpr + 202, // 699: pg_query.JsonSerializeExpr.output:type_name -> pg_query.JsonOutput + 76, // 700: pg_query.JsonObjectConstructor.exprs:type_name -> pg_query.Node + 202, // 701: pg_query.JsonObjectConstructor.output:type_name -> pg_query.JsonOutput + 76, // 702: pg_query.JsonArrayConstructor.exprs:type_name -> pg_query.Node + 202, // 703: pg_query.JsonArrayConstructor.output:type_name -> pg_query.JsonOutput + 76, // 704: pg_query.JsonArrayQueryConstructor.query:type_name -> pg_query.Node + 202, // 705: pg_query.JsonArrayQueryConstructor.output:type_name -> pg_query.JsonOutput + 125, // 706: pg_query.JsonArrayQueryConstructor.format:type_name -> pg_query.JsonFormat + 202, // 707: pg_query.JsonAggConstructor.output:type_name -> pg_query.JsonOutput + 76, // 708: pg_query.JsonAggConstructor.agg_filter:type_name -> pg_query.Node + 76, // 709: pg_query.JsonAggConstructor.agg_order:type_name -> pg_query.Node + 166, // 710: pg_query.JsonAggConstructor.over:type_name -> pg_query.WindowDef + 215, // 711: pg_query.JsonObjectAgg.constructor:type_name -> pg_query.JsonAggConstructor + 208, // 712: pg_query.JsonObjectAgg.arg:type_name -> pg_query.JsonKeyValue + 215, // 713: pg_query.JsonArrayAgg.constructor:type_name -> pg_query.JsonAggConstructor + 127, // 714: pg_query.JsonArrayAgg.arg:type_name -> pg_query.JsonValueExpr + 76, // 715: pg_query.RawStmt.stmt:type_name -> pg_query.Node + 87, // 716: pg_query.InsertStmt.relation:type_name -> pg_query.RangeVar + 76, // 717: pg_query.InsertStmt.cols:type_name -> pg_query.Node + 76, // 718: pg_query.InsertStmt.select_stmt:type_name -> pg_query.Node + 194, // 719: pg_query.InsertStmt.on_conflict_clause:type_name -> pg_query.OnConflictClause + 200, // 720: pg_query.InsertStmt.returning_clause:type_name -> pg_query.ReturningClause + 192, // 721: pg_query.InsertStmt.with_clause:type_name -> pg_query.WithClause + 36, // 722: pg_query.InsertStmt.override:type_name -> pg_query.OverridingKind + 87, // 723: pg_query.DeleteStmt.relation:type_name -> pg_query.RangeVar + 76, // 724: pg_query.DeleteStmt.using_clause:type_name -> pg_query.Node + 76, // 725: pg_query.DeleteStmt.where_clause:type_name -> pg_query.Node + 200, // 726: pg_query.DeleteStmt.returning_clause:type_name -> pg_query.ReturningClause + 192, // 727: pg_query.DeleteStmt.with_clause:type_name -> pg_query.WithClause + 87, // 728: pg_query.UpdateStmt.relation:type_name -> pg_query.RangeVar + 76, // 729: pg_query.UpdateStmt.target_list:type_name -> pg_query.Node + 76, // 730: pg_query.UpdateStmt.where_clause:type_name -> pg_query.Node + 76, // 731: pg_query.UpdateStmt.from_clause:type_name -> pg_query.Node + 200, // 732: pg_query.UpdateStmt.returning_clause:type_name -> pg_query.ReturningClause + 192, // 733: pg_query.UpdateStmt.with_clause:type_name -> pg_query.WithClause + 87, // 734: pg_query.MergeStmt.relation:type_name -> pg_query.RangeVar + 76, // 735: pg_query.MergeStmt.source_relation:type_name -> pg_query.Node + 76, // 736: pg_query.MergeStmt.join_condition:type_name -> pg_query.Node + 76, // 737: pg_query.MergeStmt.merge_when_clauses:type_name -> pg_query.Node + 200, // 738: pg_query.MergeStmt.returning_clause:type_name -> pg_query.ReturningClause + 192, // 739: pg_query.MergeStmt.with_clause:type_name -> pg_query.WithClause + 76, // 740: pg_query.SelectStmt.distinct_clause:type_name -> pg_query.Node + 89, // 741: pg_query.SelectStmt.into_clause:type_name -> pg_query.IntoClause + 76, // 742: pg_query.SelectStmt.target_list:type_name -> pg_query.Node + 76, // 743: pg_query.SelectStmt.from_clause:type_name -> pg_query.Node + 76, // 744: pg_query.SelectStmt.where_clause:type_name -> pg_query.Node + 76, // 745: pg_query.SelectStmt.group_clause:type_name -> pg_query.Node + 76, // 746: pg_query.SelectStmt.having_clause:type_name -> pg_query.Node + 76, // 747: pg_query.SelectStmt.window_clause:type_name -> pg_query.Node + 76, // 748: pg_query.SelectStmt.values_lists:type_name -> pg_query.Node + 76, // 749: pg_query.SelectStmt.sort_clause:type_name -> pg_query.Node + 76, // 750: pg_query.SelectStmt.limit_offset:type_name -> pg_query.Node + 76, // 751: pg_query.SelectStmt.limit_count:type_name -> pg_query.Node + 66, // 752: pg_query.SelectStmt.limit_option:type_name -> pg_query.LimitOption + 76, // 753: pg_query.SelectStmt.locking_clause:type_name -> pg_query.Node + 192, // 754: pg_query.SelectStmt.with_clause:type_name -> pg_query.WithClause + 17, // 755: pg_query.SelectStmt.op:type_name -> pg_query.SetOperation + 223, // 756: pg_query.SelectStmt.larg:type_name -> pg_query.SelectStmt + 223, // 757: pg_query.SelectStmt.rarg:type_name -> pg_query.SelectStmt + 17, // 758: pg_query.SetOperationStmt.op:type_name -> pg_query.SetOperation + 76, // 759: pg_query.SetOperationStmt.larg:type_name -> pg_query.Node + 76, // 760: pg_query.SetOperationStmt.rarg:type_name -> pg_query.Node + 76, // 761: pg_query.SetOperationStmt.col_types:type_name -> pg_query.Node + 76, // 762: pg_query.SetOperationStmt.col_typmods:type_name -> pg_query.Node + 76, // 763: pg_query.SetOperationStmt.col_collations:type_name -> pg_query.Node + 76, // 764: pg_query.SetOperationStmt.group_clauses:type_name -> pg_query.Node + 76, // 765: pg_query.ReturnStmt.returnval:type_name -> pg_query.Node + 76, // 766: pg_query.PLAssignStmt.indirection:type_name -> pg_query.Node + 223, // 767: pg_query.PLAssignStmt.val:type_name -> pg_query.SelectStmt + 157, // 768: pg_query.CreateSchemaStmt.authrole:type_name -> pg_query.RoleSpec + 76, // 769: pg_query.CreateSchemaStmt.schema_elts:type_name -> pg_query.Node + 87, // 770: pg_query.AlterTableStmt.relation:type_name -> pg_query.RangeVar + 76, // 771: pg_query.AlterTableStmt.cmds:type_name -> pg_query.Node + 18, // 772: pg_query.AlterTableStmt.objtype:type_name -> pg_query.ObjectType + 20, // 773: pg_query.AlterTableCmd.subtype:type_name -> pg_query.AlterTableType + 157, // 774: pg_query.AlterTableCmd.newowner:type_name -> pg_query.RoleSpec + 76, // 775: pg_query.AlterTableCmd.def:type_name -> pg_query.Node + 19, // 776: pg_query.AlterTableCmd.behavior:type_name -> pg_query.DropBehavior + 76, // 777: pg_query.AlterCollationStmt.collname:type_name -> pg_query.Node + 76, // 778: pg_query.AlterDomainStmt.type_name:type_name -> pg_query.Node + 76, // 779: pg_query.AlterDomainStmt.def:type_name -> pg_query.Node + 19, // 780: pg_query.AlterDomainStmt.behavior:type_name -> pg_query.DropBehavior + 21, // 781: pg_query.GrantStmt.targtype:type_name -> pg_query.GrantTargetType + 18, // 782: pg_query.GrantStmt.objtype:type_name -> pg_query.ObjectType + 76, // 783: pg_query.GrantStmt.objects:type_name -> pg_query.Node + 76, // 784: pg_query.GrantStmt.privileges:type_name -> pg_query.Node + 76, // 785: pg_query.GrantStmt.grantees:type_name -> pg_query.Node + 157, // 786: pg_query.GrantStmt.grantor:type_name -> pg_query.RoleSpec + 19, // 787: pg_query.GrantStmt.behavior:type_name -> pg_query.DropBehavior + 76, // 788: pg_query.ObjectWithArgs.objname:type_name -> pg_query.Node + 76, // 789: pg_query.ObjectWithArgs.objargs:type_name -> pg_query.Node + 76, // 790: pg_query.ObjectWithArgs.objfuncargs:type_name -> pg_query.Node + 76, // 791: pg_query.AccessPriv.cols:type_name -> pg_query.Node + 76, // 792: pg_query.GrantRoleStmt.granted_roles:type_name -> pg_query.Node + 76, // 793: pg_query.GrantRoleStmt.grantee_roles:type_name -> pg_query.Node + 76, // 794: pg_query.GrantRoleStmt.opt:type_name -> pg_query.Node + 157, // 795: pg_query.GrantRoleStmt.grantor:type_name -> pg_query.RoleSpec + 19, // 796: pg_query.GrantRoleStmt.behavior:type_name -> pg_query.DropBehavior + 76, // 797: pg_query.AlterDefaultPrivilegesStmt.options:type_name -> pg_query.Node + 234, // 798: pg_query.AlterDefaultPrivilegesStmt.action:type_name -> pg_query.GrantStmt + 87, // 799: pg_query.CopyStmt.relation:type_name -> pg_query.RangeVar + 76, // 800: pg_query.CopyStmt.query:type_name -> pg_query.Node + 76, // 801: pg_query.CopyStmt.attlist:type_name -> pg_query.Node + 76, // 802: pg_query.CopyStmt.options:type_name -> pg_query.Node + 76, // 803: pg_query.CopyStmt.where_clause:type_name -> pg_query.Node + 22, // 804: pg_query.VariableSetStmt.kind:type_name -> pg_query.VariableSetKind + 76, // 805: pg_query.VariableSetStmt.args:type_name -> pg_query.Node + 87, // 806: pg_query.CreateStmt.relation:type_name -> pg_query.RangeVar + 76, // 807: pg_query.CreateStmt.table_elts:type_name -> pg_query.Node + 76, // 808: pg_query.CreateStmt.inh_relations:type_name -> pg_query.Node + 180, // 809: pg_query.CreateStmt.partbound:type_name -> pg_query.PartitionBoundSpec + 179, // 810: pg_query.CreateStmt.partspec:type_name -> pg_query.PartitionSpec + 151, // 811: pg_query.CreateStmt.of_typename:type_name -> pg_query.TypeName + 76, // 812: pg_query.CreateStmt.constraints:type_name -> pg_query.Node + 76, // 813: pg_query.CreateStmt.nnconstraints:type_name -> pg_query.Node + 76, // 814: pg_query.CreateStmt.options:type_name -> pg_query.Node + 37, // 815: pg_query.CreateStmt.oncommit:type_name -> pg_query.OnCommitAction + 23, // 816: pg_query.Constraint.contype:type_name -> pg_query.ConstrType + 76, // 817: pg_query.Constraint.raw_expr:type_name -> pg_query.Node + 76, // 818: pg_query.Constraint.keys:type_name -> pg_query.Node + 76, // 819: pg_query.Constraint.including:type_name -> pg_query.Node + 76, // 820: pg_query.Constraint.exclusions:type_name -> pg_query.Node + 76, // 821: pg_query.Constraint.options:type_name -> pg_query.Node + 76, // 822: pg_query.Constraint.where_clause:type_name -> pg_query.Node + 87, // 823: pg_query.Constraint.pktable:type_name -> pg_query.RangeVar + 76, // 824: pg_query.Constraint.fk_attrs:type_name -> pg_query.Node + 76, // 825: pg_query.Constraint.pk_attrs:type_name -> pg_query.Node + 76, // 826: pg_query.Constraint.fk_del_set_cols:type_name -> pg_query.Node + 76, // 827: pg_query.Constraint.old_conpfeqop:type_name -> pg_query.Node + 157, // 828: pg_query.CreateTableSpaceStmt.owner:type_name -> pg_query.RoleSpec + 76, // 829: pg_query.CreateTableSpaceStmt.options:type_name -> pg_query.Node + 76, // 830: pg_query.AlterTableSpaceOptionsStmt.options:type_name -> pg_query.Node + 18, // 831: pg_query.AlterTableMoveAllStmt.objtype:type_name -> pg_query.ObjectType + 76, // 832: pg_query.AlterTableMoveAllStmt.roles:type_name -> pg_query.Node + 76, // 833: pg_query.CreateExtensionStmt.options:type_name -> pg_query.Node + 76, // 834: pg_query.AlterExtensionStmt.options:type_name -> pg_query.Node + 18, // 835: pg_query.AlterExtensionContentsStmt.objtype:type_name -> pg_query.ObjectType + 76, // 836: pg_query.AlterExtensionContentsStmt.object:type_name -> pg_query.Node + 76, // 837: pg_query.CreateFdwStmt.func_options:type_name -> pg_query.Node + 76, // 838: pg_query.CreateFdwStmt.options:type_name -> pg_query.Node + 76, // 839: pg_query.AlterFdwStmt.func_options:type_name -> pg_query.Node + 76, // 840: pg_query.AlterFdwStmt.options:type_name -> pg_query.Node + 76, // 841: pg_query.CreateForeignServerStmt.options:type_name -> pg_query.Node + 76, // 842: pg_query.AlterForeignServerStmt.options:type_name -> pg_query.Node + 242, // 843: pg_query.CreateForeignTableStmt.base_stmt:type_name -> pg_query.CreateStmt + 76, // 844: pg_query.CreateForeignTableStmt.options:type_name -> pg_query.Node + 157, // 845: pg_query.CreateUserMappingStmt.user:type_name -> pg_query.RoleSpec + 76, // 846: pg_query.CreateUserMappingStmt.options:type_name -> pg_query.Node + 157, // 847: pg_query.AlterUserMappingStmt.user:type_name -> pg_query.RoleSpec + 76, // 848: pg_query.AlterUserMappingStmt.options:type_name -> pg_query.Node + 157, // 849: pg_query.DropUserMappingStmt.user:type_name -> pg_query.RoleSpec + 24, // 850: pg_query.ImportForeignSchemaStmt.list_type:type_name -> pg_query.ImportForeignSchemaType + 76, // 851: pg_query.ImportForeignSchemaStmt.table_list:type_name -> pg_query.Node + 76, // 852: pg_query.ImportForeignSchemaStmt.options:type_name -> pg_query.Node + 87, // 853: pg_query.CreatePolicyStmt.table:type_name -> pg_query.RangeVar + 76, // 854: pg_query.CreatePolicyStmt.roles:type_name -> pg_query.Node + 76, // 855: pg_query.CreatePolicyStmt.qual:type_name -> pg_query.Node + 76, // 856: pg_query.CreatePolicyStmt.with_check:type_name -> pg_query.Node + 87, // 857: pg_query.AlterPolicyStmt.table:type_name -> pg_query.RangeVar + 76, // 858: pg_query.AlterPolicyStmt.roles:type_name -> pg_query.Node + 76, // 859: pg_query.AlterPolicyStmt.qual:type_name -> pg_query.Node + 76, // 860: pg_query.AlterPolicyStmt.with_check:type_name -> pg_query.Node + 76, // 861: pg_query.CreateAmStmt.handler_name:type_name -> pg_query.Node + 87, // 862: pg_query.CreateTrigStmt.relation:type_name -> pg_query.RangeVar + 76, // 863: pg_query.CreateTrigStmt.funcname:type_name -> pg_query.Node + 76, // 864: pg_query.CreateTrigStmt.args:type_name -> pg_query.Node + 76, // 865: pg_query.CreateTrigStmt.columns:type_name -> pg_query.Node + 76, // 866: pg_query.CreateTrigStmt.when_clause:type_name -> pg_query.Node + 76, // 867: pg_query.CreateTrigStmt.transition_rels:type_name -> pg_query.Node + 87, // 868: pg_query.CreateTrigStmt.constrrel:type_name -> pg_query.RangeVar + 76, // 869: pg_query.CreateEventTrigStmt.whenclause:type_name -> pg_query.Node + 76, // 870: pg_query.CreateEventTrigStmt.funcname:type_name -> pg_query.Node + 76, // 871: pg_query.CreatePLangStmt.plhandler:type_name -> pg_query.Node + 76, // 872: pg_query.CreatePLangStmt.plinline:type_name -> pg_query.Node + 76, // 873: pg_query.CreatePLangStmt.plvalidator:type_name -> pg_query.Node + 25, // 874: pg_query.CreateRoleStmt.stmt_type:type_name -> pg_query.RoleStmtType + 76, // 875: pg_query.CreateRoleStmt.options:type_name -> pg_query.Node + 157, // 876: pg_query.AlterRoleStmt.role:type_name -> pg_query.RoleSpec + 76, // 877: pg_query.AlterRoleStmt.options:type_name -> pg_query.Node + 157, // 878: pg_query.AlterRoleSetStmt.role:type_name -> pg_query.RoleSpec + 240, // 879: pg_query.AlterRoleSetStmt.setstmt:type_name -> pg_query.VariableSetStmt + 76, // 880: pg_query.DropRoleStmt.roles:type_name -> pg_query.Node + 87, // 881: pg_query.CreateSeqStmt.sequence:type_name -> pg_query.RangeVar + 76, // 882: pg_query.CreateSeqStmt.options:type_name -> pg_query.Node + 87, // 883: pg_query.AlterSeqStmt.sequence:type_name -> pg_query.RangeVar + 76, // 884: pg_query.AlterSeqStmt.options:type_name -> pg_query.Node + 18, // 885: pg_query.DefineStmt.kind:type_name -> pg_query.ObjectType + 76, // 886: pg_query.DefineStmt.defnames:type_name -> pg_query.Node + 76, // 887: pg_query.DefineStmt.args:type_name -> pg_query.Node + 76, // 888: pg_query.DefineStmt.definition:type_name -> pg_query.Node + 76, // 889: pg_query.CreateDomainStmt.domainname:type_name -> pg_query.Node + 151, // 890: pg_query.CreateDomainStmt.type_name:type_name -> pg_query.TypeName + 156, // 891: pg_query.CreateDomainStmt.coll_clause:type_name -> pg_query.CollateClause + 76, // 892: pg_query.CreateDomainStmt.constraints:type_name -> pg_query.Node + 76, // 893: pg_query.CreateOpClassStmt.opclassname:type_name -> pg_query.Node + 76, // 894: pg_query.CreateOpClassStmt.opfamilyname:type_name -> pg_query.Node + 151, // 895: pg_query.CreateOpClassStmt.datatype:type_name -> pg_query.TypeName + 76, // 896: pg_query.CreateOpClassStmt.items:type_name -> pg_query.Node + 235, // 897: pg_query.CreateOpClassItem.name:type_name -> pg_query.ObjectWithArgs + 76, // 898: pg_query.CreateOpClassItem.order_family:type_name -> pg_query.Node + 76, // 899: pg_query.CreateOpClassItem.class_args:type_name -> pg_query.Node + 151, // 900: pg_query.CreateOpClassItem.storedtype:type_name -> pg_query.TypeName + 76, // 901: pg_query.CreateOpFamilyStmt.opfamilyname:type_name -> pg_query.Node + 76, // 902: pg_query.AlterOpFamilyStmt.opfamilyname:type_name -> pg_query.Node + 76, // 903: pg_query.AlterOpFamilyStmt.items:type_name -> pg_query.Node + 76, // 904: pg_query.DropStmt.objects:type_name -> pg_query.Node + 18, // 905: pg_query.DropStmt.remove_type:type_name -> pg_query.ObjectType + 19, // 906: pg_query.DropStmt.behavior:type_name -> pg_query.DropBehavior + 76, // 907: pg_query.TruncateStmt.relations:type_name -> pg_query.Node + 19, // 908: pg_query.TruncateStmt.behavior:type_name -> pg_query.DropBehavior + 18, // 909: pg_query.CommentStmt.objtype:type_name -> pg_query.ObjectType + 76, // 910: pg_query.CommentStmt.object:type_name -> pg_query.Node + 18, // 911: pg_query.SecLabelStmt.objtype:type_name -> pg_query.ObjectType + 76, // 912: pg_query.SecLabelStmt.object:type_name -> pg_query.Node + 76, // 913: pg_query.DeclareCursorStmt.query:type_name -> pg_query.Node + 26, // 914: pg_query.FetchStmt.direction:type_name -> pg_query.FetchDirection + 87, // 915: pg_query.IndexStmt.relation:type_name -> pg_query.RangeVar + 76, // 916: pg_query.IndexStmt.index_params:type_name -> pg_query.Node + 76, // 917: pg_query.IndexStmt.index_including_params:type_name -> pg_query.Node + 76, // 918: pg_query.IndexStmt.options:type_name -> pg_query.Node + 76, // 919: pg_query.IndexStmt.where_clause:type_name -> pg_query.Node + 76, // 920: pg_query.IndexStmt.exclude_op_names:type_name -> pg_query.Node + 76, // 921: pg_query.CreateStatsStmt.defnames:type_name -> pg_query.Node + 76, // 922: pg_query.CreateStatsStmt.stat_types:type_name -> pg_query.Node + 76, // 923: pg_query.CreateStatsStmt.exprs:type_name -> pg_query.Node + 76, // 924: pg_query.CreateStatsStmt.relations:type_name -> pg_query.Node + 76, // 925: pg_query.StatsElem.expr:type_name -> pg_query.Node + 76, // 926: pg_query.AlterStatsStmt.defnames:type_name -> pg_query.Node + 76, // 927: pg_query.AlterStatsStmt.stxstattarget:type_name -> pg_query.Node + 76, // 928: pg_query.CreateFunctionStmt.funcname:type_name -> pg_query.Node + 76, // 929: pg_query.CreateFunctionStmt.parameters:type_name -> pg_query.Node + 151, // 930: pg_query.CreateFunctionStmt.return_type:type_name -> pg_query.TypeName + 76, // 931: pg_query.CreateFunctionStmt.options:type_name -> pg_query.Node + 76, // 932: pg_query.CreateFunctionStmt.sql_body:type_name -> pg_query.Node + 151, // 933: pg_query.FunctionParameter.arg_type:type_name -> pg_query.TypeName + 27, // 934: pg_query.FunctionParameter.mode:type_name -> pg_query.FunctionParameterMode + 76, // 935: pg_query.FunctionParameter.defexpr:type_name -> pg_query.Node + 18, // 936: pg_query.AlterFunctionStmt.objtype:type_name -> pg_query.ObjectType + 235, // 937: pg_query.AlterFunctionStmt.func:type_name -> pg_query.ObjectWithArgs + 76, // 938: pg_query.AlterFunctionStmt.actions:type_name -> pg_query.Node + 76, // 939: pg_query.DoStmt.args:type_name -> pg_query.Node + 158, // 940: pg_query.CallStmt.funccall:type_name -> pg_query.FuncCall + 98, // 941: pg_query.CallStmt.funcexpr:type_name -> pg_query.FuncExpr + 76, // 942: pg_query.CallStmt.outargs:type_name -> pg_query.Node + 18, // 943: pg_query.RenameStmt.rename_type:type_name -> pg_query.ObjectType + 18, // 944: pg_query.RenameStmt.relation_type:type_name -> pg_query.ObjectType + 87, // 945: pg_query.RenameStmt.relation:type_name -> pg_query.RangeVar + 76, // 946: pg_query.RenameStmt.object:type_name -> pg_query.Node + 19, // 947: pg_query.RenameStmt.behavior:type_name -> pg_query.DropBehavior + 18, // 948: pg_query.AlterObjectDependsStmt.object_type:type_name -> pg_query.ObjectType + 87, // 949: pg_query.AlterObjectDependsStmt.relation:type_name -> pg_query.RangeVar + 76, // 950: pg_query.AlterObjectDependsStmt.object:type_name -> pg_query.Node + 80, // 951: pg_query.AlterObjectDependsStmt.extname:type_name -> pg_query.String + 18, // 952: pg_query.AlterObjectSchemaStmt.object_type:type_name -> pg_query.ObjectType + 87, // 953: pg_query.AlterObjectSchemaStmt.relation:type_name -> pg_query.RangeVar + 76, // 954: pg_query.AlterObjectSchemaStmt.object:type_name -> pg_query.Node + 18, // 955: pg_query.AlterOwnerStmt.object_type:type_name -> pg_query.ObjectType + 87, // 956: pg_query.AlterOwnerStmt.relation:type_name -> pg_query.RangeVar + 76, // 957: pg_query.AlterOwnerStmt.object:type_name -> pg_query.Node + 157, // 958: pg_query.AlterOwnerStmt.newowner:type_name -> pg_query.RoleSpec + 235, // 959: pg_query.AlterOperatorStmt.opername:type_name -> pg_query.ObjectWithArgs + 76, // 960: pg_query.AlterOperatorStmt.options:type_name -> pg_query.Node + 76, // 961: pg_query.AlterTypeStmt.type_name:type_name -> pg_query.Node + 76, // 962: pg_query.AlterTypeStmt.options:type_name -> pg_query.Node + 87, // 963: pg_query.RuleStmt.relation:type_name -> pg_query.RangeVar + 76, // 964: pg_query.RuleStmt.where_clause:type_name -> pg_query.Node + 59, // 965: pg_query.RuleStmt.event:type_name -> pg_query.CmdType + 76, // 966: pg_query.RuleStmt.actions:type_name -> pg_query.Node + 28, // 967: pg_query.TransactionStmt.kind:type_name -> pg_query.TransactionStmtKind + 76, // 968: pg_query.TransactionStmt.options:type_name -> pg_query.Node + 87, // 969: pg_query.CompositeTypeStmt.typevar:type_name -> pg_query.RangeVar + 76, // 970: pg_query.CompositeTypeStmt.coldeflist:type_name -> pg_query.Node + 76, // 971: pg_query.CreateEnumStmt.type_name:type_name -> pg_query.Node + 76, // 972: pg_query.CreateEnumStmt.vals:type_name -> pg_query.Node + 76, // 973: pg_query.CreateRangeStmt.type_name:type_name -> pg_query.Node + 76, // 974: pg_query.CreateRangeStmt.params:type_name -> pg_query.Node + 76, // 975: pg_query.AlterEnumStmt.type_name:type_name -> pg_query.Node + 87, // 976: pg_query.ViewStmt.view:type_name -> pg_query.RangeVar + 76, // 977: pg_query.ViewStmt.aliases:type_name -> pg_query.Node + 76, // 978: pg_query.ViewStmt.query:type_name -> pg_query.Node + 76, // 979: pg_query.ViewStmt.options:type_name -> pg_query.Node + 29, // 980: pg_query.ViewStmt.with_check_option:type_name -> pg_query.ViewCheckOption + 76, // 981: pg_query.CreatedbStmt.options:type_name -> pg_query.Node + 76, // 982: pg_query.AlterDatabaseStmt.options:type_name -> pg_query.Node + 240, // 983: pg_query.AlterDatabaseSetStmt.setstmt:type_name -> pg_query.VariableSetStmt + 76, // 984: pg_query.DropdbStmt.options:type_name -> pg_query.Node + 240, // 985: pg_query.AlterSystemStmt.setstmt:type_name -> pg_query.VariableSetStmt + 87, // 986: pg_query.ClusterStmt.relation:type_name -> pg_query.RangeVar + 76, // 987: pg_query.ClusterStmt.params:type_name -> pg_query.Node + 76, // 988: pg_query.VacuumStmt.options:type_name -> pg_query.Node + 76, // 989: pg_query.VacuumStmt.rels:type_name -> pg_query.Node + 87, // 990: pg_query.VacuumRelation.relation:type_name -> pg_query.RangeVar + 76, // 991: pg_query.VacuumRelation.va_cols:type_name -> pg_query.Node + 76, // 992: pg_query.ExplainStmt.query:type_name -> pg_query.Node + 76, // 993: pg_query.ExplainStmt.options:type_name -> pg_query.Node + 76, // 994: pg_query.CreateTableAsStmt.query:type_name -> pg_query.Node + 89, // 995: pg_query.CreateTableAsStmt.into:type_name -> pg_query.IntoClause + 18, // 996: pg_query.CreateTableAsStmt.objtype:type_name -> pg_query.ObjectType + 87, // 997: pg_query.RefreshMatViewStmt.relation:type_name -> pg_query.RangeVar + 30, // 998: pg_query.DiscardStmt.target:type_name -> pg_query.DiscardMode + 76, // 999: pg_query.LockStmt.relations:type_name -> pg_query.Node + 76, // 1000: pg_query.ConstraintsSetStmt.constraints:type_name -> pg_query.Node + 31, // 1001: pg_query.ReindexStmt.kind:type_name -> pg_query.ReindexObjectType + 87, // 1002: pg_query.ReindexStmt.relation:type_name -> pg_query.RangeVar + 76, // 1003: pg_query.ReindexStmt.params:type_name -> pg_query.Node + 76, // 1004: pg_query.CreateConversionStmt.conversion_name:type_name -> pg_query.Node + 76, // 1005: pg_query.CreateConversionStmt.func_name:type_name -> pg_query.Node + 151, // 1006: pg_query.CreateCastStmt.sourcetype:type_name -> pg_query.TypeName + 151, // 1007: pg_query.CreateCastStmt.targettype:type_name -> pg_query.TypeName + 235, // 1008: pg_query.CreateCastStmt.func:type_name -> pg_query.ObjectWithArgs + 41, // 1009: pg_query.CreateCastStmt.context:type_name -> pg_query.CoercionContext + 151, // 1010: pg_query.CreateTransformStmt.type_name:type_name -> pg_query.TypeName + 235, // 1011: pg_query.CreateTransformStmt.fromsql:type_name -> pg_query.ObjectWithArgs + 235, // 1012: pg_query.CreateTransformStmt.tosql:type_name -> pg_query.ObjectWithArgs + 76, // 1013: pg_query.PrepareStmt.argtypes:type_name -> pg_query.Node + 76, // 1014: pg_query.PrepareStmt.query:type_name -> pg_query.Node + 76, // 1015: pg_query.ExecuteStmt.params:type_name -> pg_query.Node + 76, // 1016: pg_query.DropOwnedStmt.roles:type_name -> pg_query.Node + 19, // 1017: pg_query.DropOwnedStmt.behavior:type_name -> pg_query.DropBehavior + 76, // 1018: pg_query.ReassignOwnedStmt.roles:type_name -> pg_query.Node + 157, // 1019: pg_query.ReassignOwnedStmt.newrole:type_name -> pg_query.RoleSpec + 76, // 1020: pg_query.AlterTSDictionaryStmt.dictname:type_name -> pg_query.Node + 76, // 1021: pg_query.AlterTSDictionaryStmt.options:type_name -> pg_query.Node + 32, // 1022: pg_query.AlterTSConfigurationStmt.kind:type_name -> pg_query.AlterTSConfigType + 76, // 1023: pg_query.AlterTSConfigurationStmt.cfgname:type_name -> pg_query.Node + 76, // 1024: pg_query.AlterTSConfigurationStmt.tokentype:type_name -> pg_query.Node + 76, // 1025: pg_query.AlterTSConfigurationStmt.dicts:type_name -> pg_query.Node + 87, // 1026: pg_query.PublicationTable.relation:type_name -> pg_query.RangeVar + 76, // 1027: pg_query.PublicationTable.where_clause:type_name -> pg_query.Node + 76, // 1028: pg_query.PublicationTable.columns:type_name -> pg_query.Node + 33, // 1029: pg_query.PublicationObjSpec.pubobjtype:type_name -> pg_query.PublicationObjSpecType + 341, // 1030: pg_query.PublicationObjSpec.pubtable:type_name -> pg_query.PublicationTable + 76, // 1031: pg_query.CreatePublicationStmt.options:type_name -> pg_query.Node + 76, // 1032: pg_query.CreatePublicationStmt.pubobjects:type_name -> pg_query.Node + 76, // 1033: pg_query.AlterPublicationStmt.options:type_name -> pg_query.Node + 76, // 1034: pg_query.AlterPublicationStmt.pubobjects:type_name -> pg_query.Node + 34, // 1035: pg_query.AlterPublicationStmt.action:type_name -> pg_query.AlterPublicationAction + 76, // 1036: pg_query.CreateSubscriptionStmt.publication:type_name -> pg_query.Node + 76, // 1037: pg_query.CreateSubscriptionStmt.options:type_name -> pg_query.Node + 35, // 1038: pg_query.AlterSubscriptionStmt.kind:type_name -> pg_query.AlterSubscriptionType + 76, // 1039: pg_query.AlterSubscriptionStmt.publication:type_name -> pg_query.Node + 76, // 1040: pg_query.AlterSubscriptionStmt.options:type_name -> pg_query.Node + 19, // 1041: pg_query.DropSubscriptionStmt.behavior:type_name -> pg_query.DropBehavior + 72, // 1042: pg_query.ScanToken.token:type_name -> pg_query.Token + 71, // 1043: pg_query.ScanToken.keyword_kind:type_name -> pg_query.KeywordKind + 350, // 1044: pg_query.SummaryResult.tables:type_name -> pg_query.SummaryResult.Table + 351, // 1045: pg_query.SummaryResult.aliases:type_name -> pg_query.SummaryResult.AliasesEntry + 352, // 1046: pg_query.SummaryResult.functions:type_name -> pg_query.SummaryResult.Function + 353, // 1047: pg_query.SummaryResult.filter_columns:type_name -> pg_query.SummaryResult.FilterColumn + 73, // 1048: pg_query.SummaryResult.Table.context:type_name -> pg_query.SummaryResult.Context + 73, // 1049: pg_query.SummaryResult.Function.context:type_name -> pg_query.SummaryResult.Context + 1050, // [1050:1050] is the sub-list for method output_type + 1050, // [1050:1050] is the sub-list for method input_type + 1050, // [1050:1050] is the sub-list for extension type_name + 1050, // [1050:1050] is the sub-list for extension extendee + 0, // [0:1050] is the sub-list for field type_name +} + +func init() { file_pg_query_proto_init() } +func file_pg_query_proto_init() { + if File_pg_query_proto != nil { + return + } + file_pg_query_proto_msgTypes[2].OneofWrappers = []any{ + (*Node_Alias)(nil), + (*Node_RangeVar)(nil), + (*Node_TableFunc)(nil), + (*Node_IntoClause)(nil), + (*Node_Var)(nil), + (*Node_Param)(nil), + (*Node_Aggref)(nil), + (*Node_GroupingFunc)(nil), + (*Node_WindowFunc)(nil), + (*Node_WindowFuncRunCondition)(nil), + (*Node_MergeSupportFunc)(nil), + (*Node_SubscriptingRef)(nil), + (*Node_FuncExpr)(nil), + (*Node_NamedArgExpr)(nil), + (*Node_OpExpr)(nil), + (*Node_DistinctExpr)(nil), + (*Node_NullIfExpr)(nil), + (*Node_ScalarArrayOpExpr)(nil), + (*Node_BoolExpr)(nil), + (*Node_SubLink)(nil), + (*Node_SubPlan)(nil), + (*Node_AlternativeSubPlan)(nil), + (*Node_FieldSelect)(nil), + (*Node_FieldStore)(nil), + (*Node_RelabelType)(nil), + (*Node_CoerceViaIo)(nil), + (*Node_ArrayCoerceExpr)(nil), + (*Node_ConvertRowtypeExpr)(nil), + (*Node_CollateExpr)(nil), + (*Node_CaseExpr)(nil), + (*Node_CaseWhen)(nil), + (*Node_CaseTestExpr)(nil), + (*Node_ArrayExpr)(nil), + (*Node_RowExpr)(nil), + (*Node_RowCompareExpr)(nil), + (*Node_CoalesceExpr)(nil), + (*Node_MinMaxExpr)(nil), + (*Node_SqlvalueFunction)(nil), + (*Node_XmlExpr)(nil), + (*Node_JsonFormat)(nil), + (*Node_JsonReturning)(nil), + (*Node_JsonValueExpr)(nil), + (*Node_JsonConstructorExpr)(nil), + (*Node_JsonIsPredicate)(nil), + (*Node_JsonBehavior)(nil), + (*Node_JsonExpr)(nil), + (*Node_JsonTablePath)(nil), + (*Node_JsonTablePathScan)(nil), + (*Node_JsonTableSiblingJoin)(nil), + (*Node_NullTest)(nil), + (*Node_BooleanTest)(nil), + (*Node_MergeAction)(nil), + (*Node_CoerceToDomain)(nil), + (*Node_CoerceToDomainValue)(nil), + (*Node_SetToDefault)(nil), + (*Node_CurrentOfExpr)(nil), + (*Node_NextValueExpr)(nil), + (*Node_InferenceElem)(nil), + (*Node_ReturningExpr)(nil), + (*Node_TargetEntry)(nil), + (*Node_RangeTblRef)(nil), + (*Node_JoinExpr)(nil), + (*Node_FromExpr)(nil), + (*Node_OnConflictExpr)(nil), + (*Node_Query)(nil), + (*Node_TypeName)(nil), + (*Node_ColumnRef)(nil), + (*Node_ParamRef)(nil), + (*Node_AExpr)(nil), + (*Node_TypeCast)(nil), + (*Node_CollateClause)(nil), + (*Node_RoleSpec)(nil), + (*Node_FuncCall)(nil), + (*Node_AStar)(nil), + (*Node_AIndices)(nil), + (*Node_AIndirection)(nil), + (*Node_AArrayExpr)(nil), + (*Node_ResTarget)(nil), + (*Node_MultiAssignRef)(nil), + (*Node_SortBy)(nil), + (*Node_WindowDef)(nil), + (*Node_RangeSubselect)(nil), + (*Node_RangeFunction)(nil), + (*Node_RangeTableFunc)(nil), + (*Node_RangeTableFuncCol)(nil), + (*Node_RangeTableSample)(nil), + (*Node_ColumnDef)(nil), + (*Node_TableLikeClause)(nil), + (*Node_IndexElem)(nil), + (*Node_DefElem)(nil), + (*Node_LockingClause)(nil), + (*Node_XmlSerialize)(nil), + (*Node_PartitionElem)(nil), + (*Node_PartitionSpec)(nil), + (*Node_PartitionBoundSpec)(nil), + (*Node_PartitionRangeDatum)(nil), + (*Node_PartitionCmd)(nil), + (*Node_RangeTblEntry)(nil), + (*Node_RtepermissionInfo)(nil), + (*Node_RangeTblFunction)(nil), + (*Node_TableSampleClause)(nil), + (*Node_WithCheckOption)(nil), + (*Node_SortGroupClause)(nil), + (*Node_GroupingSet)(nil), + (*Node_WindowClause)(nil), + (*Node_RowMarkClause)(nil), + (*Node_WithClause)(nil), + (*Node_InferClause)(nil), + (*Node_OnConflictClause)(nil), + (*Node_CtesearchClause)(nil), + (*Node_CtecycleClause)(nil), + (*Node_CommonTableExpr)(nil), + (*Node_MergeWhenClause)(nil), + (*Node_ReturningOption)(nil), + (*Node_ReturningClause)(nil), + (*Node_TriggerTransition)(nil), + (*Node_JsonOutput)(nil), + (*Node_JsonArgument)(nil), + (*Node_JsonFuncExpr)(nil), + (*Node_JsonTablePathSpec)(nil), + (*Node_JsonTable)(nil), + (*Node_JsonTableColumn)(nil), + (*Node_JsonKeyValue)(nil), + (*Node_JsonParseExpr)(nil), + (*Node_JsonScalarExpr)(nil), + (*Node_JsonSerializeExpr)(nil), + (*Node_JsonObjectConstructor)(nil), + (*Node_JsonArrayConstructor)(nil), + (*Node_JsonArrayQueryConstructor)(nil), + (*Node_JsonAggConstructor)(nil), + (*Node_JsonObjectAgg)(nil), + (*Node_JsonArrayAgg)(nil), + (*Node_RawStmt)(nil), + (*Node_InsertStmt)(nil), + (*Node_DeleteStmt)(nil), + (*Node_UpdateStmt)(nil), + (*Node_MergeStmt)(nil), + (*Node_SelectStmt)(nil), + (*Node_SetOperationStmt)(nil), + (*Node_ReturnStmt)(nil), + (*Node_PlassignStmt)(nil), + (*Node_CreateSchemaStmt)(nil), + (*Node_AlterTableStmt)(nil), + (*Node_AlterTableCmd)(nil), + (*Node_AtalterConstraint)(nil), + (*Node_ReplicaIdentityStmt)(nil), + (*Node_AlterCollationStmt)(nil), + (*Node_AlterDomainStmt)(nil), + (*Node_GrantStmt)(nil), + (*Node_ObjectWithArgs)(nil), + (*Node_AccessPriv)(nil), + (*Node_GrantRoleStmt)(nil), + (*Node_AlterDefaultPrivilegesStmt)(nil), + (*Node_CopyStmt)(nil), + (*Node_VariableSetStmt)(nil), + (*Node_VariableShowStmt)(nil), + (*Node_CreateStmt)(nil), + (*Node_Constraint)(nil), + (*Node_CreateTableSpaceStmt)(nil), + (*Node_DropTableSpaceStmt)(nil), + (*Node_AlterTableSpaceOptionsStmt)(nil), + (*Node_AlterTableMoveAllStmt)(nil), + (*Node_CreateExtensionStmt)(nil), + (*Node_AlterExtensionStmt)(nil), + (*Node_AlterExtensionContentsStmt)(nil), + (*Node_CreateFdwStmt)(nil), + (*Node_AlterFdwStmt)(nil), + (*Node_CreateForeignServerStmt)(nil), + (*Node_AlterForeignServerStmt)(nil), + (*Node_CreateForeignTableStmt)(nil), + (*Node_CreateUserMappingStmt)(nil), + (*Node_AlterUserMappingStmt)(nil), + (*Node_DropUserMappingStmt)(nil), + (*Node_ImportForeignSchemaStmt)(nil), + (*Node_CreatePolicyStmt)(nil), + (*Node_AlterPolicyStmt)(nil), + (*Node_CreateAmStmt)(nil), + (*Node_CreateTrigStmt)(nil), + (*Node_CreateEventTrigStmt)(nil), + (*Node_AlterEventTrigStmt)(nil), + (*Node_CreatePlangStmt)(nil), + (*Node_CreateRoleStmt)(nil), + (*Node_AlterRoleStmt)(nil), + (*Node_AlterRoleSetStmt)(nil), + (*Node_DropRoleStmt)(nil), + (*Node_CreateSeqStmt)(nil), + (*Node_AlterSeqStmt)(nil), + (*Node_DefineStmt)(nil), + (*Node_CreateDomainStmt)(nil), + (*Node_CreateOpClassStmt)(nil), + (*Node_CreateOpClassItem)(nil), + (*Node_CreateOpFamilyStmt)(nil), + (*Node_AlterOpFamilyStmt)(nil), + (*Node_DropStmt)(nil), + (*Node_TruncateStmt)(nil), + (*Node_CommentStmt)(nil), + (*Node_SecLabelStmt)(nil), + (*Node_DeclareCursorStmt)(nil), + (*Node_ClosePortalStmt)(nil), + (*Node_FetchStmt)(nil), + (*Node_IndexStmt)(nil), + (*Node_CreateStatsStmt)(nil), + (*Node_StatsElem)(nil), + (*Node_AlterStatsStmt)(nil), + (*Node_CreateFunctionStmt)(nil), + (*Node_FunctionParameter)(nil), + (*Node_AlterFunctionStmt)(nil), + (*Node_DoStmt)(nil), + (*Node_InlineCodeBlock)(nil), + (*Node_CallStmt)(nil), + (*Node_CallContext)(nil), + (*Node_RenameStmt)(nil), + (*Node_AlterObjectDependsStmt)(nil), + (*Node_AlterObjectSchemaStmt)(nil), + (*Node_AlterOwnerStmt)(nil), + (*Node_AlterOperatorStmt)(nil), + (*Node_AlterTypeStmt)(nil), + (*Node_RuleStmt)(nil), + (*Node_NotifyStmt)(nil), + (*Node_ListenStmt)(nil), + (*Node_UnlistenStmt)(nil), + (*Node_TransactionStmt)(nil), + (*Node_CompositeTypeStmt)(nil), + (*Node_CreateEnumStmt)(nil), + (*Node_CreateRangeStmt)(nil), + (*Node_AlterEnumStmt)(nil), + (*Node_ViewStmt)(nil), + (*Node_LoadStmt)(nil), + (*Node_CreatedbStmt)(nil), + (*Node_AlterDatabaseStmt)(nil), + (*Node_AlterDatabaseRefreshCollStmt)(nil), + (*Node_AlterDatabaseSetStmt)(nil), + (*Node_DropdbStmt)(nil), + (*Node_AlterSystemStmt)(nil), + (*Node_ClusterStmt)(nil), + (*Node_VacuumStmt)(nil), + (*Node_VacuumRelation)(nil), + (*Node_ExplainStmt)(nil), + (*Node_CreateTableAsStmt)(nil), + (*Node_RefreshMatViewStmt)(nil), + (*Node_CheckPointStmt)(nil), + (*Node_DiscardStmt)(nil), + (*Node_LockStmt)(nil), + (*Node_ConstraintsSetStmt)(nil), + (*Node_ReindexStmt)(nil), + (*Node_CreateConversionStmt)(nil), + (*Node_CreateCastStmt)(nil), + (*Node_CreateTransformStmt)(nil), + (*Node_PrepareStmt)(nil), + (*Node_ExecuteStmt)(nil), + (*Node_DeallocateStmt)(nil), + (*Node_DropOwnedStmt)(nil), + (*Node_ReassignOwnedStmt)(nil), + (*Node_AlterTsdictionaryStmt)(nil), + (*Node_AlterTsconfigurationStmt)(nil), + (*Node_PublicationTable)(nil), + (*Node_PublicationObjSpec)(nil), + (*Node_CreatePublicationStmt)(nil), + (*Node_AlterPublicationStmt)(nil), + (*Node_CreateSubscriptionStmt)(nil), + (*Node_AlterSubscriptionStmt)(nil), + (*Node_DropSubscriptionStmt)(nil), + (*Node_Integer)(nil), + (*Node_Float)(nil), + (*Node_Boolean)(nil), + (*Node_String_)(nil), + (*Node_BitString)(nil), + (*Node_List)(nil), + (*Node_IntList)(nil), + (*Node_OidList)(nil), + (*Node_AConst)(nil), + } + file_pg_query_proto_msgTypes[11].OneofWrappers = []any{ + (*A_Const_Ival)(nil), + (*A_Const_Fval)(nil), + (*A_Const_Boolval)(nil), + (*A_Const_Sval)(nil), + (*A_Const_Bsval)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_pg_query_proto_rawDesc), len(file_pg_query_proto_rawDesc)), + NumEnums: 74, + NumMessages: 280, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_pg_query_proto_goTypes, + DependencyIndexes: file_pg_query_proto_depIdxs, + EnumInfos: file_pg_query_proto_enumTypes, + MessageInfos: file_pg_query_proto_msgTypes, + }.Build() + File_pg_query_proto = out.File + file_pg_query_proto_goTypes = nil + file_pg_query_proto_depIdxs = nil +} diff --git a/internal/pgparse/pgparse.go b/internal/pgparse/pgparse.go new file mode 100644 index 0000000..cb45dd7 --- /dev/null +++ b/internal/pgparse/pgparse.go @@ -0,0 +1,468 @@ +// Package pgparse is the SQL parser: libpg_query compiled to WebAssembly and run by wazero. +// +// It offers the four operations sqlshape uses (Parse, Deparse, SplitWithScanner, +// ParsePlPgSqlToJSON) with the signatures of pg_query_go, so call sites do not care which +// runs underneath. Running the parser as wasm instead of through cgo keeps the binary a +// plain Go build (cross-compiled, CGO_ENABLED=0) and lets one binary carry one parser +// module per PostgreSQL version, so a schema declaring a version is judged by that +// version's own grammar. +// +// One parser module is embedded per supported PostgreSQL major version. The Go node types +// are generated from the newest version's pg_query.proto; every version's tree is read from +// the parser's JSON output, which names fields and node types (the protobuf numbers them, +// and libpg_query renumbers between versions), and an older version's few renamed fields +// are rewritten to the newest shape on the way in (see upgrade). +// +// A wasm instance is not safe for concurrent use; instances are pooled and one is taken +// per call. A module is compiled once per process on first use. +package pgparse + +import ( + "context" + _ "embed" + "fmt" + "os" + "path/filepath" + "strings" + "sync" + + "github.com/tetratelabs/wazero" + "github.com/tetratelabs/wazero/api" + "github.com/tetratelabs/wazero/imports/emscripten" + "github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +// Built by wasm/build.sh from libpg_query tag 17-6.2.2. +// +//go:embed wasm/pg_query_17.wasm +var wasm17 []byte + +// Built by wasm/build.sh from libpg_query tag 18.0.0. +// +//go:embed wasm/pg_query_18.wasm +var wasm18 []byte + +// Error is what the parser reports: the message as PostgreSQL words it, and the 1-based +// character position in the input the message points at (0 when there is none). +type Error struct { + Message string + Cursorpos int +} + +func (e *Error) Error() string { return e.Message } + +// module is one compiled parser with a pool of instances. +type module struct { + wasm []byte + once sync.Once + runtime wazero.Runtime + compiled wazero.CompiledModule + err error + pool sync.Pool // *instance +} + +// Version is a PostgreSQL major version with an embedded parser. The zero Version stands +// for Default. +type Version int + +const ( + PG17 Version = 17 + PG18 Version = 18 + + // Default is the version the package-level functions parse with: the newest version + // sqlshape supports end to end (parser, catalog, oracle, regress corpus). PG18's parser + // is embedded ahead of the rest. + Default = PG17 + + // newest is the version whose pg_query.proto the Go node types come from, and whose + // module deparses (a tree of any version is in its types). + newest = PG18 +) + +var modules = map[Version]*module{ + PG17: {wasm: wasm17}, + PG18: {wasm: wasm18}, +} + +// Supported lists the versions with an embedded parser, oldest first. +func Supported() []Version { return []Version{PG17, PG18} } + +// Or returns v, or Default when v is the zero Version (a Schema that declared none). +func (v Version) Or() Version { + if v == 0 { + return Default + } + return v +} + +func (v Version) module() *module { + m := modules[v.Or()] + if m == nil { + panic(fmt.Sprintf("pgparse: no parser for PostgreSQL %d", int(v))) + } + return m +} + +func (m *module) compile() error { + m.once.Do(func() { + ctx := context.Background() + m.runtime = wazero.NewRuntimeWithConfig(ctx, runtimeConfig()) + if _, err := wasi_snapshot_preview1.Instantiate(ctx, m.runtime); err != nil { + m.err = err + return + } + m.compiled, m.err = m.runtime.CompileModule(ctx, m.wasm) + if m.err != nil { + return + } + // emscripten's longjmp emulation (invoke_*): PostgreSQL reports a syntax error by + // longjmp, so this is the path every parse error takes. + if _, err := emscripten.InstantiateForModule(ctx, m.runtime, m.compiled); err != nil { + m.err = err + } + }) + return m.err +} + +// runtimeConfig compiles through an on-disk cache when the user has a cache directory. +// Compiling the module takes most of a second, and `go vet` starts one analyzer process per +// package; from the cache the compiled code loads in a few tens of milliseconds. The cache +// is keyed by wazero on the module's bytes and its own version, so a rebuilt wasm or an +// upgraded wazero never reads a stale entry. +func runtimeConfig() wazero.RuntimeConfig { + cfg := wazero.NewRuntimeConfig() + dir, err := os.UserCacheDir() + if err != nil { + return cfg + } + cache, err := wazero.NewCompilationCacheWithDir(filepath.Join(dir, "sqlshape", "wazero")) + if err != nil { + return cfg + } + return cfg.WithCompilationCache(cache) +} + +// instance is one instantiated module: its own linear memory, in use by one call at a time. +type instance struct { + mod api.Module + fns map[string]api.Function +} + +func (m *module) acquire() (*instance, error) { + if err := m.compile(); err != nil { + return nil, err + } + if v := m.pool.Get(); v != nil { + return v.(*instance), nil + } + ctx := context.Background() + // No name: wazero rejects a second instance of the same module name in one runtime. + mod, err := m.runtime.InstantiateModule(ctx, m.compiled, wazero.NewModuleConfig().WithName("")) + if err != nil { + return nil, err + } + in := &instance{mod: mod, fns: map[string]api.Function{}} + if _, err := in.call("pg_query_init"); err != nil { + mod.Close(ctx) + return nil, err + } + return in, nil +} + +// release returns an instance to the pool; an instance whose call trapped is dropped +// instead, since its memory may be in any state. +func (m *module) release(in *instance, trapped bool) { + if trapped { + in.mod.Close(context.Background()) + return + } + m.pool.Put(in) +} + +func (in *instance) call(name string, args ...uint64) (uint64, error) { + fn := in.fns[name] + if fn == nil { + fn = in.mod.ExportedFunction(name) + if fn == nil { + return 0, fmt.Errorf("pgparse: wasm export %q missing", name) + } + in.fns[name] = fn + } + res, err := fn.Call(context.Background(), args...) + if err != nil { + return 0, fmt.Errorf("pgparse: %s: %w", name, err) + } + if len(res) == 0 { + return 0, nil + } + return res[0], nil +} + +// put copies s into the instance's memory as a NUL-terminated string. +func (in *instance) put(s string) (uint32, error) { + p, err := in.call("malloc", uint64(len(s)+1)) + if err != nil { + return 0, err + } + if !in.mod.Memory().Write(uint32(p), append([]byte(s), 0)) { + return 0, fmt.Errorf("pgparse: memory write of %d bytes failed", len(s)+1) + } + return uint32(p), nil +} + +// putBytes copies b into the instance's memory. +func (in *instance) putBytes(b []byte) (uint32, error) { + p, err := in.call("malloc", uint64(max(len(b), 1))) + if err != nil { + return 0, err + } + if !in.mod.Memory().Write(uint32(p), b) { + return 0, fmt.Errorf("pgparse: memory write of %d bytes failed", len(b)) + } + return uint32(p), nil +} + +// cstr reads a NUL-terminated string at p. +func (in *instance) cstr(p uint32) string { + mem := in.mod.Memory() + var sb strings.Builder + for i := p; ; i++ { + b, ok := mem.ReadByte(i) + if !ok || b == 0 { + break + } + sb.WriteByte(b) + } + return sb.String() +} + +// bytesAt copies n bytes at p. +func (in *instance) bytesAt(p, n uint32) ([]byte, error) { + b, ok := in.mod.Memory().Read(p, n) + if !ok { + return nil, fmt.Errorf("pgparse: memory read of %d bytes at %d failed", n, p) + } + return append([]byte(nil), b...), nil +} + +// with runs f on a pooled instance of m. +func (m *module) with(f func(in *instance) error) error { + in, err := m.acquire() + if err != nil { + return err + } + err = f(in) + // A *Error is the parser's own report (a syntax error), the instance is fine; any other + // error came from the wasm call itself. + _, parserErr := err.(*Error) + m.release(in, err != nil && !parserErr) + return err +} + +// parseProtobuf returns the protobuf encoding of the ParseResult for sql. +func (m *module) parseProtobuf(sql string) (out []byte, err error) { + err = m.with(func(in *instance) error { + input, err := in.put(sql) + if err != nil { + return err + } + defer in.call("free", uint64(input)) + res, err := in.call("shim_parse", uint64(input)) + if err != nil { + return err + } + defer in.call("shim_parse_free", res) + if e, err := in.call("shim_parse_error", res); err != nil { + return err + } else if e != 0 { + cur, _ := in.call("shim_parse_cursor", res) + return &Error{Message: in.cstr(uint32(e)), Cursorpos: int(int32(cur))} + } + n, err := in.call("shim_parse_len", res) + if err != nil { + return err + } + p, err := in.call("shim_parse_data", res) + if err != nil { + return err + } + out, err = in.bytesAt(uint32(p), uint32(n)) + return err + }) + return out, err +} + +// parseJSON returns the JSON encoding of the ParseResult for sql. The JSON names fields +// and node types, where the protobuf numbers them, and libpg_query renumbers between +// PostgreSQL versions; so JSON is what a tree from any version's parser is read from. +func (m *module) parseJSON(sql string) (out string, err error) { + err = m.with(func(in *instance) error { + input, err := in.put(sql) + if err != nil { + return err + } + defer in.call("free", uint64(input)) + res, err := in.call("shim_parse_json", uint64(input)) + if err != nil { + return err + } + defer in.call("shim_parse_json_free", res) + if e, err := in.call("shim_parse_json_error", res); err != nil { + return err + } else if e != 0 { + cur, _ := in.call("shim_parse_json_cursor", res) + return &Error{Message: in.cstr(uint32(e)), Cursorpos: int(int32(cur))} + } + p, err := in.call("shim_parse_json_tree", res) + if err != nil { + return err + } + out = in.cstr(uint32(p)) + return nil + }) + return out, err +} + +// Parse parses sql with the Default version's parser. +func Parse(sql string) (*ParseResult, error) { return Default.Parse(sql) } + +// Parse parses sql with this version's grammar into a parse tree (in the newest version's +// node types). +func (v Version) Parse(sql string) (*ParseResult, error) { + js, err := v.module().parseJSON(sql) + if err != nil { + return nil, err + } + if v != newest { + js, err = upgrade(v, js) + if err != nil { + return nil, err + } + } + tree := &ParseResult{} + if err := protojson.Unmarshal([]byte(js), tree); err != nil { + return nil, fmt.Errorf("pgparse: decoding parse tree: %w", err) + } + return tree, nil +} + +// Deparse renders a parse tree back to SQL. +func Deparse(tree *ParseResult) (out string, err error) { + b, err := proto.Marshal(tree) + if err != nil { + return "", fmt.Errorf("pgparse: encoding parse tree: %w", err) + } + err = newest.module().with(func(in *instance) error { + data, err := in.putBytes(b) + if err != nil { + return err + } + defer in.call("free", uint64(data)) + res, err := in.call("shim_deparse", uint64(data), uint64(len(b))) + if err != nil { + return err + } + defer in.call("shim_deparse_free", res) + if e, err := in.call("shim_deparse_error", res); err != nil { + return err + } else if e != 0 { + return &Error{Message: in.cstr(uint32(e))} + } + q, err := in.call("shim_deparse_query", res) + if err != nil { + return err + } + out = in.cstr(uint32(q)) + return nil + }) + return out, err +} + +// ParsePlPgSqlToJSON parses PL/pgSQL with the Default version. +func ParsePlPgSqlToJSON(input string) (string, error) { return Default.ParsePlPgSqlToJSON(input) } + +// ParsePlPgSqlToJSON parses the PL/pgSQL function bodies in input (CREATE FUNCTION +// statements) and returns their parse trees as JSON. +func (v Version) ParsePlPgSqlToJSON(input string) (out string, err error) { + err = v.module().with(func(in *instance) error { + p, err := in.put(input) + if err != nil { + return err + } + defer in.call("free", uint64(p)) + res, err := in.call("shim_plpgsql", uint64(p)) + if err != nil { + return err + } + defer in.call("shim_plpgsql_free", res) + if e, err := in.call("shim_plpgsql_error", res); err != nil { + return err + } else if e != 0 { + return &Error{Message: in.cstr(uint32(e))} + } + j, err := in.call("shim_plpgsql_json", res) + if err != nil { + return err + } + out = in.cstr(uint32(j)) + return nil + }) + return out, err +} + +// SplitWithScanner splits input into statements by the Default version's scanner alone, so +// a text the grammar rejects can still be cut at its semicolons. With trimSpace, each +// statement is trimmed of surrounding whitespace. +func SplitWithScanner(input string, trimSpace bool) ([]string, error) { + return Default.SplitWithScanner(input, trimSpace) +} + +// SplitWithScanner splits input into statements with this version's scanner. +func (v Version) SplitWithScanner(input string, trimSpace bool) ([]string, error) { + out, err := v.module().splitWithScanner(input) + if trimSpace { + for i := range out { + out[i] = strings.TrimSpace(out[i]) + } + } + return out, err +} + +func (m *module) splitWithScanner(input string) (out []string, err error) { + err = m.with(func(in *instance) error { + p, err := in.put(input) + if err != nil { + return err + } + defer in.call("free", uint64(p)) + res, err := in.call("shim_split", uint64(p)) + if err != nil { + return err + } + defer in.call("shim_split_free", res) + if e, err := in.call("shim_split_error", res); err != nil { + return err + } else if e != 0 { + return &Error{Message: in.cstr(uint32(e))} + } + n, err := in.call("shim_split_n", res) + if err != nil { + return err + } + for i := range n { + loc, err := in.call("shim_split_location", res, i) + if err != nil { + return err + } + l, err := in.call("shim_split_len", res, i) + if err != nil { + return err + } + out = append(out, input[int32(loc):int32(loc)+int32(l)]) + } + return nil + }) + return out, err +} diff --git a/internal/pgparse/pgparse_test.go b/internal/pgparse/pgparse_test.go new file mode 100644 index 0000000..f041b99 --- /dev/null +++ b/internal/pgparse/pgparse_test.go @@ -0,0 +1,129 @@ +package pgparse + +import ( + "strings" + "sync" + "testing" +) + +// Equivalence with pg_query_go (cgo) was established when this package replaced it: the +// protobuf bytes of a corpus, error messages and cursor positions, deparse output and +// PL/pgSQL JSON were identical. From here the regress probe and the golden tests guard the +// parser; these tests cover the wasm boundary itself. + +func TestParse(t *testing.T) { + tree, err := Parse("SELECT a FROM t WHERE b = $1 AND c IN (1,2); SELECT 'あ'") + if err != nil { + t.Fatal(err) + } + if len(tree.Stmts) != 2 { + t.Fatalf("got %d statements, want 2", len(tree.Stmts)) + } + sel := tree.Stmts[0].Stmt.GetSelectStmt() + if sel == nil || len(sel.TargetList) != 1 || sel.WhereClause == nil { + t.Errorf("unexpected tree: %v", tree.Stmts[0]) + } + if got := tree.Stmts[1].StmtLocation; got != 44 { + t.Errorf("second statement location %d, want 44", got) + } +} + +// TestParseError: a syntax error (the longjmp path) is reported with PostgreSQL's message +// and position, and the instance keeps working afterwards. +func TestParseError(t *testing.T) { + for range 3 { + _, err := Parse("SELECT id FROM WHERE") + e, ok := err.(*Error) + if !ok { + t.Fatalf("got %v, want *Error", err) + } + if e.Message != `syntax error at or near "WHERE"` || e.Cursorpos != 16 { + t.Errorf("got %q at %d", e.Message, e.Cursorpos) + } + if _, err := Parse("SELECT 1"); err != nil { + t.Fatalf("after an error: %v", err) + } + } +} + +func TestDeparse(t *testing.T) { + tree, err := Parse("select a,b from t where c=1 order by a") + if err != nil { + t.Fatal(err) + } + got, err := Deparse(tree) + if err != nil { + t.Fatal(err) + } + if want := "SELECT a, b FROM t WHERE c = 1 ORDER BY a"; got != want { + t.Errorf("got %q, want %q", got, want) + } + if _, err := Deparse(&ParseResult{Stmts: []*RawStmt{{Stmt: &Node{}}}}); err == nil { + t.Error("want an error for an empty node") + } +} + +func TestParsePlPgSqlToJSON(t *testing.T) { + got, err := ParsePlPgSqlToJSON("CREATE FUNCTION f() RETURNS int LANGUAGE plpgsql AS $$ DECLARE x int := 1; BEGIN RETURN x + 1; END $$") + if err != nil { + t.Fatal(err) + } + if !strings.Contains(got, `"PLpgSQL_stmt_return"`) || !strings.Contains(got, `"x"`) { + t.Errorf("unexpected JSON: %s", got) + } + _, err = ParsePlPgSqlToJSON("CREATE FUNCTION f() RETURNS int LANGUAGE plpgsql AS $$ BEGIN RETRUN 1; END $$") + if e, ok := err.(*Error); !ok || !strings.HasPrefix(e.Message, "syntax error") { + t.Errorf("got %v, want a syntax error", err) + } +} + +func TestSplitWithScanner(t *testing.T) { + src := "SELECT 1;\n-- c\nSELECT FROM WHERE 'あ;';\n\nSELECT 3" + got, err := SplitWithScanner(src, false) + if err != nil { + t.Fatal(err) + } + if want := "SELECT 1|\n-- c\nSELECT FROM WHERE 'あ;'|\n\nSELECT 3"; strings.Join(got, "|") != want { + t.Errorf("got %q", got) + } + got, _ = SplitWithScanner(src, true) + if want := "SELECT 1|-- c\nSELECT FROM WHERE 'あ;'|SELECT 3"; strings.Join(got, "|") != want { + t.Errorf("trimmed: got %q", got) + } + if _, err := SplitWithScanner("SELECT 'unterminated", false); err == nil { + t.Error("want an error for an unterminated literal") + } +} + +// TestConcurrent: parallel callers each get a working instance. +func TestConcurrent(t *testing.T) { + const sql = "MERGE INTO o USING s ON o.id = s.id WHEN MATCHED THEN UPDATE SET x = s.x WHEN NOT MATCHED THEN INSERT (id, x) VALUES (s.id, s.x)" + want, err := PG17.module().parseProtobuf(sql) + if err != nil { + t.Fatal(err) + } + var wg sync.WaitGroup + for range 16 { + wg.Add(1) + go func() { + defer wg.Done() + for range 50 { + got, err := PG17.module().parseProtobuf(sql) + if err != nil || string(got) != string(want) { + t.Errorf("concurrent parse: err=%v same=%v", err, string(got) == string(want)) + return + } + if _, err := Parse("SELECT FROM WHERE"); err == nil { + t.Error("want a syntax error") + } + } + }() + } + wg.Wait() +} + +func BenchmarkParse(b *testing.B) { + for range b.N { + PG17.module().parseProtobuf("SELECT o.id, o.total, c.name FROM orders o JOIN customers c ON c.id = o.customer_id WHERE o.tenant_id = $1 AND o.status IN ('open','paid') ORDER BY o.created_at DESC LIMIT 20") + } +} diff --git a/internal/pgparse/upgrade.go b/internal/pgparse/upgrade.go new file mode 100644 index 0000000..85a8cec --- /dev/null +++ b/internal/pgparse/upgrade.go @@ -0,0 +1,93 @@ +package pgparse + +import ( + "encoding/json" + "fmt" + "strings" +) + +// upgrade rewrites the JSON parse tree of an older version into the shape of the newest +// version's pg_query.proto, so protojson can read it into the newest node types. Between +// majors libpg_query renames or drops a handful of fields; each older version lists its +// rewrites here, and a field a rewrite does not cover fails the decode loudly (protojson +// rejects unknown fields) rather than vanishing. +func upgrade(v Version, js string) (string, error) { + rules := upgrades[v] + if len(rules.keys) == 0 || !containsAny(js, rules.keys) { + return js, nil + } + var tree any + if err := json.Unmarshal([]byte(js), &tree); err != nil { + return "", fmt.Errorf("pgparse: reading parse tree: %w", err) + } + rules.walk(tree) + out, err := json.Marshal(tree) + if err != nil { + return "", fmt.Errorf("pgparse: rewriting parse tree: %w", err) + } + return string(out), nil +} + +// rewrite is one version's set of field rewrites; keys lists every JSON key it touches so +// a tree without any of them skips the decode/encode round trip. +type rewrite struct { + keys []string + apply func(obj map[string]any) +} + +func (r rewrite) walk(node any) { + switch n := node.(type) { + case map[string]any: + r.apply(n) + for _, v := range n { + r.walk(v) + } + case []any: + for _, v := range n { + r.walk(v) + } + } +} + +var upgrades = map[Version]rewrite{ + // 17 -> 18 + PG17: { + keys: []string{`"returningList"`, `"inhcount"`, `"rctype"`, `"SinglePartitionSpec"`, `"CONSTR_CHECK"`, `"CONSTR_FOREIGN"`, `"CONSTR_GENERATED"`}, + apply: func(obj map[string]any) { + // 18 added ENFORCED / NOT ENFORCED (CHECK and FOREIGN KEY) and VIRTUAL / STORED + // generated columns; a 17 constraint is enforced and a 17 generated column is + // stored, which 18's grammar writes explicitly + switch obj["contype"] { + case "CONSTR_CHECK", "CONSTR_FOREIGN": + if _, ok := obj["is_enforced"]; !ok { + obj["is_enforced"] = true + } + case "CONSTR_GENERATED": + if _, ok := obj["generated_kind"]; !ok { + obj["generated_kind"] = "s" + } + } + // RETURNING grew options (RETURNING OLD/NEW): the list became a clause + if list, ok := obj["returningList"]; ok { + delete(obj, "returningList") + obj["returningClause"] = map[string]any{"exprs": list} + } + // Constraint.inhcount and RowCompareExpr.rctype were dropped; both are catalog + // or executor state, never set in a raw parse tree + delete(obj, "inhcount") + delete(obj, "rctype") + // SinglePartitionSpec (ALTER TABLE ... SPLIT/MERGE PARTITION) was reverted before + // 17.0 shipped; the node cannot appear for SQL 17 accepts + delete(obj, "SinglePartitionSpec") + }, + }, +} + +func containsAny(s string, keys []string) bool { + for _, k := range keys { + if strings.Contains(s, k) { + return true + } + } + return false +} diff --git a/internal/pgparse/version_test.go b/internal/pgparse/version_test.go new file mode 100644 index 0000000..5fb5484 --- /dev/null +++ b/internal/pgparse/version_test.go @@ -0,0 +1,140 @@ +package pgparse + +import ( + "os" + "path/filepath" + "strings" + "testing" + "unicode/utf8" + + "google.golang.org/protobuf/proto" +) + +// TestUpgrade17: a 17 tree is read into the newest node types, its renamed fields moved. +func TestUpgrade17(t *testing.T) { + tree, err := PG17.Parse("INSERT INTO t (a) VALUES (1) RETURNING a, b") + if err != nil { + t.Fatal(err) + } + if tree.Version/10000 != 17 { + t.Errorf("version %d", tree.Version) + } + ins := tree.Stmts[0].Stmt.GetInsertStmt() + if got := len(ins.GetReturningClause().GetExprs()); got != 2 { + t.Errorf("RETURNING has %d expressions, want 2", got) + } + tree18, err := PG18.Parse("INSERT INTO t (a) VALUES (1) RETURNING a, b") + if err != nil { + t.Fatal(err) + } + tree18.Version = tree.Version + if !proto.Equal(tree, tree18) { + t.Error("the upgraded 17 tree differs from 18's own") + } + // a statement without any renamed field skips the rewrite and still decodes + if _, err := PG17.Parse("SELECT 1 WHERE (1,2) < (3,4)"); err != nil { + t.Error(err) + } + // 17's constraints are enforced and its generated columns stored, as 18 says explicitly + ddl := "CREATE TABLE t (a int CHECK (a > 0), b int GENERATED ALWAYS AS (a * 2) STORED, FOREIGN KEY (a) REFERENCES p (id))" + tree, err = PG17.Parse(ddl) + if err != nil { + t.Fatal(err) + } + tree18, err = PG18.Parse(ddl) + if err != nil { + t.Fatal(err) + } + tree18.Version = tree.Version + if !proto.Equal(tree, tree18) { + t.Errorf("17 DDL differs from 18's:\n17: %v\n18: %v", tree, tree18) + } +} + +func TestVersionGrammar(t *testing.T) { + // RETURNING OLD/NEW is 18 syntax + const sql = "UPDATE t SET a = 1 RETURNING old.a, new.a" + if _, err := PG18.Parse(sql); err != nil { + t.Errorf("18 rejects %q: %v", sql, err) + } + if _, err := PG17.Parse(sql); err != nil { + t.Errorf("17 parses %q as column references, expected no error: %v", sql, err) + } + const sql18 = "UPDATE t SET a = 1 RETURNING WITH (OLD AS o) o.a" + if _, err := PG18.Parse(sql18); err != nil { + t.Errorf("18 rejects %q: %v", sql18, err) + } + if _, err := PG17.Parse(sql18); err == nil { + t.Errorf("17 accepts %q", sql18) + } +} + +// TestCorpus runs the regress corpus (when present) through both versions: every statement +// 17 accepts must decode through the 17 upgrade (protojson rejects a field the upgrade +// missed), and for the newest version the JSON path must give the protobuf path's tree. +func TestCorpus(t *testing.T) { + dir := filepath.Join(os.Getenv("HOME"), ".cache", "sqlshape", "regress-17", "src", "test", "regress", "sql") + files, _ := filepath.Glob(filepath.Join(dir, "*.sql")) + if len(files) == 0 { + t.Skip("no regress corpus at " + dir) + } + var stmts, upgraded, same, rejected18 int + var failures []string + for _, f := range files { + src, err := os.ReadFile(f) + if err != nil { + t.Fatal(err) + } + parts, err := PG17.module().splitWithScanner(string(src)) + if err != nil { + continue + } + for _, sql := range parts { + if _, err := PG17.module().parseProtobuf(sql); err != nil || !utf8.ValidString(sql) { + continue // 17 rejects it, or invalid UTF-8 (a proto3 string may not carry it) + } + stmts++ + if _, err := PG17.Parse(sql); err != nil { + if len(failures) < 5 { + failures = append(failures, filepath.Base(f)+": "+truncate(sql, 100)+": "+err.Error()) + } + continue + } + upgraded++ + pb18, err := PG18.module().parseProtobuf(sql) + if err != nil { + rejected18++ + continue + } + want := &ParseResult{} + if err := proto.Unmarshal(pb18, want); err != nil { + continue + } + got, err := PG18.Parse(sql) + if err != nil { + t.Errorf("18 JSON path: %v", err) + continue + } + if proto.Equal(got, want) { + same++ + } else if len(failures) < 5 { + failures = append(failures, "18 JSON differs: "+truncate(sql, 100)) + } + } + } + for _, f := range failures { + t.Error(f) + } + if upgraded != stmts { + t.Errorf("%d of %d statements 17 accepts did not decode through the upgrade", stmts-upgraded, stmts) + } + t.Logf("17 accepts %d statements; 18 rejects %d of them; 18 JSON == protobuf for %d", stmts, rejected18, same) +} + +func truncate(s string, n int) string { + s = strings.ReplaceAll(s, "\n", " ") + if len(s) > n { + return s[:n] + "..." + } + return s +} diff --git a/internal/pgparse/wasm/build.sh b/internal/pgparse/wasm/build.sh new file mode 100755 index 0000000..78581eb --- /dev/null +++ b/internal/pgparse/wasm/build.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# Builds pg_query_.wasm from a libpg_query checkout with emscripten, and optionally +# regenerates the Go node types (../pg_query.pb.go) from that checkout's pg_query.proto. +# +# build.sh [pb] e.g. build.sh 17-6.2.2 pb +# +# With "pb" the Go node types are regenerated from that tag's pg_query.proto (the node types +# follow one version, the newest; a wasm alone is built for the others). +# +# The tag is cloned (shallow) into $LIBPG_QUERY_CACHE (default ~/.cache/sqlshape/libpg_query) +# unless already present. Needs emcc, protoc and protoc-gen-go on PATH: +# nix-shell -p emscripten protobuf protoc-gen-go --run "./build.sh 17-6.2.2" +# +# Why these flags: +# -sSUPPORT_LONGJMP=emscripten PostgreSQL reports a syntax error by longjmp (ereport -> +# siglongjmp). Emscripten emulates it through invoke_* imports +# that wazero's imports/emscripten package provides; wasm +# exception handling would need a host that supports it. +# -DDEBUG libpg_query redirects stderr through a pipe (dup2) unless +# DEBUG is set; there is no pipe in wasm. +# -sALLOW_MEMORY_GROWTH a schema.sql or a regress corpus can be large. +# -sERROR_ON_UNDEFINED_SYMBOLS=0 a few libc symbols the parser never reaches at runtime. +set -euo pipefail +tag=${1:?libpg_query tag, e.g. 17-6.2.2} +major=${tag%%[-.]*} # tags read 17-6.2.2 up to 17, 18.0.0 from 18 +here=$(cd "$(dirname "$0")" && pwd) +cache=${LIBPG_QUERY_CACHE:-$HOME/.cache/sqlshape/libpg_query} +src=$cache/$tag +if [ ! -d "$src" ]; then + mkdir -p "$cache" + git clone -q --depth 1 -b "$tag" https://github.com/pganalyze/libpg_query "$src" +fi +out=$here/pg_query_$major.wasm +srcs=$(ls "$src"/src/*.c "$src"/src/postgres/*.c) +srcs="$srcs $src/vendor/protobuf-c/protobuf-c.c $src/vendor/xxhash/xxhash.c $src/protobuf/pg_query.pb-c.c" +exports=_pg_query_init,_malloc,_free +exports=$exports,_shim_parse,_shim_parse_len,_shim_parse_data,_shim_parse_error,_shim_parse_cursor,_shim_parse_free +exports=$exports,_shim_parse_json,_shim_parse_json_tree,_shim_parse_json_error,_shim_parse_json_cursor,_shim_parse_json_free +exports=$exports,_shim_deparse,_shim_deparse_query,_shim_deparse_error,_shim_deparse_free +exports=$exports,_shim_plpgsql,_shim_plpgsql_json,_shim_plpgsql_error,_shim_plpgsql_free +exports=$exports,_shim_split,_shim_split_n,_shim_split_location,_shim_split_len,_shim_split_error,_shim_split_free +emcc -O2 -std=gnu99 -fwrapv -fno-strict-aliasing \ + -I"$src" -I"$src/vendor" -I"$src/src/include" -I"$src/src/postgres/include" \ + -DDEBUG \ + -w \ + -sSUPPORT_LONGJMP=emscripten -sALLOW_MEMORY_GROWTH=1 -sSTACK_SIZE=4194304 \ + -sEXPORTED_FUNCTIONS=$exports \ + -sERROR_ON_UNDEFINED_SYMBOLS=0 --no-entry \ + -o "$out" $srcs "$here/shim.c" +ls -la "$out" +[ "${2:-}" = pb ] || exit 0 +protoc --proto_path="$src/protobuf" --go_out="$here/.." \ + --go_opt=Mpg_query.proto=github.com/kr9ly/sqlshape/internal/pgparse --go_opt=paths=source_relative \ + "$src/protobuf/pg_query.proto" +gofmt -w "$here/../pg_query.pb.go" diff --git a/internal/pgparse/wasm/pg_query_17.wasm b/internal/pgparse/wasm/pg_query_17.wasm new file mode 100755 index 0000000..1fb7838 Binary files /dev/null and b/internal/pgparse/wasm/pg_query_17.wasm differ diff --git a/internal/pgparse/wasm/pg_query_18.wasm b/internal/pgparse/wasm/pg_query_18.wasm new file mode 100755 index 0000000..b55a8c8 Binary files /dev/null and b/internal/pgparse/wasm/pg_query_18.wasm differ diff --git a/internal/pgparse/wasm/shim.c b/internal/pgparse/wasm/shim.c new file mode 100644 index 0000000..403b12b --- /dev/null +++ b/internal/pgparse/wasm/shim.c @@ -0,0 +1,65 @@ +// Pointer-returning wrappers around the libpg_query C API. +// +// libpg_query returns its result structs by value; a wasm host cannot receive a struct +// return, so each entry point here allocates the result and hands back a pointer, and the +// fields are read through accessors. The host frees the result with the matching *_free. +#include +#include +#include "pg_query.h" + +// parse: SQL text -> protobuf-encoded ParseResult +PgQueryProtobufParseResult* shim_parse(const char* input) { + PgQueryProtobufParseResult* r = malloc(sizeof(PgQueryProtobufParseResult)); + *r = pg_query_parse_protobuf(input); + return r; +} +unsigned int shim_parse_len(PgQueryProtobufParseResult* r) { return r->parse_tree.len; } +char* shim_parse_data(PgQueryProtobufParseResult* r) { return r->parse_tree.data; } +char* shim_parse_error(PgQueryProtobufParseResult* r) { return r->error ? r->error->message : NULL; } +int shim_parse_cursor(PgQueryProtobufParseResult* r) { return r->error ? r->error->cursorpos : 0; } +void shim_parse_free(PgQueryProtobufParseResult* r) { pg_query_free_protobuf_parse_result(*r); free(r); } + +// parse_json: SQL text -> JSON ParseResult (field names, not numbers: readable across +// libpg_query versions, whose protobuf field numbers are not stable) +PgQueryParseResult* shim_parse_json(const char* input) { + PgQueryParseResult* r = malloc(sizeof(PgQueryParseResult)); + *r = pg_query_parse(input); + return r; +} +char* shim_parse_json_tree(PgQueryParseResult* r) { return r->parse_tree; } +char* shim_parse_json_error(PgQueryParseResult* r) { return r->error ? r->error->message : NULL; } +int shim_parse_json_cursor(PgQueryParseResult* r) { return r->error ? r->error->cursorpos : 0; } +void shim_parse_json_free(PgQueryParseResult* r) { pg_query_free_parse_result(*r); free(r); } + +// deparse: protobuf-encoded ParseResult -> SQL text +PgQueryDeparseResult* shim_deparse(char* data, unsigned int len) { + PgQueryProtobuf p; p.data = data; p.len = len; + PgQueryDeparseResult* r = malloc(sizeof(PgQueryDeparseResult)); + *r = pg_query_deparse_protobuf(p); + return r; +} +char* shim_deparse_query(PgQueryDeparseResult* r) { return r->query; } +char* shim_deparse_error(PgQueryDeparseResult* r) { return r->error ? r->error->message : NULL; } +void shim_deparse_free(PgQueryDeparseResult* r) { pg_query_free_deparse_result(*r); free(r); } + +// plpgsql: CREATE FUNCTION text -> JSON of the PL/pgSQL parse trees +PgQueryPlpgsqlParseResult* shim_plpgsql(const char* input) { + PgQueryPlpgsqlParseResult* r = malloc(sizeof(PgQueryPlpgsqlParseResult)); + *r = pg_query_parse_plpgsql(input); + return r; +} +char* shim_plpgsql_json(PgQueryPlpgsqlParseResult* r) { return r->plpgsql_funcs; } +char* shim_plpgsql_error(PgQueryPlpgsqlParseResult* r) { return r->error ? r->error->message : NULL; } +void shim_plpgsql_free(PgQueryPlpgsqlParseResult* r) { pg_query_free_plpgsql_parse_result(*r); free(r); } + +// split: SQL text -> statement byte spans, by the scanner alone (no grammar) +PgQuerySplitResult* shim_split(const char* input) { + PgQuerySplitResult* r = malloc(sizeof(PgQuerySplitResult)); + *r = pg_query_split_with_scanner(input); + return r; +} +int shim_split_n(PgQuerySplitResult* r) { return r->n_stmts; } +int shim_split_location(PgQuerySplitResult* r, int i) { return r->stmts[i]->stmt_location; } +int shim_split_len(PgQuerySplitResult* r, int i) { return r->stmts[i]->stmt_len; } +char* shim_split_error(PgQuerySplitResult* r) { return r->error ? r->error->message : NULL; } +void shim_split_free(PgQuerySplitResult* r) { pg_query_free_split_result(*r); free(r); } diff --git a/internal/schema/ddl.go b/internal/schema/ddl.go index 87e870f..341e956 100644 --- a/internal/schema/ddl.go +++ b/internal/schema/ddl.go @@ -5,9 +5,8 @@ import ( "strconv" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // The DDL the loader applies beyond CREATE TABLE / VIEW / FUNCTION: inheritance and @@ -60,7 +59,7 @@ func (s *Schema) ViewsRestricted() bool { return s.restrictViews } // setVariableValues flattens SET's argument list: constants, identifiers and the // comma-separated lists DateStyle accepts inside one string. -func setVariableValues(st *pg_query.VariableSetStmt) []string { +func setVariableValues(st *pgparse.VariableSetStmt) []string { var out []string for _, n := range st.Args { var v string @@ -89,9 +88,9 @@ func setVariableValues(st *pg_query.VariableSetStmt) []string { return out } -func (s *Schema) setVariable(st *pg_query.VariableSetStmt) { - reset := st.Kind == pg_query.VariableSetKind_VAR_RESET || st.Kind == pg_query.VariableSetKind_VAR_RESET_ALL || - st.Kind == pg_query.VariableSetKind_VAR_SET_DEFAULT +func (s *Schema) setVariable(st *pgparse.VariableSetStmt) { + reset := st.Kind == pgparse.VariableSetKind_VAR_RESET || st.Kind == pgparse.VariableSetKind_VAR_RESET_ALL || + st.Kind == pgparse.VariableSetKind_VAR_SET_DEFAULT switch strings.ToLower(st.Name) { case "datestyle": if reset { @@ -151,7 +150,7 @@ func (s *Schema) setVariable(st *pg_query.VariableSetStmt) { default: return } - if st.Kind == pg_query.VariableSetKind_VAR_RESET || st.Kind == pg_query.VariableSetKind_VAR_RESET_ALL { + if st.Kind == pgparse.VariableSetKind_VAR_RESET || st.Kind == pgparse.VariableSetKind_VAR_RESET_ALL { s.searchPath = nil return } @@ -211,39 +210,39 @@ func (s *Schema) inherit(rel *Relation, parent *Relation, partition bool, loc in // likeClause copies what CREATE TABLE (LIKE source INCLUDING ...) copies: columns with // NOT NULL and collation always; defaults, identity, generated expressions, CHECK // constraints and indexes on request (INCLUDING ALL takes everything). -func (s *Schema) likeClause(rel *Relation, lk *pg_query.TableLikeClause, loc int32) { +func (s *Schema) likeClause(rel *Relation, lk *pgparse.TableLikeClause, loc int32) { schema, name := s.rangeVar(lk.Relation) src := s.relByName[schema+"."+name] if src == nil { s.problem(loc, "table %s: LIKE: relation %q does not exist", rel.Name, name) return } - has := func(o pg_query.TableLikeOption) bool { - return lk.Options&(1< 0 && st.Behavior != pg_query.DropBehavior_DROP_CASCADE { + if len(keyed) > 0 && st.Behavior != pgparse.DropBehavior_DROP_CASCADE { s.problem(loc, "DROP FUNCTION %s: a partition key depends on it (use CASCADE)", name) continue } @@ -526,9 +525,9 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { if !removed && !st.MissingOk { s.problem(loc, "DROP FUNCTION: function %q does not exist", name) } - case pg_query.ObjectType_OBJECT_POLICY: + case pgparse.ObjectType_OBJECT_POLICY: s.dropPolicy(strs(on.GetList().GetItems()), st.MissingOk, loc) - case pg_query.ObjectType_OBJECT_TRIGGER: + case pgparse.ObjectType_OBJECT_TRIGGER: items := strs(on.GetList().GetItems()) name := items[len(items)-1] var kept []*Trigger @@ -538,7 +537,7 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { } } s.Triggers = kept - case pg_query.ObjectType_OBJECT_CAST: + case pgparse.ObjectType_OBJECT_CAST: // on is a List [source TypeName, target TypeName] items := on.GetList().GetItems() if len(items) == 2 { @@ -554,7 +553,7 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { s.Casts = kept } } - case pg_query.ObjectType_OBJECT_OPERATOR: + case pgparse.ObjectType_OBJECT_OPERATOR: owa := on.GetObjectWithArgs() _, name := qualified(strs(owa.GetObjname())) var kept []*catalog.Operator @@ -564,7 +563,7 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { } } s.Operators = kept - case pg_query.ObjectType_OBJECT_SCHEMA: + case pgparse.ObjectType_OBJECT_SCHEMA: name := on.GetString_().GetSval() for _, r := range append([]*Relation{}, s.Relations...) { if r.Schema == name { @@ -581,7 +580,7 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { s.Functions = fns s.Types.removeSchema(name) delete(s.schemas, name) - case pg_query.ObjectType_OBJECT_RULE: + case pgparse.ObjectType_OBJECT_RULE: // DROP RULE name ON table parts := strs(on.GetList().GetItems()) if len(parts) >= 2 { @@ -592,7 +591,7 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { rel.rebuildRules() } } - case pg_query.ObjectType_OBJECT_EXTENSION, pg_query.ObjectType_OBJECT_COLLATION: + case pgparse.ObjectType_OBJECT_EXTENSION, pgparse.ObjectType_OBJECT_COLLATION: // no typing consequence default: s.problem(loc, "unsupported DROP of %v", st.RemoveType) @@ -601,7 +600,7 @@ func (s *Schema) drop(st *pg_query.DropStmt, loc int32) { } // argsMatch reports whether f's input parameters are the given types (DROP FUNCTION f(int, text)). -func (s *Schema) argsMatch(f *Function, args []*pg_query.Node) bool { +func (s *Schema) argsMatch(f *Function, args []*pgparse.Node) bool { var in []TypeRef for _, a := range f.Args { if a.Mode == 'i' || a.Mode == 'b' || a.Mode == 'v' { @@ -768,7 +767,7 @@ func (s *Schema) dropColumn(rel *Relation, name string, loc int32, missingOk boo // --- ALTER TYPE / ALTER DOMAIN -------------------------------------------------------- -func (s *Schema) alterEnum(st *pg_query.AlterEnumStmt, loc int32) { +func (s *Schema) alterEnum(st *pgparse.AlterEnumStmt, loc int32) { schema, name := qualified(strs(st.TypeName)) if schema == "" { schema = s.creationSchema() @@ -818,7 +817,7 @@ func (s *Schema) alterEnum(st *pg_query.AlterEnumStmt, loc int32) { s.problem(loc, "ALTER TYPE %s: label %q does not exist", name, st.NewValNeighbor) } -func (s *Schema) alterDomain(st *pg_query.AlterDomainStmt, loc int32) { +func (s *Schema) alterDomain(st *pgparse.AlterDomainStmt, loc int32) { schema, name := qualified(strs(st.TypeName)) if schema == "" { schema = s.creationSchema() @@ -838,7 +837,7 @@ func (s *Schema) alterDomain(st *pg_query.AlterDomainStmt, loc int32) { case "C": c := st.Def.GetConstraint() switch c.GetContype() { - case pg_query.ConstrType_CONSTR_CHECK: + case pgparse.ConstrType_CONSTR_CHECK: cn := c.Conname if cn == "" { cn = uniqueName(name+"_check", func(n string) bool { @@ -851,7 +850,7 @@ func (s *Schema) alterDomain(st *pg_query.AlterDomainStmt, loc int32) { }) } d.Checks = append(d.Checks, &Constraint{Name: cn, Kind: Check, Expr: c.RawExpr}) - case pg_query.ConstrType_CONSTR_NOTNULL: + case pgparse.ConstrType_CONSTR_NOTNULL: d.NotNull = true default: s.problem(loc, "ALTER DOMAIN %s: unsupported constraint %v", name, c.GetContype()) @@ -878,7 +877,7 @@ func (s *Schema) alterDomain(st *pg_query.AlterDomainStmt, loc int32) { // --- CREATE TYPE AS RANGE, CREATE COLLATION, CREATE AGGREGATE / OPERATOR / CAST ------------ -func (s *Schema) createRange(st *pg_query.CreateRangeStmt, loc int32) { +func (s *Schema) createRange(st *pgparse.CreateRangeStmt, loc int32) { schema, name := qualified(strs(st.TypeName)) if schema == "" { schema = s.creationSchema() @@ -925,26 +924,26 @@ func (s *Schema) createRange(st *pg_query.CreateRangeStmt, loc int32) { } // define handles CREATE AGGREGATE / OPERATOR / COLLATION (DefineStmt). -func (s *Schema) define(st *pg_query.DefineStmt, loc int32) { +func (s *Schema) define(st *pgparse.DefineStmt, loc int32) { schema, name := qualified(strs(st.Defnames)) if schema == "" { schema = s.creationSchema() } - defs := map[string]*pg_query.Node{} + defs := map[string]*pgparse.Node{} for _, dn := range st.Definition { d := dn.GetDefElem() defs[strings.ToLower(d.GetDefname())] = d.GetArg() } switch st.Kind { - case pg_query.ObjectType_OBJECT_COLLATION: + case pgparse.ObjectType_OBJECT_COLLATION: s.Types.Collations[name] = true - case pg_query.ObjectType_OBJECT_AGGREGATE: + case pgparse.ObjectType_OBJECT_AGGREGATE: s.createAggregate(schema, name, st, defs, loc) - case pg_query.ObjectType_OBJECT_OPERATOR: + case pgparse.ObjectType_OBJECT_OPERATOR: s.createOperator(schema, name, defs, loc) - case pg_query.ObjectType_OBJECT_TSCONFIGURATION, pg_query.ObjectType_OBJECT_TSDICTIONARY, pg_query.ObjectType_OBJECT_TSPARSER, pg_query.ObjectType_OBJECT_TSTEMPLATE: + case pgparse.ObjectType_OBJECT_TSCONFIGURATION, pgparse.ObjectType_OBJECT_TSDICTIONARY, pgparse.ObjectType_OBJECT_TSPARSER, pgparse.ObjectType_OBJECT_TSTEMPLATE: // text search objects: no typing consequence - case pg_query.ObjectType_OBJECT_TYPE: + case pgparse.ObjectType_OBJECT_TYPE: s.createBaseType(schema, name, defs, loc) default: s.problem(loc, "unsupported CREATE %v", st.Kind) @@ -954,7 +953,7 @@ func (s *Schema) define(st *pg_query.DefineStmt, loc int32) { // createBaseType handles CREATE TYPE name (a shell type) and CREATE TYPE name (input = ..., // output = ..., like = t): an opaque base type the analyzer can only meet through the // casts and functions declared for it. LIKE lends its category, length and pass-by-value. -func (s *Schema) createBaseType(schema, name string, defs map[string]*pg_query.Node, loc int32) { +func (s *Schema) createBaseType(schema, name string, defs map[string]*pgparse.Node, loc int32) { t := s.Types.Lookup(schema, name) if t == nil { t = s.Types.addUser(schema, name, 'b', 'U', 0, 0) @@ -984,7 +983,7 @@ func (s *Schema) createBaseType(schema, name string, defs map[string]*pg_query.N // createAggregate registers CREATE AGGREGATE name (args) (sfunc = ..., stype = ..., // finalfunc = ...) as a function of kind aggregate: the result is finalfunc's return type // when there is one, the state type otherwise. -func (s *Schema) createAggregate(schema, name string, st *pg_query.DefineStmt, defs map[string]*pg_query.Node, loc int32) { +func (s *Schema) createAggregate(schema, name string, st *pgparse.DefineStmt, defs map[string]*pgparse.Node, loc int32) { fn := &Function{OID: s.nextOID, Schema: schema, Name: name, IsAgg: true, AggKind: 'n', Volatile: 'i'} s.nextOID++ // Args: [list of FunctionParameter (nil for the old syntax), numDirectArgs] @@ -1007,7 +1006,7 @@ func (s *Schema) createAggregate(schema, name string, st *pg_query.DefineStmt, d return } mode := byte('i') - if p.Mode == pg_query.FunctionParameterMode_FUNC_PARAM_VARIADIC { + if p.Mode == pgparse.FunctionParameterMode_FUNC_PARAM_VARIADIC { mode = 'v' } fn.Args = append(fn.Args, FuncArg{Name: p.Name, Type: tr, Mode: mode}) @@ -1098,7 +1097,7 @@ func (s *Schema) functionReturn(schema, name string, args []TypeRef) (ret TypeRe // createOperator registers CREATE OPERATOR name (leftarg = ..., rightarg = ..., function = ...). // The result type is the implementing function's. -func (s *Schema) createOperator(schema, name string, defs map[string]*pg_query.Node, loc int32) { +func (s *Schema) createOperator(schema, name string, defs map[string]*pgparse.Node, loc int32) { op := &catalog.Operator{OID: s.nextOID, Name: name, Kind: 'b', Schema: schema} s.nextOID++ if l := defs["leftarg"]; l != nil { @@ -1150,7 +1149,7 @@ func (s *Schema) createOperator(schema, name string, defs map[string]*pg_query.N s.Operators = append(s.Operators, op) } -func (s *Schema) createCast(st *pg_query.CreateCastStmt, loc int32) { +func (s *Schema) createCast(st *pgparse.CreateCastStmt, loc int32) { src, err := s.resolveType(st.Sourcetype) if err != nil { s.problem(loc, "CREATE CAST: %v", err) @@ -1164,9 +1163,9 @@ func (s *Schema) createCast(st *pg_query.CreateCastStmt, loc int32) { c := &catalog.Cast{OID: s.nextOID, Source: src.OID, Target: dst.OID, Context: 'e', Method: 'b'} s.nextOID++ switch st.Context { - case pg_query.CoercionContext_COERCION_IMPLICIT: + case pgparse.CoercionContext_COERCION_IMPLICIT: c.Context = 'i' - case pg_query.CoercionContext_COERCION_ASSIGNMENT: + case pgparse.CoercionContext_COERCION_ASSIGNMENT: c.Context = 'a' } switch { @@ -1252,7 +1251,7 @@ func (r *Relation) queryRangeVars() []rangeRef { } if r.queryRefsFor != r.Query { r.queryRefs = r.queryRefs[:0] - WalkNodes(r.Query, func(n *pg_query.Node) { + WalkNodes(r.Query, func(n *pgparse.Node) { if rv := n.GetRangeVar(); rv != nil { r.queryRefs = append(r.queryRefs, rangeRef{rv.Schemaname, rv.Relname}) } @@ -1265,11 +1264,11 @@ func (r *Relation) queryRangeVars() []rangeRef { type rangeRef struct{ schema, name string } // alterObjectSchema is ALTER ... SET SCHEMA for the objects the loader models. -func (s *Schema) alterObjectSchema(st *pg_query.AlterObjectSchemaStmt, loc int32) { +func (s *Schema) alterObjectSchema(st *pgparse.AlterObjectSchemaStmt, loc int32) { to := st.Newschema switch st.ObjectType { - case pg_query.ObjectType_OBJECT_TABLE, pg_query.ObjectType_OBJECT_VIEW, pg_query.ObjectType_OBJECT_MATVIEW, - pg_query.ObjectType_OBJECT_SEQUENCE, pg_query.ObjectType_OBJECT_FOREIGN_TABLE: + case pgparse.ObjectType_OBJECT_TABLE, pgparse.ObjectType_OBJECT_VIEW, pgparse.ObjectType_OBJECT_MATVIEW, + pgparse.ObjectType_OBJECT_SEQUENCE, pgparse.ObjectType_OBJECT_FOREIGN_TABLE: schema, name := s.lookupRangeVar(st.Relation) rel := s.relByName[schema+"."+name] if rel == nil { @@ -1282,7 +1281,7 @@ func (s *Schema) alterObjectSchema(st *pg_query.AlterObjectSchemaStmt, loc int32 rel.Schema = to s.relByName[to+"."+name] = rel s.Types.moveUser(rel.RowType, to) - case pg_query.ObjectType_OBJECT_TYPE, pg_query.ObjectType_OBJECT_DOMAIN: + case pgparse.ObjectType_OBJECT_TYPE, pgparse.ObjectType_OBJECT_DOMAIN: tn := st.Object.GetTypeName() tr, err := s.resolveType(tn) if err != nil { @@ -1290,7 +1289,7 @@ func (s *Schema) alterObjectSchema(st *pg_query.AlterObjectSchemaStmt, loc int32 return } s.Types.moveUser(tr.OID, to) - case pg_query.ObjectType_OBJECT_FUNCTION, pg_query.ObjectType_OBJECT_PROCEDURE, pg_query.ObjectType_OBJECT_AGGREGATE, pg_query.ObjectType_OBJECT_ROUTINE: + case pgparse.ObjectType_OBJECT_FUNCTION, pgparse.ObjectType_OBJECT_PROCEDURE, pgparse.ObjectType_OBJECT_AGGREGATE, pgparse.ObjectType_OBJECT_ROUTINE: owa := st.Object.GetObjectWithArgs() schema, name := qualified(strs(owa.GetObjname())) if schema == "" { @@ -1310,7 +1309,7 @@ func (s *Schema) alterObjectSchema(st *pg_query.AlterObjectSchemaStmt, loc int32 } // funcArgsMatch is whether an ObjectWithArgs signature (no args given = any) picks fn. -func (s *Schema) funcArgsMatch(fn *Function, owa *pg_query.ObjectWithArgs) bool { +func (s *Schema) funcArgsMatch(fn *Function, owa *pgparse.ObjectWithArgs) bool { if owa.ArgsUnspecified || (len(owa.Objargs) == 0 && len(owa.Objfuncargs) == 0) { return true } diff --git a/internal/schema/pg18_test.go b/internal/schema/pg18_test.go new file mode 100644 index 0000000..305755d --- /dev/null +++ b/internal/schema/pg18_test.go @@ -0,0 +1,86 @@ +package schema_test + +import ( + "strings" + "testing" + + "github.com/kr9ly/sqlshape/internal/schema" +) + +// PostgreSQL 18 DDL: named NOT NULL constraints, NOT ENFORCED, WITHOUT OVERLAPS / PERIOD, +// VIRTUAL generated columns. +func TestPG18DDL(t *testing.T) { + s := mustLoad(t, `-- sqlshape: postgres 18 +CREATE TABLE p (id int4range, valid_at daterange, CONSTRAINT p_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS)); +CREATE TABLE t ( + id int, + CONSTRAINT t_nn NOT NULL id, + c int CHECK (c > 0) NOT ENFORCED, + d int CHECK (d > 0) ENFORCED, + CONSTRAINT t_ck CHECK (c < 10) NOT ENFORCED, + r int4range, v daterange, + CONSTRAINT t_fk FOREIGN KEY (r, PERIOD v) REFERENCES p (id, PERIOD valid_at) NOT ENFORCED, + CONSTRAINT t_uq UNIQUE (r, v WITHOUT OVERLAPS), + g int GENERATED ALWAYS AS (c * 2) VIRTUAL, + h int GENERATED ALWAYS AS (c * 2) STORED, + i int GENERATED ALWAYS AS (c * 2) +); +ALTER TABLE t ADD CONSTRAINT t_nn2 NOT NULL c; +ALTER TABLE t ALTER CONSTRAINT t_ck ENFORCED; +`) + if p := problems(s); p != "" { + t.Fatalf("problems:\n%s", p) + } + tbl := s.Relation("", "t") + con := func(name string) *schema.Constraint { + for _, c := range tbl.Constraints { + if c.Name == name { + return c + } + } + t.Fatalf("no constraint %s", name) + return nil + } + if !tbl.Column("id").NotNull || !tbl.Column("c").NotNull { + t.Error("named NOT NULL constraints did not set NOT NULL") + } + if !con("t_fk").NotEnforced || !con("t_fk").WithPeriod || con("t_fk").Columns[1] != "v" { + t.Errorf("t_fk: %+v", con("t_fk")) + } + if con("t_ck").NotEnforced { + t.Error("ALTER CONSTRAINT ... ENFORCED did not take") + } + if !con("t_uq").WithoutOverlaps || !s.Relation("", "p").Constraints[0].WithoutOverlaps { + t.Error("WITHOUT OVERLAPS not recorded") + } + colCheck := map[string]bool{} + for _, c := range tbl.Constraints { + if c.Kind == schema.Check && len(c.Columns) == 1 && c.Name != "t_ck" { + colCheck[c.Columns[0]] = c.NotEnforced + } + } + if len(colCheck) != 2 || !colCheck["c"] || colCheck["d"] { + t.Errorf("column CHECK enforcement (column → not enforced): %v", colCheck) + } + if !tbl.Column("g").GeneratedVirtual || tbl.Column("h").GeneratedVirtual || !tbl.Column("i").GeneratedVirtual { + t.Error("generated kind: VIRTUAL is 18's default") + } + + // DROP CONSTRAINT lifts a named NOT NULL + if err := s.Apply("ALTER TABLE t DROP CONSTRAINT t_nn"); err != nil { + t.Fatal(err) + } + if tbl.Column("id").NotNull { + t.Error("DROP CONSTRAINT t_nn left the column NOT NULL") + } + wantProblem(t, "-- sqlshape: postgres 18\nCREATE TABLE u (a int, CONSTRAINT nn NOT NULL b);\n", `NOT NULL column "b" does not exist`) + + // a 17 schema: generated columns are stored, constraints enforced + s17 := mustLoad(t, "CREATE TABLE t (a int CHECK (a > 0), b int GENERATED ALWAYS AS (a * 2) STORED)") + if tbl := s17.Relation("", "t"); tbl.Column("b").GeneratedVirtual || tbl.Constraints[0].NotEnforced { + t.Error("17: virtual or not enforced") + } + if _, err := schema.Load("CREATE TABLE t (a int, b int GENERATED ALWAYS AS (a * 2) VIRTUAL)"); err == nil || !strings.Contains(err.Error(), "syntax error") { + t.Errorf("17 accepts VIRTUAL: %v", err) + } +} diff --git a/internal/schema/rls.go b/internal/schema/rls.go index 9510aba..b0e3583 100644 --- a/internal/schema/rls.go +++ b/internal/schema/rls.go @@ -3,7 +3,7 @@ package schema import ( "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // Row-level security. A table's policies are part of its definition: the loader keeps @@ -38,7 +38,7 @@ func (r *Relation) Policy(name string) *Policy { return nil } -func (s *Schema) createPolicy(st *pg_query.CreatePolicyStmt, loc int32) { +func (s *Schema) createPolicy(st *pgparse.CreatePolicyStmt, loc int32) { rel := s.findRelation(s.rangeVar(st.Table)) if rel == nil { sch, name := s.rangeVar(st.Table) @@ -59,7 +59,7 @@ func (s *Schema) createPolicy(st *pg_query.CreatePolicyStmt, loc int32) { } for _, r := range st.Roles { if rs := r.GetRoleSpec(); rs != nil { - if rs.Roletype == pg_query.RoleSpecType_ROLESPEC_PUBLIC { + if rs.Roletype == pgparse.RoleSpecType_ROLESPEC_PUBLIC { p.Roles = nil break } @@ -69,7 +69,7 @@ func (s *Schema) createPolicy(st *pg_query.CreatePolicyStmt, loc int32) { rel.Policies = append(rel.Policies, p) } -func (s *Schema) alterPolicy(st *pg_query.AlterPolicyStmt, loc int32) { +func (s *Schema) alterPolicy(st *pgparse.AlterPolicyStmt, loc int32) { rel := s.findRelation(s.rangeVar(st.Table)) var p *Policy if rel != nil { @@ -88,7 +88,7 @@ func (s *Schema) alterPolicy(st *pg_query.AlterPolicyStmt, loc int32) { if len(st.Roles) > 0 { p.Roles = nil for _, r := range st.Roles { - if rs := r.GetRoleSpec(); rs != nil && rs.Roletype != pg_query.RoleSpecType_ROLESPEC_PUBLIC { + if rs := r.GetRoleSpec(); rs != nil && rs.Roletype != pgparse.RoleSpecType_ROLESPEC_PUBLIC { p.Roles = append(p.Roles, rs.Rolename) } } @@ -121,7 +121,7 @@ func (s *Schema) dropPolicy(items []string, missingOk bool, loc int32) { } // renamePolicy handles ALTER POLICY ... ON table RENAME TO. -func (s *Schema) renamePolicy(st *pg_query.RenameStmt, loc int32) { +func (s *Schema) renamePolicy(st *pgparse.RenameStmt, loc int32) { rel := s.findRelation(s.rangeVar(st.Relation)) if rel == nil || rel.Policy(st.Subname) == nil { s.problem(loc, "ALTER POLICY %s RENAME: no such policy", st.Subname) diff --git a/internal/schema/schema.go b/internal/schema/schema.go index c511073..d2f62f5 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -14,20 +14,24 @@ import ( "strings" "unicode/utf8" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // Expr is an unanalyzed expression from the DDL (kept as libpg_query AST). -type Expr = *pg_query.Node +type Expr = *pgparse.Node // Schema is the loaded user schema. type Schema struct { Catalog *catalog.Catalog Types *Types + // Version is the PostgreSQL major version the schema declared with + // `-- sqlshape: postgres ` (pgparse.Default when it declared none): every statement, + // the schema's own and the application's, is parsed with that version's grammar. + Version pgparse.Version Relations []*Relation Functions []*Function @@ -66,9 +70,9 @@ type Schema struct { // depends on rel, transitively, in declaration order (DependentViews). NotNullHook func(s *Schema, rel *Relation) - prepared map[string]*pg_query.Node // PREPARE name AS query, for CREATE TABLE AS EXECUTE - xmlDocument bool // SET xmloption = document - restrictViews bool // SET restrict_nonsystem_relation_kind includes view + prepared map[string]*pgparse.Node // PREPARE name AS query, for CREATE TABLE AS EXECUTE + xmlDocument bool // SET xmloption = document + restrictViews bool // SET restrict_nonsystem_relation_kind includes view } // Problem is a DDL statement (or part) that was skipped or rejected. @@ -114,8 +118,11 @@ type Relation struct { Kind RelKind RowType catalog.OID // the composite type of a row // OfType is the composite type of a typed table (CREATE TABLE ... OF type), 0 otherwise. - OfType catalog.OID - Columns []*Column + OfType catalog.OID + // notNullNames maps a named NOT NULL constraint (CONSTRAINT nn NOT NULL col, + // PostgreSQL 18) to its column, so DROP CONSTRAINT nn can lift the NOT NULL. + notNullNames map[string]string + Columns []*Column // Constraints: PK / UNIQUE / FK / CHECK on the table, plus unique indexes (as Unique). Constraints []*Constraint // Query is the defining query of a view / matview (nil for tables). @@ -210,7 +217,7 @@ type Relation struct { RuleNames map[string]string // rules are the relation's rules by name; rulesOff the disabled ones. The Rule* maps // are derived from them (rebuildRules). - rules map[string]*pg_query.RuleStmt + rules map[string]*pgparse.RuleStmt rulesOff map[string]bool // RuleEvents: the write commands ("insert" / "update" / "delete") that have any rule // on the relation (MERGE refuses an action kind that has one). @@ -238,8 +245,11 @@ type Column struct { NotNull bool Default Expr // raw DEFAULT expression, nil if none Identity byte // 'a' always / 'd' by default / 0 - Generated Expr // GENERATED ALWAYS AS (expr) STORED - Collation string + Generated Expr // GENERATED ALWAYS AS (expr) + // GeneratedVirtual: the generated column is VIRTUAL (computed on read, PostgreSQL 18) + // rather than STORED. + GeneratedVirtual bool + Collation string // Inherited: the column comes from a parent table (attinhcount > 0); LocalDef: the // child declares it too (attislocal). Dropping the parent's column drops an inherited // column without a local definition; a child cannot drop an inherited column. @@ -275,6 +285,14 @@ type Constraint struct { Predicate Expr NullsNotDistinct bool Deferrable bool + // WithoutOverlaps (PrimaryKey / Unique): the last column is a range or multirange and + // the key is temporal, PRIMARY KEY (id, valid_at WITHOUT OVERLAPS); WithPeriod + // (ForeignKey): the last column pair is PERIOD on both sides. PostgreSQL 18. + WithoutOverlaps bool + WithPeriod bool + // NotEnforced (Check / ForeignKey): declared NOT ENFORCED (PostgreSQL 18), so the + // constraint never raises; it documents an intent the database does not check. + NotEnforced bool // Exclude: the access method (e.g. "gist") and, one per Columns entry, the WITH // operator (EXCLUDE USING gist (room WITH =, during WITH &&)). Predicate above doubles // as its optional WHERE clause. @@ -449,7 +467,11 @@ type FuncArg struct { // Load parses schemaSQL and builds the Schema over the embedded bootstrap catalog. func Load(schemaSQL string) (*Schema, error) { - cat, err := catalog.Load() + v, err := DeclaredVersion(schemaSQL) + if err != nil { + return nil, err + } + cat, err := catalog.Load(int(v)) if err != nil { return nil, err } @@ -469,7 +491,14 @@ func LoadWithHook(cat *catalog.Catalog, schemaSQL string, hook func(*Schema, *Re // LoadWithHooks is LoadWithHook with a NotNullHook installed too, before the first // statement applies. func LoadWithHooks(cat *catalog.Catalog, schemaSQL string, viewHook, notNullHook func(*Schema, *Relation)) (*Schema, error) { - tree, err := pg_query.Parse(schemaSQL) + version, err := DeclaredVersion(schemaSQL) + if err != nil { + return nil, err + } + if cat.Major != int(version) { + return nil, fmt.Errorf("schema: the schema declares PostgreSQL %d but the catalog is PostgreSQL %d's", int(version), cat.Major) + } + tree, err := version.Parse(schemaSQL) if err != nil { return nil, fmt.Errorf("parse schema: %w", err) } @@ -482,7 +511,7 @@ func LoadWithHooks(cat *catalog.Catalog, schemaSQL string, viewHook, notNullHook if ce == nil { continue } - if _, err := catalog.ReadExtension(ce.Extname); err != nil { + if _, err := catalog.ReadExtension(cat.Major, ce.Extname); err != nil { extProblems = append(extProblems, Problem{Location: raw.StmtLocation, Message: err.Error()}) continue } @@ -497,6 +526,7 @@ func LoadWithHooks(cat *catalog.Catalog, schemaSQL string, viewHook, notNullHook s := &Schema{ Catalog: cat, Types: newTypes(cat), + Version: version, Comments: map[string]string{}, TypeDefs: map[catalog.OID]string{}, relByName: map[string]*Relation{}, @@ -510,7 +540,7 @@ func LoadWithHooks(cat *catalog.Catalog, schemaSQL string, viewHook, notNullHook } // applyAll applies every statement of a parsed schema text in order. -func (s *Schema) applyAll(tree *pg_query.ParseResult, schemaSQL string) { +func (s *Schema) applyAll(tree *pgparse.ParseResult, schemaSQL string) { prev := int32(0) for _, raw := range tree.Stmts { // `-- sqlshape: ...` comment lines in front of a statement annotate it (a statement's @@ -539,7 +569,10 @@ func (s *Schema) applyAll(tree *pg_query.ParseResult, schemaSQL string) { // Load saw. CREATE EXTENSION cannot be added after the fact (the catalog is fixed at // Load): it returns ErrNeedsReload and leaves the schema untouched. func (s *Schema) Apply(schemaSQL string) error { - tree, err := pg_query.Parse(schemaSQL) + if versionLine.MatchString(schemaSQL) { + return errors.New("schema: `-- sqlshape: postgres` is declared in the schema text Load reads, not in DDL applied later") + } + tree, err := s.Version.Parse(schemaSQL) if err != nil { return fmt.Errorf("parse schema: %w", err) } @@ -570,6 +603,43 @@ func leadingComments(text string) string { var directiveLine = regexp.MustCompile(`(?m)^[ \t]*--[ \t]*sqlshape:[ \t]*(.+?)[ \t]*$`) +// versionLine is the `-- sqlshape: postgres ` declaration: the one directive that +// belongs to the file rather than to the statement below it, read before anything is parsed. +var versionLine = regexp.MustCompile(`(?m)^[ \t]*--[ \t]*sqlshape:[ \t]*postgres[ \t]+(\S+)[ \t]*$`) + +// DeclaredVersion reads the schema's `-- sqlshape: postgres ` declaration, anywhere in +// the text; pgparse.Default when there is none. Two declarations that disagree, or a +// version without an embedded parser, are errors: nothing can be judged until it is fixed. +// Load reads it before anything else: the catalog and the parser both follow it. +func DeclaredVersion(schemaSQL string) (pgparse.Version, error) { + var v pgparse.Version + for _, m := range versionLine.FindAllStringSubmatch(schemaSQL, -1) { + n, err := strconv.Atoi(m[1]) + if err != nil { + return 0, fmt.Errorf("schema: `-- sqlshape: postgres %s`: want a major version number", m[1]) + } + if !slices.Contains(pgparse.Supported(), pgparse.Version(n)) { + return 0, fmt.Errorf("schema: `-- sqlshape: postgres %d`: sqlshape supports PostgreSQL %s", n, supportedVersions()) + } + if v != 0 && v != pgparse.Version(n) { + return 0, fmt.Errorf("schema: `-- sqlshape: postgres` is declared twice, as %d and %d", int(v), n) + } + v = pgparse.Version(n) + } + if v == 0 { + v = pgparse.Default + } + return v, nil +} + +func supportedVersions() string { + var parts []string + for _, v := range pgparse.Supported() { + parts = append(parts, strconv.Itoa(int(v))) + } + return strings.Join(parts, ", ") +} + // Waivers reads the list of a `waive` directive: comma-separated (outside parentheses) // entries of ` []`, where the obligation is the body as declared // (`pinned(tenant_id)`, `via view`, a predicate) and its absence waives every obligation @@ -618,6 +688,9 @@ func AddWaiver(m map[string][]string, table string, specs ...string) map[string] func directives(text string) []string { var out []string for _, m := range directiveLine.FindAllStringSubmatch(text, -1) { + if versionLine.MatchString(m[0]) { + continue // the file's declaration, read by Load, not the statement's + } out = append(out, m[1]) } return out @@ -651,51 +724,51 @@ func (s *Schema) problem(loc int32, format string, args ...any) { s.Problems = append(s.Problems, Problem{Location: loc, Message: fmt.Sprintf(format, args...)}) } -func (s *Schema) apply(n *pg_query.Node, loc int32) { +func (s *Schema) apply(n *pgparse.Node, loc int32) { nFuncs, nTrigs, nTypes := len(s.Functions), len(s.Triggers), len(s.Types.user) defer func() { // remember the text that created what this statement added switch n.Node.(type) { - case *pg_query.Node_CreateFunctionStmt: + case *pgparse.Node_CreateFunctionStmt: if len(s.Functions) > nFuncs { s.Functions[len(s.Functions)-1].Definition = s.stmtText } - case *pg_query.Node_CreateTrigStmt: + case *pgparse.Node_CreateTrigStmt: if len(s.Triggers) > nTrigs { s.Triggers[len(s.Triggers)-1].Definition = s.stmtText } - case *pg_query.Node_CreateEnumStmt, *pg_query.Node_CreateDomainStmt, *pg_query.Node_CompositeTypeStmt, *pg_query.Node_CreateRangeStmt: + case *pgparse.Node_CreateEnumStmt, *pgparse.Node_CreateDomainStmt, *pgparse.Node_CompositeTypeStmt, *pgparse.Node_CreateRangeStmt: if len(s.Types.user) > nTypes { s.TypeDefs[s.Types.user[nTypes].OID] = s.stmtText } } }() switch st := n.Node.(type) { - case *pg_query.Node_CreateEnumStmt: + case *pgparse.Node_CreateEnumStmt: s.createEnum(st.CreateEnumStmt, loc) - case *pg_query.Node_CreateDomainStmt: + case *pgparse.Node_CreateDomainStmt: s.createDomain(st.CreateDomainStmt, loc) - case *pg_query.Node_CompositeTypeStmt: + case *pgparse.Node_CompositeTypeStmt: s.createComposite(st.CompositeTypeStmt, loc) - case *pg_query.Node_CreateStmt: + case *pgparse.Node_CreateStmt: s.createTable(st.CreateStmt, loc) - case *pg_query.Node_CreateForeignTableStmt: + case *pgparse.Node_CreateForeignTableStmt: s.createTable(st.CreateForeignTableStmt.BaseStmt, loc) // typed like a table; the server is not ours - case *pg_query.Node_PrepareStmt: + case *pgparse.Node_PrepareStmt: if s.prepared == nil { - s.prepared = map[string]*pg_query.Node{} + s.prepared = map[string]*pgparse.Node{} } s.prepared[st.PrepareStmt.Name] = st.PrepareStmt.Query - case *pg_query.Node_DeallocateStmt: + case *pgparse.Node_DeallocateStmt: if st.DeallocateStmt.Isall { s.prepared = nil } else { delete(s.prepared, st.DeallocateStmt.Name) } - case *pg_query.Node_TransactionStmt: + case *pgparse.Node_TransactionStmt: switch st.TransactionStmt.Kind { - case pg_query.TransactionStmtKind_TRANS_STMT_COMMIT, pg_query.TransactionStmtKind_TRANS_STMT_ROLLBACK, - pg_query.TransactionStmtKind_TRANS_STMT_PREPARE: + case pgparse.TransactionStmtKind_TRANS_STMT_COMMIT, pgparse.TransactionStmtKind_TRANS_STMT_ROLLBACK, + pgparse.TransactionStmtKind_TRANS_STMT_PREPARE: // ON COMMIT DROP tables go at transaction end (a rolled-back CREATE never was) for _, r := range append([]*Relation{}, s.Relations...) { if r.OnCommitDrop { @@ -703,24 +776,24 @@ func (s *Schema) apply(n *pg_query.Node, loc int32) { } } } - case *pg_query.Node_ViewStmt: + case *pgparse.Node_ViewStmt: s.createView(st.ViewStmt, loc) - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: s.insert(st.InsertStmt, n, loc) - case *pg_query.Node_CreatePolicyStmt: + case *pgparse.Node_CreatePolicyStmt: s.createPolicy(st.CreatePolicyStmt, loc) - case *pg_query.Node_AlterPolicyStmt: + case *pgparse.Node_AlterPolicyStmt: s.alterPolicy(st.AlterPolicyStmt, loc) - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: if st.SelectStmt.IntoClause != nil { s.createTableAs(st.SelectStmt.IntoClause, n, loc) } else { s.problem(loc, "unsupported statement %T", n.Node) } - case *pg_query.Node_CreateTableAsStmt: - if st.CreateTableAsStmt.Objtype == pg_query.ObjectType_OBJECT_MATVIEW { + case *pgparse.Node_CreateTableAsStmt: + if st.CreateTableAsStmt.Objtype == pgparse.ObjectType_OBJECT_MATVIEW { s.createMatView(st.CreateTableAsStmt, loc) - } else if st.CreateTableAsStmt.Objtype == pg_query.ObjectType_OBJECT_TABLE { + } else if st.CreateTableAsStmt.Objtype == pgparse.ObjectType_OBJECT_TABLE { query := st.CreateTableAsStmt.Query if ex := query.GetExecuteStmt(); ex != nil { // CREATE TABLE ... AS EXECUTE name: the prepared statement's query @@ -740,35 +813,35 @@ func (s *Schema) apply(n *pg_query.Node, loc int32) { } else { s.problem(loc, "CREATE TABLE AS is not supported in schema.sql") } - case *pg_query.Node_AlterTableStmt: + case *pgparse.Node_AlterTableStmt: s.alterTable(st.AlterTableStmt, loc) - case *pg_query.Node_IndexStmt: + case *pgparse.Node_IndexStmt: s.createIndex(st.IndexStmt, loc) - case *pg_query.Node_AlterObjectSchemaStmt: + case *pgparse.Node_AlterObjectSchemaStmt: s.alterObjectSchema(st.AlterObjectSchemaStmt, loc) - case *pg_query.Node_CreateFunctionStmt: + case *pgparse.Node_CreateFunctionStmt: s.createFunction(st.CreateFunctionStmt, loc) - case *pg_query.Node_CommentStmt: + case *pgparse.Node_CommentStmt: s.comment(st.CommentStmt, loc) - case *pg_query.Node_CreateTrigStmt: + case *pgparse.Node_CreateTrigStmt: s.createTrigger(st.CreateTrigStmt, loc) - case *pg_query.Node_RenameStmt: + case *pgparse.Node_RenameStmt: s.rename(st.RenameStmt, loc) - case *pg_query.Node_DropStmt: + case *pgparse.Node_DropStmt: s.drop(st.DropStmt, loc) - case *pg_query.Node_AlterEnumStmt: + case *pgparse.Node_AlterEnumStmt: s.alterEnum(st.AlterEnumStmt, loc) - case *pg_query.Node_AlterDomainStmt: + case *pgparse.Node_AlterDomainStmt: s.alterDomain(st.AlterDomainStmt, loc) - case *pg_query.Node_CreateRangeStmt: + case *pgparse.Node_CreateRangeStmt: s.createRange(st.CreateRangeStmt, loc) - case *pg_query.Node_DefineStmt: + case *pgparse.Node_DefineStmt: s.define(st.DefineStmt, loc) - case *pg_query.Node_CreateCastStmt: + case *pgparse.Node_CreateCastStmt: s.createCast(st.CreateCastStmt, loc) - case *pg_query.Node_VariableSetStmt: + case *pgparse.Node_VariableSetStmt: s.setVariable(st.VariableSetStmt) - case *pg_query.Node_CreateSchemaStmt: + case *pgparse.Node_CreateSchemaStmt: if s.schemas == nil { s.schemas = map[string]bool{} } @@ -781,29 +854,29 @@ func (s *Schema) apply(n *pg_query.Node, loc int32) { s.apply(elt, loc) } s.searchPath, s.Types.searchPath = saved, savedT - case *pg_query.Node_RuleStmt: + case *pgparse.Node_RuleStmt: // a DO INSTEAD rule on a view for INSERT / UPDATE / DELETE makes the view take that write r := st.RuleStmt if rel := s.findRelation(s.rangeVar(r.Relation)); rel != nil { if rel.rules == nil { - rel.rules = map[string]*pg_query.RuleStmt{} + rel.rules = map[string]*pgparse.RuleStmt{} } rel.rules[r.Rulename] = r // CREATE OR REPLACE RULE: the name's rule is this one now rel.rebuildRules() } - case *pg_query.Node_CreateSeqStmt: + case *pgparse.Node_CreateSeqStmt: s.createSequence(st.CreateSeqStmt.Sequence, loc) - case *pg_query.Node_AlterSeqStmt: + case *pgparse.Node_AlterSeqStmt: s.alterSequence(st.AlterSeqStmt, loc) - case *pg_query.Node_CreateExtensionStmt, - *pg_query.Node_GrantStmt, *pg_query.Node_AlterOwnerStmt, - *pg_query.Node_CreateOpClassStmt, *pg_query.Node_CreateOpFamilyStmt, *pg_query.Node_AlterOpFamilyStmt, - *pg_query.Node_CreateStatsStmt, *pg_query.Node_AlterExtensionStmt, - *pg_query.Node_CreateEventTrigStmt, *pg_query.Node_AlterEventTrigStmt, *pg_query.Node_CreatePublicationStmt, *pg_query.Node_AlterPublicationStmt, - *pg_query.Node_CreateSubscriptionStmt, *pg_query.Node_CreateRoleStmt, *pg_query.Node_AlterRoleStmt, *pg_query.Node_GrantRoleStmt, - *pg_query.Node_CreateTableSpaceStmt, *pg_query.Node_SecLabelStmt, *pg_query.Node_ClusterStmt, *pg_query.Node_VacuumStmt, - *pg_query.Node_DoStmt, *pg_query.Node_AlterDefaultPrivilegesStmt, *pg_query.Node_CreateFdwStmt, - *pg_query.Node_CreateForeignServerStmt, *pg_query.Node_CreateUserMappingStmt, *pg_query.Node_AlterFunctionStmt, *pg_query.Node_AlterCollationStmt: + case *pgparse.Node_CreateExtensionStmt, + *pgparse.Node_GrantStmt, *pgparse.Node_AlterOwnerStmt, + *pgparse.Node_CreateOpClassStmt, *pgparse.Node_CreateOpFamilyStmt, *pgparse.Node_AlterOpFamilyStmt, + *pgparse.Node_CreateStatsStmt, *pgparse.Node_AlterExtensionStmt, + *pgparse.Node_CreateEventTrigStmt, *pgparse.Node_AlterEventTrigStmt, *pgparse.Node_CreatePublicationStmt, *pgparse.Node_AlterPublicationStmt, + *pgparse.Node_CreateSubscriptionStmt, *pgparse.Node_CreateRoleStmt, *pgparse.Node_AlterRoleStmt, *pgparse.Node_GrantRoleStmt, + *pgparse.Node_CreateTableSpaceStmt, *pgparse.Node_SecLabelStmt, *pgparse.Node_ClusterStmt, *pgparse.Node_VacuumStmt, + *pgparse.Node_DoStmt, *pgparse.Node_AlterDefaultPrivilegesStmt, *pgparse.Node_CreateFdwStmt, + *pgparse.Node_CreateForeignServerStmt, *pgparse.Node_CreateUserMappingStmt, *pgparse.Node_AlterFunctionStmt, *pgparse.Node_AlterCollationStmt: // No effect on typing (CREATE EXTENSION was resolved up front in LoadWith). default: s.problem(loc, "unsupported statement %T", n.Node) @@ -812,7 +885,7 @@ func (s *Schema) apply(n *pg_query.Node, loc int32) { // --- names ----------------------------------------------------------------- -func strs(nodes []*pg_query.Node) []string { +func strs(nodes []*pgparse.Node) []string { out := make([]string, 0, len(nodes)) for _, n := range nodes { out = append(out, n.GetString_().GetSval()) @@ -830,7 +903,7 @@ func qualified(names []string) (schema, name string) { return "", strings.Join(names, ".") } -func (s *Schema) rangeVar(rv *pg_query.RangeVar) (schema, name string) { +func (s *Schema) rangeVar(rv *pgparse.RangeVar) (schema, name string) { schema = rv.GetSchemaname() if schema == "" { schema = s.creationSchema() @@ -841,7 +914,7 @@ func (s *Schema) rangeVar(rv *pg_query.RangeVar) (schema, name string) { // lookupRangeVar is rangeVar for an existing relation: an unqualified name is searched // the way the search path does (pg_catalog first, then the path), so a user table moved // into pg_catalog is still found; nothing found falls back to the creation schema. -func (s *Schema) lookupRangeVar(rv *pg_query.RangeVar) (schema, name string) { +func (s *Schema) lookupRangeVar(rv *pgparse.RangeVar) (schema, name string) { if rv.GetSchemaname() != "" { return rv.GetSchemaname(), rv.GetRelname() } @@ -855,7 +928,7 @@ func (s *Schema) lookupRangeVar(rv *pg_query.RangeVar) (schema, name string) { } // resolveType turns a TypeName AST into a TypeRef (handles serial pseudo-types and arrays). -func (s *Schema) resolveType(tn *pg_query.TypeName) (TypeRef, error) { +func (s *Schema) resolveType(tn *pgparse.TypeName) (TypeRef, error) { if tn == nil { return TypeRef{}, fmt.Errorf("missing type") } @@ -914,7 +987,7 @@ func (s *Schema) resolveType(tn *pg_query.TypeName) (TypeRef, error) { return TypeRef{OID: oid, Typmod: typmod}, nil } -func isSerial(tn *pg_query.TypeName) bool { +func isSerial(tn *pgparse.TypeName) bool { _, name := qualified(strs(tn.GetNames())) switch name { case "serial", "serial4", "bigserial", "serial8", "smallserial", "serial2": @@ -925,7 +998,7 @@ func isSerial(tn *pg_query.TypeName) bool { // --- types ----------------------------------------------------------------- -func (s *Schema) createEnum(st *pg_query.CreateEnumStmt, loc int32) { +func (s *Schema) createEnum(st *pgparse.CreateEnumStmt, loc int32) { schema, name := qualified(strs(st.TypeName)) if schema == "" { schema = s.creationSchema() @@ -934,7 +1007,7 @@ func (s *Schema) createEnum(st *pg_query.CreateEnumStmt, loc int32) { s.Types.Enums[t.OID] = strs(st.Vals) } -func (s *Schema) createDomain(st *pg_query.CreateDomainStmt, loc int32) { +func (s *Schema) createDomain(st *pgparse.CreateDomainStmt, loc int32) { schema, name := qualified(strs(st.Domainname)) if schema == "" { schema = s.creationSchema() @@ -947,12 +1020,16 @@ func (s *Schema) createDomain(st *pg_query.CreateDomainStmt, loc int32) { t := s.Types.addUser(schema, name, 'd', 0, base.OID, 0) t.Typmod = base.Typmod d := &Domain{} + if st.CollClause != nil { + parts := strs(st.CollClause.Collname) + d.Collation = parts[len(parts)-1] + } for _, cn := range st.Constraints { c := cn.GetConstraint() switch c.GetContype() { - case pg_query.ConstrType_CONSTR_NOTNULL: + case pgparse.ConstrType_CONSTR_NOTNULL: d.NotNull = true - case pg_query.ConstrType_CONSTR_CHECK: + case pgparse.ConstrType_CONSTR_CHECK: cn := c.Conname if cn == "" { cn = uniqueName(name+"_check", func(n string) bool { @@ -965,7 +1042,7 @@ func (s *Schema) createDomain(st *pg_query.CreateDomainStmt, loc int32) { }) } d.Checks = append(d.Checks, &Constraint{Name: cn, Kind: Check, Expr: c.RawExpr}) - case pg_query.ConstrType_CONSTR_DEFAULT, pg_query.ConstrType_CONSTR_NULL: + case pgparse.ConstrType_CONSTR_DEFAULT, pgparse.ConstrType_CONSTR_NULL: default: s.problem(c.GetLocation(), "domain %s: unsupported constraint %v", name, c.GetContype()) } @@ -973,7 +1050,7 @@ func (s *Schema) createDomain(st *pg_query.CreateDomainStmt, loc int32) { s.Types.Domains[t.OID] = d } -func (s *Schema) createComposite(st *pg_query.CompositeTypeStmt, loc int32) { +func (s *Schema) createComposite(st *pgparse.CompositeTypeStmt, loc int32) { schema, name := s.rangeVar(st.Typevar) rel := &Relation{OID: s.nextOID, Schema: schema, Name: name, Kind: 'c', Definition: s.stmtText} s.nextOID++ @@ -1004,7 +1081,7 @@ func (s *Schema) newRelation(schema, name string, kind RelKind) *Relation { return rel } -func (s *Schema) createTable(st *pg_query.CreateStmt, loc int32) { +func (s *Schema) createTable(st *pgparse.CreateStmt, loc int32) { schema, name := s.rangeVar(st.Relation) if s.relByName[schema+"."+name] != nil { if st.IfNotExists { @@ -1019,7 +1096,7 @@ func (s *Schema) createTable(st *pg_query.CreateStmt, loc int32) { } rel := s.newRelation(schema, name, Table) rel.Temp = st.Relation.Relpersistence == "t" - rel.OnCommitDrop = st.Oncommit == pg_query.OnCommitAction_ONCOMMIT_DROP + rel.OnCommitDrop = st.Oncommit == pgparse.OnCommitAction_ONCOMMIT_DROP // CREATE TABLE ... OF type: the composite type's attributes are the columns if st.OfTypename != nil { tr, err := s.resolveType(st.OfTypename) @@ -1061,7 +1138,7 @@ func (s *Schema) createTable(st *pg_query.CreateStmt, loc int32) { len(norm) > 12 && strings.EqualFold(norm[:12], "transitions "): // an obligation (internal/obligation parses it) case len(norm) > 14 && strings.EqualFold(norm[:14], "visible where "): - pred, err := parseExpr(norm[14:]) + pred, err := parseExpr(s.Version, norm[14:]) if err != nil { s.problem(loc, "table %s: directive %q: %v", name, d, err) continue @@ -1073,11 +1150,11 @@ func (s *Schema) createTable(st *pg_query.CreateStmt, loc int32) { } for _, elt := range st.TableElts { switch e := elt.Node.(type) { - case *pg_query.Node_ColumnDef: + case *pgparse.Node_ColumnDef: s.addColumn(rel, e.ColumnDef) - case *pg_query.Node_Constraint: + case *pgparse.Node_Constraint: s.addTableConstraint(rel, e.Constraint) - case *pg_query.Node_TableLikeClause: + case *pgparse.Node_TableLikeClause: s.likeClause(rel, e.TableLikeClause, loc) default: s.problem(loc, "table %s: unsupported element %T", name, elt.Node) @@ -1106,7 +1183,7 @@ func (s *Schema) createTable(st *pg_query.CreateStmt, loc int32) { // funcNamesIn lists the (unqualified) names of the functions an expression calls. func funcNamesIn(e Expr) []string { var out []string - WalkNodes(e, func(n *pg_query.Node) { + WalkNodes(e, func(n *pgparse.Node) { if fc := n.GetFuncCall(); fc != nil && len(fc.Funcname) > 0 { names := strs(fc.Funcname) out = append(out, names[len(names)-1]) @@ -1118,11 +1195,11 @@ func funcNamesIn(e Expr) []string { // partitionSpecProblem is the part of DefineRelation / transformPartitionSpec that needs // no expression analysis: PARTITION BY does not combine with INHERITS, LIST takes one // key column, and a named key column must be a real (non-system) column of the table. -func (s *Schema) partitionSpecProblem(rel *Relation, st *pg_query.CreateStmt, ps *pg_query.PartitionSpec) string { +func (s *Schema) partitionSpecProblem(rel *Relation, st *pgparse.CreateStmt, ps *pgparse.PartitionSpec) string { if len(st.InhRelations) > 0 && st.Partbound == nil { return "cannot create partitioned table as inheritance child" } - if ps.Strategy == pg_query.PartitionStrategy_PARTITION_STRATEGY_LIST && len(ps.PartParams) > 1 { + if ps.Strategy == pgparse.PartitionStrategy_PARTITION_STRATEGY_LIST && len(ps.PartParams) > 1 { return "cannot use \"list\" partition strategy with more than one column" } for _, pn := range ps.PartParams { @@ -1149,7 +1226,7 @@ func (s *Schema) partitionSpecProblem(rel *Relation, st *pg_query.CreateStmt, ps return "" } -func (s *Schema) addColumn(rel *Relation, cd *pg_query.ColumnDef) { +func (s *Schema) addColumn(rel *Relation, cd *pgparse.ColumnDef) { tr, err := s.resolveType(cd.TypeName) if err != nil { s.problem(cd.GetLocation(), "%s.%s: %v", rel.Name, cd.Colname, err) @@ -1182,40 +1259,46 @@ func (s *Schema) addColumn(rel *Relation, cd *pg_query.ColumnDef) { for _, cn := range cd.Constraints { c := cn.GetConstraint() switch c.GetContype() { - case pg_query.ConstrType_CONSTR_NOTNULL: + case pgparse.ConstrType_CONSTR_NOTNULL: col.NotNull = true - case pg_query.ConstrType_CONSTR_NULL: + case pgparse.ConstrType_CONSTR_NULL: col.NotNull = false - case pg_query.ConstrType_CONSTR_DEFAULT: + case pgparse.ConstrType_CONSTR_DEFAULT: col.Default = c.RawExpr - case pg_query.ConstrType_CONSTR_IDENTITY: + case pgparse.ConstrType_CONSTR_IDENTITY: col.NotNull = true col.Identity = c.GeneratedWhen[0] s.createOwnedSequence(rel, cd.Colname, cd.GetLocation()) - case pg_query.ConstrType_CONSTR_GENERATED: + case pgparse.ConstrType_CONSTR_GENERATED: col.Generated = c.RawExpr - case pg_query.ConstrType_CONSTR_PRIMARY: + col.GeneratedVirtual = c.GeneratedKind == "v" + case pgparse.ConstrType_CONSTR_PRIMARY: col.NotNull = true s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: PrimaryKey, Columns: []string{col.Name}, Deferrable: c.Deferrable}) - case pg_query.ConstrType_CONSTR_UNIQUE: + case pgparse.ConstrType_CONSTR_UNIQUE: s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Unique, Columns: []string{col.Name}, NullsNotDistinct: c.NullsNotDistinct, Deferrable: c.Deferrable}) - case pg_query.ConstrType_CONSTR_CHECK: - s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Check, Columns: []string{col.Name}, Expr: c.RawExpr}) - case pg_query.ConstrType_CONSTR_FOREIGN: + case pgparse.ConstrType_CONSTR_CHECK: + s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Check, Columns: []string{col.Name}, Expr: c.RawExpr, NotEnforced: !c.IsEnforced}) + case pgparse.ConstrType_CONSTR_FOREIGN: fk := s.foreignKey(c) fk.Columns = []string{col.Name} s.addConstraint(rel, fk) - case pg_query.ConstrType_CONSTR_ATTR_DEFERRABLE, pg_query.ConstrType_CONSTR_ATTR_NOT_DEFERRABLE, - pg_query.ConstrType_CONSTR_ATTR_DEFERRED, pg_query.ConstrType_CONSTR_ATTR_IMMEDIATE: + case pgparse.ConstrType_CONSTR_ATTR_ENFORCED, pgparse.ConstrType_CONSTR_ATTR_NOT_ENFORCED: + // an attribute of the constraint written just before it + if n := len(rel.Constraints); n > 0 { + rel.Constraints[n-1].NotEnforced = c.GetContype() == pgparse.ConstrType_CONSTR_ATTR_NOT_ENFORCED + } + case pgparse.ConstrType_CONSTR_ATTR_DEFERRABLE, pgparse.ConstrType_CONSTR_ATTR_NOT_DEFERRABLE, + pgparse.ConstrType_CONSTR_ATTR_DEFERRED, pgparse.ConstrType_CONSTR_ATTR_IMMEDIATE: default: s.problem(c.GetLocation(), "%s.%s: unsupported constraint %v", rel.Name, col.Name, c.GetContype()) } } } -func (s *Schema) foreignKey(c *pg_query.Constraint) *Constraint { +func (s *Schema) foreignKey(c *pgparse.Constraint) *Constraint { rs, rn := s.rangeVar(c.Pktable) - fk := &Constraint{Name: c.Conname, Kind: ForeignKey, RefColumns: strs(c.PkAttrs), Deferrable: c.Deferrable, OnDelete: 'a', OnUpdate: 'a'} + fk := &Constraint{Name: c.Conname, Kind: ForeignKey, RefColumns: strs(c.PkAttrs), Deferrable: c.Deferrable, OnDelete: 'a', OnUpdate: 'a', WithPeriod: c.FkWithPeriod, NotEnforced: !c.IsEnforced} if c.FkDelAction != "" { fk.OnDelete = c.FkDelAction[0] } @@ -1237,9 +1320,9 @@ func (s *Schema) notifyNotNullChange(rel *Relation) { } } -func (s *Schema) addTableConstraint(rel *Relation, c *pg_query.Constraint) { +func (s *Schema) addTableConstraint(rel *Relation, c *pgparse.Constraint) { switch c.GetContype() { - case pg_query.ConstrType_CONSTR_PRIMARY: + case pgparse.ConstrType_CONSTR_PRIMARY: cols := strs(c.Keys) for _, n := range cols { if col := rel.Column(n); col != nil { @@ -1248,21 +1331,39 @@ func (s *Schema) addTableConstraint(rel *Relation, c *pg_query.Constraint) { s.problem(c.GetLocation(), "%s: primary key column %q does not exist", rel.Name, n) } } - s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: PrimaryKey, Columns: cols, Deferrable: c.Deferrable}) + s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: PrimaryKey, Columns: cols, Deferrable: c.Deferrable, WithoutOverlaps: c.WithoutOverlaps}) // a PRIMARY KEY added after the table exists (ALTER TABLE ... ADD CONSTRAINT ... // PRIMARY KEY) makes its columns NOT NULL too; a no-op when this runs for the // table's own inline/table-level constraints at CREATE TABLE time, since no view // can depend on it yet. s.notifyNotNullChange(rel) - case pg_query.ConstrType_CONSTR_UNIQUE: - s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Unique, Columns: strs(c.Keys), NullsNotDistinct: c.NullsNotDistinct, Deferrable: c.Deferrable}) - case pg_query.ConstrType_CONSTR_CHECK: - s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Check, Expr: c.RawExpr}) - case pg_query.ConstrType_CONSTR_FOREIGN: + case pgparse.ConstrType_CONSTR_UNIQUE: + s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Unique, Columns: strs(c.Keys), NullsNotDistinct: c.NullsNotDistinct, Deferrable: c.Deferrable, WithoutOverlaps: c.WithoutOverlaps}) + case pgparse.ConstrType_CONSTR_CHECK: + s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Check, Expr: c.RawExpr, NotEnforced: !c.IsEnforced}) + case pgparse.ConstrType_CONSTR_NOTNULL: + // CONSTRAINT name NOT NULL col (PostgreSQL 18): the column's NOT NULL, under a name + // DROP CONSTRAINT can take away again + for _, n := range strs(c.Keys) { + col := rel.Column(n) + if col == nil { + s.problem(c.GetLocation(), "%s: NOT NULL column %q does not exist", rel.Name, n) + continue + } + col.NotNull = true + if c.Conname != "" { + if rel.notNullNames == nil { + rel.notNullNames = map[string]string{} + } + rel.notNullNames[c.Conname] = n + } + } + s.notifyNotNullChange(rel) + case pgparse.ConstrType_CONSTR_FOREIGN: fk := s.foreignKey(c) fk.Columns = strs(c.FkAttrs) s.addConstraint(rel, fk) - case pg_query.ConstrType_CONSTR_EXCLUSION: + case pgparse.ConstrType_CONSTR_EXCLUSION: ex := &Constraint{Name: c.Conname, Kind: Exclude, AccessMethod: c.AccessMethod, Predicate: c.WhereClause, Deferrable: c.Deferrable} for _, item := range c.Exclusions { parts := item.GetList().GetItems() @@ -1283,7 +1384,7 @@ func (s *Schema) addTableConstraint(rel *Relation, c *pg_query.Constraint) { } } -func (s *Schema) createView(st *pg_query.ViewStmt, loc int32) { +func (s *Schema) createView(st *pgparse.ViewStmt, loc int32) { schema, name := s.rangeVar(st.View) var rel *Relation if existing := s.relByName[schema+"."+name]; existing != nil { @@ -1317,9 +1418,9 @@ func (s *Schema) createView(st *pg_query.ViewStmt, loc int32) { } rel.ColumnAliases = strs(st.Aliases) switch st.WithCheckOption { - case pg_query.ViewCheckOption_LOCAL_CHECK_OPTION: + case pgparse.ViewCheckOption_LOCAL_CHECK_OPTION: rel.CheckOption = 'l' - case pg_query.ViewCheckOption_CASCADED_CHECK_OPTION: + case pgparse.ViewCheckOption_CASCADED_CHECK_OPTION: rel.CheckOption = 'c' default: rel.CheckOption = 0 @@ -1373,7 +1474,7 @@ func (s *Schema) viewDirectives(rel *Relation, loc int32) { } } -func (s *Schema) createMatView(st *pg_query.CreateTableAsStmt, loc int32) { +func (s *Schema) createMatView(st *pgparse.CreateTableAsStmt, loc int32) { schema, name := s.rangeVar(st.Into.Rel) rel := s.newRelation(schema, name, MatView) rel.Query = st.Query @@ -1384,7 +1485,7 @@ func (s *Schema) createMatView(st *pg_query.CreateTableAsStmt, loc int32) { } } -func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { +func (s *Schema) alterTable(st *pgparse.AlterTableStmt, loc int32) { schema, name := s.lookupRangeVar(st.Relation) rel := s.relByName[schema+"."+name] if rel == nil { @@ -1395,7 +1496,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { } shaping := false for _, cn := range st.Cmds { - if cmd := cn.GetAlterTableCmd(); cmd.GetSubtype() != pg_query.AlterTableType_AT_AddConstraint { + if cmd := cn.GetAlterTableCmd(); cmd.GetSubtype() != pgparse.AlterTableType_AT_AddConstraint { shaping = true } } @@ -1405,7 +1506,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { for _, cn := range st.Cmds { cmd := cn.GetAlterTableCmd() switch cmd.GetSubtype() { - case pg_query.AlterTableType_AT_AddColumn: + case pgparse.AlterTableType_AT_AddColumn: s.addColumn(rel, cmd.Def.GetColumnDef()) // children (INHERITS / partitions) gain the column too for _, child := range s.Relations { @@ -1413,23 +1514,23 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { s.addColumn(child, cmd.Def.GetColumnDef()) } } - case pg_query.AlterTableType_AT_AddConstraint: + case pgparse.AlterTableType_AT_AddConstraint: n := len(rel.Constraints) s.addTableConstraint(rel, cmd.Def.GetConstraint()) if len(rel.Constraints) > n && len(st.Cmds) == 1 { rel.Constraints[len(rel.Constraints)-1].Definition = s.stmtText } - case pg_query.AlterTableType_AT_SetNotNull: + case pgparse.AlterTableType_AT_SetNotNull: if col := rel.Column(cmd.Name); col != nil { col.NotNull = true s.notifyNotNullChange(rel) } - case pg_query.AlterTableType_AT_DropNotNull: + case pgparse.AlterTableType_AT_DropNotNull: if col := rel.Column(cmd.Name); col != nil { col.NotNull = false s.notifyNotNullChange(rel) } - case pg_query.AlterTableType_AT_ColumnDefault: + case pgparse.AlterTableType_AT_ColumnDefault: if col := rel.Column(cmd.Name); col != nil { col.Default = cmd.Def } else if rel.Kind == View { @@ -1442,7 +1543,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { rel.ViewDefaults[cmd.Name] = cmd.Def } } - case pg_query.AlterTableType_AT_AlterColumnType: + case pgparse.AlterTableType_AT_AlterColumnType: if col := rel.Column(cmd.Name); col != nil { if tr, err := s.resolveType(cmd.Def.GetColumnDef().GetTypeName()); err == nil { col.Type = tr @@ -1458,7 +1559,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { s.problem(loc, "%s.%s: %v", rel.Name, cmd.Name, err) } } - case pg_query.AlterTableType_AT_DropColumn: + case pgparse.AlterTableType_AT_DropColumn: if col := rel.Column(cmd.Name); col != nil && col.Inherited { s.problem(loc, "%s: cannot drop inherited column %q", rel.Name, cmd.Name) continue @@ -1479,13 +1580,34 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { } } } - case pg_query.AlterTableType_AT_DropConstraint: + case pgparse.AlterTableType_AT_DropConstraint: n := len(rel.Constraints) rel.Constraints = filterConstraints(rel.Constraints, func(c *Constraint) bool { return c.Name != cmd.Name }) - if len(rel.Constraints) == n && !cmd.MissingOk { + if colName, ok := rel.notNullNames[cmd.Name]; ok { + if col := rel.Column(colName); col != nil { + col.NotNull = false + s.notifyNotNullChange(rel) + } + delete(rel.notNullNames, cmd.Name) + } else if len(rel.Constraints) == n && !cmd.MissingOk { s.problem(loc, "%s: constraint %q does not exist", rel.Name, cmd.Name) } - case pg_query.AlterTableType_AT_AddIdentity: + case pgparse.AlterTableType_AT_AlterConstraint: + // ALTER CONSTRAINT name [NOT] ENFORCED / DEFERRABLE ... (PostgreSQL 18 form) + if ac := cmd.Def.GetAtalterConstraint(); ac != nil { + for _, c := range rel.Constraints { + if c.Name != ac.Conname { + continue + } + if ac.AlterEnforceability { + c.NotEnforced = !ac.IsEnforced + } + if ac.AlterDeferrability { + c.Deferrable = ac.Deferrable + } + } + } + case pgparse.AlterTableType_AT_AddIdentity: if col := rel.Column(cmd.Name); col != nil && col.Identity == 0 { col.NotNull = true col.Identity = 'd' @@ -1494,11 +1616,11 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { } s.createOwnedSequence(rel, col.Name, loc) } - case pg_query.AlterTableType_AT_EnableRule, pg_query.AlterTableType_AT_EnableAlwaysRule: + case pgparse.AlterTableType_AT_EnableRule, pgparse.AlterTableType_AT_EnableAlwaysRule: rel.setRuleEnabled(cmd.Name, true) - case pg_query.AlterTableType_AT_DisableRule, pg_query.AlterTableType_AT_EnableReplicaRule: + case pgparse.AlterTableType_AT_DisableRule, pgparse.AlterTableType_AT_EnableReplicaRule: rel.setRuleEnabled(cmd.Name, false) - case pg_query.AlterTableType_AT_AddInherit, pg_query.AlterTableType_AT_DropInherit: + case pgparse.AlterTableType_AT_AddInherit, pgparse.AlterTableType_AT_DropInherit: // the child already has the parent's columns; only the link changes (a child // goes with DROP TABLE parent CASCADE, ALTER TABLE parent reaches it) pschema, pname := s.rangeVar(cmd.Def.GetRangeVar()) @@ -1507,7 +1629,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { s.problem(loc, "%s: relation %q does not exist", rel.Name, pname) continue } - if cmd.Subtype == pg_query.AlterTableType_AT_AddInherit { + if cmd.Subtype == pgparse.AlterTableType_AT_AddInherit { rel.Parents = append(rel.Parents, parent) for _, pc := range parent.Columns { if c := rel.Column(pc.Name); c != nil { @@ -1531,7 +1653,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { } } } - case pg_query.AlterTableType_AT_AttachPartition, pg_query.AlterTableType_AT_DetachPartition: + case pgparse.AlterTableType_AT_AttachPartition, pgparse.AlterTableType_AT_DetachPartition: pc := cmd.Def.GetPartitionCmd() pschema, pname := s.rangeVar(pc.GetName()) part := s.relByName[pschema+"."+pname] @@ -1539,7 +1661,7 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { s.problem(loc, "%s: partition %q does not exist", rel.Name, pname) continue } - if cmd.Subtype == pg_query.AlterTableType_AT_AttachPartition { + if cmd.Subtype == pgparse.AlterTableType_AT_AttachPartition { part.Parents = append(part.Parents, rel) part.IsPartition = true // a partition's identity columns are the parent's @@ -1563,12 +1685,12 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { } } } - case pg_query.AlterTableType_AT_DropIdentity: + case pgparse.AlterTableType_AT_DropIdentity: if col := rel.Column(cmd.Name); col != nil { col.Identity = 0 s.dropOwnedSequences(rel, col.Name) } - case pg_query.AlterTableType_AT_SetIdentity: + case pgparse.AlterTableType_AT_SetIdentity: // ALTER COLUMN ... SET GENERATED { ALWAYS | BY DEFAULT } [SET ... sequence options] if col := rel.Column(cmd.Name); col != nil && col.Identity != 0 { for _, dn := range cmd.Def.GetList().GetItems() { @@ -1586,38 +1708,38 @@ func (s *Schema) alterTable(st *pg_query.AlterTableStmt, loc int32) { } } } - case pg_query.AlterTableType_AT_DropExpression: + case pgparse.AlterTableType_AT_DropExpression: if col := rel.Column(cmd.Name); col != nil { col.Generated = nil } - case pg_query.AlterTableType_AT_EnableRowSecurity: + case pgparse.AlterTableType_AT_EnableRowSecurity: rel.RowSecurity = true - case pg_query.AlterTableType_AT_DisableRowSecurity: + case pgparse.AlterTableType_AT_DisableRowSecurity: rel.RowSecurity = false - case pg_query.AlterTableType_AT_ForceRowSecurity: + case pgparse.AlterTableType_AT_ForceRowSecurity: rel.ForceRowSecurity = true - case pg_query.AlterTableType_AT_NoForceRowSecurity: + case pgparse.AlterTableType_AT_NoForceRowSecurity: rel.ForceRowSecurity = false - case pg_query.AlterTableType_AT_ChangeOwner, pg_query.AlterTableType_AT_SetRelOptions, - pg_query.AlterTableType_AT_ClusterOn, pg_query.AlterTableType_AT_SetStatistics, - pg_query.AlterTableType_AT_EnableTrig, pg_query.AlterTableType_AT_DisableTrig, pg_query.AlterTableType_AT_EnableAlwaysTrig, - pg_query.AlterTableType_AT_EnableReplicaTrig, pg_query.AlterTableType_AT_EnableTrigAll, pg_query.AlterTableType_AT_DisableTrigAll, - pg_query.AlterTableType_AT_EnableTrigUser, pg_query.AlterTableType_AT_DisableTrigUser, - pg_query.AlterTableType_AT_DetachPartitionFinalize, - pg_query.AlterTableType_AT_ValidateConstraint, pg_query.AlterTableType_AT_ReplicaIdentity, pg_query.AlterTableType_AT_SetLogged, - pg_query.AlterTableType_AT_SetUnLogged, pg_query.AlterTableType_AT_SetTableSpace, pg_query.AlterTableType_AT_SetStorage, - pg_query.AlterTableType_AT_SetCompression, pg_query.AlterTableType_AT_AlterConstraint, pg_query.AlterTableType_AT_ResetRelOptions, - pg_query.AlterTableType_AT_SetAccessMethod, - pg_query.AlterTableType_AT_DropOids, - pg_query.AlterTableType_AT_SetOptions, pg_query.AlterTableType_AT_ResetOptions, pg_query.AlterTableType_AT_GenericOptions, - pg_query.AlterTableType_AT_AlterColumnGenericOptions, pg_query.AlterTableType_AT_SetExpression: + case pgparse.AlterTableType_AT_ChangeOwner, pgparse.AlterTableType_AT_SetRelOptions, + pgparse.AlterTableType_AT_ClusterOn, pgparse.AlterTableType_AT_SetStatistics, + pgparse.AlterTableType_AT_EnableTrig, pgparse.AlterTableType_AT_DisableTrig, pgparse.AlterTableType_AT_EnableAlwaysTrig, + pgparse.AlterTableType_AT_EnableReplicaTrig, pgparse.AlterTableType_AT_EnableTrigAll, pgparse.AlterTableType_AT_DisableTrigAll, + pgparse.AlterTableType_AT_EnableTrigUser, pgparse.AlterTableType_AT_DisableTrigUser, + pgparse.AlterTableType_AT_DetachPartitionFinalize, + pgparse.AlterTableType_AT_ValidateConstraint, pgparse.AlterTableType_AT_ReplicaIdentity, pgparse.AlterTableType_AT_SetLogged, + pgparse.AlterTableType_AT_SetUnLogged, pgparse.AlterTableType_AT_SetTableSpace, pgparse.AlterTableType_AT_SetStorage, + pgparse.AlterTableType_AT_SetCompression, pgparse.AlterTableType_AT_ResetRelOptions, + pgparse.AlterTableType_AT_SetAccessMethod, + pgparse.AlterTableType_AT_DropOids, + pgparse.AlterTableType_AT_SetOptions, pgparse.AlterTableType_AT_ResetOptions, pgparse.AlterTableType_AT_GenericOptions, + pgparse.AlterTableType_AT_AlterColumnGenericOptions, pgparse.AlterTableType_AT_SetExpression: default: s.problem(loc, "ALTER TABLE %s: unsupported action %v", name, cmd.GetSubtype()) } } } -func (s *Schema) createIndex(st *pg_query.IndexStmt, loc int32) { +func (s *Schema) createIndex(st *pgparse.IndexStmt, loc int32) { schema, name := s.lookupRangeVar(st.Relation) rel := s.relByName[schema+"."+name] if rel == nil { @@ -1649,7 +1771,7 @@ func (s *Schema) createIndex(st *pg_query.IndexStmt, loc int32) { // --- functions ------------------------------------------------------------- -func (s *Schema) createFunction(st *pg_query.CreateFunctionStmt, loc int32) { +func (s *Schema) createFunction(st *pgparse.CreateFunctionStmt, loc int32) { schema, name := qualified(strs(st.Funcname)) if schema == "" { schema = s.creationSchema() @@ -1686,15 +1808,15 @@ func (s *Schema) createFunction(st *pg_query.CreateFunctionStmt, loc int32) { } a := FuncArg{Name: p.Name, Type: tr, HasDefault: p.Defexpr != nil} switch p.Mode { - case pg_query.FunctionParameterMode_FUNC_PARAM_IN, pg_query.FunctionParameterMode_FUNC_PARAM_DEFAULT: + case pgparse.FunctionParameterMode_FUNC_PARAM_IN, pgparse.FunctionParameterMode_FUNC_PARAM_DEFAULT: a.Mode = 'i' - case pg_query.FunctionParameterMode_FUNC_PARAM_OUT: + case pgparse.FunctionParameterMode_FUNC_PARAM_OUT: a.Mode = 'o' - case pg_query.FunctionParameterMode_FUNC_PARAM_INOUT: + case pgparse.FunctionParameterMode_FUNC_PARAM_INOUT: a.Mode = 'b' - case pg_query.FunctionParameterMode_FUNC_PARAM_VARIADIC: + case pgparse.FunctionParameterMode_FUNC_PARAM_VARIADIC: a.Mode = 'v' - case pg_query.FunctionParameterMode_FUNC_PARAM_TABLE: + case pgparse.FunctionParameterMode_FUNC_PARAM_TABLE: a.Mode = 't' tableCols = append(tableCols, a) } @@ -1769,14 +1891,14 @@ func (s *Schema) createFunction(st *pg_query.CreateFunctionStmt, loc int32) { // --- comments -------------------------------------------------------------- -func (s *Schema) comment(st *pg_query.CommentStmt, loc int32) { +func (s *Schema) comment(st *pgparse.CommentStmt, loc int32) { var key string switch st.Objtype { - case pg_query.ObjectType_OBJECT_TABLE, pg_query.ObjectType_OBJECT_VIEW, pg_query.ObjectType_OBJECT_MATVIEW: + case pgparse.ObjectType_OBJECT_TABLE, pgparse.ObjectType_OBJECT_VIEW, pgparse.ObjectType_OBJECT_MATVIEW: key = strings.Join(strs(st.Object.GetList().GetItems()), ".") - case pg_query.ObjectType_OBJECT_COLUMN: + case pgparse.ObjectType_OBJECT_COLUMN: key = strings.Join(strs(st.Object.GetList().GetItems()), ".") - case pg_query.ObjectType_OBJECT_TYPE, pg_query.ObjectType_OBJECT_DOMAIN: + case pgparse.ObjectType_OBJECT_TYPE, pgparse.ObjectType_OBJECT_DOMAIN: name := strings.TrimPrefix(strings.Join(strs(st.Object.GetTypeName().GetNames()), "."), "public.") key = "type:" + name default: @@ -1792,7 +1914,7 @@ func (s *Schema) comment(st *pg_query.CommentStmt, loc int32) { } // ResolveType resolves a TypeName AST node against this schema (exported for the analyzer). -func (s *Schema) ResolveType(tn *pg_query.TypeName) (TypeRef, error) { return s.resolveType(tn) } +func (s *Schema) ResolveType(tn *pgparse.TypeName) (TypeRef, error) { return s.resolveType(tn) } // addConstraint records a table constraint, naming it the way PG does when the schema // does not:
_pkey,
__key,
__fkey,
__check @@ -1859,11 +1981,11 @@ func checkInValues(e Expr) (string, []string) { return "", nil } col := cr.Fields[0].GetString_().GetSval() - var items []*pg_query.Node + var items []*pgparse.Node switch x.Kind { - case pg_query.A_Expr_Kind_AEXPR_IN: + case pgparse.A_Expr_Kind_AEXPR_IN: items = x.Rexpr.GetList().GetItems() - case pg_query.A_Expr_Kind_AEXPR_OP_ANY: + case pgparse.A_Expr_Kind_AEXPR_OP_ANY: if strs(x.Name)[0] != "=" { return "", nil } @@ -1887,7 +2009,7 @@ func checkInValues(e Expr) (string, []string) { if c == nil { return "", nil } - sv, ok := c.Val.(*pg_query.A_Const_Sval) + sv, ok := c.Val.(*pgparse.A_Const_Sval) if !ok { return "", nil } @@ -1911,7 +2033,7 @@ func uniqueName(base string, taken func(string) bool) string { func ColumnRefs(e Expr) []string { var out []string seen := map[string]bool{} - WalkNodes(e, func(n *pg_query.Node) { + WalkNodes(e, func(n *pgparse.Node) { cr := n.GetColumnRef() if cr == nil || len(cr.Fields) == 0 { return @@ -1926,11 +2048,11 @@ func ColumnRefs(e Expr) []string { } // WalkNodes visits every Node in a protobuf tree. -func WalkNodes(m proto.Message, f func(*pg_query.Node)) { +func WalkNodes(m proto.Message, f func(*pgparse.Node)) { if m == nil { return } - if n, ok := m.(*pg_query.Node); ok { + if n, ok := m.(*pgparse.Node); ok { if n == nil { return } @@ -1953,7 +2075,7 @@ func WalkNodes(m proto.Message, f func(*pg_query.Node)) { } // createTrigger records which events on which table run which function (trigger.h bits). -func (s *Schema) createTrigger(st *pg_query.CreateTrigStmt, loc int32) { +func (s *Schema) createTrigger(st *pgparse.CreateTrigStmt, loc int32) { schema, name := s.lookupRangeVar(st.Relation) rel := s.relByName[schema+"."+name] if rel == nil { @@ -1988,8 +2110,8 @@ func (s *Schema) Function(schema, name string) *Function { } // parseExpr parses a standalone SQL expression. -func parseExpr(text string) (Expr, error) { - tree, err := pg_query.Parse("SELECT " + text) +func parseExpr(v pgparse.Version, text string) (Expr, error) { + tree, err := v.Parse("SELECT " + text) if err != nil { return nil, err } @@ -2028,16 +2150,16 @@ func sameInputs(a, b *Function) bool { // PartitionKeyProblem checks one PARTITION BY expression against the table (the analyzer // installs it): the message PG would give, or "" when the expression is acceptable. -var PartitionKeyProblem func(s *Schema, rel *Relation, expr *pg_query.Node) string +var PartitionKeyProblem func(s *Schema, rel *Relation, expr *pgparse.Node) string // QueryColumns types a query's result columns for CREATE TABLE AS / SELECT INTO. The // analyzer installs it (package analyze imports schema, not the reverse); nil leaves // such tables as problems. -var QueryColumns func(s *Schema, query *pg_query.Node) ([]*Column, error) +var QueryColumns func(s *Schema, query *pgparse.Node) ([]*Column, error) // createTableAs creates the table a CREATE TABLE AS / SELECT INTO fills, with the // query's columns (renamed by the INTO column list when given). -func (s *Schema) createTableAs(into *pg_query.IntoClause, query *pg_query.Node, loc int32) { +func (s *Schema) createTableAs(into *pgparse.IntoClause, query *pgparse.Node, loc int32) { schema, name := s.rangeVar(into.Rel) if s.relByName[schema+"."+name] != nil { if into.Rel.Relpersistence != "t" { @@ -2056,7 +2178,7 @@ func (s *Schema) createTableAs(into *pg_query.IntoClause, query *pg_query.Node, } rel := s.newRelation(schema, name, Table) rel.Temp = into.Rel.Relpersistence == "t" - rel.OnCommitDrop = into.OnCommit == pg_query.OnCommitAction_ONCOMMIT_DROP + rel.OnCommitDrop = into.OnCommit == pgparse.OnCommitAction_ONCOMMIT_DROP for i, c := range cols { c.Num = int16(i + 1) c.NotNull = false // the created table has no constraints, whatever the query guaranteed @@ -2069,7 +2191,7 @@ func (s *Schema) createTableAs(into *pg_query.IntoClause, query *pg_query.Node, // createSequence registers a sequence as a relation with the three columns SELECT * FROM // seq yields; serial and identity columns create theirs implicitly. -func (s *Schema) createSequence(rv *pg_query.RangeVar, loc int32) { +func (s *Schema) createSequence(rv *pgparse.RangeVar, loc int32) { schema, name := s.rangeVar(rv) if s.relByName[schema+"."+name] != nil { return @@ -2102,8 +2224,8 @@ func (rel *Relation) rebuildRules() { } // applyRule records one enabled rule. -func (rel *Relation) applyRule(r *pg_query.RuleStmt) { - event := map[pg_query.CmdType]string{pg_query.CmdType_CMD_INSERT: "insert", pg_query.CmdType_CMD_UPDATE: "update", pg_query.CmdType_CMD_DELETE: "delete"}[r.Event] +func (rel *Relation) applyRule(r *pgparse.RuleStmt) { + event := map[pgparse.CmdType]string{pgparse.CmdType_CMD_INSERT: "insert", pgparse.CmdType_CMD_UPDATE: "update", pgparse.CmdType_CMD_DELETE: "delete"}[r.Event] if event == "" { return } @@ -2125,22 +2247,22 @@ func (rel *Relation) applyRule(r *pg_query.RuleStmt) { var dml bool if single { switch act := r.Actions[0].Node.(type) { - case *pg_query.Node_InsertStmt: + case *pgparse.Node_InsertStmt: dml = true if q := act.InsertStmt.SelectStmt.GetSelectStmt(); q != nil && len(q.ValuesLists) == 0 { set(&rel.RuleInsertSelect) } - if len(act.InsertStmt.ReturningList) == 0 { + if len(act.InsertStmt.GetReturningClause().GetExprs()) == 0 { set(&rel.RuleNoReturning) } - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: dml = true - if len(act.UpdateStmt.ReturningList) == 0 { + if len(act.UpdateStmt.GetReturningClause().GetExprs()) == 0 { set(&rel.RuleNoReturning) } - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: dml = true - if len(act.DeleteStmt.ReturningList) == 0 { + if len(act.DeleteStmt.GetReturningClause().GetExprs()) == 0 { set(&rel.RuleNoReturning) } } @@ -2182,7 +2304,7 @@ func (rel *Relation) setRuleEnabled(name string, enabled bool) { // createOwnedSequence is the implicit sequence of a serial / identity column. func (s *Schema) createOwnedSequence(rel *Relation, col string, loc int32) { name := makeObjectName(rel.Name, col, "seq") // ChooseRelationName: truncated like every generated name - s.createSequence(&pg_query.RangeVar{Schemaname: rel.Schema, Relname: name}, loc) + s.createSequence(&pgparse.RangeVar{Schemaname: rel.Schema, Relname: name}, loc) if seq := s.relByName[rel.Schema+"."+name]; seq != nil && seq.Kind == Sequence { seq.OwnedBy = rel.Schema + "." + rel.Name + "." + col } @@ -2201,7 +2323,7 @@ func (s *Schema) dropOwnedSequences(rel *Relation, col string) { // alterSequence applies ALTER SEQUENCE ... OWNED BY { table.column | NONE }; the other // options do not affect typing. -func (s *Schema) alterSequence(st *pg_query.AlterSeqStmt, loc int32) { +func (s *Schema) alterSequence(st *pgparse.AlterSeqStmt, loc int32) { schema, name := s.rangeVar(st.Sequence) seq := s.relByName[schema+"."+name] if seq == nil || seq.Kind != Sequence { @@ -2270,7 +2392,7 @@ func (s *Schema) Schemas() []string { // RuleDef is one rule of a relation as declared, with whether it is enabled. type RuleDef struct { - Stmt *pg_query.RuleStmt + Stmt *pgparse.RuleStmt Enabled bool } @@ -2289,10 +2411,10 @@ func Deparse(e Expr) string { if e == nil { return "" } - res := &pg_query.ParseResult{Stmts: []*pg_query.RawStmt{{Stmt: &pg_query.Node{Node: &pg_query.Node_SelectStmt{SelectStmt: &pg_query.SelectStmt{ - TargetList: []*pg_query.Node{{Node: &pg_query.Node_ResTarget{ResTarget: &pg_query.ResTarget{Val: e}}}}, + res := &pgparse.ParseResult{Stmts: []*pgparse.RawStmt{{Stmt: &pgparse.Node{Node: &pgparse.Node_SelectStmt{SelectStmt: &pgparse.SelectStmt{ + TargetList: []*pgparse.Node{{Node: &pgparse.Node_ResTarget{ResTarget: &pgparse.ResTarget{Val: e}}}}, }}}}}} - s, err := pg_query.Deparse(res) + s, err := pgparse.Deparse(res) if err != nil { return "" } @@ -2300,11 +2422,11 @@ func Deparse(e Expr) string { } // DeparseStmt renders a whole statement (a view's query, a rule) back to SQL text. -func DeparseStmt(n *pg_query.Node) string { +func DeparseStmt(n *pgparse.Node) string { if n == nil { return "" } - s, err := pg_query.Deparse(&pg_query.ParseResult{Stmts: []*pg_query.RawStmt{{Stmt: n}}}) + s, err := pgparse.Deparse(&pgparse.ParseResult{Stmts: []*pgparse.RawStmt{{Stmt: n}}}) if err != nil { return "" } diff --git a/internal/schema/seed.go b/internal/schema/seed.go index 96e0a6a..df7dbd6 100644 --- a/internal/schema/seed.go +++ b/internal/schema/seed.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" + "github.com/kr9ly/sqlshape/internal/pgparse" ) // Seed is the fixed content of a table: the rows the schema text itself gives it with @@ -33,7 +33,7 @@ type Seed struct { // CheckStatement type-checks a data statement of the schema text against the schema as // it stands (the analyzer installs it); nil leaves the INSERTs unchecked. -var CheckStatement func(s *Schema, stmt *pg_query.Node) error +var CheckStatement func(s *Schema, stmt *pgparse.Node) error // KeyText renders the key of a row for identity comparison. func (sd *Seed) KeyText(row []Expr) string { @@ -72,7 +72,7 @@ func (sd *Seed) index(col string) int { } // insert records the rows of an INSERT ... VALUES in the target table's Seed. -func (s *Schema) insert(st *pg_query.InsertStmt, node *pg_query.Node, loc int32) { +func (s *Schema) insert(st *pgparse.InsertStmt, node *pgparse.Node, loc int32) { rel := s.findRelation(s.rangeVar(st.Relation)) if rel == nil { sch, name := s.rangeVar(st.Relation) @@ -220,22 +220,22 @@ func seedKey(rel *Relation, given map[string]bool) []string { // parameter, a subquery), or calls a function that is not IMMUTABLE. Empty when it is. func (s *Schema) notConstant(e Expr) string { why := "" - WalkNodes(e, func(n *pg_query.Node) { + WalkNodes(e, func(n *pgparse.Node) { if why != "" { return } switch x := n.Node.(type) { - case *pg_query.Node_ColumnRef: + case *pgparse.Node_ColumnRef: why = "it references a column" - case *pg_query.Node_ParamRef: + case *pgparse.Node_ParamRef: why = "it references a parameter" - case *pg_query.Node_SubLink: + case *pgparse.Node_SubLink: why = "it contains a subquery" - case *pg_query.Node_SetToDefault: + case *pgparse.Node_SetToDefault: why = "DEFAULT: leave the column out of the INSERT instead" - case *pg_query.Node_SqlvalueFunction: + case *pgparse.Node_SqlvalueFunction: why = "it reads the session (current_date and friends)" - case *pg_query.Node_FuncCall: + case *pgparse.Node_FuncCall: if v := s.volatility(strs(x.FuncCall.Funcname)); v != 'i' { why = fmt.Sprintf("%s() is not IMMUTABLE", strs(x.FuncCall.Funcname)[len(x.FuncCall.Funcname)-1]) } diff --git a/internal/schema/source.go b/internal/schema/source.go index c42878a..d1f4c78 100644 --- a/internal/schema/source.go +++ b/internal/schema/source.go @@ -12,7 +12,23 @@ import ( // concatenated in name order (so `schema/010_types.sql`, `schema/020_tables.sql`, ... // apply like one file). Each file's text is preceded by a comment naming it, so a // problem's position can be traced back. +// ReadSource reads a schema.sql file, or a directory of *.sql files in name order, and +// requires the text to declare its PostgreSQL version (`-- sqlshape: postgres 17`): the +// version decides the grammar, the catalog and the PostgreSQL pgtest runs, so a file +// without one is not judged. Schema text built in code (Load) may leave it out and gets +// pgparse.Default. func ReadSource(path string) (string, error) { + text, err := readSource(path) + if err != nil { + return "", err + } + if !versionLine.MatchString(strings.TrimPrefix(text, "\ufeff")) { // a byte order mark is not part of the SQL + return "", fmt.Errorf("%s: declare the PostgreSQL version the schema is written for, as a line `-- sqlshape: postgres 17` (sqlshape supports PostgreSQL %s)", path, supportedVersions()) + } + return text, nil +} + +func readSource(path string) (string, error) { fi, err := os.Stat(path) if err != nil { return "", err diff --git a/internal/schema/source_test.go b/internal/schema/source_test.go index 216114d..101fa08 100644 --- a/internal/schema/source_test.go +++ b/internal/schema/source_test.go @@ -3,14 +3,19 @@ package schema import ( "os" "path/filepath" + "strings" "testing" ) func TestReadSourceDirectory(t *testing.T) { dir := t.TempDir() os.WriteFile(filepath.Join(dir, "020_tables.sql"), []byte("CREATE TABLE t (id int, m mood);"), 0o644) - os.WriteFile(filepath.Join(dir, "010_types.sql"), []byte("CREATE TYPE mood AS ENUM ('a');\n"), 0o644) os.WriteFile(filepath.Join(dir, "README.md"), []byte("not sql"), 0o644) + // no file declares the version yet + if _, err := ReadSource(dir); err == nil || !strings.Contains(err.Error(), "declare the PostgreSQL version") { + t.Errorf("without a declaration: %v", err) + } + os.WriteFile(filepath.Join(dir, "010_types.sql"), []byte("-- sqlshape: postgres 17\nCREATE TYPE mood AS ENUM ('a');\n"), 0o644) src, err := ReadSource(dir) if err != nil { t.Fatal(err) diff --git a/internal/schema/testdata/schema.sql b/internal/schema/testdata/schema.sql index cf0a602..5a8b343 100644 --- a/internal/schema/testdata/schema.sql +++ b/internal/schema/testdata/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TYPE order_status AS ENUM ('pending', 'paid', 'shipped', 'cancelled'); CREATE DOMAIN yen AS bigint CHECK (VALUE >= 0); CREATE DOMAIN email AS text NOT NULL CHECK (VALUE ~ '@'); diff --git a/internal/schema/types.go b/internal/schema/types.go index 07c2341..5af78a2 100644 --- a/internal/schema/types.go +++ b/internal/schema/types.go @@ -42,6 +42,8 @@ type Types struct { type Domain struct { NotNull bool Checks []*Constraint // Kind Check, named _check like PG + // Collation is the COLLATE of CREATE DOMAIN, "" for the base type's default. + Collation string } func newTypes(cat *catalog.Catalog) *Types { diff --git a/internal/schema/version_test.go b/internal/schema/version_test.go new file mode 100644 index 0000000..4dbbc7e --- /dev/null +++ b/internal/schema/version_test.go @@ -0,0 +1,59 @@ +package schema_test + +import ( + "strings" + "testing" + + "github.com/kr9ly/sqlshape/internal/analyze" + "github.com/kr9ly/sqlshape/internal/pgparse" +) + +// The `-- sqlshape: postgres ` declaration picks the grammar every statement is parsed +// with; RETURNING WITH (OLD AS ...) is 18 syntax. +func TestPostgresVersionDeclaration(t *testing.T) { + const table = "CREATE TABLE t (id int PRIMARY KEY, a int);\n" + const stmt18 = "UPDATE t SET a = 1 WHERE id = $1 RETURNING WITH (OLD AS o) o.a" + + s := mustLoad(t, table) + if s.Version != pgparse.Default { + t.Errorf("undeclared: version %d, want Default %d", s.Version, pgparse.Default) + } + if _, err := analyze.Analyze(s, stmt18); err == nil { + t.Error("17 accepts 18 syntax") + } + + s = mustLoad(t, "-- sqlshape: postgres 18\n"+table) + if s.Version != pgparse.PG18 { + t.Errorf("declared 18: version %d", s.Version) + } + if p := problems(s); p != "" { + t.Errorf("the declaration is reported as a stray directive:\n%s", p) + } + // the grammar accepts it; the analyzer's RETURNING OLD/NEW support is separate work, so + // only a syntax error would be wrong here + if _, err := analyze.Analyze(s, stmt18); err != nil && strings.Contains(err.Error(), "syntax error") { + t.Errorf("18 rejects 18 syntax: %v", err) + } + // the schema's own DDL is parsed with the declared grammar too + if _, err := analyze.Load("-- sqlshape: postgres 18\n" + table + "CREATE TABLE u (p int, r int4range, PRIMARY KEY (p, r WITHOUT OVERLAPS));\n"); err != nil { + t.Errorf("18 schema DDL: %v", err) + } + // anywhere in the file, and repeated with the same value + s = mustLoad(t, table+"-- sqlshape: postgres 18\nCREATE TABLE u (id int);\n-- sqlshape: postgres 18\n") + if s.Version != pgparse.PG18 || problems(s) != "" { + t.Errorf("version %d, problems %q", s.Version, problems(s)) + } + + for sql, want := range map[string]string{ + "-- sqlshape: postgres 16\n" + table: "supports PostgreSQL 17, 18", + "-- sqlshape: postgres x\n" + table: "want a major version number", + "-- sqlshape: postgres 17\n" + table + "-- sqlshape: postgres 18\n": "declared twice", + } { + if _, err := analyze.Load(sql); err == nil || !strings.Contains(err.Error(), want) { + t.Errorf("%q: got %v, want %q", sql, err, want) + } + } + if err := s.Apply("-- sqlshape: postgres 17\nCREATE TABLE w (id int);"); err == nil { + t.Error("Apply accepts a version declaration") + } +} diff --git a/internal/vet/binding.go b/internal/vet/binding.go index 7dc2611..f9de8a0 100644 --- a/internal/vet/binding.go +++ b/internal/vet/binding.go @@ -11,8 +11,8 @@ import ( "strings" "github.com/kr9ly/sqlshape/internal/analyze" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" - pg_query "github.com/pganalyze/pg_query_go/v6" ) // Interpretation sharing: a Go named type that meets a DB nominal type — an enum, a @@ -137,9 +137,9 @@ func seedIndex(sd *schema.Seed, col string) int { func constText(e schema.Expr) string { if ac := e.GetAConst(); ac != nil { switch v := ac.Val.(type) { - case *pg_query.A_Const_Sval: + case *pgparse.A_Const_Sval: return v.Sval.GetSval() - case *pg_query.A_Const_Ival: + case *pgparse.A_Const_Ival: return strconv.Itoa(int(v.Ival.GetIval())) } } diff --git a/internal/vet/hazards.go b/internal/vet/hazards.go index b840504..60562e9 100644 --- a/internal/vet/hazards.go +++ b/internal/vet/hazards.go @@ -6,9 +6,8 @@ import ( "strconv" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/kr9ly/sqlshape/internal/expand" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -148,8 +147,8 @@ func isIdentByte(c byte) bool { // bare parameter is caught in any position of the list, decorated with ASC/DESC/NULLS // FIRST/LAST or not, inside a window definition's PARTITION BY or ORDER BY too — not only // when it is the leading item of a plain ORDER BY / GROUP BY. -func checkBareOrderBy(e *expand.Expansion, lit literal, report func(token.Pos, string, ...any), where string) { - tree, err := pg_query.Parse(e.SQL) +func checkBareOrderBy(v pgparse.Version, e *expand.Expansion, lit literal, report func(token.Pos, string, ...any), where string) { + tree, err := v.Parse(e.SQL) if err != nil { return // analyze.Analyze reports the parse failure itself } @@ -157,7 +156,7 @@ func checkBareOrderBy(e *expand.Expansion, lit literal, report func(token.Pos, s for i := range e.Params { byN[int32(e.Params[i].N)] = &e.Params[i] } - flag := func(kw string, target *pg_query.Node) { + flag := func(kw string, target *pgparse.Node) { ref := target.GetParamRef() if ref == nil { return @@ -168,15 +167,15 @@ func checkBareOrderBy(e *expand.Expansion, lit literal, report func(token.Pos, s } report(lit.pos(e.TemplatePos(int(ref.Location))), "%s BY {{%s}} sorts by a constant, not by the column the value names: branch on it instead ({{if eq %s \"total\"}} total {{else}} id {{end}})%s", kw, p.Path, p.Path, where) } - schema.WalkNodes(tree, func(n *pg_query.Node) { + schema.WalkNodes(tree, func(n *pgparse.Node) { switch v := n.Node.(type) { - case *pg_query.Node_SortBy: + case *pgparse.Node_SortBy: flag("ORDER", v.SortBy.Node) - case *pg_query.Node_SelectStmt: + case *pgparse.Node_SelectStmt: for _, g := range v.SelectStmt.GroupClause { flag("GROUP", g) } - case *pg_query.Node_WindowDef: + case *pgparse.Node_WindowDef: for _, p := range v.WindowDef.PartitionClause { flag("PARTITION", p) } diff --git a/internal/vet/testdata/adv_context_schema.sql b/internal/vet/testdata/adv_context_schema.sql index c6d7d9f..8969e5b 100644 --- a/internal/vet/testdata/adv_context_schema.sql +++ b/internal/vet/testdata/adv_context_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- sqlshape: require pinned(tenant_id) -- sqlshape: context ops: waive pinned(tenant_id) CREATE TABLE orders (id bigint PRIMARY KEY, tenant_id bigint NOT NULL); diff --git a/internal/vet/testdata/adv_obligation_schema.sql b/internal/vet/testdata/adv_obligation_schema.sql index 453cc09..e42f2ff 100644 --- a/internal/vet/testdata/adv_obligation_schema.sql +++ b/internal/vet/testdata/adv_obligation_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- sqlshape: require pinned(tenant_id) CREATE TABLE orders ( id bigint PRIMARY KEY, diff --git a/internal/vet/testdata/adv_param_schema.sql b/internal/vet/testdata/adv_param_schema.sql index 0a58a90..898a5e0 100644 --- a/internal/vet/testdata/adv_param_schema.sql +++ b/internal/vet/testdata/adv_param_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TABLE t ( id bigint PRIMARY KEY, tags smallint[], diff --git a/internal/vet/testdata/ctx_schema.sql b/internal/vet/testdata/ctx_schema.sql index e5923e4..6406dee 100644 --- a/internal/vet/testdata/ctx_schema.sql +++ b/internal/vet/testdata/ctx_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- sqlshape: require pinned(tenant_id) -- sqlshape: context ops: waive pinned(tenant_id); require id = $1 on delete CREATE TABLE orders (id bigint PRIMARY KEY, tenant_id bigint NOT NULL, status text NOT NULL); diff --git a/internal/vet/testdata/loaderrors_schema.sql b/internal/vet/testdata/loaderrors_schema.sql index 89ef551..2cc13fd 100644 --- a/internal/vet/testdata/loaderrors_schema.sql +++ b/internal/vet/testdata/loaderrors_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 -- a schema-level problem (s.Problems), unrelated to any function / policy / view body CREATE TABLE dup_table (id bigint PRIMARY KEY); CREATE TABLE dup_table (id bigint PRIMARY KEY); diff --git a/internal/vet/testdata/otherschema_schema.sql b/internal/vet/testdata/otherschema_schema.sql index 7b7fa8d..aa197d7 100644 --- a/internal/vet/testdata/otherschema_schema.sql +++ b/internal/vet/testdata/otherschema_schema.sql @@ -1,2 +1,3 @@ +-- sqlshape: postgres 17 CREATE SCHEMA priv; CREATE TABLE priv.thing (id bigint PRIMARY KEY); diff --git a/internal/vet/testdata/plpgsql_schema.sql b/internal/vet/testdata/plpgsql_schema.sql index fbf6b63..4d94b37 100644 --- a/internal/vet/testdata/plpgsql_schema.sql +++ b/internal/vet/testdata/plpgsql_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TABLE accounts ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, owner text NOT NULL, diff --git a/internal/vet/testdata/rls_schema.sql b/internal/vet/testdata/rls_schema.sql index b3047e4..4555bc9 100644 --- a/internal/vet/testdata/rls_schema.sql +++ b/internal/vet/testdata/rls_schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TABLE tenants (id uuid PRIMARY KEY); -- policies on a table whose row security is enabled, one reading a setting with missing_ok diff --git a/internal/vet/testdata/schema.sql b/internal/vet/testdata/schema.sql index be5e39e..0994dba 100644 --- a/internal/vet/testdata/schema.sql +++ b/internal/vet/testdata/schema.sql @@ -1,3 +1,4 @@ +-- sqlshape: postgres 17 CREATE TYPE order_status AS ENUM ('pending', 'paid', 'shipped', 'cancelled'); CREATE DOMAIN yen AS bigint CHECK (VALUE >= 0); CREATE DOMAIN email AS text NOT NULL CHECK (VALUE ~ '@'); diff --git a/internal/vet/vet.go b/internal/vet/vet.go index 57280d6..3f6ed1c 100644 --- a/internal/vet/vet.go +++ b/internal/vet/vet.go @@ -672,7 +672,7 @@ func (c *checker) checkCall(call *ast.CallExpr) { report(lit.pos(0), "One: cannot prove at most one row: %s%s", r.ManyRowsWhy, where) } c.checkParams(e, r, pType, lit, reportP, where) - checkBareOrderBy(e, lit, report, where) + checkBareOrderBy(c.s.Version, e, lit, report, where) d.addParams(e, r) d.addResult(r) for name, t := range c.checkResult(call.Pos(), r, rType, lit, reportR, where) { diff --git a/pgtest/pgtest.go b/pgtest/pgtest.go index 3ca42bf..7805394 100644 --- a/pgtest/pgtest.go +++ b/pgtest/pgtest.go @@ -27,7 +27,12 @@ type DB struct { // Start launches PostgreSQL (embedded binary, downloaded on first use) and applies schemaSQL. func Start(ctx context.Context, schemaSQL string) (*DB, error) { - o, err := oracle.Start(ctx, schemaSQL) + // the PostgreSQL the schema declares (`-- sqlshape: postgres `) + v, err := schema.DeclaredVersion(schemaSQL) + if err != nil { + return nil, err + } + o, err := oracle.StartVersion(ctx, v, schemaSQL) if err != nil { return nil, err }