From 64f990f1c8900d0ea15aa9ec7a08eb088721d9e6 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Tue, 8 Sep 2026 18:08:14 +0900 Subject: [PATCH 01/27] =?UTF-8?q?internal/pgparse:=20the=20parser=20is=20l?= =?UTF-8?q?ibpg=5Fquery=2017-6.2.2=20compiled=20to=20WebAssembly=20and=20r?= =?UTF-8?q?un=20by=20wazero=20=E2=80=94=20Parse=20/=20Deparse=20/=20SplitW?= =?UTF-8?q?ithScanner=20/=20ParsePlPgSqlToJSON=20with=20pg=5Fquery=5Fgo's?= =?UTF-8?q?=20signatures,=20one=20pooled=20instance=20per=20call,=20protob?= =?UTF-8?q?uf=20bytes=20and=20error=20messages=20identical=20to=20cgo=20(t?= =?UTF-8?q?ested=20against=20it);=20every=20call=20site=20now=20goes=20thr?= =?UTF-8?q?ough=20it,=20node=20types=20still=20pg=5Fquery=5Fgo's?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wasm/build.sh rebuilds pg_query_.wasm from a libpg_query tag (emscripten longjmp emulation for the syntax-error path, stderr redirect compiled out), wasm/shim.c wraps the struct-returning C API in pointer-returning entry points. --- go.mod | 2 + go.sum | 4 + internal/analyze/analyze.go | 3 +- internal/analyze/facts.go | 3 +- internal/analyze/function.go | 3 +- internal/analyze/grouping.go | 3 +- internal/analyze/literal.go | 4 +- internal/analyze/plpgsql.go | 9 +- internal/analyze/regress_test.go | 7 +- internal/cli/check.go | 7 +- internal/pgparse/pgparse.go | 342 +++++++++++++++++++++++++ internal/pgparse/pgparse_test.go | 147 +++++++++++ internal/pgparse/wasm/build.sh | 44 ++++ internal/pgparse/wasm/pg_query_17.wasm | Bin 0 -> 1577852 bytes internal/pgparse/wasm/shim.c | 53 ++++ internal/schema/schema.go | 11 +- internal/vet/hazards.go | 3 +- 17 files changed, 621 insertions(+), 24 deletions(-) create mode 100644 internal/pgparse/pgparse.go create mode 100644 internal/pgparse/pgparse_test.go create mode 100755 internal/pgparse/wasm/build.sh create mode 100755 internal/pgparse/wasm/pg_query_17.wasm create mode 100644 internal/pgparse/wasm/shim.c diff --git a/go.mod b/go.mod index b1e63f0..8073e41 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ 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 ) @@ -18,5 +19,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..7905c13 100644 --- a/go.sum +++ b/go.sum @@ -26,6 +26,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,6 +36,8 @@ 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= diff --git a/internal/analyze/analyze.go b/internal/analyze/analyze.go index 25cf22a..cd00cf6 100644 --- a/internal/analyze/analyze.go +++ b/internal/analyze/analyze.go @@ -12,6 +12,7 @@ import ( "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/facts" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -227,7 +228,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 := pgparse.Parse(sql) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } diff --git a/internal/analyze/facts.go b/internal/analyze/facts.go index b3f6c59..1f86009 100644 --- a/internal/analyze/facts.go +++ b/internal/analyze/facts.go @@ -8,6 +8,7 @@ import ( "google.golang.org/protobuf/proto" "github.com/kr9ly/sqlshape/internal/facts" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -588,7 +589,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 := pgparse.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..cf5a579 100644 --- a/internal/analyze/function.go +++ b/internal/analyze/function.go @@ -8,6 +8,7 @@ import ( "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/facts" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -133,7 +134,7 @@ func functionBody(fn *schema.Function) ([]*pg_query.Node, error) { 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 := pgparse.Parse(fn.Body) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } diff --git a/internal/analyze/grouping.go b/internal/analyze/grouping.go index 4ae44af..ec6d76a 100644 --- a/internal/analyze/grouping.go +++ b/internal/analyze/grouping.go @@ -8,6 +8,7 @@ import ( "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -273,7 +274,7 @@ 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}}}}, }}}}}} - s, err := pg_query.Deparse(res) + s, err := pgparse.Deparse(res) if err != nil { return "" } diff --git a/internal/analyze/literal.go b/internal/analyze/literal.go index d342b93..776c9d7 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}\}?$`) @@ -542,7 +542,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 := pgparse.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/plpgsql.go b/internal/analyze/plpgsql.go index 6e68fb9..604b3aa 100644 --- a/internal/analyze/plpgsql.go +++ b/internal/analyze/plpgsql.go @@ -7,9 +7,8 @@ import ( "strings" "sync" - 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" ) @@ -199,7 +198,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 := pgparse.ParsePlPgSqlToJSON(text) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } @@ -443,7 +442,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 := pgparse.Parse("SELECT NULL::" + tn) if err != nil { return schema.TypeRef{}, nil, b.errf(line, codeUndefinedObject, "type %q does not exist", tn) } @@ -968,7 +967,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 := pgparse.Parse(query) if err != nil { return nil, b.errf(line, codeSyntaxError, "%s", strings.TrimPrefix(err.Error(), "syntax error ")) } diff --git a/internal/analyze/regress_test.go b/internal/analyze/regress_test.go index 9e76fc6..9f50900 100644 --- a/internal/analyze/regress_test.go +++ b/internal/analyze/regress_test.go @@ -19,6 +19,7 @@ import ( 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" ) @@ -447,7 +448,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 := pgparse.Parse(sql) if err != nil || len(tree.Stmts) == 0 { p.count("unparsed") exec(sql) @@ -607,7 +608,7 @@ var sessionResets = []string{"RESET search_path", "RESET datestyle", "RESET inte func dropTemps(stmts []string) []string { temps := map[string]string{} // name → TABLE / VIEW / SEQUENCE for _, sql := range stmts { - tree, err := pg_query.Parse(sql) + tree, err := pgparse.Parse(sql) if err != nil || len(tree.Stmts) != 1 { continue } @@ -734,7 +735,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 := pgparse.SplitWithScanner(text, true) if err != nil { p.t.Logf("split: %v", err) return nil diff --git a/internal/cli/check.go b/internal/cli/check.go index b63fbd4..23eeff4 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" ) @@ -136,7 +135,7 @@ func checkSchemaBodies(s *schema.Schema, decls []obligation.Obligation, name str func statementSpans(text string) ([][2]int, error) { var spans [][2]int prevEnd := 0 - if tree, err := pg_query.Parse(text); err == nil { + if tree, err := pgparse.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 := pgparse.SplitWithScanner(text, false) if err != nil { return nil, fmt.Errorf("%s", strings.TrimPrefix(err.Error(), "syntax error ")) } diff --git a/internal/pgparse/pgparse.go b/internal/pgparse/pgparse.go new file mode 100644 index 0000000..4d14f8c --- /dev/null +++ b/internal/pgparse/pgparse.go @@ -0,0 +1,342 @@ +// 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. +// +// A wasm instance is not safe for concurrent use; instances are pooled and one is taken +// per call. The module is compiled once per process on first use. +package pgparse + +import ( + "context" + _ "embed" + "fmt" + "strings" + "sync" + + pg_query "github.com/pganalyze/pg_query_go/v6" + "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/proto" +) + +// Built by wasm/build.sh from libpg_query tag 17-6.2.2. +// +//go:embed wasm/pg_query_17.wasm +var wasm17 []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 +} + +var pg17 = &module{wasm: wasm17} + +func (m *module) compile() error { + m.once.Do(func() { + ctx := context.Background() + m.runtime = wazero.NewRuntime(ctx) + 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 +} + +// 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 +} + +// Parse parses sql into a parse tree. +func Parse(sql string) (*pg_query.ParseResult, error) { + b, err := pg17.parseProtobuf(sql) + if err != nil { + return nil, err + } + tree := &pg_query.ParseResult{} + if err := proto.Unmarshal(b, 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 *pg_query.ParseResult) (out string, err error) { + b, err := proto.Marshal(tree) + if err != nil { + return "", fmt.Errorf("pgparse: encoding parse tree: %w", err) + } + err = pg17.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 the PL/pgSQL function bodies in input (CREATE FUNCTION +// statements) and returns their parse trees as JSON. +func ParsePlPgSqlToJSON(input string) (out string, err error) { + err = pg17.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 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) (out []string, err error) { + err = pg17.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 + } + s := input[int32(loc) : int32(loc)+int32(l)] + if trimSpace { + s = strings.TrimSpace(s) + } + out = append(out, s) + } + 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..e10815e --- /dev/null +++ b/internal/pgparse/pgparse_test.go @@ -0,0 +1,147 @@ +package pgparse + +import ( + "strings" + "sync" + "testing" + + pg_query "github.com/pganalyze/pg_query_go/v6" + "github.com/pganalyze/pg_query_go/v6/parser" + "google.golang.org/protobuf/proto" +) + +var statements = []string{ + "SELECT 1", + "SELECT a FROM t WHERE b = $1 AND c IN (1,2)", + "INSERT INTO t (a) VALUES (1) ON CONFLICT (a) DO UPDATE SET a = excluded.a RETURNING *", + "WITH d AS (DELETE FROM ledger WHERE id = $1 RETURNING amount) SELECT amount FROM d", + "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)", + "SELECT * FROM json_table(j, '$[*]' COLUMNS (a int PATH '$.a')) AS jt", + "SELECT json_table(j) FROM t", // rejected by both + "CREATE TABLE t (id bigint PRIMARY KEY, s text NOT NULL CHECK (s IN ('a','b')), FOREIGN KEY (id) REFERENCES p (id))", + "SELECT * FROM t WHERE x = 'it''s' AND y = E'\\n' AND z = $$dollar$$", + "SELECT 'ünïcödé', 'あ' FROM t; SELECT 2", +} + +// TestParseMatchesCgo: the wasm parser's protobuf bytes are the cgo parser's. +func TestParseMatchesCgo(t *testing.T) { + for _, sql := range statements { + want, cgoErr := parser.ParseToProtobuf(sql) + got, err := pg17.parseProtobuf(sql) + if cgoErr != nil || err != nil { + if err == nil || cgoErr == nil || err.Error() != cgoErr.Error() { + t.Errorf("%q: wasm %v, cgo %v", sql, err, cgoErr) + } + continue + } + if string(got) != string(want) { + t.Errorf("%q: protobuf differs (%d vs %d bytes)", sql, len(got), len(want)) + } + } +} + +// TestParseError: a syntax error (the longjmp path) is reported with cgo's message and +// position, and the instance keeps working afterwards. +func TestParseError(t *testing.T) { + for i := 0; i < 3; i++ { + _, err := Parse("SELECT id FROM WHERE") + e, ok := err.(*Error) + if !ok { + t.Fatalf("got %v, want *Error", err) + } + _, cgoErr := pg_query.Parse("SELECT id FROM WHERE") + if e.Message != cgoErr.Error() { + t.Errorf("message %q, cgo %q", e.Message, cgoErr) + } + if e.Cursorpos != cgoErr.(*parser.Error).Cursorpos { + t.Errorf("cursor %d, cgo %d", e.Cursorpos, cgoErr.(*parser.Error).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) + } + want, _ := pg_query.Deparse(tree) + if got != want { + t.Errorf("got %q, want %q", got, want) + } +} + +func TestParsePlPgSqlToJSON(t *testing.T) { + src := "CREATE FUNCTION f() RETURNS int LANGUAGE plpgsql AS $$ DECLARE x int := 1; BEGIN RETURN x + 1; END $$" + got, err := ParsePlPgSqlToJSON(src) + if err != nil { + t.Fatal(err) + } + want, _ := pg_query.ParsePlPgSqlToJSON(src) + if got != want { + t.Errorf("got %q, want %q", got, want) + } + if _, err := ParsePlPgSqlToJSON("CREATE FUNCTION f() RETURNS int LANGUAGE plpgsql AS $$ BEGIN RETRUN 1; END $$"); err == nil { + t.Error("want an error for a PL/pgSQL syntax error") + } +} + +func TestSplitWithScanner(t *testing.T) { + src := "SELECT 1;\n-- c\nSELECT FROM WHERE 'あ;';\n\nSELECT 3" + for _, trim := range []bool{false, true} { + got, err := SplitWithScanner(src, trim) + if err != nil { + t.Fatal(err) + } + want, _ := pg_query.SplitWithScanner(src, trim) + if strings.Join(got, "|") != strings.Join(want, "|") { + t.Errorf("trim=%v: got %q, want %q", trim, got, want) + } + } + 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) { + want, _ := parser.ParseToProtobuf(statements[4]) + var wg sync.WaitGroup + for g := 0; g < 16; g++ { + wg.Add(1) + go func() { + defer wg.Done() + for i := 0; i < 50; i++ { + got, err := pg17.parseProtobuf(statements[4]) + 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 i := 0; i < b.N; i++ { + pg17.parseProtobuf(statements[4]) + } +} + +func BenchmarkParseCgo(b *testing.B) { + for i := 0; i < b.N; i++ { + parser.ParseToProtobuf(statements[4]) + } +} + +var _ = proto.Marshal diff --git a/internal/pgparse/wasm/build.sh b/internal/pgparse/wasm/build.sh new file mode 100755 index 0000000..45e3449 --- /dev/null +++ b/internal/pgparse/wasm/build.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# Builds pg_query_.wasm from a libpg_query checkout with emscripten. +# +# build.sh e.g. build.sh 17-6.2.2 +# +# The tag is cloned (shallow) into $LIBPG_QUERY_CACHE (default ~/.cache/sqlshape/libpg_query) +# unless already present. Needs emcc on PATH: `nix-shell -p emscripten --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%%-*} +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_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" diff --git a/internal/pgparse/wasm/pg_query_17.wasm b/internal/pgparse/wasm/pg_query_17.wasm new file mode 100755 index 0000000000000000000000000000000000000000..30b73a9527a9a509276b3e3a65e7e46dd48b9a73 GIT binary patch literal 1577852 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
gAPO?f#Cgu4qGf8xL39 zDfx0aS07ogtG9A>$%L*}arOASb#+-Fm)XIh(PM^s@TDQkBmUkiFgRdO(KSLgyF=GD zg|6MIUkYv1FYj+2W=pn?&|I<-qg&p(IEPj=LG;N@Z@yLCrr}X~?|qG`yEWXQHXzl; za3}kr>TV8q^YTjr>SmV+^<8CDL49X|Dk$9>P@M>)esb(R zeDD(R9bLe;2YA~8ysd(>%^+-zqq?#i!);waw%WZ~0K*@aX>La$~^R6yWa;@OK6HI|YBYLEdG5cSiUt0(?LC5aHG`{EY$LBLUtX z!Fj|W?1>auUWNcaj6@+B{huzsgC5h&h7ms*Dq$NvA}Bb|L4eYmk|eT?R=(!?fYW2b ziOAW_BW!32*BiLrD;)P3j(hFzW3jK}-Lzb1ef4rgHs{)+@3g)qv@|G&#ZcBO70{c6re0{NA-pn~6AG+L6e|4;-onq9gM7y)06PZ7q? z^NWi9{e5wDp}*2n4fv5rvQ^XW?>buqh$*D_`T}1Gi-59A$?x%pb=r3d@;4QTAxpqO z2VF_xd`-GasCigOo&3KQMTr7+mI;JZ4@wpOuLAGCEfa24Alwz6aH}HW-q_gYnEtRF3=gg0aD1tdB7Mi=NTWBcZ*=!tciL{AT@b zv^qD(I_H;qod2)7iI$LQ<|u>F@aRU-NYFj*Xjt@V|5C% zo_vx+LHrYc|0oA~Tw57=EBUE1iHz?or8ECufMiRUhJt@~o*yN~>whk%f98KxjQ!8S zse{d{UT#+0OZ*F{)y~+c=KoViwB+?2cmFBe(cE9QFaO8(jUXNW?gX?hdPiRZjDT3(^9Lyj2QK} zV*Eoaa&~@3(c&e&Ta01zDI00)0)Z~17-Q7c)ampX)}))K6<4n;lWI#K)h+m=eg!TN?FlXY2aLQW5bMi#!_fDNn zD4w3Mp8HYs@y76#4fBZF5}{}{1||PvnVee#*n2%Ww?=aQX)kh~;)leith`se_$Mmn z^`V9>igA?V7QH?>HWeJ^ZK1UtzO`+!wO4et_Q`NW)k(fVAe~rTolso;aToOM0s3|i zeS3s{yr6r*r2~|}lhczx@pD4)YKW8^ZX> z@;+a7gymmK`Ow|>DQ~gh$a&UxZ``EyPYajhRMwWZ>hDXNgY10{3k|KB&ibw~J6jbU zkd!#)WP?ln|5bDGK6#fn`zxH6iSh}DW%3=v#MRHJE>@PRPP63W;Ax)K+8a|=-a*iY zttor&2wPLAQfDmuH&NbsS=!#060C}m*Ea_BdBZwCMTEB8l|kQ?g@@PeyVUKM{BCvo zwqD)-PlxQbb>+o$#b%!V#BsN=eUUmDTqP?b8phcgt=PZ^3slyWNV6*?VCvJ`IC$QJ zKjNc=wg!u7hbFA@33B{l?WxDFG#h9KQ`eu~*6v%y5AzFq_17rzhlkf+EBgmW-rtF5 z-`_2vzdJ*JC+P1k-``!<-<>`CYnaZTBB2y70dvpR*(_5d|NSWn;&OBrY)w(nuRe#h zzosWMbEQ#Sy`Z@Iz2fTmwtoWN8>8sFTDCa;Gmg`8Yjs9nQmtfsqEw5mik`oqBo5y5 ziERn;fRVrN8P)}Nb9B~28F#y($b-l(adngq*Q{zwhhnGO$~J^6zAS6J=Dv7~Anfe{ zfo;5neCY+@+jjwBJP#1Y^T{~8=MWG+u!e=?)e*w#9uRIWLGVOM)%S3Euqh!9i!d)z z-UNz#$yY+KD#_={hP>?aR(j-2ud*hUR?JeqBDCWx)0o)#vBi*225gyK&zq)z9Qu6D zGzBb~__)u1=Qm=#;WG?c4PsBC3L^I7fn?Rnb^XZ3E3j9{JJ5ak8kv! z7VZX7j@ju;M_#G-CuEo_p6n-Nr{uGXG?A+cqdBzdd*yxRxLqYyRKJQi#q9j(Vx}Dx z2~5~4cb|JgJbo*L{e&W|vx;JMe`TK+&u5lzW)x*c%8&E%4X03xZGbpjemqpZ87$un z6cza5N8mVWhfj`qEUM)c@|1<~hg=xz!)HN=@i9;wdf^ ziR@A9APQ9fEvAH5h)ZBh$Q&Y0XnIHeL^u~S&bQ@7JN zXFTIzTytngT`3f`~;OQtL+u20=(_h4PP^&Ul@wp-jcH2}BmagU?E(f7+~$~{>s_slfq zKKw8ivyD|3t-o<>4>|?&_^x|mr7~r|HBF5Tdjn~Mja*Q7`wJ#FV|)i~KKi4IyX6yp z%M6mz{WLj!E=o9cAG$&+d3R)zD5|`bzT)?%fXFuu+qAp?rR`D|KR#)yL{@&!^}Sg6 znnmr(os(<#@?Mi`#TVNf+6%?*XV*3G{N%ZE>CPjpaDA@|u@l!l6o@}q=CaFv+M|tF z<*^5QRarev6~zHex2+yYH|#?Z#`s_qX&fdO%FkO5EV4w zuH^iBRFH=d{fTI+eX$o1KOjGUI1Y$2#a?jg)4l2h0p@OcDv8s`#~WfxUnn258+j#C z`IbkDwmNzEt4~fdHb44dtW}*rI|x}|5W zXRfr+eXb(=;_6e;=L$P+M*TfmD{u6T5^qow%__%S^A9uK z9ZZ)}0V5|}dO9^mTt3>Wx);lRs)F>Gi# z9AY)*T-sSQCQRM%Sz3&_Wf@N%Nc^LIJ>ve3c>mgwL3dWIspj-akD?xT?KidS zMd!Z8(5M@{5W3e!U4G#xr`F75i`j*v8lsdQ9sFYQT3iwqs`npEmNxrnF{`S(Z@T}(8~8XhV$gE7%ii6O*9LuF2wrG}58VG{gH+*>Qv@!UI0<5??LJ&J~L zY-^2KVxr+uR~Hk(JF|_6W_xZLY}CbGqm7})F_YQqs9%$<2E|ro#yWkZ%KYRg&__vk zMe^~H%bZgcyA6+>pUX^px_vvUbv^<9lT{>-RNO|6IJ85TvJqf3`1VtjD<*TARg;g2 zBn^UUq$0<@v#}Z?D5*6wFR~=)%%X$8k&G=E7SYScqZ-+1BO{a1y6w}!vPl|8jUtda zq!gQ8$gN}jIUrYb=D^RTH@}x2YbEZ_+`eC>hW>B4M6~99etjUS5dLxIK6bsQ=5HCD z-ws(0)oJt*q1^;s*FZNn^4f~ON{6MEIWlRG2NpRwpC1(5d9r2}NF!&;c3Ys^g~hE_ zPH-&z{oV(IQuI-qLH~4Ld^#vaMCsWrK5kE_ip#u}#Py%b2y-~A-)+xX=dFK*)fOvm z1yxM(9FQ{zowb_^4Joij!Yb=K05`ZT>1cRdam90eujZ>)_LRQSjE<9l7ISLY4nUsY zVx#AA$()wahX)I3*iCHxL*?|ba@F5VDOdr#%m()0Ux+5+RU<*;^9E>XGr_807J`J< zB_NL#Q>9q^bfy{9$W(=McC~GYTEe@3Oq+?Ya{|U5I{mNi( z$7cNHXp&}?(b3Vq{{F$?T0SykX1zY^sH0~e^PJ~Ach2*Uo%{UXdqJbwn*RrX_`(G* zddb4$Uiz{{|KU}C^z!5X_=FQrdd10qa>}3n$5R)(C4ctH)6O{a^nvP&hvwDi{r-#R zJx4hZ3$pX|hvE054t*1MjRKz}RrGvoC6&zpuRBhiT-ZpBCp2SVr@;Vu# zu~Xa{brw>jMr)c^?$p6WOfkhGr=o$w;3cLF6p_L&nrhd_Jlaf|iZs-!yr#MguoX;f zBLRg~gzQ${VsiTl%ydvtU7!pAHZsUiY}7p%rBfXxN*v0Fa5%_FawLKzv{7mUjpV>^;>i+`Y9!Ec zUjAQe?y7^Z!t`Vt`Yn)c{}g2VFE#hkLt)sHm$lsPd6}QU%Q!B9m#JdB?7n;_mkbCZ zwf^ypqlgj>0#8gyn530#)v#R1fO1_OeHp>?Ahx;B8>ybakmT3g`?J)d{2l@=CkCCG z8fpD0v+)YCvGdHY&4wpgVadf;=<0l5o-3iCSTc?ejO7q8*T0GCUsEP~ax@3Rr2~H;OLbBi>u}6JAv?DQ0Pyb4D zHbWbAN*-U2NePK0bf7>OD0LY!f~xcfdLsTa*qVGmADc0pRI6!L&8pQ3np)G2p(I|5 z56;*zqQEgSGLijc;PGhCKpJe?_C=-`s>?J~r~aFOUM0|^Au*t@;OHmGA7(BNymcdS zTlbp{0_U~*-Mlxt)wiFB>YhEz)^`%6m#{{L2Z*t=gUCW3p^1b1H(<*_baSl5DRD_g zAi=#*PCUYnJd{RtVUob@mXYF8#Ub2_&X&c3g-tUHvbDFLIIBW{LIa7YZ)C5UE8+Yq z9F##laD%UzD=Lp+L~wotHoDC93a%;@s-uje0t<=THka3R#-f7MVK}gA&NMW>c}*V% zb$CoGl6g!^+|yEu3?V3`$N;n-Tf^`g>a$icdEDji;ytln_wGw7?)rZB^S4F6 zf}+ro}ZB-JAWvsKj-tS#d2L*L3_hPljLlKezVMNqBEzDyaL26 zbaS%AWBqGsuGHKv*oP0+hl)-P?HykPjED@zfRVML0)`r$TIAJ>)Iv`3aD3BgWa2QF zSaNc&3fGfaYjO6%@&A%J{sz|iAxC@Dip<^D=bm|B1By}%D1o&GJtIw#M zoF;6E+IR7ZRCT}4nsvN>(K#cpFsCC{MIP<)B2hrn07Uxhr0~g*;}W*^0^bpQt>2d- z8QqHIs}^Zd;IieJk5at*pB1Hu$O1DO1)zgKtv`m;8?FB^J+@|j_*l(-)+COREs<6^ zi8Q|>Ykc!~X#D-(Jfg-w+pBT&JGZ9+1<@2vdypXN3;u!L48Pjl#d%d1@#*cQa%hu@ zRt33^PGA6-L6{$kK0&k%&zxX>D380vPt_aB7^=_CP;PJxM`8`4aV6S<`1$j|_-N-r zO)AR7N##+%G!M4=vqeEOoY_6v=xuX4Cb@iJ&B>Hq-F^yqvXJsFCM~A?zdv@bEe#r3 z_uh&@qwg&ArHTUpaG4~2>b-p2DIDm#XU7=fH8#9Z{sB^RIM{I|zoR^;198OsH&svJSB*f871O1>b~52ekphIP`YmE_|`d=$9k z3&QBqW)*2OYoFQHgV12Y@uJ>1C!7mjGBV}~%)pqQF|2TG5rnYp7oOTLnRb?KT`zekF}p1(!YmT z(F*cm%Wo4;^?TALfaI?;xaeL6cM5;q*q~v9Gnr-G6&gC9z}@5Rm3r%wx_i96N^hS( z738b+cHUHPSL-cV%OKtZ^4s;62W3CI}6?aT&(7>Yx)4`nd4!C1W!xNs9g5sJLvbS*<6l@$i8_E| zfpsOp(qpAUwJV`2J2!(xdp^CS<478_PqM}O2W>=**Rn$1gJW4Ni5#osi3XtzjARQ| zb?89B0oxgLUN(3Dt#Ps?Ns;aMD*aRbM=jEaS-ec$e>`KP&lyj_arWd-&lssXZ#X>IPY^fwmDar<1463m0FJ*xhd{t-AxS@J;T zm7itqtzt_O+IcdWX?;1tVKz4thC{G)*+>O9t8eLN#GpEf4El#^P_l>EDrJ1xFwrDE zIuQdCW@_T+CDhGW9&crCi0{n{q#J%?1LiZB3RPJP;OI*!afFCbB35SIm!N3k-X^4# zU_T|&Foe(s=%8Ew%n7i8w%-oAwa=XJqAWSF0=ULt{X6zWo%V{+lHr3H?3C$~|#A13isuao;;sfiE4Rfbl^$*K2fh zze%7W#+&SaB*>b>Hj8_APEXJK&C=2DX6QX+ZT~AwZR;c{{ko3swy&49uaiq3{-`X(+UA_ACdp;%?L8567h`akIS^XPfee&F9Ugjw!0GK?=TLa1q zXh|(;znITUDDnXGSTrGL&wgj?M!Q246fbP1W9;n9{PENV<- zCQl%D%l?kwW~<5zTa%fTEr2pUXXN>yp0nOFrsO{+2Re3XYv8nzJR}p4EhrVhGAjS7 zXh`nISreG6YysNW4-pCwrlXAk1^i_dX`e|tdNyE$4yi`qYH1qe@v(R1jFDNkbxSzb zMq9&9OA(D>H?XuhV4B5>Wn*sOES~o@D+*!_yZu@VS=t-|Q+CTVE0x6v_KK-(iFmFE zc%}Y|#cq_4o)Mh_L0yrRq@+o%`c7ss!LIsGPWt`Tz{v^gtE5UohKhbhk8Wq5Sj$gwaFL)fT}jka(Y=WFOXm{Lq^cnKxb)8i9x44vlpwR0`U3&Ie|s4fm! zAj>jXQf$ihzjIoktjIn`b);_hsyl23RBVMyTa`eFQu^u%KZ7y~VH@Zv^cXT3JuD4< zsb84)x$P{q4^fupm|Y$ShA)$eZcYzJ^?_4^Er+PBygq0Ey=wqs{03&^B~w;*Yd0l8 zQwgBZ*g~J;0miFpY*K9|!BA`f2zxsIm-FHDZPmah7-1Z{_ATnzqS7N z(XUszcnD>U*+*>*hp^7DqZ-#446^*kJgAxb124l}yyO=&%!-Adqi zD-xAJkDN1m-{uxU_K#W#s~=%7`3Rs!7hzRA=mg9va^L_70kIN`y9}rg{>3WB?iH&4Y;u%i?Pko!+ z%5w89EdVNsO-Z)c)1}Yo!b)^oJ)SPoBumm0Gc=81Imh~{qwv(a=vkC+si6WLe>2#k z1>wPuu<}m>I(?>5=D1XnrUMj!luw25uKA$oJj5-kH;jRKoH-iOD{%?ETzUS9wBbd} z;zBg>5OG}=!zhpLrbH_vZ@VubU|Y{m8<9Q+877tK*xZ|*vptx3Ak~%`l#D28)+VDx zvP1`9y#s}L_L_OuiBF&+l3WxU(1)#tOjUDcSDv>zxFI8_W(lt|J!mE$X9z(8j)`;nJ4W=MY zHm;=NED|uyyKI_wl^*Y4l7zj+u&rfi2$vkIYH|JhS=6 zQ*xB0Ko~cn8uvDcb3N}(f$ZHAme1PK*R zEIf^kC5U`VN_=sWD5ouuVx=Fp?uYZs^&<{I2-a&T@2&TF)-EpIo26CokJNObrL^^(4%B7ZhM0L(S1QQ!g}%Hps3DFNQHGolHH_FW zqwc&ag4j$ZsUotYg6wBdjHZJv>XN&s-BR=U@lQ?m^9;5(Rb;r4V{0n5XhEf&t%Pl6*?cfGtnBxEE=d*z2aM@xvaF07z%}L`ANP(H zmdb;v>Z%T_D#18!j_WD6D0P@h!0Mhry$n}UWANAlP(+)WQbk*yIvw;#R4q20<#$ za*^2mBEK0AkpOZ#7pYHXev!%B=T~oI#q#Q{o{4WP)!2iT+b-t|h?dCZfXd z9x-pj*DYe-1B}D25C-c5LnCj2cv9i$qG&U|=1X8!R{u zk)*oRw!0`#=TF?bUTkSPZ?=(k6Z%R51 zkd&9YJqhWB2M#QDcU`=?!Nvh~kdLnU<0u3+;9JhLseP6N&t;fD-|i>sut#2K%N$db zfJ@x&b?^F)#egJ)ok)6`N`3f!HNW1giIqLo0J#xC88|nR)wu- zC}?lhaIY7934)!W)F9-}PY!Z5>NPT~9uWpFz6`GA)sLC*hz%P=GvR4oy<@LucuMD} z8%=lxKuDC6@A1=U^`v~Ef$7L!jR-lMq7sRBYIshg3Zt7tD^(X6*FE|ar3#K6A9h#$ zJTaa<8J-o7!LBfxQ{Vx@Yv}6h5p?`EG1|GOJ-_74^&H;SYP+&@Aj}aGYeB=WVIx93 zPYGU;lRM|w46sgdDZ5B5IhQmm%(m1$;{#DL-NXqnR3^s2)M{KHQo1`x(9+t-v1iSd zCKLCh7a&t8Y0GU>mW0bV{Drj(IC#*uiXgi!n`mYRUa9_=YLq zPObkWZD#H$XnJ4D9AA0Id+I(DH*hNYT%4*o;>I83QsVsmmsi~5EI{5SeIiRbfR2@USLpvn3N7 zr}JmX)4K1h3uZn~l!MQWmTf^}-+0$iWS)2f2RG1QXe}V0`*q zafydsIcqK!sWQ@G0<)EH>3E`bI)kFk;p6%Jx-ao%h1*oTf54ht_ zZz;&hP1whZXg+re|d=1WGjt87s(O z74`kv9#5DUfLF_s#@L7B<8MBDBy+G43Fx9R+;t||?4oV6s)4KUe}--V+!*aXlgO?y zHe&{x1>%2|YD!gM?U$JSPHL@JA`%T7F|NO|2%Q;wbZ!xLqQKLDYP&m=u^A_3mC}D{ zyiVdpWvcgD^fZ4Pnl>{D2$5NP=woLmAeuhd2qB3-EKF{F<^(#-ws9Zk?sNAiEDWn& z+Uh&4R1_Erue1EnvkA8!fwQPh)AZ~S<<gh0ON0|aiJEfo|hun&#;xS%Q8|fUm42dqQh8@d|!8m~8RyfpiD=Xey zzh2G(m6Dx2K1X7=-(5CgLXVXPN!*{U)0S)5D?yLXXpd{y?FYE|4O|qF|}M z0*{)hQ+`jM{oxats@h$7mpkm~TBkF^z|$yTyo2L{+=OeGWtCC<@me#@uqZLn!2%$# zv!wRU51*(VTF}jQkKmw)JwUn+I?=y8S&$@r<$orfY6ZyC+YtlrY7JG2Z z8178#pM`(%CY!2gR8DF`G{Z~2RQCO9+HandJ4Si!&!zd@;}%`lW}9QAUY^6hW87v> z5A?`fw}%qY#;%{^w($myFqZ&PVU~+Z7L|buWp2CO6w(?Yh9Y=yWUXGjW!P1zYsfcGg*DJbwc+XNmvAC;%3_%aWf@4K$Prp@iMR}A@PZdbhBS2BJ-AK zE@kP&ty*q5B7Ox~@KAi@sl5;L#Xe;%1WJMWbO(N13)w4MuKhCav z&tvxm3gbis?|TgqicBPcEsO}_AntJ&iWmavz;3??1SdSb4ZELxO}_d*|J2|7KsVk_ z0;0XKBMT}vA%U^wSAwB%vN{1_D(+^!vo_CD;b>dN!o~?tz=JDEfnZ6IC-ZRF>tHQeG zAm#3{2aRP~EQjL%tsgYL#=EMV2EUnMjp?7bWkMXdCnxJLxrFXonO+!tYxJ98o#TA2 zw(AqJE5h$8e%-1;nXPGkZ6#YQQM!&D>j2kGST)#UWEN0faetU)neKp`&Q*I*6CtTb zYX<9g^|QdJm&eLs1@8JmS&n`6+jznG`P|e#8k~PWJ3F`vMo>SZvs$&-f*bct2s`Sk zJV6vDKc5;xf&(mR&t|%jL?NH^^v-Ngg{GL`>f&Z|L@V@7Ppb9LWQQ)VDJOu97M3+I za5ZG_BPPg0u`q-#*F#}pC}*pyUp}SYNuD^l{p#X$4*1qV_r2xbe%w0%OLTz~nf#3>ynYFE2M~@h7tU=*7eJzOtTRbKPd_yp#@Zx7kONR# zW1TT@mfD3u=e9Ge)s7ux#Fj`Jwq|(7oRox>(DDkn7#cs2MjAhmINa(1s=>z9cD0vp z7k0i~)OmY+=j|z-w~IS(U)gzkX6NlWowu)V-+IQ9l=G|;rbrMxWy$OxLG$Mz>a)dB z-9W6(UR^kas_jM+0uphEYyYusOL%K8l5Vv9p10q(U7zbKE;U&O;OD*u%jn*5(+tNR z1}`tKy49C?Uhd$5fc#D%876L5aV4GVp9O8{DFF^Yi}F-MEH!}wHaV~F`xF{6Z6vNF z{wZnVKXuPN^JG}0&_fh^L~j7bj(r%?gxPlVLPOMjP`a0+cwtR$9=HQh9Z$sS1}`_3Qww^pJ&e@g4b7<@ub~N z_)IeV2w1WQxr4BBbPGWm1q6?j1)^S{WJRD7^-#9mN*3Ya4u}e-6IIPrt`x3^V!Afo zW{#bRD&%#lScjVlDcC4Jc;siJkt*#&Lv%3Dp;Y6+)Tk2sBa|iZxamI@ThL>~V5P_4oRYD^!>NoF_Jg5Y%~+`v#>#Z%z0Q?VYa1)L zInh{|?=ROMma%deWO`uG-F?8XMr~-5DaFv~R7-_KLZXGqTad}y7&e(AnWAZ@4;$jW zb=qifzpWUUO^4LPrehrvGO08kUAIlwt9-QSI<&i@%HF11=r1FgB=ovEWHw!DHr-*6 z>DnRp&`Zq5Kf64Slf#?G4-UDHzuan@0D7Yoz{5=AX9MfWA-CcMU9f%#tk;zBI!yU; z$*|k|^{^Ca3q_JIxBhA|!u{EZt80hdBa^^w`qkpvZR|ei5PpdMAc(Q)+p~)+Nn@!^ zJQ(Rutaba009uow?RZ8OCeQp~V6hz8`aGM{QBFxq(e{t!8urXjvG{DhJzLOGcY!@y z*zt@b%Ye72eYnH|sA)Cex; zbUb5MFV9}z@$B_Hi_;ayS1}x~@}^lu{Bg}~zpi4O)(i^LN}F7OPYPFpph4}P%m;1o zd6@&&+?)UsW_Q0H8YfQ{TI23^nzGe01j5-yZj=~ z2iH5nQ^`{~cvBDX+2z&h=}{NCy*mzm7sdYF+#pKbeZSzt5N~RJ@^CM`v`_p=OdW^ zrdd-|E-!ugtuf?gLTTnYK_#T8qEsPgLvibb4)v-$$T>6YdIl9@a4beUExq99WwlQ# ze330K)oNATi(X9(vSMe{+XYLRvP+oy@zzU@CeGA6J$T!qQ zU{RN~c10|nuPcHs{Jf}=ENQL!pe+tomX66`+@59w%hI>_A_U_p(i$!oVqxIgtT_mG z_SM&9ts$*0%FJX1V|Ym)z;yf%X=o&(i#>VESl(o8*e_3<5EZvAlD0?P00AwMx0gaP z5aJBZk1XlClqv&bA6e46bmfx%mD&kaA<0?Mn;`>rgZiIxoGo9JQ0Pbx&mv?-0gU{3 zz)~N5q2e@sU6W1s_S&rWkxCJ~8VIXUa$_>Z1syB3@;fbMbs4KQ8RNs#K|)G!L~D?x zi&p=FY~Q%kf(V1@_Kx47L>VP|6W+o&w|GSGZy9EZA^a_78aWgc8rQ&*~Hw-6w(9YwX8QAQ zxWs|ABDUB_-s(cz`qhO-W;0v$G|^Hwhwj-oNvNjq5YJG=)sdREE(2x|83hw*nP5ujS%gkoCPZ{7l^Cl@PlzLFnuK5I zNSg~RqYWtwe9JQ;o~4_F*b=N2@XSfCuqc;#;yOuF{eq`3K!|zkrrOHjV}QbomUAQ? zw(ci^hsjW4g149-%ui}JwH9hseeQ&uQi&ljrEcxL60Sn=ZyKq#%;-f{e+n7Sh_J^8 zsDC}?c6eXK)^m~?}qC~tCCm~dhjATCrv%N-#n#f~jE;0Ub! z0H3Q2Rv^RC+=7`nrG6vfudh^CSoe_m21{L^XW?{r zBH5N?NfK9cm=PYZ=TNiCIA~qb#sPWGVYYrSE)=1wqA^>vAH zPtpFyFtpY%BHidabv1=i0F5CbF;nwAFytF(J-x7H-8)~pqA_q58)e==g9z3k`eYl6 zEDn4j8c6TOcQyolr!~p5)IYFaj!+SMRZW!Ix`@A|qbTKz&^lBl*y;spQw#4a$p2Ix zNEum%dxJnwTBVI0&8buf9zzSk5WR<#S(hfkL?k2SQK?quD{FHF7h_%Jp zk({DN8Ih= zYWamE0n;Z$&2rjQhJ14eWagyrLm{7fw!?f0_}cLZh*$BD*;ZBe7Pf)erwRHE!A2$a z+sZOki{3h|(Xco~VxRD{B`@J);53pV44*8^mNF2z29EyEY>?HHHuxE9&Qgio#w{lw zLzb^T?}G%B&FPiYgTx1Qf zrwLWS$A(7{yb1`g#VO^!K3Z$$mBo#`$)Wp<{_N2vEhsv`f%G=D{5=&UHc4~~BVt;6 z1~SjXpQk<}hZkf!);VJU=)Ged28YxOkT7>QsBiic`W8DT2#pya1pyi}RNlU4U{}N? zv=M;=H zD{#Hl2^?eG3O~<+^{FVqT&;yn-$5m9IHaXCg>cfh2Zr50x;OLJjvPm6RXEzDAO0Yl zph3|_|Jifvx3gM2EaM1J+QueJ98>28TqcdbsoO!k8@BU|c&VwHoVufQtsEb)7glfOeu0@}dSCBf%&GYS}0o7<)BHS_6#{jIvs5 zAl?^b(Ki_|t-O^sz|s1$(zMmryN2GT@NKct+Ng^3Rk#d#)PF(O>)tgODCv-TgPrAG zhtvxla@Uai?9;&s@^;dRSz7qOrcJXB)d8c+q-tbc#H+o0x_b6W-$puS)@o)$B0WC9 zU}L%0?$7)u1NL&<8U7}oL37xT`a*N`7&Rs|(tEUt^P{<*%b*&=W`j~WNzpRqu!Z<# zub{W3WYUdLZG??m8ZM?IF$Dw?{3avLgoJ8SZ&0AIW!lw;+_1b6DzS%-N>GnV7aXb* z>A?E@4HU9b@orjUSn`4xft|>Y=_w@u)5zP*;hDy$+m^bY{}^ptzo~L8Y|j->VXSo4 zpzHyFd7qj6_a=KJ&@e)|K`NL-z!Z`>W;YxMz)jBlBJQQQ$0a_Rqgg_5Q8I;D;!Z)2 z*(LzD4KJz+t>o+|35nPC*&${Vj1*>^92Mr4kx-e1 zZ2PT^|GT1r7^;0nfsJUlw9Ljni9Mg;^G%2Jbm~Z0F9I165mBPdr(YQz`fLo8Vb4JT zvKTdlCdnXn6QU}x$rw;u6qJwx$_XMk@=+se<-tqZS5BtsbmiNqte>Ig#tDk;SoKWX zFIP_%8TJ%kzoI?`h(XJfsOWl;;wO#D*?1DiqsQn7P8D?=%N~tNJntSqm17Q--<+zO z!J)%cQa24*Kr!5b)fi&&nV8PAi7}Ppjh@fwCatPlnP3vs@XSk()i+b4s5kZBGjWT4 z8*Hs8ql*xPcH3Y3|Z54MTHdnBVd)NB-(>-dv zzv{jnB;m_@w)J>pa#Ocf-3?6(i}!A6$2WVl^!ciL>YHBXz6x%1sm-`Rvd*dLr=-%h zG!OX{m}sk$3v9xn65|}pYCBV(IKCSh+813S4TELWz!946!%TNz4oTb%HL$t!mXvTm zk`!r#aM82DF+`!+qJ7*2suEPO;6wpD>eFT{3CCBzgJU;`2~ zY|zXcn@Q8iGD$K`T_4oy6l5Iq4v1421kf;!s#@wBFezv(vKZkd(>cByYv_}9 zz(d+Fe8xqQFX z)0WBEzE%R_EmVD!v|R_vHrdBLP$(26vR5c3D*;A`*XD&3imupmi0n2dZd5&2^Fo9- z-vI3&C`{cm@$btNrX}zaO|1%lqQ8iWIfdTybEe>9UImKS%^c~END(eAzD4N{iYO8( ziH+kM4OfNpKqJB$2(%pNqNS|Z+6S_%QiLzGW~k{-P{8cZYP3Hy29|gZGq)Jq#C_XN zuz<{CsNq60_&|!qOZ-lrE7^?mldAhvkwF9fN~=F8U-1$Ll$+Yt2kKHis1pHJvkV2g zl)2wXWEG;j;UT5a`iMF)4WU*NE{kmf`5`La2_`bk6shD7U~y2z?a-A68XObsmV4=i zP@-Ag$dI9!agV22wV;z1@_|y7$#E~y30IBvH?E9M=niL}es3f?(9wuS7kntnFI`!5 zr6X8X3(Emj??KtwPGU{?T-97~Q6tVwN6#5UVFw+ZPu9^A$R-y|RZFNMN>FOr?K8TCo(&xG(}S z$ioHE9ZX>^Y!yhuW&zsnb)Zl}fgn}V?wCG5!RL8DNNU9gfU)FkKLG|dgk(-q&K#jR z7OsgWFi5kIj>2-6Kd%6=EHTx!#1yQxfV%gM{K6IZ(Vu6xV6`c=jYDDekmewZtVq!S z${aZj6!@7$15w3#ZZyCJe3mo-G4l$KWyBd!`x>^Jxzx>PWBS&EC$R2c>-B1zfAvpf zK`^ftp&H2I70D|L{7(a52}^eT&+I%BjNi%V_}&{e7PfT!j_km;plx_lgU$pWc0Q~d zbAH_y*T6ybccYeVkALk(ZG@-!-HC0^#CpM0Igf^4LfmT?%0Z?vNOe_GfHBX2FonGVd~2@Q*FbUIqoA_I>3enAZ@(~5ruyB_}qs5oJr7jK#Wa{ zlfHujUOc}{$cTUdASZZ2YLr?2Tml^TfeY9}N(|UYCdLC z{IOOouHSY|-^-HZPtu0jekzeRYQ$TAU|G`|c=DKkk~aG_j{U}4c0nRaej3xZziA6s z{4kPL=%8Gth9YmQ0V&Y*YTNZrtiYDi^}_+YL;@5M(`a){l(7lGs~FL3D6DZzh7+Ep zZP;4Bv2sd%3GJb8{4>6PtV`jbiN+U|p^AQlL-kb%aefRHn*|Yn+caN;23n)nL+wJ; z@2LCeuFdHQiH`MC;0&&2Kfr?%P(K0mu+t#{bfLu3i8@ID)pycl8^dhjQjIr2O+L7L zuOT8a1*=*u&PPx!h3bbjA!6lu?*1DIsJ}(hd4SzRV(oRSvZrwNuPD~^Qn(CVA6yq2b?y*n2YSJ%N8XOR#qcpLZ ztol6tNTZGxc~ccQH)E*>zA?27(a5Wbc6E1JjhU?tZwG*R;&y)%TUH4+nq@l&-BmY- z*s@>IB$xE~qA4VJgd1eC``GUxZxzN-^&bqnkA&*d2*MPbm2u<7L|ihfn$+%33xMEm zMpniuAHAob|Hc|um>Z-pn7v-W5qSzYO{&uIDrW@%o9kx?8Wj_)Gr$g>sQ)SYi~kpGZBA}dcJI@zTeDihVak8o$wuUEt}j01`{H8^tK7b zHNF7N{F+BvTT*aA7hBOH9>9qe>33!UJAJ+b{R$?#H*@a|KH=gJ^*a=RJv++)?#tZW z!C7&Kjl;V-aCj(lm-ry!;rHTQ9Y{RN)|n7d+!uEo^^B5LARBz7KO{A2;+h33!az-? z!#S4FbPl66drZrA_R!qX<59Nc`bq6Zn}PDLYe(Ynjx7>5T^olB_PjROoxee_Z)k(v z{Tl(Rc}Vo6mP4od2N5Xp)<4m2208J;hGoY>rc*4U2AgL(Aj1ePd2M4$6XE`f2rw8gi zZh_$k9AZTx3o!MfsvJY?5nWptMNuS+nc_zXM(B~=_Mb6Vl3rpKvt0}%G+g9tfT+RB-_b9xx#^7ZX}WDbq>?DoTg2 zRskTQ%hb!ngf;-w5I`CyE@)Y!(3-pR6rpg4Oqjfb*1UT|i*^fIC!W^y0h|odNr>4J z#&CnUJYY;YK%C=GTH$a!Eqxe1n%xpBiOnF*MT9x+P~wE_m2eGGz&fCQ@K#Z7>mf)g z08Cla0+c>S_KRh<+Cwxb@ME>vMj}S zZ|isaqRx(1n2oK^j%YLJ%637BYe#2Iw}$`>u&h0%{7l9asZkr`4Wj$B+MSiOramf2 z*zX<2<6ATI@|@PpH@Zg{(jsX1I`jv9)Z~=Vs@Z~<n#!6wpPVGvY-7VHL|KrBQ9i)$z2= zu$?q0J`4u50s6S zu(kq+uP>iWD|0---e{z)zVIan9*Gg9Xc3dB7<}nh;hYvpE3%dZ#>7|- ziFh=JIa@t0;k(Eb)^Q`*VrauWMx~L0XnU=Q&Ot^?jIH=}jMuW@!&soi$l>!Mi!E1C z5HdHgmJ;{S511w<40$eA_NJ4U{7nYJD4!1S9p9R$f6Ij3j zCbl>nf<~Lae9PGw!3Nsm1J!b0^^gTbA9&L2PA}w6Q&_Esikc1vLLYbMpl2qn(NZMU zpecADHYkmzS;dKaf&&YE?BFw3RNSV_ePLVI-ouX3G!%huwS!GvcTa8iT~zc&VD4yx zdA(M}8t|dIVYOT2HxtehX^r5_X_KnVGEF*GyCdzCAXL>sIo4IH90^^iy%KIvCr#o& zbo1*)5?@XP3`vdl0CIY#)rvq{8?aX!kOH#|il1ZoBB>x!w2J)k%`-VQ$2@o&88fQX zV1#xCFZKB}IF{Zy3w78bbC|^(R5xLgJ+lbfUha3>y=EA>*vtVP>bEyNeQxa(;2^|+ zbC9UK&bS-VnaH7Lc$Di=yRy#cTc^rDNa>SQN&BCeW^6{alBEgj!Jt@iw=a9ui2s6H zX4i;Io~J&{<7-A7ND7*9OzH5&Du*vtGmc`ckoLVhMc}0DS2HwsbF`nGFV9X^8t8XF z;WeiiwoB|_gNPRQcubS2yP9HEw@>#7ofKTy0&1s0LIByD$%I>?!^xnJ2=QckmR!25 z_Bz>z83Ak9g;^xQ1fyh&D~mne(r@s9S=dEn*ffYF9BR-X)y{EvYF70dm2RMncN-`J zttD{-Dn@{&UbkAfxhGH+tJJDU@Y)Lq{_&4tjsweyqiBP(D5+AmXW0_1rZ=P)Fa;0>KHtl5mm zPs~-N=3HdE+-Sf?sFA!Z&FrW^E9V9;(wCxAyJ5w^;Rajtva~W+@2(7JtCAK~pqN$h zRLFSS)gD!B^SG5VI#U-EAecQ$*9hv)^vtDcL*{Gd=AQa$ut*jMeKZ-;v9oQ_xN z8ys1}ikBvT>VPu=>3!m*KW-tNx{k>Z%Ink^t|L<-Xgc^&)?Zq~LiJxFC}WU0!yrjX znUM*#%=h)o5o489hO;K>9f*QV$?X0;>yRKSR=hvRukUd-sy))NlfKUP6Y4->DNw7I zO^78-mfAx`OD7dFSh0$rFreLlDQ99rv%8}7M(rf^i}J9NmZ8Kinu^tlR>hjo#tLS! zO^wjsYP+kn%x6$g25PCJizeNeNVw45SlFXBuIe5E8KwLhG_8l0`(dVQCxM_}R+F$Y z!=C7r;`3pfJ>sEuMW)aPH0l(CQ%Hu&S++FGl(WeS8Rhuf0l2)8w-%i0Mq0!EQ{HWtu2mOqU$%;Qda{`+joP+*<7d zX{O1{Cb-?4=J`NIcbN|`Wx6>jo1P8U9}yd99kx&pfeGr8`r~`w9K^moMZR6g-mj7< zuSk^tqbY*wZ&r!?TeF5fnt;4NB3XKq#GmAl7Y9rNW;!jz9BIE6Z4;V$$Pr1;{tMm2Og4jR zx}3VSY-dQwR=6XnAWyV<)da9EAftE^_DlmqM@SSvVa}Wk*@9;`AGPz-c)HOWm77GqSA- zH;5#5tWJV-&f-8KU>#h>$3(Aq@0(&fPbE#1l;Uu-gJQCF z65r0&U8Q!!%U*a@-9&t$cD$ELJJ>EM%nlHr>y_00+BBod&}em`uwl};XY#Acb$(TO7Qd=|RO6Trg7NGR zHji%1ZXC06$@uaWD_5;vKQX@SVh%dsFdkkmIrz-4o_^}_`)@y({3DH)?k?^q->&=T zTKZGBX0kzYK{meUM3jpR|9IEmaW~L$H`sAE)Nwc5aaZfO)23?Q)=0nq1wC z>DS7aovX;LEH1pi>t8w5}#|m1b@K$Gca?QSww?_G12I= zV9K+ZS8~o!`^+h}0Wi=K#FYlHTT28d!c1F^U6g<^RL~Ms#a+o~ zD-u8w9Gx;=fF3uhl6Ps}<&hpI3`3n8)6;dRK!prAY4)n{b=L!u`CS5;dh4LulI;v> zXnj@&0v!$IJ22`jER1MiUBJief{MF|PT67lW+^bwy8zkkp)KlXZ6{o8nlOVKd_b(H zoj{04q`3$i7XCwZEKkQ=uFV+?tbz_;8ABM7RZ1@$3+u$?0+YiczVv!ZpIU%RVa^*Y zXd1ynWEHGnI!$0E;BgGF*yS5n=^J~M7W0oe+d^Vks^Gd(!O3AA+F*#P3Kqg(5=&yZ zqVi3Ls!UODL&^1K=8{ZoiW37aL~J-kj?9Rzh)rMZFXb?#@-jU0mjk$9z!4TpJ?Wtf zC}Da)8J%Til1E?7ahU^8yHzyT$6?-)Vhf`u1>HOg*2hYrVKby4N`#XG$LmV;I}+K# z!mX6mH==VclR}h9VRjSZBYL_v67e~V6rNYx&PN)3J7#W&X`CV=Z^SU z?JZEp;=QHDge_y+ZV}gd?wPGBqYM!%bV)%L20swx1v&#~87z{;h|@fRUCOsHg9m!R zOp8752>s0c)0u%|>;y(e2bEMB9kmj}8!!Q9@9CRAB1Rc2mLP2{w-01cM@IV&oI3E~ z6GfP&f}0{w{z=|&wT%=ZK!y1Q#mvDtGz{%zP4X8;v%paq^T6zShLp1*akCSl@2*@X zK4pMX*C71}{oqoy4{fzdPz^DexiWLJU~zVm0TEaxLX7%BC+4I`K@-xYqHY5n!y{Cn zBMwJ1Qz*d~E4+|0R66MpEnJpjoyewq=z10H-BERjVW;yM zPLwfz5NJS$N`CxTn5g4PrD%_DIyrrYgy}Th{iJ%cR^(XX3_LRgkrchUJ>`A#dRpK{xUV;r2 zuBGpTMobVGp*9~bgIy%}aj0aI-T`%{Wj!`xOPXogS10g*{$K9S1VFN?y8Cab>aOmp z?kSjIXlRU8<&X>th>C#2sB?)d?rWmaESi{TW{`+6`SN`+GHe10h$34+9Tfo;4I&^e z$bf)sDhMbD!XUCKA|ghR?fd=Dy>F@RdR>KpS!Q7B)vLRld+xbsyXT%uQ^_j*rIC`u z-Ns}K#<-wpjDd(FfMg?2Q|AChtHx$OTkW_}d@;aPpb>Ox^iixlJVJqL4+>}=#9P%d z4aHI(jkhwlz{>*oAWXAo+K6n9oXvROlYTZohOk_M$)g3SCT6K9MOSt&pFi$5&^a@u zE0m%(Tlq)qdtT%o*v~=%4%73+_pcY?q&_erJ0yo7=U7d4F9Z z>XGBOw18%_Lvk&bR`3kKUA+hFhg6wg?&njdB{oTYT92K^fPgt#M6YWvk9Ur@<5p2{07Y0t z-7ehbELRZ_=`_bB2Pf{#d*b$W>X|Ah{Q!7)AGhyR$lMOe?Y^0}E<|9Rj-Ob&2nlDA7T^YWS^A=$rz} znOo~bL!f-&ShfOACBY`Hm&;BkhcM6lFvpfzeNU_ft z3+cM>c4!)@3Zv&=Knq-eZtl`yBYVv+)AcBc`BegECwA|=`n#MbZB&CiPa2ej5oteD z8`1Y8f=Gm_DFTUqMV*}5_UGs@RHFuffC9HzN#;tsl`#$h+ERaXw>pZnpmZJz+T5BC zUM}yzr+wTiQ>}~vN=}rl%5d59%Y)(KP04WBwdCAdHoz9YTjR1tlA#zrnB7U9V@n*> zx~f^zs%R`jghn1Fzn$+l>J;Y0I%)sfb{TV&I7^jnfv}rncb|V%jp6776LSoexKp@* z54&A=V>@B$m@)U!i}U!U46oSgU`HT-{C=HoR`jPzA77M)IDyJKB7o*+iKd>jXquy1 zbH}L6FGl7P&C6mb63aCkbtewuXM@f1T@>E4Xh&F^1#FW%!_Nphg=WM?SDq0Mz?>N| zFPO~;L^^*)lV0;*!GK~hpb#ty0|F>58dhZBbDjY~tYSdT@5dOCJ|r%118KJe^LxI> z(`gxd1Pk`J{Tr^;P#I2%irjfvV>b)tuu2e#82C+UiD8}(AA92^Em#woifVeht%x*5 zgbVg9Hwr}VtiI*;zMA{)Reo{$31w~RAfj)?7M#Udjx|44aJiaRAnWE!p5zFo`4VB3 z{$wQ|;$Di76f;nGsZLh%4`S>X1}GBAkYRqRGCmM3G|koWLWw`~AxcA6nfZ1q5W6p?nC-g1lcSe4bqz#37n_aZRHd4L@UR$k}HPqL9*pxs()*ZRSg1YkZ(dthI{RvdluQT>2y1qecQQ>&$8(woJFS}|G->{Mcp1UgV@ z`|2@!DJ~f`U!ZnM)l*;Hcql!WtFzl$t}Y?nTp@KKbkWnu6|NqdXBkTaj*LOs@>M~7 zlVa1nS4O6If=!>e8Qdb;-46PzrQSH~Ui^GqZ6>RXM*=FT2NXRL<0GNCP60y(d?!yh zG8&YVyjRsJX6Hl@l(ftYi^p31-WU$1j+!BhbYyKCYEs{}?k13LUk!`r;li-2glO4x zAnF_4I5s87FD2J~rN%41XrFhwOk17Y%9j(pg03j8)GVP+Gbm zsr`WTc1de16GXMrY#?yibJSSD--K6$Xh9snV@w)}LGKj;BE;#5UwuoDp*M98r2(S4 zZ%xRL0d9X6(0$F2cvy=sfWdpdA^pR!HLTwe+*IJAS_E*79=N7y*C{(;W*s(!g%L2_ zYJ{Qw-T}50E#o;^jE@R1Y1p!vAx}xb@7O3qRoJ&Ba@my_#;hir;Cfz=9K(`ZCKRK3 zg+6Pe)RZY4`h=^6n&~Jty$^x3GbSNI&5@>5tX#{7nsMG|JW8Kp{{h;^x?p8ahNBgQ zLQ7*NOdiP<+A|L#>^^nZpC4J$&r?4T$4jJ&uiMfed_5cP?A{A&c4z3xSa;&iCiHVL zN6{2m;MQ}9VM;*-ZbM^rZ)1!gp1Pzb)>%GQ8608fILi3c@As3=r#p*Kq(mmZDn82JwdZ;co#Xo6rx2%cUDl#5VXSWhf zTElM9YIhG-@c7<3veTHy?Vz}x|E8t_A z16|rUXw&l|W&5A(vTcu5M>aC-LlDd9M*z`Cx*UU4o_ZoFD8(SAR^!W3h!2*~yWJ5F z?YMf|IO;XrL;of(w5Cz=Z_>S2`lY_M4^DfNlDQpS|1=3#3_o~%LmE5g^Q7B9WkZ~t z=i5Z5?YmR6H-)CP~9!1)H925;zPFvbhN0#kwu!uxPVI09bN}n+P13S|#UntWn)_8W6LUi`q)FjUCgo z5r3R@rHAx11Q+lp@8)-iTwiACpqsl1e!tZGKfgC7G+8tK**Ll~zA_G)iXIyilg*YM z^ml4{QG26}7cbdl>83NAZLT-7TRi0tp4#d5p0;euKm4QRTRlB1`HZc%+4h;+J?q)e z+5WjZ?6}kOR_wg;`7e0kD!0oYzi8LpcHiU0FL~+9UjB+#zUtMldF|`|Tf2w7Y<)sZ@GB#>+ z9{xXVC3ER#(z+NBuhm4D1QU|FQ76&P${9tWZ}k`QV;E5GqP}wCBmoHcMbcT^z8Acm zk+d$PSi~33=o<-$ATHot?qYHWoVRbIeKS7avtfoff5DsO4{RTvI;QRRG@rJtk6r{@ zO~F7<`80&F_O4S$U}=~mS?m!+8X^J)tuQZ~_GWrQ*eY?s6_LkYdyQCPZAG+^kf|oU zQ_7Ll@O+%o{8NH=zkSzsfLHtxby?1;^>;|zo99|QS6v6-KUgaR?~m|{s#O(#9AKy{ zj`H)Mr+`71u&LErA2&61soRhZcOQ@2uY3QQxZBCv!yK5BUOLD>d>} zCe_^IHTUuBjG}Q6Gu!!e9+5&tG~#zF_-G;f1Tr?A?kh5-K-#FhXf~C0{2IYy-iMC& z4sMZsUuKsa_3CWss~NetO-`n(U=&g@WQvd#fFD|f3aJBfr^vw856cw(tXwMk4qeF7 zQWM_L6F7AjHQOJhmG&=1&>lNq(SSXPFo3N^13M(A^1Fi`+}3`>4a}YG%lX-`@@$G3 zPQM&}FcpQUVC|B<=x`d!Od+y9&q!A z+J0H9SMIKKU%XTkyCKq!ln2mrr0>+jqHdj@4#nOUHjnn^s8Ts24OT1nGGDY&_` z>d0-m`_va=J=VKXvdaJMaKadRn@UfQ2mOs{_?SeinGab5R27m<-GxU_F}n2u8g`Yw zsPMlJpXQTpB4)bqYHbpYxf4EXF9p4S%aBM{jZu;T$%OrPh0`6)3Fyzq8Kec6pU=@5 zoP#XkCl#SGy!w$T60!_-%i~ipmj!rSuLo zq^+nW(i3fu6MIq`7Vb#fU7FEn8!F@dif9S%S?+Cj?6E1{{yT84y3hXr8qWr&(riVs zHJPOLCrV=+(1%;`Ur=1^@F4s4OTIN}j~yWPTUjP*+gJmgSv&dx95!2wNDI!mxIKF* z!G;*`{>3xOQ@mKYpLKh*LJG(TYvoT>U0?o_q-L-x@9|Ym^i>|3Tjg_95nn5{@>vgo zE%VRVvtRP3`1jV+$@W}m0JP3uIC7=|oK!0OX`Us`=?3JQuu%pb4;Z{ezauc&oeHw> zM0*jcSbv}LZ)m~3ezO1TC;Gpx>;L-k{;wbF|N7DXuP5|>J-+|zzxRJVuK(+?{a=si z|9W))*Q5Hsex(2Fk^Nsk-2e4M{a=sh|N6oHuZQ=4J*@xhq0ngC$MtM#Dvzi!nq!)n zl=G$u3&u+ zcCSc+LLwq1JES-Cu5g)v1=hgf!)~hd2`xKz6Vxb72ao$Yj?-naW-QXRvL}x9(m+E> z+zCK&z?RThorc*|FXG(lS)AM2EyHdg8va@p<&4`hULCw8@YLED>9Qf3v`yMjhhr^U z(!SBIQRN4~<&4KAd)18WvEcGk!sQ%HW-E$ef&g!o2%(v}qj$u@nX<_`djI3;|I5Sr z4_46v{U1XADKoF>z5QNm&*p*2F0BJ8LN`A?_`-D8+y zYsy3%TM@PFYp~=jRz_QtR#gEn+DoDX`=8ic)0|t7EgUgjC5fVt9n2H6N4(YJ(lu@p zPba^{?CnOW3Eh~S#mdke{MMP3%&=6eeLn`+5p0~EC(Dye(^BkgNM1#KXuPmH*#YD@ z&caQti``GxtEqMKnmW9ZH&wI|z|g(v?#|z86|JSBVzIE;k1A@2o@H8bx0OV5qEv3o z$w6XHLEFUe$e$0iXD@~h@C6pibl( z4jUaJwGTZ*d#8Sk1{14?*O&b$XsrS|!%4X=n?deNPtEIkdt3P7BCdxN1LE8CW+@mc z*NrLkv!Y*E9k^hCK>Opwedwv}N0n*WqDAr_K9jg(*C*L8q$|yT`F!H`J2(FY13LfZ z=EU7r)bUg6ySauPk#5!)4)(mt1Bv@hQ3c;b{>#0nH|OQukPkHf1xLrd$LGJGTlrty zDfh+g4|20a;0wlg2=9Jf`!M!$PzGPu$9R}&@eixL4|P04T5I+F^S(U0Ej)Vy->hly zxP^Ih`dxV7H)9mcT`ng@Rl!{&X{c}B=K`CsZ|3dsIorii3>t;yc%a^6>%idq*QRS3 z901^bVFEw^<;qe)!wLZo&7o`t)$0Ehjs0I9i=qFEbTkhZQ3SyQC1&mcLUD_;>#|)( zONSJy>Kb~S!!GAxL7XkxeMK}wVd#>;PU*L$Tf{&Xfsh5ilz)vudBwo?$eB!9!Iwob z-Ee2tn~&r%Y+VsUw#abTalbf5{OSr8yOKZ>bE)^<4YX;$hs@SIx%tGVas41D{Dwcz z=q!O5^PaJrHqbs3RwA$fAlID$J!B5i3GTQlP zn`5tg+gxXK@K4#~i&b8$!SH!(#wxEZSmnD#az09CG?Jqo*5N-EboMU45Y0K8!Nt2o zL~w&p$LB|~o^L36-aC&thiLqw^DflU7advqq$Y+{XHRT}@hM!GqSBb-3V&y=!Z889 z(_*0&&iZ(Pm5%$l)TzgPSm_1Pbp9+(1atnA(q6hLzNln=;Gp zP7U*i8fWr`q%vcM(%!us@515KwH(F3j8}_V!olIp^3r6|fAAP*Pk4Lr1^YW|cv@y` z!ivhdOAP=+I*Mz-kEQT~3_M!tDz~*T6S?rtzsgEXr$(U8nZYSOC1eAH3V| z3m7&t{4$_RHgYks@tTorv9cyIHKuU0Sz^7KyM&!H=^U-q(jtD&G0(r}K|D%HTMtV- zmOcoU5W`N4^oWF*G8u?QKtc^Pc$g~o+j`>2T^p5RekpbYF=e@#H@=XW$LyDEys>#U z9>34A@enSBjfawxoqx(~yiEMtPhm^&e=VH{z2hB0M3CfLVRsy2KrXi5VY(T#VT;du z=8fyvofZ zyJvvKR!-J6)RC}B8DbK&MbO{ino4CZa4j@b7AkyUW`Huc(0=Sa?8mZ61Tr>!t zMQI_Ll%WjQmAVVU4leA>7AAYPKIjtm_9C$uZ8B-mLH2@Zi9z%T5xDwZC9PO%hEfFX z+shbgy)74GDA@(`SZGWgS+cTY)jby@m^o>pRs)e~EYJjEHm)VvR)m7^4RB?Sum@Hw ztUZ-L(E#9VV~QoMi&yY$&UnQX@{J(%s3|W0$6iU}U?}{Pgf11fsfXeo5|OTzwnb)c z+q~%8UR^(x+ok|C7ZNd8(=g}50TjZcky-2Sgk5iR{;eU}T%vDUeU z+W$ueL@rFHYVO1^+d|fw~Z=(EezL~R4^i06Y{3CWD0#j72bVEjx zxh4+Zxua1iuPoZ~V%#&p+{LA32MUj&hkL ziQVIj?@J}PoWGViqhoprXWgL9w_%<7WnOp+!K?&=^B!X&8VjV?+$~EN!bI?~O@-B4 zjft`mrl}%Xt?eGo0|qb#0>iY+yJ-s0kpmPUlah1P0uAv9HpRmLA)%lw1+4(}&y;Xe z|4}IBXa#Te;?sB>G|+eEl94iXeKX4tHKPn|=gc}VkToK0&Cfw|LEL|%s1)@2F*hwd zj%7@>9Fk&Mj927X5fGJbB4kHo6QCG#n~3`na4y=iA5f753NP+imaPzd0?;{$BHqB| zZc}gK;~2y}10l#TTNS+g2FvIvZ>X35q~$O5nDbtlB0>tQOmkA0Yt3DHxjz8&dY-@i z0VyTBPW@?K$j8FE525;)hs15nA&ozk(_}xAXY-2K!i{+KI!*Y#kn(Hva3yx+!QR2( z7V+zA_44$@9ceFjoqDaC=Iv`_r^rHbTtooM24S+2@uEjo5sViu$U-9$!WjlH9*k*3 za-prgMROeNcbQ`LEyyGb=aCw2oc!#h^=9!kwzI`?Sc(TAZCS5>rMKUn`}QyO_NuvW z|H5y~X?c6L6=r-}{9+uHDF1nZam2%!`{#p4d19WgCXb>?j^u^D|NL>ccQox4V|i24 zeaB3go!!G18Q7(KJI4}-uvZhCS_zR`qTIld+sN`q zY4-9HKrx`$DwP$%0$|Z9{`9&tg1-u>#|7HEO}&un=I&>+uzeubysdC4t#%V>j$fg89I4-`I4^ymMUDEyh0xrzPs^u;Os>e>4vQDTu zM?So1fGicWFJx)qIeeoA0g;)xhr9_B{%7(qSUi|CXe|Vm%YiAQl6+q&<*O?)WR+6e z3~w)E`EH}J+4Vk(Z06A%J1So0L~qFZ>CJ5@csR1!5c|B^uNQCN2e@A#PXtb`sNgM| zyC}79&}BZ5KbW?eH^45!WMPWj7W(VwRDlYwix(|wENU$p-O+8;ORzBJ>G zkJTY)!WUB4vdPxqpBRiLZC{u7u-W74!F=pR53kLe-TaAc7R88VX@I}F7z30E%I)nd zS@k9oqN(k(9hdEM4?*tTdTx#i2)JU?C2v!lnKn)THFtD3at|IaR=*i8{oHn$fsV82 zS4=#=VJ<(C7{`Cy8!uEIYb0#2TX{^&z%5w{xj)v1At|5z_+rML{cJyG{&ie#ese|Y z@WH|3aVVcI=Kq87eub^b-Ah|K1*?rZvbl{%D>5jvxQmWiHu~Lc@@|x_>O>N?oU_EB z?)U&n52rVmQR-L@s*5Vc)Lv&HGx|v~8+K z?#Q2TsWKM5CGYq`!~GPq`9^kBeOExJu2`(<%Dyq)2|Lck@H}0(8tp#yjNDe$ zg|m)h%vhMcZoQom>&YIns z$FMSJXGQVD^ZI_^oKdORj@h>mA=}!)C=zGmu2ZN!Vevh;>5tZ(;f*~D--&XC+5Pk< ziS6_j0SNAZefKkRl5+wQR9st@QKsWAIYFzh6Ff%c(*zF{rwPi91=`Hu-p<{*j0U!w z8!vls7B35(mO?Y;)L!LluUcacEAcZQlyS@mwcGF5A$gUr&y|348u((Vf!l8kZl?U< z#@lLhk#yftP;?fSacL0~QU>0izR;Al50Y8P39?JXzfKDdw*vmP6S=po+<>15cO5s0 z`QsZ!jaw%N)(8ha&bS!Ln(x#*xVccJ<1Y!7#|I{1%cvT+3Gte?EY z3Rh!!@HzH8|J@L~_dOfrZ5ZUO{K`U2xDy|a-EH4AHr1N-crn+k@BX`k>jvB({{0N* zfRqO}b5}jr^V1TYhSF!g&zH`21Vf$oZ@xgC8?Twu!`C)<8=hl5NUFEjhB%701yN*{ zZn1*%Hw8GB4$9sBsF>G}V|cF@i+;SnZ4aEIFoJ_F%_yg!wd*%pphnSOOIHoN14;Qee9GEX$qHCU<(_;D*paETjShmlwCVR0UmeL0>K&V4FrXP45xXR*DujTJjb)gPQ6kijonbYPL-K z#I3cZ`3xZ+(E=KN!VGK2h0LY3)|3E4JzK5PD%*=^`IQ}>Jhh=+E`gaXo>Fl@5Z|A9KcHzr5b}BcQ{Bhjm)}k~ zCuY^{TPpdDQc3b_J+{yR-9bLL@xv|%k||RNK2V5vkcTq_Fo`Ho=0>!9A7CzN4fdEJ zq78hEf!<6k6m5VTqZDm0J}=sU-{(Xd;EE}t4YUb8C!$8pOrr3&O>`zQCpZviK|LJ^ ziM1dnIB)TOEAmExCGzd?0dW_8N49U~Pt)y#mAyL)?Tux_2_WNgv0oUTl|l6lOSAOHE>pq^J^rT5^X{$_CzUMu^^y6zt#_y8 zt#;qL6TeF_ha{|ZT5DTb;_&7Ct0YyhgRsENl}eBxWL0On@T)>+A?-r@P~7<14CvJ$ zHuiggx~3BkaKI>CW$TsT335@lud%~1KF1u~g$pQR+aF%kpkm zW{J~xavzA-C`Sf)@Xy#u898W;>>0X^0A#=WnaZ3&f(foX+8g1i5v)7Q${D_`%(lv@ z(Ph@j9g9h&=|w~rfND|#HlJF)Ju+6!BTebAS^*!} zUp5d5VGS*?^r?&b7At>9ZMw zPt}?czSrB&+QfbP0iQ<4t=rF!&URJuF_A%pV{u9y-<5cpK(g}B-Wr_cENe+zF6ux~ z$SNVIV;k4wfHmG>2b5nMJaa6=o|~O1C1tMz@zu}v+O@DtA5*MFawf3lg=c4y4Hp(v zm*X4C=DfT!p}jqw?SOURiRxIq#Y7hAqM5ZS>k{y8k;u9HK%R?7*3_0JZz>N~gBJjA z`ApKJok`jrv;p}_WB;mxilnsLlXw^yg#UFrJ|^8tUhKrOY88S*R1wNAPqwo`Pjam< zWHbRe=WNVoCUSS&K|&Wv<^Fj&tu!y+zuj}bknbLVMDXkHUoTo@Y1$Q}`YKFG}_3$dyC%igu4&l59;%iuQk4(B-LvzNd zXzUCcqc)9oSjMX%-u4}m4(;2y-{?Z+$n%Sy{O4KTLGd6KgN=ho74#|3Ey>ARi(+jU zpaQV6_-4U(sj?q1V(_n)tGppN&q`ECkA28_-VYYix@F$3&Cf%DPTyD$Clys&b zA=#4WU4+fl1mhSzyY;+7)Kir2GkX#ewZYybTP1`eqXfBYv+oW6{fg{6ye6_XsfiUD z+93W!5n6fE3IOIiO*e|Bm#e8p(R9au&zqhpHJuncNh}|^bew_~K6hXe7VozXN!@2t zcjw*nBwJ+}h>}f&J>7n`hdlT?o|9uZ}M%WPd4 z6JXA^bHDkq9iWl)pTl?0`UCg#4|z=IZDFiVXiT*2(~Wq5ICYYfve2pBl)by-M%4fu zMn)!T;BJ3~pP@^%J22;SPq(iH;TY&RGOscG~3PDxE{SuZsqBJ)q_4hLTP#elEaGbq!CKpy*4QQTeJ;S z4a1!=c@D#X_)_(#uR2TIs^@R1#PJ#R`dF*Iq^k{Cz?VUZu;-8q0I!d<4rA7#P@PZI zTKTs7-t4P41L*L;M0vVS`UPBI{zAQR)?Kvaye)^YKjL!~+6EIHqlFAu=|9UGcwjP~ zmI{Fk7pF}`v<=?EVlI_$kY$sn5Z3Dy~C8;DMH*!~>U@kv3bPG-3p4dmG2l0@* zbr^VlZ3|VE)Ks5pr7tFW^qx#`5mahpTT4FlD!cFs9dx7 z4gD(bObH5ZII{tLf)&m7K_o*<()er1ZYV9Prraj%Wvg2*kL!%#M?wFTLgT$qiNYQO zViwV2L~QAr>G25rJdRPmA18w4o~Qo>5o|7e5G_%KyVZg?6VP$j^HO1y<}h2 zhy#8Zxv-mbz$|OJA&N3B3tlG5=F~;%nyZQLE7k)P!QHnYqt$In9lZ0qekaS`CA5?8 z16dvOhA+;tYtzT}4g{8MVWg;YWW z!AhRE-0&w+fDHc>&CI4vPK=I*L+&_vCGaN}hCfn182&)t;Y&E|gJr79m`grfGYgDD zVxq&84`e2t=@rq&UQcWBVaGFJzT1$WK3dER8piPf2F+yPI);-I%s^JIs47`yjx?AD zc$K8(?7p}g0+bjkvg3(eGGT#>B(hsY5?(1Fv1zUp*cn!)%PuFOdghxz1Idq>(4qRU zO)sbirzCrrDJzZ)O;{*36_L^5s$IZ<4j=e85n;w0FdCX(%V6eO&ta&mLwE8302v@OXKW@7l z^Qh}^E;)21bI8;>O6Lq# zUKX}{&^PXp8AD@s`^+9ZrOKQIwY*5rej9@td)U4PH_6Z;u7hK2p15kEzdjm<)yJvF z(|BlUC*Kl`P<^k`g0`oXrcS!$YIB+X0g)t;68|A3zV4mjL%fm;n4n%4`)kWGV7FJZ z2KIJ5Wu0xUw`#(=*j}sHp70R1u@!Ybfqzg(b%O)l(Xf;r<`|Vq+XK0eBXYG@Xd?ye z1s{hoL&m=+lka^T@m7f(4Uo0>aq!)I9*Ogg2)@hb;e8y8z%Ho+9vv5h2sC%F%^1s4 zv_TYG=*n#iTzsc1thfE-V4~m@-sd4|Gg|Yc<^OH}BC%9; zUIxJ%BNh3VHL%+Ez^oi6NFp{-(PADeE)2jDE)2jDF3JG<`)8^EL^{Jzp;Y~|$6)vn z-I+gX#JSpI&RnhX-*W`+R6?MPBk?4JMbvI``kQ^$yO|++^jA~r*<(=AJII?MV6;sw{Ht?`?fzkS z=Js~4OuG{(2b}@%*>)5TeOXSv#C?LzN{cs0+*f#1W4{fb-;+?)+I+t4?)XH8eAWJD z1uU0wChA%UXFga%Ywn$zH%U!>dAq(yO50Rv%$S`@y zas8$3LlEIlAO_D(c;jA*uO>*Vi2ZPfq;zXkB+@Eri`Z>0cL`g>l{pm zXM&aQZINFlSncMAIhX+)yErpxULTvr%M0C{nxVkr8agrh`dva5J9ODEa;fLLfK<{h zt!)z$-?d)G;qv4SJ>e_1AOtBu93)FrO89wm7ra99UD}q8B;74chW)Nwk{i_`N*T^I z2LaV;N1|ZZmg8q8-RVosVbyG&t-<*@KyS`gUS?DvAX!f`K?)X^Z2|zEsOiH!#_{9A zvSCA28!hM8+`Xp<_kT{&e%=SR#iVg=Turv!3Af;}gzF4w_IpLM=V_rOAgzB|5-G`G z5We9~@znZa;6IH=+n2GIX7svKc?a{EY=2LIKuu;%ZzRMBp->~_azq{X@49iiirzF6 zUEtK}@Ky7|#sRFj535k`rH+Ixa$9GuiC4VCo19{I?%1#F6i$UfNUh;y51T{N3-{z6c>X~kq;B72PrQ5fF=o6& z;Vg`dj~8p+cjn^%4C&%x!Ci#?-o4~lXjjvdb4U#>rZm#bi z3FFhk`0qB7XT1~nQ}-;!fvnj&y5fSJI*EO(ZvLGyW)Lr&>M}NcU{h$oop-V76L((Z zuae*V#a#DCJG_=drTp4g=%i~*Q01g6w8;w=HQ(j=Kintl3f8Tz*lHAPgWAMf#A|#< zeO>tqT-Z)m32FgDDlHZbR1%UdXCr2+v!%If6A+zAx z$ECvTk||!$o>89C_sz_9`B2rG`<3~gagwv*A@vFV-MD8Bfosp3UzdSYTCo?g7T-B>&|xp;ANF+Wbxq}Bw{$P?U>w3y%{x1GX^-Zk50 z4kz5?o}K1u_9FOkBNc2Ao-@(ec-BTMOr%6I^WGk9)7IF=W}QjDvp_8XMSftylJC z6mZwtbjhUIaG1HisiSj=)#h+v*DZcopdhw!G=M-;)7h}ztdO9~ zhuPWj20C)Wi)ePXF*Z9pHp_E^=9uBmCY`0TAT91LWwi;&&KmcY7f;Rjso*>AC(C!| z;+OK4C4;c*==L@KCmV1}q3eA^i{vopuFXw=-{zAE&Kex_{FD_v3>vBxX18_I)tA!Ie z>P(+AFz+e#Wh+zv=ec!-}Rm_Q!g7UelfRF+J?mbmu&*haEWp_8UFy z&~!(gpa%}E-tlp@vwhQj;S+jz4qe#8v)ODrOJ$zbbf3Lf58E}}PjA)3Gn;PzPwQdZ zrn~WUJ#5o-ztM!Xwr;vJf1rnFG~KtXucrf;)!K@aV&~|m<@A2O9{#B5uKKwi{;=te zzgiDl^3w)AENi+?U!aGlHQfPM=%GiMqXc0WhtDtcrqguav~fMP={|P9-uyw+ool^6 zg-#84&Z}H)V8H!8V%0Zqy3e1h!kZDd|4BW}G~H)T)dS~#PCj2m_Kvid)25F$};|9Aa_2tC~pg`eS$%k*Zt=^i;w56HWtY=Et%yX+Hs zg93G(p=AA45l<_qaa9X zvSSw`a40Ns-}n`mJ}R#;i?55etyt$}tTniYg85Bv(g`Df&nF7~zwC`F)a{~NQNbQXpt-Wk1wCq8dXUV$voHYbdB4T^==Th@|H z%w0UWnt$01x!f*Mk=kM1svC8CiMoUNW}UV9Dy64X8T4bPddOa@Mj_Euyx4HO7W_%kmjlU1K*Y>Ur#g^h3Izxx~3**F6j`y zKTF^xksVPGRQWsnc$^Ej6w;b)f760TwTegvIbdcq zSMsZNK%ott88oyBl2nay}F#Uv*_1!1KyL&B|HJ!jhDQBI;}CV3NY^TfJe0|(qZEsl@U8vvkAvE^%V<6d1?P~_`@Z=M?gYB8&f zZV4~ath=kS*Yvqi(SV=mOEnYcIbbRd2xJuvQ97Zau5#{R4JDl| z2DQnWD8UbP)eHDVYr();5dIqQbLFmwpKjCbbNKsyqOXPFpIbViq51HaOR+q4^VHO& zBvRa2(%F2ryF`X1R>S5JJhIWb$A-f=3VfD9Q~sMRJ{bW}-1OLlsZfX-n=j5ZNTT?4 zov+RQw-%DcItXvW+|-$r9hqR0QsI)c`GpWs&npUnx%s`ypkVgk6H-Z`;TFR{9xDiY zGm}}H;lc9yugqG;zBq?;Lh##4nr{QM;EdQLGb(Lh);)GGVq4x2w}rS{&bauA148gf zrj?Fyhscmc>F4-Qohz5k){+IDbFQ*D&xn$EOY>~nEXv9o!vllxZ{C+^8wf9k_y1Wm zl(*;8RUJFR!E)yXW(sQp``MV=%OorCCGj_XDdLBp;04*O*cK|qw{RkWG9*sd&o~7& z44Ml@j+Nx_o-CF{Vk~&1y^TYeVB@g#XuPm-5E~g|;RmsvBo`f4OI9Ulg7Ikz<*?G+ z0DurDfynoU90w8L*Tm|0(c*;`y)_OA%mFCYdrlu)cMOHr*c(A@g403y89==014u@f z25fF3O)Iz%r~5K@t?i>~-V98n2mzRRrfar@aMMmvIF#Tw9{Wv21v!O$%oYdcfkrH= zaE3+-)p}!s37HNW$4aImzxA1lX+Wdu*!@Pf76dge;lQ5-vILD;?m+qyBs#b?bno7y zB*#izN5p_e;zhi<#x)!!a?WsqC*D%<@>>gUJ9B`V0c6#~F}qfK#?rjNexylYfZ1?> z!UjBiIDpe*?fD46c#TvVz9M`0h*yhLHFk{y165Sjy!DA)E_q-f;PnX4J4f-*g@=f4Hajbd*>UYDF8vC+P_W(P@8YoqkS~&WwZ$lfgX_p>Jd)U zV1Lkh6x*UJK4!YKt{!P9>yZj@LbR4y9qlw6oW|Mnyw4VPgzdoQg5T{Uq5$_RqEqQy zTX(1MDUeRoCkGxH2&Z-aS^WEi;_+A>-LW~K$tnSKY9p}K<;k%iN}!$q_!e8wsj1~^ zKQikYG1W=n+so;Sg}b@`QO-FY-DwT!3*Qb~${L29MAZHz!*KWgcs&X~{8U=foZ%R* z7!IE{9A?gj12@TsqvtT3?2+MceHX)F;=nt@K|RQZ1CwGn##q^E3I1KpJ>4!gXCTkJwYF!m>_MFQ}SQq zTIKtU|9%C-!_ChN)Coy4nGRSp-6TbK0y~VytH64u$A(T}8bNg+t$(zrX%Q4gVFJt0 z`9S!uwTPxbS{#ms@=lf7czEhs13)8!ubKQnB+@FsXFot7G^Wzh1hhV^u)y$nl0|78 z-D7xKlVFVcZSpIm?Gr_9QTx-Zcza!IpQJgkhUf)uVNDiI5nBRN1j~^kqd9q@#v;W* z=$(D)9~&>nkz)Bz09XWrSt@l}Et(HmI#9yf7{pnJv`|A4wtf{jBORT0Esk$!Kwgi6 z+S{55z38cinu$d>yg>VN9D!UMu|3oOCz1%DwAM7`g?flvuL$U9s9s0$;S5divMVT7 zqrPaQ#^}%_?WR(X1KaUQEb2x(C z(K!G_)F6~013;n(cYwsH2Zj{ulNk9lXl;pq3Up2($Bq*ZUuBTOi#lWy^k|>@N1K>% z24P>2!hs0m@W%*pRNoUN{KjU@DZVE}(7I9+vs9@8A2_m(xd^SH`k0%VAmV`2F!M=35 z2~!NABH_%BW@OF=)IWRnLr5m10SatslS%ZSEsO$mml1imadGP)zQDtu3c^;8M z5#yqH&l-9P0`J5aFFqdwSTzO(0UNzaIF z8Oe^ZveYC5sk*u_1^+TL2-#}$o$n1cg+(u@Npo;LN#Wk45o3Yt$qd(xfa`HE9B^$y zZ6IiYI&>Zgk`Fg(f&$6$Y*1S0TEiuh5ROt-4l^Uib>-lVy$O*lTeO(RFzDLcL9=Aw zpmPRYdjbY6=sbroQs}UxBnsq{04cVnTM`4!=Ic>gY_wh2Q5ZBc)Up*{%($Y^JOdOr z6!X(6*Gv1DAzEl96~Rfm=exQ!_&l3fNUp7xX#?RT%#5K#^UHLSbpo_#~w^C$=MF zVUd|~#e&kJ)T;7qtf5%e*mWFQkLXU)zx^_tJ8xU_Zm~+eU9e3R-l!zV`OLHgbtZ|(Ops}T z2eVJy=^u;PFgwfA2}BH6OG2}$n)X>tt&5pjy455GDTYT*Yej5BgziOI4Mw)?#zRH`BNs z7|Wt%k(XruoBtJ8l~3s)c-Ka*{z~Y|klyyXd)jGd6D0M+Fx_Tu?5v7WhIIGvgN~V? z6Awo=lF;T}G@%ti=hJKBKY7vLz45R2+H0@pF4=3ZsP^i;_Igda?CpQQ<6bLXvdQA7 zkBvX0vGv3@FMP_&Ui+N(mMfqC58Jlj59re|3SQYP;ynN&C+xB|pAHM#nyZ+hJ{&M*r z?fmDjaJ&D-7PEWp^{k~kZT8~53edHDjnfqC09f6957orIpjuGS{%Rrb`94<#RQWI5 zB#Gbphoa#D1gL@^JH(QJShLq6dU6~N1_Zhm7(t#^v}t_bKy9?Yma@vT@`Kwn^FwY4 zi8AzSdBen5uv>Cbh7{JSt9enTdrh-8D`0rC$8}b!YYsCY5MTpTNq6_Jgf0*u^yVfX zgJ7g+V`=KuRYQvyxOPUw3GrULgO9iD0AUTNzL;@f(iw}?41W8=HiKp(wc1~|n4`M; zkE4Bd)EvZ$+BbfnT>BhEN;am73YuI@5-;|EJaE}C-Csy`gCnvcP)G%0KKrQA5wpr* zMb1OYtJ8j7sJ)$<`zG$prRiAyCre#j=r(9~|9o5}$@q{_p0 z+bF=!j5kh(l)wL%DsQ-Ikw0iCy3CRgW;uK>OFwJAVyHKrpyo}HS$L=)_1LFj17ldj zSfW7PS~CKzo&Np;iN-oJkSl1@xR>a1C@%boKMVGQPL4Uq`T_F6ep3Y_O=(5_3c)*@lWJpGJ67api@4FFx*`}^{I2tIsc;HqUU}7;FIw) zna6cVGhlIfa=?WVL>j=MG=*5_!fisgA4F%?^{XJu4 zI)MH$p$mI)Gz|Uh*L?#X1xE)QRssvMG&VHSEH-tA^U%fi<=^x%xB^WJEP-M3>h&n$ zBTA70$8QyuZF5yqk*3eqJ)8NPU^>sr9$vz=(G8vjJ8tERVoB zQpVO62;4lXk73d1Ppp5;%F)AEiit9$W#&ZE%y8ENcVf~*sxUeIRZ6~<3iz4E{wgI) zvZBhb@6Q+;}A|M+>8 zhE~bg3O1D3%8(AOGqn*@RJ18|K^`m;+TzcwwJ#%t!yJgMx6*B{G*_T}5S8`Q-288T z8RI8=j!vU3T^c9+lP+CaTe@^foyW!FV~wRtC-l?g(xn?M<@g7W?dhpSn=IX!vui_G z+Qp`G2koSdR>O(4Ayt0sonc-(ktRiC!H_CPdvYkMaExt8mCH&#ik5oWcxaWc<~9lB zJh~LJ^Pvk9Sy;pYeiku@RfoWTS6PQ^qjeG9DdslRtaUfvYs)|yK}kCs%$Z%#&O~s9 zc2?*SgKOCmw!3~t0_e)0{eA!$Y-0G!+{4~GwR1WtN1i|&VdKvCpJmLu;OXTU0 zsl2e{uM@!xt#GCHl1eyA@sINkD%1zL4qJayR?Tv;S>YG@UBspYX)ZdS71^QpIN^|c zZDy01#Y;HmJ~lox(U_c>X)fi**38t*rtO)TMKd!SZ!|MAO>A6-rwX9v3C>N2R+%R_ zOX9hrmwAG-B%Uj(T$yhvWm0e?=UiEeSF}7&B$uRkMU{Divn0hUsvOv7*pKX7EKBi< zmX9}=Z$=qx)5~_aJSBm86ayDK$U(bH+@TL@5BV}>oUpf}IXKH|K?MwzYQeBcD%65{ zSuLpGdqFJ_5QSPWtP69}=4!#P(k@pEo@9VZYC#237g7rf0R^^b6b zv*@rw)6fdh7P4I}``3kAU~qAFn^(xqXTfo~VSW(zotq3#-pA3tyeO|Z@w!JIOeINU zF8a3&1tV;j1~5voCKX`+PGG!w1aHLwcV%=ix-FeEmkPNQ{6Zy5X;_W2FVRkV(Q@YT zUf7Pw_xm&-?Q;sFxB@ow?iw-T6v~)nMcFUjY`C#;_-KV;HNIol{TOB2ndgOJ|7fZG zB^C{lw_imDzWvr;jWDx!=e8H&dLww&gMq7<8Sg1#0`Sh|APx31xMJ!!_R_am!A`C> zVsYB~xSRI3M`|u}@-n5~$%~f1@KkA&IGmTr_hNa)UM%Jsu46^&(zW(t{n4yu>o13{ z(I2cW+^w}X!AO5G0@l45;|Jboe<$612;}aIxs1oHpBEmCZ10s_7!@`lB5)23}53Yt$7tfIXAIVkw;ekPqVLAbU{{3=4-B~VxDOW!)*94OcK;HSE|+J{H71X zY(UTiGmByguGR11hw=U}Onz)xJa!SA5Mo|AU5OLh%U~0=J-Y`-vA5YS4Tm?~tvC84 zIGhQ!bahFP+WCprvJ`(ZpA{9%P&5uL=cp$IaC(<$#f~fDWcwXf_#9UgD<)U0Xtq{N zt(Ydu)y9jLY%;TS)6G_Ft~6J9maFBK;cD9z&m_aubDq1RSm}h&liy7kC=&pupEy3F z$sTt%SVY;hY>N&lxSub`X6TTD8}2lEpB`H9aNFS`N#U>- z@AWORWjLhkQ+o)8D9_w-;jd8G?$9pdP55CZ_y%(O&qNtzPTXish zB6n1A_GWOClq#LisW3yNAH6CJgn=A3OCph2r6tF6C34pI#`GQl!GC1pShEh zfJ)(b8Q#coouXYBrTs^UD(JwwLMA#>n80@^Yiq3Y8HO`hgO>7qr8rWY-$ z)yYoFW5fPiv?!V6i~XtBvnTr`9r22xdr2KMG_rq?mOm zmgUEGR+ceF8&1qNUmvCx{;`LR^{%QmpY%u>#4hqGf-?&7EGVp%3quA1&tj;p~u zgA}n-Dm?AZImJ#e;j^B0m)SugEhB41$I|k>N)|d9ER96C)5!KJb&6F~B7ZkOlz1PS zIj7(ScG<4=x;8X5<&L~lci%n+FdzM(WPJdOr1lw*HFq=T!D_^q5@DJTS~xJ6`ucYV zd_5a$MoAR~KjzPW8E^JFFtb?0U8t)82pG+Yt7jv8vCgpu+N@|%3&19lylm_t=x|43 z3Hb7gd7J$(+sct_^i*{5XjCL2XBE89Gy`s-K7>Bs2Z8^iRA6u9O9#~F8fjeOs#AJD zVOE-PEvnVX8&s>M2<^-FrLZitdw)T$nh|)*`+Xb@0?N$1lG-s?W*Gx0h+v_?4rgqi z-(b%6fJGe*9EKEawHRXwr|>cy!fFP2`MzU*Nv-yU3!2{vK4nK`QDN3_!wgO0O9s)A z_a);*l4maQ=X&s0`=I8A>K1+bpyux}(Mk(|^(Wt(KQK=s2QnEU)3+mw6;qQZxH;=K z9MpM&n=2N%8~?~|PinoXKy(GkA6|Hp#lD}oW5zf`$pMw4Z7?y&2z9Jol8c#GFqdQd z%Cz;yp@6T;cR5Y&4C|?1xv4;gma*|HdBW$!rwga^0;7wNQ; z7Oa|UUnNNmA@L<-?gWaOrE`Q&gTm8;YPi%;w96qf^f0#`rKv_08|1 zz1EPG2bdT~=CaY|X;{mnxooO%;Kx1!!_}ZlIIY0JIeGAscP9;<10$&6-RJXzPxB3Y z$wSU6wm-Zfl%chJTE{X)sTS*=A-R(dvXkD?unm>t3x8TTYNyscrC7SN($s()8@|qM z+3vRlyX}74nGJc<;2haz%V1R6{z*}&Vw_qF?zrFN$3~2ZOUM5X*H1+&3wLEipJ7Hj zt`aO6lobH%XF-h?6!6~+EyE!HaDFbXOdcV(fX=G=gQn~%qIf|p?Q4eZ;W^VxLW(o+ zHE)Mg97ag)*X62Do2I!`iv12}8cv(Oeqi_|I&8}_dG)J3XXf!BMwBEI3hT{wWo*-^ zPqm!Tn#{^nw3+c>zXq~@ZEVwxC>g8O)A6_zt5nfUV41c{xdfJ3j&81~a=NWUzYA+s zO0h~6RqpUdc*0(2>9F?T`LJoUvzP%-70q6l%eE!j9{1VeBq`7y7Oojc4}dggDX|Ne zzuS89yrw;WuWtfkwYi+o#P`@=%#L}E6yQb@DzD?TRh1pfK%mlbGQj$NC=PCYBLqb# z>nwTr3neJ4SAjaeP$a5B9LMn0BZw;&SVg^l#FZFZMforNuST2^v>|TjdhJIX>due} z`r!X+#Kk$q!B-bvdi{vYR73nIUVms=U`(0+c`Lsbr%?iZqF>jh%&ZrUlb*~heC0jX z_x818z4)0}9>2ID{zsKf-lY`JIZPG&>2oG?%fh*$;DuID>TEX3!D?W2j)@{09>gZQ zC}hLSqVoPU2qGou9ikqe}QHPloF0SCukIS<0Ouqn#@t4HouW36HFm-18Mfxyc{K4mQcx z3wybu{D*Q~hCs|dQH0k^`4D|eX7XU{N}EyEpzOe|0f%QA=~4E-3?>%mnZDIQz9>Kw z=3kQsro16g0qGf!Z)7D|@%tSav@&GIZ}B#|VVYy6;txXdkXm8pO0`7l;u1qDK2}8D z^F)GI^7&NE^I->=labZF^s%k>z>X`L4T&c5h0$!iuE10Uz257O&{>^6K2lL$OV=+L zS@Esc(!nru^IJyM{}ZjCB6QwcthuBZJOQIe^%?hVka}5ENKk&@Y^1b7}_wMLSuvdU7TK3WS5{L`0t*dh(Vx&+EV{qFxjJ(YXj9UMX zg92)~1so`VVOx%?SCr9LaS-A{3pAp4fFu8(Piu6`?T?;&`=gK6JN5Z#jRyNTl$aDp z;RbUQT3ei5$W*@hpPf3%jnWpkuSQW6w_3?~%%7+h#gh?v?WPS4IV5Qsb^jeSxjbv^VrpvyBF6_s;ZA511LWHj;>STlyckt}fB zgkes4Px4tjS$;O-aF6TEzc(5>LJF+Wk&&ms3g{@Oz|yM$nK=EXPsXGw3LRR?35xM0 zt_CCOPZBhk?YfX8sP%Gxk3yzjRm|r8mc>EKTlgY#wGKeYsb_lurczr?)0+MEuAQl< zNvY1;?2Wpq8I)>uFlSpcR|NA$``vqDv9bk+jOWDtq>!0Ks?>~G=?YvO`N^8Q=0I|L zTFS$h$;#Wn{YZ70c^C@Ee>5cx^$&wUnzUKqiXS56J-S-GNuf*0`~B8QHmkg8`PXHa zqbp@tBL!=|&?-vz6G}y)fs(JHthz5Va?cYf99f3rdYmS;NLwzt$EbZq$jvs{J}o3> zn{1zHD!W2GPW4`Mo``-JHj?~Mk*-G|Bq#{z0g?ZL<;t~n$Dt@L+mweE)p{eZT4&WN zMt7?nb_ttWOL}3p${8~&DrS^LPs5?>DiyaKt7y7U`RICxl3SN;=Q;E~$nnKB&3*V%4`D2L zX!{*hW4VJ$&fDOi@<`MRd8o#6BvROWsBD_Jkh>3MI)m~=cf+_n*23K9NaK4(_7$t; zXa4vA6VC18eYkB3x76~u9oEi+S*lk}ni51yhAzBNAMpXvOzV(>-?T_ITRE$HleTxG zAcC@MuVQU})(#jl{|KiU6HcOvvVh_@lNd%DJx#nWrD*grjEWA2fcF_oxL_m(;;DJi zrh$NmRJ{9yEINqW#Er&>clNDM7Im)fYPrY5;5+?OR>c-@M)V^L>$8ujnhmQbTJY4I zuMEyG6Jx{u50FT>+TsI5@zq0!mNA)IA5GnZhj4(4<->h;9eioJ!lCX1IYlB|ntt}& z#I_ZbdSzzjX)SBfq0U$f`~G&s7S?-f*N>^(f?uH{;N+1@=HmnkvQ?rK8@0Gj&i?`{ z+vOwP&H~p;2!pJgN7$-0a=8vd*sJpD-0l|w-?)_4mgxx4?wh4Jnv1bJzA7d#Va;9128E!^$-g0CO3IP7K^VzZ*%OB-1gQ~q=*Z6IdIItqG``Y7u~6^+^fbt9Y~ zJuo8S-0cs-hCv|1Gk^wf_;F2>2B`CN4VR6fk*RNw8O#Sq1@n>rQZNrZbVQ>1x_5fc zTZW3+8irafR|z}`A)HS`#Y{^x%lTK3?P0ZYJ*KVKB&o;T=f}?MZb&;`LYBqG^kA2c zpHl5d8}DmhAN1R1`vx!enCY|a7S5Ve6gwhEd(T#y$O9=M`R?=esoz)5M}Wc?_7@hW zv21^VikL#UF8t=QkMK;$!f>`}*cp3{GEQRqIb&fw5*tg=KcOm5mZBQHI#!#a5MNrDhZQrw&Ibj{)O}(j3^PNsqFB#F>KB_VpOBO;nbhy9uxo9G@^yF}R2~}_;oSe2^%+oM`|CfF05ObyU zW%o9XOSB`ZE8-+_Z-~4tWmiZ=c~4YO1m#CK?0->TfD8G3GeW9pzGT=f8Jd}Z@X*v7 zb~Sg8*Qrr#YwjrPwCOgSk(QIsx2Ka>ll6_y^SWSq6_X{UquJV{n6JU*+*MxSLmG3E zzE+ecE?O-Qb903BY(@s7Zw&=TQqgsJi>e_jJ6i!2<-^qw27}#WF{C_R07(ifZ;9}C zAAw*m$b6x;z_s@q22nvFkCk9eAc=zuU2C2}SfQb1rXfAgbJgm4@lQftTvAPY z1GctuRi1;2dk;tXcQe1PhZ~o=9s4l?@R!CAcp$0?aix7@K-bW~B{0iPz{=%g*1Xh;Xfv=}_i zFPR?$-$=vWk%nuY1|bIM8@)+c$2a5tz-rzmirufW$7DE=KMqOWX;oV?9N>fc7?4pV zDk|{U@Dig%O@>Gzb`LX+*ZZxWKpqwPh6Y*T|kO>;L3dG=r3)_4P zU%oeYPx8xf&T@=5c?L~@p`Qz~Gf*m!bBcHOvM?A9Kx!+*ZmF_`lEeRm;poh4(<6f` z@1h??*L*^1hM%;AOLT^^6Vo_!!5gei8+3N&)US$}eA8V-nsq#Ql69rHJIrLjguB@v zso~732-~jiWTGeB=Pa#KXxyfd6*Y__Y1s+6q4f-mih0Sqrb^K@)6_nxgp0vra0lDz z6S>0Vu^X9Fon@{rZTe=w4OS0)=E;748zuWr3xl)LY2lVb42ShD<||$`#}o8J&-Lbe z94g9t4Ku%vbV%!S-5wQlgyANt0od6}Z1Ox}<$`+FDi2uXvgl&3!!Y(h?j`lt-yRZ3xWF#x@uRlNPNPnj##C zaWH|qALb|6o@o1$#ibQL$K#NDZz|x)gYHz9qu9gBYZApf6`-Ox33R1}2fW^*$3ig5 z+@!X{D)$`)QX5%kgQvl}>(Lmb`lGfM_j0EtcfB2|NkdTU3kve8SczY%BCm?_k8R}| zc|CzEcckP38-2t_zCPSd51KAS=*&KD zzhBDNe)xkHCNvdo?#{hiFV3@kH2Qx1!Cc4cZaKjeFkbNGIv?5+yMqs|H%BvJhnoK7 z%-c&w%)G7jK7)OeEsBcqmlJQ#^ly$;)F^MT4R61kczcWf_6ILh7us*FEYn-Xa>`6- zqCUI60Yv7%Vetj&|sK&>8D-q^qpSi_cBaO{<~2r6K( zHktHxX;LbR-jxMgsJL7LLqJi}=KCsVTCZsPfncGD{+5*6=KCNs$=ZG#%p2!PzSnBZ z8&l9uB&LoI7V+$2+-flb2 ztX<~3(KDYr_4;G~E2`dOZk9suRTTSW>DYT~pp!`$3l1i`e+rb2?mDjLQ{G4U{=-lvQt=2Qxq}u71NVz0uQ_-^T(0d}DkIuhcybi?GxwSXUO`+04F`q^ z5s0`5_BMvO1 z%ygI`;M`m~ur}9r!t-cM&F|KFMh3B%kCXgEwSsF5)^p%G-qFO*MhO`#6>>EUP^G;Z zHKe>hl(7JXXZ43rcwlQ{hsM^1O~e)E8_Z~Y-aQB@y9SY8w5c(F;jDdY%HA^`@_f2r zi@`Y>wZE6@J+WtmyQX5Ysl}dI{{NiqRj}p@`V+Mc({%7amDpZIn<7#pH0C&4gcU{a zu?^$F=a5Nf#;A%bn)qg-T7v4yPf}H|-U`qU>|?!;>Gt=z%)O!q!=quc-TujwvTvK~b zYwL3RtRA0B%v-(iC^ONj;=@{Hj zkZ2@9d&-z+&anC{3$Hz8Wh&aV86Q%{3m`AmFf|%OnD6NQG7`lx4C(#>i&FEve6IY1 zkJ}0{C0V|;$aZ~!5uA9NBX54Nh{1dsZW!IOL2?ohBqJqr3ysMni6OU;zM3H7Elim7 z;oT<)^*h6Z!3lBBqz?6pJk{q&yuJntT~Lx13&iK_YR%8tH3Z3D3oZtqw#Dp@enDH& zt>~xF*eVKL`0p^4oOf7l#zhDr4M zL*9%$u~i0)uw(11k6Gtd%8+7yGi0zX_g|ZEG+%BN1AKCG%Cw)P$g$FeR23%CrA5vc z=|hDSA53*-apf|pqD?QAy~O>Rl+ui04sNrWl54q{9VodL%+3HuFH{ zzZA-A1wff}BZ6IGfd(aVaec;mR+ck6?-jHpeq~V%naiNu zOI79x=FZH$&pv0LbM6N2RUWsy_Sw+ZwMwSwsTySryNg9DT4i-vF;OwmT~RSH(f`cE zz0Mz4785a1(_G}Kg@THLLLnk53aBWhAc$b`P(kITfQW*E%1b~V3L?z!_xsk$T)9u? z&OFx(V#QpmIJq;|^IPA0ed}A$=JHtn)XQ`CX>I#)Rv34JcsEB~)i>7D?GF6q{dBF# zUU+;3x5p0^5$QycVG<1-&IX{cokESn31J%y!p|U|!gx%#!rk-)T4=Tb+@A`Uc53jP zPboPtOZL~&0?%Z&7BU6W%jkxo5DMCY$=57L&}O4NXc-HH6VzitA6g_Q##S(UXe;g+ z1$VVi)}Lb$GM4!?J-(uOOct$zi&^OGtQ&Hp{Bd|-a6_U;N_ymIIcfjuibi%+8~(DTx47p(KX!k}nFrC3Vr9G>99%furo0%9Q{Q zw%{^hcnJ;_5p}SKBGh>~##_j``VqUE15LB}crU%7yx0%Qf{BpM0=?Id*_Ah6go5?Z z-37g2TRgc2P}^OehONZFKYrs%a_C1s^4yoMz4h6RXIQ&F7-;J<+cb3lAw|Q4_@5YD z4Ha5%xguH&k-u$-{B7BClHd=nSHZtzF&Qi;`4aBMTtxo12Z) za5?joAas`lGS2+MW_W{URCe7ef1UOk3`7*6?cU4ccp{-kx{9h40Ig8B`QbwDy8}H=B89Ju$pn{IVd-dOj{j<+JPg&f39HgunT|;#t*q^PA+HQ$8!M5^)7*{)M~{ zI0(eYOCoOuU(Zp;RFosHsp7 zeJ=07vKoqSOiWcn6d=$lAqwCVl)*qw$>86Q#Z&{vea#0Wz>KL%)rRun4oNPPc9u_U-11zBYkXPVRm;>UeHt?l; zH|P@!y#zdJX!c)?PplhK?H@zB#wG-1xKDYfRI#1`gbn2bq_vs~CkqwoY1ej5LYam} z$qq~loQ;|(lVg9#bP3&wPsnu1 z2tGW)Vx|t^u7L*tzEHe@`_Jk!j|#*&-(Bd#-!x{3Hoik<%;gEUd=7!)ij<;^-={s< zW=manY~OwAXc!hufLTsclf%W8yjwxClcosb^tdng9RA5+5mure%blf1|<<2h6G5PNhQnmtk5@@%%H|I?M8l|WPfW5D%v_Fvo!YSRtF=xtxk zdMWa(w6%Mx?jdEnEd%(Z6(qF~022&grv{*_iRJ22=dVne`t9dG<=B+^O%T_apI*^N zz3jot!wrzRLv|n~5pT4|i%(^|vK|Pqj3a3!0@TxsyYb=Nee*<|N;CveJ(}h4MV6UG zu@47e9qF*iP9yh4F3!g}E&dk5~)-UY`ls#NZHRAcWxtmz1 zNzM`qHJniUfR^8%H-YPvTZEXJG+SzPmOV?8Ewg8h@As**$fDP8?}jcL9Cxqi;sKPC zVcn%oeicFo4QqhI0n9{eYhaG$VeHpv07VcHSZP8*OBTU{cVdT*8(JtgPjv?tc*zVX zE2|y>6}&y6{fn555gbF| z-aJ6ug_6+v%qB_0=r(3c;JzXXSK#^%Tu^4V1n@iw>CzTyOF-7imiRZ|Nren*SjpRb z5I<(#YSEj!GEBdrK_d)aY7kHg)M?4s;nGARJS$dry)4%S` z#bPwO!|w!IY#Hm-mN88@v@Tlzg&b?^NJFe{%Y@!rLXv>Z2B>g1HLDy_WLQFP8VQ4xo4L z-P*ysb;6yB2)n>Zf|pjq^Xg&hKBRlqj3qYT3{Xa@8QCdht7s8=coA`IVPf@4Q%Hx2 ziU>)D?69~kONSZYSF~F7c?zE}wV@kQWo;?_!vfmy3}E-eEyVj<4PubIWm|g2*Zn2R zemxt;bDrJPEw!y0(BDwuq(@}H0n+ow&NwN=#2Bv!fObrwp30CaFZKrCBduC=C3bx2?L2vKFwUQfLWR0iBaI$ zU$MX^yJCS)cEtjpXh`mbf`!m-nBNa~WfLwi;)XWukgT+%;)?E|C*f#05VF*hNP`L) z3VIT@k?dHUuKDJL(2mn67*M% zpbONccCMBAx}p#;AG>^o*Isq=km5G;?7#oQ>OPw`@9}T;+;i*x`>y@oznx6?-?D$HDm1_u z@kmhTm#3`-5iP`mYpn$>At{_Ag{sid^^Iagw4wu=HWa*0T%AUCOF_%`whSG(r66*A zaWW9;Ed?!1loG$Cpv5ClA!sRhx3Z^D#J3c@Q9Hxb09p!uK%4<`zpWs$n{n0<8!avV zTnAYwRay%ENT;GHbXp2phD|cMmVy>|Nfyyk@JHGZAwjkjM9O8(dJGqa{f`tibbIbt zo%Z&^zl{H>{7Z^oDF@7?&Ercljme#C&+OLSOCFV>WjxgvNaS$OePCPHfTdZ zOTj5`n*uQkO5SE-el6!P4p=T}@ZBd}(!clrN43 z{pI0cw7Q58lI7*q0Wp~kjK|o{Zdr@Rjb9L_txA+gpW!d%VrfjKnz1_dFTgOh`hC$3Hb)Ovx9q+wcnJTBg zwJMhg48D%yz`;OwL)2#$xxgza$e@pv)^y<`u3Gcu@r{|`Hk6+|!rV~I^dU}Hw(@TA zY~EP#CnShN!jq~ATrV}TwM!HDd)}uNu%Thpajq;lpkl;rs1dw!2za1b9bXsIuV$>8 z(?E%(4TUU_oUS&1V@At7PL(TEdOnw6Z=Fx1#-l*f)f77tBv1AR6dXTl$4WeoD2 zVc8XR9irJDEu-1?rdO-Xq1hp_&=P|3UV%zvVF{~x&x*x{M*3qzv1@;2*OkCdDQTo0 zhun?Y&nF~1fmMz(eUTs<3lDFH$$D0pYVqnO#Ann$%*;^(#RHfZcHZwA+ z(rz)EAskg{x1G%fjjGVroiAF<8jY&7o5bb_64%^_a?rtsHfwU@Ew>xpWnu}Q@ac^5 z9jtV7zHEHV?Pk3{^GxZqp)u1Un7`=$0+kK79PO+(khi&cHV%z;PlGuSHr{f(YodBj z2Ci&xcT$*(Gf)kxFf468%*}Hfs(i(6be>x2u=t zXpH)a1XI&GNBI?pm82vM72;de$GdimIy@KHHnqJPP(1de>coX@Ampn{34`N*HGoklj(1aszh|xQ01nXD!)lm=zP{9 zgE66?q-BOAq{T*a14Tb8Z>cA@nY7z=o5g0S=;tR1|Y{pL!tlqM3e8GKm?aD#n z51O=8D1*c17qozZv=Vs@I3V)6TnBg{7%&jl0V+bN^*12I!^XMDJfb`bXWWW_(q6#^ z>a7c-Rxn3!Rql1uEy$?Ym8jRsou(zfJZWd&edgHyWQD?xrh@(Ol76#in}>hBwRh8bJr;0KA>2nz&G#k*zDbL00fZj~e(2 zy$HM}Cmf!TT#T2W>!h8b9!)hUr*HLr7&f zoK}j({Z>A#?-yY-ArFB11#sv0%$|77xKjho-4kPsAD!5|l`yxXYym>$Xi;1Dt#OCmn9%55SDbb0^ z8%n>15;0c&8caG_WN_ML3v%LIt!zWr|}o5pwc_H~!NCv(?) zKXDiQG#P)NXLU;XQ-htT?T)VI4eZ8X15avblM>s#?}K@`AU%eHUve7WlxA5yfW+`2XZLXZH<55BW1#r)(P3@o9EF3spng3fHv5B=P;J{pp6rB_vIxa@rsoI{|00`Usue4 zdRd$~BwEUInPp<}CXbe~?~mHXJ`lHp%#v)Wr#`%c=*W6BZR?sw1~~+BvYK{>v$B4` z%sOV;9gipBOev8I3u;#cpw8w=R@LrmR=d#dVD%N+-2$wc$pRV`I$PwmpT;44AL6f} zL-{Kua3fC;GFXCqe1m)s0Xz+qc5hG&FfMczYr73KJh^j{(=42FJ<^@{wmxqN(oLf+ zeV%7G(XjC3Z~CLJnWFMmNaym5z0?=mk= z35Y9_4z=E`tHh$Nb^_=n6Khzui|s}O_JwsCxt;0ZIJo6bdMEB~D)UL!SGEA~VujE~ zX+#vpC-+QoB!%dT1SaIZ(2^xFLjp9U^0F*emH>@{K67W{Ff+I{y7)41p)`FfozV0( zOC_aHNJSWCQR7%ER5jkE#P+~=##1H@BL`YZ-8bHg>6I?5N~6Wd#cF+3Wq+e0^21Kt z%lCSUs_x&HxyX4E`04m5kF9oF?-@#IN4yXHC3YH5H&m7;WU$k(v zf`j6U*B;*~TCHkH;UpTMxLMboB<|!7VNG$~-(C9AEGW2Or%IIfQ}CS;GeugS$R5z^ zvR|MSpyPgddPOg-2S_(z_mHkqu}*8uUqBGw1Pp^9xFqZrVkN^J`rPe<#qC!{jwmwi z%FON1S}49yuD3b+xxv-2--Xv8#NQ~q6zSC?q zOR^OF>U&RuUy-^qcLfttx^s?2;c~2V`Yw(tn4{v4dRu`~`Qb_ziJt}KzNQvFH7>`=whqhuT`n=0%nX}`-c3F%3=?P-;Z-q5?hv_hQ3M=f_iKcd{WbQ=|hmeTheqm4n9p5`nM zmXwR!p)jOS7{sE$w%)p(qAr7LtX0Cf>mJJ8wI}&hHWSoYY_9_|(_Qfp(vNDN2PEJ_ zXTtdFC7JD_gfjJnH<88r(%Vp|P$uRxn#S8R8iwun-LOoX zXSRGjX8L^y;ik?A6K5j7`R4T@mH|@ra<|NOZMZ@ttZEzeLQ>ks=sR6}bH~}v4<;q_ z-fi+m5)7iCVjDLA_GG(e8Dkh4U#{534VAuqRNxc75^UpEDSuO0iKqJ^pxW{8M!Q3} z4e5@tE1{qd48fM$o4wLs3==S*VVXWzwP3dwWutR*UK&89XRRN6GgS835)U1jZwBlM zzL|LE&41Xy&KrF*T*%E+`2nG9{G^rmjN4#es3S)kjcjjk8FV5MW_LSLZ zCShv4u}pVjW(Cw6?umoebSIs*vnpUOO>VRa#}>_q8G@^nFV%ZLYYuC9{L{<^1FL+- zLU#8(jWHA%0O=Ap#Hp=OVeA=imTyJ0ybBbN!xE-~9tz5qg26*lS%U?=hgn82;3@+ewm zm*sLQCSi2^9(0t0qM;oZb88UkAy-;j=1R*sLuzT}?U_#o?+v-j3_x8a46~PoZQ0!> zUW&QSL3UaT^U>B>lE2nsXHGgb_Z;1mvjfijCbR$sm_9uLRk zahi?u@!}Gm@UPGR4924#{v^x%F&?k*+zm9f2eM_JE^yi~qRT?(evUJLX8rqIP#(`hB-LJ)!M6vEWX4k za=R$SfDWf1*9^%V$2+Ej1L!%g-dd2sAH@I7hD4BwB<}jm@5oLNCkeVBe^1}6Frz{g9}zE5~G|o zP}k(}nSVcQK$AJPCvT>+%L;J{j4~7dk-s;l&B}*T>{+_Q&`Coffy-p6Y;zeTU^s-J zgnCzz_oQ;GnHkv0&@97EAr>a=D-5*(_oCE_X%H10DSb5fPXvC-8F?u~${?mfa3@}y z$uFkViV-5AbWNOvaYeKrMpbW|?Lw5rGmE{f)wU@;n6K#s%`Y8C1FDreEE5M;_dj)N zHo7I`wVf*XYq(6eqn(jf-Np52C}0=xXJx#bNd+*5_gZ%K zg(n949f0lPbrZ2+jRSP&alcen9~zGKZveKWvVVg>G#<$qy=__XN|2dr3&G#9;Hk3o zcTh>)UH%T>DBB02cK3H&a&ydM2)ihVdJc~P#3+0=NELp6l{Lo?Lo1$7Lmo5T?Z*{+ zKg- zNK;%?kM2p4y8y3Hvrb=|XrCeQ5b9^-A=0GOTV>}w)}$&QN=+&phM3ipI zR{RZ5RX4@EEa4DWtI7!KIok#V51Ir@as*|<1kl4SF@k#J-xaUcd@L6Oa-TV-#BusS zOC0|Rt`+T$<5aQNA(?yR^97Z&!1$3)sE-&Q#pwJF!qcc74q&R=SjpTtcQWJ2+&tsS zB!?iIs3NQdtELs^k3#TdW(D)_+2%dmon-!?%LRHePfB~eRt@+D?JLO;=_G%Hs=8sV zaNVAN{dAw#!0S}(Rs^WlQHFv` zg>3*J3>ITJzPA%$wz1>tW_MRD$Y^Fft%kEgQI$8%4g%tc9k#QJ{>j1%OT82$PuU4a z(%m$3SuA)OSUk5la06<{rUSM^rsIL$(930Z&#LHqTxIbMHN0UpzuBETX<(Lix7?DL z3IMQUbpW*^&v}DP%iw%C2x3ftD%vA zI|Lc{Zgo3E{oy}Vw(UOlJ>`6iyn+o7{i2=n7bb0naO~h8#6BUw#|)JLat(vHO8J1| zLtF~;8}bm>BTpb#QgMpwQ@`&%@Q^>mmAiAiQb~#4j#=;U69?YJKno8jHJS&mODW!o!UXhJPPwd-U z!~p@re3In?K53-%RKe0crsVQ-YeR}Omg5}b>D%|=U z1xGVn2Pm4aEd;5xJU%l;X3LAT-3+ap+-|__OzvufqConSft@HIEYrhqFce|c3-Hc= zK&O!c<}_d>xq|DhaW95kchQW zYgRR0JT{^twr9awpdi40ukxd!)oN94&rXKk%?;3qOQId?nevVYd>7c@g3yViDpYir zU1Cr(up%cu^;(X>>$P0CJQ{qZZ4=Box>9hfngZk&H;5BjFSD0c$ht!zd9d9B6a*Q7 z-4CU!2C4uro^A)6(P6wVUT}LT2s40h7@7w>X;Ay(wiD+8&qD`cfb=p40Mnrj zn#Oxkfh3u@E4;5oXU_a}0OEl}g?#(RnylEhE@3l;oK4&ViQ=na3I5!llwHsi{Lz_W0x|3PP2n~X zqJ8_9eifxTOu7S(SaASZG6JDK?AzcgZWiK5kZ{7TI%as1XjtTH2|}n{tPKjH07qW7 zLnoC@_yKV?K)t~a<*)9h75$h;GYzA{lVh`@@}V?DfP66@ zCrKLg3A}wRHEBj~;E?)>4`%MTyAa@UVDg6jsKq_|K<3_qcnW)gDD?aA;v=8%FOZf4 zVNx#y8`9GLmBw$~0r*vsQi8$AN;O{L7RQfs#+c`yfRlSI3cn7P{eW4cIrr@6Z1rRB zXMwO)srGIKzJo%1qZ~xyu0=pT7!s1xRO5&m8bQhss?(;a9SmKGcnp5_gr^(`8W4Y{ ziE?IWK}Xf*TY5K?ep^K_y9-M<85%jLJKfmSUo+JiBb~G2!Dfe3s2~&3!GJ)UBE?NY z<^Xk^cPC}KI|(KYjo(MUjujyCpfOU?I_5loG8T>>*G2bjijX`N&0PF!tQJmW?RG^- z_~;(I2yvet|1e>*Ux|P2sLPcHA~1j9RVghxzmLa+zlXv$_0GuTp zX~Cb=tfYkhsOR$@(~oA1BGW_L04=cayDxYI@2>1_LSG#>btT#Vllsu z4dG-kW)S|X8swB9hA+oIG~%i~{= zRCiy1$t`w0q!a?*c*}5h5xAl#?(y|n=8KG9kyZ#YtJ#Kew||x_pG?b(!UovAC=2tz(6E(|M(5OC4LueEsNCP50{(y9c(WQ9@&t@5*){U?DBeok$EJLPIC>n)6 zp`GtmboVL51>WCW+|6H)IDq4_(*Mywh#|B{L)*+qp%zTBd{a_T+o%Ss+z-zJa|Idi%cgUa}!9!^J5WuSKr zQ^7()VTJXeX+eGSM@#U9gixjdsn^cUGn9Enwq&LqblCraqh^c~lXq|=+AtWMpY;~} z&TXau{@Iao@Wf(sgFvBA=#!;jz5L0f8;^SIbEHdJfk-!(P7(Jop^`ow(_glbxTPJd|FCIwb+~H(GCcc#eA=|S zf`5E5(A&I^KMQ))e>QDOHzhsXI=8y1tf()lR2Gb$mide<>}(kS2l7%H_g~t{BXG9w zXS^JOZ?o}JcG3uMpU!yw0^Smj>8^EOxG#&@_s|FKy_c^`q9wGg68PMV_`~_66j*{5 z?J&@m4!V6Qrfe83+(8GA#O8q;+tQuaDa#12bd2WT)-jol zl^>3eDVcgbg1UEFIw?X6#A4nf&-R)W2#xJD8(WQSR1bJ}u?5)!?t!h=&wb-!lPRm` zx9L1X)#h52xHw$)vl%P9Y;%1Vd==P z;GM}SlpuK$LclLP3ML5Yqn+V&)L+)`z66A)))+IKdM(oVeV8C!5&GcSO?`Q6*FekK z?FV~3|KGa<{6x=yo`ohA!);jC0$GU(F|sz4FS!LBKSEaYbpT8fu;Vlq74;2Bjo6l6 zY-s3y{N;*l+=h0%c)XooN}ku$8lWvIK=Pu9GV4o+l~2dVw#u1DKWN+ylk?{){IcUk zjhx;{(#Fn>aRyktHa@Z+U6=t%`d*LjGdnC0HU;W)i= z{U(=@mbabQnrw--zC}G$MCUK?sfy*q@?mU7}Hyke=PVLR8>A=TU2x?rAAd#!u>H|XGxxNieM%EOkg-M!4D zZC1p?RQkt3T{Q{@We_`Ylqi6V`?K1WrX5@uXztynt{`4iRr2wV%X69s?f$e;4X`!T z;d;E`bt`4s(1y}qj8O9pov_}cCRA;7@mFvPArcymgR=huPXR;?-TlJQHPUMv3R(iQ z4iUxwtW0MiL>1#8Z=Q_|#`-zSa3;HUJ|p;?k^p)&Ya1tM-YGD0s-8d}M1wG(f*qk{ z2?O`746ocfKWNEu>EUCfZ3{R`%Y0jhoPpkfZ1^k4+rTue?p^)WM!Wip4yxt}mZe$T z^DjE@G82XVx`glsC-T?bCqlmWU)+x^25tWGUn7lRXj zJZ%*@Xf36~iS6FQjK|On{68uP(3Li#UjJ=}Y?VI~SE0ebHsl)rZ9TJ0zc8PU(p?Lt+U(> zcDVG7wi)s#O+DAEcJ4hvET!WcOBvR{C8d%Rv`jzPzQE(6a1i}1psKaG1 z-v63P2^jP4*DPV5*SU@w`il}(;?A+y*VIrUN>tfx2l7`wXD`TVwb}z_S!cgpZ%O?C z`M|yFeJ>k#_W^tpo*{Xn$DP)m`yOK4J7`N+C$y7_(KG<&_fd#DWZWW3udrA$*crcn z7$p_D(qF`_hDpt7CfYNuFNMv4_7SNNW{GX7-f}WZMsMNq&))bu10ZmuBQ`99 z^gupiyW6N|yX3q;ZLOS0{pz42(CQ~sC0!vx=N)dFD%C^m)Und?wD*<{WBmhwgG?Fb z`J}hswAjRvKttpq7RCrU_^LpvcKL<-rXfAHDDU#oo%FphhRG5Dl^EJ#w{nKBan@B6 zsR7oCXgiN78n7jE2!a9W7Fb8Z4gBR-a&me*UXYHseHjDx2I6-5ZmVn9wSCv5LbC}u*<R7`LPCN!^wHNc~(x3Dd*12mF`UrHa zt?EO#gR&m&AS|073Ndj#%}XuAGJb*Fxs43VdG4%q<}=4~^A6^)ELEMSRP*l?n(7*5jPRe4DmFrS4f7x482@He1V zId|?xab+uNP(!U-PU2o@KyGRVE!`Lf8!B2yxDGI0ng$&p?x-gfBy`k(5kmQotP8DS zfCt!?bW!5C*>@ltN`Go@rIV;(-%OjoyQKd#L~EUw;_?tegshB8kyu$)=wx;#Qw$7L zgA7IPxi1CjLt2WC-`1}ZwnKQtI(1L~LW38jE`tx7s`3lHDh6t0Adg!1Sk{rIL8c4yqb!b+afJy7dF3Rb5hfQ5Vz zu0?T5K!Y(4MI(qEzyPeP?%xK4Am?dAd(H;5NcK!T!~ON`q~b%PpXYJ3n{FpsX4vO> z98?bGyS~o1Ncb?0Hjbtcu{Px6g4jM$1%ZN`jY7jZSt{NKdTC!4G>J8Jr#~GcDv55) z^j#WbAgO#0mlYazWr|!zlMyG5O7zL*A&({>%wuht88~>S6Q*Jqx zTmVgG?#o^4e7~%7>(%TBEFvsdLpT5UKHp91?%&fZ{4Bar2)yHK1q4nnA3t_dnC-5# z`S>$Mn~#)_7w_+f8D>_$JnqamMjqbe+buxC}Dem&7v@A$F+6oo;F2K?$F?A)fy0VuCtzHe`qyXfdE(X}Ki0FGUa9{!NiTFaQVloM!8j$lS^7;4%%||GSLYS~z z@7%+ZEG{<;>$L_89Sm)GtX9sDGQ1F{y4!&Mr;E0-QSUkI5V%3$t!4zPM$FC6>c z$id2bt>*1R13H{r3fRZs@Db7j?oxNRPOveK-aQr`(}*7DqmM@hHWGIrn+} z2*bp3ceSE>>z9E_ssLVkyfX86QM=s0N?<;@yYX$5N`@u3R7OiGo=+9u>Nd*Yyvm%M zR~sK?;?6!Aqx87^;eEQT@&gY>^0u%}PP#IzNXz7YT{+$vjGM0)(%OB40y#+1@%I9y zv49uHGH~6O&V|;YuefVsrVe?cTo>o`AbuTgh6_8RTzmT;kbKV_tJ7qmx3G{e#Q#$K z82A_cg=}HuPG$qRR>C2d_>mRhxAj zNnnGcQ+<-#h(oWVmwE-M6ZT0Z$HdVz)D#6Fb$6Dq602}p{5v0d?mu7^z;sa9>(l@e zw6z!5wwFWkL)2I&$$`ng@tD5W3))CBM)ExsneWB2Dcs zHL@^E3z%8gT+vLm7yZXlpiWKIk4xWJc*;PX7y)d-TSYC)F~wy2Wc1zButd}#b3hJh7Ayn z&{I4yV|*rmgdLd6a=WcXPj^v$xkIoES6=9c6+u=YpsqoZz+snyA*rq03c4f&E^=I` zBA%;=BXgF|SEnwpyOmJaJdmYpjLm6PD&2`!T zgNo}Ke%2ZPdRSvkr!;LFj5tXX4mT1#4Gh|BIlr2oD=0_Ou7bfcds0#-kDs{0&->8X zU^C;$g3LFu0l5CIxw)f?`SiQOQ6hwNbl45~@qP4P$?hTb!1QlwZaIrbMjBJM?L+~vd>@@EP!(|qjtgwncT z^|)GSkA89W^`%Qg3;eQCkKxC!4bVy5N9|dyep#MNf_GP1-C5Y0seASm;;4=F-S^In z)rWDpi@qmyAEGO9pS5QVdaEB4Shll*V#d0st&J$NGO6=%;APLFOP3n|MPRp1Y z&@3cY8B>F@c*Xyl;;w8OZ)P41r+xAdFbQ~7s0#&spn+w5COUxWH!G_;Z9~0Bqw|h_ z@3B+88+Lk$gY~j{#?RZvdH)mQWI}JNw_NS7L7tPRm^6p3u8no~jB*pjoS|Wkr$#48 zHv*gWbF?#xw!ZMYdVLLVwL(slg90sHC-OC*l(K5>?1&5Qv2PMj*CT-?1a!x9E|o6w z@jDNbc}P{PLqem+8iEzS1WEOo>(}o=`LFLDIfw)r58QF zy zXRPw6XkD9M_~d@{6Pw|>RtjjXZzWKMkGbL^3Pp~8OsotzlH*8y`Fxa~<3kJ$1aXoy zF|-BZr4r#8Q09Egk&e;O!X088WcFDY0xP+HWaP4#W9IyDC_+ER;vu>zCLCKjDU#%L zmb;*Z)vYJXuo7OfwiDUI2wkfovMKT&?r=SB@z4x(xx>jIoE+JYrZKi{kh4Ic>RLou zUx~ZMPAK?Su-^q$pU86Ed*WGG@~AjgxBl2D7yS@H);uL)re5@eNG+Vd-UP zy#-1ikk$nm1{{IIwJ6>I5LsmK1@7x{#^ZKF=_t+ffyq9dsuU5>5a5xr;eA603K0!p zf-vG3n@-2%es+v1MEbzXfpsZNy+4b9Q27wqfQp+C45Xx!O2*s^MEPOIqa*>&^_G%* z)(k~7h}4ql$djYrngZr?#Q2ZqwQ*aJ3R%?%sx(;6lx{LZXP=7^;MyGBG9!sx;IUTT z+Pqht6*vHOGxm~xuS|57ACPddwbI0R^R;>$X`oQ!J1ULr`QQR%y@(;D;}puXrGI92 zvjLoD0}O)xM--#I`&{qvIKvqQrZSvmT{4{MnAiXr&M;)2B;%+9hBb`UXiQoWYn1!3 zh*#s;JH+IY4U{{wdHqgh!%~GESvjUH)mgax!n}zfPJku8bfaOQ7CR+%i#!S7g!{Z- zy>z3Ysz*xjVTA{LqKD0%cu_rr$fz1JI$)|@cn<6@0YEKYPW1(Fs5+ym_^poVBv+6{-6rTv(;X(10n3b&?a8)q!8#0xEyFz7k~S7O?m`di!E4 z9gQhf$YHIr_4H^g))&PL%S`AC1uyiO&=-6rbok&&{1n=Zy5bOW+j=Pd`R02e2j%W5Ru%C^ zliao*dRTSadcY*%&BvmHeqV_gc(t5Q20Rde4&>=iMvwNe*ldNk1Ph}B!r%KGOaZwz zh=|eM8YQm&VNfvGsUwEIF)8L!0cLDkVmMBQzu{ z6zoJ+yLj4ovlP+|WQ{uQdL zRW3!IP2}n`l`Hid(>L@O`hi}xql{I+APeiigSzGMxpF^H{XA##R)6vJZ(G{z+4K?jpfdSiJ1u(PE1*A@x-)#f?TwzM}DvA@SnTrM>hn$1r z6Gt9S6(t#~W%Y#R_xUtZ&)Np8`Ky))Qn5Hge*X%DMP&gY^>uZ`-66%XCS|bNwZJf z2Ni&)X^G#ACNbJq)EAcOYTG6fD@JOePBH|>K_}pz7XtWLoFvP7@m;MAi$c+dQL?b) z1U9A>_h7ODhMXive0-QlVMYbnDw^e1)r{TKK&jsDVV#X$^Px@T7TmQMqKtMe%};2A zno8s$L8Q{eVl~97wU0QTA>a8c+4NzR8Rn{0w$0psWk3$bC9py0%f%mG)rzPQ+z}5` z2lw6#+@b9Srrv;;J{C}HeQ%)LsJLme6y>qIuAv#jxZ)N{GD>sT4Qz|{u0CRMER^4; zOaRv{##WEUYdOi3XED;c$5HJ;9o(^A?B|xRK zzH9kbIw0bsa=D>rGTRxI4n#`_ttVAcBdsIvYL_%D;ImO_XvB(f(}E(AoQr7tHuL((NVOMBIgl(u)F*sY?y z__ocnLGx|*+Zj2-2L?Wk*xIUcTeMomeG>~EwY;x{us%#`#?L;t`BEa(GZnMLQlc+> zF0wY|!6^fT5lm{^AJ71Btp>wG$~c|*oap}Y@~i`suq`{k%Jn|tWqzr0frm4BIJCeL zFav3z@K^(bfe83JKCuh{tXJh7i4J6K6<}v>$i%9Gz&K(@B$ChfE}PFg7${$0%E;QzGtc&LK!sK}jzZwU))M+6Aqw176)a)&X++4OvGUQl4M| zd4x?n2H(xlE0VWBS*2}&UMm}=ydbdRm9JM@nMzVPXDbKkhL{FcjmFbZ)91}+VS3+6 zu~uImI|IaRe zhD_xlCchUyco zb@02#H`whB0aeP4R#vO+eg>(aBp{IaO*vAXf>g3y)zaF?kmQX{K-xoK#6{gmn~b2t zp%qDaV;g{mMIcXbHpmz?ChGoFNl9?i#Ou}ot$xH@8`guv^-9O`_+A^WSS$`8f#Wg^ zij0>z*wFskaQ3VeG?jdcjDB!EqBDVe^JEy#NMLi$n|#HL%aXzRJB;5 zYXk64dd^GQSPC|jE%9m`)`_5RC|%JeS)p|-ra=Oj?KpF{9VZncZs4#g7#J37*45HR zPZvfO-R2JaqY;ClRT9Kd1DwjV9(xnZOCbxSFC+5`_GO&73ta_gCT2VlUV`szjDz*+ zmBrpV4%RZohob`r!j}*a?p2QZnMy#jE5ISX+o%DK-nVXiZ+sGcl$d#!u&MHrCLfwe zb|V?qr0Vm?EWG|KR@tPi*G9rbD8l23G>CMsY@!Qo5yBPY!Bk(~@`)D*+IFMiA*Mb) zSw~fkvk`;ZuN#`Z6R2Uqq)}ptI^P4OrIipKUEaesBUcy%X7`M9u-d#zd(7I&rH8b@ zyK0nIJ*tVQ3OF~6mw{bs*Sa$AsE^xN#+grcwg%eptA(G-lvve(E^W+@Mkg)zhCUXI zZg*Tk{v_0a@pmCi*2$*&A-fBTJN-EG=>k~|@Xrtzy0d;EL8qK6ic~~HTbaO==v{?M z17#CHzEL=@aoLh2YI?ITd9TbsAi$q7h&PIlr*f5KT$PJCL0C&Uk+-yipoUgiH>dSlg zONdQIb^@Y1{Pzy1X< z^|oH@eVH?rHt=wP3}bdtSPOS9%Zh#)5JAEk9fj4JM+pEQDFK;EcT9njqJ+k%!G9=K zx(Z?m&4QyH07|eXU!RR}vt=zuRS(F5vQzW26Mse7qyMLC=LiSE62>_7!gY=P)ZN?l zF$^Czq%nE9dy{2(<=F61Iuf{1;$F66^?y$A4=iu~znT(WT*e!O^&HOKBwx7pv*z=a z(ybBB9?vfy>}uiVc>E*Jr`LNGz=6K#Kh8!>OsJUL7;)W(Nr>yZk1-U|>kmNLt))JD zR`(!Dcg)X(iv9fz&-WxHg6L;I#|em)DkAqwWgHSiU>b76a1m|IexEkafP>{d)@m=pDl z_8Hw5h0^^inUPW!fZDMR^)s?>v1UXLnYahMqMeU_?iKBjNuqi63S}6)DV1_mjf|SJ zIHS?2ym!lw)T{!F=>To(Iv~sdo)KvH#ft+IoR^6chBvg|6`@UrWAbZ#H{_8zn9Say z0NVuvfa$0mLPT)V`Xa02c38=1v52Ny+n?f`nn+Ib%9O75xK2j_$c-;%>c3bDbex3>k48s8n2=_b^tYw zV>gCZ*)-G|7n_DWXnAHjEfXwKtV{<)1mn_-6vmFXLx*>TvAv>A#8 zV*~)Ku%%KW%Y-uo0$XD3#|kZ0#kL!Y}I>xw?{`J#H1*%eZQzWCA7 zP0+x(d$FBjzua?hTL@E#CPY^ODNjz29vXUAlNmc96TF#N;^{{!?m!LR)e zkT>)(P)ZdO>lw5&*NG`zlu-x{Sa%4jp(;!>Qb1%qH57!U=1C=xMMJ?N4>JZb9={D| z<7l{%yWoEuU9_D+!>!ebGF1bXXR zFy2j-Rju!}@W{;S*u`iY@Jo_pboq+i_=)4z*he!M)&G}dmoR0)KMa@3fBoVy$J4^n zBK{Sx);%QYQV%atA{$gc&Z*=JvSIw6%mO+9;k@rD+}PhNh-)zLZ6;4= z13;9g6BQtT>@c2g7Ua?LC9nY@kJ`dIAV-O=IQ*Y5A^gw(U${}bJsK+FgA?}+ z+|1isUSvr90f()angoe>dA7{w`Rw{M%SwX=i!k6S$u^*kmR}x4BvJ4h-@psVQsbkP z-yIqsFdZYTxk)mG*)4V@I|-1b4&v_lQ6>le1peT4JgDAIbV@J$>o9Y*h0qLwI9atTUn_qTrhy~i+z@qz_{I^jRMbBaL(_>!f8r{ zYvos6BI|;8x5`x-c&OTsWO)Owhc?&Ic0+mTLPo3RgenfF9m^E{gnflxvVvWQOjFWl zz-VB0x?}FreiE1+IS<}N7HEU&^m$97oVw54<5Q}*3(tb;K)oe(R~9e7Qoj7;W1-}a zE-y-+tDAUMQg`0__>NhLQ2*MOVmk|0W=^d)6nPUEB>k&j~&@tg4 zl#ZDoqc*M!PLTP4&J!|*G(L^cFqks0wtNbeyxLw~vn}O~$&((lB*5{DR|s{Ty==(( zjS&F|Q|B003NIqK8XDhW8XA^nfbfIa&C=P8t%ivNsIJrCGTYidb>MNFkO?`06SoEV zirl|PZqY-J+PQP*X|Rtb`2{C@d<|?lbqn#9cY~t*^(e)2H$C6)AWLXgqWtHu1Ise2 zwZ}LZwSj~uq*xLoBLkviZAzd?oYoFF7w>B)2;*6S9%~lw`^(~iV5mOEpTwOOk_Knv zod~LCX=it~jerv_%%eSy$5Fqgc6`F7#;gJ}Ry z0;8T>4-wqBgBxf^09bxSqkOV~_y&B^drI4Zb&5S84L~S?28%L2MbuC}0-DOV0?q6BA~zVr{EJwor9!D`=!ey` z@{!N1p=ddUadirFnSv37)!^;~S#yW^Yg`@!jxOWz8isae#NjqLxaVUy?~cN_H!_?Q zg8s#UO_!K|lq}&zh8Snt$b=dtR?Xd4aMwla(T)7#82OE?;D+$qO9u)_>8E7!cKYcx zJ`9(9TLNkR{E$V;yUbYL{YQ!^Jf--PxbO30JJS_)i(P`o68DnBaCjb1vP%cBOMBTN zoE$|$Po6^vCZ9G$yCVfmC(4ZJv!*WT0VZ=4QFxzMpirJA}>Lvz*5QMq$WAT@2JBKLEY#kyunQR6MxTZ=C zVvf8XJvxYzrU>F8$rvoLRKhBXxv`oE{WB&%+#)chK)f5)wx`TuC#^apcGzHYG;&fG6#1MdAQ@&faIIq){Di`1k9 zY7%(jL~o#HiX#HoJWFeiDLUH_Uu=|Z)u~DBq%k&d4r+3{2?N4PJY(BTI9PXl-eI5O z(nx8BABE$p9N}yrqJIqWh^VoFYTn)>(0TF`Q6t#BjeT1U%WKI_A2v`CwDTwI${Q*$x`-oVxHXEH=$vXFFl}R(Qw(5D)SP)xS~Uh8r8@m1gJ3>gp1*78 zI)is2UBK3^DiIpSs(Ay9FZM_nYXAQ@1tbBiW;odkg;Utrufr)scgNYcJM8$~Ah%LM zq~!IQ6~pbs=Y$ewN!6l*fL91TJTpOx+Y(;r;NenDdG2fU58Oshe zjJwGc9tdB~4kS54NrVRu3%1ptD7X*XZODYj^IerBZX2}a37w7R>or5^h2i(ZDzmR= zX1w$nOwXW}5^6d-5M`zT9>tkyN@hP#4s$nlJ_|eNc|*5<)p)Z}2L0Pag2+}8?+`nQ zN!A$>OiYwuzl2$ds3cfI3_krf#}CCnT=BBNvFM7IPdu4U7K+oK#}C|(FX-8+YZ1!$ zJDBx?<(PeLY34wPOkEP(>d^LA76$DhG*?Gi?|v7|ipV@{SoLpn4^eDp=3ITfmMwit zSP`ja4Nc!5U2C%^s3fnSBmfvWAKi)+ojI-~}#}RR|c;MxPf1{CK z7A;uZe4E7mgl6nfUGRk9@2ZMC^Z^Bl$m&5ZXzgs12-FTdNN{FXZ@H<5jkZ&^r6>AZ zZaS`{h|@3t%pl52*#O6*E>Nn?(R+G0$ZX7Dh&TY7It?DGuRuB;&O-F8Dj1VtzLN|CStkub;xIk$u6t4`nkfp)+w;tjLuWEy*| z2x~STM|;fm%jDj#gLCpWiu0-q-k!bYgE?o@-?ojp+PypNfvyaotzr5x<3Rg{30a7y ztoHf9{e<+=z;?V&;;S^E8=YyR(bH*k=U{XImn$4rIrzzFmly&fl8Xsnda2A2#`C}h z@4KtVDW{B6Y{4U8r;WTAL=Ekpj(s+N>!u$7NyWA`Dq7ne2{$m%3X*qIB*Ts}hL9bY z0Lx>)R6`4|Cd9PAY94TGs8|avQ&)&CBf*pn8My58G`vh{QW*9F=n-LS1LsF?!+jI} zT8n(1^Vt~1*cb(;nYrg)`WN{j?i*j}i2z^)?^s<(H?3}3*py-AxV5@tbunADe+vxC zbI<(|s_@g^__X9d4V7bl=fQlnV*iHlJKub4x|Y%b{jGiQcWLClbS8ST==q)F*RL$P ze>$Bd5POXVC$C=_x*y!i7YieIo$3xo?(?eCN64hgBF5_TDwB=e`}771?bUi?yTJ!B z(d)PQqGUPsxFHqHySBYcjlk!&rN9k_ij}4ecT_j+jt&%h*KTmDZ2J*1Z@7 z-3GR+3o#isc=4EGPyI1OrHb#A!?x{p7-;U{nvccSx4WR^Dc3+DMILCa6IpEg z+%LG5ZI4E8E_fxbtkjZ#4X*y@$Ofxt?qE>qTeqb**ebIkc8=VU(z0T%!22!9%Ec9S zLIOfl^Q+u2n@4JGihNgXif&s9adhx9FZsge%eX4!8j$T#(?W|`)e{Bz7U8`e#GqSI zTYzx7&c~XR%e&r0r}cxDp2Lwk8vT>0#b9qRVZm~Gn?~G*=Y}3Rpj+Fq`oAST{4W8o z#((&~=wHHr(eL$-GZkhE@GHZAA*#Vv*Lsr#;(RTcAodG!rs?Sa^xVkw^DU;HU*qri zeYq4Q3^KtMACMWar~5L0BScwmlD^gL!?4~7T0@DaLJ1R8csYLB!ex5nC$iBGdrDhY z@;z7hy0xT4WL!Y4aR7@=%?579S;^{Yz4ApfMaj~j7a{E5R8KZT3wyRaa&ZZ z@f^Jfr|W4*R7T1<9-QNJaSlvj2CM7WSXgba!sd8oL#cpx!(v6zDRHJ);RCy`Mh%z& zb_uonScia#W#?piy^Qu1=z`27bN>QcU!G?0PdmvWJ_1FCvLxEOsGpasD4xYs<_yjl zl~*ju@#b210JbS9BCy*@Oq{b_ut(+E9e=4EASoJZ==+wFC|giJcekDQs_}((sW`Xs zWp_b^#m-*3*25xY?(SrVd#-o5+xO4V2h0~d{s3oq`FxOlS$yLP5FLzmJD4}*U~ifs zvWo|VaKHnn4h~EnIqy}xC@g6i7)$~`Ltad4*JBgkFiR+uysH+Ex*v4DM&Q{j3zN;3 zfUTFc0_ z4xT2+rmZkiKaJ7@Fh^Px<8SDS4j0d>I6U4?0OBn*>4s{@oS@P)d7bzgk(5iIfAGi z^%dGeq#Fl}wk%E`UFc|9(Jb&9W5ZziC$t#;vg-2c9!b#FducXE@_rvyGdoxr&}o#v zJWCEu{ugwB4afWs(&Rs(eDb#|IfISzKg^QX@;CqeH=NFck1C7}36mf#umYf1HK!0% zKI!OQF+_Tl2pSm_9IS^G*5F9jQzQwb@ff0IUkCa`ULZX(2jfovoI3ylzwmQE*as8U zn&42*bhO`_*AS$%mf`=I*o8+l5W}&y02mY!Kft5>>mjqagkx;|(O{uJ=r1pV4+@+R zV2Y^apTpNy@aMlDzP6ej;&73dhRkrR4EjIL9%5Q-J9KC+x_kIwP zlfm}wYkgof>eDf%Vk*%CO}SJDr9%UFk?Do2G_xiHIhC}X^tVs4?Km?zbSXkwCaaLL zqsa@VWgR!qha$CKVsPUhGFAY9MUp2z10a2 zjLWcw&*%zyL#!i#hrmHLq5vEwCbDOsbQL)IX}#bO9(rMN5G-PEGQ!b4$6v)9Fh`ri zcLuxCdZszRF-1Vx95`~IKGIsh6;D8Vc&zvYZ)rj;2;K+3;GmT0rbC~@zfJ#z#_?p+ zp*wqjz0xDz;?X~6diFoKX#B*F`;k|LpZpGlANa4TjNc2zZ(m?ozVL4r-4fm<|CMXP z1xYy>;H(yelgR}w40=E;wL$leL!Cc8{@54c_z{rBTPMr$8xd;7mjrrS@hNB=(qmu1 z9lRi*71=^SE3pXsQE&`Ht3C*>3aCB+m6m9w%K?e87|mM&xZnHxzr$nE3m%JJ`0RhM z7yYzev>ZX!70ZD|2Ofdk#Z{m%uH!1O!$qI6SEq2sB-4emZ#))#^Ev8UKdo=f5C-Uk zo}572p0LGI#C1i@;xR-MjEmzhNPG=^86z;3f~jz7;3tEEpFoXQwRlZZjuUzvXKf$x zCcHvh>X)y=J2YH$t@j*0SPOdxwF5W+5Z;+IAlnS9D;8R=u70xeXtKP0joFd-7p?Rr zi`&;0A@_k+IQJ_y1YH3w!XCj-fBOV@?;53sD4aNj$>(6|ORUf<Xo#p&{bQ{x4Arv|Oo z@iY9^2>3g^DCV!1c)OpC(td_geNNWD3hxH-yYOr~r@m5)joIRAu6hQAtXjlqNCO!U>m;DPDW2cen41M8mraH>uq9VvIr;2&fZ%PrcP`+Vh!#LJecq(Kl0s( zA5(su{mPen@~hXyC3(uqe7g@n=c6g;Ew{dU+qo|31&3zGO%})RLr&36sImx{xKzVg zz=~)R%Tx4=yKLMdXOTgl-j<$w{lSy;&2W?0aE(lDaDikwP*1-kS^dOsh}c!EHkyHr zvp89uY}!6u-abV}+_3KP-$}l@+DnK1Y#|>)9wK%MOR(Uw!`GJ3$N-P|n+SOK4~MTI zJMY>;1~>zKIZCAd!|J%?^_no3D%TGHlRscs;tR&iAFw*{!)^+ItR-OsnRy92tRuu_ zzyw=*-3l$2viY*{jQSF5$zcj)prWP>_1qHHQ>ewd)VShiSa5BL&EgvXwzP&Z z3jv^7sVnN?tD#I;$kO|ULhNx%QK&4XL{e!eMKEqX0zClX24eAC0fGexN4NsXu{e_j zL1@7Y9KU7&D$or|PA(;f#KH0A^aa>>3wp^pC$vfmLMfXu)qJ2YUt%`UdG&SnGv8t! zFsbbG?03G#48TY^V%TGYKr|RVAjiY#Hu?ckf@Al_*&b9`_MplFXW#pv+M!#mh zFY-y!28|}!G&8XAASFLIayNPr2kB3moebV8M=5yhBzoea1p@0VVdGT z-AIQ_gMu}JbmQ(-t}$T-$l*p@fDTH5zC2kljNunRdk71V(-pI#v1eB2aCF5=n#l+h zn6PpM6d;4&D!(Fk@4`eqj_?(rfWhIRn27(#cYp%%i|lNsDqjK$L@$1w{mi$3f*3AQ zW0DaH95|tnM^Gp{<*|_EGiM^>GtWl-6b2}gg7tWCo(KhD2taFXrKG21(5V=-2$rl@ zh#%2WB0>=J21=W-$*8y+dloerrGZwk2t5=sVvx%KE97a)7b;6h*uWmPraWaqVvnZD z_DRZ_Czv?~O)G|DPt3GPP3Ynyg>GU(m%}uns{z{t_*e>E{wjqoe-%O(Fs9)w$P|!> z8e&mmo){S>nFUA?M`K7>8Ji;u2@*x2z+Kdkm*6br^EdjYVo3BR0T%GV#ITrIN6)9! zeYAK6^I~13DHIUrN3g=@fAMJ%Ww<<_yv+E8onqPU+2N+Lf#o?p0 zu#_N_V#R7td_r~v~Jr<^#Y1Kfwwhpa|MlE<}*PP7VsGVyraTmyH zz4owg~zkBY6UtW<+di!xNQhA&ao@gKbFyt}c(vWbpEY9Gvd0@(U(_AN~uNFMeQ57`iB3W0SUq#bY|= z)c;Q(rUPlVJ&xS|$Jf#LhX^Rim`s;r#HvFvAJ`nmUh!STt~l1c(9pr$1ruHbPv4Rj z5dMuf7mI+z*YV({`I}aT7+lmb(j#C$^f0Xep2yp*NtD=o4R)xXnUqj%^<&6ra}RvT zj@S;dh=+y4kANqt>}l|(6?#OXPB5dQ6FgTsp?Ax`Hz4e|kLnjrz!mJ|0*eZbCOjx9 z#2QXElgHU?b+HrQVevQ$xEfd(HoK=LyhVfy z96G{LIzYjDSYZqlhiyu69&mOsAW8jSwXm9JNe>C6=u@;H6RQq%!O6*F3Y=KwfRpK7 z+tO`oDQ0QzSo}O-ipchTdW>=bA&IFRG2H|qj-5ZoCG5#+*!uc&fMC;_0>}~+)6V23 zmY{@O+CD+Ke7fh3H>@mRDqvTAcjVuZJ8hz;9Y7<4Vj||fsRYqlGyfQsh(BL>=|toT zpm09eblkE1FZGhq2s_a03UCANI+$?dQ_;vv2rO(*>X6VXK8+xXK!D4uD96)bDXnsn z55gVD7YP?+V%95A)ankG{n_Ej|7VA4m=Yrtf#1h*04CG7L6de1@tPyHw; zZ<@auHgs5-2@Ym0E@eaR1rJlif-Z`Qf#bh!WjQ;<0g6xsmfp1AT80%c%QoNs3TTva z$I*9fHYcBtQ2YZkwVALldY; z-9Lo%Px(stT&~bw1Uoh}cTDyK7SInFYLr$!CMMVb5*vZdULH0pdk7N1 zBo8E~QdR=hx6A`p5bUG5pW1c4HQOXV66Z3KKm9byM+7a~@<8gAjO zlk6>cy#%)EKfoW453BwI%yn=&)qoJkhb={oJk)?EkT3lrE>#wB$uFWdFf^}pWAoZ0 z%xlxkyquKt7iMOl$KK&Ph`C4nouO*|EESigS@t$I%W;_H>dY)@fV?nsoHwtMNhBMa z*QPM9l{!M0zVy)E35O;V{5ksnJ$4RRAg;i8Tpxl>dJedvd?HoW2X;!6!7CkahO-N2 zU&xKYU&&Y#P=+;7L+gM%0&W&3kT_fMOic}HfpI=jaq$zYZgp8tGscaA~7$Knoozp&G(+a=!0rkjE z0DEqS;IIM;Bd5%(}x^hfr&Pd6b199B!<$10}0$j~2<6v3D@(y#K!^=3}q2W1a)|A90Ertn}|=F0D1+dP4@Dt6!kG+8ApNt`6yE&qx7;o z=w;le?Hw`2ttvq;Q)m(5NvW4DTVupg>1618X>7`XaN(91AG)J6f*%a*B1qtT$3 zk;pK?LN7xQ-JgTVfF2;z2`0^Uq?hp}^s>PYs;Rxn$_}W1Bk08h7y}`epol|8Zif1S zMn#FR#{fNa2fANFv_yhJfW?q{^&WT)3j#DWz>+%RnJ z3gQGmp+%(gk0N{6X9|i1*{}yJ=}Um~LuRi}jWHadyvP;YW_<0V4g8R^00t2G z(-z#sg1_uPpKOse1!o1l2bcjZpnS4y=F#G-6R4S!F})z54^#(%FM(cglnKMZBJgRv zwuINP)xZo%)f^g$d-=d*BIO=scm~)j_fP{#zKH8yfd%2wqPM!5qV*KUe%ecVSt=sP z4re@uOA)0&*8~xeAt^vhBP`l~Tv$zoyZG7xy?etog>O-EI+I~9{R?9kH|SZT zrdR+7at74VH_I)0-!I-z7fq4HA5&z@QoPOyM1wFa_~ z8)!Nt8mK!A+9nI3<4G>2s9`W2`0e2lP-{{Ksq)d4lAuN49D>#02mu1(C;oVq%HBY7 zz%)ZQ{8{is-9t4otrQ%2`y{bV5;lyj6z%d3{<2m?J9z`y_No*_zY4$p+WBh#F!NE zo_F_R$80hJ01{j24njW)3jqdDV^5&5 zyTJ}A2MG|89-C?ITZFJ)*nYur6Z}rt4thIovTzLAn!whga)W&hM)4qo>Gfdzn8Nlo ztZS*Pv$<+z1JacU-$u-Y0fe|q`5bxu&A(fC{nx~^aSX1P5rinb6+BGm-429+)s5^# zEer&I#_;=*gbeG$fS`GH5*ux>@cl7;h?MS%9eu_0?=(}7NbH)iDE55;RvBS)GV z;6)HnFGXAgR9TQPP-F;UM{1BE!{CW&KYRe^2p>`ci*3uoSu}0V2Ux02wg@#4DlMDT zA2um108{8PGTL4kK+-faXwBV629)D$O#|b|db1;gAQiYkMjkX)7|t))TPax^CT#kE zCMEBtCWQb!tZaHnxdus(YfxP`D%Dsdus08tvH^^)D688Pdn&2GDxn6FGNH`6Zp&K2 zjHKv+PaJn)Mg!|~xPrP}IEneTecgFKvv_3+eBEY27-0I8|CloZf`|dMan-k&2&b&_ zbU=H!(A@^TKxzXwtE;Q-N1pJt5Nou6=kfgm`}@FPbjw0-#cx`3q+nj+*QAxTO;q^} zz`>47;WD3$L_>(Ng4)cZ!ipiq#6d$-T607lsCbljc!$ld?I3*+IMhMZhhXxi{UXMz zNGEU1kFG@GIIQ#7GbnaxlRCI}W3n5`Ah zrm*jgb1i(2vC;4b9B4%2Pd*)TbA$HIP)0Ny66@VR_`0}bvWm@I&JH7>_e?IYt$3yt z4W#x6128eQKmH&dkeC?h%Z4!v@}#9b?kRFb=p%!Q!Y9RyW1pHn8^BaTcm)e$h?C+AWWkYcV$=bA_ z5Ib)5O&AYPlx|B;`NqLiH}cnMXoQ)mBoO<+XaWMixeZJLqAsy4gdiRvCL4dK(Pf}I zET{-ta*y$cAbjMwr~&rNz$e`IzH#u&)8tj$+jh73XQ+1WdjFh^RO~a~JQ#zwOK{Kq zrd46Fv;1>1+Lx{UGWzsL_0v_~Dr;TlpM9;9Zzw;V;Gg}c??s<(seU^5#L>eWRzJZ%C!b%s&#Zome`fU){WGf{n9fn?1`v z`^lbvR|%hU{4=YZ;h$OM6#txz{+yFN?QW~W-cR<=?EM7)%-(nUXEycAsHsP)O&#;Y z|Bt%&fwSwn>U+<~UVs+$Nwjc2N6L6PrAuBU!Q?+p)0}n)cJrXFAec z$)g#~Nb^UwOJa@VArVCo(Fh{)R1j1&DwSKc6;x0`l!w}iA|8SWq7cyt5J37QX2SOUejq2b zJr0Y5S%=5r>6-$YG%$aM;lg{$bAi{yz+)gud5dq3?EB=razx^ml(Lm;TI`a!#%nNL?+E zx?CW2F(YN>=Axsk_VW&__OlMF_R|i#x}3NYY8T3}E1`Cw9C27Eha7f>5B*Wj@PR+d z8Q$lxNbPZ0q-Gr!sT&z7WB7)X63Vp#%9R4jC5N5ibAOyOeCCgHhEF-HT246Z44?Ru zoZ(}Ck~4h7Vby-fVKIEbVUgPBaN72(IjI9zb5i>pwzfNLZFkt(o{=)Eec;Q1)H_wn zmjkJlzI_771s(?Tq#s>$zj*b8(xLbuQ@4kc*S9Hc*$XLc)?+B?4>`= z8++kT^TwWYSftK4EK;W&7O4{sr)u_R0bMA^92UwEhlO&;VfUpo*D_yfreyD*2NFWt z?Xb{h9QJVRQlZ#|La}q@V#og?r*_m~Q9JCg`@JK78APyB{QYG>Spj^&VM%tM!)n_e zhsETq!y{2ToMWc}G_*XB}28ryX_)9{j6!Cg+1O zw($GJUx!*%^q9k`4f~rwUG3TbH#u{A9X6pmEc6+NUFcT}#V!|$UCfGEv(MbfDW7s! zlutNpj5+MhKKzxu*$2N8(1o(!VWI4G*wuFLR|ColvUYzppr~Cl4oia93#6_VNL|iI zSvYvLfPT4ve$ioZa^7Kaa@JvI{>;}3?RD7N>#()g;k3Oo57>lDOdfRD+Uu~j*I`GQ zeenUCdjhF*Gg79m7rmHjIq$F!%X71#mX&0knGLn5##0Wf#uE;! z#$yhv#v=}k>>-C;jSqcy-o^tCtJpq=z4rYd4#iaaUWZltZih|T99Heu3uLbr$X?FK zTI_V;!w)1^Dz*q^Gp1wTlUH-ZVO4X;VO4X$VO6uwVKs7(!{UC{VQ=K_f0;LO#$gq^ zUM_awUj`A2+POlpGY+S*)AxpAV&>TQ2FhaQh{HlZaI6~I>=mO@-EkiA$S zd){Gjb=F~L{_MV-`O^+t8y$8tbK(a>?W*zE4+a#~c*J3e>yX20$N`5%YM;YS>d+4b zbdfsXut@E5SfutiEK;)$i`0#bl(~!DAI~|Naaicr3+Pu1=$9S#9=TFLzf?fK;IL{x z=dfx&O-fYRplG#m!-d zMfRY>?mLeB-+`?4gu_BP;IL5kIqWFA4}?w?%FKbB`RfIgt7VjnUQ8(G3n*tDRxPI; zb}66w*MYLyb;4nxA9Gkt9&uRcha7e$5B^Bby9E$t`^8%E|9&Lku@iN$tp!1uxcdDqvYTIRp)wYWct8M2UR@=@xET&I8tSV1B z>`PkL4h5!F#g#+3_%1oDDlRyzD$Y5qD$Y2pDo#19Do!};9eL&_@{T<96S*KxI4qQ7 z4m--Be;bOamIDr}mVFKjWsk#-GV{qC<$3|-Y60bP8Rfz!bH>g&x@tM&uxdHwun+wM zhaccmMix4l*EsR-auUb>UEa1M4vWMghn>-VKbfQK`NcHP^uNzVbJAh8^SHyR@u~+`&-+`9{%1W~K zIlKaRkHg|*)?qc|MuF_L0@*7W*|5;{@&n1aAn~v)`5!~WM0)Rk3{{HsZihvB#$j=M z{Xc{<;`pk=J}NI4id}SA#m+nI#ZDXzHHzA?qdB!B4tudZ|0ypv`=9b+H?m?jrf2_i zDE3aM-SA=(*)@mNt}70!U6&kIyDm5^PR=Y&3SwclZp+Uu}L?RMDR*VRuwkiLQpFSI@#NWYV!=RX}tuLM5pu&O-mu(&_z zu&O-nu&O-ju&O-lut!CQ|DQlsSqB|Xwe1%Q+V%^fm?+=yVxoMlfPN)I5875hx!|x+ z&N-|a&p7Nu;^e8kmg5c^{|+1f4yX3zzXv8&Y|nqs+cN90chU_nwn996mLzt?VYTa$ z!yeb!;Gaprtp0#9WyWElT+dJ}PP{@l^cXE_dzY{o7Ehiin$}xviU+}wmv3(A! z*dB+y*wsR@%Y|YWvtlOXbC+@m zI{3v<<4Usje=(r10N(4c3EyE8zQZDWy+HPAM%EfK^ZR*2t{2d+7SJy{EUqp(>}qiN z_j67zIxJ4kJ1kDlIxJ33J1kNs9d=UZE(cE3s56%XS&=&But=S7Sfq|QEK)}t_D($X z2LWBh4mhl0`y5Wa)F0+;pZUXpqFSyO(61KIFPG6T7tk*j(9b)p+Rr+y+D|*|I&kt! zp?1}H{7X5*M;#W*VTZk4d#~ihb~~(MGY&iDD_3&LmkKBs3Ml6?lrT5`qnz?Fhei2_ z!ycdP{^L;0Ds|W^z09N5Hr1Sq4od>(9Tv)2hf~Y-C)w=9-i++~a-hDFqI(=(0X*xl zwBg3pP)5~Ub6C|}aah${a@eJI`O85ZDt6IHsn~gk)BgC=Tx!SvG#AHFhlO(3VIPx6 z|16-0;lqCxP{i;-hsE%IhsE$-hsDWmhedYAVdrG`wVacgYdI&^3n*91C>IMT=L;xj z9ab%;9d@xC{qtNbhyOg(qGAUfPMP_O0yBS6V5Wd_wTyDHfO5Woa@JvE#^H2U`IiL- z9Co{~?|NWh1-$LK9*Rk@vkptJHylNRy;dM~B_kEQYXRkw!$P^>uoye%us8qoUxgY~ z%SnfYa@=8|9Cg@H4*hj5u>*gdOKhLRLfPZ6_rmYUkRjCZ00M0l!{%?irI_cvxThF z4tp;j_-c-|&tbR4GhfSjyY5-y?W)77^l}0HVuo(^>zt#j*cpe#+bM^=YmUx5nCD{G&_-kVqb(F9v4cClRS)NJ156Ap{o zF^9dPz2BWzwA*2?=+bwG=BT0zg<|KjVy4?CKAg+>*oX5|0W&VD4X^hTCt z)GmG`r*__piGi~Pl+zA-M<3rEs7bs>9Tv)AhsD4_haF|#_vE$g`JSBTS%-ykBSSGo zy;LZ6p-}9c!%q3+zs#9A?y#6S>aZvucG%^-?|X9w_BgC!vktq^E`D#|Sy|`HS%>!o z3d%a@u=6wfeR)f7c$WCNRzSIup@bp%eK|j892VtM4m;(e-=DYiu*0H!&|#tMcQ~D6 zeKeqGQ0#G7y*BHx&~FsbuVv__8&?Y`mkTHt9X820>`b27n=^UJVbyZNVWAvz*ijDu zKrXR^Kah)Jzr#Y=>#+CW^+K_$g<_Y>#m@YzoZ2aeMeT&cPVL~w@?!fPwn`oLV%G}A zt`v%0%8CWovoCMX>3uonlMajWafdxRI{AYEWu>xyFrcgeKI*W#@36z_zJm@+u=^c0 zh8=dn?*E~jlf6HbbF$lEq0Bh!C|3(8mkTHt3n=F^6tm%HKOSlklczr(Y7vts9Tt`n59pH7};xuN2TP z70@p@tlG~x>?(2k6S-7RI;>*H9ggb1P^vS;c;`xLl#y^{qN<+TQ_2%vTb?s3v; zKYq05{^~N0u|_((SEZKPavk^QG`mhha?^{h4AA{mjUTBtx#R90%SfWf?Q}DRxc!5> zq`E25b9Am`45%k`+u;O+@73IKfc6~OMUuM zm(_4cQKy6j>jXBqI`KFc_wMAc(wmW0{$p)?Ati}*`AJXXPQ>02h?HI02B}v#Z5pz4 z3KMOXt77Dixtyh@VJh12{aM)-XHmNWQRYK zY9r!HJbFe_{l%PJ=|!Eoj+5vr6wy&w#E6jZ-P*XyXFzo>we8K7`roUd{8hV@AUSp8 zq>-y9ryc4AVI_By3hPfgESXONshr&*>$ju+Fq+%rkRm% zXWZjr*C*U&Ks&o%$Eq;6-D(|2%)9OlHp&qup+(sL7x4WG<}e$IgCRWx3-oB`7k_ zb$jmDmWs+Eb1+0kcf!oF5E<#Fqy9JO!lPwGCyT;eOpECl%+q4LNmp`-j$EGXtr3Ux zFXmaE5tm4rWxDqPLX9WxHax{ei;^GRUu*ojZjhHa7A3#_L+w0Tn1hjBtcyjgws^6O zs~p=B(krmKx5%eh!XhAm27jJYu(^J2>~FUAdh@?veli-o&O zYOBI8cc)_}nJHb%)WbCpS(-J@rB%IGr3W#OJs!U!(uF_&OhJfg!Okl0Vi z#RGRF=?=z2*DL*YIYy|DI6zmKSP)0>#FxzPi=yPWbth@K#p%yduu2LgdUZ2<6t4BO zDse}ThZ}3SIz*(Bwh^zmo9ieFws%SL`Omc_`#)MsW-G~GJlN>WEK?;fMOW(D(=1G| zd%uVbLYScY)T5x$`Y3vihU(3nsWv{-Q829qs)+?5uS8h^2%pVz+6q9{ae-aCH(Fw} zd;V&=-lAsr8Fh2BMb1F7B>C(g)U0(MeeJF5$vEH^{+u|sYS3?LT^>%9TUUE!x#?ag zzI~Loj#jM0V-s}dbtFrZ-EH`bJO(J&AZzmqJtO($+z0t}a-%0V0HUJ}K4hU-S+}Y% z)C54z?)A4zZi~vBDQk_J6U`jC4d>#6-pe-hvj%1%WopUGc#?C z9)j|8E>ITEEvV7_s`pDIZeGQJg;mUOi>%y%r>tP)UdL)N8mPgp`>Us!EyUCpGhwfO zE53xQktJ>dSU98k_gBx?l5@aVPbOhDt-mNF`td>-QKmPIKU;7BzxvRcFOxh*cmsE{ zMuiaibr5(?e2+x0&tMT|<{{6VDr6YiiY8kN0B*9IRc%V(rfZT7hiijb5+B97h3mv z_#oCQQiF?qUB_))ueT4%xeq=_H#z5xNbbUJe?va5&;qlI?cBaqpnrFANAi(hY-@Df zZHe=}(k(a#=4~Y*>278Pe`R~umwfUs3GZLunhGts$6}e^swO``b(i+(JLi ztBNbrG?&nvr|a*eDwcXRJuX_~zpYl;^|dSiPO4g_D`y_h2)KR!HfM{ zlQ{X=KVz_J#j)#VmZ9^N$CGXZEO5=;zg+z{U)6RI0{tJ!r}^4If|qS{71nor{8YZJaxXtKX8=|r7?xsp zJQ#gT!K@S0q8|;ZhxONj_U~2tim6`P+`&?);!VlF{cIJ5pmG#q!3u6o0`n?SixBz! z)ib;uqiLleuRriS?TdwjP zpOeT#*(UDsrg8Xd=(o7NB*fPvekn-Lf;0;ni33RJ!Ejf@*^{y3l;P2ghR`kjhXu)Kjf`h{Qi8m)-T&e{) zz-u+Fr`}WQqoqkq;BvDVNee5lv`)i&tAe4m_g1?3TG3^wu;}B%g2J9=`0Y*Jj5%#% z$+N)=2b1;u0Qa@kufRz!rmFYTWLq`n6N4C5%?)j?Ra{w&lDh8QFLd@&UOj(9BFQ^j zhD9UZM8dnP#J&KB1z3TPF(%b3bHlE;;0vorwPp zGaa~vMV5K0=POAoSUyTa^F-?|>BPg<0hD9wQ??>t%Q8}&dVHI$48?8tMQ2eyeR&Ax;7!pg0UpT?w6rFo&`}UMPw<8*=l|T_yjuNLx2R=l71&ZJQ zS)&N4Yj#V!wBVzBcqo&K411tEjGa zy4393ND->co+P%1z#&HVGKv_4z{8cAUGiUz?R^eP(TeTjs)8#WnA=bO{ybF56Z@FF1X^kGLrn3v@d=GB<*cz ziY5l@@ty3I^0&gbvx%n0&a{Z{h}#aS+v{IkQd#D2blI5{wz>79Vl%uZW#3!er8lH( zO}{mF*SOe1aKxEjiBL&PI3t&0>O%SE-pjJly!7PJ3(*j|OTr z`9W0WOEvA?;S+;shIdOfSuwJ>iZkJh185u{!3)p`knMwMU#r=q6p10Ddn>FdR36qN1_Q+UT_IKNj-hb*xUeot4{r^Qj(tW%Ix1K~5 zzU|=z2iu3SUB=kgyMFE62zxR4CLZ#P?b{f~`8DtC5?2~14SV4)3d%?bOxz5pFP^2TS| z@JuS-$+4M@eFuvL)*bn))({Uz6rz~=_u}=FQSt>sv9`vgj=KpwMKr2^7yG%B zqc44$gADu;ua)HD?f}6|pN0gZQQwVb{i3$2H{zQ)$tf>kNeso4w!!UKh5M_InBwYB(EhoE%UT*tfPJM=iWEb@ zRbCYC)t{9}RLX#g$lz3xzNzF*)Ab*(m|knW;gM!dwb!h6mdKRGCR+V;HQUy;@flr~ z2eG4=E-iXsmE!hC`})ssvwKt-pbi$x5c_kMbK&B)=VvBpn$2hv|~)DmC@K=;TX@upuR97$r024b_*) zN!$~a$h>I*MM`^eHc5`*V9epw-x5`!k$f$}jumKy;_5Pr*XzGu(GaO7(ZjN^CU-Ne z;P3)NP2p3|{cV9A)GsWZBk_QeGUhhbv`XJ7Rn_!RK-cKR?#Q+px#YzU&3287XfgvN zIYD`{SrBDfg!Q(kk>Nd_;&4;J=| zg`hM#9LTW5aqxT)HbeM=7?L01yiTRBNq_F+WlUUwpXg!cTKn~ChINSwd(MH_w)i+d z$D#4&@c0y^+mauZ3g2tsK7kwPB6ETSN4!$FM4UjWgE}L?#NOh*O1(EyC%mh%sByWY z{-tWAQ*3e!EwD)z-$a&c1Jc%fMzRJzV@JMC#tN%tMu36BR}<6kbQ)2sCFz>5UsM zkJUDwmD=6M(K)$G`#2^=dlNRN9Tn|bv2($WvX8PoJZnxR*1yu27A$F3~DW1x?^ti zUfPV<)DGUW>mWrOK50pNOcn~P)hX(ahWcYy+-9G?WTiie-otC3IBCRfedc^4HBL=$ z!=0f3vgZ0+eIRyklgXp}mGU}95R?t`m2{)jPKqhju4-Y@J|T}CV^oKafZE~Bb^`p> zQT-!Txe*(<)m34@YxaN?YI07&0#s2LjejlrqMI>VgFB@bOeP~-1|Tyu&FV;8ooi(@ zB<2_;Vx*f|BzjT(fq`h&`ekQ~dUd2smOig*(JayuY_wG`UwE4%<*qf2TNyE9Q_J_E zDPgh`)nOb-(xi~QuFnD^vp3;G*xp(yx7Z1y*rJNK;zx3j-LR-PHA#|+^qRUx>gOxw zWe_PfD5jPyp&4T7iX}jkOjSgPM@9M~sS^`v;)9}WHRu+UZDe#X7&IuD)CzW7L86OI z<9L3j1ZJt$>egUjSf(sNLGfpSn|_o@&EtHjCP|3gSk&^BW(M}*RfJ>SzWzZAO{%od z8ex8pc6vF|uGNezjVy?y9^%_2yyW zNlm1sXp@G6J>u!)FD=vfR(op+by;>TL1JF8Gb^Zffr_Yt$hs{(fyf9w#rKcpuq4Q! z>S0+=n%6eM6iE4W3)t$Zw#2YO(8#qP{72H|+0~>sD|nZxu@cL}kG9Xd72=1P5pSXb z)oQXVgO+E|Jt--1zav>bK~&hRCb8&NUS9p;%*;&V1&j=~3#C!-#O=CX%YL-;izgkp z<_81}Yd^Xm?^R9SWYI$XtBOSv#%y&}_(y5_O?uD#wGuuE%|p;IxR=tmNs26#QL%av zL0LGVNJ%li4*)5MDV}|C-7qyykRWlE+d=h03-W~Y{*QjO1Idg>1<^vOnr6w;!)3j9%qCNP(Ge3XR7hgFxjRXf{Uq*^hq4O!xjv82^i!RUukWSWuFkhiaD*+jK7b&w%0 zkil-J{U!$L=X$uuA+Fr(+$)L{c?9@t9pUw(kgX+(z6DD=nf+RtY;K#!&{BlRI7_;w z=<+6E68ZXrH=mkd7NL9-gvrD#cEA=csu_gTPH8?lR@)JXRNXfuXiHyU!ded9nlX`R zl|&U+123lS88^&3rUF;XrzR9c!3lZ{XUZ_ClJH3{BuT3e2c2Vg`pT zURTgNOlV%b(YYh(dJZuye=a;tG__eI<(7e={xEI{1H^5WD%IpTGD11GXa!m)ZrhF9 z{#t?$MAHv;jWoLn#k!^0`+04p-@X33+ka=e#C-S{SDKyh9k!F~Vi!!MU*VCM;#2eF zh>z|t^0dlnuS}Y@pS(Mn;gjXK)1dt*N6`LC(EbiC;V{a`SX7y9vJqXMN@p6ni`V^? z{w~xT#--&v_3&S%wu%wo4k~k6VJjF5bh>Q568Gq*8u#F!5=~TKpt98hy145xvJlA# zo1zg1+4L&G8M0yo@<&zFn-#e%!f7mBU?hUMisg6l8(7d4BF;iD)dd#nfd%7)sC=vN ziY(OQUa=t8#P`vwmJJILme&S{s-X(85NSEfScrT2Bb`U=V{+12AMH~Ed3~n_cf>ucvMfT>@1E#q??*p&%VxqX z;8bO=2;)ZLjwkKir}T>z^v3_^P@6oKgkz4Th>YUW_payTSAY@rsOF!H!Mm~DTokC7y{U>1I8be_|!S*Np@T2oKj6XbCIayp%HO)~H@ z^q$ldichH9(IRG9yn2y8G2MZH{W8Yr18GbxUS!pZbX*@v`OsQ8%{$n|bI5=|&~#0jf7UUPce;0!ADEj2MPzC6h4=w0ac7 zM2VJm6nEWa0!}^~jUZ&{bMoml=P|WE`BpNdc!q78pt!9i-reL?jeZurz@rKCrDiut z4)(mzTue3!v*?8nG`j&mz+2tk7cg3(#0Q!^N>rHC7BBY1n6wYi%57KrBY1CPdbv7! z8ivuN7ocBzdG*&SFM+!2yT8-avF8K*s0D*8l}FIMuv*8fkI-|cv{;Tz+Cx44oocDG zy+Nxs4!@sqV_j_sRw!;i((L-~xa)&DjIG_n7~uLR>$|EI;^jE{xn^zkJ9d9E`Pz~l zjF_)2dARKZI1V%j(LEIT{{{(HBFw%gTwU|y#QeXdy*P@(SlF*CqR=W4dX#*%(^dp( z#w)`5$jq*nRugdQe^=i<`zZ+3>tDOAdi$>G3#c!z1v=n~QK+T&j^wRdxxb(z`R1)$ zThNiL;7xc?ZKk&(F~e|oCU4PzRqb_Faxxa0J@3(3 zaqtmt+}`*C@73Bl%;k-;Xp-Y4x*kCRQAOI^nRGvf3RrOPW{nk`6?G<+{@dct{>4&R z=KJrW$=zVJD~xI+MBo)7aBGGsK|7~MDsg3s7Vj!wqtwX}9s;BHKc#wQDxb5v)s>v@K4z6V(xh3z4VyvRuMFF(XjN z;Gc|Wn5cIo@7mh9*wLiKBOIvb_4B*>u~S-+-qqj5yGN69l)N48@0P$Tc`NCSYPmOR z)=GLqGo!q*EI7?+EDa2eONz zGgQP{fG_U99pzLP-_ySYrEW+G+SxiglB|1lQHU-OX=n1_XxzRv`RKKik+~>(HWvvFVBU!Q|sjce+?Cc})d^EDSzwJ){U*pd14i?z%?9g+yy>{oFJ$F{_ zyt9qyMeW8XEbeUFS-+DqNTfaaOtfxMz4s2<`qtXY{^jtcL$9bzkp)mY7k5P!Hvit! z-f<6wS)jB%e!VQ%pB{v};c z^q~RWEbbz)>o8PDT-Yh(iX{@a&E?Iza4Hstgn%Nx>yrrQzUbg}7@p7^`>xe(yRDR2 zE7{BCPcemtEG9zZv~4F%-r9dh!lf@7f2!l=#F-qdbh@=UbOT8?+{Je)j%ufSx*nkk zQkp<;b+jHu>sTGd%RkuUnzfafI4Od(pJCk4ktC&@RZ8-!oO9_TouFfJUmayx9xrYD zPKUhL?T9COWXGbVWJ|qJuG`TodTDuZvRzowrTyy0u3iji7mbdWDwZm+g>rV>7p-K+ z9Te3YsM1$HhcQzSYYxS_!JsGm8oy8lx4xC(rvXblmdThxpJC!)yaYvEw8ZFH_lOzH z09ACugxXFu$U{j4Br&(<5Q#Q^x5H$lRc_szwEWvy73yG&bzu!w%5oW8SLiISM>Bh5 zB01BDx5TKh%kK|5a3dJKC5kVYTgajG$Z)X%jcEa_V*x5G)&5^Jpj{<<0|R7>0Zf6` z@of7cKel0KW$=iqic_3ug{rEnD#8q$3PCcd&O#kmSE!Ntk*YOOHONL!s+vVSwa1Il zi+1ic$U3sy_=42iYAY#&+Ec2t@p~Qg38tm9w}+vsxRmCYL$)m)afGkE4K+q<6b-l| z62mzB)C&=<$xcy5_q^c^+j+Ig8%>rodG6tDm9nUzM1g)QBM=66*JXY=*iY}YKNx*8 zCA#7_Fr?^zDcKUm0=QD?eY1h#Ov93zHE&V8IOg_0&7cqfUDETI4l$tyv^DfX6yFgq zmLv&tLuxWJ(`J%W3hQxfYe$R5}y}MqYthD3dCCwV{M!vC11Ryohk`h$3Qg`Nu|H~I6BJYIv zoILi7GOIBtwEZ#WY3KnlH-fiiYG~;leH&&*3kU6iu3~wbR6o`hmF@1$o~WyPWbtj7 zx5JHaI!chxOfe1_IXT77U)wKn){?W~|ZXGM>+?qVM zgQ!fS8Bxa-^Q8;d_zx>LW#<39dDhD4rda==ob`1vGpG5liuKY>-I{`2BSU6urm9tdqk4Zw zb!TCt#$bkFj`y;XlJE*TiINq1n{Dg8XP8r+Rz#}I(+p8=--+~>f{p*(fkR+sw+p8f z27G%mumf!kuLhO0Qno<{xU^>~D!-3qqYkEkig-0HS5EN;z6OgB*_IS-PP<9Hb>waV z4F*`|$t(00I ze0bw|S8eI8$_HwiZyx16K(9=osyWhDr9Xd8p%Ot#Qt4lse6Fwm_PFwiX65Jl?^3(C zD9S^WrO5^I6r_BiFZs&8X z)_{iXB?7n&6Kbn6JRfP>%5+^m>R_|-P~`vH2vfZ=H{Ko5$)5_7_9Jqo@kH~EUQjtzZ7-wPw`ya)00IsQ)hNCCtLi#eE-+@A^RV?)dK2GyA@Dp*DjW81TXe zznxqHAH!uavYr;%039xAWgR=di!urxy5r7fhxS`pdCl^Ony?fu+L%RewlyM~4w^?0 z`5v<)ie$m5CwFa4y2o&n+`V{5^2KOf|D80V8$p3b%#d``k{((@Bjj&+-5YmPN1v?$ zCB|;tvy-{MJ_$|kAGBYlL)e1eh{?OM{kjU@tR@kG?Bmjzdtkg4rNqo`UnDqTTKE$L#l zz}7@8>PF$?&N0r2b%L>It;M`et~gzXb*F6{Ak$khA6u)|V5+EAN~J}n?zl%wE=109~x8D~< z$$c;#FaHGhX;wY~U4md*NfXtVm3aBVxH3oqr7DzHs2jXMJ4o+6x0HJtZk>5u03U-F)TVW)w7s(U`O&lw9X9;E;B~R zoLgiY6n+-t5WPq2@oI#zp|$m_5bvpOT24_rH<%<}A+GLBzN)_vUNq5M(#PH*z$J_V zHvI6mfcD6LH}4EQUTVJDZ24?>pIZZj+Srs-zKBwLAIj&Ea%-Ru}iDq$qZ z9l-WVEhVr3$M6b=HaikRlf{|^sYNU@-Iu&gL-UcoP;#*hW?n7+Su!APX~s$=b6`s~ zKW&@i13C0fyn}BG^Peyeh|@NiYfD(r?2;MbU*oa9X05*)wds~Y@6t+v^=#ZNHQ|`1 zoZ%C;A+gvf&yeOy9H@;3PN9S%3sPyje6H^0#@02kUx*ySQSzzJ;QlQvle(%ea7KR7T>w-+v3|SaelyuXT^`!f~eX0#Wd+EGVOd#)rlJ57QVl0D%S2I<)LTc1b zUh0QE{V;@hN1+x683iYRsZV9o>_9tTN}rd?j3ko8e2GXIp#}*S4+re&CV*^`ts^`eE3s84uKBdx`8j_9xwl~gIIXg zWOjY|kICHM=HZ;!nLD`W^t=ai)WWI63G9`kPNFCq;#w?Pvb8kIwa#RtTsCwqqKY2h z!7wy!3$X_3Ub(@yERuuQ!#Xr?9z+6H_+LXv7ey;q5f{=8(jDx)VPkbP_|niZiU#8@ z&6zrqw`+qI44E+U{EcXg*~MD0i#WpD;w8jn1SccN-1R~Ru&QwpYJokqEv`L+W6&;H z0&#BGNR@4oMxHcGuW~c{6KkHpc#1pHYzE;7QJ5>~5*Ba_Pl{-GnId*7MT)4<_h_3Y zB0cq=X|Hy?z{wm!aXHd-k-&~eQcoKB~Z*&^tuPU4u6&Q?w2t0FYvf>Hz~YF zZ2M$0N?yFq`+%=3(Rb4KZ)z$CXJ&UnmK1$BZwiBzGzKr|Yl9!s*)i2u1xS5$Q zroJFmJ`moWR@3RrOqbqSlJQbpBd@-i2Oi~4_+RIDHivZeEcC+XWfI?x@5m}2%tZTwWWeB1=Ur_41pK1cXBe)PE1y)dDZyxhx^%AW$T?G&gC9~ zmz$j*M&D0DXXIrh$0R83{IC|@nUu3g#7~>;hU21lbOWcWg~1I??Ie?!wab(x03Gt+&ppjfxql`)oU-XaOE5I<_k(%y&L z>5XJp{U=~TZ@iRYv*U>U*lgU3aNuanp&KV5rvEGWWH0S5&P;rYJ-)T@R{bu5V|6YV zHr(jFMwllf9Abv(ZC)fsKd2=wNtd3g{1R*ib-1YNstZz7?vo0Uy)P z<{Z7UJ`J|EJ7EmZej;h=!W@n#I9bf~3vu;Xtw@E@&)lS!<}#V#9RhAh!(EHfIs(Qo zTUncCR|(9Nq8Bo4$zf-(OEFp$PC4@0JHg6M!5aE7GO^Z)t_=|wVcee}~yUB(LwVJ03Oa_DC>2$Z!t$j8tGsd~hc z9CD%93!eHjggtb?fkXql4aQ)*AA0@O+A6w@#0L8{VH#)|5R+F8Ixk6#ht%WRV;n&N zi|TN$@(yMQ5t6<@!M-a2yI3I6LGPHvTrY(%>4V zLDO@3ZJ8!>ut0fiolb9rXHLZ_LMK*HLwRwdw-p4YyA<Neo$A`Tg`H^H>`GQ;Y9#q~Rwam5O*COV&`p`#)KgKv^i)64xQpD%P9g<< z-}G?bR4&U@Y(z^eZp1Y>XK4;LBBa+24SWO1YMiEvC|B~voowRfdlQXjC)0lHXdiV{ zVGA*LT9eIJO$093mJzdq6oS(2xO<1X3~6WG+>eN?7i+7E{Rl&kLXaP}nZgU+Pk;$J zJ8meUbCSYhcJ>j-`1lAzGHMSyHnxw5{Zvsv-0$OFfAIo zO{6KEH`792)%cHBx;CtYn-4W<4`WX+f7_BHKGLd8AM8Pnj;Kx;$H}ulI2_1hGK>kv zQ^r_kP*RfAD)ssnLR~htT>sZ*eIY#)J`pAboCRFHi@S!B8)UDZIVhLjre_srZG)?e zwzDJeCx87X+b6}x9uQ1~$ps1oXeO@nO3#)qSPJOe(PWnO#G#5KdPA$678b+7i6%zuovOW^id`mW^3wp4X+Z54HjU=&zMrm(Mhq-40GF+_p2&`!p zK^#>^cp(V+fS}6JZ?wqvKj~x~`eZ$zKQt|AlhJ3SfYVG zUhJ3Sv2HC)o2f?19wz4k**KCe>LDCzrLUxkl4Yq^LTix^S#8aBT5KtyKh(mbj)lsI zfhYQ8f0Sq*$1GuTN!4gaw)J*!MJJ{AoVDaLKZ0C|^?ZfWrhm0nG*BLyv2dC~HZ%wk zq#pNI&jDbSX;u*w`IL z5GWS8#nmTiFQwUIED7{7?G=QMb+D4oDN&xPq$m+G{oq zU9e_e+eerVJ|du>T*h&g=~6+qSP`_R=0m8u3VB&Su{}%<7Jk)D+RBK6@+B6{*%?pS zkgHmm`Gc-WbAxy9qJBcb1x4GAMaV?Ua*N03#QU!%S_w4yX4Zia+1BJ+kPH&l%#C=F z-D!&B+LOy@!CQF=&!Nk9&fEgYgNSSag9J=LoW zEc`9oIfJiiOI{$-R2WG>r9BU3=w(r8DRG%LdTVr7lk4m{Hl6GzJqv)*D)JP!Rr9!w ziY#uk09Ku%sTK{+4uJJ0y^L&KdqflhV_GJ)D5OdhLPj|XnMl5UQYNROfqPF};bkZ? zVy-cjoISuG3CGQ|;D*4SJHMM9#*aci>28Q4#ezl!BP4v}lz;{8w19?Y%Y5zF+AX1l~n1fc`7fjaxz2r9I-ywV>fy>hJ3MLR>- zO0t9jqx?weljR76jVgLs9e897N8=}`qFH>oqA@Y%>A5jWAb10X$j> zh!(i3lPto>Vyti%s;lHwWoL{KkwGY>nFpoFCVg46ow;>~#dbWR8eub; zV!Nouz(gb3n{5i^;l#=_6tzJ;Ji9K{LTrb4IH*EoPskbQbAu&%uUj^mxR}h~-9|x} zWN{m<4TN+w(6%UTm?-G}`G$nVsvX*@))};nh{0w!9J0|#{J=ZquuRfwYi-!oNfQ+T zTZTTs03BuUrd5MMXSfN(Iq#sf_RPGbmPJm$j0^fT-?X$9OpC_x0;a`wJj8bSh9=I0 z%&=mkiSZVugw`=2hmOI-u+p-CiD?TH9dvQZOpI18)SAr1wB;tIy}Ak|PbZMrfViz> zV(|86Vr*I}6NA(;6GIJVV%ma!n;MykX_JYOI$&Zbg{{dPm=l2~0>ePB1ajBs<}n$%a`7+gDLI{3JTz$_4H{*ngA@LnY;EmzuDdL?+fu z5jzlra)EA36iwaZ7l_~lGsU7pS1ceD%csskv8YC~Dn^0~o$eP9f9bqPie(u(`D+<4 z$Q>whK{QB{g?x5`1E#d(ml_jkqfcHCpRGl>Lo>BQOmvN_UF9Yo4QiB;N3(a^VI_i^ z=X$gXj7r1cil1JT9)9)XonfAh%G|S6l5c|SO+1_7a-q{a&(~j z#a5db0397X|8C_wk1EW9p{y zM;BPCal!$+pl*iZGSQ?rsGAu{tv%2t);aFMX6Nc=H{vX;ZgpAcf)!&~*_DmcC$4M; z6_gFt$|GwCzdg&{ZI9nI+EG%$G^`GdibZKK0gOSICZ8qxo zun9n`Lqzg^c)g;xP#o&eb`3_M!XYkIXmb4}{P94jOx?Vlq8s%u^WgfFnu_=KSExT2 zcPL0nIMrL7>vLt>L#Hy~q||bzg%o!pEI_8#&D0I!OqpfPD(IgiHR0?5CgQV2cmSNY&g$&*1M&s1#sy6RvEQWt@7(#fT6^A&eeoee|M(6^eW~(Q_QPx0xg>AK6TjmH)J#q>hx4-;MH_BzDI9TzKPe;huCFtzqq2 zKY9&8bM%A0b)jW%!un8`yWI%4i?w4ySqae|HabLmj3Ptj3Zvk5F?s2PvfcIq@5g4_Yq^~M?Et{KGJ&qm+IWug=pF15@HX<4N^KR_w@0qSxhT0%GWLmRb7MVYXKt~Vn1M2$vnhR`r7 zjz--IVSXTZd*k2y0MEXJKF1GWD2jdny^tm{k>Dp1vBUf%Oh`U_|1fu3_q)nCYD?nd9Qz6hTlk+4F3Y8wH%`AFdsFI8fl!YZ&9;&)Hujq zSEdGqn6ac;wxp$y)cPtn{EXzx@RwCBHT=4AvS9d8wYi4>)>X|6f6WblL5OKfgW;#t zJj0JqS1@6Q|LakrqT#3WeP&ixqTKM?CrZrhq`D$`Gu-AYk*q{!_`Rb@%MHKx+(HvB zPOzl?g!*Az=TEr85@NWJ*9?D!zLSlQD`^-^BNPTxPcZzlsHx%4=Udfa__5)^@FQHt zgWbUw48JD5H(g0&f>JR1%qq?7o41LegWa`hzUE!jV0ORiuRaxqrFI`MpLglirj|)$ z_ZgTA*nQf`3a3#Qw>+w$YQ2VnG~R^}+#Z&XJnVolQjyf_&m(5L9V~izb>|0GUq?1? zdMP;^wtF*dHkK+Ca2H3Ls$S5(t=1l5*Te}nEXq*);88e4wb zkWt-k4VQ{Y+n(ra{BcKPX}tqsa3rWL`g>6NgL4o5x3@)XU#x%RqwW1Kyb$%j5Pk52 zQFG||u^rQ`iRYUSepl2SoY;~-JoWhYE$hGI@qx*yZBqjit*PmWv4K1{hthHrDB^8XxQfQiOKmCv((me zn_AnahR4T3p-s~hlj9Qut>?Cn4sRNs5-?%d1u$(}mX`se zZ<=lr8XX_sZq-aqwE|Ge4uUVWVq$Q3vNbSntd}yf29;7bjgJittC^+L&C_F>vc$n0 zELBbi4R0yq8PDU}TjkVEgK+fhGjmd{EW$wI+e(!W4G(S^7@lgCQ>}RGxz;9>p;X*5 zHVux3)S=eq!RgVdft`a3l-f8tzGlf#=!iAH3hG&EMNpPp*XFTZJYd~$(gQ-uXe(;b#NG&nUl_5AiS z=DY;s=-Fq6M?<-7t;xy3EdiGDl;}^iHfFQYwDg>oY7K6BW?)cRQ^V9X zHMnj2)W0y8pYgGQ7SGQ|2!CLBs5Le<%)?U;4}8b_);|4D1_qMHH>`bnU_-L{@wEdR z{>f8oN!c*4zBTpeEf#%fVto6pmQ99+ZnfysEm@7htoSp7lLHvUfl2yv;uc!)(D3Bo z#?jW(pVa=PCOq?432GS4NPqu^=F36Kx<+G43uEgh^IcaPY^pUu6JggpU$kke6@ba+d6ht^CWw9&xXwDtAC)cC-riPqp$3wOMotSJOK8EiKxgF^%3W27Se*2KW( z!EM7lOj2g5wS`IsCnj4@4Nfqea0TnrDtPYrCO4bP6Xh6GFw|BDuV(!$;k zkEz*e{?NeS#Ka(_cD5!)`HhG8lU21I8mnn=sxj&F=)jhV!EJAscqdu|&p$ufdJgeG zZX1F|wg`88+jgZQq_H7>ab4Sni6X+2R3vS9aK1dM7#?O6)<*sDRczJMEtwTVe3g<} zx#{7d=OX0&9ITI`BF{ztZ2B!L-|<|u^0~LH{D;p)_q{ES@F}^L{jPDzNR*#g3Hw})BjZej`v7z|c;i+e0 zS3>1QArBFajkPvS4UCaQ>oIv#8t`<)W(bkQFhMs4%tz$u_@S1J{oM4;_@~j>Y(RWp zJgG`r6Y=oab_UCKyY$Y{gnkgAv*7;8NnX|%nXTR?zo#z&{OjcpkJP8HuYxicEv zvat4v~vPbn=^n?joRy4!-7KxBMVJfZPFITcGo1e2BW9-3rdTf#y z5G`yC#Z%+k?;CCHY>mca<3p`juJ^(CEz=QAer9;6g*c}Oja6$Nr=*FBcqH(&L<&Cj z__tVO9;dv<^KypAMu*2*q*G^_xnX?!6K3qzILWm#z3D?XeAbM&CN^Or(u}l{x6jSU zG2nB4=|bYettqehndz~SwCL*bEz^@^ttll=Z`(dMEgf`QCkYNr7#^X7hsp72+**J& z&xouX<{Kr-yZAjIKN-@p78TOoG8qpB&Bx}O{-MjzDA`zPu+oNyMq4sRMf*F6Rw1>4 zQki*)m@xB!W7DIflMIH5$*E|vH8?>)v{4p(>X|fA!*qH(-A@VZ(10rgPlM74eqG-Z zO+k<;DP(MaJ{brPSu4|otiO^_04f^FVtQ!2#i$zBL}xfq#s?1wiIBRjMTr6TidN1AEZb?%o1Wi9|7DNc@hTJJ!75B| zq{S(9&3G}5j)d2B4rosR$8mv{mKuod(;F29N~UoTU2ORT&3NTFlZG4Gjjb4y5yA{+ zG{ZQb`!p+xAARqJCj(~IX^)OgJuYEo-I^x28icsWilmA$iY-n9(qIRlv^k>{8o+!F zjvBb0&~=Ie-;pL{l|DHAeD4~s%7dvutp94?vb^@J*uxF{oG;aB{=v0=CHnECC5DHxM&*j)kUVECn(xo3Gs zIU9$!7?DW~fWkvP++rkRhU3;SqzL*v_E{nnAbQxPj+$gN{oHMd^e zqK#alY2;fVkf~fDjo1MBr<(lSHuw0XZOUc=!J}dMrWLAYg{Nd$Cz(BCkFv~d!}uZM zxhx^me0jShrIE2xN|g&>a3e9Ac`4iy3ltW+#mvTHTQ-WvCt|JC5gcnNMiQQS2GpEdDtMMm7f5x= z7F!cxlnV`yF|G5imD^Q}%UlIuvNfeulQdj3n1;y7WQ!xVKpRbm>3De9HaMa=V!mV> zk_R;?2c{+o+vTE|bB1(<4aE}U+kN`z*7=k;Ndxy%ko9$ur z7hAxpFpCYgngg3mZivZnzhPOu(9(3(02j)B}}$?^G>5y0mN}Z1|o^O^;g>;K)VxiM=^(-pkoYYX^ zka^}(UBx8kE2DVskPm3@7{b#u(^mT0^L7qynx5VkasuVnSo-WToR?r?M2kvjlg~rc zQyg)yR3ID01Y~A|BuH<7CgBA+1jXORs>DE+!y@m1IS@zDT0M4Ug0+p1qL&f@+N_rc zMS9bW0!-fa?V4%isy08_8NX=;l1wSMuoPJ^M;&&$smK;i&da$&b!MG3d z#F&>pG|VJ+Lg5K@8){eswP$Jxqoj~FI?jS`R(fb-fCJa*Q)rZ%@kxT3ZG)lMFd}B9 zHEmom%iCQ{%0ftHKgG8k>&0spNiLL`VI~SaHmrXri#*D>3ukB8YY0%v2w6&2#z;K5 zeVwg)mkZC&%COd02QG}ZKwgITUW3m{vN^7lUtOfEiy!oZGl&p*iYu(Ts zs-@JdY>?8t!sXH%KwkhiPtVE+&B-$|3pzJr z4#tz)*C<*lR}yfFSs9k`zCj*sz5GvD{F{UR3T4W49tyiISbz#kz6;S=xJ;SOleVJ# zP?%Dbn_|4o&(H8fQ>{VCoa*OiWmti#PfZr8u$Yx$JrrgyYi#mT#+sj%VOd@4!b{Qh zHoGaK-XuT656yT50yis=QwWo#alR$%315y7p7}vl!dc1Y~$;u$P4CXxGs~M zV&5b`!#CE}`J8b9u1i@NmMhGHXba?JcpLB`zO|rS*W8Q@!}!~<9y6LxSIek3Es@c{ zEj($%ktu8$cV140V^n#25hlK6tOfGQcu(aoY!<+ro15VV$<584qvvz8=U^i!pJtb9 z4z%awX1La(%x9G`7s$)-0@a%!E|i&J8r87azCd+_j0_`?E9A@(Od%)3SsNAw$~6=d zvyx9ep4eQdT(p#$m3^PDCzQ*UQnRvpch#Dsb%nI7+;`flM44hCEh`s#g9VFn(Qa&pG36^A%xd;nqXV~nudt3|ueObLW>XCugNKnCBNRrDkP=j?FJUCp{}4 z1aEW66615yv+{wC&t$?Jw1jt)eAl%nw1>w;nGwvBvS=bt%1Sx=+GADjiMbgWhQyQ4 zk;_O6%*}Aw?5(xlIh7R>^OA7)r1rwjDO*a;NvSv$WFTWf}FQIx%1`9?%`Q%|;@ZcQpNQ{`gf1h2Hg z(-{|S1W3V2Uiz^kDSZr^*w{Bdk|&LikFdcZEs-^pxzmR6hn!+oWhwPlc3!M8%EWQ( zrA-OFD$2rz*KAn(M8Xk{N0Y}N{imGX&@=Cf*d{p2M%tA480(_!&KNccu(2b3dX-A0 zl8-v#s}!}()u9UCc1$JI$EF+BR1IJkmO-1cjgq!GOB-|2jgui^aLblS?V-y%IoYzs zcGcxQoTa3D1)pg>H^@73w*HUCLu|>Kigpf8Y~+WRW1EKc`jy?;6SiYGW^XmSQ@2gC z-IzUtfNZb>{s*zjvlW|-_0hB15i>B_+MI6?VpHZI8{o#-X{J4Dyyr%VY&V*N>>=PS z(D>%fN)J2F{DBw#X*xQ{J5f;>Ln32r$kfIKp0`YlPlwl*Jh1x*YHXd+{!DF*8^}Q3 zQ?bfDo+e~^$spJeif2lhCuOA`_FC3MHY-<5#x{3g z?LZ8hTeBo%d?0(Ibp8MZ+84R#@|}fg%ZpO*11;L#EZm>wHu|G7?HOxixIu;(zm>MLw}@`P!2-YD3iQ*Hf~J-1WZG8vg> z<$SM`q7^E&N1Dz`#gyimWNz~P;r__E2hE_0nJs^iLZ+qIv+dx^p79i@JPJok+o|ci=TXI!=q2W z*EVYB2N^I&aK>`@FidKD)?~D8d}x}L<%q3)wxN46;=H4_5c<>P$nf?7C9#)FXF@#L zHbYqVd4g@)owS|Qlb9*n!^B>t$#jRiJ6GOcOv?89p4G|7woXn)nXJ<-kCPhz6Rj=u z-(=cm6Hho3kZp~Gnl0~#ZGW8Ddxadf2V>{lp$G@QB;f&=|?_2%&qiYiB!a%adeg=}K zbk;HiZMTdeul#kQ;GI(p4q&w)U|JDv9~r>MOfW7|fSo!z03pp7MUeu$UE3wbwq(!b zVgEv&whpF-0P8Xsc9|3oFhm5CY}W~=tl2ZlW)tF*$>`~|8{YTyd*k=6egB5EBTcIY zwTV9ziU|#6_3QwE9ie*ieH-#@hKwdQHfhjuJyBmud|aDRQQRR8oN?rEqaG$`S_+p{ zE*Np0RJ4LyiIxbT1}BLiCb465Iww?yWJ`7qk5Bt9RWbM64#>8G+h>nlaXb+>ZfE#m z=|=|zY#$qkR@ml){Pe_$CRXR|NE|&d^sH|vjMUPBAhk5f4x6Pr4lU%!9$qCdBLvV} z0EuwEhRr|so0be4JA>Cu({81vr(2`9SRBQ_^}^Z=!#meoN3iM68jG+Wmh&0jbc<}w zDJ_Mg`#C~lkni`FX={yr^OT)kdluC|7fhC!x)$sxHrC@?6f&moiTdp{N|@eoREmwy zI%*o{?g396<1-#w`}kUnUpRe({VHx$MA@b|2g5N4e^-MJF$l^jJmKH70>u3~S!sJ3 zG58#`oK|E!84;z6trFKEfoM!y;UT*|Zm))C3#+^RiSE zqmz+_FpHkgOwq3Jq)0w{FuO5ik66AT&YDWJ_8b%+&h070lIc?zzMi#H2ge|ehqjnF z(qY?;&kux$EQSilWp&U7?@&HN8xk=xLZKn_3>~01g?6Y|JtbLh(k#^AU=u7rq~6xE z7-T60ZkLneoR!w2j=pFbI~nQBJiSLCFvio^QK({kE-ZC1+?w4YFCiYcsZ3GE4!pn=JW&0>T<_bMJ68yXxP=X~b#Eo2;gRXDmtV|4sy$MiU{OJ1{L z*zX8wS*?XM#+7?_Z2)J7s5=_Fkt0tU=5P>i8{`;d4e&TBX^w;6FgUg4G8>oSfwmx; z0Bee84%7UtL!5UV+}w((R|n=p9FN%`P-7obuo>w|r7*3cb0u=G8>I|Sfr9|MWe5-W z?f{?@0WeE2q%G~901=1a)uB|f0cDy~0o&!b910)=JqykHjQ?)2NpTfsza_LAQ_EQGSB>4Za z_a5+dCe{7-BT7ObKxiQZ0(TdTy~WhAp{65^xkWzq4&_+`~96WGtWHFeN+}U@8|P>U-Z#)XXebA z-p-skbH;8nrf3>s9qmG7LfR*eKl-x~araUZL>Zk2K0)_@k1F0P$ zR{fGq%DNxBio64wQ>{w}G`o}Ad$}wJ-o6DPYrm}Aap4zCu6b!xG4paoW?d4(h*RNd z*!mT7Qx36iK&FQtqd{zjed{9I)ujwweF?Uf)Av-{0+;fRL#ff1AmeN`=(EzXRyd%% z$K>v^DhFDzO@%>9%H5&*))$NP32#ng6aqkJ|URgxk%k+JgXa`rV!NPHH zzGQNN)@t_@>quv+Gda=|K>@Mdne1sh3cQl@d-ed*>z1@xRv`<7nyo9hw6GkeS1{6< zW?EYqwJq(&xq!T4<6o1{DIUhJr?vK;SYbb=EB*9i%TtWna&5R$Gr@)a)*<@6mM!fk z3Z`DJq+>Z2eh)C8AJklPtgwxpEL2nUH4}H(k7!Xa>cl7vi{^k)DACP5JPV=;(JXVW z{DR#y*wErEo>#d;E2%-nK{gBbo^&yu%TMNv94~j}>^$?f-K9_NU0|FeZ zaNW1WF-}5=(0b;476DTNwPDCsFJ@Dn!RFP17{eK}ON<+J@(5g5pt{1&+*_2r<}#P6 zEEcZ|V@&uhVZ+5F@HD?IxMmeIT+N7g2%2C~KCt!(J!b-$Jw28xu6LVKp zWdZkcx)ZkA3%3?LL1SxSCL^YfUNjRenuPRQ0 zBph9`%O7l=PTos(KHMXjV z36gLarV?>r{;Fcu;0d3RBW6C{n%=5m8vL?wngWe=RS#74$U^uOSx3*H3D?G$DVV8c zsqT?NsLDo}M60n^prHj4RtlRSY2qA&wEGrw3ez@cP&~8s?z;24tz;UuF1o07=NMaG zgcM5+6f$gtKHK%E90eMcB?_$}2cdmfVdKSqW_;Hi##)pnw%l_795{djaGho4z?6U0 zj8&$o9vjY*iP_$^I?7-yYe$g#R>JyLIrpxlKImNu-9C75)u44hF@vS=fl79U6>N`; zUnSb~&^$V(7LHcbI$3}!*&8=m?B>jI|l zakRAvAxX@S-rSu|b=|qoc7Yn6heV+k!Jm@ZAsX;W$tJhAYG*ZJ1 zdU41u2G)LE$_=$u7Yc|qwyys`Ks2C;ZA!nh!@eYD5MxYz%R{zG1kPcO!>%DmY%9a2 z$sKlT1rx(uQS+EP{QkSy*Xu8?hja#B^sJIt2i=vBChRMZA)l;JQTdHV+@1hTb)5t0 zKDyJqZbHK_+z!r5u#GME@`AJ97+6Q5jkYqrvvlxMM`FsL1Wa1J*n^4H3)8{0f^l&_ zg^8T#z0A9Z6?43~j%q#>&%#3R$vKXiawTUVz;p^aSPZYC)W#UNoU)YB+@C{CGyyIi zM6Y5TJr#saoY8P@gW>#_baaix4=pEEf=JeIN=PmbA3TT|$E&LmZE2p*!HE4JT2zPT zVn@+0HP={(A~jV6*deSY08=h%GlAQX#emNujjv<~B{nE_kPSx66%_thaR}x+225FJ zx>hD3W?s&4n1sZRE#Qen>)r)~T9(84rg(YG!G72o9PkYNkRj*;4W0@&w|{@c)pE^R z9>jEHWAUS-*i;rxm|p_8kqX}K_XJKg(>5njXe1VUkD9S)zi{z$%xQJh-9S=Y36f%~ zc*}9wG4a}rZ^!Uf{U$pc>txpqtiB9~#g=JXm6nd0m>?6qRUr%Z(F61M!!_KUoEe*( z?ZngS*pV0s%QQ}F&bZS>P)4^5a~y>}t?AD0&UCLs$AOQA9^MwrW=9kkhiEg&!^L^r zbWZs2u)f(@OH_yYTmUP~O(mq9N>(QTdWejamF|3s?$NR;6C_ooCKHk7IaUTscwtkU zqm`h9g$W!n*$j8K*cSFyh7>`Scm6^4Ov*`?aDwaFUDPv%S#j${7) zI#XC#LJH#wll4Q_ZC_J_x&aani%aSQwnkuOBf;-JyfAbyFNPw&pzvEcQ8GUic+R6j z31+-77s<*2A_<50NJcdhjwiL`g0w zbFk}H4jn^hExE9{5n|l@?n{5LNoGK2vgQ zN(`qZ?pnhWI5eCqkF|62a>ASOm3>CEp?jrqIOr9L5~O@sA?XOIH%bIt!pzD=#0m_9 z1|Q$CHib#_byFx`yBmDeFH9v`gP)VT4IV+#E%V9FYo(By-FM6m^iwKc-0G$yEp0@_ z0r4j<(!Seih^k+9+SiBh%R-sBMPD)*88GXFQbesKV*0o^(J`qgEU|~Rpus=31hWs? z2uuO>p^r-Rr3_|T&{7Ec zSy0HIKuiO^=Sq;qXptTWd$WXBo>3-HW6-1^m5vf*dt;#*@fo@j^^G{5=j1Fmd)#DVd_Lg zIYSQkq%aoSDv2bppS(*xMja{T#82NNI7QhWqt^~V?dB=`ih3k9I1RY(h{*tyYpkd~ zbRTQ&#y1I&=~V#dZLnfXl{C{-LY2l#9r#s4h`rPlZx*RZ^hf~B#QrntqkvJM<&Zrd zk>>ijnFrBnNk{Ul0vifrqi-+$4UKJi0E8`%>ZFOsGT+g7!k0ODBkV1o%?D)Z`eqG{FL9!lQ_F?A2^pp!bh|seowe^BwgvjESw&Y z7fM{Uphde#cXPeXww9GTTGDtf_gT)i2uk;pf80bh`&Q-%l;eu=QIA3U^O{#UPrR@d zM{p#xOkT)&eJdwg;qDMwZ&jmqk!h<2F$q{PQSxhYQ>7d=M27^M{DCXZ6W|tBBZ*DO z{g&fVB!>>Hii+8qhaD0?R~}nJ*sqj#gba4>I$TCB^hn^C2Tb4vL0)&^`;51zdaVtI zmx%J3!DEgZv|ne5tg|a)N)>}AlxQ7fop)r|noBnrl4Mvk6Lwk8+8z2<7)N&TqMW(KmM9^THB7=-v|M@o!OQ_m6d7rI69j=YO)!FFT(=5D zT_ob9^(F!=Ro`=kKqa{x02`>!Vb4LDY{Xuh(YZzNNW^B{W1YCUY}`=0V0OgHy6#*!FieU?TD!y`*PdmvihEz4}C*bXudZS~)8I*UO!-kI)M zJ0KO>g%h|(?eLU#4bDnID!RzURa~+N|EjOY1v%uq9QQuN223hDyJ4tj6U&lH!efsh zWeO3pIJa0F)7^&Ri2cHD6`#k+UF7Bsm@;him;3gP@10Vx6lH^73O9fp0b>91u1A?w zi4qBrqK$y8Ijwu@FuV+w+H#7niyT!J!JyY=1YG-sGn{UAi6$~`!XrB@HOCjqbf==X z?Wab}GiANW(~fwUJGF_St1LLl1TB{?xsXN#Yy?Q0VP`;-ytyokKBo4%Hs~) zJE-~TIx)r6ouishMc{TvXQnkW*4{DM?aho0_gWTj>Nc)3A?TqTQ^v~L5V?T*$zf@) zG%ry_2tPpn8*_Nst!4X}4;vtd!>e}ra(AXA*~89Xr9DKMR0&F0J&66~Dpm4@@U3+y;|@EgGp3y}_mZn8Vkj+4@y zvhbXzDcfbfU)0da%Alyt|T96q7F>mzi=qbFQ$2aOv?3e6IFg3xXxuAE^0)$s*8vV&%IhLat7i(jLKsvM!t zHj$^;8pC+Sd~F-_I=n35g#ux#gMA$q#?62>D;$3$=Ny;w#b;0-2S51A$_jird?jq_ zOfirKlS?a-OI#0AtXY&i{fNJr$MKZgr;-0;$_ zpvE-OjK=DTQU>1bT@(XOsOJJEvjF0@hNsao*d;Q z`YJMB?B$ZIP*^%;@lzx7pyQgCeh%m-h_=|Ns@#eGr_@M)L8=GH43qY}J{JF(#N8%={zjV1em$FkJu4i`^%W(dU-ySuT`VTR!j;+#7E`Z_$XbA$E1~I7bhETO z_}v{NpqE>IBHS`R&glx1zR;~4q?1<;K~8Xu1R0yMEyk%hC=WV!FZ#t?Y-{jy_8DUq zDP8Z=BIJot%p!l1GyvizO(d?%>iSO0+-Xs+khEoosDkOTI?-A_qzP5L4aAGg$&=u7 zOl^mlunsXvMnOgP)pnIr#np^rOqGz$j2#(~ z#*|Z+Z3`XxC#eqDHr!x6sPaUsaeH(>lAEmukx~%DlrF6HGf23NsnO!O<{>)2c?P;f zA7VXAsAi6n0zL4f(pBb1x?}^Ci(ORBv8_SustKd&m6~V!VQ%qRDydVHAl-0~3fP&Y zfRlpN!vwb|jAa*wQpWGAO~0=&a;DH~{Am+c5I7}V1v@7*NDf|!=!b9}xa_T7^MfQ5 zO1frVghQHmk&XGv9{q?rjRddcs}pY2RkM|#OqT4N?0h%D*jiG!wRdSwLAZ9D8HkSc z@H6^kJ=Bso*%;=u^A;@^904OllS|qsXE-pIyHY_WMBfHlX}1Ke;5uDAfLwxEQ|u=H z${g`svAk&4F%M`ruymkcbA35eF*bHU1&X<};y_BTnCutA=Mra=K^|qKq)AZjl)>O; zLvo;45nEGlzqk@CftXh$h9|4(JqVBb8Njv}W^=++kGBg^qu5@2rOO%M%(Kou=Pu`- zcm4%;o!h&Qt()@3DY(Q6Vgjrw93x27lAlOKCYvilq8_#JXv5hpc5gXtI`ulGJ4QnqK#gO<7;w>v-!Guqs$H zYI{jC$hiR8@|4xGDl6&(%UZ9h6_mu6WbFO^SQ#1#z+QsJ%x|keSw)X8?BK4qlI=l` z8O=E6)oDPz_=F!zGWYx$qQTH4ZAa0?;NdQ}x^;$qA{^B9WaTwuc|yV4nZhH(_`FYXZgVpxg$ zOrKQ<6OkCxbt(KBhD{hc@(S>MHI8Zo+Z)WLzS6Uw(_K>Wba?M^4%gk!SG{;$!eN`1 zTX9Q?+;mISKElu1Y*7U@k;niIg{aHcdyv$lvuwkq%#nCF%fbj4u_7}$FEKezFht{#F$ZS6!fIYaNkwWB!ZD)H19pn zm|keO)9GS45>>xrJZ~I5Dixo5h+FPTPT~p^T(+nMdn_A#SL%lSwesxxE!VD6Y-nNrsE82~7#Z5W z82umNDw&O*5S8!VY@4H*BR+ZVfWUVMsIFHcIJ8-`J`#f376bm1JIRS&@N|doZi3px z03)gJntG0Ndub#smd+HPw zXu>TojMwo8d{P)=$kx$wV8ZM{H0_Ws(mHnCBZYvGuvACRU^%~i9jL(sOL(lAJv(=-BiB7r2<@NgJ$3vlIAKHMh(}Y$u7VS`oiO(7 zb?bVFL9Y~wtPX2wsRyaS6TU??PJgWjsC$I@k9kBx(br;`It6CkPS-mb)3{Ck^#t0z z>7?bQ{g;Dm(R*(R!X{FsJ(RK=D+k&H3Hi3A-r**2{n z3@7y9w5G<-IC>D7!X)O1PzNelK#02xI}K1G6$Y7+Hx{>|9Pk#!6FvO+0&-GVP7p4$ z<>=%Zk`Y$5xh*K+M(bYC;4O^{%;#^`FfX;iM6nCfVOI4zR>F zTT-rqIQC{QVJVR$UT5K`inNU@8VI>?af6mw`}pB&PptcAjSbc&HVxikc^ z>k*mmZ?n>7bb<&KYlTzd0N_@Kc?hcXuY{D5sRMAc7~{)qI&m}0F_c+y?qzl(xXiYX z3@fDT^fW7?gT^Q_hw^3?_KRjNEFUmar_yFo?Kx!0Z|R%ErHZ3i>QAEiskO{a1rN$0{ z_@Kyccd94aUG&Ob^j%w8J#W-&2z>Y$iBXYd82GR5$Rsd4zk%)RzSM0DV~+zH3cN_2 zc9vdz8SF4kfRr+s%D<>@11!!4KKMS#eK z#hveODoLeVE}^9e7$OlBHovaF>nx@eGc2hw9pp>Z%ZzoWDA!(rrWsVnVuQF9Xu_SQ ze@QQXHQov|;o6fJezH)Pk!C)1i6vm`PN>&F#Kb7v#?43fhi}q_h z)lgONI*b5I0{Q?>k;RfCS6OX^&OFl!)8tu(WLmA}NU}uL*d<5Fu&<)!z!V#`ql2C* zW)4i4R+RWWUKM}PD}_=~Y_nJmQ3WS#=s$_DaT%zJUV|rmPuR|Z2V2&v*WyX|!wdVX z5l2A6us}M4uHsd}2|JS>XTk5d#Xp6&iDMvC1)6XXPJn=C085a$2S;IHuA10t z2=H4+d%-E{VToO`9tDVPc7nZ`!%&E|BF+kHJ2SXkEpu}IDbmpo1rrUa&Ae{B z1TZ_aIlEVz_R@-g0~S-&$oUWst+`jZZNHnGU7MSQ#!OB(-PBb$v#|qrOVF)tKqwhA z;j+!SZGMqMRFZHK#;iKqF$*M%-+hWMGhK4dtaA%y95n@>#Zg!E>A7W%4WW*>1s<3q z(@b-2UD|tJ$6La#Qvq`Te10%R8HGck(} z`ByXqmf>?cNWv<0n8+N%Up~IqOo%Kq_q*Zu*W71`7cx+*t4v6XrrS!1W%How=vXEt zZ|=yksPT8aaj&q`$iS#EbZ-rhS!aufs_>NUjdz(I`3z@T_yJQP?BMau5r%Bo5{gmKQX6920KlzkNJS9=%ffBBlb1v*^z-Vih9unR8h+Y z!&3(Hl#HX72a^qu!%Y~%tZXwJc3&3qU}ffDg7EFTd$N5cD@Y2vv&?<)PT6;N&YY!S z9M)S}&LxL|pb1hL6K~Jt;O4GiEAKd0vbBiPa_l@!yDQbTa1>U1a7A9m-s6W6-%4Pg zev&qb%5DQy@Y-_t<`-^zh=~oXG3BEMiH(G5Ooj?#<6}C1TLB>@Vq!B~S<$W@F(ekt zIUNIpEL44~T9UP(!k|sao;}zJNmwdH6D`g_SUxnz(WV5>-~@0f==d@f5V}~3O-%Sh zR_SS0NQ7zG-Ahoy%BY?h3!mnY0iS)`Kj&C1$nLUCpeqUfk1kanlN=%QS*EdBixI;C zuuklcGyO6$B&KCAw9FHYpSQr_l3x)0p|{&qz1|FiWI!)qYEqR9AH)6t^3^5S?r+$=S&G>5s@bNZ<64;T=yt- z-`?a_u*NwX{#S2Cudztrs!-KTnnj0iW=oZBu2j)gKhd+gmoz2$S|u`}ND^|hcZ!*r zSC{IlVRE3fgCFA#jxGo6Lt9Q^YF9Xj~(5zerZNR`D2xFrrlvay?de;j;7KOSy7nZ__1|!2X0PSbl zt)!WB1YMIr@op7oxK1g=77j#s38zCq4*AtbN*F1IK-h?H#&UrN+E^GP$;sq_igF2M zE;BbP90awIARMW=@_CVm{x*-pZ7xQdN?^{10~1vWUwQ_!9*oCu2BIrhA?vL2j47J} zJVvcqN-Y*j5>=Yd)6Rj~*Yy&CU{K4TParz9AAa<{%gvHll{6jgFV>@M*8agxtprq1(MA2*O6htK#Q;1YMela(X&!6|xJ7QO zTFr;)3oTMjKCT=p^AW!@bBZ3wDCC+?MibY3ya$w-R6LRDOgZN!hB5d&w+FP7;W@wg ztF%(V+m{$IGYV1~EoOnGV_UcCr74?k7$7RThLo**MLaL&0Sz`@<#};*`#G|)_#MMq zl>-`eha+af3v~C&yqU%v?wd7DSTigg%bo@C>UJr7nsAytQ%E}=<2;CNTMbqBNFjEI zb$TE~-6MrCJ**ac0!_t9$7sh932ao8UkxFTVQw%?03|Ftj+@XE8rA4)@Pyy>iJc0m z;;#mGm9zb7;r0x7tDz$xC4=&&Dn`csTMK zY)2Jsu#@><<2)tUm_vh2b4|2{LzUpvmNi&?x(g0UZh6$T>?3SaZ1-Or1m)nOwWT3YN}Vl^eqk+RqugZVaawFPK(*@)ZYpF6 zy#e!A9YTaf2w{QLNtorsgomv6E*!o}Sy0B(>1=U;YXuxH*P!0~cRc-$+=!&uSE&{W zSDxysIs%uA^Wl{%=jRutSu-fu9Ka55HlpZox-&K29`3Zzo!FZ}$=l>iYi4?E#}1@Z zRtr@=QL=5@w$|u$cfwIk?45=#3o|>}nH-+JbZVwELT~8x_R!f^!}XaEBJSAnqpCNn ztkMa2edsX#F6gr7ZXUWvzPb60jJRh8WaQoVyYJ2{4iByDD0EGrfj z(Xt9&s3vmWnYJfFLzUF=c;K1GiKf~hp-w`n)iL(de~dk$vtnkE{pEdVf7X)@WJ*qT zK{8kS0VZ#0H9$Ar|2UM7s4K1`$zeBUmU#gOyY`oElcYegI_~k7Ki*vr+}ffr`$Wnw zpOVF7Du1|7sh4)bR>u}Q#s)Qe73v+zacMbOGmERGvPym%&{fa|u$6iPv}aJX=GRDpba&L*Osf1yp*y36EtFsK;b3GDouw;qxe|)R6-tEZj=wHzeI|~L6kOfgmBy*p zTB^40DK_ieMC1~T7gdD5b$t>U>-NoNc*V zFVfW~+r>kV7`KksJY8W4X)~{{w*QV=>r3P{ciw~OY#m{61!X4ln(eh-o!;8fne0rn zB#yM&<9phd_7c~uObOnBn6f5Wphk@xcUWt#NoPNdCk}KDQiSz)h~pbYoLvm4VK44O zuq_Tz2bGv?>FF@+(R8V5fxGTT#EG91*j|hC^FoO{hJGkJ6qAdN>VB(XFs2XiUYF~0 zs(aF5bfdct?o3ZJ+qY*>EIiXj|9x-lULBUj7^Aa(=uLAccyn8wmDLhc5>Xl&tovGX zi#u(Cuw!9|@L*2jk!51b@g%bJ z2ncd%Z)`-Cbj6nYhLL(<49DzIlC~7b4D0kv({6JqK%<34ZU(HzXhpt=Ah3cHWI@8W zt+bL_^o;>4`4O>gFF0)wUn*0N9y?>N8(GlEvm`s?^NSYSZ1!YfssoM7)F`TPI)Y)x z2;x+lKaQpjW%DWJvwONhiLVF%+6$%{PY>#bhs9J;`(VOsgW%ZaQ6|kWN`1&WQh;I< z8!EgsXHsK>@v!@}eaoOvobarH2EEm|W!DJ)iPjST(eAL;P_hQi^5#@|YFCSFt+G@x ztHorru9D+Y->>P;Xk8ACXGtMcY6FyuSNj<8Y$SATYEH7~+_zdjDxfwA`x1|QI=GF= zm>kr3w3p2C2+`e@XtxPPJvYkGo81OLq`ghyX8B~eA$TU8YhVBd3&N@?`vzm4tw9pQ zz{R#lm2O-$w`H(|XAG4d&)`X7qk=u)lfpz6Qx(4gO}NGYerh`Cq~4z8h4g&h`DPw-yZkeekpR~c%2IR-^lvj{sPy@uIg1kr{c3K#b}Qwm(U-2D=-9Q=PX=ow z9LroQvBx?I`Bu~rDA#J#+1S)uX4gvGgOwtY#A_vL(cEGY7!eBhf9YC@HP&-h8Da0n zsr~;#3YxBp&pF>LB_ zMjrg8UpU5N?2fOcDDxT!9roz5Yi9Vlvl-%quD4eDMdPW^6=5TbN>P(?yLRK&f%Otx zdG^yL>+ti$j?D4?rDJErE!kG+qp&;My6@+SFNWrZn?IYm?daa0FQ$#qYP{06mt01% z!~J`U%k~zg`B*#cVwm;6qoex~xsX=$6OJUU9h^FRLmQ9<^x$hY~Kl8Md)+&w!x)17e2wHi*pKMdj4@9z#Q#QvuJ{eJQLyj_0P%DwLc zYrw?xu0c_3?sIfGJAo!?&)&>%A2G~6Jjk)hwgoa#&dlA}KHIyr=*(O) zvmLXHQsM+wCs_Ku+3oh2M&{q$eor`jA)V;xaY0Q-MD6KIi|wR{QO4L*@~P>u31JO) zr*hPGzu&oJYPuhqrEQMxRKGo$V_B(px5sBYvA8|A2yMF49-;on^8hiMRyV=Xof>UV zj0w%N(%RLzw4ly9V>>3z-f533uJz*aM@ai0{UUJg)E*|gqE}fidUs7~thx;>ois|m2q9e8CqvP225Di9IeU&7G zWA|8RJrqtaH-I%dvZomC?M6-INQd9au8dvXu?uF`$wA_L)3IlYiB7NA-a)sOgRFNh z8SYG}Cs69i2#i*L&8F9yoE;z6jAG{4=SZdsEURL4cG8AppPts9=*)Dc z`xE52-d;=N>I+^3L$f?I>Sg0oh3$J-Uu zT7u)9s&{kOW!B=MV;(#n-U#;CL^F0%f3^raQ`6mJ&d~0BU`**YGT5={?noYPf5Hv|9CBs#@qS29TTR)AmWu_tJ7XBW!7+%nJ_R!vrZO`771tp0Mi#cgP?jxZvAPh$ zJ4Czpail6i4N(ljIH}mv;!XE;Aw8$mqoc)ji)f!@CSh|nHd9DfNxJWu>n)K6C;HxG zm;ULfWpB1TUOdYVf(4Wu25T3=$E??^KRwZ56@(_L9K>gFtTF21!nHB%xNsGW&}5(N z?rB%Dd{62nlIgM{UbizZ(wf6=M~+#KX}mLcTSxRzN2}%tOQVT4AdUd*jSfy8bGzQ+SV3yUn{v2bwm#_oLs%HlT4-=!+a4f;_ zcm((qo1t4el$Uy0ZCBMCrfFL>fY~&ok1J~d(|2G4!5Y>)vN+sUC+s3tQ?yLRIY@Z2 zqwV3*h6D)GTUq&R&!M>@jQ}FD$)i7|EIz@D%T zK_2_s?GvWiYJj!*IP^S<&xUEb%SNG>2W_hU?$j{Ee~#rH93Dt-czVnUNhi7*Je&mT z6>){i<6#UAx2H$K9xS?$Jf7?olilr?N;r6WyjS$@Ii~jNZl4{+obK{l_WKIaVSS9& z*7DHurJ{go(V2=4<+E2<)#s5^me=ZHtB%u`=00}TNUoc$Og(1Ww~^7+>%bkF941Vs zJuIV?dC@Zs^9z!~4pPIBnThC?o|XwDXa2;@H3-eZJiLnyaP~k=P0kD_B&24uo$P_p z2RH5VXN7M#tYgefXZ5?i+YLKMZ(~ieVn3~c0;^>mj5f^08j5Yn!$RQp3FybM8dh@$ z)t;+6&6aGG>VtsG^0t9#Q6h?*W~u`V$k=ysn{!Qk?O!u|IcxE* zm6dCN8oF6M_EmFT!Dq&XW9(sV3*VWpC2ibSb`i5;iS;k;O&j~BT0>0@HPfSS3C$J+ znxVC4x;@3FJ*^O|8zW=d93!(|^=tAeXM%c5k3neW?N#>=J;Bjf@@FBDjp80txC9uR z+}+((iKwYqo!xBf`r(R3)=8RhBi2rsxRr?4T9u|dJ7!sjv#1*>upSqZs%RS^7gz)u z!ZeW!0aN_NJS%IG%AJdCD8m%WGVk56VK5jkI@}(&mtfMRt;nuUSE)>kk=BH<$<{zH zRsthKTWew&`79lFgIHz9s+_?z9LrFa@k-&W$~AA=Bw{WfF5SEe8nB%7AXHXUjm=!a zXo$$$Zapj~fGSvP5MLt4vwW?(PpRRp5#wZ+7(3(oJsn+xEwh#N-ZXaF6V*&K5->XK z%5u8agc|2+@s3%$Hyn<4Z=khOARPqUGf%UD5c65T!K1fpEDsv`OMSyFA}TA?HREDB zc{S6`B3OUNu715;cLWG$?Q=IZ5<8?W`W%?TXWYK($*+wmouk2xC~x+p5xv?ES3@8w^w3+(v)#Maf7jcSn0?Cl4=j!ZpdX-f>IWP=iFIt|dKi+pInnv$lidnnZDgzTYkh9j_ULvy34`aRD7aiLuC=Q*xnIn zXDb5M4w>#FXBFJYbAu2ko7(P?7#7xanQO=HY?}LYs%1{#ID6v|AKr`1_6`}`(6UR(eimkHZ&u*Y&^{dmN7x2uSl&_N za14E<2Fw|xCY>|Gjwi3V8h$kC@hiVhoEe#b`m)lK{Y!Gt`an&637 zXbtFlaE*(J&P2hIJ2rWS7GAc@xeT6BS;k3h=P9glm@+j!wF81GE4Pl?5dEl=Ap)<1 zRmEuPlC?;x^oSR{3abTZjI%pqSk+@xyE|;!H0PuRPxsbb*8tD(pfP10#@}XMADBnc z1{wy8zOh)CluAdWe9T8Pcj;w#DzM?ma_ow&cjvx~JwV3rJn146h0$GYo(D7)X$e+# z{yHCGv|5L2o#^zDuE`ptaTvj{s$xZ+Xq7`+#kpp?iE7x?)70~ml$55jAZkLMT^s>k z|G309sBhWQS&O-B6)+oYk&$VJc6)bw%!*qIGmLa*1j{B}+M?^UL2Dc)OkO=rLo{24 z`w$gbWj10bDW&%Cdbm0V0137}o9_bFX{T=mgpHM@VqHCOwRD^+@sPysS`!ZesYc8O zMjTWgOHL)-_70>oBIGPGAh+5xY}eTXBa$~hHn}Uy zIs`Ec{7JTr#ui2NQPP_0AW6D!eYC(ISvNZ4y{wCs*xL;W5AI{ujgBte5D~%h+JN7` zJ`(J-DBclM?Tj!g#&6bgEtVJpqoafLnwSD(p&RTf%I6H71 zz-*e7ZJ)MQY<{{N4&>Iwo}EHV0mpMYJFAygW${>7!OkX%RivgOlcU(NJ+IXIByGY0 zNc+x=WhJa5)x1}k$wdQO*UMsRI6j?PE2Um%Vys{dM;vK*Y|IYEve=vyqw8$ocreiP zS!lXGqTi6@)YuvVkUQJGoka(}KfmG#%pzaVmIJ0hvTtvXO!RhSk#B^N!{)9HnN3U* z5#{u&JGrAcfRw#yML?m7>lW36JF}D9k*;IMju81c!ncr~g~Z`8$^|zH6ymJX z!%;jfca=OYcb73Zx4P-5N5Tn}#F~~79i1RdVU%%}uZ>XEws-vbf@;4QL%PInEvF{i z>*G7hn&_lG40#q{80&dGR#`>Sf21o4$xywGxMb7VLTosPJCcGaI-}di_&r;{WhL9v z=o8Coat$W<&H8oCLV1%Y7#W31Xzzkt?v6r#jAjuv5>uiA$3`V~GjOG&=+L=GS^j!E zq(dc(X#)lERkRwcVGbzK*m!p;iHvs8ZG}h+mFkQ!2RNf-cb=UF)*ablFlSTiv^YEe2r<=jzO}P$po(kB(ZFe z)&rDtAu>7$OR*%)PLyZlVV=zW>M^X9WH@E52f5~nB6;qSAitnn=w=_K+|fuxB;DN_TB>dpN1h zBd<%AJ3R@Tm(@s;lzCiD$e|*>kb|>NJ zTzbud1Z?((EEBrE)XE^iY8yU!OfN6j24+$EbtOo{4C*MI@e1B5Gva7_U9>vN`g5X( zh?8RJa$8cZX155X11wXkX4fmx{Yc)0cVPZXX|{q4S{1Dv@*5z05sYhBs->xuN>kYO zDq4+A)yTVQ2-Xxk>o6q2>~!AlmC-5+aAan73dtJei#lQ^R*=^(CR7J~AWvY;9xlm5 ze{8N9!XQ_Rda9($M`K9ZcR~&$xfj&=hnTt*vc^03oA^8$tuD+b3_e$ z^$MyXY9}*r-=>DsRB*1jvWVv;*vP!6l4pfpD~NF>4BuyI-D~NqFCl(zmr>151*)G~ z2R4AqLzp$({)u?bWRVmp{F>EnV&u7NEH*r$tN;y+8|qGb^BE?@{`9)o7tg|x**N+t zm@GpBoFSx$7;;%&*Asym2(VV`#Pf6QslfAZot>zd?kkhS%5>ifXd!iewFc zw{a1Hb`T_&F<}O4*6^jnxFabpnc*zcO_5tS%5XL^Vb;TVSJa7BV57~9&iLK#I%ZQ2 zn2&T@7!mSnZZ~oQRu7YNOi62v<6#d8`7`S_NULh{=Jul(u350 z!iA?@i+fdaOnV(&p@73!&CRMIGVJoYOnGh)*rwwqD@e33AEMUMEaZB3Z8B8tN;9X+ z#b^Deac4R{wkz+4jW}G&2T9SFwpzF~XS5x83RSw%xNcb<%Pq#5Oe5PVAwjOqR2I6a z4N$n43oGQ zV-|Un5$03A;hkgSBgN$CE=wh>|NZXR$Oi7D&G3ZqIGB^8BfkC9Nr>);p!?SWrL$~k zqltXN8Mxs=f$0GXzA^kss85io&Pnd9aCx{AvS}Vk%85M?Ojb5Gd2&sGZ1?CBK?Qex zBG)TG*JDKM=IN{-metRt{2D@Ua8!!}%lS|xVIv}S6YBAfPnQlE)TutbeeRl3>LSBUuY`SmJ6nu?~K~3o8`B#z{ z90WB5TxD)78LUl#Y+qHos-_J>c6n{pU;`{0odj37@l8Sf%phM!BF|@4pQdOSuLGA% zD}bgzgWJ7q_tz944Q5Ta*+@2LQ-D==o=q&Nrr_RjSsmhaYT75=u5JndGmwSAj=$l> zlf$aJDM+1nRC6~4(Oi>D*VNoiL9`|D1Ixf(sk)njG~7}g1T_V0TEZ>WCgct6WpwV} z6xiCw7vHd}8GtkeYg#K;&7if1O=VtlHFs0|mI+U!dhle!yLQiZ)dZM6iA1$b?jC?rO?M{rr2?v}!^SRcBMo8#x+XH8m@l zormPTECV#9*tij@GJBeWg^X%z8RcF4MtTWp3Rc}rty&Uqo}3F{(UyRwxbwwz^EyL^|o<#NZAyy`OI_7dWV+jRRh-f1a=8{b@Xxrke_k-+36a7 zO~yg@)WAb)G=B*JIzuV*n4Q}(diAZgM!2nd-`r~Do1Rh zA-GJ(@lF<7UW>lMXpD<1z)va3-9jdtVU5y{JggBw)w#$nTl;KRY}pc?i9RKl$i=ZR zckuAO)kHV@q7z{FxZ(?4+tAt1&|*mrFDy>xDV}3!+AU5t1>>l?Elxggc>c(K zv!RK2{)j**7nMe4S$S$STBR^I+AUCYL^F(41=Hg*m=fWhysK0IU%+E(OLG{g=Dwgn zy1ReD1?S$ie}SW1khQ+`@U*{U6qxp`*_qJ`5Qv;S>+Ey0;OBer^MlX%MSK}!>si?S zF#=grdgpn7^AzBM^UNT|^OUQz&f7>Pz)F#w>ye#{3fdj#hAf<`!rsLTdl&b=izRlx z86qPKHQ$3EN&J^Rcv?_!EElEZ53oDkVLitKEUr&76H+wQZf&iXqNKmiDX*&OGPL5Yd^% z8AW&T$cdIN#f+i+WOqm1jf()9SM3l;BGsr4#k!C{qrQu8)t{+?Nvj)oyLoNyxg<6qDRi=c&ciSXG;BLwWVX*bVC}w z+fseLt>~@TlUa5qHMhu{j&}8DcJVL;n{Tmj@f1w1)y-t)u0$7h>tr5CTHMbA?0o|B za2M^x8><%G^2w^Sr2_}Z=uyV{eCq@kSM13=dp>F#O*gN+ISoO(`Gl8E&++st=n1FY z_Rf>YJjL;JkLcN1dmu>d?h3>0oNrq(jRtaFuFYR0rJ9y`9@uLszAdlTqy>+iILafP z5{y|;L+fce@?EQen4imzU&5b~ylhrB{jGs5Z$my!HbY&n&zZz9)ocyw4G?=%co23= zXEU#{Za&4kf!e(hO^>OC20XnrzwO|*(_5X*mmRxoaq|WO>e&gD!!IA2U(NzwM$pkY zo?G7ETH@io@U|KaX#-eKc~Yg}SzPsbbg-K?$`tBKUd!g8L>@G-H~tz?w{9&S_`uVP zlMgRjuRQs}P0QxuRk_1xUpJTf*}mxTH~Dydh|5`rd5W1wv#(@H@nDN9OTo(XjE5J4 zoe`t=oFmdQ10r{+{{+8dJYC7lf5D}jV7wBM+`I-%cjR>#)*Gd#NXhIW-mhMmTV$=< zbYwqn=8k2aTIBAfrX(JZK6a2i;ww+y89O+yvSgS^ReS_;D=lE~v>Q_dgL_d0QyBE} z>(#B~Ua7eBRCey0+x5s{3bwzr9VU?#-WLf8=vfS=>MOK9TZ&}Q9<~ck^0PcY!Gsaq z%ak(M?{j)_T5-~Y9&~DP#;L`&Qw!FP@Peh@n;i~)#9uM>xhFp6cXWy6hZh$&9c^tn z#F)f-=2e@{JnOt8N3J@hIBKuKUh{C(^m|9=xWaeMW8vjWd$aE62)gC?q9~UAEjqv{ z`4f*JLRCvSoVKLvx|@!lQj9IPx9C0et#_x(oZcGeHG)$L)AkBoyJgezDa96bzyU;` z;(yX1-`X^iA77xaai`5s;qj!JpE+N z$0w6>#`Tf86I+U_7LI6TSza;gv85%qF!>PK7U)+HczOERVV>EVUp6GQpuHI4P96sJ zSK`gnMuXXGdD>EhT@#F-Ek%o~YXM>x54IHIFpReWM*ZGf3RAqj1-<9JnSkq?lHl+g zYlJkl)ZOU-c0Ee&*iuY&dv@VQNsf#xK*u1&eRNRSCJAdp> z#hva{9EKiTIm{M`UcL!R?8?JOj_6twuhy$WGxI7RL@q>rfK-vT`&g^omwWud{mAz^fm=jw@X&+t@ z!Kx*w0V})&ysE#RiCjIj-X->!8R7m0OG6rmAblhm?KRS}S0>}*)YM|i7;zk6wKHml za&ZTocNZa~{r!S7TH--z7zI%;3mGcUAHuOp(Df$U|5{F3`wt&DAgOJ8)7UPsaL2s# zFRoZ#^e3BI{=zp8tuFZDDI%5{b~4`iZ+Jxul!i5oMj+ zwFzYHSKCs072d`nIO?U7!w0*jhY}W;Fc~BWF19#sYT12tW<>Z#(mV)P)!DQSUWlQR zJ8GvX96qh`{hXFhTsc6uSCF5ZCJkd!wnp0;U_A{$%G0R{&;vBBG#*WZwAu%967NWb4X8$tUW!eiWUuSfct85dNDqR`+#Kop3F(?vbkl$;klhX%4V z2Z_e3Pg&}Ep>I_h6?_HRm#F=+ixQ0C#$B!o}(wqzk0nzO-B30nR*9 z0WgEb?10Q>qMQqp8*M@KNcW5-3Qlc5sud(1UmSqPNNFsid<`;c9&y2ew%xG`5}+p^1um)&H#HHG66jCOi$W69v@cWn88{w-vJ! zBdI~d`WVJwLavvvUbyIvi*X9*`gg;)_Z?Z;Wo@M71Kn!J4{RAGOr>b7w&KXD$tS4Z z)pkQAEVvjS#+kLU<_}wXe0{F;GY4@FjLKu*afA-&9#v2n4w-g`Fqh{FA5ue9fruDu z-71$)dQ2S>2VXqP^mXH6lrd{VR6=dj#Iar-uA@q>>Smal;Nqhnta~D&GSLb3=thm` z8oU*}Afa3ZR@55CzM1!066a}%polOcu?dhD&W7bt1iEF%nl(r=HJhY%1$ghN6>kEzR}{qd_4v&IQHnq+U(y0FopF z(MTjL4Tlvavz0SaCv3HQIJ#Gyn#B`WzV&|2GHqnv~bd{4U zdk!wSwd1qA+TKr;Lq=RUjD13=VRzdvi0(3p47$6=!=bg<5LAp-#-ctu88FObaV9cY z*%{24_8;c5^@>vx-q~dJt7^P5Y8b2zUTHHi-rg?vB>D=bnN)NV2TMg3n`Bt2UFu)! z`xL{v*p3blTExb9v0b7fa{J8(<_kHTI2D`6HV!oBfbtb$a282H7zQ=FA*aYIi({PM zt3VrBak&gLr$s<_;Qo?Dm2{10x8!oZY$Q`Ym>^um2<4;%7ADdb=4f$?f7oo08QoED zcbQ?I!vS8txsWSdn>3#`Ir^mD3wQ7&hkO|~f~^8} z-4jm9X`M2vKA>q%2-Y~6hgpR6!xb@vX3gAjV#z>?Cv*DvGm(@q`20~2bF>1zT;x-C zRJ%a?*nDj@Y)Z@6iY7e^)O1v(kftLI_Bf8U5{K%fw=+^S;S&{#N%TSuw&C$^4+G|a zuEgWEU!O)q-slE=C~@gzYAYRKzApjkYP;q)&4B7O5)Ex_ao!>GlHJzP2!uKp0#le@ zA*V!owWJqaDvX3g<2>y4kfu9YFmv0&kY=`YNnCN-U2Ans#*q9&TQgT6?g-7@vZjwz zQlPGM`|JKBn!$qg!?3QB4XJ#Sqb(SE?k&rY<33jTa47 zMdH_LdIxc@O*)Yh%3u|mDVJA&1sKP>x4FWdV(lYa z;2eaZ1c3fzx7oBWhsw<|K=X$rAw#=JS zK&hZIQSU~04M6T|B2BGn~7cWV_FW-F>Bud2?o&a1l5Ih&BDw~B>%&cplu?)jEeD1Qr) z7g*fOo0e}_%*;#B#H9zM5_NtV?W@N*-B^Nch>EwCai(urn9*9=2lrcgS%dJ1LxZGP zD})!D7jc!jD-dj$erXb$451|L-j+RUw0$~~~NFpd%1+-)&H*t;PhJKm4u+@oY8FNR5<6*{y zt-W*m6N}%ZnWn~IK$9U4JzVjqkn(P&=T&wd{^+T@a^Y2=Qc%g zSIoJ47sVI9@Ux%kll$4X9WwU=hKGt<*`{xZK^Pp`ruq<$S|@6Zab`uG~S`(}s%s z;ug+-{7O+A|J9<{wLDZD9~&wj4t#mnkj3-Ej~B(;$j{#a8$0fK`OEi#2mbvghSK+# z8x+L?-}8wpmhYFQxAXt)_3(jf*rr<<5GwQ8^vOqKe-(YD!2XUbo-61p>ig<{@p}n) zvM&X*dmYF5ryBw54i&$t{)OL@-d+?tuJmye<9OxJP$j<336FR90dC%lG4V%tbNf!> ziD|y#xKb`L2K~_mN*KiWlE_sCYW@{2}(US^sas zcim8~g^SB@F?`+po7)T-tsCJVAf9Lb&QNjPKvxKU?jwhahkanE=;0^#ODV(C?=V!n z@TNn>>%se7;Q#h+$`Qgm?Ich4A8s~OJmrqfc{t}!9e&oMDKp_?ddELR9YGu@oePNX zj6WYLwmx>KIPLL6R^Jza`vFLtA5iAmmsRP96Cr=GEUTGcA^fwbN64Jw``Gtq?f+xk zKjr%wpYSGb@q{4ehf z6{q~=P|*VKxwjrFZioNjSzwr(N&CB)c^Y>M{pkk3UKD?f-&2WK`4A0vpI4W-&&N+= zDwZ$Cp)!4zFjxMGm+K)he#~SipPveFnfksLzN-m)i%^yrr_3K@cyiBv%%zdJ*)m!3oH1y$jeXoM1RZu$=i8bsvRE8t`Y*R*I_&{^_`XO4u_nXK+6{_}!8=P#SN>oW<|po}uE5 zJ1`euS6iHeSUMbrSPEkNXRJXN5Yv9c5MiR{GvY zfBaE*$MxZF1D&g(||_Q-FzJ9uw>uj46>2$%hJ_z5=; z8}ljuONm!z{j)iTw%BrG4?jUXk7N#bB6TqiOmTF9$^8i8*!;w@Ed|Tti)qh+_bmKI z2zLeL65gfQ??rr<@hxM27dZFF{33l_af|@}1Ki)Djy_HLd#Ou>dp&rYo;+0C@hM)m z|HQ3yX27@d+n>Pnv?(<3SR@ncV_->8)IMV(t%;nIg z!g&*ZGJhL5Y!$QL7Q0~2#P6i1dAfIa`cUyZ&m1alj~~mo`D;DCLkQQx6#kup`_7m@ zpq@5kDz2YW2e-q1I-k`x74)*LC^R&a|K^kd4T z_0HBD{8Ue}uVuomwCsMv}>dDYqx@ziJkfqbie)TU>X zpXeudZqMC1_>RZu@LcS9HmpV==+nd3a zTi;u-pPS`F;g}kWw*h~9h!ZlW&?mol0DEVEL)sMY#r^@lJ;V*qwzw0poqQhz_94Dc z@ckFxC;2|b_i4V*@clR6=lQ zKkPpU_C9z=`F@D|M*;St&_7tViys5~3Exlo3gAP0*X6q&-}U*FX8aWQYwzc4!{bOp z?zO%H#4rE(H@bNf;*0oC&g`*V^1BE1{yefG`{f~g45K-96aLr9!d^|^{*~aqNmv&n zev|pUTMZR&32pm_#IJs-Is9St!N&uC-xrJGJzp;KdEJ1U_jTn1lC>BM{Z_Q&D`$%0 zuW*Yd5w5;Zhp;!w@|%}c`4f#OGtwRi#XA|8L*oN_&&@-e24iI_7<3z z^F>_2-tdE>I2P*W1o6J5Rz6*3b2MK=21;^G@!*2)t3sGLQcyn1719fF}PY zbMn_hyqmImdL#Y{|Lx7*zApsll#`0$HkhJ!-VpqSqi+xJ#{pBhACGxTz=M1)ZuPt} zfAWuEqS?7Ua|rnFx!lvdGi~<-;<%dcSs~6RZXPP`Lw(-_ymR>OjQu&_%~OVt1e_ZI zJ0Cx#F%0Z!e9z~560liJx@jVbU%_AI)9A}j=Q|^~pM&{szGt6IUnk5{ z_}>3E&;QG?j}qU<-e30re+TwzzFWM2vkl7h4Z=R`uIvZ-UJLy7eD`MaaXs=dPG0{L zcb*Ty-URHed^h_CkK+f#q4K;9*xUJJ7wxV#P}qxzOQziVUPa&jJz(zu_dU3m2>)xC zk&aQ>zj-qc^DgY~<~uXc4HF@)_W*k@-?PcjU4X^4>^$sB>x1}Ri2b9OAE*B3!kCud zQ|Mct2d=)~180^`?eanL@Of}!-TxOjpXO7$=u^4sA4fdJQOdHFu%88ot#WZ1{rAtX zD=pR6%dbCFd@geIlV?rE#%A&dLYSI?Yw{dsx z#2zB}$2fjzuDups)A~`nY45vMIN``&=6}+!L|45D^ElsI`QFB-F(7|^Z^!*EzW4A6 z_kEZj;QKJ&6@1^OO{eK6U&ed}-(S+#?!c$8T0@jpoKF@0k%T!3|CooT;C_A>J7d7V zlJ${i0arYKdJbow+4$H5p6I|QkL29xS&jtm1nMamlVv;q}G+itH+nzVk>=H2qyM3*x>z=Jhc(hw2mV`|*!yC`_~~ z9r;I7_W0##D~#%An7D--@tf=)W?s0_KMmP_A&)x`(*%#{=6JUabtb=4v41?Yzi@6J z$|U=XD6h;|KeE@q)4=%^>hvw4y&ue+`Wf0(bLva*i|JoLI^w5(h9+2MdMwE1O6CBbKpAGuFY+W5)1t{%DGW?5~=}$FlZq3j2$~ z^0xm)GZ<@cGaUE&;Y zZN>e|c*=2h!T<97_{+L3>$<5feheLwua&FW6;^)lV1148Y-L>*zw0){aS=4j7a23J zz&&>#WDGeo60b(MI$Mx=0bwI7#-a5q^0OlBch~3>KUrg~jp4tRjomuztN7iGd~fFy z|61w)L7+vnj$e;F3Z}AZZq{5XyXFI#vA@c$xVJ;IeGOVm?k@JPXK8;2yZBr~l;_v^ zzK8w$e4b29a;y~1Vm%_q=j z#Rs`%sH@)$ZIIW)4TE3I??WycDsBob{k)Ke2>;cWmF2ui2s4+pPb}LNn~I`C*z3RC z^Ym`*Prz^S&GH=zw0Dd*?i-c=J`DU=j&X2hzxp2VbY3x3483xwxC!O?E@hYueh-8Z zJB3|wy^}PBALD)9kIMRfC*k7wXb1d=+YbFh?yqtd{ae9b@jQVzpBCbM4fQz$uIlqc zA$^6}f&T&OA(lU;a~e43l5T{nUKQsVA%3;dUj+M3r9m8$3n(z{7Fl)2y)AB zGUPkr#rV%8&aYj;RF*eMW)*0-C3DG zLVgslaAO^Q*k4OsD^B4EF8lkaTg`v6ul7Y;`F|wD zz3U&?&tn%%?IYe;{#{Laax3f)v40I*rTY--rYWv=nW61tJ;=5E}s_Nzn1gUN543x!`0_dgNlX28Eol?iqo;(R`B^g{gVd5-IX#_7jHni1!z z;QuQyrK9pAGGgJi9xBfYEBh0{lc_I`5BVPt_3#nePI2D!20n(q66*KWJD`8S(YX3| z(s^Y_|F_6{%tPIL6*zYa{*NN;pYiS72@Q;?v?oa8vmu`U!2A+uhw_Znbtze7>n7o68&e=2xi#QYMU^6|~vvbJ*O^ku=uprtUs!}mSD zAM=T?rcdYDcMRiM?jhp)8@|6LzL8Jux}IBE$~;G{ZQ8D z6ISi~4B)Q-=Y`4}{;E5{uO?rzN0`jpgg9isFY&}rJUqeleT%eY#=Oh^Df*bo5OFTd z@P|U%MZajSgmD<%ZzgTE$u7c*@A&1DJb%w6yz(hJUglZg#eB*9G5-1TJpU0~i8GnW0P*ymp7c|VJF{;&De7hiHK8v8b!-SNdd$`lQMHC~aHzXj<= z-sL;KUd7GBDNfPi5%yWqy&d1nLc0jAc%pxYeCWFlID%~nX7sO{x3Bqc!+kE_#0!yc zrJgRpzTZg1-upPm#ndO*`S{29#ivzW-IX{ZOlGV<*7R;8_y%(`n3Ppk2{9j8{$>ikKiZxCxaPrWNOZmIaEtid#K&Sac@4VvbgjWjER7w z`jx-J$qwmZ_6tLrdHm6?{YaFP)c!>9XbS!-tU-ba@BC0-G3-W7&6E0WLOzwR8)M#* zPj&G9P&Y5e9oGxR`?!$jyuak>DL%y|nBD>9|n;jP8dLa3XaYgg=0DEaL;~r1zz#{5R}zZ=4Q5!i9?6<+gU{Qfl?kD^oZ zbaMN%L)bS4{4cR)T{>U3MUMLcaATW2@RVwu4&!%_zV%M(B(~ohV9>c?$7gmioE?@NK5_?!~Img_lNjCP>c7m;cIx<{;QUdTFVs%*|4;JyhAi*bAuhpVUx@L^)cANN@%;neKk{kp>k~ZU$^G<@ zW`xO%{YL5jcSu8U?NQO8}hIE_!sJ0X1)ggddQc>L3-~YKd16(@2Wih zE%wW>>)ifxj6YZlCf|D)xa7xFcdril7QWUp#ijj7EMqj|SpQG*_lA&1;hsxemOl1q zitc?oIC8%OQ}r+VcG8sG%qt1Ai%;jk+W(wJIVNz6xA1B3-$Pkqy4uUg{y|_*Apf!} zFRI7SAtd*EgcIx%%Ax&G3@7)tP@V{j=Br5W-$NQ_h4AuIeq<`Y9}i{xP?i_@X)p8J zgx5H@T`*(3(NtMwm#K68I(#}y^C)rLkM9`YGT#cH!f8*UaNiI0D45#+zq5Hj?(c^7 zyIq)zRfm@oM@%!CebSuE(iQxkAuh@2{xrm+IByT$NqndCZROJ*>P*aY`0m1Y9^d(V zF>aaHSDNGHc)SY#IPTumDskg@ji$ohHH+(>#52WrD?aTzw098B=W&0PPvHdn7GWMt z`^p`^n4celcYXW?7tO3scKL4#aYWo`o*Kr3+!0sym(C+w$KGAvoe8TlMcO`^kDwkU z=NsMYnLEQA@{^DkrFZb*WgRJvQ}NTjWh>^kfEV*B^W&6h_;1J;ewuS)z85;!@w*K8 zy(e9cV8==D7()48bOUI3%Az#Ck=08c_g`e~k;7%bBYvvS2vA*cQ)kz zUiN|Vk9(hULR-G=ApI$n>3b{!F)ry^$Uni=@8c&L`)od$x1&#o&_Lz$;Z+%b;Z zhH#P-)jD-2+Td9M)(v>tBYY+s-wONB*Y`M{o5dx#_9)MN40K@){-?OVm9@`JNGIZa zhP*25ck%DP#`g-U56%1E2lmb2FPucD5}#;QeK#O)nwMTfzGc7Ujvn8qvB&y~rsB}I zgY=(79Dl|4fKc8uh%5SQzNv>nT($Tnc@q63yniNa#D6YvMEqgmek*=*KZ(427QcVY zaJw&dKl#Tn(XKr2Ip}SCI`PQ;CBnXsIG%@H>y%_s{~+Y~Ev%n04{r!*|w8?KMP?LPVld=7Qc}>CFW74)@8*Z zQ{nSZJoX&7Pn~})q?6+b=QUYca!3CklFx6G?#<|{vERrqw@2LETqd02xff~Pg6~Cy zzYz0_A^n&}q;a&j%frhqocb5%v!@czdr3p|q;TGk{R4a-%wU2?TJToP|1r*K>M+`4 z{F)Dan@C^&@h(Y><9_6`o~HbsL!2^Cru{^} z$^Iqc5T9D@s(RKZyZp3H{T*Q1UdkXsc)P{TKPx{b1qz`58mS)x@WKDvyF`%sw9b6M|c7f#MQ9 zsyxPisX0P4y28AbcwZUf)SRdJP@nw%CFJSfFe7dGYsCF>+%F(p#1rmn-|fJEJ^0Fp zzQ~&w{u_ad2QPaxg(G(~MQ6%AMLe>{cc`~15eez`l^6`$%wYn<%w3gweq-wfftOId!z7t{YJIIqY3h5-8n zZp9%w?;(>V-kb4%TfmWD?k~Jg67G4M3Lg6OFgFY|kJ34faS^{B{bZDU2!0aw2$y*# zV^iPvXqxzm_7lzaIpY1y6lX{mvtE!^%)d<0YBFE;7tj}keKlbu^O@t^g1p~~@5>>q z%J{~|5hrfR1H1~qi2oGoTmJeUcms!jZF9BH3I1`~MmRUV1@~iaS%!Hny!B5|7vBhJ z-8R(4ub;x5+K^7Y55=@)iZ*!*VPtCDd^5!J?O^7(uR&nte}IdZF52ol*cG>UsFCL= z{NExznSz}Z>R)!9a|o_5KL}yv)?I3q?GEH2%32E^zulo6pTkt&ig&m*?jO#WR(zsu z7HJQKQCv3!S8%yS7sY-$3H*0L{$l)f^IqWS{P0l7yZqlu9>;ONJ){xGtL8?f6Tdst z&tiNL7R?Bc>sWNlUwJ+$`etWRBNx+hIRc*J=3=g?Lpal`oc2e)-o5@qV3n?vFi|FE?Wu1rskrpW^+^ z5H`YY9o#v7p4NKyD?)hH-xtYG6TbP?%Fu)tVKFaPhPeMQm~Wy^B2Hdb*`K^h+7Z8Q zJ_&q%S1MfdASBho8R2Ci_MLf%9tbh9y} zF!u%jx5iKvjGQX*YWNf$&(H%SLc%1NP8LW!e7C%Tc`y2t*#pP4m# z*4ld?`F?)i*Z=i}X^|@BSzn2bW`<2fCF1z8d))l#a?uZW-bzo^C}?xqVUI-GJ}0#NBDhi}1+4Q}{H# zSMr)*HF>xSkK7C1)Z+`Xn@0loZro%)Tk)uz_uv`sLEL}vaADxm^AVixdjY=>_ZZx# zgU9zG{wVMh^~LW|Huao}rnS5(PRVYCL#`UPw*@Vd;UqIi&h|&0(EVX+$REqIPe;9f z1iYsJBX=xrqEB|;gYaK#@)^M%MmP<;#h^(y!PI>{@MtVWvYF-t$eyc*{786A-(skv|kBX^4V9F?F!{j+-> zZz$Z+X8ER@_yqqDWh9x`0UeRTO;K-Tvnw4yu96MPRrJW6V;Nuk3i>aAwvtWc5)P$X zX~BC5&Ciy_J;##xZeNA^7@|Xwzi*QNiP&%61xgWUJveVoR zjj{6E?<>&04rv3R5jJV6yh&b=e;|0^df+6@_=a$;wCOph4XKW)?ucgxnWEOxZWo zw}|hle<-^|=+-J}lTe?b{-fyqX6E_3>DGsPty%uZP*-GwC|q(UBRmT6_gLDK;7aZs z1$op2G@i_hx6&YgXW$$PT0KqrUCsQzhPweb>Bf`Ida(8%N}Ha9y`#VhAnie&U{{%W zk*oamP(ME0m8c&|^DE-s1-<$fJ;>H2*P~d+Fx=Vpae81exKfmlMOzUM4q@nVy zL4O|(okZhf(itBkEv<=EfF9u!f794YrByDar81Dbje(Ye7jud3;}#l9mr#0z|4Ck% z_k1g9o@KVVauxm<^tTs5lW5!uSwwe@S)ZfKyiPIQ9w^@m6IZ3Du`$U68vj}O)H;qM zS+L417wP9YW}6cql3lE5kvusK@w7Iv(kz3D^CCUf5#843rFf!G<5=?Fg!JSNG+pwy z1g#@+pADF@Gf%0bt{o=7P&&FPuiS0Yq&ZC$uh#WXGRsS0;w6=q+zTvaS#8$CgTyPi zDZV4p)>v>lAzWsT+te6G<)>WI*JMM{O?*LcRWBD>Xc1h=v;4NFxbw|=IL>SnMPJdQ zHcg?8l+L#5-X`tMe5)k?Q2wet*Wx*;JxSmHWtQh=%UH#lkMd(#h+PWYt1aapcA}mO zCcGVp`@@WHk9zujBKCfpb>G@_XQ2LHC%!~}f4+}*dGL&+1J&G>a)}=Cj>_NaQs1WV zbI1!_l-&SV)i1%7{i@Pf>5vYi+u9$fUX<*mKA_SmSIOLUs5io;vBm2quMo}>`01?C zrGUR@KIb6#H{$*V_irXl(NjFTC@af-H|ln?NpCt9u_->)0c&1JOKDz%OV6+!IP`2g zOk72eT-9GGty({%Hm0$_PBVXM<3B;`AKc5ZSYl1D{NHo5d+260aF8C70BgcS|Kp*v*aunx7~xc!d?3>=#FzwwJ1 zL?vxxjEE63N{z5lVnhWjpLzqMzTr25MxbbHK6bHi5-C$g{J&0LjOPD8VVDPG4(4Po z=4Kw|#fzFg=EpITK^DTIa|DY%F&1YDmSib>H7A3YI_k4h)_@(v4rUG6A*>NA!-?02 zvBsmJD#;?C$JOQN$h0S zft|umWgXdRtP?w(ox#pzXR*$#3p<;2W#_PN>|EBJod>zwgPqSVU>CBB*v0G;b}3d- zd$P+}FLnjK|8o_-`*RKJ&8}sASYLJ>yPox9H(*`wMmB)m#0IiK_%_gBd?V-FIW#iZbY&?6AJ;WYnkFZMiD0>Y1 zOCM(w*%RzZ_7r=XO=6ST6!r|8%BHbr*>h|`V3)`x@`fZ)BU;H#m3qTeg{PVc+44MnAA0@ebBj z?7#UL?|J@$ckFkvUDy?~hy9B8(|*T!=YO)lu+#S+wioA|L-29V4esDh?&5Cl;a*;k z`?#M6c#wy9m`8Y&$9SA4c#@}hnrCH^lsDte z`Qf|;KZ3X9NAhysiXX*~=Ev}3d23$5+wivhINpvQ&)f48_=)@^elqXCPvNKXj{G#< ziJ#8T;Air)cxT>)pUu1Sb9gs?F7M9IsV|)UCoKNIW@F)3G z{AoUkPv%qjGkhwa#-HWS@#*||K7+r&U*s?Gm-#DvCV!RB;;-@9{B>T%=kU3F9)E++ z=Wp@_{4Kr^FMhwn7x8NTE?>;w_G;Ggo9d=+2KKjWYC zHT(;{mapSAd_Dh?f5pG%8~8@PiGRau`L}#C-@?D+-}4{%kNhXTm2cxe^X>c>zJu@N zyZCOthyTidZ(YGkiwEU>)w+lGnvD@8mvj&cX90xn_)--G9rh)Es#|Xy^$KmdS{4wWl$0pZ6 z#~?r-#@)*ia8B_Z#{TvUcO2?|#>WE}IrkWcyO$d$I{t8Ob-or@ZY+V=x!kdimAh~7 zoD#S;=k`cb5QtQcgow{ zd7=9v_bmUxp-bH-hjtjJgf0yKWu)#^NAZ0Z z`zF%f`-J~Q?;^bP@TW1?wFuq*8TVB8FUEkxP*249XS61IhjXrHu5X^N#GQ>sy)kdx zoA5?r4FYNJ$B7beeea%xGgj`nD`vo$mV#ihqfPW9c4F|5MAzgB4Cz*~KVnb1KZB@U z>G%Tm>xk8`Lw$!s5Oj8Iz){G5JHCPMm0%a&7EJ1V525>r&*l6jJ}^1g{iCCYyIEp= z@TP}U)JN-7#lJ13z;??HK_ofQzRrzXqzQ1(-LYq|>Rr5q)$f~c>;4=JE* zIzYX=0#QH4)the;piGBC zbsWn&$G?RbY6vBIxQifOP;Ua|JDc~6T^{Qd3$iO?SH-T5T@&jao5{|1dwH{x?(CFw z3*G@w(wz-TE=OIpc2)51tOc(qxz_!)(WC@%ywbUZ{Q~HFc=mPtE({NsvvU5TF%zl2 zfeK&8XBlIlI#Q_(C_#{w8a<(w?qE&$TSj*%)4}`>b`?L<6~rqp-4J^*yB`AhO~kk5 zlhG!P-Q&>?bDf>|MySp-QjcfrScHj5YjqV+a(=JidTE zZOk`jp=Db@P=Af^dC^|!4an_NepY%OR6*Jp#L#}mB6qcWd+G;%hG(Vmm$5swC$$Dj z3>$o1U3rahmpc}J+V~oIKW%I>8U!xRe2ZK*pyjKf6w-iF%y!q|b=R^<{A{Fu$o(+Ne?dGc zat#5$)VM7*j$h)K#ozF3P7mR|95tCrE}x>eV`sX|Nh)n0Z{kcF&7Ad(#?DD7S!0AI zyQa7%x(Jgn(nd74&cia3_!P$-Xu0~v6h|X>HE>JWW|WY84@Vj?!msAd9Hqu%xZ{RD z5{Lxd5?X?zfJ=?G=;zNm((biT)75;c!~T0M7cOBGQ_a`A8aU5)Pjz&28>vN(HytaD zg`u}Y+dv6}g3t=MHAXMTweDxrC&iLR=kO+DwWGxN)<{M!&8&5-b9^2Afo}{tVMYxC zF8I&U$@6Ax zbsX$OZY=37bH11v#2P!BI1gscoHN-XN3YBknU>Bo9fQ~s-a37@&1PU)0`@wOL#2Y#d)^#jPOuaFGY2&VjMW=y(y%`grF6A zrSmH1)z14_Z)Z=|$9YobI_LGyj(jlks0<$G9SZEx+z+EOC~8R2YRGmZI&of7#UAB{ zgsMPw5_>$eDmVwda%pg!)62&@A9R+oE$KzjVDG>z8REH%w~8&tK)haZ2Wp|3FHMa^ zuUQ(LhuS@heVG~0sD@Vr2Y@H4Af;wGYxrfXD`Z(GeyC@AdOilm3;0S%MKYb{;^~j$ z$9mRafc%Z8)-wx6)>4d@4rj}qm5>rXyxuz3xytz@>x_Y{G|1YbM%QA9SH|Z%2k-^X z^=zTDJ%7hp!m6F`Iu|=1#Wt#o+*_T?oR_-O#xE#;H+H_a5^}waKLwNP60|gNcT>LC zc@0dieb6=UrJ%I{O&c3|rXYP%yy=( z;v+Kic!f6*Sc`r(!;?yU>4_vdx=wR-a&7XQ;Y$0z^$bZp;+f-Vo$xvQj(}qx-xdfv zB95rz+0-cB$GL`63t#3cadhHMN?PzizVXmF+_($|$Tr?6K9axddEMh??J)p65d1wCvuEV^eT@LmEOo#3KX?7Q4T6)X8 zUi9hD{4MxVVFyMCYxzXiJZyOAhPtg160Zyf%lZt3{Qmb{OI*I_G8eg(e3`2TM$FeJ z(^_C&1pe@1T<}jai!yfNpRjp+g6Fs7IP}Ug{&%Jnrr}c8boNKOC;P~?-1Q!x?peZb z2)^Jc&3p*%x{R-Jec@W`TIZU>*1IC{HK4kg?_}J28FP3`OTLc{fC<%*)$?BHX&Gpf z9?v_mus4F(ovyzEe+P!(sW9*lOlC==)Y}OPF+xeMh@}sO{D`Yi&FD7PF^=Pxy4UcgzDv-P?!X5{?}T>k>F(`r zgnrZ4eUA#QIXREF2S?rQ z-iA6UMNe}9KAOMJw&00&Mo+^SWj^bZY{kDxPjJsc>?(}HTB0_c#t*0;>buk2&$^#; zPj^4>ZXc-R!(qIi99WL0i{k0iMuOL7cBJOGtN1KDOB1B5a-*~u13bY=&%f)w(LV^2 z1kl33z7RdT6Ix{r==>2alv+a}N!IXBd z#>e6RPCfxob2a$>CGh>d=&z4^2B1ebWcx5la9ye$Mr@rp)iks*`s+6SFnhrh1FY0o z%^zpC`PcA!Qf~sk2_W6^v~PIkdyeLNFlqETdy~K8d6iXrdSWrGJz6Sl33D*19LyOLxPOKD+4_e zPQ&Z1=PlzqP(#sJ6HXFD*{vi!)834i?AB7?zZWhw8hRHd8bL}P>OIWc*xSV0)Z5Ja zrzgu=cu9I5>0J}v;W^5C8t4^ra!=n5&sxN^;HP*`^>*~G4{nd22ANjLZ)Zz0%h;Ci z?ReFS3je46|9Ic@Z}rTEbgBaPPv*_p(fl_5C%*a6!heU$L)Wl)2|fTGc{$XU zzwE!pzaf)MoSHsAO=EfbkkT967ir5nmfQyGaEzyU$#CyD&ySb@s^sSeN`qJVryvba zPz$e1T##Cy7?bp2ZsRW_$O0u@+>qwrpy{5!{man8<)I*?=wxV5l2naZGoB5*6W8KJ z&&7Uc#1%2X0dfCGNVmJtqHSRTz3Sh_cSLta?}qhN!AgvWLVH8yn1uWmJz)uVgoCWy zu`Q?L>l^DmgbjO}Br>}{)eU2X0em7pi$++_!sffmy$n{#A%RALvcRE%Qll{>&j9|t zw>JJ6-yH9SNysNLU5l|E=zoXtAI5%}wd_xfm9KWpVDE(<^Pd=a-2X0Y)(_%O`9F#; zkAEB|UGz)}_3wX!ogMGP?~ROMefU^*kN*dDj9m_A>O#2l#`LiGemH12GG*2r^*_|2$a8 z4}MnJIGcyAmJww(25B^xj6c`RFB>6kxe@CJ{KMOq}V|>Bt8(a8l@IWo=otc9YI*mE33b~SR3$)6? z=A>vRz8RJ>O^RN`W5F~uSPO7$C!PuJfQDbCp~$k6NXzZt!33G~oRl<-c^ z)>s*)(g*M@(03R3npX-z^>1-2O(L;@JBqAo~yyrOMtbJf0g?vb5#zkr4Mh{7&py6UAz#oWzC)U;; z#H8=hsJjxQ0pwMj1$`l3*cb6deKB9$m+&Qh7$N$`2JkG#L_PwxKx0;cnrh@L^KC=F zZ0uW&T6N;XnJ_>=)k-UkgmZZubSCX|Tu$9n_CIoX29e zaRASxP6Ve`@c=t0b#Ur3*2TAsclE_k_viY$`)JJC!&hQl;5*y*8Nb*^BbpVgr*8~K zG{g7@AvYU_`mRLDlGxo`YJ8F`F`ncjgQJ3NFc(F$0dCAAT?guoLIY8*VZPxgQ2;W3 z8$T}dC?LI=VT|^5@c!hxK1d@PvJnIPLEl3@tEJ&ZO??@>5=Za^p*h@;=rMl`FyON3 zzAmvDJ{Nm7=mI=iax!MO5+#1L^U-`jW{FGU-YT3BVXm4gIYa}ufYGqcwr)dd7Xa(0W3|q+KlSwwu7Zx=g87zusI#)r zkB*q(O!@sSgWF-FWBhMyV1ZOH735FD3QPOPVOiiGNWTY&2N7EmjToiTi`ZfQ#(vNN zv<%P|{h*770rDMZt_QgPn~soPZ5>ReUCBjX|oKNQptqKpErn z@LB#+<21g=ulm%v;c4j#?m^0WK_9GBXz%bXq2Exym-{ouZ@zCqZ4GL9u&Q zaI|+n#H0<(eWCn+Vh)Ao12e`+Q5uoV=3l1<^O4CUxGQZeOq3dT0Xt)iM!uy6S!Nky zcW{r$$q5OcMfd?olTy^)!o)D}{Ah5RKlB=CJ>#G1_lGbN=09V6NmQocztkY?@u69u zINSfazY-Wb&`OW`2ZNV0cy@t<^xMGm+j-OQ7LfRtjsgeX>s=bD1~gQBLD$=5}DG#2$KQ@0TQ3}g@GqwX=FITpBc0&`J2 zZv>Wwsm{0Yg@Nt-f^f@l#3)D0y%%VS(NuYOWaNWDE$UL2oP70-e~`94@J_^CYV<%( zgA+qgQyHTp$}aP-Z_I+fsVEm=DY#EORZzfR!E==wBt8ELT%K74={Yhz3eR{=rlsI^ zPtY5rKK6MegLy^u3~19ZjUdYLsm+n$OXKy?6B`68*zWXvlt-797J4%VNlz+K%ivtJ zY}yzR+2*@5QWG1H`ZCsy?SdAW7OBMsmo=^v*jm@g!DajutN?TjZepEq(=0^&=ng(0 z^%>*{g$7_8Fa_`uV+!=ma&}R$0vhqs;1oa`1bPK2mLN0XHuCRfUxkO`bGOWji8U_!qcQX6Uw=IK+Ai z4*L8$MNdPe-+}NH%%PNu&=kxg(THXW4uvQ9C&3jc@k;nBqElE~-1Mt}yui#RmT|Gr z9IXJ=Q?QMuC1CqR-OUvLRBta}^X5yMN>z(_#SMUOLM_wtO#xr7Ob&&=2L7GtDa?g>slZs0 ze$7zEnZTS7{1q7Y;mHZ_yl9pk4(u9?nW-hFU>wsmR>gkcGXg=(DbcJlcmUeD z2lnF0u(WTy73cs9WHD+n4as*uUy3qijQ4SeAd`~DiXdr}qfMz)ftkSx@Yi78qdm&B zK2XDVv6J}anfIe7Ah#bOi?7K*+Oo}P#}=k6J|=u@xOKP%;##0?g6#6lOw@y%2f8NX zk5}`Kh^;_Rd)l)LHSsi_cNgrYz3e&9Ue-OlmueBxJ%aMi!@QCYsnf{g_c*mH$%w1N z*MxhAX>3z!TnD!THvAG;2@hdZSdDE0)hO+d@P_C{XaOH;aW2-jYN^)D)u0-To6!dB za?H@qWc`yEccYihLi$B>XdKF`!nZS7nPqrbmoGlE$9bS(5>W1pt=(mogLM`|-)ELbSrH!i~HQREM zo-5f7&)(Sepg4n*L>v$q%LhgVA-)o=HtYAL~e=P8o5nij{@~3$bTZZ@hEl_YK|yeh*}_bF>pqpH{KZ{`pxjdAl2F; z@Mi^DXB9%9McTm{&lvYc24W4m)Nnw8K&G*1%MQ*o#LOV(tMOk8>xKTYArEt175uR1cWhJW*#!9uEt-t60yb&|pByiY zLmQy9&q9xF7Q9`>mWq*0#%L^L4xTD(pgz*DQc}jru#MBkCDABGrzePYKee8-%{v#o zQ;n@uG>@7#ZpEzm27W1O%E0U#^}=7#dt;FP#k9p0(RC;x%{@-RX0sLPCcv8n-nk+A z2Idtj(b6A5LQG>>$f|1SA*r>fowp%Z*>h+nmgbx0VN=s8w1f{&+zqQh{lbIToT!v` z(C&CDDgCMbcHwCjM?b^Mt)wZNVB-#1)yt#Dh`MNo`RG;9@-0&iR*rrMizfLIVg~cC zqQest!$-17=pEHqNuCPscnEswbUp~PBU_`jtP-W#&1fDe?R(EJG-vN~f^Q^t6X`(s-$UrbN6Rn+C{7%ksSzE~#qHnvi=;&T&0<0J4Y z>BX|xD9nv?gS}dvs7@_`P2CKAtYz#-%zgX>xqbrX8Y=mTs9lm_XR!;CYfy*8mnX%h zv1f#z>ZEOIB-oZ4KGq9Rn!(WQ|0DTD0m%(~| zGxmC{D%K91K&AKyo5vQ!-a;9sfF~ElO3_!z9(q5v0`bdYAE5l7g7$eBC$9iCieDZ3 zEcSV94RAMrJLW-C&xDksoXFay7M_P$r>I^*pl!~=Jkp-n zar`&L{t-J1bNheC>Kl7w+t5QEL~DJG?PEdASCeLViN&}NE_50X#k=rG{3SL!S;-fo z?b3!HF3tT<^Hrg4=kbQ|Ad9E3&FT5ofRXN9idIS+OViDui&iF^2`)Si79iE_$E;oa zc+B+9#R|~6G@P`~ zc;htfNT|lD>RQws&BE+Meh;#bQajLpDE|z4NMpde#9Lscvl2J8QhoNcs{-2(FNog* zuEidQOgb~&HImP8-Gh0-QsZUUc^G3*FCL3t{<^C`PdPhvS*=OTO;@ z!%>^;9~|kL;%}S!(DA#YqrYRQZK@)=h94AtJH5ldz~3-@QZkZ0J+nF1Ke;wu8vQC- z8m)3G7P66MX{7#33b3!~Fsq()|PRSUP!A;8b@{VR&<_HoD6B zVXAYiyXWuZ)>wI>YwWd52xXk-OT~7_MtH_}HV4}!?n~}Wj1E7Ln(F!3_%`&j@ut6f z^r6rn>DtU6uKw<0Vr}`w4%(a0I=0R~-1kIgRis|>^o%e5Tk_B3Fi#@+u= zzI$6NmPjUF46bm^57Hdoqv=CEU!*1kKXE-AxiL}L0=Ffejl7*04jt3Sbw}dP#K^=- zS7q>%6z92B)W_T#2XmWR44#2Yw8c`HaXk*JF-X6GMI3?CR9(iO*9w_Bh*^WwY}W z_UGQ8rq~aWYDZ#cVi(*!f`U6oXMd@6 z+_4_=H$w?g#mQ{eU!vm>D%evYV^0SDfnOa!*LtZkg7?_l;yJn}mzWeU$l=l^X-d`0 zgnWSzZIUL~btbHTvN>w&CWLC)cbGG!ICTwA-kuzhq!G=Q433zj2znp-K{orP3H=q6cO+^N`U^h4H{iY9jLCl*8E)V` z$a{7OuczXsOO^3$lqg|I=?C{y`~=K!WV5l9U7>Axx>bHznB;}>RaTJ&3;4Bu$h52e@w|BE8+ z2Bdve_=@rV^t=+jCoorKW~V0RN`^INTnkb(mq;y)@}x#22bw9D3irc2I^XlvfP9|X z%D+ghwZwfb{7X&Rn^Vhkxg0HW{y9~_bxpSi?6vgomh@DT!fUaurDPecSa^8=7mb&! zP;iQ&!|N@%+-laBjD1mHwG(M)!T)FauN)oO!e^x40(?q1o1KdLS={vTL`@qFJ6E=B_EC#p(wJmI zU^8aPRxiwjAg=*yB4#snEH`s4ci<=@8`Y(@P|~0lrWNM;2JMYh6gua81leRu^Sv1w zDC$k7*qOc>DSGEpQJw#-QYlvv&$%N6{shpWp8W^*&StYTUdos~#=ujM^rSMDWgY`| zV-aJWWy)qZrl;ldl|B29^cl$W58TwVv)R6x4kBG&-*rBM(tRVeX7Q_=NTcF1smn98 z(-22{Va@Owvt&2~6svX$N4hObjue{fmK+YjM_59A;UAp~QyJ0zxiH#4=YK-@Xm4c1 zIgve+p%$hq?WF%te0?(w;3IlCM$%a(pg4pLZZjuA`(}dO9G<46va9yQ^b_DM*)&8z{`T+Y`SaC-GjV(ta}KX?J_d^4=mE8kU!xdyW(q?_`~C~-(P z4H4;YgT031U|i65c!DYclQ^WC?!zqY{i5!xu`^52C-*V4h2`Ezd^piH8S&5LaLQ17 zlnd!-(oNay@iF>8F?N}&l|>#&4VcZgv%s=h-NK#tN0ge~>beB!sb|yGpoFX}>8F2t z&nAd$Va0`za{^n|{Q!{{y?{lS`Z^kCS8%{81l%qD+w-}Wd^BznmYWJKH8E&!q=Hf1 zqgUl{#$trG-nAntYX!1VVA4Dc;gJNRx|gH%Z1zn?x@n<^^Tn!#OL*#PEFc%;s1v-L zePsz(u-+mh>z-acgY3%1t0zCyjpI=S^mhDXY+_>Eox=oSj84W`!&&v@j|*s1bJUL& zJ6v7dSW~xM`Uw?S=3>`Pa$G=le*?-Sul9KLO!;x7C+0aQba}j2{ByubMlT1?uFv6Y z6uzY35viM0YNY|Sj8+m1Gzx0>R?Pdp=GL#CNh)wvJ6!S0y zIUe&=_87c!jTjmi94c(6{8;dk36Gj7<+z|7p!M@;QR{Z{5dZFDXL*X%eLnTeJSU5B z+^LCrTX43XZ2p5Oum#?;!u30?Ru38snkX9S3-0>_;LT+K)so z?VKxTPk5dbA%YNfbxj9!hUbM`oPyJSBphVsnQO*q-ccC;=2}~qaMyzpNifBbfVvt|<4h2miFVekj zv6~Ju)EqB1f(9bZigv}VMjM1lPpqz!!mV>5)jP6T(yXwLaxoMl-s#Ma=cHMctx1{{ z<;~&QpE#S9nss$9p6C=_Lqz;-(7=Up3UVKC?lNgrlC=u30tbJRx$EniU6q;0cvxRl4_PPBR|z(wf!BXtWW; zsEstMmSe><>vH2`Luyv3Hnwnd^~rkdF6j5b{{_N#v2Q@i zX$(yDMCe&|lEwNWdZ&x?b`n^17QWYW0;D^%aI*=C5|k^W1hz5!_#`XtS2#1hT-eR@WrD;-|| zE31I80LYQUS0Z+!iPHpiNcAY&^d~^K`F_Sf?VQ7hSq0WUrsbHVyidT%e=pY5+VVG} z3!=w^%6P1k5|rd4T`_;Wz{Zd<*=%#(s31;D3zCgDWBp(V+-&wX-p1e7Pd4Q7W|~m~ zu4s`^y%(riWkh=0#@OXLvL>{vqs%IG*5I5!V=NY6R);r&-CH z1WfYgEoNHc&HY_tO+1o~55wOHIZ57}XvR=#DJ}kje8fk(a6fN}%jfbrh?COdO$*i{ z;g?*l%2UQS3R{<`k{pwJBW3Jbe{nfRGYayOa*Vi~j+~HOzRSNmm**EwqWO0&OsNWK zDt@Oo^dQ>}WkZtGrP-33@s6#O7`K@_TnH}pcJVfqD+3aX+O)lxsfH91uGHHVSSKY6 zl1S2)p;<}U>U}e^O{IKPvP-oJ;ajB~KJW&+s5y4NP>j6JbJ<&+c=KxLZ54l2&gN1O zYE!F3nt-xS40MU#Dlmt+hP%3pQ8n3+7YN@BV7w@vNYQxB49$T%FYpHbY3JNq0n(Sx zvVrkINY{wH7q}&UD}2YW4+84xU1e|_8ya<+qPb(QPA;$1lk(MmzSz9hJkLS@*y zLg6OZ8;Qf=aCgGm7PSi58uU;4vXD0~GIN%Cn{@5zxi+LUioTEa2d3oG)#eT;HP5Q( z6TZ4+?NU9`n-mf%?b~wfN~78L2_k1zkBZN!c1OCOLmbI2NFn&f2-}nRTwa=s<_j9c z=hm@m8Dtl&6i}a6v+vm~trTFql%ql+l1S@=BuTzT>_&k>@Xf;4344nulz-7qZ-PWxPGOehq;ofIr6|YA{ zOLFOC6IYKBDZUubt8~R&`Sd!b7|*L%$@5A=5Oh<>Dj^gex%t+Gln{T2G7}f=g-^*x zhp>$lXH)8cWpa@2evis41&x4pFc(<&YmdBLhr2; zo_*9z5P7{UuvGt-@|R-lb?}bBDrbv@D^uz^kP_k;OHNDii96Za%Nebxt4m9l?**lw z@Go=v1-_kOmA{ukF zj>=|fon*0~tmT-s4rrakz}`rmLk;|ObGFio3SZXtZcBO?c0jIhUXFUj>l5cy^ep%(SvdN~dD9H&RlgoLY$y+;Z%VR5`f(#iTUt zK2cJ-uACGFa+~wcf@0SkUF&E`^K3CG-6xlZcAvgv~_o;uq1FA!xr8v(JFh-bfrz9P5hH)<{Co-bhJf zk?F$z7e3k>DJ^-5Uy+NYP?gBPD|^FcyLB;FIX2sHX{CU2x)<-*l8<)ISw|*+3+Pv% zw84LadlODOBP@4Zo^}Qv5~rPogiWLS&8v7qIl39)P;PWKMd6to|yIL}rf=2h$~ zT+NObIE05!2H9*739I{`dPiHNpnlV{&YWcWjB#UJ>1o=Jq~*gfOa2nK1oY%}Fy3Yz zE8^A2%K{7Oda zB&y#?O|dpU04I5<*{icWH|I(XiyCmfb8cI~6H+P03H$+K%~6bQa#&9wM(s+I<;6a5 z%O%%IBw&_^k)xZr!f#(EAuN&)@{*G1SgbZwh!qEduFS=nNSM8n>m+r{haL&Jvqq+% zoi)~rv?t9C(9Rlt-I&XfU^Py>4V}GBz=n%|xi?a23Y|{+e3&uoj~$RQBu8GfHKK{{-!gq>GOJB)6CNC!g9I*^PA&Bk6U( zTyJ7iy!{$3(%q3uO*`jCTSEA-qzFAE{wLaE6s3AeUvB34Ih+E}Ue@N~Q!<;@&D#ZRb5u1Q7g}c3(M+4R&d2nt|g3QaxJ6m!z>9Ac@#^NsV z&Vg#rd)X$}2vLTS$$c0NTq*1#l4@F06wk#Dm3t#eGUi`uoIBfmQn@!$VG+kX9Xg(q zMvxcnjU=fiuS4Cmb58G#G{L5$_D0H}UMZlk)Ch7vCid9mC`$O}BD_}o(_y=qN5H+2 z)#CYU;oFQ`ubfNzG1D@-0cRd%gue+6i>3WYGM@HEs(A|98+o`1_c4-cvj4WGdvP>rl+1a^RnkLy8x>8M%wXI=)=@UNKx*Q`;kbh$-R-;>=&ta z9<`#5cC*lJ=h-YmXNj2%YyXi{B|Mwm|K3Qe>^;U@ABqU8E1sKQR;5%c=M>hK3x%Yn z&>BImB~T1q8ZN{7U#^p!k*0MLf;Klbg2qrj(iBqSN;^@(3*ECLYAwMYM|&gXwJm2$ zsC5#or{-c67VV8xJxarrZ(0$26-PVgl0tG@*GV47=^}F9_n{)LiTIyp$n~M;Z8~hG z@u~>V#($MD#}X$sg31Yc#E^Ro$Sbxox z;9%^Hq}AjJ1)?Th9s94M)L|^1;Z={@KweF3)Qc&IP?+v$4^jfioXx$sB>DYb6 zc30amWJt}iPAIUwG&b#=dtSuTex#R$uYF*Zs1vzPqH)PbyV4dqRBzuR_E6d}_7}4D zc01l>9{b)%wX;TI?PIjFM(vH%R+gsW7M8c%ITsR^hIOTmtSnk5v0e?GQd`QMHS=<@ zZwcR#&bGW2Xy*6!b|N2GRzm7^FhiQ|`Wzh%v->WK$uofQf!Ev_z;=v&pxVEHvK^g_)W{m%#2@FV;MY zt&@=b)gAd*XHivJr4g<~yj(e#F$7mFs^B+^+1U`zN|QL!M$qdd1XV5iFjftv{iSRK ztr5yYPv9f~Ndx0-SmPD+9&YYZeO&Gpm?dJ~iZ6uqChaeYsKz)S04`5EE8fQ&IScJC zX%^0)~Nc&4`3i}>>X@AL*$fuzerFD|JF9WAt z>DW=gt*eidMpsXh&0?hvxOS(r`#ci!@g8B*;&ef&tOSPh|;MNvZ zHe@=z#waoEj)T$%3m@&Q+5bfxBX`!QnMk>_M#*E9THBX;c2&jEI*FEvn=Iv57&MEz zDI{kiH7s8`)5^KJyROliLZ!94dgWZ{8X2$Qc6@6{Yf&py`c;c+ z=}hqa7S+;OY6R7ynx57a%D!AUCkY;NADRJW*3 zQ|QyWM%s{ejQke0$Er{xr`8AxCOM`UTw&BTE>iKzl{;%xs9{8|lc=zCM>rZoRd^7e`;p(2RW>?Sgck>_NB#rPN3!RJomxz$m z6!v!PBVw+%U}GPFe^5@#-D-=Wa><=FcMJHvx!7?zANJGwD-qH%@kujovguCqKkI+a zKiyxEm|;mJpIOa%V8rjAhuHZhhK3W~d;a(ROKfS2X#~Qw!j)A+@B_V6KmG@~sdl8a z&VQBUgq1FWW#t%UhY+q_wWIg8<<1%j&;Qq&j&|0Zi98mI9Yz{YX*wknYonI}tEX8S zl8MAIvwd~Ljw63#B4RVHeVk?HNT zsBagkONCe5m3C(_nV7HXtm#MY=XtG~&f1RF^u_#kO_z_M`mtRjXbo>jNKH?a;PC_#Vh3#n1*{TtgeMuNrxUxg+ zDXB%R9Al5AkX?(~HG;yfaTbFsjnFrj1j9CdI= zt=b(LIxN&!K#OTQnKEOLMu7Y`Q>%3nSV97>>05o>Lg$9Mht3PBp0DDheVIQRQnAYJ zJj+A&rQBJAH=dF6t)bgOL(LK>><-?-oi#F!>`UFEYE6~m>^nu8VQin@j`o#v-Hs;$ zSFfn6GHAEh4lBH=hS8Pk`FbWnr_w&vj|U2SV@KYzVjpnT% z8D@%%5D7zHa!r-`@sV}n=AYz2si{Q?zQVMV^qMNg&I_o1tY-`ePS=%YJ{`Q*T5`O> z;+J^TkF7HX5=yfk-rQ_SQ253oZ49T5@6W!ZH5$5TjYeNDAmvM8+9_haNH4a-`(F}f zwE*c8qgZLrYZGaAYQ3mwmD}D+QhJf>OO0b)QyrXFk{jdQSTT)2J8K9o=eZ;;y+%Va zQPY>RsMGQ&>-a*Swl8HrrgakQW$nj$c9k&Jh+LEgmv50+Q|{kis2BIwqLLQ%W2;`2 zE9bOhn>2#%#|o}A1*O({v3QHh98^D+p}Oo#-J*62P^O~yVta@=P^A~QV3hp5#R^e) zG%mvUA2G$|-I=+r<%CNs=QXuoioiDge~=a^#!jN5@())l)rY!k&me8GS1HvEBl?t^lF!!eyG5!}gg);_v zc9rZ)>u8AROD#vTznqvrGSuV0g zW$B8|L~7b3TV(0vPB|5$YEgy@OQ&Rub;dxYm2P1z5_})qe~Zeriet2WX_bL$T%_mS zNw!#JqOvbHi<2&tY>~9-UygTf~nr$8@dYN5zkhA0tAcP#fDwkF=aB z-SRqC!Ih?vGEmDzRg1D6shlSV)Ed-v@$2LL;y1+m$8ow<{3c7DHR8PhD(mq0?G`v@ zXmWEB`bi3X(!SL2DJBhBIxQ152Kn-9F~1)x+rVmHs&>?rREv^qvA5&?Ws7RjV*S|K zjxM21luXq5s?u2@R*q3{`6e5M8u@8wja3H9_mcKsPVAW#B~bLp4TbD7QO(C&akRg; znciw&YL3x(GB2H;JYR7y@C2@6&rp5SBoo^~*vA+>Dqs}*#FzdJ|5LTS6@Qb_o*0pX&vaYSy z#VOUIZK75!x)LX@kaeAZeI;OY3gqHMSD{5oCVpQ86KhqLk=rccFYNiWS6y1yIPuIj zVwOE$p8`oG$+xcMDUgp~G$dytYmLP=8rIU&DUec9sTO?|-~B6;RH`3m4Ebj9R#4m= zT*{V-XZ*kJ@IPW`U#~hZe2^7(z=$TAvKer-^0-P;uKq9T@yq}O{qn#Qqy`0WPU%^ zQd4PBlA3zQ@?ddViq0{AZh4mZd*_QxI_G8U48i#xnO`TwUBaz^$&ye40S<0~W|Ipm%xnV^1 znenOS7O5j`BH515Ix3iMN2><6Qq1?uJ|j=?pg7{}iiA1^QgildJZ@>4qOU_pE znEDLWlah({R5Em>_#VCVza3xeScm#5)@O>PwZiCp)57aZ3sm(PyG-0>VzlMN*~jO0 zh0__?2j@~(iB_q)kw?lU@G`ijl2%9!!a2aA+Z)|2LJiK{rfZrM_k>$Pe$q)Vc$8V#$Z+&9Ol&0+ukmP^NE{KR3!fUxu_kQ6%5dLmrwl|PF*H`ZM6mz86V7LWszC|26!Z_E}a zx?4DwzDG|I9WlC$s5J%f4+ zL!Ogf=CN`%NfeUUEd}SPemu?ntou3lbWq6W7*!&>OXr(rvzoJ|M4|7|6JGxLrgn*< zIr}lk02}|`l6#X)=XQQh=3s}bS$jHmy_sI0Z>r;@&sx9Kj#Jbkg$J5tyoh1!nDb1$R+Bw@^zY^!) z+L0v6e=K#oxX8C*RBm>6zNKvMSo~J3Pf}_Y)e5c4uj*IFtA4B@BX;Y1Sl9DSN_ER9S z-#d@0PDSHe9a86;YDl54khAG~^n|DSkUrnE*yzy8+4^noNj_a8`h3&E++`oy=PT6A z#c&m8t93X#PQFx`fcfQ#xX&$8Tbi@2r$BaN>J&&jWf{Wpdg3h%;%vJ1{}zVCk^lYi zJ^KA|_OT{KYZ~b<eA>cu((Tw3qI1&gy66;0>c_ed*)bJoWTylYQ@P zWxt7jHk6{S5tJ?g z)v3xyL5rW0P7*}!Rab4dFLzG5eSJ)x0!e$-6-9D2XIr7tzt)0D`E(Uhba1G9nF|>TYssro#?9bv-*g$7vk%)^gVil zcVpM(XlcB6!cqniXCD<+&s~8TS9uC#;d2vbtNxch{*M zX|MV&|J}Jfi1z0qpF_+vhna5i{&S4?SZ`}!w5cP9juFM)NYMbQF)1zwQ>1vAVygu-#R(-pTGK63Zmya96Chgoy3_*=STE=k zdhjU0Gt?rQv(t#_#_HqWdQQ5^&+1a^YRrV;#R1zJ<|Noak*I zzt%;o?pjlMkz2e^STU6UxgebaNf(`yZslVMRsVEOx|OpPoZiBiXr3IeVdPV7kMG2y zMXYUqqiu(tPDOjwb=xnGs#=rds6SDHgP~DX+bcfS>7{S7NqwtDcGM-qRN6w$HVnVH zFSWI){pxBFMWeWTWNvpW#j8^wN8veSpTN747L4(}IaF#qL8TZwSidlf5lK|nDN(c5 zDTU=#*!H?k6^>mB$vUmO?R6@vPu6LVgjMG&oucvnyIL!hVd{JI@|<+l_WEsa)F*nb z{ZgE5hyFLA!aB86QKvxKIlFuAr0@LmO;y`lsaV@~UlE<}ODfK`raG{;l_^wzvZmL5 zs?+vKDTV&6zvxuTw=I4^ZC^*vm*=D_S~#Nz8gXaAs6xkQ%{YBdI`t=?7_A1yKb@1V zt`z(kOIX3BTUXoCTNwJBbbA^K>Hb3Jq+2ihIqBtj`#xoVX_t5rbs^75*J<@R>GKgg zFmgb3Dw5mV_QAXoQQIDF&NAxUpeIbN-B#>Lvc@R?y2QFb;rXVuBAq-Z{f7XZ0=ZQ{ z;^wpN3hYMs*T83HIp_-~=(&U=@bHB@NOPQUEB@(xQ@`-3TxwDv_M zXXzBkx~?C@SgEit4hhyZ*Kpvc^U1#0UF`Ox94<&UW7bn3i|3%eM_*Tot#H-bcO`sm z4_ffRW@$Br!snLyWoAwyE1j*<7&(hlL8NQ#i>g$1jAEg~Q@SteczFt>R4%8Rza{x46Q|F}Dz4jx|NtgM`9G)+D z?y+Jlp>w#Q4xY7_s*tnCh;;ItbbP_hTx*c$q*Grkeonf2Zu>dus-|?Qc-S!Iw_CVJ zBDYp%Nr|&3a&IXPCA7SwP*)-o>r0Pq^mRs;vR^crRP3AFQTyI37op=^St3l)-p-ukn3n#5Cx-XTJK#B^v^p3au;^^s_(*^cf`0pZo=R~?$ z(pytWzx?8;^j{O9FP!uN{&kVgpsBy*P4V_Gj>;7JUw&~^hwVOfPWlj0{@d6h)Py`I zUE;}e(xv}C;M_0p}9#M$bc z^pDK^HHP$kW=oYH>#|sA`EiBe4x%R=Qlh>%N*Hb-OC_#6-_)8;esNTCcCXA8W>2(Y zkiVIQMt_APIG>uj7YR_;RoGDBY+ z)n|FC)YJGgN&STrg0{$O!KxfJIw!r@)zM7xK@O9!enFd_D`Gykz}M&e@>||?mM3(o zjq&X8o2o#mloiw_#WK%#_ls?O4tLj@v#SE55*1^ z6dsK|7Ml=zJT@`*MC{4fQ?aLGlVX!&Q)15m-^i;gq8KOw!~PV|dQ;@E5dZI(c`b%} zE?W{?3U_+y!`MeA948aze6v%sm9*Y2c22srm8cZ*>TWB`7p88fxN%H>OTh)LusPMo z#HBA@=qrvmec~#elP=Hllo+a&MkB30ah2Y}SjZl-<*g}dAN7ZojL!0uH7#Rav89vz zPiJ|~$Gw2RWsB9cq>s+>RQ-VJot!vtvkKJ!SarG|by^>KY=}W#VV{avS zPP)d?K58X>{ieQnVU7%RD@h#LN=GG*hTfr?rY~MB;m4U;$a>jGQVw3Np>XX$%CM-eBjpd8kkUX8f?{y_YvzAZA8<@X0!)7wp&RMUm> zSd~EWp9-s_H1->=_Lf&;y*J^et_ z90;D`zhbzr;+bAc&Q89btV+(YJfH6AlC{u|m;_DkW_{l@+` z`Tf6@=3v_wPX50x+huiFkad@1NL~sD^oNVN@$Y5zu*<{G0_?ub7+{UHV5V4_W$*=t z`mB^SU?vr&+Op$VJH)kT zC$JOQN%(qD2X+cOm33sNu}@z<)0LBy%4759`6sXBV&w*+uMP zb_u(bU52>JSub`4yOLeSu12UgyO#A~ec5&Fde)EK!1}Wr*#LGE8^{K+o7rGCgx$h! zWw)`RY#6X_XCv4h>`pe4jbe8pd=DGV?q&C}G4PLN_zqxdzrlgKb=hX8k@~thdYPOW%Jk@ zjI6c=>@EDi&E8>);J(Wiv-jBhYzd?H=RaT{GMcscn0>D6Rf~{qA z?g4#|>nkR|$A$BF8O<_pW?R^I?0fbD`;q;`wz6&PXSSXF!gjEoY!}R!<8Xdl02joC@HMzFE`p2V zVz@XiflK02xHK*UD~n%?%i;340U0e^>#|>}< z--vI*4KbNJ-vl?s&G60m7JMtd4L64?TH;o?HEx4%$8B*td-G;QR3dkmDgttQL>pNAY902kwc<8iu`bA55$kPv9qUe>?y`g$LrN z@gO`H55Yt6FgzTOz$5V}JQ^orvO@bacpQEfKZnQT39t_03;0F+5}pX_nZ1lB<5%z$ z$T1a9!_)B$JQL4?6&PN_bMWhUF09Z#55I}$ZHP zd<_4KkK+^A!wBpUnQg$NRuFw5pa!&)tQk(g4P=ECe*TQVnXv+_zZU^3V5aUx#0v7n z6f3TFtQd>WCsw?RFC12YZ8Hn3_yeCAR-9_#Bve4Kg8Zj%6e~`aD@e;wthm~-BJao* zS!0Fgof%f7<3W0gVnt3m2*nDjgXAS0gknWTdj-`&sJ(*PD^6#xIDc3{ED;&EtmTTF zEfM}a+*7TVWYyQ0)e=?_$--($?tMC|B{`ST5&>4L9ITe)iu5hB)e=V8;dxJIwIo-b zjdlTk$WUrlR!dT1ZmgEDisV^YElK%jW3?pL`BqDkI(Mt3=Mk$V_@To$w^mEfi$Lzn z+iD4Ob^fzjg0ImTTP;cJz6Vd4v(?h`va(uwUb@wily$PzlAr**|8uZfk}}D5Dhl{V zPyTfSxj_MP&8a958@qrRo2MDOAXjCD0^~UHaL9-PIgeeCs~{R(8nRtT6o6R5X=4}U zj;BL`%wrcMH+XEFcI;v^I=it8zuc35vl_ebypzW+$Q4vbVC)K7gp6H~*2u{o8S`*BGZcWx!MPf{ z$eO-mV;7`;WXlbGlenvtzH=Iz^xKotcWi8u()Wd@?^AsbAYN12*reYZb3@;yQFiow zw!Q~v%D>Oe_kcX@*+}u!_aHC$9`wVx^F5&Bi5bTeWBvwCAl)}9h6?HbIrIMuZkEE?!Q)i)-<@`7WNnv4C_*z)z)* z1)Qz?aI$Z6DMaOmtVRhk+Xty{v*+b?-{x2G<>A{*@geWa54jsfyg2d$o%?Wp<~~q- zI91-D_6IsQiq4HXb1#DnJ2&cL$PWYw!T~$r(3w%-wGf*{Nm_-DWYF0T=W}LM&YlQo zKa29hB85MT^88pLz*8ma9dtTR20GG7XIax(*5`Yc^@YU;!YzGIM&b!UM>j^<;OJ2&6&NGYBLM@fl6XIffLgXEMxUf-L2)Cs2!_W(Cf4H1HA?QfP`5DQ$ zT%tHp{esF5RDQTp<%cyekLt?xl%kQ{Vlyde6i6Bc^3p_sr1ArmAE^9rrOFRPyQlI) zdOVi1i6Tw$f#L(jhYKH-iC|U6?c8T#Q2m1H7c|QJrHwLA^$RLLQ2Bw%4^)0Q-6}N{ zA1FRhe4zM1@!{;^!Tv~BvAT*^v7-6~l^>}5K;;K2KT!FB$`5oE%rjjDlgbZNe#jg0 zLwclnx=QZ(TqQT-dJ~yf$vt;`$T+5%F-^xevsy))v{2rP|3GSdHtW$`m{qjNdNdRt z&L=)(zl!#`<3o0^~IA z8!@9OGEig~fSesos#6^#+OoG`1|&5JupUcoZIu6Y&^`sBrnjmc4j#K+G0!y8qnB0sggT z9zPaVLPc4vbln29j5A;9I;WK~FN`j5CM#WEx|M8FphYj#N>}M}!0FbzuYvPQ{Mbvg z5?;>h-RE}v@elkbK7jwif8&Gr5dH@z;beRmAHgX&6(7aN@W1#t&bSgT8;vo4I@*sN zrx@@O%5F6ZiUC&=23#6B;QV2L=bae__~VE%T0h-C#egdT1IXLGbaH^_nZs2p&y<||yy_5dmeJb^FYc+V6AC)bu<8G4|es26%1^+tVAU(^phfu2PD;oMVb zAi6T<9h`gI1JYvWb8Il{ae?YE;+7Zf0iJhmK0>5*-@}XX61)^=uM2#PH{#6m7Bh|w zlCrkrAMg&m6Ys*i@g8W?AMsCkAO0Ed$G^ay=lvG_J$IWRnV00RJ4s3H??w36l4F;W2>RC9hyW#<9V3$AEWn?l2%{Ie@fbZZIJCV}m$A%Df!L z1}O%tM;p+k(gjE_pcrsEAE9%{fZWOf=MMuex3NLbOOL_sc{iY1AT!iKbx}Q3A2mP` zbYoP8IGrv)`ez$-J8FyCp*v7}$lDQhLY>i_kcvllqb}$k)D_(uEh7Qlj~_k5kA6YFqW_`a z(C_FE^d~xi{z8AFgXj?Y2PL6obQm3p<|Si;o_9Q&Mi}EjRCdfQ26$e6TmTouh43}F zFfM}AV=Vjj05S(TYh8e}!>MwB=S3j*O}HU$gd5`~_~OJc@w}Yo3!F|4@VuAtWc&)A z0=1rsr{U>%2F@wQvgZ*w!1Hp}1fb)w1L>IWYasb5u ziUCv?=#C%3kK)I058M+|49ID|z=ie|zBIZ(3V66@It%@XZ8$_7B(#Wu*HE{R(@&j}U3s z?B@4xNSv`*+#Oo+M%FtUV9U|}^jS9tfYIn@i9S{q5bWT$2LG6eNLx_rEku0BgcjNZvVMTiSASLyWei~P2y z2tnE*ulOfYgve}%@cS|Or7}dirPA|amP*gd-cm^s;!5&hrU*e1;^eW6bB~2g5rQH_ z)-ewV*S-9G8%Zr=8`UzXmO*Dh<$l$abDsf05h8{?{y();#{3~XkN89QtwQY(q#dXo z;@sjVk~TcqAA-b8$vjW;%;!gtl4Bc{A*c*NWe6%m`2G-NwWU+H%m{I=zEIWCnfgMV ziMQmX@P(R&V!lwb(V6%{Ek`TRN_6JFP$zp!X7+{3If}w5-jX?ZI-J>htQmcw%H!Pl zLJ@CC;tO@UC<-xODB>;I7M~Aq$;`e`S+BZy?!HiD)y3TVLVbkS;|=&seW6H1wcPkZ zWw+8wRvLsEJpP&(VeD`>~nP>GK|Q8!?rj&zY~P>|@r&h?baf z-s9=@{me6?{TdQmAIyx+)x1Z~%gxMazuc35PoDQk&K-rjrpBFlQw??~xphjRgAh9%Ht?)6IK?d9Tr#(HZAGLd4u0W=4D7LuW8EI_p_Y zr=$HzIJXf~$-GAx35J=`L+vsq|0#yBqG0`O8Y(sBGFC!R910IayMQV*M zU+siMHOqRn6H5DegZ3rpon*TbY5&4RHKnwl(QcQ~M=xf#qqLtlXy2!NO8dEw5kP65 z(tdV6dY9{p$ES|hrN=4Fp6|!vl*W+4|3B55Ph*U|3sTgX%-qWy$(YFebcI6_$@qMX z*U^=Y{>8`f>F4G6beuiy$83FcmGjv^nRDPv_5IW9`=m$3#_H3fm}fUHCpK1}abC{( zp#AKlm?z>ffH2SCarjyM93Btp=kW{pMf?(;h;u(yPv+(1eyrY~mvg3L^<-WSnYEi9 z#hkQp=CS(h=H=j1B9xO+K2pl5Tjp{680U|zVUT@<@^nl8>DDkfH9|R^m6zQb26R^5 znXh3$XXT~hqxcxk4d>5D|CIJ8qDkmwl)gFvospYyU2{4k_f(BP@6X7M(LbeqO8YK8 z{U{%${i})gV;X-99sK`Ot$n%i?(x?x^JRX|yXC)i%g)BLFY9&7(pM$AFr$2VS>r$5 zszhfNi6bXVKj|HLQRB~g-7?Rcil^b}cm|${XW`lSH9QBOO8dUXzX-JQoV@dMtMPva zWo3@jbuJozx@TVqYWCadW&V?|I~%@#zG?qqnfX4Y{oF*}%u42uMcuuc zX7iBVMfv`Ph{=Dhwm#3}vh?Ul$Ai2?`<_Q_eU}^Gr?Yu-;`@2Y)<^mN+4B9XaTYJ- z`#I5m&N4q~!^^|gM`@qZeoI{A&on_wglC6)@KBaw1`?;t6jCTH5)UJ#Oke6sbJ3Ie{iPTGdd#+S} z{)^|+d+BU_R}1aaxjfXjX8=CC6}7Lt=pDYypON-6^7~l&O5yvI_9^XC+Rr&^SB&n- zKc)SN(byf-pT7VuhzsFsaABM=b_bRDv!26CXovdq*FZJV4d`Nw@nxs)Q@&66KIQwA z?+-$Q(GWBgJPd}T5ojbD74nXb%p zGs+mN)AL%RHt2TL7PUinp!Psh9Z@IL8QqEQLh)Er() z`;_*7LBFE^q2JK&=ns^=o!|40M|F|B$M3TiZlK@2Q5xO{zx&bEK>JkYr!xPY(A)E(%iZWvR_E#c`bf>v_5G`v_G{pCxAo;r`f4i(Zx3lDvQd4X>ibmRPr}LgFg}7)a4J5EkKupuxyI|eoaXTnI;VV}@_owpFV6gZ zO8dE4hnJud_36DH^ze)0+jAxB`=kvo51BuAYjD#sKJvzB+#b)P8Y%zxcd_F0)7Tw!U7pjg$wkNbE{`$3 z%(lKVfEtwVpS%vQ51!Q4N7~`)jM07mVt0@>q_j`x@Os|WxGoRn`Y{q6K5Bp>=*Fmhtr2RBnxLkr8SLGHZbi4D=BP#V4E5>#8rtC-_<_+H!%--i?Ml^&y;@K$Q;J9}Fn<@;3Tr!qg4`RN!R#)0T8 z(;((Bk3%>g7O;pVEMq#x_bh%6kB8QI9>0KJ#4q8AkbW6Y#;@QhkeZ68;pun=rvCgy z8u2%(?^D0N^0)%7h$~?_kMByI$46~_bRHj_$4B{ojO$Z7|2#zbKIQvw;kQ9ASb!5^?exQ#nmt!W7{Hl%O%XX^d{VF3$<T^_3MQ+?kB58V8?04|6N;cIYVTm(~npX&Qm-=72W&s_8d zqWV77_pe5MpCAC0`KioLW&W$r)<!J-!>GV}y-RW7GsSMa^LE7IZ7R4K+tCqG#y*eL8=i&fll=_v!ro z@6mSj1KNRh0xs@`@7^dr?t|a`h|b}?AJaL!bPjK9%#qIFJ%s*2Nhlc|Mn|GJaTL*c zd~_ZkoySM#@zHsFbRJ)fPoDmt`t?!2KI+%^GM+~4PZmq zh(E!b@MioerfYNfR)jX_cGMQNLwBGnX?)-F=sLVvugl|kXSObn=iQ6D;rnm`KAZ7< z&l`$|;o*1$9*IZc(Kr#00V;e3kHgR6=kRz))A{>nYv-?uu0z$(^&sumKsC{s`1BIW zZw1$7r2P))bZc|mhcd3i+dVp#ePLsCdtNMFAF1i-=I}0pn!JY=qa`RN^OM}3cj_A4 z8>w?#(ExHMqB-Z_#%svv1Fj=qI!f{fzdfJ+WVU?DrtbJihOF|DxmQ1ms6JyD>h` z)3A;WY+?(Cv5g(<;y9dn{yw=^NuZI^xC}0f$y^@KtAH!wO1Ltv0(+-lkFNoa;2R-F z_I%&-ZihVQZw>DLIDLHI^Uh?9ZxYU}o!|4`hB`063*ndO`-^dQ>+yNs`e?p0O5Yc54IN6~l)g{rhjX#yb4uTr zhQ8lIZ-aij04+pku7Brs`JCu;R6f5r`ZuL-O5dl>pSfJ@Yg9fbNVpDv2=JpKmy>_$`J`{p%e`;< z*~sS^>D%*ijzf|2_;>6*os0dPl##RlTI^0I|NHzK!Il_kf?6Wt1^!NS4#1&up=mS)YY0j2lHgK!a|Cno;ear#oMBpc;DpQN8$CTzH%u}4p)`Gq6!FXnT z;2!4d;A*smpTaNVJ_<}`$frv%j!6{XU_NC(V?Sr(nDn%1 zL%1cv%fZRPrD#cT8A=SU;y#k=Fbky_L0w!gS6938^Vn;|KI|4Y5IV|#qdv~Q$K1_~ z4*tQE6H7~@)q&btX^{3*aBi?EAFnTD*J`)%0d{}z5Ip}lJr zF$>A7mBR9yOetd#+f$g&%wpz>Z-_J4*Tc1>g1ln=Wsc_`ly=E`zD+&0~62mVV5!w$Wyp@rgw0O)=OT>tdQfGhnUs!QttL}fBPfx4lX42 z4}YT_Q}5?S*~j6TMh89(#%mL`$HK`L&-|7AMKC1t%=+YJ&YQ_Yl9Pnv>Wl2AKw<4= zwqeTcd@H7z`Vb$|8m7E1zawJXF=Vx_sHwWzD|}pfm=CMA>ZqfGacX|GfLeqbZM`Mc z6}zRhvfHO@3gmNd*Se+DPidd>xfXxeW&aJK(3RSGE_64ft{?#l*V~ zAGaHE53oGbEak4l8PD%+Ok)Laq5K2IfuHu(^RiP_$BeyBAlAS2A?zbw>TqhJ22B$^#~Snu5rp+W%_quNZ(g9U@Q-|3_%rE2kI>6nxsmkT@h@4HOXOGC zspiIDBL9T2(D_qoEh}-Op?Ax zA30>L*E(69tvjtqDBil;>SEnvb+x+loyB_M^>M|-ADt6wA}=$=!~wR#JnYO3P6`wg z^J$T|$Hje2wYWq+-kHrm!heX0iJwa?gbmti`=x-wwAGrj{q$lYE6x;?Bf@~wo)e0OI-aGk75s@%_P9xkjE z<%969*6}BT{g`4-TXCmwKvCV&@^t$bezyCDIms<8EC_yxesF(=)<41?n!`A{q-d?tP_ zzUF+Tr;3Szsmwg*O{ala%plb9m%EO6R{X}Q#_ngnVy|b{F*D@3aIArNhxT^z67hxL zy-am>GGCL8hz;V#@TtNW{&#*UuIrSBu#yme8snsl_xGr--kLWB6cLWrOa>!wpT19m_Xy{x##7 z`?QCpj_w#fo;l`n94SE$B?Rwvuj6M0X9u@PHTk;^-@w;9ypOqEZkAGm-;mTrxJQT= zNKTUDwcr|kgw)q9e&kK&E2nPg_vHDEB=%EE3a@i7N@Cp0`s=~D+Fb4?t|3?1+{!-B zCj=+*VPUW_#5g99qqCsB7BDmUlG;mdJQEO)n>_cpekuoz|Br*#6$uA@(3~q&H5ym{1aENcU z52f$4E?hsMg7}qoP=61lh&Q^6k;*>kJ?I_OHTF@5S1O8YjY{HDWSh&-ey1`2g;`IW z%oE-`ng81CFTTOe*Wc0yicgEb8B--a?iS;K@sF@VUd=4me&-K}lf%O`@jF< z3YHKS9<`erg0#g9Y2O7C1J4DQGPf9Y#eLE`=6kmx^v89~{m>uV^CI__`!>||vEVSa zvbf!OGPuY1Liy47$&lQe6|{=lM)q}} zr=`rV`hCjZwkGI8tOk>m8FIIjitY@#tahyy%O4Ld6wg$GJ3hbyy|{^i#K1&%esEJ@ zrd*WYEzFc(6H95OwK7`9tJVkVna#O^aizjv+lRHp@LS9@=}UKumY|F?2b8^( zY0q_X^TS=2*^epJq?Ss3t8{prYS|&{xcY`P+G#J>6=%xz0U2%axcik-gL#3QDUVdT zrBqNO&?9e9URI2_(#AZHjJmpw*~(HAwut&xkU=bZkiE_Qll@U_AWEqdr01pLOkJ^| zyp(o5u?fx!yFcGRe2O0k^!PEmMR`5^jQE^3-ny-BO0L z-?WO2*tlHi>tX<>&7JN=k2o92(04J?27F9R1Ri)!q(pIt^KsyZ;5O-7I9rP;s1?#$KpQL!R@M?!l|3LK={-$j zSHRQtlLrMyOFhkiTm(HUJtuYMUT1XqTBERAPkdNk6bwo&fs%fdJ;Ag#2L1?s5~#&I zA>RV@+1aiwwhG^Ax6oQ@y_{E-GU$)sUG^wIlh<-6cu>APUOeZ6(7{t3|bR$)@GTgu{KdDJasaB!)$pLs=(XA=13 zRxRc=Zl%>t>?Zz?ZDn)=swv99#lICCXz#Lz0C!D>C#}lg2Dy`iQ=E9Fvb3DL)_K|< zD%IxyGzY3{^oY1iuZ()QVrqURHBi;OpTFCF%C0Zo1U+ggQw8-hS+0uoXYg(QVY7?P zNo7!5wF0wEm>YQ9HmweTP{ZKtJ$7lOY$zgDMakjXP>U5B!3pw-2aTbG&9h67EfMbI z>Wgm&E$e9Do#4an>rkKaC^`7PSOnffatYcW*4)Y*~9E*whIS>4a9@;yg)mtfbxl1%&m-Si`BW$%!pV9 zWD516(r{~uX z@ROzXsqsvzy-ldf9tU~ZsND_ zbi;*e?r5m*ho}-$Qkx<7aEqDkQweJOpW1F$dmmF!xfeKWP1M0?VYc!r+Pm3!W@d1v zTwB`X>@{b~l~Gb~jr=yd&{`G#L3jn8zIH!BfO3oB0dcm`$1r4_)VoP-^zKA zUl)Ad7$_AJYl8F#93}NeW>&bkxd5cH>j0^Xiv^+X#rXS}uY}_KKxsg5oANhn+IMsH zfbWbEw(=W;1EoP+OLKL&yRwui1ohadtVZL2@2+D|6c?&N|Lp>N=RLWPv_t9(NY+pK zR(V1yXFn+oSK^t4ZhtsdTbgQLXBT6tDFMA0^RARAOjB#H3Bj^}I1QO=lu6<8HtCNg z%+*NNSL!8Azkg=+`(dz!u^ce?dqD2}OvW5*9r;74r__9&pDxZ3Ig06uFR75vh7oUWDm*X-Ffon z;5?-dJ2x;W__%@flt7ud`f>e?M6smyo$|cmxetYZa+00zmB#!cX*x5(9c0{KH;q$a zrKiPA^|+;=jm?%@D?Rm>)myaj%6esja#wgQaJXaPYR>WS^LB&Ka`YY>2^EWLEpAtK zn-7?4nQPUZ)>@$QNJwQZv{qjh)YwH#A=KAstJbpX8cE6k<0)faU@BKdDJ>2TmH`Rv zRi=foOX+w-P$29o0^1XZ1PdF7;vY2jIWW!gIp6 zglh}+?DnanxP?r8yR6vRoyjcc?YJAmad9)aF~Rn!z4aB!lj=&P0pzL~UaQ;?t`)8w zE`x3{?sIl1^OX(yajOfv)2J+$I#ES_M_I-&;YCUvp_uuMG0u3_c+O}5*!6<(qVbY3 z(U@esY)m#@F{T)=8q3A}&Sbr+yjCoa3OLV;qq+8}_prN-_3DjrgT$4=c}zKb1+!K2 zX+EPomS67|EbJsf`}`REikYgtAT~*ws+B?Ip^jbH4Zt1O>b=yiY-N*vg0SA$ zU@Q)d;g$qCn+2V*Tov?&yPS{MAL>QWb@Inj5$C)AQ?b1f5)0<`!;AO8kAL}=SW@$xT3Msh!?3DOW&VarM#!5&dV{~wyAHPs*GW@%N?Rn!U2k_yX#sua?vz>bX1#055$#d#?i3oxhG{R^vHx@5m{CSYov6dBX)~oSVsM$2Uits)9zyn>pj8lwkhyhu(HyNBYA6u zzK~m5Tjj>$J6aQXKc(XC1?yJXIG!0TmQ8Kve4xD^yu;cQ=pfVu%Th;SySdb8Yd$W# zqGU$KqJS00fMX6|i!q;C#h7W@ra*7*F|c(^5wxo*5|h<_;<`nmV9Yci*>e(B??BwL04C z(mU)HJ)-Z1_Kj!y%Egoy1IzjTaF@}6(efC1tXxm6jA}6hItm?9m!nsiuf#3l zH}XS386Aa9Y<;sYH^yc{6_uK3hFl4_>eEUou;vU>N~=UOTd3~Pc4`B`Qc)H4f)ajI z`vK*46uw|*%CiBJzGi<1n^AqWqdS3#%#I*u38rfP&RV8s&SUn;%R!E5r)pMyt0S~gJAI|RN^WgE z;OO3=Hx{g8oo=n)MI+E%d=z{66_FYe;Yo z|F<dcH2Yrn@PzP^@FU^tjiup;`F{8&^V4ugp|SZ{cw1Pq zWqUbj+4rkE!b^lFgcN;OxSc&Ln4;fdKWGmP?t>oqvNP7MZ*H`ov1iDi*q_^jogrYG ziS@~`!LRHcb|)=G-)WBzs!mO(v!*%ag*MJixu3Jse!^+2J>zr~p0dU{1Fi8ORW1b{ zypFluAT&AOUdp^>AJY45@)INx??o>dG zo%(WTkG=xRd?mQjnIC>D{GF5Eoo{^aq<|b!*1b2iDBn?dBUsL@={9yd3InAk?p^M) zZi7&~yUmV-7Pvdz#oA7L7jRPY`OSG9kkxX-?m^&`Q<+2Vgy?Z{?g=5)9UVC83g$BC zapAZ=?4;m0rv>0|0izR0h07sNlcf9HMurntIIdA#N1;gEA@>z#3ezNxTwf%v8T>Ct zhukT_?+sP?!I%s0_)V*o;3#hf|1wHwhm0A*hTv>rKXWJa&u`$GZSegzxIMTh*xJko zvg}>j;$U&^&cmg+GF(~iR<0%2ifhf?2`%&h7ti(99_EH|(?GX;k$Z`o!!6_%aPM&u z+@H2!myjug~AeH{_e~xAOJP=3obDrQN|3v?rg= zyc~+9Gya#~Y1qA06&QT28{-Zd8Ry$f0loapTNJ!zr?@HR}W3*XYjA_uk*8H za^Jc9CT$)+pZ`poB`@T+%8U5!%6t5M=2Ctczmi|Yui?Mq|K^YIsr=_A3jNC$5}GEJ z4dGCeq);edNC=4`DO3|Fp~Av&Wv!`(TxPbdg^Z9H+Hbf_6?lhoj}7Ymh;INNgtFEH)JH z6kCWb#inA@q&DJ1Ao~pvdy5^!q2lO3N6^Ja2NK}S{o)Am5zwi7K)RdQQ|v4D6Nf>1 zj5t;tFHR6&g!Dvl68sJhzbsCM|Ec11agI1cTqwRSF0$VfSBqbY%fubxx8g2wxA=#+ zN8Bs^EY6Te2lk79iob{l#s7(i#NXhqO_P3y>;Dmx#AD*Wq9=ZA&k9HqD>)zw7LW={ zgSmoI8L6C9QK}?OlWR&h!EZCEgLIozN9rVXmWG;5lV(eIN_R?86(d73;(enW<5m50b9;D4OFSbkRCATNdVXYx_?b9ssUJ?J(kr0w$i@@%;Q z^qd`XB=o0zSUx7-7`iFc5Jm;a=Y)KOWt5Oo801=8$*1_*&P=cfiy%FeQpzd)f*qyW zN(E&=u#Qq!X(2RGx=6Q!R?|UwTxltER31@M%r|)dVff*F-GU zRj*T$;x)cl3IQr!socfhx4(iZh&^)K~({x*=^Ch{xP_tmZH zSL~na0rhY7p!%W6O^0{MK7z-xwPY7QJtw3fo}ny5^C&_1rjfwYnzju08S zfc9`S)m9j*Re_ZMsjfZpUpjV-{MXRxX34izK}y|R?y%~QTTpk6w__Jgnq4FUazK?0~;av)X^L1ZS=PK zV(kvSgWgFWZr!PO(c204=s!sJ>ksJNf!D;4{yr#WidKVtQ2*6qpshWv57Lhq?S!HF2z{_VO5b99ZEQ8ZF^1^F^s#!P{;dAI-d-55zauUZXX(TB zk$N+8nm$?|10}zxH`ia%Tk6%=Df%GwdUm=#Ltm)R(SNhv)VIp-LXK^Eb@m6nCi^JY z#@wO*tpBL**Z-&E@NPlk{?uLO2z*oEdsJ_dgbl%90qZ|v*R!Ib7^+d&s9@+uWuv|^ zI9$WH&bYy7U_^`?jhl>yMq8tuadY?%L+0)@Za3QtcNq=Lt$a~&D_=HzZFnnRKHSuN z(1 zUB(~AKgR!z@#bRf7bDfkc#n#5l5x~HW~dxvrWnT!&g{X3Ov!XiN$ANHHp`mj&1=nG zTsiYP)2I22SHECZGpn05%+X>kvzeJFwli-~MhCi>%az;A(ScRwt>#_kVD%BRbGW9R!)`i0PRI7qpfe98h~POR_}EunJngnZ>PqP6bPJ zuCuCHHSOwF4XZC#R6HS7HELSZBrq~J!m~-^_2H04_G~{(Se7po>pILfHlM_V2!fISmUj+R^1~rttYu>tUJJ_xWY2@ zsn%Q8dTWuj*g7G-Z52mrqI9*<8lrw;eG~rL+Gcgr zmm`Rb!Vej2SP16}i{c}k7!$ragc7N`gaEWjQkjW~B^K&J`*N3ZzYlJPQL3kf? zQ@8+EC)^}FO>P=4$h8Q!4z~|?2zLt4cH+Z#gu8^hg-cowh93?02=jLDaG!9$@RQ*I z;i2kSV_^6xuq8gqjRfuC+3+*riQxvJ#o?F2k&^`$l;=T(v2N`LY`a}3&_&_)*{BKyaPlQ_tUYM~}TeEe$irrFZ zVjFfL+p+hW*Vx7EuwBM3YhMf2)7JKF@Y}*}Yj?D}+a2sj?4D7Z>JxS=p|3sK9%sK0 z-G9k`(VhaS*X%j=Jo`;ZJ;uEsJ+sDMYHzSB%3EM>tG&(s4s6)|=UaQbz0dyLPPUKR zCAB~8Blcf*aR;>C00a6(8Ka4R` zIvqjZ=-}*UIypVKE>35so72_l$vp%|`#8g#Ufd>asMFhd680Yji^g#0g!HO2-AQy_ zaHcvloY7)0K=7H)5%wLY7>wzxb>4M0IDYT`%=yy!+WE$5E&Sko>ojwBIc;EEZMQQG zq=>(qznz25B(T;o7d_#<|~Hh1`;E zX}5w~%Z<1$bBnv#`po*=aT%An$^FXN;jJJ#vvKH)y;_IC%keYt_| z2zR-X=sxeh;J)aNbEmsA-MfV~?uT%6mAlVf<_>j-xe3C1?)}1Qw;#9MeMtD!UFUw` zegzuRPi_yPQNI1|&+ad<_p5sZT$-zAmmtTuu9ixD~<7Xb0oUabMbX;zCZtxaaIO;`3b1&@ipButBk%(%b~D zmr@Y4!h6mB+?{4ax3Kz`vOsTWuW@F8KGqLI%J0-N=0oSXjRn>{=J?0<4iz@1`f*E_N z`mlXxcqnHX?NrtYI`ynOo!ROh_olel)He1U^>y_PXDRcB`mkClZizl$y~BM=t!Ndr z-%$yF@$AJ;VLK^MmZ{7(F{a6f&0j&IYGEPD%#v>ogW z<6(5Bq;ZE6FZE?7=+oFgl)+|a{UJ9Hw^?wRh*eS>9whJhMk}PwmAAM$;QdwYi3X;Y!TQmIT6c<(5-M{JDkX0z$GXC3M16O+z(nA0y_*jGCF`F zGe3kY-RSNh6^aGpA3{arP-G39$e+0%lIswXI20N2ku3&bASv<^Bsxw@tJiO)%!Q)0 zj%UUO{M>-&Y1`Pq=4iU8=pP_CHmBu_uvFUtZ)dO>O6yB@ebep6hU~Q58z&YtE@&`xN;m63EO@Rp@-lm&dt|%jzf`qk|A>Fr2GM6EjwG>~#fCU7ZY=}XM^d2R>ihnCGZWJa zdNu6`*>53`B4Y(KNkWL+BoTVenvJ&Duy}NrWU--E>Gy9XR7-Zi%uSwomh2y|mh47b zH$7pL<3}kvXt)?F-Np1^&xjFq%Rrb613lMRvgjwT43TB9sEJ z<|Bio$mZY3r&IqWZ{-0;qCFF#JqpP~3YfFW7L`IEu#??kK&FJ8R>8sQJ~@%6_VdP4 zv9h=F)shLZ_#3%j1JXGnFKh<77zYnCn+(Z_BlpvaO>ZLz9z$P1rAvutLnC6hyB`wTkld^kvYaby)Fw5@49 zhCF$-WK#Eia5w~rfSM$c$39HTAZN)&?g|eSdG2#4gS5d^NaU}UOzK9iu9iGD5W|aT z?#M?ZCjdoc3nW0(^vhX}BKu+gng%8*G5rc+9qpagNTiBWzOcoc{fAx-R}y+yjUw<% z-oWs*jO3k=E<)%jAxH{)CVD2LfR9jnm$b;=P~f$MBDw=dMd%U8=)ckrz<-R?ZKyn4 zeiV*A2H$7k@fUpw^=}35WDO(=9^iimZb)(-;1BSA-y&BnmzP7{-yn-nE3P)6jZa{M zzDjHAv5>G=!_m#rnvwIQwtnZG4=0<)-UC9Lq98%qu@L_;@G!uS=tf!!A(!dyl1C&p zC$BlycI1C-z^^$pSY+%LK%D=%zkyJ2AT29-{ju&(lxt{{XfM1rjW)?+mE&R$MVbft zW)y))ikLMg0>k(f3N93T4F9gNI*Vw zQ#|a2P(E@HHqs0Ns>(rUU-1ppLV{y5bT3jIp`@*FutfSZki$^`Lnhha z*=CD6IjF&|j*3F6YO;YM)8V*drg1ycMf?|F!JPo`*1*|oUWR7}hKQ=cKPdsBM&vYV zVvP-4Pu?G764C$^Rfhv7;6N#IV}Gl`k!026%}hJEF4kYl$8C-x%G=)pu$@d;4J@W3x21qyZ@8*L=(c~EG^pE?xA4!uY@pCRG|B4EiRVD_T5y#>eCm(R4}pZ6)}a46F`C61Ur8 zuxN5=R0g07(uK>WU2|>pe{b}~#9q?`rW}fFf?T2h>K@qvyXDG9Gn0x}jaHxR`V}Jo zF_u8m6;Nct54IRrHQ8tSd^i-Y2)W5yOoG>13Ah-XuUYxO68$p$enJjbiJl>kk(NNM z|4X$26#N%1uMDjSMBuMCQ61Gt%Q*ya%VmfT=fAJ9ftt}XK&z1@I{*krYrr!hQINc? zw$WlI%GZUfg=1iV&_?Lvhe%#%#K?%9w#Y08kDbV5NZHG@Wl>}#g*Hl~Ir0YA!AUTC z6Bt0~4#J@$yWo&Ony6@UQRv9f$KgQ1SWA6Q5CAs64aw0`kY(;J;AEub3-N@(G)bDk z_!&qUkd?H$90D7Ffuu$RI7K=LCL>w+Zh*MxBTMZ0aW z;#k69qV(Tf@J~%({D0E#TL@9oBiF&!5-$1;E(#HXhzi}2A$vgh_peCLNm$lLa3V0p z0_1^28FGOXy-$pmNHsHSNWeSx!gVaXt;vuWKo~D+4{{axlB=%e(kZeWP%GKX`U5Nj zw%D~9^Q0di8z7y`uN8E%=tk~R0myLXkMOL7&5;juB-rIhAA|Fejj&^r%K$roC7c9H zkpplt0KF{oFC+`s1iq50Ya7GDDc6^{GZ?|c%sPrkYM)eAcK4a zDI?b55Q;tzssdSlgcAiwx8tGP5jK$CkI6#-8yK+D_7i12WQ@gH*dBXF^dw+oI2ikOj2`w4Vw`ID+);;UQPRjzpjzAqSwJRBsy` zD)K-3dU#djFxd#Q6K)T%Pxct{pu_eisS)X)(liHSCjFdDU zLQ1c|`G}6thwxMdP!#N=xj-}m5fVxXlCD<}p5qr#GnZ%8?I8b0N+D!Li98(r^&iOR zWqxtw?fDzqpP3VGMa$8?15hes%qhUozL z(XDs}ktZG18-&OsMM71%Qjja1l%vRg81A4EWbe&>9=JAI3NVz&bN{o&-nF6Fa&V{x z80w>EqB3kta3S>f{GtfLXC#fZ-kzZkG#7kCu7KpU_ep@kF9V_LxQYZAqC7u}^5cGk zzEK%Y6OKO1@0{s2m=z!COBfPV|@*713gUu3MN zLheigTKrU)86yW^B&4q%|i#J32$GDQ;Ut*ULMzZ8DV2iN>03)Qy zqTuLvHrR{ofGmbjhZ;v@%0hm5krX%)6(~pj4bVd_^ihS#aZ}+C)Roj7x>sZo>|U>f z3mMr+!^hZA>}8A%WWk0YFTBsc;o35G6b%qs%$d;oKDvwz#CionfAXY6a_89xZLwwM z!eTvcNwmi`(@2w(Eew?*YGrZg!9GdaTsn0lM0yT+CBqKc;{Cqu!VF!YCu~ZH{z5e=7wiR=^34yc60b z9S=&f#m@fg@<}HV2pkYi*{?W( zntgCl3BO#w%!*KJzo(Jk3_K$;;jk^<9%Jo#6f{T&CE5J1B#^cyVx?bH6)tn%@{5K> zO6#O;po;=rLeZsSMK_2NgWnUX{@20&D>^doh%NT?8;x|YHp1=E#vxEawieI=cJw*P zUaYa8Uq(0bsN+OZ3(`T`LtZd3M&YGxT8@m}%daizphPyBlM>Y!iJfk2fKa#JJ4v~I zM#4Y7giOT4WGLcN5l(~HgA%>KiIC0LL3F49oxSERs$6A5n8(KHEeHY6I5l4HHhFCpuaU8cS8 zaGKe%5KlfNH)*0nq&yEMe3SOfK3q*Y0Sy8QA@Ck@ z6Vi|TE!I_iIpibA7FAn(L2VE0R%|5zgNSban zoJf1H=rxhQ;Q-fO@Gnao25$tKAo3CW*Xw~Bvj(oX)CvG%0ZBvNc-3tU*_G<_}Y z!lIyj4I1uz=^)DC8@`^GCqL{-3=ofvc+c{&VK>9(Ms$K*4>@tZd&`y_IGAUjEvD{p#QH`?c@8 znUNXcl98F2nVFfHnVFf9nVAtTnUa~AnUN`ynUayx|9fWMKm>W{y?l80+&MFI z=g!RcoS8ElSIk);&Sad0V5xC-v$802)aBzWtMuxvZk2JXCd;JkC)4Z}XNO58UGEi~ zo#|kzdOwc|{;Fjl+C>snZk+M3IgB2FT;bj%U!lC=@N>ZG897(-ZC8J2_;O&b7&<|^ zV%&{h3m4w7r;r{lk8vR4bd|^fdDv0b3qe)FqDUJLI3gX@;Y!b6P*$ykxYy4e$NmG; zunHQsdsiaq7^lJ+{Q#W+6o@kq4hsG{%CdSO4plvRErmA1(>0;5=4kab1a;3X0ykg2 z@ZIarQ0U|CA~(1;_;d)aNtu$vgkIxA+x1@64`VsA?&&l;iG%2uWh&!E|I9S|7?nx* z`uzj^K5iGd>2dF&KylugUaaZDB}NS`KX!GP$^G2Dd&aGk6=298;Xmr}nhlkM8Cs}H%pjUSX|pRlkD?(0z9 z^f$PgPd{meix!l+7^Aup1??1wBw=2FyH-aA)>{bbWDZWVFLW`);TA(XbK&c2kZOKu zdWerRLWr+f{*~2OA=oujZc5@%x}P-2*8#ovb%?sDX6gu7e84y|1oE#CDZ{{P(?3w& z9L7zh5c&8<&d3??CcgnOj|sfdSpwqZWhx8)QtjRiDiU2o1}W{V-&0O2z=?BH=P2_# zBWdG@A|sANCFQ_8H4j#BIK_SGI}O}rASDxPL0Bx$xt_8^DRVe=na`%#t%mqk=)@vc zo&8)HGbO&+nF$Zwdt!?G-B{4cuXQD&3keRO0mi%{h^S2n(oJh>cG5BO-EBo_x1gqW z#tuUj)x9S6zEu3Cvg1dUL7@m(P3tV;Jm#uYgn-80syDh3ukHIBK0H(YjISCDGO0jC z@QeE8ZqyVwwo_xf94W4~+~!pmCvm^PKFF9A@RYnxh1oaQ&&9|RqTC9`K||%;alfn7 z!CEJW!rLbG^d~5Oa&^v7WL|d&513T4k-y>P_`8am-+GhpCVWI8JSd|q3-^A{BP$|d zlT9Zd2Bq#$-$l?ihbn6)n@+ftRv}=pdC2C=5Hb$TfOLuH|h?7C)`SRV#INAp~r z!?Egc_;vD!2W!h3m)Hd2WR0#5P#S!F6ufI3A$QgDI`#XTZzJx1;J?^67zy77sucf- z!I|?yntipK#tdIb`}9Ev#jWj{uf+jZJQrp?4enLxifK2|az^u9MI^-A&ECdTgefCX zkI%L~#@lsdY{uY!?jUmdb=h&HoEP9f;2uG&9x9);V(R-M9NeTr);Oc!Ad3QjUO!g0H2xbENE7Q_WDV*Y_V`4K} zS1*I>X1UV-&O|tsQ>XLb0N^))_cb6@v!?IpU^o;cF1*sohEs=Daeaav6V1@SJ>u9D zf&q9)fZ6cY^xU}f6#6g0?`3h9vtWQTHzu4y5Qp7?_i+F>7cuyN2-qzd_oq~GJPJRd zl!J0+ypm?$_#&cwNkuNiwQTMPUT+26I2s*H|6<7n>Q#B!8@XPw1bVyqbt=ZQtO6Esjz^%q@mMG1`<(G_%(CzAlqSj++q+-FS7K9adcX7 zZ-#T~bd?O9)%&C}3;Ey-9fx?h*7J+U;i22X@mh}dQN4Cub=kM3j*q|CIsx9%vvXF! zds9c*K6GXZaR!Nzqv;jY@<1aV6}-{ zzqtE71A}M7Cm<21PR=+G$DC`0T60s&OdHYK|HWv*oFwY=$z!= zin+^;xc3m{)9^awO{jEN0DX-QXDsHzu{%ep5f{Q^hdBPaLB8^^LHtg?iAb~So$Khd zV48J<#eD+@&JSy_@Jr6MxEVJW5wvkDq8>caZMlP*9}MH}`>1z?@PbL}x)?%jbzN15 zy@gskz{jn(2_QRhzPLr9yWDPbS!W5C_G%6@J%M|$TS2CuV{NgnRb%M<4%S(0?nWcd z89fQ9b3e~*n4xwCFIHN)@FM%79G8JeDEB2!-?vdQv`pk2xI|fZbh<}_CAqRr0?~V^ z_(0`bsFmjCoNG47#CP$fOFX=A*`A@BZ8MNr{U+nvepZ!wFvw1BvrSh9w-Hl5nKR)L zMufGf28_G~csvNLH{mvBKD5>;^AI=TI5RSQh430mi*j`azJo9N5J|`ek)YGfzPXy@ zz$q@lLTk;*19=FirYclm?6tX@P8K8Vmr*-#N;y-!>?M!(Wul)y8sB%G^&UvrL zkV2plqDMlcZ`()pVI>cft80+&yfS=qtsFHKF>`NXItZnauLJ-8kfAH#u4;~J6mKAL#Cg0V<* z#hR{kx|sMkRA8L>YY<4HPC3O)u*k}ojxTi!oxO~LgX(Eb1rc}}ts}g|$-{$^&>0nE z7@DQ*&#kBZK0s)e3)xJtP#((!tM|!Fa3;(Ik-!1;#ZLKf3Jmd`$0>0N@W8pDuHZK~ zr5u`5K5zzfv^(ZECoR+WS#a{gmuY#5`UJIh9z3;T#DAp}xf>Z+xCSGZjqnguY6E-& zd@Rv3KSY)@R&;@}PfpEbI2%txJ+MD0b37{ZCiAtp;)pP^obXcDBnaU;@c^`hA4bakC1Tc80@2Wy5$7YVc4GXz3E<{K*BQ1?QT+ z+)vN);a$!;4$dE2%mgQ6U=BV{hXz)iF?fv2@Nq;_K&pnqY!JajJf%2m;gFz_%P&D; zI2j)!oaRnsGE=psXM+rIG4PvK<3WAYz*!*HVoK6*5OFGloJmY(DJ47;5Qba)Dyq_qNF}}OFkkxjy+$O#H}KI-Ksocwz;~qEY+7=Lmx_dI4O(q zDf%Ibk)NUhKb@4RJnI_3MLHeM#&gOs8@}@Jm^3Eo)g(8P*WtJhj_EI{hW8}p^Bwie zZ<`8s<{Y$Z-cOniM>iB2%t0@+gZD3za+AJH%1avLTYw<*5TsS8daq6T72ehdy>fLZ zf``DCq~fGM;k)l=$ZW2l!$%RnT7P}hC{Fn`lV=AHzgXU_$34u}a%Fl45I zXyZ0ubg1wK3>x1~A-upuu9+}EVJPldM0{2<%d4!+Il=EK-Nf1B!G690`B)1UM-XISm9FWgO8QcHU;iQsM03u0=A$}n)&dO1_;Ij0Y3BqzSnkC<2 zI3&0ZI)R(uWDHj3Z4R69CA5Moo*4b1KJyH)l%$yl0^)$ZuhirL=xJ>Qsk-1#`8Ypx zC!Awqe-rZ%mQygD2_30G=7f|e>dIMbh~nmB$~9J z(_83wn!!G;D{ORb4p@jcb#1nHvu@4yX~rKu8V-g|6+hb;wYEEX(gOgjo1VtncvK1cAI*U8U=6$e~my-`P?*cq9(G_ zU%`m8eE%Sx*>IA6OiW$^BEX*6V<8@T{+M`sFgnOvMRkWHRV3>{jOjb zHu+Cqg3>z{fsRY&sTK?H*og(v5twYqeqBqortc20Nf0qQr5sL2%`KK1Gj%ZzWRO;gPCBVG7R0_VZ?Xl!ns?yPLcXbE-778G!=Yu zO5nXWhYy!VZZ#Z$w!@HMNe;$61W(mVR}s6tI$eN^mLZv3k}E&}@topy?8e#K?^{(f zR51K-D{2g!S`6^%=AbLH_6Fd)0q%M1pM}VQa8QE6SqrD8hbw`Ad6BsHZ;r$|8OxE; zy@JjRmQiqM`ZTwZg6J6Fy9zPRhO-jk3qYKm>HCigqD!2Ub$u`j)lCbg)6EQ>$sxZw zGX@4jWFhtm-$8eO(j*g~6RI;Wq>M;;F=Zs!3&1u;r@WFfCgoK;uEJx7*HXr%xCQc7 z$|OWKIpv*{DJk!!Oig(&Wg5HIQW*?DW9gyN%>4YagNRe6OBC{A;<;UUCYL* zrQlm=mw&55a~WlPj}bRFr5aOOpoBz=<}!AkuGrl`_HYtbArjTkCThGz z>tQ)=*AWot&H5e+bq%P({c0Hj9G;$$LP@!voUc7oK*j59uwSuS`I=_ zmOvix7i?n=f5FfnQ63j@6Wy5(@?!U;p;{A;Oqc5>O0U4sS;)Un2L&Ee3{MvykW8yl zm2_Dl5@!Y;F?jw{>YCJ_gV|7!`b+BC)L+%p)4ugQr~prZL};S$5S~Zq4EPBHHZHKW zvBE9HaG}62fN$}gUK`NOw6@>L-FyA;M=ee9!Aj-z_-7ksuqBpT-f#aUJ z7EN?c6JL2sTxwcJk_RsZ@X{g^s?Ys8II4@SGb4Tt8YA>L1eb`5(?wt@xv&aE2QI^N zEL|Y{n^mSs`KbjK&}Oc~7pofYj0Jg62W2PKFYVf5@1U(IROW}2S)VwD!w|zt1XGe_ z6A0DN=Pz?>4`On%)~gDtlYx~AEp9}x@o-Fa^FWB(5$~P&Xa9L%1&vRzz{77wAzlFq z?+D z96YL5=Yl}@pS^5iH=g`i3Zf}bnsGA@3w_}{@;Bt>k!fyyQ#Hhy3dg`A%=<*M)ycy{ z`X;=DD;KMa{gn-Z6YGbmVk_7Z45$A_B!+#cS2!c_n8c5|{VD|K_%!yT6Tm@o@u=Fd z%Rsa^FrY&pgaXi2B+vIGmX2rqj@AvcbXUPm>cQ|{8HKt;2K#2FYwA^?ajH~$^Ey|Z$694$}luXLrR95JjK@ZyOH4_Z=?Rg-&x((g|zB|ws z)`fW|GW==Zk1BG`KYY8>_YWi>yrnx54p@v7%sJfLPvp5*bHVJYTes}N)pe=X>s`iXbkah)HI(#otntcnpqsm_45z`XQsZ-(=z+z;`5=_7{%Dwq8N{o=k{q-MM6fHs zkA43{7b4U|cBSEKNO>r8xP+#|qXKgth*X_iU7d8@<;V(|l_`w_upq}*JH>EJJr-Yf0{-)SJ(Ve3m-fiNfXqvS4!2<5+m%6D z>xDUBC+pWg38wx4e5g|hMwr2ozqo%1-s09RonBW5OaiOLA!T;A!9HE3p7KpV=V$?# zZ0EtHv*r{3xvU|abzrE%AN+TkeWk8KIwRR{dyH8=je4M6LRoYgDqJQ$n~~0PjW51` z8Ug8=i#aE#ty}RD`6kjccpC_=YU4mClXVC(I)M9Gi`ggV#%d<;O-?b0;J3I9ymKwC zPb0UZ-ay#}2U>Mx>R^L9N^~0#THYSl(k{7maXYQWn;aEDN_mO^w570?{WC#(I8SeS#IjJJslOp zSp-&x^W!f-aC|bZ5DFN?Tz6D0=$mfG-4~BiafX3R(v3h}u-sId0Y}y0UBVtm#gE2Y z*MSU90OpVD`&hc&bUs&ST%lS%2F?i+U5l}LSq_|34Oz#$_IRsK8aJ~t`lZ{QDhqdx zlRvPxs&Js3De$Pudma;qL&dD(p!foHxsc0)ICg1%3xDCL#}R_RdIkveQaHe?c=s|q z0+8%wGkakotACl>NRVo(?<5crcJzZWgne*vt^tAKYpw?J@LFdp99kWs9wTFI>J#ZU zRsv=D`oQ`$2M_yRYhPE@&Uh{5V3*sFd9Wc(MQRxY#owFL;;i7O)m?K|bwh2I4GO?#sK7Th?4 zCq9*KpZ+N~h7gY%lSWv4g3dzCbA?M-9p#sYg}TVUFArZ2M8O})jX)JLp-sE(M)dW$1IVo=&&bZf-Dksj*Gn4HDufdkxBA7TCty$y@L} zEHm=)7VuA`iF*pL-A)#YJr-aT(@yJZ14xj8yWC8`?%m5KK zCw~FEbGZwfJ4k8Z(+Lv6%OW2KNLuM8ThU6F! zRj86>U>RC{tb?_^kb`hXzk~^Hhhz={!Buq<6I_*NGZDZZSqqq8*{}*ky9nu2<;T$G zL}U*}Md%Q;6Xpf$b?CkyBvCj5^W4Qk!AK4@4l@o%=p$7O2!~n1cs*C+QV>nK8n?s0 zzBuJ0hM+FE2*^{N@>y^yn*wI-;K&Ia9JEI8 z7f*zv`~=l~9ur(kmoULXU@M3dT}+4WpZMV&7guDyTu$VkGe_pq;JoqU!McigL~w`#cIdBwV;k%!ZSy$BUSEuEklynSxs86tPqLc%3R%a%gJ} zN0y$)zML^257^u!L8*FIShC-$>Nlr<1p*oKeZA0z=f@&Estnr3#ARrvXTK1183O{! zn6u^H;8-Dt$c1xKyI`7_$vM9kj_KMjw;6q9lu`^g3!IE7-WWEG_#2930%mQm7 z98~jIe<~N6uD^@HP#L<)C5kvK3wjpvO(3}jkAjyrAVxE>7l@T0lH0}eAIGC><9T3| zfYBjxaq3rgPrMP{#=eY*kP>Gyh<2eQg-fZBU1l}==BzCOVU2EbwlxMBauk|B{YIm5 z^+;r?IuxXms$)QeN#ryXsoM&k%YInSE(5`9kX2z9;z7wcScHNZ&N43h6%@BlG?wGT z@3%mZ$sI8!*nY?Zu5?VHF03m(bti5Syasi} z$%t|d9#209IGG>ZM~53i$2X0bJ?f>pD)X-!??q_LE7+;#$gEe9Sk9&eAb0_JaKYVb zJf7Y=@wCL#6VFIIGx4m%vlGurJQuleULrRnbfUQ(!WXtzRl__N5E-Y&a8;_!YKi(=dxzsHd~G_ z4JZ%}enaxv*0yG)%KLeiPX$)1iJfima@72weU!bnQ~NOR`#3*!o>opj`(!lcPJq@3 z0q8Z1wHCl>U(Q5oBAal1<15glavbc=MLGUWlo5Yg=O*}dX5z6Ecl1I9{!g&+=mJF7 ztF`cGrKvw1(SV7n0_%3mC_I$4b98{|a0<(CZVI^KB_FH<+=|4nb{j!V>xQ6qG(Ypa&GiwWHx6Zm`*Mpuj>lt{1nbCPW%mcc9U%{#jqoau zM_i>KTDbV*_v@OV`fSdq_fX%{tb7c?a^jiIS6_si308|`DQ^AI3>OTmIhggg<9_-K zu!2U;MeLowc?}c%&6_}=)vPm1*WnQ}f@p3Rk4lS6HBsOg*Pi95QwTDG_~+zge~4&r z1o+2+2;2+-atj{j;-Sm3U=?^UnVX#YeSNI8ih5iL?9bY`VInE)r% zULTeGa`I^S$z?xoj;Lm-vj$F0KTuK5#BUD%AH{%RzmJq;<2OImd_N2V&PMQ2a7_Lp zIam3{GzmB_Oy-ZA1xA%nU{Gk4wdxb(xEuLB7~vZ>8?AU968oUy$W#mA zE6iJRmcWyO!deijz5R}Q3&+apBjZ!>Ifq7pND7x642LCfM4@U)ybcdtb$Ylku+%&C zkl-YO@Nh?`vJe?P2clVfX0My@()RHg!B^|}*1(IBA{&|DK>a=o)-k;(BO8xU6W0b` z!VS_HaFS3C&RphcIo>{A$F~wr$qy>eWg=Xhz=L~pgYgezg5~u%5IrwcBW78tgH;eW zt;15E!!yg`?BIKacwSK>QeVW~)g7ZD)=Ch~0ik#43eBIZt03?5nh+e8<6758VI${r zqs1 z5=7JX&9zNYL!u+(Mv2SM%2m3IBjii_h}a--7Qm~jJj-2T6Nmu!U{6Mr6TbxedlbM7 z5c?k3l%cI*u7Me%`Pu!0FQ*6rh+xLZOSe1lx*NSsB#Rf0f`2uoB6ViL8$sXX;hvIa zaZK6^GF|Z2kj^@A{2Uhc&jIs6vp`0VeH`c(uAJ80`X-_m2J0pv{d2+WHl_Ky&8G$> z7N0A;_j}*pG@3%LC&u zZs!bL1fSThcO&0| zK_&5qi~Ndx@jD6=JTeyJ%k~qmw}9++hT}oL4A=1>s5^#G*a5Z_Cl`b{TCJqQzA7-Z z;@RdrctyD#06oJ&4#XhO*Lcf8>Mc)f;~VUx&ImZt!Dw{jF2~>n)0lV_L@sjkn7OBYGr|`R0Fjz;4*DOaga`1MP4T$rBTBu3{;?2yYF)SvY&g?cr~LCZ>ryk_h2t{oz^E3&S_iaQo7p!)A(IRFdg8glo7mi`M zdKw0+PKIpNHJQvlm;ARAC`@gTp4>pBotN9FC;<}2aQ ze|frn4DYeQ*AKya_{T04tCXv|LQ#LOmSUZdx>bmv#cJi{r(p0kxOc`{MCh{bP}$s- zh!E&_lve=VlbOJ>LnjAB&n|Jls*v|6a0{XLjaVOyP3;?j#OY$^9X2-LzliIgx_(16 z!&e}_jUc8l!K)2tgRu4r<_Ekw#c&AxfKZIhf!~9>RCJB|3{l|AoKbMNgkyAL)m2nK zm9KEfPh5K8Ww+o9_=|3G0~ z8S}t%H_Z4#ZJ4nPjFkQGp3oO}$5Sqf?gya#OGJvhk;ktV{NLqXQNQ|yOzPaw6-Fh*$wi>%%apfo@ylM9tEcZEvA|1Mp`O0iJZHpDc-KnE zJHGz_{eio^3d|psx78TKV9rl4*zQ}i%{s6* z$K|53Y>6w5`!g=yw>6HXqiXg$V>hJRE!T@eu|X7x-^51oyVxZD5FZCNi!GuULI?cm z@qej`_ovt@{z7ae;%~7{Y!{^hXA%&Rq>{Ke`a5nLe8rPNCRt=t0wvP+xYD>JYC`|S z34by+q)wq!YECVPV6T$?G^-`GqSn-g+EP1ePaUWub)wGj*M;_?uCzCGqkZtSFYQO& zX@Bzh9H(+zYZ=$i#Pf!LuNh$tR#L*o8Pg5p6Ls>M4TKLoa z>He1fR{qxhHvYE$cK#Qrz5hiTNiWeTdYMMkD~LykG1S37mR_TAczT`2(;L*$-^o9L z-lU227EPkJX)?V-Q|Mjl?0=7@(fc%=KA;)&AN8q$=OL`z*J$|TuDHkHj}GI%Kxr|`)ZGEL%CE!j#Q=x-z2%6787 z>>xYJPO`J?BKLy7u5xeLP3|N2l?VCvlilV1@&I|DJV+ia50MA^4}*`x`H z%A4eW<+1)x0yoQB|;zP@VP2hi6 zPqF}e3-3Z%z`5zkf<0XpbgNTY(7m2y!MkzCLN-K_1qX{Ak_7@?wOQNIcV%&aNxL8+ z43@TtEDW}R9ZeXFDy_eUfhP>ShJn{GsH$NQSr}jpYlj*Jg-^6}B|#}jNCHZXED6SE zw2UeVa>1{!E`lcsJW1e5g8G#N!?VgH!32yFe-Y^rshKQLJbogkdshA@sq%<0l+W zTERlduVf2hQ)))x7Q!_6*OYw+&uIu5IvA#2T^S_z`{41W}O z4|utyT_P(&+co|pDZV(m#dj;Fr<6DTbFvxQxA|`Og+rU&(@_D!p5O?)23Z;59M+W3F=0_|I<&0sL-XIKV3#|JgTkqe|odTUKP_|0K&b{@>%f7rA&J z{zJz9`%y;OV_Mo7agjhRM0tZhryvrjG1^su|6yOvK^<=J$7pvo27e9ecdU@X|50D{pvL?ofQ=3QoEwo0 z{(XIqq0F?wAGJsM+c8jM_N{M<70Jj~zF*IXojk6k9SGX^omqH@)+Ap8eyMDNb%!2+ z8xFw5Z=hA;0l1nGyFCHG5j)nxMf2!M(a}5`d>(;&2x}aw!gFm$<9Adc@7!oSi%V|= zZg(AlTb@v}(fB=Z1a9!OmUcTe0>=;#t~}`N56#ZOFdaNa)9S0i_eSEqSvkAQteibi z4ouFefgD%`PtoK+zmIoh=q*06dMIL4cu7ell2ti+w0omVFY zcW2Su8VG^DpSQG^$5%Gcb@)@y%Tw(L(c#bfnWWqJ#eg?SclVp5+u_gHn50`bVqoKf z8i;|>3nPnxPUXZvCr=D`!|!{{@O!7-N(>DCrUqhQ7Cc4k608Q_n~mq026h+IK;v1k zQ#Wma$v>3My~zRD%4d9>(A)2t3BwohVeKS5M3V)Xt2|i{8o&1z?|F;&cGcp&x{(FT ze+f1SPF3p(T_I3@tYF~Uh(aLK3a;9l2)@@K@EQbOgJ4&$;H?`WQ1V+1dIb|UMic^N zQ*`sd_k@5a1Y%tX)O6y&p4KZEv9$(5AQzsZbq5N;_k@5a1Y%tX?0$QB_?lEdwYU1c zJZAK5RsGbVb?_8T2xLCi$`b;ZgC2Q9pIDkQ;BDx$du`}bH{F5d18N`y20j&C2uuXu zYY9{(1iT3YyWfO?y4lt1MC|z=3-g9b2G>9cOc)Yf2;_n92?0+Cc-?`jne6-wkbrx?+JlD(Z|Oa#BWmcWB)wLAT5$2JytD9y78cs7B?ZxeVpt!Afx z)r}A+SsYOalph_K@O5+{kOzKsLSWZyI_L=j?+C!%;RwK8D+ES-R|6rC3s2Fy1BKvE zZ6rr~ENWhpz5Z*m6}Wc}X!tpxdawV+HbnSWLUr4MH}pB6;d}j8J_mHCTLR9EpCABA z68=^v1&6jA-IfsE6<7yP(F8!|n(A8tr*8JT0?`fvK6P{S!#=7y2$;t*YI6|qshjKL zAYeZ1WA{A>_|(n2>LB1<*9t&AaF(yHK`UTjVRRud5&Xu|3aHtMKVBOw&PB>#XM~D7g@IC17nS+9#lO7bT3G^!-_NC7S z>h6zzF3|q|>JR%mz+by_fhHxso!C~klkH^(*->_qon;rf7tZMED)*M%*IP{E?0X>+G+1Bv==J4(;Wy zcqCY3hW;Mk_vfA?uJS4$2lXkHKdXOhyY;q&$~%jfZ5y-(K6VWG*A2{+!I}kiQl_KJs*a72AaD89M|t&gTA}h5VnBd-@&!iT;!PWoP?p z;6vv-^M+Li^G)#aetgwO3Hm6GA|Kmb8W-uT68}4Pwr|x_d+P7-?j)o#wC1n; z;oX(b_H72=l@IT}i)wDq4?ny+lb#{A=MPCt^QZe;`a`4oLlfKk%b)Z6EVi83nWKX~ zq8y5Jcz0KS`E!1GZ{W&@cVFhKzyAD=9Nry%&TnfuEJA-i`VnF^IlMc3Z{Y3`&-o2M zy!#0M#qvnhiazpR@=|%3yj)%(-KjlQoATa`(}#E8A}b!=eXzJo-YxHu_saX^{W8)d z-{%s8$Al_?AHo378wr4CCq`+(7sH1K@GHp!cw+~6bc5ZF0zC3T-a8NQ|H`TWUj88O z>H*HZc4yJp>HuB>A0EJC2jDMIMGem4y5Tgq5V5GicYI3D?f~!zP4p!b0r2yiMA6`- z@ZkYGb^u){VgWEDeCdwq)L^hSp zWHQFeD+Aoq;4JphL|-uz06#V*3cxcyYHiQ+jBGK}2loK(0lX?BTg4{&9G?&;267<+ z^%d_E&Z;>;{4Z%y5I^v<)>txE8?(9)k<998*swkw|2t+@*C{>#;rKd`4x)qU5IU3& zBW+f1mR6H>GN;g~)EjY}MyJymbS9{?=xjQN&INTIolh6gg>(^JOqWm}`WIbFUE*tQ zR{t;JsC%>eU>ZV0=~)^^&rvo#Ps8a28bRgF>YO8E=v68|SB709&6Sx-73a!SWmf-! z%A3^}Qf0IHUh!3R%73Kj)8sZ%_0!~PZ&t5Pr3@N402gn2EL6WD**Q8T^vg`%) zoFY$E80sxglc&owbmJemo^5S?g6}EbUIh0#sctgJKW9#y!w%}+5x;Sb^0JFoWd1AczTN{t@iBiTibo9 zVyj(pPrx$dXmDY!Eo$Z`0^cTuM6>- z%B$CDJiVc)nzq-4h%^l*)L!RhtwKay2UEOtJ2=JL-TquNZE(F3)iI1YaM{S4=?LD!` z)818C+ZqPjjYoUeEw;I3-WagGbu+M?;g5ptFa)4Qx*>^|0+>+ru_5KB-xoyzdij?ACWSjiR?Fz(*`t)TU>&@hoapjDUM> z@-&$)dE@xV7PUQ3Z}%{SQRwS8Ef$Svr%CD zVyrcOHP#vHjY4CCQDppPY&3p1HW_~yn~g0-vGJ#|)%eROG5$8T8QYCgg!%{n!X#6g zJ~Phrn*lT4G)&X9OxsK_6U`*EiP_X_W+s~{W~$lTY+1Io_mD$>CW41MgXlJ%J zJD45KPG)Dbi@BHC)!f_cX6|F|Ywl-uH}^LWfS&`+gYbK>d5C$ad6;>)d4zeSd6apy zd5n3id7OE?d4k!)>}fjYiRMY>$!0I}6!TQGw|Sa*x_O3qrg;{^o^76Eo{Rf==K1CY z=7r`(pf5HrG5eVR0wu(y=4IyP<`w3Z=2hm^=D*Er%>S6zn%9~CXI^jKVBTonWd0Za z{%787-eTTr-e%rz-eKNp-eulx-ecZt-e=x#K43m*K4d;@K4Ly<_B9_f`_;fusOsWYCdZYGoLfF&F9VG<_qQs^F?!{`I0#beqJ_5 zo3EH-%va5^=4<9S^L2B)`Gz^ceAAq0zGY4_-!>^UV3?0&}6c$o$G&Y<`V*Eispx z`Q|s~GV@z=x%r*B!u;M`Y5riYGJiBzn?J$F8uMqf!2HErYyN7kGuNAi<_5FK{LS2G z{%&qE|A3Fp<`%Qq{L|cO{)ML!{Ojv)bDO!{EH(czg+-RMd{&(0w*pqYWmqN-kF_it zzX=v>>BHLCT@tM%tBKXrYGx%{DORf0-1=X+iEv;0cp}`W=i1m4eM@{xefi*u2$S6N z0-MDaQ7q;M76cXs76rZvEDn4f&_irX0wv;au}y3jrNJRKY<264qg#Bp`j!Ub$)M0y zGWmgT0z5J9Hs9^OWLg$Tp;T&4EnqDEHjqxs1K~q#?a3Wt`z{bZ#I_=^FXJ^tIG|v-Ql~_cO?B3IEvN;j;3SiSUQf5rxU0L{T%2?4xLCRQ91$d-rGcfCPv6i#0TDmF*|)TuC|<^Y zM=OvHy=R;dktf6X;x|wc{lv4ZEB?|g+T_?pb28S{D@dvrO~uIIeh z*9iMEG=Q{fFTc}-PQ9zzg}8~lIW$7Bn*Sap8=G@z_MjfWlmAv3`d9eA_qkf1(O(Rf zLVy2BHAVk4_^cay-h?^^Vqg^9!-`ge~RbbAu|x4u^;`iD;oqJJESn(6*! z@L4zL&)O;U7reh~(LZRX&_5WVz4@~R^b4(}U#a{tv30%P%^Rf;TkqzK$f*+jGr&^1 ze;$aMp}zz^>jwRY$M1~pA24gzqW=i2=Ja&Gr~7qBzv61wn4N#;%$!>#`d5IZ(7z5u z&Coyc^SVO6Htg57-#=mAu0?-UYu&wmzc%l4J~WoKGka3Yf8~NI(O(LdLVxDMnxa1k zKI=yJH%rzL;KOuA85ft``ilfZ2pz^x!KWmvvskm?#qC1#{AI6UKg(i{ld-u zm8bIV*aRM4Bd-sPsA>XFQ)))x6L`|7ZYS{QQNEf@;L+RMM4!MDzOz;M1Rfsci#CDh zzw~=R?`*YW6L`w6l;08RV(G)$vokfzN#kkgm$*tvB^A<=k->e%u{h^tLi56a9=;l7Fq}=MD$%I zYq}7QV=ccceE32*Au5lQziqL#e6kgNA)FAE7s6q6b~Ov(gs6HUT;+paA}@riJXTh5 zA)FA^FNBM}D?BfR2ot3%}d}fQLqT0d-yxbT--^&BNcRrK!K(AGK zWzf4ouOaCBzup)?zcJC%^q!{oKwlN;dtjR?zG?{izHc`M(AUh)wxh?gc_%Rn!826n zQ&scRy^|PY@g&Bb*7Vz^wY4Y5e4pL}y*o*@Iz#)8O;YthAHMTc#RaLcdi*L+Wt)-H z);}}7E#Iy^wk=~;!wiz!zVI!l5|Dj~ z_}`H&r;>b;2GMr@*tRCBDEXM>o!?}-sqa&oL!Z%H`kdy`t~|D_nJ?1LlA+1y?togd z&ytZ3R`&+ULxbc{?#`^aZS8$he5qwfuRPM`PDod0D{qGX*?Xuy4<9TK$2spBTXC>F z^44;pU1Noag!6t>e$j~#0}*p*u)HRVPFP|$)N$(k?utvyqc1vf2hPJ6om4e&UK!`6 ztP1DhBX5xxom3t;uej)>x`FfB=<^*NICqzsg?5nTJgz)&9&OP{N*orN34hC6HQdhO zdB^D71#RtR5l(UQmYKQxL|;nYGBa2+8Q;D2_Z3OK$y+8qjozo}^a0JF4{0WSL^)K|f$F<2zOPK`E-SX! zcb8@2>x7e25OK1c+ZlHXz@JsCj(BMt&sx{JKZItjlV1pl|M1=2L&vuW(S`P+uCzCG zqkYgNb&qfH`Q!Y4f50E_H~gmmKstyHrbFmZI*jUXkM|^`va0=FDtE-2!MEQ1A@Z#C z+I7T-B&PY({Vn~i{H^_M{B8a1{4Y>@fBBEp?CCm@<%$#rL(`{Q7%=% zx~sqZ4EBBei|8xTN4Z3r!S3$&qC4W<{gIDyaXaGs`+uiRq>pmh^&Rnp{Ct#4MOatY z5kJJ=3td}2%H>d$cEzJygg94*@Aqbe}cb<|54e~@AyyjpXBc^^$_|x)QHV-+zsCnSB$-exf?#CC_2tp zgCA`Gtt2jv{*K$mu|-^+@=u)bCj+tW>J;A1F&+OqhI6jVLL7i_e1+rO^4tC+;a-!e zGBsJ965c#-;t%1xsXzMal$|%YrT9}(;?40NGPtczA3{UvSsF&qQ8qnK!|4U8YF%l0 zoO3=!!g=KZv@ZS}+RHzSKB3tZ*|5%|=H2|f%get0n&P~wU0z(A*TmpI^FGu;S!#Vp8$N8~{q5737(F|^ESf5rL5!dV8 zp|X|WN5i$dds9`ouBg9jkL%BT8rO4u;kd3p{e3B9@kS!BjQ@b1&6?wgYV(`N@~owrnt9hGQC4n=v}I; zud8a8hX%r{p5?}MvM~;j?f$r)l+iBIGSjmDc0TwXt{XS5Cy|Hiy`Tj{N2kUTu4mfi z+u?PiuP0c=YX^|B9^hsZ-^U0B5{2p zrEaX^Lvy0zdItEORlIh%9up(De${J-?`iFDH163dUh-KxTOMEuCu?qWm`?*gHeepj zJbqxkY`*ACLaWX^&RxaEI9WxA-Fy;S5az}60rR{3!WpI`Tw$l59kCO@lDc$d8WhN#MU76Ej$%DRB?o4YS3Xr^Kt)Lg}?Dfm9;_Px*1V}o(G%^XF4E4x?C?#{gy=vWsS|akbh}Hr%?{BEqVBXm z31{@6_V$=SeQcA|(mtOqpbIH{`?E+x*RAYp=s&@2*s42Mq%{`Q-%a<>y>uT!L^^L^ z=g$>+MWv-~&K0R@`!gY`Iy5ZO;Fb_SAWb{6O;Q`Xm}+*eNY&e)HLi0-+S=7E;KXK` z@-}(9yaP+qcl5jgMs&e*(Gi`MT_1=pzpY_S5Iyqw#)RlQQL}d~q7QFUn-jr=sA@lA zJsHJAbmYk>LYyvZH(Xu+h+h3tL`1j3hK8+u#h8RPsxA;+exp*BJ&|>E`3;HN;P@g} zM-P9wz7TyL)l5eVQCUYH>$`~}Z&A9d5zTq}I*q3{l;*D47NsA-Z^I(G`mKoD`l{PP zrFtFR&KKGmDctrgL~R#i*B;T;Z?dqnI(p@6(Gi_7E;bN7?Dbeg^q+|yqFI)FM=R)i z$cG(mb$f`eZ1&z+L@$3UBBIMSG3+;~E)ZR@A6=D>uDTyR`0e^abba)rcYUk7aq4KV zA6@r|&VMf=qRU#{rQk<8ad*coV>{pK&V0YV5WO?4ZXrA!?dj->2Y~F{2I4!bqZfY^ z5z$6Ma0BrY@GEbrAjGafG}o12KblE#B`nB%)rZB~!*$gMenhj6UFNH}CbK@;-qmkN zT77Rie52u=?@eE2Uya&WTl-l3_of$o77^F^@j+Y{gWph^nlbF!$NGOB($wF?@7PgY z%i`-|`Q^9qA^X_!`0MEgx)J@yhSAjD#jl8u{V}ZXQuZ>@4+^?;qp$mfhq&a$k%Kg;rVD z&OWv}zBgj|DZXYF?=|sNAJxV6yYAcGx$`3;ntRjA;=Kv{hC+0>#k=pq5Tfh*@V#h< z_i!no9H?Ot{W6WF*hh3-Y-i?Kyt%&JCGVE^$b02|@_rfZP%a*op1ZV4L~juo!zu#b zYkOB*oW;59;rbisU9atZraViYEzg18E`O+I!}h6Xe;*Oof4PV4tpmTIG&N(#ZF_HB z+1?&sFZ0Lhqc>fGQT1Ir+l2FK*N#o^sfgxda$~qRje5WvnN9e)y)Ey-4o5j4TCNv` zVuL6Wzln`PpLJh0uvGwlEC76Sf!7qT>U>-wUV{qV)c~)&h1s5AE{k!1J2N&!MD%G% zL37z^@M8hd8;d+ddx%bui84txkxgYYnGD65B2)3(LZ-=d*;0m^%R0z#b6IRoCp$f< zKFnp)wnRkq#V(>(f*%WrE-dyC?IC*iLi8o|g6JvRBO-dRbkDj5KNb+Zw$wwkhv?l4 z(cDw2`ys7KPjraXkN(6(bUyg8fao*+^d&(=_i1oMk9jE~qRU3Fa>0)U zL@yiVAv(4Y?F~=I=7f`huXV8H^VpGW6o_a8({sU(1!ylB=RrHRpzRGz$0oE#ycH4A z3*6@SZ17_N(TgTECPXjX1Ll%>h>lG}XTKK_(YMD1hp}?Nj|D{MO>0bu_Ke=u8@)G^ zXY{U*VXUDaMMU&}{Xs;}06!KGJuk;YwAbq1Srb`ZthJ2w>7ZGkMMQL&iEJA9l@WcP zzb3mPoa$>rO{p2(@2}lHCp;|RuHcw6*F$vOBKmY+W7u7=Ci@|r;j26y^h{r*>7ciw zCf3g|*4aU$_c`@!^gh>D-CE0m^P?kr3iy=~z03DGab_)OOo+Au-kPjkb+TpSo#4$H ztL`U{Wh{+|=u-p1R`(?EV*$}K^BWVQd+z~=_AFzuX&LMHeMCf;O&*&7ek>q*`pU+H zXwNd{S;lI6sQk|EE?BxIBBIOs(c^xO4Ma~Zh&@DKnb=UfkX5~B(N##35WCMV{Wa-F z@7iURS0}nVA^bb>EO||0t@buayjEVPrjOQrt9wl$rkccKs!0imXj4tbY={kLPcDi* zXgAyjgH=O&cRPS1_Mjc>M(^Uy(GfjjO9#6@z0g#MKgCw@7ZgE>_*-lf+dTwO<6N^1m*RA1uChabU?_H~~V;$9-wnayE_I5_~>oI}q z@ueQBJyd%G)YWetTGYQ|)YfjhPt$?HH7&?}YqvPoW>VfB; z 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 literal 0 HcmV?d00001 diff --git a/internal/pgparse/wasm/shim.c b/internal/pgparse/wasm/shim.c new file mode 100644 index 0000000..7534711 --- /dev/null +++ b/internal/pgparse/wasm/shim.c @@ -0,0 +1,53 @@ +// 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); } + +// 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/schema.go b/internal/schema/schema.go index c511073..d3eb414 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -19,6 +19,7 @@ import ( "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). @@ -469,7 +470,7 @@ 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) + tree, err := pgparse.Parse(schemaSQL) if err != nil { return nil, fmt.Errorf("parse schema: %w", err) } @@ -539,7 +540,7 @@ 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) + tree, err := pgparse.Parse(schemaSQL) if err != nil { return fmt.Errorf("parse schema: %w", err) } @@ -1989,7 +1990,7 @@ 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) + tree, err := pgparse.Parse("SELECT " + text) if err != nil { return nil, err } @@ -2292,7 +2293,7 @@ func Deparse(e Expr) 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: e}}}}, }}}}}} - s, err := pg_query.Deparse(res) + s, err := pgparse.Deparse(res) if err != nil { return "" } @@ -2304,7 +2305,7 @@ func DeparseStmt(n *pg_query.Node) string { if n == nil { return "" } - s, err := pg_query.Deparse(&pg_query.ParseResult{Stmts: []*pg_query.RawStmt{{Stmt: n}}}) + s, err := pgparse.Deparse(&pg_query.ParseResult{Stmts: []*pg_query.RawStmt{{Stmt: n}}}) if err != nil { return "" } diff --git a/internal/vet/hazards.go b/internal/vet/hazards.go index b840504..0f33e33 100644 --- a/internal/vet/hazards.go +++ b/internal/vet/hazards.go @@ -9,6 +9,7 @@ import ( 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" ) @@ -149,7 +150,7 @@ func isIdentByte(c byte) bool { // 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) + tree, err := pgparse.Parse(e.SQL) if err != nil { return // analyze.Analyze reports the parse failure itself } From 32639f3575b31ccad145b43d53509328fbc6f579 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Tue, 8 Sep 2026 18:15:28 +0900 Subject: [PATCH 02/27] =?UTF-8?q?no=20cgo:=20the=20node=20types=20are=20ge?= =?UTF-8?q?nerated=20from=20libpg=5Fquery's=20pg=5Fquery.proto=20into=20in?= =?UTF-8?q?ternal/pgparse=20(pgparse.Node,=20pgparse.ParseResult,=20...),?= =?UTF-8?q?=20pg=5Fquery=5Fgo=20is=20gone=20from=20go.mod,=20and=20the=20b?= =?UTF-8?q?inary=20builds=20with=20CGO=5FENABLED=3D0=20=E2=80=94=20every?= =?UTF-8?q?=20test,=20the=20regress=20baseline,=20the=20golden=20files=20a?= =?UTF-8?q?nd=20the=20Facts=20snapshot=20unchanged?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wazero compiles the module through an on-disk cache (user cache dir / sqlshape / wazero): the first process pays about a second, every later one about 30 ms, which matters because go vet starts one analyzer process per package. README and release.yml no longer ask for a C compiler; CHANGELOG [Unreleased] records the change. --- .github/workflows/release.yml | 9 +- CHANGELOG.md | 6 + README.md | 7 +- go.mod | 3 +- go.sum | 14 +- internal/analyze/analyze.go | 83 +- internal/analyze/card.go | 161 +- internal/analyze/collation.go | 7 +- internal/analyze/expr.go | 257 +- internal/analyze/facts.go | 59 +- internal/analyze/function.go | 22 +- internal/analyze/grouping.go | 57 +- internal/analyze/json.go | 131 +- internal/analyze/policy.go | 10 +- internal/analyze/recursive.go | 45 +- internal/analyze/regress_test.go | 28 +- internal/analyze/scope.go | 11 +- internal/analyze/stmt.go | 334 +- internal/analyze/viewdml.go | 11 +- internal/analyze/violation.go | 21 +- internal/diff/diff.go | 5 +- internal/migrate/render.go | 7 +- internal/pgparse/pg_query.pb.go | 37029 +++++++++++++++++++++++++++++ internal/pgparse/pgparse.go | 29 +- internal/pgparse/pgparse_test.go | 126 +- internal/pgparse/wasm/build.sh | 10 +- internal/schema/ddl.go | 141 +- internal/schema/rls.go | 12 +- internal/schema/schema.go | 347 +- internal/schema/seed.go | 20 +- internal/vet/binding.go | 6 +- internal/vet/hazards.go | 12 +- 32 files changed, 38017 insertions(+), 1003 deletions(-) create mode 100644 internal/pgparse/pg_query.pb.go diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19092ce..b8bb3c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,10 +3,9 @@ # # 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 it could be +# cross-compiled from one runner; each platform still builds on its own runner so the smoke +# test runs on the platform it ships for. # # `go install github.com/kr9ly/sqlshape/cmd/sqlshape@` needs nothing from this # workflow: it reads the tag straight from the module proxy. @@ -36,7 +35,7 @@ jobs: - name: Build env: - CGO_ENABLED: "1" + CGO_ENABLED: "0" GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index af2f4cf..1de452b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ release it is a candidate for. ## [Unreleased] +### Changed + +- 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. + ## [1.1.0] - 2026-09-08 ### Added diff --git a/README.md b/README.md index 717e29f..f78330f 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,9 @@ $ 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`. +It is a plain Go build: PostgreSQL's parser (libpg_query) is embedded as WebAssembly and runs on +wazero, so `go install` needs no C compiler. Prebuilt binaries for Linux (amd64, arm64) and macOS +(Apple Silicon) are on the [releases page](https://github.com/kr9ly/sqlshape/releases). The runtime is an ordinary Go module: diff --git a/go.mod b/go.mod index 8073e41..e0fc65c 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +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 ( diff --git a/go.sum b/go.sum index 7905c13..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= @@ -42,10 +38,8 @@ 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/analyze.go b/internal/analyze/analyze.go index cd00cf6..1ff9fde 100644 --- a/internal/analyze/analyze.go +++ b/internal/analyze/analyze.go @@ -7,7 +7,6 @@ import ( "sort" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "github.com/kr9ly/sqlshape/internal/catalog" @@ -107,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 @@ -125,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 } @@ -290,12 +289,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 { @@ -307,35 +306,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 { @@ -344,13 +343,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 @@ -358,14 +357,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) @@ -378,7 +377,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) @@ -406,18 +405,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)} @@ -520,15 +519,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) @@ -538,7 +537,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 @@ -552,7 +551,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: @@ -586,11 +585,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..03897ad 100644 --- a/internal/analyze/card.go +++ b/internal/analyze/card.go @@ -4,8 +4,7 @@ import ( "fmt" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" - + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -30,7 +29,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 +41,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) } @@ -59,30 +58,30 @@ type prover struct { } // 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 +90,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 +119,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 +178,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 +197,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) @@ -233,32 +232,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 +267,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 +322,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 +384,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 +426,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 +442,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 +476,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 +495,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) } @@ -606,12 +605,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 +620,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 +638,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 +717,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 +760,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 +790,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 +841,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 +897,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/expr.go b/internal/analyze/expr.go index 63ee151..679964a 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 { @@ -678,7 +677,7 @@ 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) { target, rerr := a.s.ResolveType(tc.TypeName) if rerr != nil { return nil, errAt(codeUndefinedObject, tc.TypeName.Location, "%v", rerr) @@ -758,15 +757,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 +787,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 +830,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 +839,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 +872,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 +894,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 +911,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 +924,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 +942,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 +1032,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 +1096,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 +1368,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 +1426,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 +1440,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 +1450,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 +1465,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 +1508,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 +1519,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 +1528,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 +1559,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 +1580,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 +1598,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 +1654,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 +1689,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 +1814,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 +1830,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 +1861,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 +1890,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 +1932,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 } @@ -2051,7 +2050,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 @@ -2087,7 +2086,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 +2101,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 1f86009..79fdf07 100644 --- a/internal/analyze/facts.go +++ b/internal/analyze/facts.go @@ -4,7 +4,6 @@ import ( "sort" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "github.com/kr9ly/sqlshape/internal/facts" @@ -36,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) @@ -241,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} } @@ -301,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} @@ -309,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 { @@ -336,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 { @@ -373,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 @@ -414,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 @@ -440,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() @@ -450,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 } @@ -480,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 @@ -507,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)) } diff --git a/internal/analyze/function.go b/internal/analyze/function.go index cf5a579..ae40799 100644 --- a/internal/analyze/function.go +++ b/internal/analyze/function.go @@ -4,8 +4,6 @@ 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" @@ -69,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) @@ -129,7 +127,7 @@ 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(fn *schema.Function) ([]*pgparse.Node, error) { switch { case fn.SQLBody != nil: return flattenLists(fn.SQLBody), nil @@ -138,7 +136,7 @@ func functionBody(fn *schema.Function) ([]*pg_query.Node, error) { 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) } @@ -160,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 @@ -217,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 } @@ -241,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 ec6d76a..fb03aca 100644 --- a/internal/analyze/grouping.go +++ b/internal/analyze/grouping.go @@ -4,7 +4,6 @@ import ( "fmt" "strings" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" @@ -19,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 { @@ -70,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 @@ -100,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 @@ -118,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() @@ -151,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 } @@ -159,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 } @@ -173,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 @@ -238,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 { @@ -253,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 @@ -270,9 +269,9 @@ 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 := pgparse.Deparse(res) if err != nil { @@ -282,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)...) @@ -293,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 } @@ -303,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 @@ -314,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..b451a28 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) @@ -156,7 +155,7 @@ func (a *analyzer) jsonBehavior(b *pg_query.JsonBehavior, sc *scope, want catalo 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 } @@ -168,7 +167,7 @@ func (a *analyzer) jsonPathspec(n *pg_query.Node, sc *scope) *Error { } // 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 +179,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 +194,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 +209,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 +260,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 +279,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 +298,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 +310,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 +344,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 +369,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 +378,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 +386,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 +401,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 +416,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 +442,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 +464,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 +473,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 +502,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 +526,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 +538,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/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 9f50900..3a4e007 100644 --- a/internal/analyze/regress_test.go +++ b/internal/analyze/regress_test.go @@ -16,8 +16,6 @@ import ( "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" @@ -485,7 +483,7 @@ 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 @@ -501,7 +499,7 @@ 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 { @@ -510,7 +508,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q s = loadRegressSchema(&ddl) } drops := dropTemps(stmts[:i]) - if st.DiscardStmt.Target == pg_query.DiscardMode_DISCARD_ALL { + if st.DiscardStmt.Target == pgparse.DiscardMode_DISCARD_ALL { drops = append(drops, sessionResets...) } for _, d := range drops { @@ -520,26 +518,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 { @@ -550,7 +548,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] @@ -667,10 +665,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 diff --git a/internal/analyze/scope.go b/internal/analyze/scope.go index bdeba77..3038027 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" ) @@ -71,8 +70,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 } @@ -187,7 +186,7 @@ type scope struct { items []*rte ctes map[string]*cte // 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 @@ -463,7 +462,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 { diff --git a/internal/analyze/stmt.go b/internal/analyze/stmt.go index abe18f7..7f1500c 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -1,18 +1,18 @@ package analyze import ( - "google.golang.org/protobuf/proto" "strconv" "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/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 +32,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 +60,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) @@ -182,7 +182,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 +208,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 +243,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 +272,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 +301,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 +334,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 +363,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 +373,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 +386,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 +411,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 +423,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 +456,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 +573,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 +599,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 +610,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 +638,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 +659,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 +680,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 +699,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 +714,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,9 +773,9 @@ 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 { @@ -813,7 +813,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 +837,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 +851,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 +874,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 +886,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 +911,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 +957,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 +1069,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 +1080,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 +1090,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 +1102,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 +1144,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 +1201,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)) @@ -1247,7 +1247,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,7 +1271,7 @@ 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) { +func (a *analyzer) returning(list []*pgparse.Node, sc *scope) ([]rteCol, *Error) { if len(list) == 0 { return nil, nil } @@ -1280,14 +1280,14 @@ func (a *analyzer) returning(list []*pg_query.Node, sc *scope) ([]rteCol, *Error 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) } -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 @@ -1365,7 +1365,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 +1376,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 +1403,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 +1437,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") } @@ -1462,9 +1462,9 @@ func (a *analyzer) insertStmt(ins *pg_query.InsertStmt, sc *scope) ([]rteCol, *E return a.returning(ins.ReturningList, inner) } -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 +1525,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 +1569,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 @@ -1613,7 +1613,7 @@ func (a *analyzer) updateStmt(upd *pg_query.UpdateStmt, sc *scope) ([]rteCol, *E return a.returning(upd.ReturningList, sc) } -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 @@ -1651,14 +1651,14 @@ func (a *analyzer) deleteStmt(del *pg_query.DeleteStmt, sc *scope) ([]rteCol, *E } // 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 +1666,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 +1686,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 +1699,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 +1738,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 +1804,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 +1832,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 +1857,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 +1868,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 +1880,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 +1917,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 +1928,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 +1939,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 +1991,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,7 +2003,7 @@ 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) @@ -2018,8 +2018,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 +2085,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 +2102,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 +2134,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 +2166,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 +2190,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 +2247,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 +2265,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 +2273,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 +2304,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 +2333,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 +2341,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: + case *pgparse.Node_InsertStmt: return len(v.InsertStmt.ReturningList) > 0 - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: return len(v.UpdateStmt.ReturningList) > 0 - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: return len(v.DeleteStmt.ReturningList) > 0 - case *pg_query.Node_MergeStmt: + case *pgparse.Node_MergeStmt: return len(v.MergeStmt.ReturningList) > 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 +2370,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 +2438,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 +2449,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 +2477,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/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..b07ffd6 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 diff --git a/internal/diff/diff.go b/internal/diff/diff.go index e58815d..772bd53 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" ) @@ -386,7 +385,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/migrate/render.go b/internal/migrate/render.go index d4b24c3..f1af23d 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" ) @@ -182,8 +181,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/pgparse/pg_query.pb.go b/internal/pgparse/pg_query.pb.go new file mode 100644 index 0000000..0108477 --- /dev/null +++ b/internal/pgparse/pg_query.pb.go @@ -0,0 +1,37029 @@ +// 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 +) + +// 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", + } + 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, + } +) + +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 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[14].Descriptor() +} + +func (JsonQuotes) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[14] +} + +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{14} +} + +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[15].Descriptor() +} + +func (JsonTableColumnType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[15] +} + +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{15} +} + +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[16].Descriptor() +} + +func (SetOperation) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[16] +} + +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{16} +} + +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[17].Descriptor() +} + +func (ObjectType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[17] +} + +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{17} +} + +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[18].Descriptor() +} + +func (DropBehavior) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[18] +} + +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{18} +} + +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_CheckNotNull AlterTableType = 9 + AlterTableType_AT_SetStatistics AlterTableType = 10 + AlterTableType_AT_SetOptions AlterTableType = 11 + AlterTableType_AT_ResetOptions AlterTableType = 12 + AlterTableType_AT_SetStorage AlterTableType = 13 + AlterTableType_AT_SetCompression AlterTableType = 14 + AlterTableType_AT_DropColumn AlterTableType = 15 + AlterTableType_AT_AddIndex AlterTableType = 16 + AlterTableType_AT_ReAddIndex AlterTableType = 17 + AlterTableType_AT_AddConstraint AlterTableType = 18 + AlterTableType_AT_ReAddConstraint AlterTableType = 19 + AlterTableType_AT_ReAddDomainConstraint AlterTableType = 20 + AlterTableType_AT_AlterConstraint AlterTableType = 21 + AlterTableType_AT_ValidateConstraint AlterTableType = 22 + AlterTableType_AT_AddIndexConstraint AlterTableType = 23 + AlterTableType_AT_DropConstraint AlterTableType = 24 + AlterTableType_AT_ReAddComment AlterTableType = 25 + AlterTableType_AT_AlterColumnType AlterTableType = 26 + AlterTableType_AT_AlterColumnGenericOptions AlterTableType = 27 + AlterTableType_AT_ChangeOwner AlterTableType = 28 + AlterTableType_AT_ClusterOn AlterTableType = 29 + AlterTableType_AT_DropCluster AlterTableType = 30 + AlterTableType_AT_SetLogged AlterTableType = 31 + AlterTableType_AT_SetUnLogged AlterTableType = 32 + AlterTableType_AT_DropOids AlterTableType = 33 + AlterTableType_AT_SetAccessMethod AlterTableType = 34 + AlterTableType_AT_SetTableSpace AlterTableType = 35 + AlterTableType_AT_SetRelOptions AlterTableType = 36 + AlterTableType_AT_ResetRelOptions AlterTableType = 37 + AlterTableType_AT_ReplaceRelOptions AlterTableType = 38 + AlterTableType_AT_EnableTrig AlterTableType = 39 + AlterTableType_AT_EnableAlwaysTrig AlterTableType = 40 + AlterTableType_AT_EnableReplicaTrig AlterTableType = 41 + AlterTableType_AT_DisableTrig AlterTableType = 42 + AlterTableType_AT_EnableTrigAll AlterTableType = 43 + AlterTableType_AT_DisableTrigAll AlterTableType = 44 + AlterTableType_AT_EnableTrigUser AlterTableType = 45 + AlterTableType_AT_DisableTrigUser AlterTableType = 46 + AlterTableType_AT_EnableRule AlterTableType = 47 + AlterTableType_AT_EnableAlwaysRule AlterTableType = 48 + AlterTableType_AT_EnableReplicaRule AlterTableType = 49 + AlterTableType_AT_DisableRule AlterTableType = 50 + AlterTableType_AT_AddInherit AlterTableType = 51 + AlterTableType_AT_DropInherit AlterTableType = 52 + AlterTableType_AT_AddOf AlterTableType = 53 + AlterTableType_AT_DropOf AlterTableType = 54 + AlterTableType_AT_ReplicaIdentity AlterTableType = 55 + AlterTableType_AT_EnableRowSecurity AlterTableType = 56 + AlterTableType_AT_DisableRowSecurity AlterTableType = 57 + AlterTableType_AT_ForceRowSecurity AlterTableType = 58 + AlterTableType_AT_NoForceRowSecurity AlterTableType = 59 + AlterTableType_AT_GenericOptions AlterTableType = 60 + AlterTableType_AT_AttachPartition AlterTableType = 61 + AlterTableType_AT_DetachPartition AlterTableType = 62 + AlterTableType_AT_DetachPartitionFinalize AlterTableType = 63 + AlterTableType_AT_AddIdentity AlterTableType = 64 + AlterTableType_AT_SetIdentity AlterTableType = 65 + AlterTableType_AT_DropIdentity AlterTableType = 66 + AlterTableType_AT_ReAddStatistics AlterTableType = 67 +) + +// 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_CheckNotNull", + 10: "AT_SetStatistics", + 11: "AT_SetOptions", + 12: "AT_ResetOptions", + 13: "AT_SetStorage", + 14: "AT_SetCompression", + 15: "AT_DropColumn", + 16: "AT_AddIndex", + 17: "AT_ReAddIndex", + 18: "AT_AddConstraint", + 19: "AT_ReAddConstraint", + 20: "AT_ReAddDomainConstraint", + 21: "AT_AlterConstraint", + 22: "AT_ValidateConstraint", + 23: "AT_AddIndexConstraint", + 24: "AT_DropConstraint", + 25: "AT_ReAddComment", + 26: "AT_AlterColumnType", + 27: "AT_AlterColumnGenericOptions", + 28: "AT_ChangeOwner", + 29: "AT_ClusterOn", + 30: "AT_DropCluster", + 31: "AT_SetLogged", + 32: "AT_SetUnLogged", + 33: "AT_DropOids", + 34: "AT_SetAccessMethod", + 35: "AT_SetTableSpace", + 36: "AT_SetRelOptions", + 37: "AT_ResetRelOptions", + 38: "AT_ReplaceRelOptions", + 39: "AT_EnableTrig", + 40: "AT_EnableAlwaysTrig", + 41: "AT_EnableReplicaTrig", + 42: "AT_DisableTrig", + 43: "AT_EnableTrigAll", + 44: "AT_DisableTrigAll", + 45: "AT_EnableTrigUser", + 46: "AT_DisableTrigUser", + 47: "AT_EnableRule", + 48: "AT_EnableAlwaysRule", + 49: "AT_EnableReplicaRule", + 50: "AT_DisableRule", + 51: "AT_AddInherit", + 52: "AT_DropInherit", + 53: "AT_AddOf", + 54: "AT_DropOf", + 55: "AT_ReplicaIdentity", + 56: "AT_EnableRowSecurity", + 57: "AT_DisableRowSecurity", + 58: "AT_ForceRowSecurity", + 59: "AT_NoForceRowSecurity", + 60: "AT_GenericOptions", + 61: "AT_AttachPartition", + 62: "AT_DetachPartition", + 63: "AT_DetachPartitionFinalize", + 64: "AT_AddIdentity", + 65: "AT_SetIdentity", + 66: "AT_DropIdentity", + 67: "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_CheckNotNull": 9, + "AT_SetStatistics": 10, + "AT_SetOptions": 11, + "AT_ResetOptions": 12, + "AT_SetStorage": 13, + "AT_SetCompression": 14, + "AT_DropColumn": 15, + "AT_AddIndex": 16, + "AT_ReAddIndex": 17, + "AT_AddConstraint": 18, + "AT_ReAddConstraint": 19, + "AT_ReAddDomainConstraint": 20, + "AT_AlterConstraint": 21, + "AT_ValidateConstraint": 22, + "AT_AddIndexConstraint": 23, + "AT_DropConstraint": 24, + "AT_ReAddComment": 25, + "AT_AlterColumnType": 26, + "AT_AlterColumnGenericOptions": 27, + "AT_ChangeOwner": 28, + "AT_ClusterOn": 29, + "AT_DropCluster": 30, + "AT_SetLogged": 31, + "AT_SetUnLogged": 32, + "AT_DropOids": 33, + "AT_SetAccessMethod": 34, + "AT_SetTableSpace": 35, + "AT_SetRelOptions": 36, + "AT_ResetRelOptions": 37, + "AT_ReplaceRelOptions": 38, + "AT_EnableTrig": 39, + "AT_EnableAlwaysTrig": 40, + "AT_EnableReplicaTrig": 41, + "AT_DisableTrig": 42, + "AT_EnableTrigAll": 43, + "AT_DisableTrigAll": 44, + "AT_EnableTrigUser": 45, + "AT_DisableTrigUser": 46, + "AT_EnableRule": 47, + "AT_EnableAlwaysRule": 48, + "AT_EnableReplicaRule": 49, + "AT_DisableRule": 50, + "AT_AddInherit": 51, + "AT_DropInherit": 52, + "AT_AddOf": 53, + "AT_DropOf": 54, + "AT_ReplicaIdentity": 55, + "AT_EnableRowSecurity": 56, + "AT_DisableRowSecurity": 57, + "AT_ForceRowSecurity": 58, + "AT_NoForceRowSecurity": 59, + "AT_GenericOptions": 60, + "AT_AttachPartition": 61, + "AT_DetachPartition": 62, + "AT_DetachPartitionFinalize": 63, + "AT_AddIdentity": 64, + "AT_SetIdentity": 65, + "AT_DropIdentity": 66, + "AT_ReAddStatistics": 67, + } +) + +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[19].Descriptor() +} + +func (AlterTableType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[19] +} + +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{19} +} + +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[20].Descriptor() +} + +func (GrantTargetType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[20] +} + +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{20} +} + +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[21].Descriptor() +} + +func (VariableSetKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[21] +} + +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{21} +} + +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 +) + +// 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", + } + 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, + } +) + +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[22].Descriptor() +} + +func (ConstrType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[22] +} + +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{22} +} + +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[23].Descriptor() +} + +func (ImportForeignSchemaType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[23] +} + +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{23} +} + +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[24].Descriptor() +} + +func (RoleStmtType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[24] +} + +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{24} +} + +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[25].Descriptor() +} + +func (FetchDirection) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[25] +} + +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{25} +} + +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[26].Descriptor() +} + +func (FunctionParameterMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[26] +} + +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{26} +} + +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[27].Descriptor() +} + +func (TransactionStmtKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[27] +} + +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{27} +} + +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[28].Descriptor() +} + +func (ViewCheckOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[28] +} + +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{28} +} + +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[29].Descriptor() +} + +func (DiscardMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[29] +} + +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{29} +} + +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[30].Descriptor() +} + +func (ReindexObjectType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[30] +} + +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{30} +} + +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[31].Descriptor() +} + +func (AlterTSConfigType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[31] +} + +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{31} +} + +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[32].Descriptor() +} + +func (PublicationObjSpecType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[32] +} + +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{32} +} + +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[33].Descriptor() +} + +func (AlterPublicationAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[33] +} + +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{33} +} + +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[34].Descriptor() +} + +func (AlterSubscriptionType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[34] +} + +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{34} +} + +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[35].Descriptor() +} + +func (OverridingKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[35] +} + +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{35} +} + +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[36].Descriptor() +} + +func (OnCommitAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[36] +} + +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{36} +} + +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[37].Descriptor() +} + +func (TableFuncType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[37] +} + +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{37} +} + +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[38].Descriptor() +} + +func (ParamKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[38] +} + +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{38} +} + +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[39].Descriptor() +} + +func (CoercionContext) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[39] +} + +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{39} +} + +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[40].Descriptor() +} + +func (CoercionForm) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[40] +} + +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{40} +} + +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[41].Descriptor() +} + +func (BoolExprType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[41] +} + +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{41} +} + +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[42].Descriptor() +} + +func (SubLinkType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[42] +} + +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{42} +} + +type RowCompareType int32 + +const ( + RowCompareType_ROW_COMPARE_TYPE_UNDEFINED RowCompareType = 0 + RowCompareType_ROWCOMPARE_LT RowCompareType = 1 + RowCompareType_ROWCOMPARE_LE RowCompareType = 2 + RowCompareType_ROWCOMPARE_EQ RowCompareType = 3 + RowCompareType_ROWCOMPARE_GE RowCompareType = 4 + RowCompareType_ROWCOMPARE_GT RowCompareType = 5 + RowCompareType_ROWCOMPARE_NE RowCompareType = 6 +) + +// Enum value maps for RowCompareType. +var ( + RowCompareType_name = map[int32]string{ + 0: "ROW_COMPARE_TYPE_UNDEFINED", + 1: "ROWCOMPARE_LT", + 2: "ROWCOMPARE_LE", + 3: "ROWCOMPARE_EQ", + 4: "ROWCOMPARE_GE", + 5: "ROWCOMPARE_GT", + 6: "ROWCOMPARE_NE", + } + RowCompareType_value = map[string]int32{ + "ROW_COMPARE_TYPE_UNDEFINED": 0, + "ROWCOMPARE_LT": 1, + "ROWCOMPARE_LE": 2, + "ROWCOMPARE_EQ": 3, + "ROWCOMPARE_GE": 4, + "ROWCOMPARE_GT": 5, + "ROWCOMPARE_NE": 6, + } +) + +func (x RowCompareType) Enum() *RowCompareType { + p := new(RowCompareType) + *p = x + return p +} + +func (x RowCompareType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RowCompareType) Descriptor() protoreflect.EnumDescriptor { + return file_pg_query_proto_enumTypes[43].Descriptor() +} + +func (RowCompareType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[43] +} + +func (x RowCompareType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RowCompareType.Descriptor instead. +func (RowCompareType) EnumDescriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{43} +} + +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[44].Descriptor() +} + +func (MinMaxOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[44] +} + +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{44} +} + +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[45].Descriptor() +} + +func (SQLValueFunctionOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[45] +} + +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{45} +} + +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[46].Descriptor() +} + +func (XmlExprOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[46] +} + +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{46} +} + +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[47].Descriptor() +} + +func (XmlOptionType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[47] +} + +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{47} +} + +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[48].Descriptor() +} + +func (JsonEncoding) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[48] +} + +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{48} +} + +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[49].Descriptor() +} + +func (JsonFormatType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[49] +} + +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{49} +} + +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[50].Descriptor() +} + +func (JsonConstructorType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[50] +} + +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{50} +} + +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[51].Descriptor() +} + +func (JsonValueType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[51] +} + +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{51} +} + +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[52].Descriptor() +} + +func (JsonWrapper) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[52] +} + +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{52} +} + +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[53].Descriptor() +} + +func (JsonBehaviorType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[53] +} + +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{53} +} + +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[54].Descriptor() +} + +func (JsonExprOp) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[54] +} + +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{54} +} + +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[55].Descriptor() +} + +func (NullTestType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[55] +} + +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{55} +} + +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[56].Descriptor() +} + +func (BoolTestType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[56] +} + +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{56} +} + +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[57].Descriptor() +} + +func (MergeMatchKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[57] +} + +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{57} +} + +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[58].Descriptor() +} + +func (CmdType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[58] +} + +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{58} +} + +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_ANTI JoinType = 7 + JoinType_JOIN_UNIQUE_OUTER JoinType = 8 + JoinType_JOIN_UNIQUE_INNER JoinType = 9 +) + +// 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_ANTI", + 8: "JOIN_UNIQUE_OUTER", + 9: "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_ANTI": 7, + "JOIN_UNIQUE_OUTER": 8, + "JOIN_UNIQUE_INNER": 9, + } +) + +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[59].Descriptor() +} + +func (JoinType) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[59] +} + +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{59} +} + +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[60].Descriptor() +} + +func (AggStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[60] +} + +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{60} +} + +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[61].Descriptor() +} + +func (AggSplit) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[61] +} + +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{61} +} + +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[62].Descriptor() +} + +func (SetOpCmd) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[62] +} + +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{62} +} + +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[63].Descriptor() +} + +func (SetOpStrategy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[63] +} + +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{63} +} + +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[64].Descriptor() +} + +func (OnConflictAction) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[64] +} + +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{64} +} + +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[65].Descriptor() +} + +func (LimitOption) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[65] +} + +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{65} +} + +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[66].Descriptor() +} + +func (LockClauseStrength) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[66] +} + +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{66} +} + +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[67].Descriptor() +} + +func (LockWaitPolicy) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[67] +} + +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{67} +} + +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[68].Descriptor() +} + +func (LockTupleMode) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[68] +} + +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{68} +} + +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[69].Descriptor() +} + +func (KeywordKind) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[69] +} + +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{69} +} + +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_ENUM_P Token = 405 + Token_ERROR_P Token = 406 + Token_ESCAPE Token = 407 + Token_EVENT Token = 408 + Token_EXCEPT Token = 409 + Token_EXCLUDE Token = 410 + Token_EXCLUDING Token = 411 + Token_EXCLUSIVE Token = 412 + Token_EXECUTE Token = 413 + Token_EXISTS Token = 414 + Token_EXPLAIN Token = 415 + Token_EXPRESSION Token = 416 + Token_EXTENSION Token = 417 + Token_EXTERNAL Token = 418 + Token_EXTRACT Token = 419 + Token_FALSE_P Token = 420 + Token_FAMILY Token = 421 + Token_FETCH Token = 422 + Token_FILTER Token = 423 + Token_FINALIZE Token = 424 + Token_FIRST_P Token = 425 + Token_FLOAT_P Token = 426 + Token_FOLLOWING Token = 427 + Token_FOR Token = 428 + Token_FORCE Token = 429 + Token_FOREIGN Token = 430 + Token_FORMAT Token = 431 + Token_FORWARD Token = 432 + Token_FREEZE Token = 433 + Token_FROM Token = 434 + Token_FULL Token = 435 + Token_FUNCTION Token = 436 + Token_FUNCTIONS Token = 437 + Token_GENERATED Token = 438 + Token_GLOBAL Token = 439 + Token_GRANT Token = 440 + Token_GRANTED Token = 441 + Token_GREATEST Token = 442 + Token_GROUP_P Token = 443 + Token_GROUPING Token = 444 + Token_GROUPS Token = 445 + Token_HANDLER Token = 446 + Token_HAVING Token = 447 + Token_HEADER_P Token = 448 + Token_HOLD Token = 449 + Token_HOUR_P Token = 450 + Token_IDENTITY_P Token = 451 + Token_IF_P Token = 452 + Token_ILIKE Token = 453 + Token_IMMEDIATE Token = 454 + Token_IMMUTABLE Token = 455 + Token_IMPLICIT_P Token = 456 + Token_IMPORT_P Token = 457 + Token_IN_P Token = 458 + Token_INCLUDE Token = 459 + Token_INCLUDING Token = 460 + Token_INCREMENT Token = 461 + Token_INDENT Token = 462 + Token_INDEX Token = 463 + Token_INDEXES Token = 464 + Token_INHERIT Token = 465 + Token_INHERITS Token = 466 + Token_INITIALLY Token = 467 + Token_INLINE_P Token = 468 + Token_INNER_P Token = 469 + Token_INOUT Token = 470 + Token_INPUT_P Token = 471 + Token_INSENSITIVE Token = 472 + Token_INSERT Token = 473 + Token_INSTEAD Token = 474 + Token_INT_P Token = 475 + Token_INTEGER Token = 476 + Token_INTERSECT Token = 477 + Token_INTERVAL Token = 478 + Token_INTO Token = 479 + Token_INVOKER Token = 480 + Token_IS Token = 481 + Token_ISNULL Token = 482 + Token_ISOLATION Token = 483 + Token_JOIN Token = 484 + Token_JSON Token = 485 + Token_JSON_ARRAY Token = 486 + Token_JSON_ARRAYAGG Token = 487 + Token_JSON_EXISTS Token = 488 + Token_JSON_OBJECT Token = 489 + Token_JSON_OBJECTAGG Token = 490 + Token_JSON_QUERY Token = 491 + Token_JSON_SCALAR Token = 492 + Token_JSON_SERIALIZE Token = 493 + Token_JSON_TABLE Token = 494 + Token_JSON_VALUE Token = 495 + Token_KEEP Token = 496 + Token_KEY Token = 497 + Token_KEYS Token = 498 + Token_LABEL Token = 499 + Token_LANGUAGE Token = 500 + Token_LARGE_P Token = 501 + Token_LAST_P Token = 502 + Token_LATERAL_P Token = 503 + Token_LEADING Token = 504 + Token_LEAKPROOF Token = 505 + Token_LEAST Token = 506 + Token_LEFT Token = 507 + Token_LEVEL Token = 508 + Token_LIKE Token = 509 + Token_LIMIT Token = 510 + Token_LISTEN Token = 511 + Token_LOAD Token = 512 + Token_LOCAL Token = 513 + Token_LOCALTIME Token = 514 + Token_LOCALTIMESTAMP Token = 515 + Token_LOCATION Token = 516 + Token_LOCK_P Token = 517 + Token_LOCKED Token = 518 + Token_LOGGED Token = 519 + Token_MAPPING Token = 520 + Token_MATCH Token = 521 + Token_MATCHED Token = 522 + Token_MATERIALIZED Token = 523 + Token_MAXVALUE Token = 524 + Token_MERGE Token = 525 + Token_MERGE_ACTION Token = 526 + Token_METHOD Token = 527 + Token_MINUTE_P Token = 528 + Token_MINVALUE Token = 529 + Token_MODE Token = 530 + Token_MONTH_P Token = 531 + Token_MOVE Token = 532 + Token_NAME_P Token = 533 + Token_NAMES Token = 534 + Token_NATIONAL Token = 535 + Token_NATURAL Token = 536 + Token_NCHAR Token = 537 + Token_NESTED Token = 538 + Token_NEW Token = 539 + Token_NEXT Token = 540 + Token_NFC Token = 541 + Token_NFD Token = 542 + Token_NFKC Token = 543 + Token_NFKD Token = 544 + Token_NO Token = 545 + Token_NONE Token = 546 + Token_NORMALIZE Token = 547 + Token_NORMALIZED Token = 548 + Token_NOT Token = 549 + Token_NOTHING Token = 550 + Token_NOTIFY Token = 551 + Token_NOTNULL Token = 552 + Token_NOWAIT Token = 553 + Token_NULL_P Token = 554 + Token_NULLIF Token = 555 + Token_NULLS_P Token = 556 + Token_NUMERIC Token = 557 + Token_OBJECT_P Token = 558 + Token_OF Token = 559 + Token_OFF Token = 560 + Token_OFFSET Token = 561 + Token_OIDS Token = 562 + Token_OLD Token = 563 + Token_OMIT Token = 564 + Token_ON Token = 565 + Token_ONLY Token = 566 + Token_OPERATOR Token = 567 + Token_OPTION Token = 568 + Token_OPTIONS Token = 569 + Token_OR Token = 570 + Token_ORDER Token = 571 + Token_ORDINALITY Token = 572 + Token_OTHERS Token = 573 + Token_OUT_P Token = 574 + Token_OUTER_P Token = 575 + Token_OVER Token = 576 + Token_OVERLAPS Token = 577 + Token_OVERLAY Token = 578 + Token_OVERRIDING Token = 579 + Token_OWNED Token = 580 + Token_OWNER Token = 581 + Token_PARALLEL Token = 582 + Token_PARAMETER Token = 583 + Token_PARSER Token = 584 + Token_PARTIAL Token = 585 + Token_PARTITION Token = 586 + Token_PASSING Token = 587 + Token_PASSWORD Token = 588 + Token_PATH Token = 589 + Token_PLACING Token = 590 + Token_PLAN Token = 591 + Token_PLANS Token = 592 + Token_POLICY Token = 593 + Token_POSITION Token = 594 + Token_PRECEDING Token = 595 + Token_PRECISION Token = 596 + Token_PRESERVE Token = 597 + Token_PREPARE Token = 598 + Token_PREPARED Token = 599 + Token_PRIMARY Token = 600 + Token_PRIOR Token = 601 + Token_PRIVILEGES Token = 602 + Token_PROCEDURAL Token = 603 + Token_PROCEDURE Token = 604 + Token_PROCEDURES Token = 605 + Token_PROGRAM Token = 606 + Token_PUBLICATION Token = 607 + Token_QUOTE Token = 608 + Token_QUOTES Token = 609 + Token_RANGE Token = 610 + Token_READ Token = 611 + Token_REAL Token = 612 + Token_REASSIGN Token = 613 + Token_RECHECK Token = 614 + Token_RECURSIVE Token = 615 + Token_REF_P Token = 616 + Token_REFERENCES Token = 617 + Token_REFERENCING Token = 618 + Token_REFRESH Token = 619 + Token_REINDEX Token = 620 + Token_RELATIVE_P Token = 621 + Token_RELEASE Token = 622 + Token_RENAME Token = 623 + Token_REPEATABLE Token = 624 + Token_REPLACE Token = 625 + Token_REPLICA Token = 626 + Token_RESET Token = 627 + Token_RESTART Token = 628 + Token_RESTRICT Token = 629 + Token_RETURN Token = 630 + Token_RETURNING Token = 631 + Token_RETURNS Token = 632 + Token_REVOKE Token = 633 + Token_RIGHT Token = 634 + Token_ROLE Token = 635 + Token_ROLLBACK Token = 636 + Token_ROLLUP Token = 637 + Token_ROUTINE Token = 638 + Token_ROUTINES Token = 639 + Token_ROW Token = 640 + Token_ROWS Token = 641 + Token_RULE Token = 642 + Token_SAVEPOINT Token = 643 + Token_SCALAR Token = 644 + Token_SCHEMA Token = 645 + Token_SCHEMAS Token = 646 + Token_SCROLL Token = 647 + Token_SEARCH Token = 648 + Token_SECOND_P Token = 649 + Token_SECURITY Token = 650 + Token_SELECT Token = 651 + Token_SEQUENCE Token = 652 + Token_SEQUENCES Token = 653 + Token_SERIALIZABLE Token = 654 + Token_SERVER Token = 655 + Token_SESSION Token = 656 + Token_SESSION_USER Token = 657 + Token_SET Token = 658 + Token_SETS Token = 659 + Token_SETOF Token = 660 + Token_SHARE Token = 661 + Token_SHOW Token = 662 + Token_SIMILAR Token = 663 + Token_SIMPLE Token = 664 + Token_SKIP Token = 665 + Token_SMALLINT Token = 666 + Token_SNAPSHOT Token = 667 + Token_SOME Token = 668 + Token_SOURCE Token = 669 + Token_SQL_P Token = 670 + Token_STABLE Token = 671 + Token_STANDALONE_P Token = 672 + Token_START Token = 673 + Token_STATEMENT Token = 674 + Token_STATISTICS Token = 675 + Token_STDIN Token = 676 + Token_STDOUT Token = 677 + Token_STORAGE Token = 678 + Token_STORED Token = 679 + Token_STRICT_P Token = 680 + Token_STRING_P Token = 681 + Token_STRIP_P Token = 682 + Token_SUBSCRIPTION Token = 683 + Token_SUBSTRING Token = 684 + Token_SUPPORT Token = 685 + Token_SYMMETRIC Token = 686 + Token_SYSID Token = 687 + Token_SYSTEM_P Token = 688 + Token_SYSTEM_USER Token = 689 + Token_TABLE Token = 690 + Token_TABLES Token = 691 + Token_TABLESAMPLE Token = 692 + Token_TABLESPACE Token = 693 + Token_TARGET Token = 694 + Token_TEMP Token = 695 + Token_TEMPLATE Token = 696 + Token_TEMPORARY Token = 697 + Token_TEXT_P Token = 698 + Token_THEN Token = 699 + Token_TIES Token = 700 + Token_TIME Token = 701 + Token_TIMESTAMP Token = 702 + Token_TO Token = 703 + Token_TRAILING Token = 704 + Token_TRANSACTION Token = 705 + Token_TRANSFORM Token = 706 + Token_TREAT Token = 707 + Token_TRIGGER Token = 708 + Token_TRIM Token = 709 + Token_TRUE_P Token = 710 + Token_TRUNCATE Token = 711 + Token_TRUSTED Token = 712 + Token_TYPE_P Token = 713 + Token_TYPES_P Token = 714 + Token_UESCAPE Token = 715 + Token_UNBOUNDED Token = 716 + Token_UNCONDITIONAL Token = 717 + Token_UNCOMMITTED Token = 718 + Token_UNENCRYPTED Token = 719 + Token_UNION Token = 720 + Token_UNIQUE Token = 721 + Token_UNKNOWN Token = 722 + Token_UNLISTEN Token = 723 + Token_UNLOGGED Token = 724 + Token_UNTIL Token = 725 + Token_UPDATE Token = 726 + Token_USER Token = 727 + Token_USING Token = 728 + Token_VACUUM Token = 729 + Token_VALID Token = 730 + Token_VALIDATE Token = 731 + Token_VALIDATOR Token = 732 + Token_VALUE_P Token = 733 + Token_VALUES Token = 734 + Token_VARCHAR Token = 735 + Token_VARIADIC Token = 736 + Token_VARYING Token = 737 + Token_VERBOSE Token = 738 + Token_VERSION_P Token = 739 + Token_VIEW Token = 740 + Token_VIEWS Token = 741 + Token_VOLATILE Token = 742 + Token_WHEN Token = 743 + Token_WHERE Token = 744 + Token_WHITESPACE_P Token = 745 + Token_WINDOW Token = 746 + Token_WITH Token = 747 + Token_WITHIN Token = 748 + Token_WITHOUT Token = 749 + Token_WORK Token = 750 + Token_WRAPPER Token = 751 + Token_WRITE Token = 752 + Token_XML_P Token = 753 + Token_XMLATTRIBUTES Token = 754 + Token_XMLCONCAT Token = 755 + Token_XMLELEMENT Token = 756 + Token_XMLEXISTS Token = 757 + Token_XMLFOREST Token = 758 + Token_XMLNAMESPACES Token = 759 + Token_XMLPARSE Token = 760 + Token_XMLPI Token = 761 + Token_XMLROOT Token = 762 + Token_XMLSERIALIZE Token = 763 + Token_XMLTABLE Token = 764 + Token_YEAR_P Token = 765 + Token_YES_P Token = 766 + Token_ZONE Token = 767 + Token_FORMAT_LA Token = 768 + Token_NOT_LA Token = 769 + Token_NULLS_LA Token = 770 + Token_WITH_LA Token = 771 + Token_WITHOUT_LA Token = 772 + Token_MODE_TYPE_NAME Token = 773 + Token_MODE_PLPGSQL_EXPR Token = 774 + Token_MODE_PLPGSQL_ASSIGN1 Token = 775 + Token_MODE_PLPGSQL_ASSIGN2 Token = 776 + Token_MODE_PLPGSQL_ASSIGN3 Token = 777 + Token_UMINUS Token = 778 +) + +// 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: "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: "OF", + 560: "OFF", + 561: "OFFSET", + 562: "OIDS", + 563: "OLD", + 564: "OMIT", + 565: "ON", + 566: "ONLY", + 567: "OPERATOR", + 568: "OPTION", + 569: "OPTIONS", + 570: "OR", + 571: "ORDER", + 572: "ORDINALITY", + 573: "OTHERS", + 574: "OUT_P", + 575: "OUTER_P", + 576: "OVER", + 577: "OVERLAPS", + 578: "OVERLAY", + 579: "OVERRIDING", + 580: "OWNED", + 581: "OWNER", + 582: "PARALLEL", + 583: "PARAMETER", + 584: "PARSER", + 585: "PARTIAL", + 586: "PARTITION", + 587: "PASSING", + 588: "PASSWORD", + 589: "PATH", + 590: "PLACING", + 591: "PLAN", + 592: "PLANS", + 593: "POLICY", + 594: "POSITION", + 595: "PRECEDING", + 596: "PRECISION", + 597: "PRESERVE", + 598: "PREPARE", + 599: "PREPARED", + 600: "PRIMARY", + 601: "PRIOR", + 602: "PRIVILEGES", + 603: "PROCEDURAL", + 604: "PROCEDURE", + 605: "PROCEDURES", + 606: "PROGRAM", + 607: "PUBLICATION", + 608: "QUOTE", + 609: "QUOTES", + 610: "RANGE", + 611: "READ", + 612: "REAL", + 613: "REASSIGN", + 614: "RECHECK", + 615: "RECURSIVE", + 616: "REF_P", + 617: "REFERENCES", + 618: "REFERENCING", + 619: "REFRESH", + 620: "REINDEX", + 621: "RELATIVE_P", + 622: "RELEASE", + 623: "RENAME", + 624: "REPEATABLE", + 625: "REPLACE", + 626: "REPLICA", + 627: "RESET", + 628: "RESTART", + 629: "RESTRICT", + 630: "RETURN", + 631: "RETURNING", + 632: "RETURNS", + 633: "REVOKE", + 634: "RIGHT", + 635: "ROLE", + 636: "ROLLBACK", + 637: "ROLLUP", + 638: "ROUTINE", + 639: "ROUTINES", + 640: "ROW", + 641: "ROWS", + 642: "RULE", + 643: "SAVEPOINT", + 644: "SCALAR", + 645: "SCHEMA", + 646: "SCHEMAS", + 647: "SCROLL", + 648: "SEARCH", + 649: "SECOND_P", + 650: "SECURITY", + 651: "SELECT", + 652: "SEQUENCE", + 653: "SEQUENCES", + 654: "SERIALIZABLE", + 655: "SERVER", + 656: "SESSION", + 657: "SESSION_USER", + 658: "SET", + 659: "SETS", + 660: "SETOF", + 661: "SHARE", + 662: "SHOW", + 663: "SIMILAR", + 664: "SIMPLE", + 665: "SKIP", + 666: "SMALLINT", + 667: "SNAPSHOT", + 668: "SOME", + 669: "SOURCE", + 670: "SQL_P", + 671: "STABLE", + 672: "STANDALONE_P", + 673: "START", + 674: "STATEMENT", + 675: "STATISTICS", + 676: "STDIN", + 677: "STDOUT", + 678: "STORAGE", + 679: "STORED", + 680: "STRICT_P", + 681: "STRING_P", + 682: "STRIP_P", + 683: "SUBSCRIPTION", + 684: "SUBSTRING", + 685: "SUPPORT", + 686: "SYMMETRIC", + 687: "SYSID", + 688: "SYSTEM_P", + 689: "SYSTEM_USER", + 690: "TABLE", + 691: "TABLES", + 692: "TABLESAMPLE", + 693: "TABLESPACE", + 694: "TARGET", + 695: "TEMP", + 696: "TEMPLATE", + 697: "TEMPORARY", + 698: "TEXT_P", + 699: "THEN", + 700: "TIES", + 701: "TIME", + 702: "TIMESTAMP", + 703: "TO", + 704: "TRAILING", + 705: "TRANSACTION", + 706: "TRANSFORM", + 707: "TREAT", + 708: "TRIGGER", + 709: "TRIM", + 710: "TRUE_P", + 711: "TRUNCATE", + 712: "TRUSTED", + 713: "TYPE_P", + 714: "TYPES_P", + 715: "UESCAPE", + 716: "UNBOUNDED", + 717: "UNCONDITIONAL", + 718: "UNCOMMITTED", + 719: "UNENCRYPTED", + 720: "UNION", + 721: "UNIQUE", + 722: "UNKNOWN", + 723: "UNLISTEN", + 724: "UNLOGGED", + 725: "UNTIL", + 726: "UPDATE", + 727: "USER", + 728: "USING", + 729: "VACUUM", + 730: "VALID", + 731: "VALIDATE", + 732: "VALIDATOR", + 733: "VALUE_P", + 734: "VALUES", + 735: "VARCHAR", + 736: "VARIADIC", + 737: "VARYING", + 738: "VERBOSE", + 739: "VERSION_P", + 740: "VIEW", + 741: "VIEWS", + 742: "VOLATILE", + 743: "WHEN", + 744: "WHERE", + 745: "WHITESPACE_P", + 746: "WINDOW", + 747: "WITH", + 748: "WITHIN", + 749: "WITHOUT", + 750: "WORK", + 751: "WRAPPER", + 752: "WRITE", + 753: "XML_P", + 754: "XMLATTRIBUTES", + 755: "XMLCONCAT", + 756: "XMLELEMENT", + 757: "XMLEXISTS", + 758: "XMLFOREST", + 759: "XMLNAMESPACES", + 760: "XMLPARSE", + 761: "XMLPI", + 762: "XMLROOT", + 763: "XMLSERIALIZE", + 764: "XMLTABLE", + 765: "YEAR_P", + 766: "YES_P", + 767: "ZONE", + 768: "FORMAT_LA", + 769: "NOT_LA", + 770: "NULLS_LA", + 771: "WITH_LA", + 772: "WITHOUT_LA", + 773: "MODE_TYPE_NAME", + 774: "MODE_PLPGSQL_EXPR", + 775: "MODE_PLPGSQL_ASSIGN1", + 776: "MODE_PLPGSQL_ASSIGN2", + 777: "MODE_PLPGSQL_ASSIGN3", + 778: "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, + "ENUM_P": 405, + "ERROR_P": 406, + "ESCAPE": 407, + "EVENT": 408, + "EXCEPT": 409, + "EXCLUDE": 410, + "EXCLUDING": 411, + "EXCLUSIVE": 412, + "EXECUTE": 413, + "EXISTS": 414, + "EXPLAIN": 415, + "EXPRESSION": 416, + "EXTENSION": 417, + "EXTERNAL": 418, + "EXTRACT": 419, + "FALSE_P": 420, + "FAMILY": 421, + "FETCH": 422, + "FILTER": 423, + "FINALIZE": 424, + "FIRST_P": 425, + "FLOAT_P": 426, + "FOLLOWING": 427, + "FOR": 428, + "FORCE": 429, + "FOREIGN": 430, + "FORMAT": 431, + "FORWARD": 432, + "FREEZE": 433, + "FROM": 434, + "FULL": 435, + "FUNCTION": 436, + "FUNCTIONS": 437, + "GENERATED": 438, + "GLOBAL": 439, + "GRANT": 440, + "GRANTED": 441, + "GREATEST": 442, + "GROUP_P": 443, + "GROUPING": 444, + "GROUPS": 445, + "HANDLER": 446, + "HAVING": 447, + "HEADER_P": 448, + "HOLD": 449, + "HOUR_P": 450, + "IDENTITY_P": 451, + "IF_P": 452, + "ILIKE": 453, + "IMMEDIATE": 454, + "IMMUTABLE": 455, + "IMPLICIT_P": 456, + "IMPORT_P": 457, + "IN_P": 458, + "INCLUDE": 459, + "INCLUDING": 460, + "INCREMENT": 461, + "INDENT": 462, + "INDEX": 463, + "INDEXES": 464, + "INHERIT": 465, + "INHERITS": 466, + "INITIALLY": 467, + "INLINE_P": 468, + "INNER_P": 469, + "INOUT": 470, + "INPUT_P": 471, + "INSENSITIVE": 472, + "INSERT": 473, + "INSTEAD": 474, + "INT_P": 475, + "INTEGER": 476, + "INTERSECT": 477, + "INTERVAL": 478, + "INTO": 479, + "INVOKER": 480, + "IS": 481, + "ISNULL": 482, + "ISOLATION": 483, + "JOIN": 484, + "JSON": 485, + "JSON_ARRAY": 486, + "JSON_ARRAYAGG": 487, + "JSON_EXISTS": 488, + "JSON_OBJECT": 489, + "JSON_OBJECTAGG": 490, + "JSON_QUERY": 491, + "JSON_SCALAR": 492, + "JSON_SERIALIZE": 493, + "JSON_TABLE": 494, + "JSON_VALUE": 495, + "KEEP": 496, + "KEY": 497, + "KEYS": 498, + "LABEL": 499, + "LANGUAGE": 500, + "LARGE_P": 501, + "LAST_P": 502, + "LATERAL_P": 503, + "LEADING": 504, + "LEAKPROOF": 505, + "LEAST": 506, + "LEFT": 507, + "LEVEL": 508, + "LIKE": 509, + "LIMIT": 510, + "LISTEN": 511, + "LOAD": 512, + "LOCAL": 513, + "LOCALTIME": 514, + "LOCALTIMESTAMP": 515, + "LOCATION": 516, + "LOCK_P": 517, + "LOCKED": 518, + "LOGGED": 519, + "MAPPING": 520, + "MATCH": 521, + "MATCHED": 522, + "MATERIALIZED": 523, + "MAXVALUE": 524, + "MERGE": 525, + "MERGE_ACTION": 526, + "METHOD": 527, + "MINUTE_P": 528, + "MINVALUE": 529, + "MODE": 530, + "MONTH_P": 531, + "MOVE": 532, + "NAME_P": 533, + "NAMES": 534, + "NATIONAL": 535, + "NATURAL": 536, + "NCHAR": 537, + "NESTED": 538, + "NEW": 539, + "NEXT": 540, + "NFC": 541, + "NFD": 542, + "NFKC": 543, + "NFKD": 544, + "NO": 545, + "NONE": 546, + "NORMALIZE": 547, + "NORMALIZED": 548, + "NOT": 549, + "NOTHING": 550, + "NOTIFY": 551, + "NOTNULL": 552, + "NOWAIT": 553, + "NULL_P": 554, + "NULLIF": 555, + "NULLS_P": 556, + "NUMERIC": 557, + "OBJECT_P": 558, + "OF": 559, + "OFF": 560, + "OFFSET": 561, + "OIDS": 562, + "OLD": 563, + "OMIT": 564, + "ON": 565, + "ONLY": 566, + "OPERATOR": 567, + "OPTION": 568, + "OPTIONS": 569, + "OR": 570, + "ORDER": 571, + "ORDINALITY": 572, + "OTHERS": 573, + "OUT_P": 574, + "OUTER_P": 575, + "OVER": 576, + "OVERLAPS": 577, + "OVERLAY": 578, + "OVERRIDING": 579, + "OWNED": 580, + "OWNER": 581, + "PARALLEL": 582, + "PARAMETER": 583, + "PARSER": 584, + "PARTIAL": 585, + "PARTITION": 586, + "PASSING": 587, + "PASSWORD": 588, + "PATH": 589, + "PLACING": 590, + "PLAN": 591, + "PLANS": 592, + "POLICY": 593, + "POSITION": 594, + "PRECEDING": 595, + "PRECISION": 596, + "PRESERVE": 597, + "PREPARE": 598, + "PREPARED": 599, + "PRIMARY": 600, + "PRIOR": 601, + "PRIVILEGES": 602, + "PROCEDURAL": 603, + "PROCEDURE": 604, + "PROCEDURES": 605, + "PROGRAM": 606, + "PUBLICATION": 607, + "QUOTE": 608, + "QUOTES": 609, + "RANGE": 610, + "READ": 611, + "REAL": 612, + "REASSIGN": 613, + "RECHECK": 614, + "RECURSIVE": 615, + "REF_P": 616, + "REFERENCES": 617, + "REFERENCING": 618, + "REFRESH": 619, + "REINDEX": 620, + "RELATIVE_P": 621, + "RELEASE": 622, + "RENAME": 623, + "REPEATABLE": 624, + "REPLACE": 625, + "REPLICA": 626, + "RESET": 627, + "RESTART": 628, + "RESTRICT": 629, + "RETURN": 630, + "RETURNING": 631, + "RETURNS": 632, + "REVOKE": 633, + "RIGHT": 634, + "ROLE": 635, + "ROLLBACK": 636, + "ROLLUP": 637, + "ROUTINE": 638, + "ROUTINES": 639, + "ROW": 640, + "ROWS": 641, + "RULE": 642, + "SAVEPOINT": 643, + "SCALAR": 644, + "SCHEMA": 645, + "SCHEMAS": 646, + "SCROLL": 647, + "SEARCH": 648, + "SECOND_P": 649, + "SECURITY": 650, + "SELECT": 651, + "SEQUENCE": 652, + "SEQUENCES": 653, + "SERIALIZABLE": 654, + "SERVER": 655, + "SESSION": 656, + "SESSION_USER": 657, + "SET": 658, + "SETS": 659, + "SETOF": 660, + "SHARE": 661, + "SHOW": 662, + "SIMILAR": 663, + "SIMPLE": 664, + "SKIP": 665, + "SMALLINT": 666, + "SNAPSHOT": 667, + "SOME": 668, + "SOURCE": 669, + "SQL_P": 670, + "STABLE": 671, + "STANDALONE_P": 672, + "START": 673, + "STATEMENT": 674, + "STATISTICS": 675, + "STDIN": 676, + "STDOUT": 677, + "STORAGE": 678, + "STORED": 679, + "STRICT_P": 680, + "STRING_P": 681, + "STRIP_P": 682, + "SUBSCRIPTION": 683, + "SUBSTRING": 684, + "SUPPORT": 685, + "SYMMETRIC": 686, + "SYSID": 687, + "SYSTEM_P": 688, + "SYSTEM_USER": 689, + "TABLE": 690, + "TABLES": 691, + "TABLESAMPLE": 692, + "TABLESPACE": 693, + "TARGET": 694, + "TEMP": 695, + "TEMPLATE": 696, + "TEMPORARY": 697, + "TEXT_P": 698, + "THEN": 699, + "TIES": 700, + "TIME": 701, + "TIMESTAMP": 702, + "TO": 703, + "TRAILING": 704, + "TRANSACTION": 705, + "TRANSFORM": 706, + "TREAT": 707, + "TRIGGER": 708, + "TRIM": 709, + "TRUE_P": 710, + "TRUNCATE": 711, + "TRUSTED": 712, + "TYPE_P": 713, + "TYPES_P": 714, + "UESCAPE": 715, + "UNBOUNDED": 716, + "UNCONDITIONAL": 717, + "UNCOMMITTED": 718, + "UNENCRYPTED": 719, + "UNION": 720, + "UNIQUE": 721, + "UNKNOWN": 722, + "UNLISTEN": 723, + "UNLOGGED": 724, + "UNTIL": 725, + "UPDATE": 726, + "USER": 727, + "USING": 728, + "VACUUM": 729, + "VALID": 730, + "VALIDATE": 731, + "VALIDATOR": 732, + "VALUE_P": 733, + "VALUES": 734, + "VARCHAR": 735, + "VARIADIC": 736, + "VARYING": 737, + "VERBOSE": 738, + "VERSION_P": 739, + "VIEW": 740, + "VIEWS": 741, + "VOLATILE": 742, + "WHEN": 743, + "WHERE": 744, + "WHITESPACE_P": 745, + "WINDOW": 746, + "WITH": 747, + "WITHIN": 748, + "WITHOUT": 749, + "WORK": 750, + "WRAPPER": 751, + "WRITE": 752, + "XML_P": 753, + "XMLATTRIBUTES": 754, + "XMLCONCAT": 755, + "XMLELEMENT": 756, + "XMLEXISTS": 757, + "XMLFOREST": 758, + "XMLNAMESPACES": 759, + "XMLPARSE": 760, + "XMLPI": 761, + "XMLROOT": 762, + "XMLSERIALIZE": 763, + "XMLTABLE": 764, + "YEAR_P": 765, + "YES_P": 766, + "ZONE": 767, + "FORMAT_LA": 768, + "NOT_LA": 769, + "NULLS_LA": 770, + "WITH_LA": 771, + "WITHOUT_LA": 772, + "MODE_TYPE_NAME": 773, + "MODE_PLPGSQL_EXPR": 774, + "MODE_PLPGSQL_ASSIGN1": 775, + "MODE_PLPGSQL_ASSIGN2": 776, + "MODE_PLPGSQL_ASSIGN3": 777, + "UMINUS": 778, + } +) + +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[70].Descriptor() +} + +func (Token) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[70] +} + +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{70} +} + +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[71].Descriptor() +} + +func (SummaryResult_Context) Type() protoreflect.EnumType { + return &file_pg_query_proto_enumTypes[71] +} + +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{272, 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_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_SinglePartitionSpec + // *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_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_ReplicaIdentityStmt + // *Node_AlterTableCmd + // *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) 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) GetSinglePartitionSpec() *SinglePartitionSpec { + if x != nil { + if x, ok := x.Node.(*Node_SinglePartitionSpec); ok { + return x.SinglePartitionSpec + } + } + 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) 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) GetReplicaIdentityStmt() *ReplicaIdentityStmt { + if x != nil { + if x, ok := x.Node.(*Node_ReplicaIdentityStmt); ok { + return x.ReplicaIdentityStmt + } + } + 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) 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_TargetEntry struct { + TargetEntry *TargetEntry `protobuf:"bytes,59,opt,name=target_entry,json=TargetEntry,proto3,oneof"` +} + +type Node_RangeTblRef struct { + RangeTblRef *RangeTblRef `protobuf:"bytes,60,opt,name=range_tbl_ref,json=RangeTblRef,proto3,oneof"` +} + +type Node_JoinExpr struct { + JoinExpr *JoinExpr `protobuf:"bytes,61,opt,name=join_expr,json=JoinExpr,proto3,oneof"` +} + +type Node_FromExpr struct { + FromExpr *FromExpr `protobuf:"bytes,62,opt,name=from_expr,json=FromExpr,proto3,oneof"` +} + +type Node_OnConflictExpr struct { + OnConflictExpr *OnConflictExpr `protobuf:"bytes,63,opt,name=on_conflict_expr,json=OnConflictExpr,proto3,oneof"` +} + +type Node_Query struct { + Query *Query `protobuf:"bytes,64,opt,name=query,json=Query,proto3,oneof"` +} + +type Node_TypeName struct { + TypeName *TypeName `protobuf:"bytes,65,opt,name=type_name,json=TypeName,proto3,oneof"` +} + +type Node_ColumnRef struct { + ColumnRef *ColumnRef `protobuf:"bytes,66,opt,name=column_ref,json=ColumnRef,proto3,oneof"` +} + +type Node_ParamRef struct { + ParamRef *ParamRef `protobuf:"bytes,67,opt,name=param_ref,json=ParamRef,proto3,oneof"` +} + +type Node_AExpr struct { + AExpr *A_Expr `protobuf:"bytes,68,opt,name=a_expr,json=A_Expr,proto3,oneof"` +} + +type Node_TypeCast struct { + TypeCast *TypeCast `protobuf:"bytes,69,opt,name=type_cast,json=TypeCast,proto3,oneof"` +} + +type Node_CollateClause struct { + CollateClause *CollateClause `protobuf:"bytes,70,opt,name=collate_clause,json=CollateClause,proto3,oneof"` +} + +type Node_RoleSpec struct { + RoleSpec *RoleSpec `protobuf:"bytes,71,opt,name=role_spec,json=RoleSpec,proto3,oneof"` +} + +type Node_FuncCall struct { + FuncCall *FuncCall `protobuf:"bytes,72,opt,name=func_call,json=FuncCall,proto3,oneof"` +} + +type Node_AStar struct { + AStar *A_Star `protobuf:"bytes,73,opt,name=a_star,json=A_Star,proto3,oneof"` +} + +type Node_AIndices struct { + AIndices *A_Indices `protobuf:"bytes,74,opt,name=a_indices,json=A_Indices,proto3,oneof"` +} + +type Node_AIndirection struct { + AIndirection *A_Indirection `protobuf:"bytes,75,opt,name=a_indirection,json=A_Indirection,proto3,oneof"` +} + +type Node_AArrayExpr struct { + AArrayExpr *A_ArrayExpr `protobuf:"bytes,76,opt,name=a_array_expr,json=A_ArrayExpr,proto3,oneof"` +} + +type Node_ResTarget struct { + ResTarget *ResTarget `protobuf:"bytes,77,opt,name=res_target,json=ResTarget,proto3,oneof"` +} + +type Node_MultiAssignRef struct { + MultiAssignRef *MultiAssignRef `protobuf:"bytes,78,opt,name=multi_assign_ref,json=MultiAssignRef,proto3,oneof"` +} + +type Node_SortBy struct { + SortBy *SortBy `protobuf:"bytes,79,opt,name=sort_by,json=SortBy,proto3,oneof"` +} + +type Node_WindowDef struct { + WindowDef *WindowDef `protobuf:"bytes,80,opt,name=window_def,json=WindowDef,proto3,oneof"` +} + +type Node_RangeSubselect struct { + RangeSubselect *RangeSubselect `protobuf:"bytes,81,opt,name=range_subselect,json=RangeSubselect,proto3,oneof"` +} + +type Node_RangeFunction struct { + RangeFunction *RangeFunction `protobuf:"bytes,82,opt,name=range_function,json=RangeFunction,proto3,oneof"` +} + +type Node_RangeTableFunc struct { + RangeTableFunc *RangeTableFunc `protobuf:"bytes,83,opt,name=range_table_func,json=RangeTableFunc,proto3,oneof"` +} + +type Node_RangeTableFuncCol struct { + RangeTableFuncCol *RangeTableFuncCol `protobuf:"bytes,84,opt,name=range_table_func_col,json=RangeTableFuncCol,proto3,oneof"` +} + +type Node_RangeTableSample struct { + RangeTableSample *RangeTableSample `protobuf:"bytes,85,opt,name=range_table_sample,json=RangeTableSample,proto3,oneof"` +} + +type Node_ColumnDef struct { + ColumnDef *ColumnDef `protobuf:"bytes,86,opt,name=column_def,json=ColumnDef,proto3,oneof"` +} + +type Node_TableLikeClause struct { + TableLikeClause *TableLikeClause `protobuf:"bytes,87,opt,name=table_like_clause,json=TableLikeClause,proto3,oneof"` +} + +type Node_IndexElem struct { + IndexElem *IndexElem `protobuf:"bytes,88,opt,name=index_elem,json=IndexElem,proto3,oneof"` +} + +type Node_DefElem struct { + DefElem *DefElem `protobuf:"bytes,89,opt,name=def_elem,json=DefElem,proto3,oneof"` +} + +type Node_LockingClause struct { + LockingClause *LockingClause `protobuf:"bytes,90,opt,name=locking_clause,json=LockingClause,proto3,oneof"` +} + +type Node_XmlSerialize struct { + XmlSerialize *XmlSerialize `protobuf:"bytes,91,opt,name=xml_serialize,json=XmlSerialize,proto3,oneof"` +} + +type Node_PartitionElem struct { + PartitionElem *PartitionElem `protobuf:"bytes,92,opt,name=partition_elem,json=PartitionElem,proto3,oneof"` +} + +type Node_PartitionSpec struct { + PartitionSpec *PartitionSpec `protobuf:"bytes,93,opt,name=partition_spec,json=PartitionSpec,proto3,oneof"` +} + +type Node_PartitionBoundSpec struct { + PartitionBoundSpec *PartitionBoundSpec `protobuf:"bytes,94,opt,name=partition_bound_spec,json=PartitionBoundSpec,proto3,oneof"` +} + +type Node_PartitionRangeDatum struct { + PartitionRangeDatum *PartitionRangeDatum `protobuf:"bytes,95,opt,name=partition_range_datum,json=PartitionRangeDatum,proto3,oneof"` +} + +type Node_SinglePartitionSpec struct { + SinglePartitionSpec *SinglePartitionSpec `protobuf:"bytes,96,opt,name=single_partition_spec,json=SinglePartitionSpec,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_TriggerTransition struct { + TriggerTransition *TriggerTransition `protobuf:"bytes,114,opt,name=trigger_transition,json=TriggerTransition,proto3,oneof"` +} + +type Node_JsonOutput struct { + JsonOutput *JsonOutput `protobuf:"bytes,115,opt,name=json_output,json=JsonOutput,proto3,oneof"` +} + +type Node_JsonArgument struct { + JsonArgument *JsonArgument `protobuf:"bytes,116,opt,name=json_argument,json=JsonArgument,proto3,oneof"` +} + +type Node_JsonFuncExpr struct { + JsonFuncExpr *JsonFuncExpr `protobuf:"bytes,117,opt,name=json_func_expr,json=JsonFuncExpr,proto3,oneof"` +} + +type Node_JsonTablePathSpec struct { + JsonTablePathSpec *JsonTablePathSpec `protobuf:"bytes,118,opt,name=json_table_path_spec,json=JsonTablePathSpec,proto3,oneof"` +} + +type Node_JsonTable struct { + JsonTable *JsonTable `protobuf:"bytes,119,opt,name=json_table,json=JsonTable,proto3,oneof"` +} + +type Node_JsonTableColumn struct { + JsonTableColumn *JsonTableColumn `protobuf:"bytes,120,opt,name=json_table_column,json=JsonTableColumn,proto3,oneof"` +} + +type Node_JsonKeyValue struct { + JsonKeyValue *JsonKeyValue `protobuf:"bytes,121,opt,name=json_key_value,json=JsonKeyValue,proto3,oneof"` +} + +type Node_JsonParseExpr struct { + JsonParseExpr *JsonParseExpr `protobuf:"bytes,122,opt,name=json_parse_expr,json=JsonParseExpr,proto3,oneof"` +} + +type Node_JsonScalarExpr struct { + JsonScalarExpr *JsonScalarExpr `protobuf:"bytes,123,opt,name=json_scalar_expr,json=JsonScalarExpr,proto3,oneof"` +} + +type Node_JsonSerializeExpr struct { + JsonSerializeExpr *JsonSerializeExpr `protobuf:"bytes,124,opt,name=json_serialize_expr,json=JsonSerializeExpr,proto3,oneof"` +} + +type Node_JsonObjectConstructor struct { + JsonObjectConstructor *JsonObjectConstructor `protobuf:"bytes,125,opt,name=json_object_constructor,json=JsonObjectConstructor,proto3,oneof"` +} + +type Node_JsonArrayConstructor struct { + JsonArrayConstructor *JsonArrayConstructor `protobuf:"bytes,126,opt,name=json_array_constructor,json=JsonArrayConstructor,proto3,oneof"` +} + +type Node_JsonArrayQueryConstructor struct { + JsonArrayQueryConstructor *JsonArrayQueryConstructor `protobuf:"bytes,127,opt,name=json_array_query_constructor,json=JsonArrayQueryConstructor,proto3,oneof"` +} + +type Node_JsonAggConstructor struct { + JsonAggConstructor *JsonAggConstructor `protobuf:"bytes,128,opt,name=json_agg_constructor,json=JsonAggConstructor,proto3,oneof"` +} + +type Node_JsonObjectAgg struct { + JsonObjectAgg *JsonObjectAgg `protobuf:"bytes,129,opt,name=json_object_agg,json=JsonObjectAgg,proto3,oneof"` +} + +type Node_JsonArrayAgg struct { + JsonArrayAgg *JsonArrayAgg `protobuf:"bytes,130,opt,name=json_array_agg,json=JsonArrayAgg,proto3,oneof"` +} + +type Node_RawStmt struct { + RawStmt *RawStmt `protobuf:"bytes,131,opt,name=raw_stmt,json=RawStmt,proto3,oneof"` +} + +type Node_InsertStmt struct { + InsertStmt *InsertStmt `protobuf:"bytes,132,opt,name=insert_stmt,json=InsertStmt,proto3,oneof"` +} + +type Node_DeleteStmt struct { + DeleteStmt *DeleteStmt `protobuf:"bytes,133,opt,name=delete_stmt,json=DeleteStmt,proto3,oneof"` +} + +type Node_UpdateStmt struct { + UpdateStmt *UpdateStmt `protobuf:"bytes,134,opt,name=update_stmt,json=UpdateStmt,proto3,oneof"` +} + +type Node_MergeStmt struct { + MergeStmt *MergeStmt `protobuf:"bytes,135,opt,name=merge_stmt,json=MergeStmt,proto3,oneof"` +} + +type Node_SelectStmt struct { + SelectStmt *SelectStmt `protobuf:"bytes,136,opt,name=select_stmt,json=SelectStmt,proto3,oneof"` +} + +type Node_SetOperationStmt struct { + SetOperationStmt *SetOperationStmt `protobuf:"bytes,137,opt,name=set_operation_stmt,json=SetOperationStmt,proto3,oneof"` +} + +type Node_ReturnStmt struct { + ReturnStmt *ReturnStmt `protobuf:"bytes,138,opt,name=return_stmt,json=ReturnStmt,proto3,oneof"` +} + +type Node_PlassignStmt struct { + PlassignStmt *PLAssignStmt `protobuf:"bytes,139,opt,name=plassign_stmt,json=PLAssignStmt,proto3,oneof"` +} + +type Node_CreateSchemaStmt struct { + CreateSchemaStmt *CreateSchemaStmt `protobuf:"bytes,140,opt,name=create_schema_stmt,json=CreateSchemaStmt,proto3,oneof"` +} + +type Node_AlterTableStmt struct { + AlterTableStmt *AlterTableStmt `protobuf:"bytes,141,opt,name=alter_table_stmt,json=AlterTableStmt,proto3,oneof"` +} + +type Node_ReplicaIdentityStmt struct { + ReplicaIdentityStmt *ReplicaIdentityStmt `protobuf:"bytes,142,opt,name=replica_identity_stmt,json=ReplicaIdentityStmt,proto3,oneof"` +} + +type Node_AlterTableCmd struct { + AlterTableCmd *AlterTableCmd `protobuf:"bytes,143,opt,name=alter_table_cmd,json=AlterTableCmd,proto3,oneof"` +} + +type Node_AlterCollationStmt struct { + AlterCollationStmt *AlterCollationStmt `protobuf:"bytes,144,opt,name=alter_collation_stmt,json=AlterCollationStmt,proto3,oneof"` +} + +type Node_AlterDomainStmt struct { + AlterDomainStmt *AlterDomainStmt `protobuf:"bytes,145,opt,name=alter_domain_stmt,json=AlterDomainStmt,proto3,oneof"` +} + +type Node_GrantStmt struct { + GrantStmt *GrantStmt `protobuf:"bytes,146,opt,name=grant_stmt,json=GrantStmt,proto3,oneof"` +} + +type Node_ObjectWithArgs struct { + ObjectWithArgs *ObjectWithArgs `protobuf:"bytes,147,opt,name=object_with_args,json=ObjectWithArgs,proto3,oneof"` +} + +type Node_AccessPriv struct { + AccessPriv *AccessPriv `protobuf:"bytes,148,opt,name=access_priv,json=AccessPriv,proto3,oneof"` +} + +type Node_GrantRoleStmt struct { + GrantRoleStmt *GrantRoleStmt `protobuf:"bytes,149,opt,name=grant_role_stmt,json=GrantRoleStmt,proto3,oneof"` +} + +type Node_AlterDefaultPrivilegesStmt struct { + AlterDefaultPrivilegesStmt *AlterDefaultPrivilegesStmt `protobuf:"bytes,150,opt,name=alter_default_privileges_stmt,json=AlterDefaultPrivilegesStmt,proto3,oneof"` +} + +type Node_CopyStmt struct { + CopyStmt *CopyStmt `protobuf:"bytes,151,opt,name=copy_stmt,json=CopyStmt,proto3,oneof"` +} + +type Node_VariableSetStmt struct { + VariableSetStmt *VariableSetStmt `protobuf:"bytes,152,opt,name=variable_set_stmt,json=VariableSetStmt,proto3,oneof"` +} + +type Node_VariableShowStmt struct { + VariableShowStmt *VariableShowStmt `protobuf:"bytes,153,opt,name=variable_show_stmt,json=VariableShowStmt,proto3,oneof"` +} + +type Node_CreateStmt struct { + CreateStmt *CreateStmt `protobuf:"bytes,154,opt,name=create_stmt,json=CreateStmt,proto3,oneof"` +} + +type Node_Constraint struct { + Constraint *Constraint `protobuf:"bytes,155,opt,name=constraint,json=Constraint,proto3,oneof"` +} + +type Node_CreateTableSpaceStmt struct { + CreateTableSpaceStmt *CreateTableSpaceStmt `protobuf:"bytes,156,opt,name=create_table_space_stmt,json=CreateTableSpaceStmt,proto3,oneof"` +} + +type Node_DropTableSpaceStmt struct { + DropTableSpaceStmt *DropTableSpaceStmt `protobuf:"bytes,157,opt,name=drop_table_space_stmt,json=DropTableSpaceStmt,proto3,oneof"` +} + +type Node_AlterTableSpaceOptionsStmt struct { + AlterTableSpaceOptionsStmt *AlterTableSpaceOptionsStmt `protobuf:"bytes,158,opt,name=alter_table_space_options_stmt,json=AlterTableSpaceOptionsStmt,proto3,oneof"` +} + +type Node_AlterTableMoveAllStmt struct { + AlterTableMoveAllStmt *AlterTableMoveAllStmt `protobuf:"bytes,159,opt,name=alter_table_move_all_stmt,json=AlterTableMoveAllStmt,proto3,oneof"` +} + +type Node_CreateExtensionStmt struct { + CreateExtensionStmt *CreateExtensionStmt `protobuf:"bytes,160,opt,name=create_extension_stmt,json=CreateExtensionStmt,proto3,oneof"` +} + +type Node_AlterExtensionStmt struct { + AlterExtensionStmt *AlterExtensionStmt `protobuf:"bytes,161,opt,name=alter_extension_stmt,json=AlterExtensionStmt,proto3,oneof"` +} + +type Node_AlterExtensionContentsStmt struct { + AlterExtensionContentsStmt *AlterExtensionContentsStmt `protobuf:"bytes,162,opt,name=alter_extension_contents_stmt,json=AlterExtensionContentsStmt,proto3,oneof"` +} + +type Node_CreateFdwStmt struct { + CreateFdwStmt *CreateFdwStmt `protobuf:"bytes,163,opt,name=create_fdw_stmt,json=CreateFdwStmt,proto3,oneof"` +} + +type Node_AlterFdwStmt struct { + AlterFdwStmt *AlterFdwStmt `protobuf:"bytes,164,opt,name=alter_fdw_stmt,json=AlterFdwStmt,proto3,oneof"` +} + +type Node_CreateForeignServerStmt struct { + CreateForeignServerStmt *CreateForeignServerStmt `protobuf:"bytes,165,opt,name=create_foreign_server_stmt,json=CreateForeignServerStmt,proto3,oneof"` +} + +type Node_AlterForeignServerStmt struct { + AlterForeignServerStmt *AlterForeignServerStmt `protobuf:"bytes,166,opt,name=alter_foreign_server_stmt,json=AlterForeignServerStmt,proto3,oneof"` +} + +type Node_CreateForeignTableStmt struct { + CreateForeignTableStmt *CreateForeignTableStmt `protobuf:"bytes,167,opt,name=create_foreign_table_stmt,json=CreateForeignTableStmt,proto3,oneof"` +} + +type Node_CreateUserMappingStmt struct { + CreateUserMappingStmt *CreateUserMappingStmt `protobuf:"bytes,168,opt,name=create_user_mapping_stmt,json=CreateUserMappingStmt,proto3,oneof"` +} + +type Node_AlterUserMappingStmt struct { + AlterUserMappingStmt *AlterUserMappingStmt `protobuf:"bytes,169,opt,name=alter_user_mapping_stmt,json=AlterUserMappingStmt,proto3,oneof"` +} + +type Node_DropUserMappingStmt struct { + DropUserMappingStmt *DropUserMappingStmt `protobuf:"bytes,170,opt,name=drop_user_mapping_stmt,json=DropUserMappingStmt,proto3,oneof"` +} + +type Node_ImportForeignSchemaStmt struct { + ImportForeignSchemaStmt *ImportForeignSchemaStmt `protobuf:"bytes,171,opt,name=import_foreign_schema_stmt,json=ImportForeignSchemaStmt,proto3,oneof"` +} + +type Node_CreatePolicyStmt struct { + CreatePolicyStmt *CreatePolicyStmt `protobuf:"bytes,172,opt,name=create_policy_stmt,json=CreatePolicyStmt,proto3,oneof"` +} + +type Node_AlterPolicyStmt struct { + AlterPolicyStmt *AlterPolicyStmt `protobuf:"bytes,173,opt,name=alter_policy_stmt,json=AlterPolicyStmt,proto3,oneof"` +} + +type Node_CreateAmStmt struct { + CreateAmStmt *CreateAmStmt `protobuf:"bytes,174,opt,name=create_am_stmt,json=CreateAmStmt,proto3,oneof"` +} + +type Node_CreateTrigStmt struct { + CreateTrigStmt *CreateTrigStmt `protobuf:"bytes,175,opt,name=create_trig_stmt,json=CreateTrigStmt,proto3,oneof"` +} + +type Node_CreateEventTrigStmt struct { + CreateEventTrigStmt *CreateEventTrigStmt `protobuf:"bytes,176,opt,name=create_event_trig_stmt,json=CreateEventTrigStmt,proto3,oneof"` +} + +type Node_AlterEventTrigStmt struct { + AlterEventTrigStmt *AlterEventTrigStmt `protobuf:"bytes,177,opt,name=alter_event_trig_stmt,json=AlterEventTrigStmt,proto3,oneof"` +} + +type Node_CreatePlangStmt struct { + CreatePlangStmt *CreatePLangStmt `protobuf:"bytes,178,opt,name=create_plang_stmt,json=CreatePLangStmt,proto3,oneof"` +} + +type Node_CreateRoleStmt struct { + CreateRoleStmt *CreateRoleStmt `protobuf:"bytes,179,opt,name=create_role_stmt,json=CreateRoleStmt,proto3,oneof"` +} + +type Node_AlterRoleStmt struct { + AlterRoleStmt *AlterRoleStmt `protobuf:"bytes,180,opt,name=alter_role_stmt,json=AlterRoleStmt,proto3,oneof"` +} + +type Node_AlterRoleSetStmt struct { + AlterRoleSetStmt *AlterRoleSetStmt `protobuf:"bytes,181,opt,name=alter_role_set_stmt,json=AlterRoleSetStmt,proto3,oneof"` +} + +type Node_DropRoleStmt struct { + DropRoleStmt *DropRoleStmt `protobuf:"bytes,182,opt,name=drop_role_stmt,json=DropRoleStmt,proto3,oneof"` +} + +type Node_CreateSeqStmt struct { + CreateSeqStmt *CreateSeqStmt `protobuf:"bytes,183,opt,name=create_seq_stmt,json=CreateSeqStmt,proto3,oneof"` +} + +type Node_AlterSeqStmt struct { + AlterSeqStmt *AlterSeqStmt `protobuf:"bytes,184,opt,name=alter_seq_stmt,json=AlterSeqStmt,proto3,oneof"` +} + +type Node_DefineStmt struct { + DefineStmt *DefineStmt `protobuf:"bytes,185,opt,name=define_stmt,json=DefineStmt,proto3,oneof"` +} + +type Node_CreateDomainStmt struct { + CreateDomainStmt *CreateDomainStmt `protobuf:"bytes,186,opt,name=create_domain_stmt,json=CreateDomainStmt,proto3,oneof"` +} + +type Node_CreateOpClassStmt struct { + CreateOpClassStmt *CreateOpClassStmt `protobuf:"bytes,187,opt,name=create_op_class_stmt,json=CreateOpClassStmt,proto3,oneof"` +} + +type Node_CreateOpClassItem struct { + CreateOpClassItem *CreateOpClassItem `protobuf:"bytes,188,opt,name=create_op_class_item,json=CreateOpClassItem,proto3,oneof"` +} + +type Node_CreateOpFamilyStmt struct { + CreateOpFamilyStmt *CreateOpFamilyStmt `protobuf:"bytes,189,opt,name=create_op_family_stmt,json=CreateOpFamilyStmt,proto3,oneof"` +} + +type Node_AlterOpFamilyStmt struct { + AlterOpFamilyStmt *AlterOpFamilyStmt `protobuf:"bytes,190,opt,name=alter_op_family_stmt,json=AlterOpFamilyStmt,proto3,oneof"` +} + +type Node_DropStmt struct { + DropStmt *DropStmt `protobuf:"bytes,191,opt,name=drop_stmt,json=DropStmt,proto3,oneof"` +} + +type Node_TruncateStmt struct { + TruncateStmt *TruncateStmt `protobuf:"bytes,192,opt,name=truncate_stmt,json=TruncateStmt,proto3,oneof"` +} + +type Node_CommentStmt struct { + CommentStmt *CommentStmt `protobuf:"bytes,193,opt,name=comment_stmt,json=CommentStmt,proto3,oneof"` +} + +type Node_SecLabelStmt struct { + SecLabelStmt *SecLabelStmt `protobuf:"bytes,194,opt,name=sec_label_stmt,json=SecLabelStmt,proto3,oneof"` +} + +type Node_DeclareCursorStmt struct { + DeclareCursorStmt *DeclareCursorStmt `protobuf:"bytes,195,opt,name=declare_cursor_stmt,json=DeclareCursorStmt,proto3,oneof"` +} + +type Node_ClosePortalStmt struct { + ClosePortalStmt *ClosePortalStmt `protobuf:"bytes,196,opt,name=close_portal_stmt,json=ClosePortalStmt,proto3,oneof"` +} + +type Node_FetchStmt struct { + FetchStmt *FetchStmt `protobuf:"bytes,197,opt,name=fetch_stmt,json=FetchStmt,proto3,oneof"` +} + +type Node_IndexStmt struct { + IndexStmt *IndexStmt `protobuf:"bytes,198,opt,name=index_stmt,json=IndexStmt,proto3,oneof"` +} + +type Node_CreateStatsStmt struct { + CreateStatsStmt *CreateStatsStmt `protobuf:"bytes,199,opt,name=create_stats_stmt,json=CreateStatsStmt,proto3,oneof"` +} + +type Node_StatsElem struct { + StatsElem *StatsElem `protobuf:"bytes,200,opt,name=stats_elem,json=StatsElem,proto3,oneof"` +} + +type Node_AlterStatsStmt struct { + AlterStatsStmt *AlterStatsStmt `protobuf:"bytes,201,opt,name=alter_stats_stmt,json=AlterStatsStmt,proto3,oneof"` +} + +type Node_CreateFunctionStmt struct { + CreateFunctionStmt *CreateFunctionStmt `protobuf:"bytes,202,opt,name=create_function_stmt,json=CreateFunctionStmt,proto3,oneof"` +} + +type Node_FunctionParameter struct { + FunctionParameter *FunctionParameter `protobuf:"bytes,203,opt,name=function_parameter,json=FunctionParameter,proto3,oneof"` +} + +type Node_AlterFunctionStmt struct { + AlterFunctionStmt *AlterFunctionStmt `protobuf:"bytes,204,opt,name=alter_function_stmt,json=AlterFunctionStmt,proto3,oneof"` +} + +type Node_DoStmt struct { + DoStmt *DoStmt `protobuf:"bytes,205,opt,name=do_stmt,json=DoStmt,proto3,oneof"` +} + +type Node_InlineCodeBlock struct { + InlineCodeBlock *InlineCodeBlock `protobuf:"bytes,206,opt,name=inline_code_block,json=InlineCodeBlock,proto3,oneof"` +} + +type Node_CallStmt struct { + CallStmt *CallStmt `protobuf:"bytes,207,opt,name=call_stmt,json=CallStmt,proto3,oneof"` +} + +type Node_CallContext struct { + CallContext *CallContext `protobuf:"bytes,208,opt,name=call_context,json=CallContext,proto3,oneof"` +} + +type Node_RenameStmt struct { + RenameStmt *RenameStmt `protobuf:"bytes,209,opt,name=rename_stmt,json=RenameStmt,proto3,oneof"` +} + +type Node_AlterObjectDependsStmt struct { + AlterObjectDependsStmt *AlterObjectDependsStmt `protobuf:"bytes,210,opt,name=alter_object_depends_stmt,json=AlterObjectDependsStmt,proto3,oneof"` +} + +type Node_AlterObjectSchemaStmt struct { + AlterObjectSchemaStmt *AlterObjectSchemaStmt `protobuf:"bytes,211,opt,name=alter_object_schema_stmt,json=AlterObjectSchemaStmt,proto3,oneof"` +} + +type Node_AlterOwnerStmt struct { + AlterOwnerStmt *AlterOwnerStmt `protobuf:"bytes,212,opt,name=alter_owner_stmt,json=AlterOwnerStmt,proto3,oneof"` +} + +type Node_AlterOperatorStmt struct { + AlterOperatorStmt *AlterOperatorStmt `protobuf:"bytes,213,opt,name=alter_operator_stmt,json=AlterOperatorStmt,proto3,oneof"` +} + +type Node_AlterTypeStmt struct { + AlterTypeStmt *AlterTypeStmt `protobuf:"bytes,214,opt,name=alter_type_stmt,json=AlterTypeStmt,proto3,oneof"` +} + +type Node_RuleStmt struct { + RuleStmt *RuleStmt `protobuf:"bytes,215,opt,name=rule_stmt,json=RuleStmt,proto3,oneof"` +} + +type Node_NotifyStmt struct { + NotifyStmt *NotifyStmt `protobuf:"bytes,216,opt,name=notify_stmt,json=NotifyStmt,proto3,oneof"` +} + +type Node_ListenStmt struct { + ListenStmt *ListenStmt `protobuf:"bytes,217,opt,name=listen_stmt,json=ListenStmt,proto3,oneof"` +} + +type Node_UnlistenStmt struct { + UnlistenStmt *UnlistenStmt `protobuf:"bytes,218,opt,name=unlisten_stmt,json=UnlistenStmt,proto3,oneof"` +} + +type Node_TransactionStmt struct { + TransactionStmt *TransactionStmt `protobuf:"bytes,219,opt,name=transaction_stmt,json=TransactionStmt,proto3,oneof"` +} + +type Node_CompositeTypeStmt struct { + CompositeTypeStmt *CompositeTypeStmt `protobuf:"bytes,220,opt,name=composite_type_stmt,json=CompositeTypeStmt,proto3,oneof"` +} + +type Node_CreateEnumStmt struct { + CreateEnumStmt *CreateEnumStmt `protobuf:"bytes,221,opt,name=create_enum_stmt,json=CreateEnumStmt,proto3,oneof"` +} + +type Node_CreateRangeStmt struct { + CreateRangeStmt *CreateRangeStmt `protobuf:"bytes,222,opt,name=create_range_stmt,json=CreateRangeStmt,proto3,oneof"` +} + +type Node_AlterEnumStmt struct { + AlterEnumStmt *AlterEnumStmt `protobuf:"bytes,223,opt,name=alter_enum_stmt,json=AlterEnumStmt,proto3,oneof"` +} + +type Node_ViewStmt struct { + ViewStmt *ViewStmt `protobuf:"bytes,224,opt,name=view_stmt,json=ViewStmt,proto3,oneof"` +} + +type Node_LoadStmt struct { + LoadStmt *LoadStmt `protobuf:"bytes,225,opt,name=load_stmt,json=LoadStmt,proto3,oneof"` +} + +type Node_CreatedbStmt struct { + CreatedbStmt *CreatedbStmt `protobuf:"bytes,226,opt,name=createdb_stmt,json=CreatedbStmt,proto3,oneof"` +} + +type Node_AlterDatabaseStmt struct { + AlterDatabaseStmt *AlterDatabaseStmt `protobuf:"bytes,227,opt,name=alter_database_stmt,json=AlterDatabaseStmt,proto3,oneof"` +} + +type Node_AlterDatabaseRefreshCollStmt struct { + AlterDatabaseRefreshCollStmt *AlterDatabaseRefreshCollStmt `protobuf:"bytes,228,opt,name=alter_database_refresh_coll_stmt,json=AlterDatabaseRefreshCollStmt,proto3,oneof"` +} + +type Node_AlterDatabaseSetStmt struct { + AlterDatabaseSetStmt *AlterDatabaseSetStmt `protobuf:"bytes,229,opt,name=alter_database_set_stmt,json=AlterDatabaseSetStmt,proto3,oneof"` +} + +type Node_DropdbStmt struct { + DropdbStmt *DropdbStmt `protobuf:"bytes,230,opt,name=dropdb_stmt,json=DropdbStmt,proto3,oneof"` +} + +type Node_AlterSystemStmt struct { + AlterSystemStmt *AlterSystemStmt `protobuf:"bytes,231,opt,name=alter_system_stmt,json=AlterSystemStmt,proto3,oneof"` +} + +type Node_ClusterStmt struct { + ClusterStmt *ClusterStmt `protobuf:"bytes,232,opt,name=cluster_stmt,json=ClusterStmt,proto3,oneof"` +} + +type Node_VacuumStmt struct { + VacuumStmt *VacuumStmt `protobuf:"bytes,233,opt,name=vacuum_stmt,json=VacuumStmt,proto3,oneof"` +} + +type Node_VacuumRelation struct { + VacuumRelation *VacuumRelation `protobuf:"bytes,234,opt,name=vacuum_relation,json=VacuumRelation,proto3,oneof"` +} + +type Node_ExplainStmt struct { + ExplainStmt *ExplainStmt `protobuf:"bytes,235,opt,name=explain_stmt,json=ExplainStmt,proto3,oneof"` +} + +type Node_CreateTableAsStmt struct { + CreateTableAsStmt *CreateTableAsStmt `protobuf:"bytes,236,opt,name=create_table_as_stmt,json=CreateTableAsStmt,proto3,oneof"` +} + +type Node_RefreshMatViewStmt struct { + RefreshMatViewStmt *RefreshMatViewStmt `protobuf:"bytes,237,opt,name=refresh_mat_view_stmt,json=RefreshMatViewStmt,proto3,oneof"` +} + +type Node_CheckPointStmt struct { + CheckPointStmt *CheckPointStmt `protobuf:"bytes,238,opt,name=check_point_stmt,json=CheckPointStmt,proto3,oneof"` +} + +type Node_DiscardStmt struct { + DiscardStmt *DiscardStmt `protobuf:"bytes,239,opt,name=discard_stmt,json=DiscardStmt,proto3,oneof"` +} + +type Node_LockStmt struct { + LockStmt *LockStmt `protobuf:"bytes,240,opt,name=lock_stmt,json=LockStmt,proto3,oneof"` +} + +type Node_ConstraintsSetStmt struct { + ConstraintsSetStmt *ConstraintsSetStmt `protobuf:"bytes,241,opt,name=constraints_set_stmt,json=ConstraintsSetStmt,proto3,oneof"` +} + +type Node_ReindexStmt struct { + ReindexStmt *ReindexStmt `protobuf:"bytes,242,opt,name=reindex_stmt,json=ReindexStmt,proto3,oneof"` +} + +type Node_CreateConversionStmt struct { + CreateConversionStmt *CreateConversionStmt `protobuf:"bytes,243,opt,name=create_conversion_stmt,json=CreateConversionStmt,proto3,oneof"` +} + +type Node_CreateCastStmt struct { + CreateCastStmt *CreateCastStmt `protobuf:"bytes,244,opt,name=create_cast_stmt,json=CreateCastStmt,proto3,oneof"` +} + +type Node_CreateTransformStmt struct { + CreateTransformStmt *CreateTransformStmt `protobuf:"bytes,245,opt,name=create_transform_stmt,json=CreateTransformStmt,proto3,oneof"` +} + +type Node_PrepareStmt struct { + PrepareStmt *PrepareStmt `protobuf:"bytes,246,opt,name=prepare_stmt,json=PrepareStmt,proto3,oneof"` +} + +type Node_ExecuteStmt struct { + ExecuteStmt *ExecuteStmt `protobuf:"bytes,247,opt,name=execute_stmt,json=ExecuteStmt,proto3,oneof"` +} + +type Node_DeallocateStmt struct { + DeallocateStmt *DeallocateStmt `protobuf:"bytes,248,opt,name=deallocate_stmt,json=DeallocateStmt,proto3,oneof"` +} + +type Node_DropOwnedStmt struct { + DropOwnedStmt *DropOwnedStmt `protobuf:"bytes,249,opt,name=drop_owned_stmt,json=DropOwnedStmt,proto3,oneof"` +} + +type Node_ReassignOwnedStmt struct { + ReassignOwnedStmt *ReassignOwnedStmt `protobuf:"bytes,250,opt,name=reassign_owned_stmt,json=ReassignOwnedStmt,proto3,oneof"` +} + +type Node_AlterTsdictionaryStmt struct { + AlterTsdictionaryStmt *AlterTSDictionaryStmt `protobuf:"bytes,251,opt,name=alter_tsdictionary_stmt,json=AlterTSDictionaryStmt,proto3,oneof"` +} + +type Node_AlterTsconfigurationStmt struct { + AlterTsconfigurationStmt *AlterTSConfigurationStmt `protobuf:"bytes,252,opt,name=alter_tsconfiguration_stmt,json=AlterTSConfigurationStmt,proto3,oneof"` +} + +type Node_PublicationTable struct { + PublicationTable *PublicationTable `protobuf:"bytes,253,opt,name=publication_table,json=PublicationTable,proto3,oneof"` +} + +type Node_PublicationObjSpec struct { + PublicationObjSpec *PublicationObjSpec `protobuf:"bytes,254,opt,name=publication_obj_spec,json=PublicationObjSpec,proto3,oneof"` +} + +type Node_CreatePublicationStmt struct { + CreatePublicationStmt *CreatePublicationStmt `protobuf:"bytes,255,opt,name=create_publication_stmt,json=CreatePublicationStmt,proto3,oneof"` +} + +type Node_AlterPublicationStmt struct { + AlterPublicationStmt *AlterPublicationStmt `protobuf:"bytes,256,opt,name=alter_publication_stmt,json=AlterPublicationStmt,proto3,oneof"` +} + +type Node_CreateSubscriptionStmt struct { + CreateSubscriptionStmt *CreateSubscriptionStmt `protobuf:"bytes,257,opt,name=create_subscription_stmt,json=CreateSubscriptionStmt,proto3,oneof"` +} + +type Node_AlterSubscriptionStmt struct { + AlterSubscriptionStmt *AlterSubscriptionStmt `protobuf:"bytes,258,opt,name=alter_subscription_stmt,json=AlterSubscriptionStmt,proto3,oneof"` +} + +type Node_DropSubscriptionStmt struct { + DropSubscriptionStmt *DropSubscriptionStmt `protobuf:"bytes,259,opt,name=drop_subscription_stmt,json=DropSubscriptionStmt,proto3,oneof"` +} + +type Node_Integer struct { + Integer *Integer `protobuf:"bytes,260,opt,name=integer,json=Integer,proto3,oneof"` +} + +type Node_Float struct { + Float *Float `protobuf:"bytes,261,opt,name=float,json=Float,proto3,oneof"` +} + +type Node_Boolean struct { + Boolean *Boolean `protobuf:"bytes,262,opt,name=boolean,json=Boolean,proto3,oneof"` +} + +type Node_String_ struct { + String_ *String `protobuf:"bytes,263,opt,name=string,json=String,proto3,oneof"` +} + +type Node_BitString struct { + BitString *BitString `protobuf:"bytes,264,opt,name=bit_string,json=BitString,proto3,oneof"` +} + +type Node_List struct { + List *List `protobuf:"bytes,265,opt,name=list,json=List,proto3,oneof"` +} + +type Node_IntList struct { + IntList *IntList `protobuf:"bytes,266,opt,name=int_list,json=IntList,proto3,oneof"` +} + +type Node_OidList struct { + OidList *OidList `protobuf:"bytes,267,opt,name=oid_list,json=OidList,proto3,oneof"` +} + +type Node_AConst struct { + AConst *A_Const `protobuf:"bytes,268,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_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_SinglePartitionSpec) 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_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_ReplicaIdentityStmt) isNode_Node() {} + +func (*Node_AlterTableCmd) 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 *Node `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() *Node { + 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"` + Location int32 `protobuf:"varint,9,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) 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"` + Location int32 `protobuf:"varint,7,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) 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"` + Rctype RowCompareType `protobuf:"varint,2,opt,name=rctype,proto3,enum=pg_query.RowCompareType" json:"rctype,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) GetRctype() RowCompareType { + if x != nil { + return x.Rctype + } + return RowCompareType_ROW_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 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[70] + 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[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 TargetEntry.ProtoReflect.Descriptor instead. +func (*TargetEntry) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{70} +} + +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[71] + 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[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 RangeTblRef.ProtoReflect.Descriptor instead. +func (*RangeTblRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{71} +} + +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[72] + 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[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 JoinExpr.ProtoReflect.Descriptor instead. +func (*JoinExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{72} +} + +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[73] + 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[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 FromExpr.ProtoReflect.Descriptor instead. +func (*FromExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{73} +} + +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[74] + 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[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 OnConflictExpr.ProtoReflect.Descriptor instead. +func (*OnConflictExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{74} +} + +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"` + IsReturn bool `protobuf:"varint,15,opt,name=is_return,json=isReturn,proto3" json:"is_return,omitempty"` + CteList []*Node `protobuf:"bytes,16,rep,name=cte_list,json=cteList,proto3" json:"cte_list,omitempty"` + Rtable []*Node `protobuf:"bytes,17,rep,name=rtable,proto3" json:"rtable,omitempty"` + Rteperminfos []*Node `protobuf:"bytes,18,rep,name=rteperminfos,proto3" json:"rteperminfos,omitempty"` + Jointree *FromExpr `protobuf:"bytes,19,opt,name=jointree,proto3" json:"jointree,omitempty"` + MergeActionList []*Node `protobuf:"bytes,20,rep,name=merge_action_list,json=mergeActionList,proto3" json:"merge_action_list,omitempty"` + MergeTargetRelation int32 `protobuf:"varint,21,opt,name=merge_target_relation,json=mergeTargetRelation,proto3" json:"merge_target_relation,omitempty"` + MergeJoinCondition *Node `protobuf:"bytes,22,opt,name=merge_join_condition,json=mergeJoinCondition,proto3" json:"merge_join_condition,omitempty"` + TargetList []*Node `protobuf:"bytes,23,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` + Override OverridingKind `protobuf:"varint,24,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` + OnConflict *OnConflictExpr `protobuf:"bytes,25,opt,name=on_conflict,json=onConflict,proto3" json:"on_conflict,omitempty"` + ReturningList []*Node `protobuf:"bytes,26,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` + GroupClause []*Node `protobuf:"bytes,27,rep,name=group_clause,json=groupClause,proto3" json:"group_clause,omitempty"` + GroupDistinct bool `protobuf:"varint,28,opt,name=group_distinct,json=groupDistinct,proto3" json:"group_distinct,omitempty"` + GroupingSets []*Node `protobuf:"bytes,29,rep,name=grouping_sets,json=groupingSets,proto3" json:"grouping_sets,omitempty"` + HavingQual *Node `protobuf:"bytes,30,opt,name=having_qual,json=havingQual,proto3" json:"having_qual,omitempty"` + WindowClause []*Node `protobuf:"bytes,31,rep,name=window_clause,json=windowClause,proto3" json:"window_clause,omitempty"` + DistinctClause []*Node `protobuf:"bytes,32,rep,name=distinct_clause,json=distinctClause,proto3" json:"distinct_clause,omitempty"` + SortClause []*Node `protobuf:"bytes,33,rep,name=sort_clause,json=sortClause,proto3" json:"sort_clause,omitempty"` + LimitOffset *Node `protobuf:"bytes,34,opt,name=limit_offset,json=limitOffset,proto3" json:"limit_offset,omitempty"` + LimitCount *Node `protobuf:"bytes,35,opt,name=limit_count,json=limitCount,proto3" json:"limit_count,omitempty"` + LimitOption LimitOption `protobuf:"varint,36,opt,name=limit_option,json=limitOption,proto3,enum=pg_query.LimitOption" json:"limit_option,omitempty"` + RowMarks []*Node `protobuf:"bytes,37,rep,name=row_marks,json=rowMarks,proto3" json:"row_marks,omitempty"` + SetOperations *Node `protobuf:"bytes,38,opt,name=set_operations,json=setOperations,proto3" json:"set_operations,omitempty"` + ConstraintDeps []*Node `protobuf:"bytes,39,rep,name=constraint_deps,json=constraintDeps,proto3" json:"constraint_deps,omitempty"` + WithCheckOptions []*Node `protobuf:"bytes,40,rep,name=with_check_options,json=withCheckOptions,proto3" json:"with_check_options,omitempty"` + StmtLocation int32 `protobuf:"varint,41,opt,name=stmt_location,proto3" json:"stmt_location,omitempty"` + StmtLen int32 `protobuf:"varint,42,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[75] + 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[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 Query.ProtoReflect.Descriptor instead. +func (*Query) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{75} +} + +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) 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) 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[76] + 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[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 TypeName.ProtoReflect.Descriptor instead. +func (*TypeName) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{76} +} + +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[77] + 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[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 ColumnRef.ProtoReflect.Descriptor instead. +func (*ColumnRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{77} +} + +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[78] + 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[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 ParamRef.ProtoReflect.Descriptor instead. +func (*ParamRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{78} +} + +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"` + Location int32 `protobuf:"varint,5,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[79] + 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[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 A_Expr.ProtoReflect.Descriptor instead. +func (*A_Expr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{79} +} + +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) 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[80] + 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[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 TypeCast.ProtoReflect.Descriptor instead. +func (*TypeCast) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{80} +} + +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[81] + 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[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 CollateClause.ProtoReflect.Descriptor instead. +func (*CollateClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{81} +} + +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[82] + 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[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 RoleSpec.ProtoReflect.Descriptor instead. +func (*RoleSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{82} +} + +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[83] + 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[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 FuncCall.ProtoReflect.Descriptor instead. +func (*FuncCall) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{83} +} + +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[84] + 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[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 A_Star.ProtoReflect.Descriptor instead. +func (*A_Star) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{84} +} + +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[85] + 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[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_Indices.ProtoReflect.Descriptor instead. +func (*A_Indices) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{85} +} + +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[86] + 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[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_Indirection.ProtoReflect.Descriptor instead. +func (*A_Indirection) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{86} +} + +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"` + Location int32 `protobuf:"varint,2,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[87] + 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[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_ArrayExpr.ProtoReflect.Descriptor instead. +func (*A_ArrayExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{87} +} + +func (x *A_ArrayExpr) GetElements() []*Node { + if x != nil { + return x.Elements + } + return nil +} + +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[88] + 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[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 ResTarget.ProtoReflect.Descriptor instead. +func (*ResTarget) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{88} +} + +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[89] + 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[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 MultiAssignRef.ProtoReflect.Descriptor instead. +func (*MultiAssignRef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{89} +} + +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[90] + 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[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 SortBy.ProtoReflect.Descriptor instead. +func (*SortBy) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{90} +} + +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[91] + 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[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 WindowDef.ProtoReflect.Descriptor instead. +func (*WindowDef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{91} +} + +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[92] + 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[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 RangeSubselect.ProtoReflect.Descriptor instead. +func (*RangeSubselect) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{92} +} + +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[93] + 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[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 RangeFunction.ProtoReflect.Descriptor instead. +func (*RangeFunction) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{93} +} + +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[94] + 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[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 RangeTableFunc.ProtoReflect.Descriptor instead. +func (*RangeTableFunc) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{94} +} + +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[95] + 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[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 RangeTableFuncCol.ProtoReflect.Descriptor instead. +func (*RangeTableFuncCol) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{95} +} + +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[96] + 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[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 RangeTableSample.ProtoReflect.Descriptor instead. +func (*RangeTableSample) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{96} +} + +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[97] + 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[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 ColumnDef.ProtoReflect.Descriptor instead. +func (*ColumnDef) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{97} +} + +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[98] + 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[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 TableLikeClause.ProtoReflect.Descriptor instead. +func (*TableLikeClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{98} +} + +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[99] + 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[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 IndexElem.ProtoReflect.Descriptor instead. +func (*IndexElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{99} +} + +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[100] + 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[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 DefElem.ProtoReflect.Descriptor instead. +func (*DefElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{100} +} + +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[101] + 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[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 LockingClause.ProtoReflect.Descriptor instead. +func (*LockingClause) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{101} +} + +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[102] + 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[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 XmlSerialize.ProtoReflect.Descriptor instead. +func (*XmlSerialize) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{102} +} + +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[103] + 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[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 PartitionElem.ProtoReflect.Descriptor instead. +func (*PartitionElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{103} +} + +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[104] + 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[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 PartitionSpec.ProtoReflect.Descriptor instead. +func (*PartitionSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{104} +} + +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[105] + 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[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 PartitionBoundSpec.ProtoReflect.Descriptor instead. +func (*PartitionBoundSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{105} +} + +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[106] + 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[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 PartitionRangeDatum.ProtoReflect.Descriptor instead. +func (*PartitionRangeDatum) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{106} +} + +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 SinglePartitionSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SinglePartitionSpec) Reset() { + *x = SinglePartitionSpec{} + mi := &file_pg_query_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SinglePartitionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SinglePartitionSpec) ProtoMessage() {} + +func (x *SinglePartitionSpec) 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 SinglePartitionSpec.ProtoReflect.Descriptor instead. +func (*SinglePartitionSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{107} +} + +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"` + Lateral bool `protobuf:"varint,30,opt,name=lateral,proto3" json:"lateral,omitempty"` + InFromCl bool `protobuf:"varint,31,opt,name=in_from_cl,json=inFromCl,proto3" json:"in_from_cl,omitempty"` + SecurityQuals []*Node `protobuf:"bytes,32,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) 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"` + NullsFirst bool `protobuf:"varint,4,opt,name=nulls_first,proto3" json:"nulls_first,omitempty"` + Hashable bool `protobuf:"varint,5,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) 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 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[125] + 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[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 TriggerTransition.ProtoReflect.Descriptor instead. +func (*TriggerTransition) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{125} +} + +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[126] + 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[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 JsonOutput.ProtoReflect.Descriptor instead. +func (*JsonOutput) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{126} +} + +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[127] + 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[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 JsonArgument.ProtoReflect.Descriptor instead. +func (*JsonArgument) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{127} +} + +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[128] + 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[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 JsonFuncExpr.ProtoReflect.Descriptor instead. +func (*JsonFuncExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{128} +} + +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[129] + 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[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 JsonTablePathSpec.ProtoReflect.Descriptor instead. +func (*JsonTablePathSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{129} +} + +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[130] + 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[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 JsonTable.ProtoReflect.Descriptor instead. +func (*JsonTable) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{130} +} + +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[131] + 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[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 JsonTableColumn.ProtoReflect.Descriptor instead. +func (*JsonTableColumn) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{131} +} + +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[132] + 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[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 JsonKeyValue.ProtoReflect.Descriptor instead. +func (*JsonKeyValue) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{132} +} + +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[133] + 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[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 JsonParseExpr.ProtoReflect.Descriptor instead. +func (*JsonParseExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{133} +} + +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[134] + 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[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 JsonScalarExpr.ProtoReflect.Descriptor instead. +func (*JsonScalarExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{134} +} + +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[135] + 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[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 JsonSerializeExpr.ProtoReflect.Descriptor instead. +func (*JsonSerializeExpr) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{135} +} + +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[136] + 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[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 JsonObjectConstructor.ProtoReflect.Descriptor instead. +func (*JsonObjectConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{136} +} + +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[137] + 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[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 JsonArrayConstructor.ProtoReflect.Descriptor instead. +func (*JsonArrayConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{137} +} + +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[138] + 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[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 JsonArrayQueryConstructor.ProtoReflect.Descriptor instead. +func (*JsonArrayQueryConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{138} +} + +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[139] + 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[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 JsonAggConstructor.ProtoReflect.Descriptor instead. +func (*JsonAggConstructor) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{139} +} + +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[140] + 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[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 JsonObjectAgg.ProtoReflect.Descriptor instead. +func (*JsonObjectAgg) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{140} +} + +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[141] + 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[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 JsonArrayAgg.ProtoReflect.Descriptor instead. +func (*JsonArrayAgg) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{141} +} + +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[142] + 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[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 RawStmt.ProtoReflect.Descriptor instead. +func (*RawStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{142} +} + +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"` + ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,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[143] + 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[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 InsertStmt.ProtoReflect.Descriptor instead. +func (*InsertStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{143} +} + +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) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + 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"` + ReturningList []*Node `protobuf:"bytes,4,rep,name=returning_list,json=returningList,proto3" json:"returning_list,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[144] + 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[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 DeleteStmt.ProtoReflect.Descriptor instead. +func (*DeleteStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{144} +} + +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) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + 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"` + ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,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[145] + 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[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 UpdateStmt.ProtoReflect.Descriptor instead. +func (*UpdateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{145} +} + +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) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + 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"` + ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,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[146] + 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[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 MergeStmt.ProtoReflect.Descriptor instead. +func (*MergeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{146} +} + +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) GetReturningList() []*Node { + if x != nil { + return x.ReturningList + } + 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[147] + 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[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 SelectStmt.ProtoReflect.Descriptor instead. +func (*SelectStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{147} +} + +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[148] + 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[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 SetOperationStmt.ProtoReflect.Descriptor instead. +func (*SetOperationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{148} +} + +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[149] + 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[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 ReturnStmt.ProtoReflect.Descriptor instead. +func (*ReturnStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{149} +} + +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[150] + 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[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 PLAssignStmt.ProtoReflect.Descriptor instead. +func (*PLAssignStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{150} +} + +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[151] + 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[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 CreateSchemaStmt.ProtoReflect.Descriptor instead. +func (*CreateSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{151} +} + +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[152] + 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[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 AlterTableStmt.ProtoReflect.Descriptor instead. +func (*AlterTableStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{152} +} + +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 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[153] + 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[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 ReplicaIdentityStmt.ProtoReflect.Descriptor instead. +func (*ReplicaIdentityStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{153} +} + +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 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[154] + 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[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 AlterTableCmd.ProtoReflect.Descriptor instead. +func (*AlterTableCmd) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{154} +} + +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 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[155] + 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[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 AlterCollationStmt.ProtoReflect.Descriptor instead. +func (*AlterCollationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{155} +} + +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[156] + 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[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 AlterDomainStmt.ProtoReflect.Descriptor instead. +func (*AlterDomainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{156} +} + +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[157] + 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[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 GrantStmt.ProtoReflect.Descriptor instead. +func (*GrantStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{157} +} + +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[158] + 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[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 ObjectWithArgs.ProtoReflect.Descriptor instead. +func (*ObjectWithArgs) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{158} +} + +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[159] + 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[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 AccessPriv.ProtoReflect.Descriptor instead. +func (*AccessPriv) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{159} +} + +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[160] + 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[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 GrantRoleStmt.ProtoReflect.Descriptor instead. +func (*GrantRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{160} +} + +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[161] + 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[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 AlterDefaultPrivilegesStmt.ProtoReflect.Descriptor instead. +func (*AlterDefaultPrivilegesStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{161} +} + +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[162] + 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[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 CopyStmt.ProtoReflect.Descriptor instead. +func (*CopyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{162} +} + +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"` + IsLocal bool `protobuf:"varint,4,opt,name=is_local,proto3" json:"is_local,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VariableSetStmt) Reset() { + *x = VariableSetStmt{} + mi := &file_pg_query_proto_msgTypes[163] + 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[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 VariableSetStmt.ProtoReflect.Descriptor instead. +func (*VariableSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{163} +} + +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) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +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[164] + 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[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 VariableShowStmt.ProtoReflect.Descriptor instead. +func (*VariableShowStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{164} +} + +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"` + Options []*Node `protobuf:"bytes,8,rep,name=options,proto3" json:"options,omitempty"` + Oncommit OnCommitAction `protobuf:"varint,9,opt,name=oncommit,proto3,enum=pg_query.OnCommitAction" json:"oncommit,omitempty"` + Tablespacename string `protobuf:"bytes,10,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` + AccessMethod string `protobuf:"bytes,11,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` + IfNotExists bool `protobuf:"varint,12,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[165] + 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[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 CreateStmt.ProtoReflect.Descriptor instead. +func (*CreateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{165} +} + +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) 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"` + SkipValidation bool `protobuf:"varint,5,opt,name=skip_validation,proto3" json:"skip_validation,omitempty"` + InitiallyValid bool `protobuf:"varint,6,opt,name=initially_valid,proto3" json:"initially_valid,omitempty"` + IsNoInherit bool `protobuf:"varint,7,opt,name=is_no_inherit,proto3" json:"is_no_inherit,omitempty"` + RawExpr *Node `protobuf:"bytes,8,opt,name=raw_expr,proto3" json:"raw_expr,omitempty"` + CookedExpr string `protobuf:"bytes,9,opt,name=cooked_expr,proto3" json:"cooked_expr,omitempty"` + GeneratedWhen string `protobuf:"bytes,10,opt,name=generated_when,proto3" json:"generated_when,omitempty"` + Inhcount int32 `protobuf:"varint,11,opt,name=inhcount,proto3" json:"inhcount,omitempty"` + NullsNotDistinct bool `protobuf:"varint,12,opt,name=nulls_not_distinct,proto3" json:"nulls_not_distinct,omitempty"` + Keys []*Node `protobuf:"bytes,13,rep,name=keys,proto3" json:"keys,omitempty"` + Including []*Node `protobuf:"bytes,14,rep,name=including,proto3" json:"including,omitempty"` + Exclusions []*Node `protobuf:"bytes,15,rep,name=exclusions,proto3" json:"exclusions,omitempty"` + Options []*Node `protobuf:"bytes,16,rep,name=options,proto3" json:"options,omitempty"` + Indexname string `protobuf:"bytes,17,opt,name=indexname,proto3" json:"indexname,omitempty"` + Indexspace string `protobuf:"bytes,18,opt,name=indexspace,proto3" json:"indexspace,omitempty"` + ResetDefaultTblspc bool `protobuf:"varint,19,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,omitempty"` + AccessMethod string `protobuf:"bytes,20,opt,name=access_method,proto3" json:"access_method,omitempty"` + WhereClause *Node `protobuf:"bytes,21,opt,name=where_clause,proto3" json:"where_clause,omitempty"` + Pktable *RangeVar `protobuf:"bytes,22,opt,name=pktable,proto3" json:"pktable,omitempty"` + FkAttrs []*Node `protobuf:"bytes,23,rep,name=fk_attrs,proto3" json:"fk_attrs,omitempty"` + PkAttrs []*Node `protobuf:"bytes,24,rep,name=pk_attrs,proto3" json:"pk_attrs,omitempty"` + FkMatchtype string `protobuf:"bytes,25,opt,name=fk_matchtype,proto3" json:"fk_matchtype,omitempty"` + FkUpdAction string `protobuf:"bytes,26,opt,name=fk_upd_action,proto3" json:"fk_upd_action,omitempty"` + FkDelAction string `protobuf:"bytes,27,opt,name=fk_del_action,proto3" json:"fk_del_action,omitempty"` + FkDelSetCols []*Node `protobuf:"bytes,28,rep,name=fk_del_set_cols,proto3" json:"fk_del_set_cols,omitempty"` + OldConpfeqop []*Node `protobuf:"bytes,29,rep,name=old_conpfeqop,proto3" json:"old_conpfeqop,omitempty"` + OldPktableOid uint32 `protobuf:"varint,30,opt,name=old_pktable_oid,proto3" json:"old_pktable_oid,omitempty"` + Location int32 `protobuf:"varint,31,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[166] + 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[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 Constraint.ProtoReflect.Descriptor instead. +func (*Constraint) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{166} +} + +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) 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) GetInhcount() int32 { + if x != nil { + return x.Inhcount + } + return 0 +} + +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) 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) 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[167] + 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[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 CreateTableSpaceStmt.ProtoReflect.Descriptor instead. +func (*CreateTableSpaceStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{167} +} + +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[168] + 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[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 DropTableSpaceStmt.ProtoReflect.Descriptor instead. +func (*DropTableSpaceStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{168} +} + +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[169] + 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[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 AlterTableSpaceOptionsStmt.ProtoReflect.Descriptor instead. +func (*AlterTableSpaceOptionsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{169} +} + +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[170] + 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[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 AlterTableMoveAllStmt.ProtoReflect.Descriptor instead. +func (*AlterTableMoveAllStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{170} +} + +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[171] + 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[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 CreateExtensionStmt.ProtoReflect.Descriptor instead. +func (*CreateExtensionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{171} +} + +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[172] + 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[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 AlterExtensionStmt.ProtoReflect.Descriptor instead. +func (*AlterExtensionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{172} +} + +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[173] + 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[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 AlterExtensionContentsStmt.ProtoReflect.Descriptor instead. +func (*AlterExtensionContentsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{173} +} + +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[174] + 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[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 CreateFdwStmt.ProtoReflect.Descriptor instead. +func (*CreateFdwStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{174} +} + +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[175] + 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[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 AlterFdwStmt.ProtoReflect.Descriptor instead. +func (*AlterFdwStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{175} +} + +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[176] + 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[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 CreateForeignServerStmt.ProtoReflect.Descriptor instead. +func (*CreateForeignServerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{176} +} + +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[177] + 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[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 AlterForeignServerStmt.ProtoReflect.Descriptor instead. +func (*AlterForeignServerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{177} +} + +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[178] + 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[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 CreateForeignTableStmt.ProtoReflect.Descriptor instead. +func (*CreateForeignTableStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{178} +} + +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[179] + 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[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 CreateUserMappingStmt.ProtoReflect.Descriptor instead. +func (*CreateUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{179} +} + +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[180] + 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[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 AlterUserMappingStmt.ProtoReflect.Descriptor instead. +func (*AlterUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{180} +} + +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[181] + 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[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 DropUserMappingStmt.ProtoReflect.Descriptor instead. +func (*DropUserMappingStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{181} +} + +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[182] + 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[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 ImportForeignSchemaStmt.ProtoReflect.Descriptor instead. +func (*ImportForeignSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{182} +} + +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[183] + 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[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 CreatePolicyStmt.ProtoReflect.Descriptor instead. +func (*CreatePolicyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{183} +} + +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[184] + 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[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 AlterPolicyStmt.ProtoReflect.Descriptor instead. +func (*AlterPolicyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{184} +} + +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[185] + 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[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 CreateAmStmt.ProtoReflect.Descriptor instead. +func (*CreateAmStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{185} +} + +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[186] + 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[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 CreateTrigStmt.ProtoReflect.Descriptor instead. +func (*CreateTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{186} +} + +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[187] + 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[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 CreateEventTrigStmt.ProtoReflect.Descriptor instead. +func (*CreateEventTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{187} +} + +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[188] + 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[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 AlterEventTrigStmt.ProtoReflect.Descriptor instead. +func (*AlterEventTrigStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{188} +} + +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[189] + 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[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 CreatePLangStmt.ProtoReflect.Descriptor instead. +func (*CreatePLangStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{189} +} + +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[190] + 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[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 CreateRoleStmt.ProtoReflect.Descriptor instead. +func (*CreateRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{190} +} + +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[191] + 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[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 AlterRoleStmt.ProtoReflect.Descriptor instead. +func (*AlterRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{191} +} + +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[192] + 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[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 AlterRoleSetStmt.ProtoReflect.Descriptor instead. +func (*AlterRoleSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{192} +} + +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[193] + 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[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 DropRoleStmt.ProtoReflect.Descriptor instead. +func (*DropRoleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{193} +} + +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[194] + 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[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 CreateSeqStmt.ProtoReflect.Descriptor instead. +func (*CreateSeqStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{194} +} + +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[195] + 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[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 AlterSeqStmt.ProtoReflect.Descriptor instead. +func (*AlterSeqStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{195} +} + +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[196] + 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[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 DefineStmt.ProtoReflect.Descriptor instead. +func (*DefineStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{196} +} + +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[197] + 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[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 CreateDomainStmt.ProtoReflect.Descriptor instead. +func (*CreateDomainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{197} +} + +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[198] + 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[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 CreateOpClassStmt.ProtoReflect.Descriptor instead. +func (*CreateOpClassStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{198} +} + +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[199] + 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[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 CreateOpClassItem.ProtoReflect.Descriptor instead. +func (*CreateOpClassItem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{199} +} + +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[200] + 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[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 CreateOpFamilyStmt.ProtoReflect.Descriptor instead. +func (*CreateOpFamilyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{200} +} + +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[201] + 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[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 AlterOpFamilyStmt.ProtoReflect.Descriptor instead. +func (*AlterOpFamilyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{201} +} + +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[202] + 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[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 DropStmt.ProtoReflect.Descriptor instead. +func (*DropStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{202} +} + +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[203] + 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[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 TruncateStmt.ProtoReflect.Descriptor instead. +func (*TruncateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{203} +} + +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[204] + 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[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 CommentStmt.ProtoReflect.Descriptor instead. +func (*CommentStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{204} +} + +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[205] + 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[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 SecLabelStmt.ProtoReflect.Descriptor instead. +func (*SecLabelStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{205} +} + +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[206] + 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[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 DeclareCursorStmt.ProtoReflect.Descriptor instead. +func (*DeclareCursorStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{206} +} + +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[207] + 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[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 ClosePortalStmt.ProtoReflect.Descriptor instead. +func (*ClosePortalStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{207} +} + +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[208] + 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[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 FetchStmt.ProtoReflect.Descriptor instead. +func (*FetchStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{208} +} + +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"` + Deferrable bool `protobuf:"varint,19,opt,name=deferrable,proto3" json:"deferrable,omitempty"` + Initdeferred bool `protobuf:"varint,20,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` + Transformed bool `protobuf:"varint,21,opt,name=transformed,proto3" json:"transformed,omitempty"` + Concurrent bool `protobuf:"varint,22,opt,name=concurrent,proto3" json:"concurrent,omitempty"` + IfNotExists bool `protobuf:"varint,23,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` + ResetDefaultTblspc bool `protobuf:"varint,24,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[209] + 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[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 IndexStmt.ProtoReflect.Descriptor instead. +func (*IndexStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{209} +} + +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) 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[210] + 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[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 CreateStatsStmt.ProtoReflect.Descriptor instead. +func (*CreateStatsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{210} +} + +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[211] + 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[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 StatsElem.ProtoReflect.Descriptor instead. +func (*StatsElem) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{211} +} + +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[212] + 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[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 AlterStatsStmt.ProtoReflect.Descriptor instead. +func (*AlterStatsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{212} +} + +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[213] + 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[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 CreateFunctionStmt.ProtoReflect.Descriptor instead. +func (*CreateFunctionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{213} +} + +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"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FunctionParameter) Reset() { + *x = FunctionParameter{} + mi := &file_pg_query_proto_msgTypes[214] + 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[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 FunctionParameter.ProtoReflect.Descriptor instead. +func (*FunctionParameter) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{214} +} + +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 +} + +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[215] + 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[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 AlterFunctionStmt.ProtoReflect.Descriptor instead. +func (*AlterFunctionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{215} +} + +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[216] + 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[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 DoStmt.ProtoReflect.Descriptor instead. +func (*DoStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{216} +} + +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[217] + 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[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 InlineCodeBlock.ProtoReflect.Descriptor instead. +func (*InlineCodeBlock) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{217} +} + +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[218] + 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[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 CallStmt.ProtoReflect.Descriptor instead. +func (*CallStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{218} +} + +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[219] + 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[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 CallContext.ProtoReflect.Descriptor instead. +func (*CallContext) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{219} +} + +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[220] + 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[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 RenameStmt.ProtoReflect.Descriptor instead. +func (*RenameStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{220} +} + +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[221] + 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[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 AlterObjectDependsStmt.ProtoReflect.Descriptor instead. +func (*AlterObjectDependsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{221} +} + +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[222] + 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[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 AlterObjectSchemaStmt.ProtoReflect.Descriptor instead. +func (*AlterObjectSchemaStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{222} +} + +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[223] + 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[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 AlterOwnerStmt.ProtoReflect.Descriptor instead. +func (*AlterOwnerStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{223} +} + +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[224] + 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[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 AlterOperatorStmt.ProtoReflect.Descriptor instead. +func (*AlterOperatorStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{224} +} + +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[225] + 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[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 AlterTypeStmt.ProtoReflect.Descriptor instead. +func (*AlterTypeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{225} +} + +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[226] + 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[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 RuleStmt.ProtoReflect.Descriptor instead. +func (*RuleStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{226} +} + +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[227] + 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[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 NotifyStmt.ProtoReflect.Descriptor instead. +func (*NotifyStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{227} +} + +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[228] + 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[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 ListenStmt.ProtoReflect.Descriptor instead. +func (*ListenStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{228} +} + +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[229] + 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[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 UnlistenStmt.ProtoReflect.Descriptor instead. +func (*UnlistenStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{229} +} + +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[230] + 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[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 TransactionStmt.ProtoReflect.Descriptor instead. +func (*TransactionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{230} +} + +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[231] + 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[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 CompositeTypeStmt.ProtoReflect.Descriptor instead. +func (*CompositeTypeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{231} +} + +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[232] + 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[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 CreateEnumStmt.ProtoReflect.Descriptor instead. +func (*CreateEnumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{232} +} + +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[233] + 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[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 CreateRangeStmt.ProtoReflect.Descriptor instead. +func (*CreateRangeStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{233} +} + +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[234] + 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[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 AlterEnumStmt.ProtoReflect.Descriptor instead. +func (*AlterEnumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{234} +} + +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[235] + 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[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 ViewStmt.ProtoReflect.Descriptor instead. +func (*ViewStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{235} +} + +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[236] + 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[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 LoadStmt.ProtoReflect.Descriptor instead. +func (*LoadStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{236} +} + +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[237] + 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[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 CreatedbStmt.ProtoReflect.Descriptor instead. +func (*CreatedbStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{237} +} + +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[238] + 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[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 AlterDatabaseStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{238} +} + +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[239] + 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[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 AlterDatabaseRefreshCollStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseRefreshCollStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{239} +} + +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[240] + 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[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 AlterDatabaseSetStmt.ProtoReflect.Descriptor instead. +func (*AlterDatabaseSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{240} +} + +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[241] + 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[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 DropdbStmt.ProtoReflect.Descriptor instead. +func (*DropdbStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{241} +} + +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[242] + 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[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 AlterSystemStmt.ProtoReflect.Descriptor instead. +func (*AlterSystemStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{242} +} + +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[243] + 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[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 ClusterStmt.ProtoReflect.Descriptor instead. +func (*ClusterStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{243} +} + +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[244] + 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[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 VacuumStmt.ProtoReflect.Descriptor instead. +func (*VacuumStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{244} +} + +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[245] + 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[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 VacuumRelation.ProtoReflect.Descriptor instead. +func (*VacuumRelation) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{245} +} + +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[246] + 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[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 ExplainStmt.ProtoReflect.Descriptor instead. +func (*ExplainStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{246} +} + +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[247] + 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[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 CreateTableAsStmt.ProtoReflect.Descriptor instead. +func (*CreateTableAsStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{247} +} + +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[248] + 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[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 RefreshMatViewStmt.ProtoReflect.Descriptor instead. +func (*RefreshMatViewStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{248} +} + +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[249] + 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[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 CheckPointStmt.ProtoReflect.Descriptor instead. +func (*CheckPointStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{249} +} + +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[250] + 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[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 DiscardStmt.ProtoReflect.Descriptor instead. +func (*DiscardStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{250} +} + +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[251] + 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[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 LockStmt.ProtoReflect.Descriptor instead. +func (*LockStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{251} +} + +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[252] + 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[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 ConstraintsSetStmt.ProtoReflect.Descriptor instead. +func (*ConstraintsSetStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{252} +} + +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[253] + 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[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 ReindexStmt.ProtoReflect.Descriptor instead. +func (*ReindexStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{253} +} + +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[254] + 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[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 CreateConversionStmt.ProtoReflect.Descriptor instead. +func (*CreateConversionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{254} +} + +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[255] + 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[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 CreateCastStmt.ProtoReflect.Descriptor instead. +func (*CreateCastStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{255} +} + +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[256] + 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[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 CreateTransformStmt.ProtoReflect.Descriptor instead. +func (*CreateTransformStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{256} +} + +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[257] + 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[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 PrepareStmt.ProtoReflect.Descriptor instead. +func (*PrepareStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{257} +} + +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[258] + 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[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 ExecuteStmt.ProtoReflect.Descriptor instead. +func (*ExecuteStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{258} +} + +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[259] + 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[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 DeallocateStmt.ProtoReflect.Descriptor instead. +func (*DeallocateStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{259} +} + +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[260] + 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[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 DropOwnedStmt.ProtoReflect.Descriptor instead. +func (*DropOwnedStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{260} +} + +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[261] + 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[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 ReassignOwnedStmt.ProtoReflect.Descriptor instead. +func (*ReassignOwnedStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{261} +} + +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[262] + 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[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 AlterTSDictionaryStmt.ProtoReflect.Descriptor instead. +func (*AlterTSDictionaryStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{262} +} + +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[263] + 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[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 AlterTSConfigurationStmt.ProtoReflect.Descriptor instead. +func (*AlterTSConfigurationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{263} +} + +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[264] + 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[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 PublicationTable.ProtoReflect.Descriptor instead. +func (*PublicationTable) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{264} +} + +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[265] + 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[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 PublicationObjSpec.ProtoReflect.Descriptor instead. +func (*PublicationObjSpec) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{265} +} + +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[266] + 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[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 CreatePublicationStmt.ProtoReflect.Descriptor instead. +func (*CreatePublicationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{266} +} + +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[267] + 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[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 AlterPublicationStmt.ProtoReflect.Descriptor instead. +func (*AlterPublicationStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{267} +} + +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[268] + 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[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 CreateSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*CreateSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{268} +} + +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[269] + 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[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 AlterSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*AlterSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{269} +} + +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[270] + 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[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 DropSubscriptionStmt.ProtoReflect.Descriptor instead. +func (*DropSubscriptionStmt) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{270} +} + +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[271] + 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[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 ScanToken.ProtoReflect.Descriptor instead. +func (*ScanToken) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{271} +} + +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[272] + 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[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 SummaryResult.ProtoReflect.Descriptor instead. +func (*SummaryResult) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{272} +} + +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[273] + 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[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 SummaryResult_Table.ProtoReflect.Descriptor instead. +func (*SummaryResult_Table) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{272, 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[275] + 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[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_Function.ProtoReflect.Descriptor instead. +func (*SummaryResult_Function) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{272, 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[276] + 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[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_FilterColumn.ProtoReflect.Descriptor instead. +func (*SummaryResult_FilterColumn) Descriptor() ([]byte, []int) { + return file_pg_query_proto_rawDescGZIP(), []int{272, 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\"Վ\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" + + "\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\x18@ \x01(\v2\x0f.pg_query.QueryH\x00R\x05Query\x121\n" + + "\ttype_name\x18A \x01(\v2\x12.pg_query.TypeNameH\x00R\bTypeName\x124\n" + + "\n" + + "column_ref\x18B \x01(\v2\x13.pg_query.ColumnRefH\x00R\tColumnRef\x121\n" + + "\tparam_ref\x18C \x01(\v2\x12.pg_query.ParamRefH\x00R\bParamRef\x12*\n" + + "\x06a_expr\x18D \x01(\v2\x10.pg_query.A_ExprH\x00R\x06A_Expr\x121\n" + + "\ttype_cast\x18E \x01(\v2\x12.pg_query.TypeCastH\x00R\bTypeCast\x12@\n" + + "\x0ecollate_clause\x18F \x01(\v2\x17.pg_query.CollateClauseH\x00R\rCollateClause\x121\n" + + "\trole_spec\x18G \x01(\v2\x12.pg_query.RoleSpecH\x00R\bRoleSpec\x121\n" + + "\tfunc_call\x18H \x01(\v2\x12.pg_query.FuncCallH\x00R\bFuncCall\x12*\n" + + "\x06a_star\x18I \x01(\v2\x10.pg_query.A_StarH\x00R\x06A_Star\x123\n" + + "\ta_indices\x18J \x01(\v2\x13.pg_query.A_IndicesH\x00R\tA_Indices\x12?\n" + + "\ra_indirection\x18K \x01(\v2\x17.pg_query.A_IndirectionH\x00R\rA_Indirection\x12:\n" + + "\fa_array_expr\x18L \x01(\v2\x15.pg_query.A_ArrayExprH\x00R\vA_ArrayExpr\x124\n" + + "\n" + + "res_target\x18M \x01(\v2\x13.pg_query.ResTargetH\x00R\tResTarget\x12D\n" + + "\x10multi_assign_ref\x18N \x01(\v2\x18.pg_query.MultiAssignRefH\x00R\x0eMultiAssignRef\x12+\n" + + "\asort_by\x18O \x01(\v2\x10.pg_query.SortByH\x00R\x06SortBy\x124\n" + + "\n" + + "window_def\x18P \x01(\v2\x13.pg_query.WindowDefH\x00R\tWindowDef\x12C\n" + + "\x0frange_subselect\x18Q \x01(\v2\x18.pg_query.RangeSubselectH\x00R\x0eRangeSubselect\x12@\n" + + "\x0erange_function\x18R \x01(\v2\x17.pg_query.RangeFunctionH\x00R\rRangeFunction\x12D\n" + + "\x10range_table_func\x18S \x01(\v2\x18.pg_query.RangeTableFuncH\x00R\x0eRangeTableFunc\x12N\n" + + "\x14range_table_func_col\x18T \x01(\v2\x1b.pg_query.RangeTableFuncColH\x00R\x11RangeTableFuncCol\x12J\n" + + "\x12range_table_sample\x18U \x01(\v2\x1a.pg_query.RangeTableSampleH\x00R\x10RangeTableSample\x124\n" + + "\n" + + "column_def\x18V \x01(\v2\x13.pg_query.ColumnDefH\x00R\tColumnDef\x12G\n" + + "\x11table_like_clause\x18W \x01(\v2\x19.pg_query.TableLikeClauseH\x00R\x0fTableLikeClause\x124\n" + + "\n" + + "index_elem\x18X \x01(\v2\x13.pg_query.IndexElemH\x00R\tIndexElem\x12.\n" + + "\bdef_elem\x18Y \x01(\v2\x11.pg_query.DefElemH\x00R\aDefElem\x12@\n" + + "\x0elocking_clause\x18Z \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\x12S\n" + + "\x15single_partition_spec\x18` \x01(\v2\x1d.pg_query.SinglePartitionSpecH\x00R\x13SinglePartitionSpec\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\x12L\n" + + "\x12trigger_transition\x18r \x01(\v2\x1b.pg_query.TriggerTransitionH\x00R\x11TriggerTransition\x127\n" + + "\vjson_output\x18s \x01(\v2\x14.pg_query.JsonOutputH\x00R\n" + + "JsonOutput\x12=\n" + + "\rjson_argument\x18t \x01(\v2\x16.pg_query.JsonArgumentH\x00R\fJsonArgument\x12>\n" + + "\x0ejson_func_expr\x18u \x01(\v2\x16.pg_query.JsonFuncExprH\x00R\fJsonFuncExpr\x12N\n" + + "\x14json_table_path_spec\x18v \x01(\v2\x1b.pg_query.JsonTablePathSpecH\x00R\x11JsonTablePathSpec\x124\n" + + "\n" + + "json_table\x18w \x01(\v2\x13.pg_query.JsonTableH\x00R\tJsonTable\x12G\n" + + "\x11json_table_column\x18x \x01(\v2\x19.pg_query.JsonTableColumnH\x00R\x0fJsonTableColumn\x12>\n" + + "\x0ejson_key_value\x18y \x01(\v2\x16.pg_query.JsonKeyValueH\x00R\fJsonKeyValue\x12A\n" + + "\x0fjson_parse_expr\x18z \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} \x01(\v2\x1f.pg_query.JsonObjectConstructorH\x00R\x15JsonObjectConstructor\x12V\n" + + "\x16json_array_constructor\x18~ \x01(\v2\x1e.pg_query.JsonArrayConstructorH\x00R\x14JsonArrayConstructor\x12f\n" + + "\x1cjson_array_query_constructor\x18\x7f \x01(\v2#.pg_query.JsonArrayQueryConstructorH\x00R\x19JsonArrayQueryConstructor\x12Q\n" + + "\x14json_agg_constructor\x18\x80\x01 \x01(\v2\x1c.pg_query.JsonAggConstructorH\x00R\x12JsonAggConstructor\x12B\n" + + "\x0fjson_object_agg\x18\x81\x01 \x01(\v2\x17.pg_query.JsonObjectAggH\x00R\rJsonObjectAgg\x12?\n" + + "\x0ejson_array_agg\x18\x82\x01 \x01(\v2\x16.pg_query.JsonArrayAggH\x00R\fJsonArrayAgg\x12/\n" + + "\braw_stmt\x18\x83\x01 \x01(\v2\x11.pg_query.RawStmtH\x00R\aRawStmt\x128\n" + + "\vinsert_stmt\x18\x84\x01 \x01(\v2\x14.pg_query.InsertStmtH\x00R\n" + + "InsertStmt\x128\n" + + "\vdelete_stmt\x18\x85\x01 \x01(\v2\x14.pg_query.DeleteStmtH\x00R\n" + + "DeleteStmt\x128\n" + + "\vupdate_stmt\x18\x86\x01 \x01(\v2\x14.pg_query.UpdateStmtH\x00R\n" + + "UpdateStmt\x125\n" + + "\n" + + "merge_stmt\x18\x87\x01 \x01(\v2\x13.pg_query.MergeStmtH\x00R\tMergeStmt\x128\n" + + "\vselect_stmt\x18\x88\x01 \x01(\v2\x14.pg_query.SelectStmtH\x00R\n" + + "SelectStmt\x12K\n" + + "\x12set_operation_stmt\x18\x89\x01 \x01(\v2\x1a.pg_query.SetOperationStmtH\x00R\x10SetOperationStmt\x128\n" + + "\vreturn_stmt\x18\x8a\x01 \x01(\v2\x14.pg_query.ReturnStmtH\x00R\n" + + "ReturnStmt\x12>\n" + + "\rplassign_stmt\x18\x8b\x01 \x01(\v2\x16.pg_query.PLAssignStmtH\x00R\fPLAssignStmt\x12K\n" + + "\x12create_schema_stmt\x18\x8c\x01 \x01(\v2\x1a.pg_query.CreateSchemaStmtH\x00R\x10CreateSchemaStmt\x12E\n" + + "\x10alter_table_stmt\x18\x8d\x01 \x01(\v2\x18.pg_query.AlterTableStmtH\x00R\x0eAlterTableStmt\x12T\n" + + "\x15replica_identity_stmt\x18\x8e\x01 \x01(\v2\x1d.pg_query.ReplicaIdentityStmtH\x00R\x13ReplicaIdentityStmt\x12B\n" + + "\x0falter_table_cmd\x18\x8f\x01 \x01(\v2\x17.pg_query.AlterTableCmdH\x00R\rAlterTableCmd\x12Q\n" + + "\x14alter_collation_stmt\x18\x90\x01 \x01(\v2\x1c.pg_query.AlterCollationStmtH\x00R\x12AlterCollationStmt\x12H\n" + + "\x11alter_domain_stmt\x18\x91\x01 \x01(\v2\x19.pg_query.AlterDomainStmtH\x00R\x0fAlterDomainStmt\x125\n" + + "\n" + + "grant_stmt\x18\x92\x01 \x01(\v2\x13.pg_query.GrantStmtH\x00R\tGrantStmt\x12E\n" + + "\x10object_with_args\x18\x93\x01 \x01(\v2\x18.pg_query.ObjectWithArgsH\x00R\x0eObjectWithArgs\x128\n" + + "\vaccess_priv\x18\x94\x01 \x01(\v2\x14.pg_query.AccessPrivH\x00R\n" + + "AccessPriv\x12B\n" + + "\x0fgrant_role_stmt\x18\x95\x01 \x01(\v2\x17.pg_query.GrantRoleStmtH\x00R\rGrantRoleStmt\x12j\n" + + "\x1dalter_default_privileges_stmt\x18\x96\x01 \x01(\v2$.pg_query.AlterDefaultPrivilegesStmtH\x00R\x1aAlterDefaultPrivilegesStmt\x122\n" + + "\tcopy_stmt\x18\x97\x01 \x01(\v2\x12.pg_query.CopyStmtH\x00R\bCopyStmt\x12H\n" + + "\x11variable_set_stmt\x18\x98\x01 \x01(\v2\x19.pg_query.VariableSetStmtH\x00R\x0fVariableSetStmt\x12K\n" + + "\x12variable_show_stmt\x18\x99\x01 \x01(\v2\x1a.pg_query.VariableShowStmtH\x00R\x10VariableShowStmt\x128\n" + + "\vcreate_stmt\x18\x9a\x01 \x01(\v2\x14.pg_query.CreateStmtH\x00R\n" + + "CreateStmt\x127\n" + + "\n" + + "constraint\x18\x9b\x01 \x01(\v2\x14.pg_query.ConstraintH\x00R\n" + + "Constraint\x12X\n" + + "\x17create_table_space_stmt\x18\x9c\x01 \x01(\v2\x1e.pg_query.CreateTableSpaceStmtH\x00R\x14CreateTableSpaceStmt\x12R\n" + + "\x15drop_table_space_stmt\x18\x9d\x01 \x01(\v2\x1c.pg_query.DropTableSpaceStmtH\x00R\x12DropTableSpaceStmt\x12k\n" + + "\x1ealter_table_space_options_stmt\x18\x9e\x01 \x01(\v2$.pg_query.AlterTableSpaceOptionsStmtH\x00R\x1aAlterTableSpaceOptionsStmt\x12\\\n" + + "\x19alter_table_move_all_stmt\x18\x9f\x01 \x01(\v2\x1f.pg_query.AlterTableMoveAllStmtH\x00R\x15AlterTableMoveAllStmt\x12T\n" + + "\x15create_extension_stmt\x18\xa0\x01 \x01(\v2\x1d.pg_query.CreateExtensionStmtH\x00R\x13CreateExtensionStmt\x12Q\n" + + "\x14alter_extension_stmt\x18\xa1\x01 \x01(\v2\x1c.pg_query.AlterExtensionStmtH\x00R\x12AlterExtensionStmt\x12j\n" + + "\x1dalter_extension_contents_stmt\x18\xa2\x01 \x01(\v2$.pg_query.AlterExtensionContentsStmtH\x00R\x1aAlterExtensionContentsStmt\x12B\n" + + "\x0fcreate_fdw_stmt\x18\xa3\x01 \x01(\v2\x17.pg_query.CreateFdwStmtH\x00R\rCreateFdwStmt\x12?\n" + + "\x0ealter_fdw_stmt\x18\xa4\x01 \x01(\v2\x16.pg_query.AlterFdwStmtH\x00R\fAlterFdwStmt\x12a\n" + + "\x1acreate_foreign_server_stmt\x18\xa5\x01 \x01(\v2!.pg_query.CreateForeignServerStmtH\x00R\x17CreateForeignServerStmt\x12^\n" + + "\x19alter_foreign_server_stmt\x18\xa6\x01 \x01(\v2 .pg_query.AlterForeignServerStmtH\x00R\x16AlterForeignServerStmt\x12^\n" + + "\x19create_foreign_table_stmt\x18\xa7\x01 \x01(\v2 .pg_query.CreateForeignTableStmtH\x00R\x16CreateForeignTableStmt\x12[\n" + + "\x18create_user_mapping_stmt\x18\xa8\x01 \x01(\v2\x1f.pg_query.CreateUserMappingStmtH\x00R\x15CreateUserMappingStmt\x12X\n" + + "\x17alter_user_mapping_stmt\x18\xa9\x01 \x01(\v2\x1e.pg_query.AlterUserMappingStmtH\x00R\x14AlterUserMappingStmt\x12U\n" + + "\x16drop_user_mapping_stmt\x18\xaa\x01 \x01(\v2\x1d.pg_query.DropUserMappingStmtH\x00R\x13DropUserMappingStmt\x12a\n" + + "\x1aimport_foreign_schema_stmt\x18\xab\x01 \x01(\v2!.pg_query.ImportForeignSchemaStmtH\x00R\x17ImportForeignSchemaStmt\x12K\n" + + "\x12create_policy_stmt\x18\xac\x01 \x01(\v2\x1a.pg_query.CreatePolicyStmtH\x00R\x10CreatePolicyStmt\x12H\n" + + "\x11alter_policy_stmt\x18\xad\x01 \x01(\v2\x19.pg_query.AlterPolicyStmtH\x00R\x0fAlterPolicyStmt\x12?\n" + + "\x0ecreate_am_stmt\x18\xae\x01 \x01(\v2\x16.pg_query.CreateAmStmtH\x00R\fCreateAmStmt\x12E\n" + + "\x10create_trig_stmt\x18\xaf\x01 \x01(\v2\x18.pg_query.CreateTrigStmtH\x00R\x0eCreateTrigStmt\x12U\n" + + "\x16create_event_trig_stmt\x18\xb0\x01 \x01(\v2\x1d.pg_query.CreateEventTrigStmtH\x00R\x13CreateEventTrigStmt\x12R\n" + + "\x15alter_event_trig_stmt\x18\xb1\x01 \x01(\v2\x1c.pg_query.AlterEventTrigStmtH\x00R\x12AlterEventTrigStmt\x12H\n" + + "\x11create_plang_stmt\x18\xb2\x01 \x01(\v2\x19.pg_query.CreatePLangStmtH\x00R\x0fCreatePLangStmt\x12E\n" + + "\x10create_role_stmt\x18\xb3\x01 \x01(\v2\x18.pg_query.CreateRoleStmtH\x00R\x0eCreateRoleStmt\x12B\n" + + "\x0falter_role_stmt\x18\xb4\x01 \x01(\v2\x17.pg_query.AlterRoleStmtH\x00R\rAlterRoleStmt\x12L\n" + + "\x13alter_role_set_stmt\x18\xb5\x01 \x01(\v2\x1a.pg_query.AlterRoleSetStmtH\x00R\x10AlterRoleSetStmt\x12?\n" + + "\x0edrop_role_stmt\x18\xb6\x01 \x01(\v2\x16.pg_query.DropRoleStmtH\x00R\fDropRoleStmt\x12B\n" + + "\x0fcreate_seq_stmt\x18\xb7\x01 \x01(\v2\x17.pg_query.CreateSeqStmtH\x00R\rCreateSeqStmt\x12?\n" + + "\x0ealter_seq_stmt\x18\xb8\x01 \x01(\v2\x16.pg_query.AlterSeqStmtH\x00R\fAlterSeqStmt\x128\n" + + "\vdefine_stmt\x18\xb9\x01 \x01(\v2\x14.pg_query.DefineStmtH\x00R\n" + + "DefineStmt\x12K\n" + + "\x12create_domain_stmt\x18\xba\x01 \x01(\v2\x1a.pg_query.CreateDomainStmtH\x00R\x10CreateDomainStmt\x12O\n" + + "\x14create_op_class_stmt\x18\xbb\x01 \x01(\v2\x1b.pg_query.CreateOpClassStmtH\x00R\x11CreateOpClassStmt\x12O\n" + + "\x14create_op_class_item\x18\xbc\x01 \x01(\v2\x1b.pg_query.CreateOpClassItemH\x00R\x11CreateOpClassItem\x12R\n" + + "\x15create_op_family_stmt\x18\xbd\x01 \x01(\v2\x1c.pg_query.CreateOpFamilyStmtH\x00R\x12CreateOpFamilyStmt\x12O\n" + + "\x14alter_op_family_stmt\x18\xbe\x01 \x01(\v2\x1b.pg_query.AlterOpFamilyStmtH\x00R\x11AlterOpFamilyStmt\x122\n" + + "\tdrop_stmt\x18\xbf\x01 \x01(\v2\x12.pg_query.DropStmtH\x00R\bDropStmt\x12>\n" + + "\rtruncate_stmt\x18\xc0\x01 \x01(\v2\x16.pg_query.TruncateStmtH\x00R\fTruncateStmt\x12;\n" + + "\fcomment_stmt\x18\xc1\x01 \x01(\v2\x15.pg_query.CommentStmtH\x00R\vCommentStmt\x12?\n" + + "\x0esec_label_stmt\x18\xc2\x01 \x01(\v2\x16.pg_query.SecLabelStmtH\x00R\fSecLabelStmt\x12N\n" + + "\x13declare_cursor_stmt\x18\xc3\x01 \x01(\v2\x1b.pg_query.DeclareCursorStmtH\x00R\x11DeclareCursorStmt\x12H\n" + + "\x11close_portal_stmt\x18\xc4\x01 \x01(\v2\x19.pg_query.ClosePortalStmtH\x00R\x0fClosePortalStmt\x125\n" + + "\n" + + "fetch_stmt\x18\xc5\x01 \x01(\v2\x13.pg_query.FetchStmtH\x00R\tFetchStmt\x125\n" + + "\n" + + "index_stmt\x18\xc6\x01 \x01(\v2\x13.pg_query.IndexStmtH\x00R\tIndexStmt\x12H\n" + + "\x11create_stats_stmt\x18\xc7\x01 \x01(\v2\x19.pg_query.CreateStatsStmtH\x00R\x0fCreateStatsStmt\x125\n" + + "\n" + + "stats_elem\x18\xc8\x01 \x01(\v2\x13.pg_query.StatsElemH\x00R\tStatsElem\x12E\n" + + "\x10alter_stats_stmt\x18\xc9\x01 \x01(\v2\x18.pg_query.AlterStatsStmtH\x00R\x0eAlterStatsStmt\x12Q\n" + + "\x14create_function_stmt\x18\xca\x01 \x01(\v2\x1c.pg_query.CreateFunctionStmtH\x00R\x12CreateFunctionStmt\x12M\n" + + "\x12function_parameter\x18\xcb\x01 \x01(\v2\x1b.pg_query.FunctionParameterH\x00R\x11FunctionParameter\x12N\n" + + "\x13alter_function_stmt\x18\xcc\x01 \x01(\v2\x1b.pg_query.AlterFunctionStmtH\x00R\x11AlterFunctionStmt\x12,\n" + + "\ado_stmt\x18\xcd\x01 \x01(\v2\x10.pg_query.DoStmtH\x00R\x06DoStmt\x12H\n" + + "\x11inline_code_block\x18\xce\x01 \x01(\v2\x19.pg_query.InlineCodeBlockH\x00R\x0fInlineCodeBlock\x122\n" + + "\tcall_stmt\x18\xcf\x01 \x01(\v2\x12.pg_query.CallStmtH\x00R\bCallStmt\x12;\n" + + "\fcall_context\x18\xd0\x01 \x01(\v2\x15.pg_query.CallContextH\x00R\vCallContext\x128\n" + + "\vrename_stmt\x18\xd1\x01 \x01(\v2\x14.pg_query.RenameStmtH\x00R\n" + + "RenameStmt\x12^\n" + + "\x19alter_object_depends_stmt\x18\xd2\x01 \x01(\v2 .pg_query.AlterObjectDependsStmtH\x00R\x16AlterObjectDependsStmt\x12[\n" + + "\x18alter_object_schema_stmt\x18\xd3\x01 \x01(\v2\x1f.pg_query.AlterObjectSchemaStmtH\x00R\x15AlterObjectSchemaStmt\x12E\n" + + "\x10alter_owner_stmt\x18\xd4\x01 \x01(\v2\x18.pg_query.AlterOwnerStmtH\x00R\x0eAlterOwnerStmt\x12N\n" + + "\x13alter_operator_stmt\x18\xd5\x01 \x01(\v2\x1b.pg_query.AlterOperatorStmtH\x00R\x11AlterOperatorStmt\x12B\n" + + "\x0falter_type_stmt\x18\xd6\x01 \x01(\v2\x17.pg_query.AlterTypeStmtH\x00R\rAlterTypeStmt\x122\n" + + "\trule_stmt\x18\xd7\x01 \x01(\v2\x12.pg_query.RuleStmtH\x00R\bRuleStmt\x128\n" + + "\vnotify_stmt\x18\xd8\x01 \x01(\v2\x14.pg_query.NotifyStmtH\x00R\n" + + "NotifyStmt\x128\n" + + "\vlisten_stmt\x18\xd9\x01 \x01(\v2\x14.pg_query.ListenStmtH\x00R\n" + + "ListenStmt\x12>\n" + + "\runlisten_stmt\x18\xda\x01 \x01(\v2\x16.pg_query.UnlistenStmtH\x00R\fUnlistenStmt\x12G\n" + + "\x10transaction_stmt\x18\xdb\x01 \x01(\v2\x19.pg_query.TransactionStmtH\x00R\x0fTransactionStmt\x12N\n" + + "\x13composite_type_stmt\x18\xdc\x01 \x01(\v2\x1b.pg_query.CompositeTypeStmtH\x00R\x11CompositeTypeStmt\x12E\n" + + "\x10create_enum_stmt\x18\xdd\x01 \x01(\v2\x18.pg_query.CreateEnumStmtH\x00R\x0eCreateEnumStmt\x12H\n" + + "\x11create_range_stmt\x18\xde\x01 \x01(\v2\x19.pg_query.CreateRangeStmtH\x00R\x0fCreateRangeStmt\x12B\n" + + "\x0falter_enum_stmt\x18\xdf\x01 \x01(\v2\x17.pg_query.AlterEnumStmtH\x00R\rAlterEnumStmt\x122\n" + + "\tview_stmt\x18\xe0\x01 \x01(\v2\x12.pg_query.ViewStmtH\x00R\bViewStmt\x122\n" + + "\tload_stmt\x18\xe1\x01 \x01(\v2\x12.pg_query.LoadStmtH\x00R\bLoadStmt\x12>\n" + + "\rcreatedb_stmt\x18\xe2\x01 \x01(\v2\x16.pg_query.CreatedbStmtH\x00R\fCreatedbStmt\x12N\n" + + "\x13alter_database_stmt\x18\xe3\x01 \x01(\v2\x1b.pg_query.AlterDatabaseStmtH\x00R\x11AlterDatabaseStmt\x12q\n" + + " alter_database_refresh_coll_stmt\x18\xe4\x01 \x01(\v2&.pg_query.AlterDatabaseRefreshCollStmtH\x00R\x1cAlterDatabaseRefreshCollStmt\x12X\n" + + "\x17alter_database_set_stmt\x18\xe5\x01 \x01(\v2\x1e.pg_query.AlterDatabaseSetStmtH\x00R\x14AlterDatabaseSetStmt\x128\n" + + "\vdropdb_stmt\x18\xe6\x01 \x01(\v2\x14.pg_query.DropdbStmtH\x00R\n" + + "DropdbStmt\x12H\n" + + "\x11alter_system_stmt\x18\xe7\x01 \x01(\v2\x19.pg_query.AlterSystemStmtH\x00R\x0fAlterSystemStmt\x12;\n" + + "\fcluster_stmt\x18\xe8\x01 \x01(\v2\x15.pg_query.ClusterStmtH\x00R\vClusterStmt\x128\n" + + "\vvacuum_stmt\x18\xe9\x01 \x01(\v2\x14.pg_query.VacuumStmtH\x00R\n" + + "VacuumStmt\x12D\n" + + "\x0fvacuum_relation\x18\xea\x01 \x01(\v2\x18.pg_query.VacuumRelationH\x00R\x0eVacuumRelation\x12;\n" + + "\fexplain_stmt\x18\xeb\x01 \x01(\v2\x15.pg_query.ExplainStmtH\x00R\vExplainStmt\x12O\n" + + "\x14create_table_as_stmt\x18\xec\x01 \x01(\v2\x1b.pg_query.CreateTableAsStmtH\x00R\x11CreateTableAsStmt\x12R\n" + + "\x15refresh_mat_view_stmt\x18\xed\x01 \x01(\v2\x1c.pg_query.RefreshMatViewStmtH\x00R\x12RefreshMatViewStmt\x12E\n" + + "\x10check_point_stmt\x18\xee\x01 \x01(\v2\x18.pg_query.CheckPointStmtH\x00R\x0eCheckPointStmt\x12;\n" + + "\fdiscard_stmt\x18\xef\x01 \x01(\v2\x15.pg_query.DiscardStmtH\x00R\vDiscardStmt\x122\n" + + "\tlock_stmt\x18\xf0\x01 \x01(\v2\x12.pg_query.LockStmtH\x00R\bLockStmt\x12Q\n" + + "\x14constraints_set_stmt\x18\xf1\x01 \x01(\v2\x1c.pg_query.ConstraintsSetStmtH\x00R\x12ConstraintsSetStmt\x12;\n" + + "\freindex_stmt\x18\xf2\x01 \x01(\v2\x15.pg_query.ReindexStmtH\x00R\vReindexStmt\x12W\n" + + "\x16create_conversion_stmt\x18\xf3\x01 \x01(\v2\x1e.pg_query.CreateConversionStmtH\x00R\x14CreateConversionStmt\x12E\n" + + "\x10create_cast_stmt\x18\xf4\x01 \x01(\v2\x18.pg_query.CreateCastStmtH\x00R\x0eCreateCastStmt\x12T\n" + + "\x15create_transform_stmt\x18\xf5\x01 \x01(\v2\x1d.pg_query.CreateTransformStmtH\x00R\x13CreateTransformStmt\x12;\n" + + "\fprepare_stmt\x18\xf6\x01 \x01(\v2\x15.pg_query.PrepareStmtH\x00R\vPrepareStmt\x12;\n" + + "\fexecute_stmt\x18\xf7\x01 \x01(\v2\x15.pg_query.ExecuteStmtH\x00R\vExecuteStmt\x12D\n" + + "\x0fdeallocate_stmt\x18\xf8\x01 \x01(\v2\x18.pg_query.DeallocateStmtH\x00R\x0eDeallocateStmt\x12B\n" + + "\x0fdrop_owned_stmt\x18\xf9\x01 \x01(\v2\x17.pg_query.DropOwnedStmtH\x00R\rDropOwnedStmt\x12N\n" + + "\x13reassign_owned_stmt\x18\xfa\x01 \x01(\v2\x1b.pg_query.ReassignOwnedStmtH\x00R\x11ReassignOwnedStmt\x12Z\n" + + "\x17alter_tsdictionary_stmt\x18\xfb\x01 \x01(\v2\x1f.pg_query.AlterTSDictionaryStmtH\x00R\x15AlterTSDictionaryStmt\x12c\n" + + "\x1aalter_tsconfiguration_stmt\x18\xfc\x01 \x01(\v2\".pg_query.AlterTSConfigurationStmtH\x00R\x18AlterTSConfigurationStmt\x12J\n" + + "\x11publication_table\x18\xfd\x01 \x01(\v2\x1a.pg_query.PublicationTableH\x00R\x10PublicationTable\x12Q\n" + + "\x14publication_obj_spec\x18\xfe\x01 \x01(\v2\x1c.pg_query.PublicationObjSpecH\x00R\x12PublicationObjSpec\x12Z\n" + + "\x17create_publication_stmt\x18\xff\x01 \x01(\v2\x1f.pg_query.CreatePublicationStmtH\x00R\x15CreatePublicationStmt\x12W\n" + + "\x16alter_publication_stmt\x18\x80\x02 \x01(\v2\x1e.pg_query.AlterPublicationStmtH\x00R\x14AlterPublicationStmt\x12]\n" + + "\x18create_subscription_stmt\x18\x81\x02 \x01(\v2 .pg_query.CreateSubscriptionStmtH\x00R\x16CreateSubscriptionStmt\x12Z\n" + + "\x17alter_subscription_stmt\x18\x82\x02 \x01(\v2\x1f.pg_query.AlterSubscriptionStmtH\x00R\x15AlterSubscriptionStmt\x12W\n" + + "\x16drop_subscription_stmt\x18\x83\x02 \x01(\v2\x1e.pg_query.DropSubscriptionStmtH\x00R\x14DropSubscriptionStmt\x12.\n" + + "\ainteger\x18\x84\x02 \x01(\v2\x11.pg_query.IntegerH\x00R\aInteger\x12(\n" + + "\x05float\x18\x85\x02 \x01(\v2\x0f.pg_query.FloatH\x00R\x05Float\x12.\n" + + "\aboolean\x18\x86\x02 \x01(\v2\x11.pg_query.BooleanH\x00R\aBoolean\x12+\n" + + "\x06string\x18\x87\x02 \x01(\v2\x10.pg_query.StringH\x00R\x06String\x125\n" + + "\n" + + "bit_string\x18\x88\x02 \x01(\v2\x13.pg_query.BitStringH\x00R\tBitString\x12%\n" + + "\x04list\x18\x89\x02 \x01(\v2\x0e.pg_query.ListH\x00R\x04List\x12/\n" + + "\bint_list\x18\x8a\x02 \x01(\v2\x11.pg_query.IntListH\x00R\aIntList\x12/\n" + + "\boid_list\x18\x8b\x02 \x01(\v2\x11.pg_query.OidListH\x00R\aOidList\x12.\n" + + "\aa_const\x18\x8c\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\"\xdb\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\x0e.pg_query.NodeR\tviewQuery\x12\x1b\n" + + "\tskip_data\x18\b \x01(\bR\bskipData\"\x95\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\x12\x1a\n" + + "\blocation\x18\t \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\"\x83\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\x1a\n" + + "\blocation\x18\a \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\"\xba\x02\n" + + "\x0eRowCompareExpr\x12 \n" + + "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x120\n" + + "\x06rctype\x18\x02 \x01(\x0e2\x18.pg_query.RowCompareTypeR\x06rctype\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\"\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\"\xc6\x0f\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\x1b\n" + + "\tis_return\x18\x0f \x01(\bR\bisReturn\x12)\n" + + "\bcte_list\x18\x10 \x03(\v2\x0e.pg_query.NodeR\acteList\x12&\n" + + "\x06rtable\x18\x11 \x03(\v2\x0e.pg_query.NodeR\x06rtable\x122\n" + + "\frteperminfos\x18\x12 \x03(\v2\x0e.pg_query.NodeR\frteperminfos\x12.\n" + + "\bjointree\x18\x13 \x01(\v2\x12.pg_query.FromExprR\bjointree\x12:\n" + + "\x11merge_action_list\x18\x14 \x03(\v2\x0e.pg_query.NodeR\x0fmergeActionList\x122\n" + + "\x15merge_target_relation\x18\x15 \x01(\x05R\x13mergeTargetRelation\x12@\n" + + "\x14merge_join_condition\x18\x16 \x01(\v2\x0e.pg_query.NodeR\x12mergeJoinCondition\x12/\n" + + "\vtarget_list\x18\x17 \x03(\v2\x0e.pg_query.NodeR\n" + + "targetList\x124\n" + + "\boverride\x18\x18 \x01(\x0e2\x18.pg_query.OverridingKindR\boverride\x129\n" + + "\von_conflict\x18\x19 \x01(\v2\x18.pg_query.OnConflictExprR\n" + + "onConflict\x125\n" + + "\x0ereturning_list\x18\x1a \x03(\v2\x0e.pg_query.NodeR\rreturningList\x121\n" + + "\fgroup_clause\x18\x1b \x03(\v2\x0e.pg_query.NodeR\vgroupClause\x12%\n" + + "\x0egroup_distinct\x18\x1c \x01(\bR\rgroupDistinct\x123\n" + + "\rgrouping_sets\x18\x1d \x03(\v2\x0e.pg_query.NodeR\fgroupingSets\x12/\n" + + "\vhaving_qual\x18\x1e \x01(\v2\x0e.pg_query.NodeR\n" + + "havingQual\x123\n" + + "\rwindow_clause\x18\x1f \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\"\xbf\x01\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\x1a\n" + + "\blocation\x18\x05 \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\"U\n" + + "\vA_ArrayExpr\x12*\n" + + "\belements\x18\x01 \x03(\v2\x0e.pg_query.NodeR\belements\x12\x1a\n" + + "\blocation\x18\x02 \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\"\x15\n" + + "\x13SinglePartitionSpec\"\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\"\xb9\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\x18\n" + + "\alateral\x18\x1e \x01(\bR\alateral\x12\x1c\n" + + "\n" + + "in_from_cl\x18\x1f \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\"\xa8\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" + + "\vnulls_first\x18\x04 \x01(\bR\vnulls_first\x12\x1a\n" + + "\bhashable\x18\x05 \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\"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\"\xff\x02\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\x125\n" + + "\x0ereturning_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\rreturningList\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\"\x90\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\x125\n" + + "\x0ereturning_list\x18\x04 \x03(\v2\x0e.pg_query.NodeR\rreturningList\x125\n" + + "\vwith_clause\x18\x05 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\"\xbf\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\x125\n" + + "\x0ereturning_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\rreturningList\x125\n" + + "\vwith_clause\x18\x06 \x01(\v2\x14.pg_query.WithClauseR\n" + + "withClause\"\xd7\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\x125\n" + + "\x0ereturning_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\rreturningList\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\"O\n" + + "\x13ReplicaIdentityStmt\x12$\n" + + "\ridentity_type\x18\x01 \x01(\tR\ridentity_type\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"\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\"@\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\"\x94\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\x1a\n" + + "\bis_local\x18\x04 \x01(\bR\bis_local\"&\n" + + "\x10VariableShowStmt\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\xcb\x04\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\x12(\n" + + "\aoptions\x18\b \x03(\v2\x0e.pg_query.NodeR\aoptions\x124\n" + + "\boncommit\x18\t \x01(\x0e2\x18.pg_query.OnCommitActionR\boncommit\x12&\n" + + "\x0etablespacename\x18\n" + + " \x01(\tR\x0etablespacename\x12#\n" + + "\raccess_method\x18\v \x01(\tR\faccessMethod\x12$\n" + + "\rif_not_exists\x18\f \x01(\bR\rif_not_exists\"\xfa\t\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" + + "\x0fskip_validation\x18\x05 \x01(\bR\x0fskip_validation\x12(\n" + + "\x0finitially_valid\x18\x06 \x01(\bR\x0finitially_valid\x12$\n" + + "\ris_no_inherit\x18\a \x01(\bR\ris_no_inherit\x12*\n" + + "\braw_expr\x18\b \x01(\v2\x0e.pg_query.NodeR\braw_expr\x12 \n" + + "\vcooked_expr\x18\t \x01(\tR\vcooked_expr\x12&\n" + + "\x0egenerated_when\x18\n" + + " \x01(\tR\x0egenerated_when\x12\x1a\n" + + "\binhcount\x18\v \x01(\x05R\binhcount\x12.\n" + + "\x12nulls_not_distinct\x18\f \x01(\bR\x12nulls_not_distinct\x12\"\n" + + "\x04keys\x18\r \x03(\v2\x0e.pg_query.NodeR\x04keys\x12,\n" + + "\tincluding\x18\x0e \x03(\v2\x0e.pg_query.NodeR\tincluding\x12.\n" + + "\n" + + "exclusions\x18\x0f \x03(\v2\x0e.pg_query.NodeR\n" + + "exclusions\x12(\n" + + "\aoptions\x18\x10 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\x1c\n" + + "\tindexname\x18\x11 \x01(\tR\tindexname\x12\x1e\n" + + "\n" + + "indexspace\x18\x12 \x01(\tR\n" + + "indexspace\x122\n" + + "\x14reset_default_tblspc\x18\x13 \x01(\bR\x14reset_default_tblspc\x12$\n" + + "\raccess_method\x18\x14 \x01(\tR\raccess_method\x122\n" + + "\fwhere_clause\x18\x15 \x01(\v2\x0e.pg_query.NodeR\fwhere_clause\x12,\n" + + "\apktable\x18\x16 \x01(\v2\x12.pg_query.RangeVarR\apktable\x12*\n" + + "\bfk_attrs\x18\x17 \x03(\v2\x0e.pg_query.NodeR\bfk_attrs\x12*\n" + + "\bpk_attrs\x18\x18 \x03(\v2\x0e.pg_query.NodeR\bpk_attrs\x12\"\n" + + "\ffk_matchtype\x18\x19 \x01(\tR\ffk_matchtype\x12$\n" + + "\rfk_upd_action\x18\x1a \x01(\tR\rfk_upd_action\x12$\n" + + "\rfk_del_action\x18\x1b \x01(\tR\rfk_del_action\x128\n" + + "\x0ffk_del_set_cols\x18\x1c \x03(\v2\x0e.pg_query.NodeR\x0ffk_del_set_cols\x124\n" + + "\rold_conpfeqop\x18\x1d \x03(\v2\x0e.pg_query.NodeR\rold_conpfeqop\x12(\n" + + "\x0fold_pktable_oid\x18\x1e \x01(\rR\x0fold_pktable_oid\x12\x1a\n" + + "\blocation\x18\x1f \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\"\xdc\a\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\x1e\n" + + "\n" + + "deferrable\x18\x13 \x01(\bR\n" + + "deferrable\x12\"\n" + + "\finitdeferred\x18\x14 \x01(\bR\finitdeferred\x12 \n" + + "\vtransformed\x18\x15 \x01(\bR\vtransformed\x12\x1e\n" + + "\n" + + "concurrent\x18\x16 \x01(\bR\n" + + "concurrent\x12$\n" + + "\rif_not_exists\x18\x17 \x01(\bR\rif_not_exists\x122\n" + + "\x14reset_default_tblspc\x18\x18 \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\"\xb5\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\"\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*\xbd\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*\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*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*\x8c\f\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\x13\n" + + "\x0fAT_CheckNotNull\x10\t\x12\x14\n" + + "\x10AT_SetStatistics\x10\n" + + "\x12\x11\n" + + "\rAT_SetOptions\x10\v\x12\x13\n" + + "\x0fAT_ResetOptions\x10\f\x12\x11\n" + + "\rAT_SetStorage\x10\r\x12\x15\n" + + "\x11AT_SetCompression\x10\x0e\x12\x11\n" + + "\rAT_DropColumn\x10\x0f\x12\x0f\n" + + "\vAT_AddIndex\x10\x10\x12\x11\n" + + "\rAT_ReAddIndex\x10\x11\x12\x14\n" + + "\x10AT_AddConstraint\x10\x12\x12\x16\n" + + "\x12AT_ReAddConstraint\x10\x13\x12\x1c\n" + + "\x18AT_ReAddDomainConstraint\x10\x14\x12\x16\n" + + "\x12AT_AlterConstraint\x10\x15\x12\x19\n" + + "\x15AT_ValidateConstraint\x10\x16\x12\x19\n" + + "\x15AT_AddIndexConstraint\x10\x17\x12\x15\n" + + "\x11AT_DropConstraint\x10\x18\x12\x13\n" + + "\x0fAT_ReAddComment\x10\x19\x12\x16\n" + + "\x12AT_AlterColumnType\x10\x1a\x12 \n" + + "\x1cAT_AlterColumnGenericOptions\x10\x1b\x12\x12\n" + + "\x0eAT_ChangeOwner\x10\x1c\x12\x10\n" + + "\fAT_ClusterOn\x10\x1d\x12\x12\n" + + "\x0eAT_DropCluster\x10\x1e\x12\x10\n" + + "\fAT_SetLogged\x10\x1f\x12\x12\n" + + "\x0eAT_SetUnLogged\x10 \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\x100\x12\x18\n" + + "\x14AT_EnableReplicaRule\x101\x12\x12\n" + + "\x0eAT_DisableRule\x102\x12\x11\n" + + "\rAT_AddInherit\x103\x12\x12\n" + + "\x0eAT_DropInherit\x104\x12\f\n" + + "\bAT_AddOf\x105\x12\r\n" + + "\tAT_DropOf\x106\x12\x16\n" + + "\x12AT_ReplicaIdentity\x107\x12\x18\n" + + "\x14AT_EnableRowSecurity\x108\x12\x19\n" + + "\x15AT_DisableRowSecurity\x109\x12\x17\n" + + "\x13AT_ForceRowSecurity\x10:\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\x10A\x12\x13\n" + + "\x0fAT_DropIdentity\x10B\x12\x16\n" + + "\x12AT_ReAddStatistics\x10C*\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*\xdf\x02\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*\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*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*\xa2\x01\n" + + "\x0eRowCompareType\x12\x1e\n" + + "\x1aROW_COMPARE_TYPE_UNDEFINED\x10\x00\x12\x11\n" + + "\rROWCOMPARE_LT\x10\x01\x12\x11\n" + + "\rROWCOMPARE_LE\x10\x02\x12\x11\n" + + "\rROWCOMPARE_EQ\x10\x03\x12\x11\n" + + "\rROWCOMPARE_GE\x10\x04\x12\x11\n" + + "\rROWCOMPARE_GT\x10\x05\x12\x11\n" + + "\rROWCOMPARE_NE\x10\x06*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*\xc2\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_ANTI\x10\a\x12\x15\n" + + "\x11JOIN_UNIQUE_OUTER\x10\b\x12\x15\n" + + "\x11JOIN_UNIQUE_INNER\x10\t*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*}\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*\xe8;\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\v\n" + + "\x06ENUM_P\x10\x95\x03\x12\f\n" + + "\aERROR_P\x10\x96\x03\x12\v\n" + + "\x06ESCAPE\x10\x97\x03\x12\n" + + "\n" + + "\x05EVENT\x10\x98\x03\x12\v\n" + + "\x06EXCEPT\x10\x99\x03\x12\f\n" + + "\aEXCLUDE\x10\x9a\x03\x12\x0e\n" + + "\tEXCLUDING\x10\x9b\x03\x12\x0e\n" + + "\tEXCLUSIVE\x10\x9c\x03\x12\f\n" + + "\aEXECUTE\x10\x9d\x03\x12\v\n" + + "\x06EXISTS\x10\x9e\x03\x12\f\n" + + "\aEXPLAIN\x10\x9f\x03\x12\x0f\n" + + "\n" + + "EXPRESSION\x10\xa0\x03\x12\x0e\n" + + "\tEXTENSION\x10\xa1\x03\x12\r\n" + + "\bEXTERNAL\x10\xa2\x03\x12\f\n" + + "\aEXTRACT\x10\xa3\x03\x12\f\n" + + "\aFALSE_P\x10\xa4\x03\x12\v\n" + + "\x06FAMILY\x10\xa5\x03\x12\n" + + "\n" + + "\x05FETCH\x10\xa6\x03\x12\v\n" + + "\x06FILTER\x10\xa7\x03\x12\r\n" + + "\bFINALIZE\x10\xa8\x03\x12\f\n" + + "\aFIRST_P\x10\xa9\x03\x12\f\n" + + "\aFLOAT_P\x10\xaa\x03\x12\x0e\n" + + "\tFOLLOWING\x10\xab\x03\x12\b\n" + + "\x03FOR\x10\xac\x03\x12\n" + + "\n" + + "\x05FORCE\x10\xad\x03\x12\f\n" + + "\aFOREIGN\x10\xae\x03\x12\v\n" + + "\x06FORMAT\x10\xaf\x03\x12\f\n" + + "\aFORWARD\x10\xb0\x03\x12\v\n" + + "\x06FREEZE\x10\xb1\x03\x12\t\n" + + "\x04FROM\x10\xb2\x03\x12\t\n" + + "\x04FULL\x10\xb3\x03\x12\r\n" + + "\bFUNCTION\x10\xb4\x03\x12\x0e\n" + + "\tFUNCTIONS\x10\xb5\x03\x12\x0e\n" + + "\tGENERATED\x10\xb6\x03\x12\v\n" + + "\x06GLOBAL\x10\xb7\x03\x12\n" + + "\n" + + "\x05GRANT\x10\xb8\x03\x12\f\n" + + "\aGRANTED\x10\xb9\x03\x12\r\n" + + "\bGREATEST\x10\xba\x03\x12\f\n" + + "\aGROUP_P\x10\xbb\x03\x12\r\n" + + "\bGROUPING\x10\xbc\x03\x12\v\n" + + "\x06GROUPS\x10\xbd\x03\x12\f\n" + + "\aHANDLER\x10\xbe\x03\x12\v\n" + + "\x06HAVING\x10\xbf\x03\x12\r\n" + + "\bHEADER_P\x10\xc0\x03\x12\t\n" + + "\x04HOLD\x10\xc1\x03\x12\v\n" + + "\x06HOUR_P\x10\xc2\x03\x12\x0f\n" + + "\n" + + "IDENTITY_P\x10\xc3\x03\x12\t\n" + + "\x04IF_P\x10\xc4\x03\x12\n" + + "\n" + + "\x05ILIKE\x10\xc5\x03\x12\x0e\n" + + "\tIMMEDIATE\x10\xc6\x03\x12\x0e\n" + + "\tIMMUTABLE\x10\xc7\x03\x12\x0f\n" + + "\n" + + "IMPLICIT_P\x10\xc8\x03\x12\r\n" + + "\bIMPORT_P\x10\xc9\x03\x12\t\n" + + "\x04IN_P\x10\xca\x03\x12\f\n" + + "\aINCLUDE\x10\xcb\x03\x12\x0e\n" + + "\tINCLUDING\x10\xcc\x03\x12\x0e\n" + + "\tINCREMENT\x10\xcd\x03\x12\v\n" + + "\x06INDENT\x10\xce\x03\x12\n" + + "\n" + + "\x05INDEX\x10\xcf\x03\x12\f\n" + + "\aINDEXES\x10\xd0\x03\x12\f\n" + + "\aINHERIT\x10\xd1\x03\x12\r\n" + + "\bINHERITS\x10\xd2\x03\x12\x0e\n" + + "\tINITIALLY\x10\xd3\x03\x12\r\n" + + "\bINLINE_P\x10\xd4\x03\x12\f\n" + + "\aINNER_P\x10\xd5\x03\x12\n" + + "\n" + + "\x05INOUT\x10\xd6\x03\x12\f\n" + + "\aINPUT_P\x10\xd7\x03\x12\x10\n" + + "\vINSENSITIVE\x10\xd8\x03\x12\v\n" + + "\x06INSERT\x10\xd9\x03\x12\f\n" + + "\aINSTEAD\x10\xda\x03\x12\n" + + "\n" + + "\x05INT_P\x10\xdb\x03\x12\f\n" + + "\aINTEGER\x10\xdc\x03\x12\x0e\n" + + "\tINTERSECT\x10\xdd\x03\x12\r\n" + + "\bINTERVAL\x10\xde\x03\x12\t\n" + + "\x04INTO\x10\xdf\x03\x12\f\n" + + "\aINVOKER\x10\xe0\x03\x12\a\n" + + "\x02IS\x10\xe1\x03\x12\v\n" + + "\x06ISNULL\x10\xe2\x03\x12\x0e\n" + + "\tISOLATION\x10\xe3\x03\x12\t\n" + + "\x04JOIN\x10\xe4\x03\x12\t\n" + + "\x04JSON\x10\xe5\x03\x12\x0f\n" + + "\n" + + "JSON_ARRAY\x10\xe6\x03\x12\x12\n" + + "\rJSON_ARRAYAGG\x10\xe7\x03\x12\x10\n" + + "\vJSON_EXISTS\x10\xe8\x03\x12\x10\n" + + "\vJSON_OBJECT\x10\xe9\x03\x12\x13\n" + + "\x0eJSON_OBJECTAGG\x10\xea\x03\x12\x0f\n" + + "\n" + + "JSON_QUERY\x10\xeb\x03\x12\x10\n" + + "\vJSON_SCALAR\x10\xec\x03\x12\x13\n" + + "\x0eJSON_SERIALIZE\x10\xed\x03\x12\x0f\n" + + "\n" + + "JSON_TABLE\x10\xee\x03\x12\x0f\n" + + "\n" + + "JSON_VALUE\x10\xef\x03\x12\t\n" + + "\x04KEEP\x10\xf0\x03\x12\b\n" + + "\x03KEY\x10\xf1\x03\x12\t\n" + + "\x04KEYS\x10\xf2\x03\x12\n" + + "\n" + + "\x05LABEL\x10\xf3\x03\x12\r\n" + + "\bLANGUAGE\x10\xf4\x03\x12\f\n" + + "\aLARGE_P\x10\xf5\x03\x12\v\n" + + "\x06LAST_P\x10\xf6\x03\x12\x0e\n" + + "\tLATERAL_P\x10\xf7\x03\x12\f\n" + + "\aLEADING\x10\xf8\x03\x12\x0e\n" + + "\tLEAKPROOF\x10\xf9\x03\x12\n" + + "\n" + + "\x05LEAST\x10\xfa\x03\x12\t\n" + + "\x04LEFT\x10\xfb\x03\x12\n" + + "\n" + + "\x05LEVEL\x10\xfc\x03\x12\t\n" + + "\x04LIKE\x10\xfd\x03\x12\n" + + "\n" + + "\x05LIMIT\x10\xfe\x03\x12\v\n" + + "\x06LISTEN\x10\xff\x03\x12\t\n" + + "\x04LOAD\x10\x80\x04\x12\n" + + "\n" + + "\x05LOCAL\x10\x81\x04\x12\x0e\n" + + "\tLOCALTIME\x10\x82\x04\x12\x13\n" + + "\x0eLOCALTIMESTAMP\x10\x83\x04\x12\r\n" + + "\bLOCATION\x10\x84\x04\x12\v\n" + + "\x06LOCK_P\x10\x85\x04\x12\v\n" + + "\x06LOCKED\x10\x86\x04\x12\v\n" + + "\x06LOGGED\x10\x87\x04\x12\f\n" + + "\aMAPPING\x10\x88\x04\x12\n" + + "\n" + + "\x05MATCH\x10\x89\x04\x12\f\n" + + "\aMATCHED\x10\x8a\x04\x12\x11\n" + + "\fMATERIALIZED\x10\x8b\x04\x12\r\n" + + "\bMAXVALUE\x10\x8c\x04\x12\n" + + "\n" + + "\x05MERGE\x10\x8d\x04\x12\x11\n" + + "\fMERGE_ACTION\x10\x8e\x04\x12\v\n" + + "\x06METHOD\x10\x8f\x04\x12\r\n" + + "\bMINUTE_P\x10\x90\x04\x12\r\n" + + "\bMINVALUE\x10\x91\x04\x12\t\n" + + "\x04MODE\x10\x92\x04\x12\f\n" + + "\aMONTH_P\x10\x93\x04\x12\t\n" + + "\x04MOVE\x10\x94\x04\x12\v\n" + + "\x06NAME_P\x10\x95\x04\x12\n" + + "\n" + + "\x05NAMES\x10\x96\x04\x12\r\n" + + "\bNATIONAL\x10\x97\x04\x12\f\n" + + "\aNATURAL\x10\x98\x04\x12\n" + + "\n" + + "\x05NCHAR\x10\x99\x04\x12\v\n" + + "\x06NESTED\x10\x9a\x04\x12\b\n" + + "\x03NEW\x10\x9b\x04\x12\t\n" + + "\x04NEXT\x10\x9c\x04\x12\b\n" + + "\x03NFC\x10\x9d\x04\x12\b\n" + + "\x03NFD\x10\x9e\x04\x12\t\n" + + "\x04NFKC\x10\x9f\x04\x12\t\n" + + "\x04NFKD\x10\xa0\x04\x12\a\n" + + "\x02NO\x10\xa1\x04\x12\t\n" + + "\x04NONE\x10\xa2\x04\x12\x0e\n" + + "\tNORMALIZE\x10\xa3\x04\x12\x0f\n" + + "\n" + + "NORMALIZED\x10\xa4\x04\x12\b\n" + + "\x03NOT\x10\xa5\x04\x12\f\n" + + "\aNOTHING\x10\xa6\x04\x12\v\n" + + "\x06NOTIFY\x10\xa7\x04\x12\f\n" + + "\aNOTNULL\x10\xa8\x04\x12\v\n" + + "\x06NOWAIT\x10\xa9\x04\x12\v\n" + + "\x06NULL_P\x10\xaa\x04\x12\v\n" + + "\x06NULLIF\x10\xab\x04\x12\f\n" + + "\aNULLS_P\x10\xac\x04\x12\f\n" + + "\aNUMERIC\x10\xad\x04\x12\r\n" + + "\bOBJECT_P\x10\xae\x04\x12\a\n" + + "\x02OF\x10\xaf\x04\x12\b\n" + + "\x03OFF\x10\xb0\x04\x12\v\n" + + "\x06OFFSET\x10\xb1\x04\x12\t\n" + + "\x04OIDS\x10\xb2\x04\x12\b\n" + + "\x03OLD\x10\xb3\x04\x12\t\n" + + "\x04OMIT\x10\xb4\x04\x12\a\n" + + "\x02ON\x10\xb5\x04\x12\t\n" + + "\x04ONLY\x10\xb6\x04\x12\r\n" + + "\bOPERATOR\x10\xb7\x04\x12\v\n" + + "\x06OPTION\x10\xb8\x04\x12\f\n" + + "\aOPTIONS\x10\xb9\x04\x12\a\n" + + "\x02OR\x10\xba\x04\x12\n" + + "\n" + + "\x05ORDER\x10\xbb\x04\x12\x0f\n" + + "\n" + + "ORDINALITY\x10\xbc\x04\x12\v\n" + + "\x06OTHERS\x10\xbd\x04\x12\n" + + "\n" + + "\x05OUT_P\x10\xbe\x04\x12\f\n" + + "\aOUTER_P\x10\xbf\x04\x12\t\n" + + "\x04OVER\x10\xc0\x04\x12\r\n" + + "\bOVERLAPS\x10\xc1\x04\x12\f\n" + + "\aOVERLAY\x10\xc2\x04\x12\x0f\n" + + "\n" + + "OVERRIDING\x10\xc3\x04\x12\n" + + "\n" + + "\x05OWNED\x10\xc4\x04\x12\n" + + "\n" + + "\x05OWNER\x10\xc5\x04\x12\r\n" + + "\bPARALLEL\x10\xc6\x04\x12\x0e\n" + + "\tPARAMETER\x10\xc7\x04\x12\v\n" + + "\x06PARSER\x10\xc8\x04\x12\f\n" + + "\aPARTIAL\x10\xc9\x04\x12\x0e\n" + + "\tPARTITION\x10\xca\x04\x12\f\n" + + "\aPASSING\x10\xcb\x04\x12\r\n" + + "\bPASSWORD\x10\xcc\x04\x12\t\n" + + "\x04PATH\x10\xcd\x04\x12\f\n" + + "\aPLACING\x10\xce\x04\x12\t\n" + + "\x04PLAN\x10\xcf\x04\x12\n" + + "\n" + + "\x05PLANS\x10\xd0\x04\x12\v\n" + + "\x06POLICY\x10\xd1\x04\x12\r\n" + + "\bPOSITION\x10\xd2\x04\x12\x0e\n" + + "\tPRECEDING\x10\xd3\x04\x12\x0e\n" + + "\tPRECISION\x10\xd4\x04\x12\r\n" + + "\bPRESERVE\x10\xd5\x04\x12\f\n" + + "\aPREPARE\x10\xd6\x04\x12\r\n" + + "\bPREPARED\x10\xd7\x04\x12\f\n" + + "\aPRIMARY\x10\xd8\x04\x12\n" + + "\n" + + "\x05PRIOR\x10\xd9\x04\x12\x0f\n" + + "\n" + + "PRIVILEGES\x10\xda\x04\x12\x0f\n" + + "\n" + + "PROCEDURAL\x10\xdb\x04\x12\x0e\n" + + "\tPROCEDURE\x10\xdc\x04\x12\x0f\n" + + "\n" + + "PROCEDURES\x10\xdd\x04\x12\f\n" + + "\aPROGRAM\x10\xde\x04\x12\x10\n" + + "\vPUBLICATION\x10\xdf\x04\x12\n" + + "\n" + + "\x05QUOTE\x10\xe0\x04\x12\v\n" + + "\x06QUOTES\x10\xe1\x04\x12\n" + + "\n" + + "\x05RANGE\x10\xe2\x04\x12\t\n" + + "\x04READ\x10\xe3\x04\x12\t\n" + + "\x04REAL\x10\xe4\x04\x12\r\n" + + "\bREASSIGN\x10\xe5\x04\x12\f\n" + + "\aRECHECK\x10\xe6\x04\x12\x0e\n" + + "\tRECURSIVE\x10\xe7\x04\x12\n" + + "\n" + + "\x05REF_P\x10\xe8\x04\x12\x0f\n" + + "\n" + + "REFERENCES\x10\xe9\x04\x12\x10\n" + + "\vREFERENCING\x10\xea\x04\x12\f\n" + + "\aREFRESH\x10\xeb\x04\x12\f\n" + + "\aREINDEX\x10\xec\x04\x12\x0f\n" + + "\n" + + "RELATIVE_P\x10\xed\x04\x12\f\n" + + "\aRELEASE\x10\xee\x04\x12\v\n" + + "\x06RENAME\x10\xef\x04\x12\x0f\n" + + "\n" + + "REPEATABLE\x10\xf0\x04\x12\f\n" + + "\aREPLACE\x10\xf1\x04\x12\f\n" + + "\aREPLICA\x10\xf2\x04\x12\n" + + "\n" + + "\x05RESET\x10\xf3\x04\x12\f\n" + + "\aRESTART\x10\xf4\x04\x12\r\n" + + "\bRESTRICT\x10\xf5\x04\x12\v\n" + + "\x06RETURN\x10\xf6\x04\x12\x0e\n" + + "\tRETURNING\x10\xf7\x04\x12\f\n" + + "\aRETURNS\x10\xf8\x04\x12\v\n" + + "\x06REVOKE\x10\xf9\x04\x12\n" + + "\n" + + "\x05RIGHT\x10\xfa\x04\x12\t\n" + + "\x04ROLE\x10\xfb\x04\x12\r\n" + + "\bROLLBACK\x10\xfc\x04\x12\v\n" + + "\x06ROLLUP\x10\xfd\x04\x12\f\n" + + "\aROUTINE\x10\xfe\x04\x12\r\n" + + "\bROUTINES\x10\xff\x04\x12\b\n" + + "\x03ROW\x10\x80\x05\x12\t\n" + + "\x04ROWS\x10\x81\x05\x12\t\n" + + "\x04RULE\x10\x82\x05\x12\x0e\n" + + "\tSAVEPOINT\x10\x83\x05\x12\v\n" + + "\x06SCALAR\x10\x84\x05\x12\v\n" + + "\x06SCHEMA\x10\x85\x05\x12\f\n" + + "\aSCHEMAS\x10\x86\x05\x12\v\n" + + "\x06SCROLL\x10\x87\x05\x12\v\n" + + "\x06SEARCH\x10\x88\x05\x12\r\n" + + "\bSECOND_P\x10\x89\x05\x12\r\n" + + "\bSECURITY\x10\x8a\x05\x12\v\n" + + "\x06SELECT\x10\x8b\x05\x12\r\n" + + "\bSEQUENCE\x10\x8c\x05\x12\x0e\n" + + "\tSEQUENCES\x10\x8d\x05\x12\x11\n" + + "\fSERIALIZABLE\x10\x8e\x05\x12\v\n" + + "\x06SERVER\x10\x8f\x05\x12\f\n" + + "\aSESSION\x10\x90\x05\x12\x11\n" + + "\fSESSION_USER\x10\x91\x05\x12\b\n" + + "\x03SET\x10\x92\x05\x12\t\n" + + "\x04SETS\x10\x93\x05\x12\n" + + "\n" + + "\x05SETOF\x10\x94\x05\x12\n" + + "\n" + + "\x05SHARE\x10\x95\x05\x12\t\n" + + "\x04SHOW\x10\x96\x05\x12\f\n" + + "\aSIMILAR\x10\x97\x05\x12\v\n" + + "\x06SIMPLE\x10\x98\x05\x12\t\n" + + "\x04SKIP\x10\x99\x05\x12\r\n" + + "\bSMALLINT\x10\x9a\x05\x12\r\n" + + "\bSNAPSHOT\x10\x9b\x05\x12\t\n" + + "\x04SOME\x10\x9c\x05\x12\v\n" + + "\x06SOURCE\x10\x9d\x05\x12\n" + + "\n" + + "\x05SQL_P\x10\x9e\x05\x12\v\n" + + "\x06STABLE\x10\x9f\x05\x12\x11\n" + + "\fSTANDALONE_P\x10\xa0\x05\x12\n" + + "\n" + + "\x05START\x10\xa1\x05\x12\x0e\n" + + "\tSTATEMENT\x10\xa2\x05\x12\x0f\n" + + "\n" + + "STATISTICS\x10\xa3\x05\x12\n" + + "\n" + + "\x05STDIN\x10\xa4\x05\x12\v\n" + + "\x06STDOUT\x10\xa5\x05\x12\f\n" + + "\aSTORAGE\x10\xa6\x05\x12\v\n" + + "\x06STORED\x10\xa7\x05\x12\r\n" + + "\bSTRICT_P\x10\xa8\x05\x12\r\n" + + "\bSTRING_P\x10\xa9\x05\x12\f\n" + + "\aSTRIP_P\x10\xaa\x05\x12\x11\n" + + "\fSUBSCRIPTION\x10\xab\x05\x12\x0e\n" + + "\tSUBSTRING\x10\xac\x05\x12\f\n" + + "\aSUPPORT\x10\xad\x05\x12\x0e\n" + + "\tSYMMETRIC\x10\xae\x05\x12\n" + + "\n" + + "\x05SYSID\x10\xaf\x05\x12\r\n" + + "\bSYSTEM_P\x10\xb0\x05\x12\x10\n" + + "\vSYSTEM_USER\x10\xb1\x05\x12\n" + + "\n" + + "\x05TABLE\x10\xb2\x05\x12\v\n" + + "\x06TABLES\x10\xb3\x05\x12\x10\n" + + "\vTABLESAMPLE\x10\xb4\x05\x12\x0f\n" + + "\n" + + "TABLESPACE\x10\xb5\x05\x12\v\n" + + "\x06TARGET\x10\xb6\x05\x12\t\n" + + "\x04TEMP\x10\xb7\x05\x12\r\n" + + "\bTEMPLATE\x10\xb8\x05\x12\x0e\n" + + "\tTEMPORARY\x10\xb9\x05\x12\v\n" + + "\x06TEXT_P\x10\xba\x05\x12\t\n" + + "\x04THEN\x10\xbb\x05\x12\t\n" + + "\x04TIES\x10\xbc\x05\x12\t\n" + + "\x04TIME\x10\xbd\x05\x12\x0e\n" + + "\tTIMESTAMP\x10\xbe\x05\x12\a\n" + + "\x02TO\x10\xbf\x05\x12\r\n" + + "\bTRAILING\x10\xc0\x05\x12\x10\n" + + "\vTRANSACTION\x10\xc1\x05\x12\x0e\n" + + "\tTRANSFORM\x10\xc2\x05\x12\n" + + "\n" + + "\x05TREAT\x10\xc3\x05\x12\f\n" + + "\aTRIGGER\x10\xc4\x05\x12\t\n" + + "\x04TRIM\x10\xc5\x05\x12\v\n" + + "\x06TRUE_P\x10\xc6\x05\x12\r\n" + + "\bTRUNCATE\x10\xc7\x05\x12\f\n" + + "\aTRUSTED\x10\xc8\x05\x12\v\n" + + "\x06TYPE_P\x10\xc9\x05\x12\f\n" + + "\aTYPES_P\x10\xca\x05\x12\f\n" + + "\aUESCAPE\x10\xcb\x05\x12\x0e\n" + + "\tUNBOUNDED\x10\xcc\x05\x12\x12\n" + + "\rUNCONDITIONAL\x10\xcd\x05\x12\x10\n" + + "\vUNCOMMITTED\x10\xce\x05\x12\x10\n" + + "\vUNENCRYPTED\x10\xcf\x05\x12\n" + + "\n" + + "\x05UNION\x10\xd0\x05\x12\v\n" + + "\x06UNIQUE\x10\xd1\x05\x12\f\n" + + "\aUNKNOWN\x10\xd2\x05\x12\r\n" + + "\bUNLISTEN\x10\xd3\x05\x12\r\n" + + "\bUNLOGGED\x10\xd4\x05\x12\n" + + "\n" + + "\x05UNTIL\x10\xd5\x05\x12\v\n" + + "\x06UPDATE\x10\xd6\x05\x12\t\n" + + "\x04USER\x10\xd7\x05\x12\n" + + "\n" + + "\x05USING\x10\xd8\x05\x12\v\n" + + "\x06VACUUM\x10\xd9\x05\x12\n" + + "\n" + + "\x05VALID\x10\xda\x05\x12\r\n" + + "\bVALIDATE\x10\xdb\x05\x12\x0e\n" + + "\tVALIDATOR\x10\xdc\x05\x12\f\n" + + "\aVALUE_P\x10\xdd\x05\x12\v\n" + + "\x06VALUES\x10\xde\x05\x12\f\n" + + "\aVARCHAR\x10\xdf\x05\x12\r\n" + + "\bVARIADIC\x10\xe0\x05\x12\f\n" + + "\aVARYING\x10\xe1\x05\x12\f\n" + + "\aVERBOSE\x10\xe2\x05\x12\x0e\n" + + "\tVERSION_P\x10\xe3\x05\x12\t\n" + + "\x04VIEW\x10\xe4\x05\x12\n" + + "\n" + + "\x05VIEWS\x10\xe5\x05\x12\r\n" + + "\bVOLATILE\x10\xe6\x05\x12\t\n" + + "\x04WHEN\x10\xe7\x05\x12\n" + + "\n" + + "\x05WHERE\x10\xe8\x05\x12\x11\n" + + "\fWHITESPACE_P\x10\xe9\x05\x12\v\n" + + "\x06WINDOW\x10\xea\x05\x12\t\n" + + "\x04WITH\x10\xeb\x05\x12\v\n" + + "\x06WITHIN\x10\xec\x05\x12\f\n" + + "\aWITHOUT\x10\xed\x05\x12\t\n" + + "\x04WORK\x10\xee\x05\x12\f\n" + + "\aWRAPPER\x10\xef\x05\x12\n" + + "\n" + + "\x05WRITE\x10\xf0\x05\x12\n" + + "\n" + + "\x05XML_P\x10\xf1\x05\x12\x12\n" + + "\rXMLATTRIBUTES\x10\xf2\x05\x12\x0e\n" + + "\tXMLCONCAT\x10\xf3\x05\x12\x0f\n" + + "\n" + + "XMLELEMENT\x10\xf4\x05\x12\x0e\n" + + "\tXMLEXISTS\x10\xf5\x05\x12\x0e\n" + + "\tXMLFOREST\x10\xf6\x05\x12\x12\n" + + "\rXMLNAMESPACES\x10\xf7\x05\x12\r\n" + + "\bXMLPARSE\x10\xf8\x05\x12\n" + + "\n" + + "\x05XMLPI\x10\xf9\x05\x12\f\n" + + "\aXMLROOT\x10\xfa\x05\x12\x11\n" + + "\fXMLSERIALIZE\x10\xfb\x05\x12\r\n" + + "\bXMLTABLE\x10\xfc\x05\x12\v\n" + + "\x06YEAR_P\x10\xfd\x05\x12\n" + + "\n" + + "\x05YES_P\x10\xfe\x05\x12\t\n" + + "\x04ZONE\x10\xff\x05\x12\x0e\n" + + "\tFORMAT_LA\x10\x80\x06\x12\v\n" + + "\x06NOT_LA\x10\x81\x06\x12\r\n" + + "\bNULLS_LA\x10\x82\x06\x12\f\n" + + "\aWITH_LA\x10\x83\x06\x12\x0f\n" + + "\n" + + "WITHOUT_LA\x10\x84\x06\x12\x13\n" + + "\x0eMODE_TYPE_NAME\x10\x85\x06\x12\x16\n" + + "\x11MODE_PLPGSQL_EXPR\x10\x86\x06\x12\x19\n" + + "\x14MODE_PLPGSQL_ASSIGN1\x10\x87\x06\x12\x19\n" + + "\x14MODE_PLPGSQL_ASSIGN2\x10\x88\x06\x12\x19\n" + + "\x14MODE_PLPGSQL_ASSIGN3\x10\x89\x06\x12\v\n" + + "\x06UMINUS\x10\x8a\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, 72) +var file_pg_query_proto_msgTypes = make([]protoimpl.MessageInfo, 277) +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 + (JsonQuotes)(0), // 14: pg_query.JsonQuotes + (JsonTableColumnType)(0), // 15: pg_query.JsonTableColumnType + (SetOperation)(0), // 16: pg_query.SetOperation + (ObjectType)(0), // 17: pg_query.ObjectType + (DropBehavior)(0), // 18: pg_query.DropBehavior + (AlterTableType)(0), // 19: pg_query.AlterTableType + (GrantTargetType)(0), // 20: pg_query.GrantTargetType + (VariableSetKind)(0), // 21: pg_query.VariableSetKind + (ConstrType)(0), // 22: pg_query.ConstrType + (ImportForeignSchemaType)(0), // 23: pg_query.ImportForeignSchemaType + (RoleStmtType)(0), // 24: pg_query.RoleStmtType + (FetchDirection)(0), // 25: pg_query.FetchDirection + (FunctionParameterMode)(0), // 26: pg_query.FunctionParameterMode + (TransactionStmtKind)(0), // 27: pg_query.TransactionStmtKind + (ViewCheckOption)(0), // 28: pg_query.ViewCheckOption + (DiscardMode)(0), // 29: pg_query.DiscardMode + (ReindexObjectType)(0), // 30: pg_query.ReindexObjectType + (AlterTSConfigType)(0), // 31: pg_query.AlterTSConfigType + (PublicationObjSpecType)(0), // 32: pg_query.PublicationObjSpecType + (AlterPublicationAction)(0), // 33: pg_query.AlterPublicationAction + (AlterSubscriptionType)(0), // 34: pg_query.AlterSubscriptionType + (OverridingKind)(0), // 35: pg_query.OverridingKind + (OnCommitAction)(0), // 36: pg_query.OnCommitAction + (TableFuncType)(0), // 37: pg_query.TableFuncType + (ParamKind)(0), // 38: pg_query.ParamKind + (CoercionContext)(0), // 39: pg_query.CoercionContext + (CoercionForm)(0), // 40: pg_query.CoercionForm + (BoolExprType)(0), // 41: pg_query.BoolExprType + (SubLinkType)(0), // 42: pg_query.SubLinkType + (RowCompareType)(0), // 43: pg_query.RowCompareType + (MinMaxOp)(0), // 44: pg_query.MinMaxOp + (SQLValueFunctionOp)(0), // 45: pg_query.SQLValueFunctionOp + (XmlExprOp)(0), // 46: pg_query.XmlExprOp + (XmlOptionType)(0), // 47: pg_query.XmlOptionType + (JsonEncoding)(0), // 48: pg_query.JsonEncoding + (JsonFormatType)(0), // 49: pg_query.JsonFormatType + (JsonConstructorType)(0), // 50: pg_query.JsonConstructorType + (JsonValueType)(0), // 51: pg_query.JsonValueType + (JsonWrapper)(0), // 52: pg_query.JsonWrapper + (JsonBehaviorType)(0), // 53: pg_query.JsonBehaviorType + (JsonExprOp)(0), // 54: pg_query.JsonExprOp + (NullTestType)(0), // 55: pg_query.NullTestType + (BoolTestType)(0), // 56: pg_query.BoolTestType + (MergeMatchKind)(0), // 57: pg_query.MergeMatchKind + (CmdType)(0), // 58: pg_query.CmdType + (JoinType)(0), // 59: pg_query.JoinType + (AggStrategy)(0), // 60: pg_query.AggStrategy + (AggSplit)(0), // 61: pg_query.AggSplit + (SetOpCmd)(0), // 62: pg_query.SetOpCmd + (SetOpStrategy)(0), // 63: pg_query.SetOpStrategy + (OnConflictAction)(0), // 64: pg_query.OnConflictAction + (LimitOption)(0), // 65: pg_query.LimitOption + (LockClauseStrength)(0), // 66: pg_query.LockClauseStrength + (LockWaitPolicy)(0), // 67: pg_query.LockWaitPolicy + (LockTupleMode)(0), // 68: pg_query.LockTupleMode + (KeywordKind)(0), // 69: pg_query.KeywordKind + (Token)(0), // 70: pg_query.Token + (SummaryResult_Context)(0), // 71: pg_query.SummaryResult.Context + (*ParseResult)(nil), // 72: pg_query.ParseResult + (*ScanResult)(nil), // 73: pg_query.ScanResult + (*Node)(nil), // 74: pg_query.Node + (*Integer)(nil), // 75: pg_query.Integer + (*Float)(nil), // 76: pg_query.Float + (*Boolean)(nil), // 77: pg_query.Boolean + (*String)(nil), // 78: pg_query.String + (*BitString)(nil), // 79: pg_query.BitString + (*List)(nil), // 80: pg_query.List + (*OidList)(nil), // 81: pg_query.OidList + (*IntList)(nil), // 82: pg_query.IntList + (*A_Const)(nil), // 83: pg_query.A_Const + (*Alias)(nil), // 84: pg_query.Alias + (*RangeVar)(nil), // 85: pg_query.RangeVar + (*TableFunc)(nil), // 86: pg_query.TableFunc + (*IntoClause)(nil), // 87: pg_query.IntoClause + (*Var)(nil), // 88: pg_query.Var + (*Param)(nil), // 89: pg_query.Param + (*Aggref)(nil), // 90: pg_query.Aggref + (*GroupingFunc)(nil), // 91: pg_query.GroupingFunc + (*WindowFunc)(nil), // 92: pg_query.WindowFunc + (*WindowFuncRunCondition)(nil), // 93: pg_query.WindowFuncRunCondition + (*MergeSupportFunc)(nil), // 94: pg_query.MergeSupportFunc + (*SubscriptingRef)(nil), // 95: pg_query.SubscriptingRef + (*FuncExpr)(nil), // 96: pg_query.FuncExpr + (*NamedArgExpr)(nil), // 97: pg_query.NamedArgExpr + (*OpExpr)(nil), // 98: pg_query.OpExpr + (*DistinctExpr)(nil), // 99: pg_query.DistinctExpr + (*NullIfExpr)(nil), // 100: pg_query.NullIfExpr + (*ScalarArrayOpExpr)(nil), // 101: pg_query.ScalarArrayOpExpr + (*BoolExpr)(nil), // 102: pg_query.BoolExpr + (*SubLink)(nil), // 103: pg_query.SubLink + (*SubPlan)(nil), // 104: pg_query.SubPlan + (*AlternativeSubPlan)(nil), // 105: pg_query.AlternativeSubPlan + (*FieldSelect)(nil), // 106: pg_query.FieldSelect + (*FieldStore)(nil), // 107: pg_query.FieldStore + (*RelabelType)(nil), // 108: pg_query.RelabelType + (*CoerceViaIO)(nil), // 109: pg_query.CoerceViaIO + (*ArrayCoerceExpr)(nil), // 110: pg_query.ArrayCoerceExpr + (*ConvertRowtypeExpr)(nil), // 111: pg_query.ConvertRowtypeExpr + (*CollateExpr)(nil), // 112: pg_query.CollateExpr + (*CaseExpr)(nil), // 113: pg_query.CaseExpr + (*CaseWhen)(nil), // 114: pg_query.CaseWhen + (*CaseTestExpr)(nil), // 115: pg_query.CaseTestExpr + (*ArrayExpr)(nil), // 116: pg_query.ArrayExpr + (*RowExpr)(nil), // 117: pg_query.RowExpr + (*RowCompareExpr)(nil), // 118: pg_query.RowCompareExpr + (*CoalesceExpr)(nil), // 119: pg_query.CoalesceExpr + (*MinMaxExpr)(nil), // 120: pg_query.MinMaxExpr + (*SQLValueFunction)(nil), // 121: pg_query.SQLValueFunction + (*XmlExpr)(nil), // 122: pg_query.XmlExpr + (*JsonFormat)(nil), // 123: pg_query.JsonFormat + (*JsonReturning)(nil), // 124: pg_query.JsonReturning + (*JsonValueExpr)(nil), // 125: pg_query.JsonValueExpr + (*JsonConstructorExpr)(nil), // 126: pg_query.JsonConstructorExpr + (*JsonIsPredicate)(nil), // 127: pg_query.JsonIsPredicate + (*JsonBehavior)(nil), // 128: pg_query.JsonBehavior + (*JsonExpr)(nil), // 129: pg_query.JsonExpr + (*JsonTablePath)(nil), // 130: pg_query.JsonTablePath + (*JsonTablePathScan)(nil), // 131: pg_query.JsonTablePathScan + (*JsonTableSiblingJoin)(nil), // 132: pg_query.JsonTableSiblingJoin + (*NullTest)(nil), // 133: pg_query.NullTest + (*BooleanTest)(nil), // 134: pg_query.BooleanTest + (*MergeAction)(nil), // 135: pg_query.MergeAction + (*CoerceToDomain)(nil), // 136: pg_query.CoerceToDomain + (*CoerceToDomainValue)(nil), // 137: pg_query.CoerceToDomainValue + (*SetToDefault)(nil), // 138: pg_query.SetToDefault + (*CurrentOfExpr)(nil), // 139: pg_query.CurrentOfExpr + (*NextValueExpr)(nil), // 140: pg_query.NextValueExpr + (*InferenceElem)(nil), // 141: pg_query.InferenceElem + (*TargetEntry)(nil), // 142: pg_query.TargetEntry + (*RangeTblRef)(nil), // 143: pg_query.RangeTblRef + (*JoinExpr)(nil), // 144: pg_query.JoinExpr + (*FromExpr)(nil), // 145: pg_query.FromExpr + (*OnConflictExpr)(nil), // 146: pg_query.OnConflictExpr + (*Query)(nil), // 147: pg_query.Query + (*TypeName)(nil), // 148: pg_query.TypeName + (*ColumnRef)(nil), // 149: pg_query.ColumnRef + (*ParamRef)(nil), // 150: pg_query.ParamRef + (*A_Expr)(nil), // 151: pg_query.A_Expr + (*TypeCast)(nil), // 152: pg_query.TypeCast + (*CollateClause)(nil), // 153: pg_query.CollateClause + (*RoleSpec)(nil), // 154: pg_query.RoleSpec + (*FuncCall)(nil), // 155: pg_query.FuncCall + (*A_Star)(nil), // 156: pg_query.A_Star + (*A_Indices)(nil), // 157: pg_query.A_Indices + (*A_Indirection)(nil), // 158: pg_query.A_Indirection + (*A_ArrayExpr)(nil), // 159: pg_query.A_ArrayExpr + (*ResTarget)(nil), // 160: pg_query.ResTarget + (*MultiAssignRef)(nil), // 161: pg_query.MultiAssignRef + (*SortBy)(nil), // 162: pg_query.SortBy + (*WindowDef)(nil), // 163: pg_query.WindowDef + (*RangeSubselect)(nil), // 164: pg_query.RangeSubselect + (*RangeFunction)(nil), // 165: pg_query.RangeFunction + (*RangeTableFunc)(nil), // 166: pg_query.RangeTableFunc + (*RangeTableFuncCol)(nil), // 167: pg_query.RangeTableFuncCol + (*RangeTableSample)(nil), // 168: pg_query.RangeTableSample + (*ColumnDef)(nil), // 169: pg_query.ColumnDef + (*TableLikeClause)(nil), // 170: pg_query.TableLikeClause + (*IndexElem)(nil), // 171: pg_query.IndexElem + (*DefElem)(nil), // 172: pg_query.DefElem + (*LockingClause)(nil), // 173: pg_query.LockingClause + (*XmlSerialize)(nil), // 174: pg_query.XmlSerialize + (*PartitionElem)(nil), // 175: pg_query.PartitionElem + (*PartitionSpec)(nil), // 176: pg_query.PartitionSpec + (*PartitionBoundSpec)(nil), // 177: pg_query.PartitionBoundSpec + (*PartitionRangeDatum)(nil), // 178: pg_query.PartitionRangeDatum + (*SinglePartitionSpec)(nil), // 179: pg_query.SinglePartitionSpec + (*PartitionCmd)(nil), // 180: pg_query.PartitionCmd + (*RangeTblEntry)(nil), // 181: pg_query.RangeTblEntry + (*RTEPermissionInfo)(nil), // 182: pg_query.RTEPermissionInfo + (*RangeTblFunction)(nil), // 183: pg_query.RangeTblFunction + (*TableSampleClause)(nil), // 184: pg_query.TableSampleClause + (*WithCheckOption)(nil), // 185: pg_query.WithCheckOption + (*SortGroupClause)(nil), // 186: pg_query.SortGroupClause + (*GroupingSet)(nil), // 187: pg_query.GroupingSet + (*WindowClause)(nil), // 188: pg_query.WindowClause + (*RowMarkClause)(nil), // 189: pg_query.RowMarkClause + (*WithClause)(nil), // 190: pg_query.WithClause + (*InferClause)(nil), // 191: pg_query.InferClause + (*OnConflictClause)(nil), // 192: pg_query.OnConflictClause + (*CTESearchClause)(nil), // 193: pg_query.CTESearchClause + (*CTECycleClause)(nil), // 194: pg_query.CTECycleClause + (*CommonTableExpr)(nil), // 195: pg_query.CommonTableExpr + (*MergeWhenClause)(nil), // 196: pg_query.MergeWhenClause + (*TriggerTransition)(nil), // 197: pg_query.TriggerTransition + (*JsonOutput)(nil), // 198: pg_query.JsonOutput + (*JsonArgument)(nil), // 199: pg_query.JsonArgument + (*JsonFuncExpr)(nil), // 200: pg_query.JsonFuncExpr + (*JsonTablePathSpec)(nil), // 201: pg_query.JsonTablePathSpec + (*JsonTable)(nil), // 202: pg_query.JsonTable + (*JsonTableColumn)(nil), // 203: pg_query.JsonTableColumn + (*JsonKeyValue)(nil), // 204: pg_query.JsonKeyValue + (*JsonParseExpr)(nil), // 205: pg_query.JsonParseExpr + (*JsonScalarExpr)(nil), // 206: pg_query.JsonScalarExpr + (*JsonSerializeExpr)(nil), // 207: pg_query.JsonSerializeExpr + (*JsonObjectConstructor)(nil), // 208: pg_query.JsonObjectConstructor + (*JsonArrayConstructor)(nil), // 209: pg_query.JsonArrayConstructor + (*JsonArrayQueryConstructor)(nil), // 210: pg_query.JsonArrayQueryConstructor + (*JsonAggConstructor)(nil), // 211: pg_query.JsonAggConstructor + (*JsonObjectAgg)(nil), // 212: pg_query.JsonObjectAgg + (*JsonArrayAgg)(nil), // 213: pg_query.JsonArrayAgg + (*RawStmt)(nil), // 214: pg_query.RawStmt + (*InsertStmt)(nil), // 215: pg_query.InsertStmt + (*DeleteStmt)(nil), // 216: pg_query.DeleteStmt + (*UpdateStmt)(nil), // 217: pg_query.UpdateStmt + (*MergeStmt)(nil), // 218: pg_query.MergeStmt + (*SelectStmt)(nil), // 219: pg_query.SelectStmt + (*SetOperationStmt)(nil), // 220: pg_query.SetOperationStmt + (*ReturnStmt)(nil), // 221: pg_query.ReturnStmt + (*PLAssignStmt)(nil), // 222: pg_query.PLAssignStmt + (*CreateSchemaStmt)(nil), // 223: pg_query.CreateSchemaStmt + (*AlterTableStmt)(nil), // 224: pg_query.AlterTableStmt + (*ReplicaIdentityStmt)(nil), // 225: pg_query.ReplicaIdentityStmt + (*AlterTableCmd)(nil), // 226: pg_query.AlterTableCmd + (*AlterCollationStmt)(nil), // 227: pg_query.AlterCollationStmt + (*AlterDomainStmt)(nil), // 228: pg_query.AlterDomainStmt + (*GrantStmt)(nil), // 229: pg_query.GrantStmt + (*ObjectWithArgs)(nil), // 230: pg_query.ObjectWithArgs + (*AccessPriv)(nil), // 231: pg_query.AccessPriv + (*GrantRoleStmt)(nil), // 232: pg_query.GrantRoleStmt + (*AlterDefaultPrivilegesStmt)(nil), // 233: pg_query.AlterDefaultPrivilegesStmt + (*CopyStmt)(nil), // 234: pg_query.CopyStmt + (*VariableSetStmt)(nil), // 235: pg_query.VariableSetStmt + (*VariableShowStmt)(nil), // 236: pg_query.VariableShowStmt + (*CreateStmt)(nil), // 237: pg_query.CreateStmt + (*Constraint)(nil), // 238: pg_query.Constraint + (*CreateTableSpaceStmt)(nil), // 239: pg_query.CreateTableSpaceStmt + (*DropTableSpaceStmt)(nil), // 240: pg_query.DropTableSpaceStmt + (*AlterTableSpaceOptionsStmt)(nil), // 241: pg_query.AlterTableSpaceOptionsStmt + (*AlterTableMoveAllStmt)(nil), // 242: pg_query.AlterTableMoveAllStmt + (*CreateExtensionStmt)(nil), // 243: pg_query.CreateExtensionStmt + (*AlterExtensionStmt)(nil), // 244: pg_query.AlterExtensionStmt + (*AlterExtensionContentsStmt)(nil), // 245: pg_query.AlterExtensionContentsStmt + (*CreateFdwStmt)(nil), // 246: pg_query.CreateFdwStmt + (*AlterFdwStmt)(nil), // 247: pg_query.AlterFdwStmt + (*CreateForeignServerStmt)(nil), // 248: pg_query.CreateForeignServerStmt + (*AlterForeignServerStmt)(nil), // 249: pg_query.AlterForeignServerStmt + (*CreateForeignTableStmt)(nil), // 250: pg_query.CreateForeignTableStmt + (*CreateUserMappingStmt)(nil), // 251: pg_query.CreateUserMappingStmt + (*AlterUserMappingStmt)(nil), // 252: pg_query.AlterUserMappingStmt + (*DropUserMappingStmt)(nil), // 253: pg_query.DropUserMappingStmt + (*ImportForeignSchemaStmt)(nil), // 254: pg_query.ImportForeignSchemaStmt + (*CreatePolicyStmt)(nil), // 255: pg_query.CreatePolicyStmt + (*AlterPolicyStmt)(nil), // 256: pg_query.AlterPolicyStmt + (*CreateAmStmt)(nil), // 257: pg_query.CreateAmStmt + (*CreateTrigStmt)(nil), // 258: pg_query.CreateTrigStmt + (*CreateEventTrigStmt)(nil), // 259: pg_query.CreateEventTrigStmt + (*AlterEventTrigStmt)(nil), // 260: pg_query.AlterEventTrigStmt + (*CreatePLangStmt)(nil), // 261: pg_query.CreatePLangStmt + (*CreateRoleStmt)(nil), // 262: pg_query.CreateRoleStmt + (*AlterRoleStmt)(nil), // 263: pg_query.AlterRoleStmt + (*AlterRoleSetStmt)(nil), // 264: pg_query.AlterRoleSetStmt + (*DropRoleStmt)(nil), // 265: pg_query.DropRoleStmt + (*CreateSeqStmt)(nil), // 266: pg_query.CreateSeqStmt + (*AlterSeqStmt)(nil), // 267: pg_query.AlterSeqStmt + (*DefineStmt)(nil), // 268: pg_query.DefineStmt + (*CreateDomainStmt)(nil), // 269: pg_query.CreateDomainStmt + (*CreateOpClassStmt)(nil), // 270: pg_query.CreateOpClassStmt + (*CreateOpClassItem)(nil), // 271: pg_query.CreateOpClassItem + (*CreateOpFamilyStmt)(nil), // 272: pg_query.CreateOpFamilyStmt + (*AlterOpFamilyStmt)(nil), // 273: pg_query.AlterOpFamilyStmt + (*DropStmt)(nil), // 274: pg_query.DropStmt + (*TruncateStmt)(nil), // 275: pg_query.TruncateStmt + (*CommentStmt)(nil), // 276: pg_query.CommentStmt + (*SecLabelStmt)(nil), // 277: pg_query.SecLabelStmt + (*DeclareCursorStmt)(nil), // 278: pg_query.DeclareCursorStmt + (*ClosePortalStmt)(nil), // 279: pg_query.ClosePortalStmt + (*FetchStmt)(nil), // 280: pg_query.FetchStmt + (*IndexStmt)(nil), // 281: pg_query.IndexStmt + (*CreateStatsStmt)(nil), // 282: pg_query.CreateStatsStmt + (*StatsElem)(nil), // 283: pg_query.StatsElem + (*AlterStatsStmt)(nil), // 284: pg_query.AlterStatsStmt + (*CreateFunctionStmt)(nil), // 285: pg_query.CreateFunctionStmt + (*FunctionParameter)(nil), // 286: pg_query.FunctionParameter + (*AlterFunctionStmt)(nil), // 287: pg_query.AlterFunctionStmt + (*DoStmt)(nil), // 288: pg_query.DoStmt + (*InlineCodeBlock)(nil), // 289: pg_query.InlineCodeBlock + (*CallStmt)(nil), // 290: pg_query.CallStmt + (*CallContext)(nil), // 291: pg_query.CallContext + (*RenameStmt)(nil), // 292: pg_query.RenameStmt + (*AlterObjectDependsStmt)(nil), // 293: pg_query.AlterObjectDependsStmt + (*AlterObjectSchemaStmt)(nil), // 294: pg_query.AlterObjectSchemaStmt + (*AlterOwnerStmt)(nil), // 295: pg_query.AlterOwnerStmt + (*AlterOperatorStmt)(nil), // 296: pg_query.AlterOperatorStmt + (*AlterTypeStmt)(nil), // 297: pg_query.AlterTypeStmt + (*RuleStmt)(nil), // 298: pg_query.RuleStmt + (*NotifyStmt)(nil), // 299: pg_query.NotifyStmt + (*ListenStmt)(nil), // 300: pg_query.ListenStmt + (*UnlistenStmt)(nil), // 301: pg_query.UnlistenStmt + (*TransactionStmt)(nil), // 302: pg_query.TransactionStmt + (*CompositeTypeStmt)(nil), // 303: pg_query.CompositeTypeStmt + (*CreateEnumStmt)(nil), // 304: pg_query.CreateEnumStmt + (*CreateRangeStmt)(nil), // 305: pg_query.CreateRangeStmt + (*AlterEnumStmt)(nil), // 306: pg_query.AlterEnumStmt + (*ViewStmt)(nil), // 307: pg_query.ViewStmt + (*LoadStmt)(nil), // 308: pg_query.LoadStmt + (*CreatedbStmt)(nil), // 309: pg_query.CreatedbStmt + (*AlterDatabaseStmt)(nil), // 310: pg_query.AlterDatabaseStmt + (*AlterDatabaseRefreshCollStmt)(nil), // 311: pg_query.AlterDatabaseRefreshCollStmt + (*AlterDatabaseSetStmt)(nil), // 312: pg_query.AlterDatabaseSetStmt + (*DropdbStmt)(nil), // 313: pg_query.DropdbStmt + (*AlterSystemStmt)(nil), // 314: pg_query.AlterSystemStmt + (*ClusterStmt)(nil), // 315: pg_query.ClusterStmt + (*VacuumStmt)(nil), // 316: pg_query.VacuumStmt + (*VacuumRelation)(nil), // 317: pg_query.VacuumRelation + (*ExplainStmt)(nil), // 318: pg_query.ExplainStmt + (*CreateTableAsStmt)(nil), // 319: pg_query.CreateTableAsStmt + (*RefreshMatViewStmt)(nil), // 320: pg_query.RefreshMatViewStmt + (*CheckPointStmt)(nil), // 321: pg_query.CheckPointStmt + (*DiscardStmt)(nil), // 322: pg_query.DiscardStmt + (*LockStmt)(nil), // 323: pg_query.LockStmt + (*ConstraintsSetStmt)(nil), // 324: pg_query.ConstraintsSetStmt + (*ReindexStmt)(nil), // 325: pg_query.ReindexStmt + (*CreateConversionStmt)(nil), // 326: pg_query.CreateConversionStmt + (*CreateCastStmt)(nil), // 327: pg_query.CreateCastStmt + (*CreateTransformStmt)(nil), // 328: pg_query.CreateTransformStmt + (*PrepareStmt)(nil), // 329: pg_query.PrepareStmt + (*ExecuteStmt)(nil), // 330: pg_query.ExecuteStmt + (*DeallocateStmt)(nil), // 331: pg_query.DeallocateStmt + (*DropOwnedStmt)(nil), // 332: pg_query.DropOwnedStmt + (*ReassignOwnedStmt)(nil), // 333: pg_query.ReassignOwnedStmt + (*AlterTSDictionaryStmt)(nil), // 334: pg_query.AlterTSDictionaryStmt + (*AlterTSConfigurationStmt)(nil), // 335: pg_query.AlterTSConfigurationStmt + (*PublicationTable)(nil), // 336: pg_query.PublicationTable + (*PublicationObjSpec)(nil), // 337: pg_query.PublicationObjSpec + (*CreatePublicationStmt)(nil), // 338: pg_query.CreatePublicationStmt + (*AlterPublicationStmt)(nil), // 339: pg_query.AlterPublicationStmt + (*CreateSubscriptionStmt)(nil), // 340: pg_query.CreateSubscriptionStmt + (*AlterSubscriptionStmt)(nil), // 341: pg_query.AlterSubscriptionStmt + (*DropSubscriptionStmt)(nil), // 342: pg_query.DropSubscriptionStmt + (*ScanToken)(nil), // 343: pg_query.ScanToken + (*SummaryResult)(nil), // 344: pg_query.SummaryResult + (*SummaryResult_Table)(nil), // 345: pg_query.SummaryResult.Table + nil, // 346: pg_query.SummaryResult.AliasesEntry + (*SummaryResult_Function)(nil), // 347: pg_query.SummaryResult.Function + (*SummaryResult_FilterColumn)(nil), // 348: pg_query.SummaryResult.FilterColumn +} +var file_pg_query_proto_depIdxs = []int32{ + 214, // 0: pg_query.ParseResult.stmts:type_name -> pg_query.RawStmt + 343, // 1: pg_query.ScanResult.tokens:type_name -> pg_query.ScanToken + 84, // 2: pg_query.Node.alias:type_name -> pg_query.Alias + 85, // 3: pg_query.Node.range_var:type_name -> pg_query.RangeVar + 86, // 4: pg_query.Node.table_func:type_name -> pg_query.TableFunc + 87, // 5: pg_query.Node.into_clause:type_name -> pg_query.IntoClause + 88, // 6: pg_query.Node.var:type_name -> pg_query.Var + 89, // 7: pg_query.Node.param:type_name -> pg_query.Param + 90, // 8: pg_query.Node.aggref:type_name -> pg_query.Aggref + 91, // 9: pg_query.Node.grouping_func:type_name -> pg_query.GroupingFunc + 92, // 10: pg_query.Node.window_func:type_name -> pg_query.WindowFunc + 93, // 11: pg_query.Node.window_func_run_condition:type_name -> pg_query.WindowFuncRunCondition + 94, // 12: pg_query.Node.merge_support_func:type_name -> pg_query.MergeSupportFunc + 95, // 13: pg_query.Node.subscripting_ref:type_name -> pg_query.SubscriptingRef + 96, // 14: pg_query.Node.func_expr:type_name -> pg_query.FuncExpr + 97, // 15: pg_query.Node.named_arg_expr:type_name -> pg_query.NamedArgExpr + 98, // 16: pg_query.Node.op_expr:type_name -> pg_query.OpExpr + 99, // 17: pg_query.Node.distinct_expr:type_name -> pg_query.DistinctExpr + 100, // 18: pg_query.Node.null_if_expr:type_name -> pg_query.NullIfExpr + 101, // 19: pg_query.Node.scalar_array_op_expr:type_name -> pg_query.ScalarArrayOpExpr + 102, // 20: pg_query.Node.bool_expr:type_name -> pg_query.BoolExpr + 103, // 21: pg_query.Node.sub_link:type_name -> pg_query.SubLink + 104, // 22: pg_query.Node.sub_plan:type_name -> pg_query.SubPlan + 105, // 23: pg_query.Node.alternative_sub_plan:type_name -> pg_query.AlternativeSubPlan + 106, // 24: pg_query.Node.field_select:type_name -> pg_query.FieldSelect + 107, // 25: pg_query.Node.field_store:type_name -> pg_query.FieldStore + 108, // 26: pg_query.Node.relabel_type:type_name -> pg_query.RelabelType + 109, // 27: pg_query.Node.coerce_via_io:type_name -> pg_query.CoerceViaIO + 110, // 28: pg_query.Node.array_coerce_expr:type_name -> pg_query.ArrayCoerceExpr + 111, // 29: pg_query.Node.convert_rowtype_expr:type_name -> pg_query.ConvertRowtypeExpr + 112, // 30: pg_query.Node.collate_expr:type_name -> pg_query.CollateExpr + 113, // 31: pg_query.Node.case_expr:type_name -> pg_query.CaseExpr + 114, // 32: pg_query.Node.case_when:type_name -> pg_query.CaseWhen + 115, // 33: pg_query.Node.case_test_expr:type_name -> pg_query.CaseTestExpr + 116, // 34: pg_query.Node.array_expr:type_name -> pg_query.ArrayExpr + 117, // 35: pg_query.Node.row_expr:type_name -> pg_query.RowExpr + 118, // 36: pg_query.Node.row_compare_expr:type_name -> pg_query.RowCompareExpr + 119, // 37: pg_query.Node.coalesce_expr:type_name -> pg_query.CoalesceExpr + 120, // 38: pg_query.Node.min_max_expr:type_name -> pg_query.MinMaxExpr + 121, // 39: pg_query.Node.sqlvalue_function:type_name -> pg_query.SQLValueFunction + 122, // 40: pg_query.Node.xml_expr:type_name -> pg_query.XmlExpr + 123, // 41: pg_query.Node.json_format:type_name -> pg_query.JsonFormat + 124, // 42: pg_query.Node.json_returning:type_name -> pg_query.JsonReturning + 125, // 43: pg_query.Node.json_value_expr:type_name -> pg_query.JsonValueExpr + 126, // 44: pg_query.Node.json_constructor_expr:type_name -> pg_query.JsonConstructorExpr + 127, // 45: pg_query.Node.json_is_predicate:type_name -> pg_query.JsonIsPredicate + 128, // 46: pg_query.Node.json_behavior:type_name -> pg_query.JsonBehavior + 129, // 47: pg_query.Node.json_expr:type_name -> pg_query.JsonExpr + 130, // 48: pg_query.Node.json_table_path:type_name -> pg_query.JsonTablePath + 131, // 49: pg_query.Node.json_table_path_scan:type_name -> pg_query.JsonTablePathScan + 132, // 50: pg_query.Node.json_table_sibling_join:type_name -> pg_query.JsonTableSiblingJoin + 133, // 51: pg_query.Node.null_test:type_name -> pg_query.NullTest + 134, // 52: pg_query.Node.boolean_test:type_name -> pg_query.BooleanTest + 135, // 53: pg_query.Node.merge_action:type_name -> pg_query.MergeAction + 136, // 54: pg_query.Node.coerce_to_domain:type_name -> pg_query.CoerceToDomain + 137, // 55: pg_query.Node.coerce_to_domain_value:type_name -> pg_query.CoerceToDomainValue + 138, // 56: pg_query.Node.set_to_default:type_name -> pg_query.SetToDefault + 139, // 57: pg_query.Node.current_of_expr:type_name -> pg_query.CurrentOfExpr + 140, // 58: pg_query.Node.next_value_expr:type_name -> pg_query.NextValueExpr + 141, // 59: pg_query.Node.inference_elem:type_name -> pg_query.InferenceElem + 142, // 60: pg_query.Node.target_entry:type_name -> pg_query.TargetEntry + 143, // 61: pg_query.Node.range_tbl_ref:type_name -> pg_query.RangeTblRef + 144, // 62: pg_query.Node.join_expr:type_name -> pg_query.JoinExpr + 145, // 63: pg_query.Node.from_expr:type_name -> pg_query.FromExpr + 146, // 64: pg_query.Node.on_conflict_expr:type_name -> pg_query.OnConflictExpr + 147, // 65: pg_query.Node.query:type_name -> pg_query.Query + 148, // 66: pg_query.Node.type_name:type_name -> pg_query.TypeName + 149, // 67: pg_query.Node.column_ref:type_name -> pg_query.ColumnRef + 150, // 68: pg_query.Node.param_ref:type_name -> pg_query.ParamRef + 151, // 69: pg_query.Node.a_expr:type_name -> pg_query.A_Expr + 152, // 70: pg_query.Node.type_cast:type_name -> pg_query.TypeCast + 153, // 71: pg_query.Node.collate_clause:type_name -> pg_query.CollateClause + 154, // 72: pg_query.Node.role_spec:type_name -> pg_query.RoleSpec + 155, // 73: pg_query.Node.func_call:type_name -> pg_query.FuncCall + 156, // 74: pg_query.Node.a_star:type_name -> pg_query.A_Star + 157, // 75: pg_query.Node.a_indices:type_name -> pg_query.A_Indices + 158, // 76: pg_query.Node.a_indirection:type_name -> pg_query.A_Indirection + 159, // 77: pg_query.Node.a_array_expr:type_name -> pg_query.A_ArrayExpr + 160, // 78: pg_query.Node.res_target:type_name -> pg_query.ResTarget + 161, // 79: pg_query.Node.multi_assign_ref:type_name -> pg_query.MultiAssignRef + 162, // 80: pg_query.Node.sort_by:type_name -> pg_query.SortBy + 163, // 81: pg_query.Node.window_def:type_name -> pg_query.WindowDef + 164, // 82: pg_query.Node.range_subselect:type_name -> pg_query.RangeSubselect + 165, // 83: pg_query.Node.range_function:type_name -> pg_query.RangeFunction + 166, // 84: pg_query.Node.range_table_func:type_name -> pg_query.RangeTableFunc + 167, // 85: pg_query.Node.range_table_func_col:type_name -> pg_query.RangeTableFuncCol + 168, // 86: pg_query.Node.range_table_sample:type_name -> pg_query.RangeTableSample + 169, // 87: pg_query.Node.column_def:type_name -> pg_query.ColumnDef + 170, // 88: pg_query.Node.table_like_clause:type_name -> pg_query.TableLikeClause + 171, // 89: pg_query.Node.index_elem:type_name -> pg_query.IndexElem + 172, // 90: pg_query.Node.def_elem:type_name -> pg_query.DefElem + 173, // 91: pg_query.Node.locking_clause:type_name -> pg_query.LockingClause + 174, // 92: pg_query.Node.xml_serialize:type_name -> pg_query.XmlSerialize + 175, // 93: pg_query.Node.partition_elem:type_name -> pg_query.PartitionElem + 176, // 94: pg_query.Node.partition_spec:type_name -> pg_query.PartitionSpec + 177, // 95: pg_query.Node.partition_bound_spec:type_name -> pg_query.PartitionBoundSpec + 178, // 96: pg_query.Node.partition_range_datum:type_name -> pg_query.PartitionRangeDatum + 179, // 97: pg_query.Node.single_partition_spec:type_name -> pg_query.SinglePartitionSpec + 180, // 98: pg_query.Node.partition_cmd:type_name -> pg_query.PartitionCmd + 181, // 99: pg_query.Node.range_tbl_entry:type_name -> pg_query.RangeTblEntry + 182, // 100: pg_query.Node.rtepermission_info:type_name -> pg_query.RTEPermissionInfo + 183, // 101: pg_query.Node.range_tbl_function:type_name -> pg_query.RangeTblFunction + 184, // 102: pg_query.Node.table_sample_clause:type_name -> pg_query.TableSampleClause + 185, // 103: pg_query.Node.with_check_option:type_name -> pg_query.WithCheckOption + 186, // 104: pg_query.Node.sort_group_clause:type_name -> pg_query.SortGroupClause + 187, // 105: pg_query.Node.grouping_set:type_name -> pg_query.GroupingSet + 188, // 106: pg_query.Node.window_clause:type_name -> pg_query.WindowClause + 189, // 107: pg_query.Node.row_mark_clause:type_name -> pg_query.RowMarkClause + 190, // 108: pg_query.Node.with_clause:type_name -> pg_query.WithClause + 191, // 109: pg_query.Node.infer_clause:type_name -> pg_query.InferClause + 192, // 110: pg_query.Node.on_conflict_clause:type_name -> pg_query.OnConflictClause + 193, // 111: pg_query.Node.ctesearch_clause:type_name -> pg_query.CTESearchClause + 194, // 112: pg_query.Node.ctecycle_clause:type_name -> pg_query.CTECycleClause + 195, // 113: pg_query.Node.common_table_expr:type_name -> pg_query.CommonTableExpr + 196, // 114: pg_query.Node.merge_when_clause:type_name -> pg_query.MergeWhenClause + 197, // 115: pg_query.Node.trigger_transition:type_name -> pg_query.TriggerTransition + 198, // 116: pg_query.Node.json_output:type_name -> pg_query.JsonOutput + 199, // 117: pg_query.Node.json_argument:type_name -> pg_query.JsonArgument + 200, // 118: pg_query.Node.json_func_expr:type_name -> pg_query.JsonFuncExpr + 201, // 119: pg_query.Node.json_table_path_spec:type_name -> pg_query.JsonTablePathSpec + 202, // 120: pg_query.Node.json_table:type_name -> pg_query.JsonTable + 203, // 121: pg_query.Node.json_table_column:type_name -> pg_query.JsonTableColumn + 204, // 122: pg_query.Node.json_key_value:type_name -> pg_query.JsonKeyValue + 205, // 123: pg_query.Node.json_parse_expr:type_name -> pg_query.JsonParseExpr + 206, // 124: pg_query.Node.json_scalar_expr:type_name -> pg_query.JsonScalarExpr + 207, // 125: pg_query.Node.json_serialize_expr:type_name -> pg_query.JsonSerializeExpr + 208, // 126: pg_query.Node.json_object_constructor:type_name -> pg_query.JsonObjectConstructor + 209, // 127: pg_query.Node.json_array_constructor:type_name -> pg_query.JsonArrayConstructor + 210, // 128: pg_query.Node.json_array_query_constructor:type_name -> pg_query.JsonArrayQueryConstructor + 211, // 129: pg_query.Node.json_agg_constructor:type_name -> pg_query.JsonAggConstructor + 212, // 130: pg_query.Node.json_object_agg:type_name -> pg_query.JsonObjectAgg + 213, // 131: pg_query.Node.json_array_agg:type_name -> pg_query.JsonArrayAgg + 214, // 132: pg_query.Node.raw_stmt:type_name -> pg_query.RawStmt + 215, // 133: pg_query.Node.insert_stmt:type_name -> pg_query.InsertStmt + 216, // 134: pg_query.Node.delete_stmt:type_name -> pg_query.DeleteStmt + 217, // 135: pg_query.Node.update_stmt:type_name -> pg_query.UpdateStmt + 218, // 136: pg_query.Node.merge_stmt:type_name -> pg_query.MergeStmt + 219, // 137: pg_query.Node.select_stmt:type_name -> pg_query.SelectStmt + 220, // 138: pg_query.Node.set_operation_stmt:type_name -> pg_query.SetOperationStmt + 221, // 139: pg_query.Node.return_stmt:type_name -> pg_query.ReturnStmt + 222, // 140: pg_query.Node.plassign_stmt:type_name -> pg_query.PLAssignStmt + 223, // 141: pg_query.Node.create_schema_stmt:type_name -> pg_query.CreateSchemaStmt + 224, // 142: pg_query.Node.alter_table_stmt:type_name -> pg_query.AlterTableStmt + 225, // 143: pg_query.Node.replica_identity_stmt:type_name -> pg_query.ReplicaIdentityStmt + 226, // 144: pg_query.Node.alter_table_cmd:type_name -> pg_query.AlterTableCmd + 227, // 145: pg_query.Node.alter_collation_stmt:type_name -> pg_query.AlterCollationStmt + 228, // 146: pg_query.Node.alter_domain_stmt:type_name -> pg_query.AlterDomainStmt + 229, // 147: pg_query.Node.grant_stmt:type_name -> pg_query.GrantStmt + 230, // 148: pg_query.Node.object_with_args:type_name -> pg_query.ObjectWithArgs + 231, // 149: pg_query.Node.access_priv:type_name -> pg_query.AccessPriv + 232, // 150: pg_query.Node.grant_role_stmt:type_name -> pg_query.GrantRoleStmt + 233, // 151: pg_query.Node.alter_default_privileges_stmt:type_name -> pg_query.AlterDefaultPrivilegesStmt + 234, // 152: pg_query.Node.copy_stmt:type_name -> pg_query.CopyStmt + 235, // 153: pg_query.Node.variable_set_stmt:type_name -> pg_query.VariableSetStmt + 236, // 154: pg_query.Node.variable_show_stmt:type_name -> pg_query.VariableShowStmt + 237, // 155: pg_query.Node.create_stmt:type_name -> pg_query.CreateStmt + 238, // 156: pg_query.Node.constraint:type_name -> pg_query.Constraint + 239, // 157: pg_query.Node.create_table_space_stmt:type_name -> pg_query.CreateTableSpaceStmt + 240, // 158: pg_query.Node.drop_table_space_stmt:type_name -> pg_query.DropTableSpaceStmt + 241, // 159: pg_query.Node.alter_table_space_options_stmt:type_name -> pg_query.AlterTableSpaceOptionsStmt + 242, // 160: pg_query.Node.alter_table_move_all_stmt:type_name -> pg_query.AlterTableMoveAllStmt + 243, // 161: pg_query.Node.create_extension_stmt:type_name -> pg_query.CreateExtensionStmt + 244, // 162: pg_query.Node.alter_extension_stmt:type_name -> pg_query.AlterExtensionStmt + 245, // 163: pg_query.Node.alter_extension_contents_stmt:type_name -> pg_query.AlterExtensionContentsStmt + 246, // 164: pg_query.Node.create_fdw_stmt:type_name -> pg_query.CreateFdwStmt + 247, // 165: pg_query.Node.alter_fdw_stmt:type_name -> pg_query.AlterFdwStmt + 248, // 166: pg_query.Node.create_foreign_server_stmt:type_name -> pg_query.CreateForeignServerStmt + 249, // 167: pg_query.Node.alter_foreign_server_stmt:type_name -> pg_query.AlterForeignServerStmt + 250, // 168: pg_query.Node.create_foreign_table_stmt:type_name -> pg_query.CreateForeignTableStmt + 251, // 169: pg_query.Node.create_user_mapping_stmt:type_name -> pg_query.CreateUserMappingStmt + 252, // 170: pg_query.Node.alter_user_mapping_stmt:type_name -> pg_query.AlterUserMappingStmt + 253, // 171: pg_query.Node.drop_user_mapping_stmt:type_name -> pg_query.DropUserMappingStmt + 254, // 172: pg_query.Node.import_foreign_schema_stmt:type_name -> pg_query.ImportForeignSchemaStmt + 255, // 173: pg_query.Node.create_policy_stmt:type_name -> pg_query.CreatePolicyStmt + 256, // 174: pg_query.Node.alter_policy_stmt:type_name -> pg_query.AlterPolicyStmt + 257, // 175: pg_query.Node.create_am_stmt:type_name -> pg_query.CreateAmStmt + 258, // 176: pg_query.Node.create_trig_stmt:type_name -> pg_query.CreateTrigStmt + 259, // 177: pg_query.Node.create_event_trig_stmt:type_name -> pg_query.CreateEventTrigStmt + 260, // 178: pg_query.Node.alter_event_trig_stmt:type_name -> pg_query.AlterEventTrigStmt + 261, // 179: pg_query.Node.create_plang_stmt:type_name -> pg_query.CreatePLangStmt + 262, // 180: pg_query.Node.create_role_stmt:type_name -> pg_query.CreateRoleStmt + 263, // 181: pg_query.Node.alter_role_stmt:type_name -> pg_query.AlterRoleStmt + 264, // 182: pg_query.Node.alter_role_set_stmt:type_name -> pg_query.AlterRoleSetStmt + 265, // 183: pg_query.Node.drop_role_stmt:type_name -> pg_query.DropRoleStmt + 266, // 184: pg_query.Node.create_seq_stmt:type_name -> pg_query.CreateSeqStmt + 267, // 185: pg_query.Node.alter_seq_stmt:type_name -> pg_query.AlterSeqStmt + 268, // 186: pg_query.Node.define_stmt:type_name -> pg_query.DefineStmt + 269, // 187: pg_query.Node.create_domain_stmt:type_name -> pg_query.CreateDomainStmt + 270, // 188: pg_query.Node.create_op_class_stmt:type_name -> pg_query.CreateOpClassStmt + 271, // 189: pg_query.Node.create_op_class_item:type_name -> pg_query.CreateOpClassItem + 272, // 190: pg_query.Node.create_op_family_stmt:type_name -> pg_query.CreateOpFamilyStmt + 273, // 191: pg_query.Node.alter_op_family_stmt:type_name -> pg_query.AlterOpFamilyStmt + 274, // 192: pg_query.Node.drop_stmt:type_name -> pg_query.DropStmt + 275, // 193: pg_query.Node.truncate_stmt:type_name -> pg_query.TruncateStmt + 276, // 194: pg_query.Node.comment_stmt:type_name -> pg_query.CommentStmt + 277, // 195: pg_query.Node.sec_label_stmt:type_name -> pg_query.SecLabelStmt + 278, // 196: pg_query.Node.declare_cursor_stmt:type_name -> pg_query.DeclareCursorStmt + 279, // 197: pg_query.Node.close_portal_stmt:type_name -> pg_query.ClosePortalStmt + 280, // 198: pg_query.Node.fetch_stmt:type_name -> pg_query.FetchStmt + 281, // 199: pg_query.Node.index_stmt:type_name -> pg_query.IndexStmt + 282, // 200: pg_query.Node.create_stats_stmt:type_name -> pg_query.CreateStatsStmt + 283, // 201: pg_query.Node.stats_elem:type_name -> pg_query.StatsElem + 284, // 202: pg_query.Node.alter_stats_stmt:type_name -> pg_query.AlterStatsStmt + 285, // 203: pg_query.Node.create_function_stmt:type_name -> pg_query.CreateFunctionStmt + 286, // 204: pg_query.Node.function_parameter:type_name -> pg_query.FunctionParameter + 287, // 205: pg_query.Node.alter_function_stmt:type_name -> pg_query.AlterFunctionStmt + 288, // 206: pg_query.Node.do_stmt:type_name -> pg_query.DoStmt + 289, // 207: pg_query.Node.inline_code_block:type_name -> pg_query.InlineCodeBlock + 290, // 208: pg_query.Node.call_stmt:type_name -> pg_query.CallStmt + 291, // 209: pg_query.Node.call_context:type_name -> pg_query.CallContext + 292, // 210: pg_query.Node.rename_stmt:type_name -> pg_query.RenameStmt + 293, // 211: pg_query.Node.alter_object_depends_stmt:type_name -> pg_query.AlterObjectDependsStmt + 294, // 212: pg_query.Node.alter_object_schema_stmt:type_name -> pg_query.AlterObjectSchemaStmt + 295, // 213: pg_query.Node.alter_owner_stmt:type_name -> pg_query.AlterOwnerStmt + 296, // 214: pg_query.Node.alter_operator_stmt:type_name -> pg_query.AlterOperatorStmt + 297, // 215: pg_query.Node.alter_type_stmt:type_name -> pg_query.AlterTypeStmt + 298, // 216: pg_query.Node.rule_stmt:type_name -> pg_query.RuleStmt + 299, // 217: pg_query.Node.notify_stmt:type_name -> pg_query.NotifyStmt + 300, // 218: pg_query.Node.listen_stmt:type_name -> pg_query.ListenStmt + 301, // 219: pg_query.Node.unlisten_stmt:type_name -> pg_query.UnlistenStmt + 302, // 220: pg_query.Node.transaction_stmt:type_name -> pg_query.TransactionStmt + 303, // 221: pg_query.Node.composite_type_stmt:type_name -> pg_query.CompositeTypeStmt + 304, // 222: pg_query.Node.create_enum_stmt:type_name -> pg_query.CreateEnumStmt + 305, // 223: pg_query.Node.create_range_stmt:type_name -> pg_query.CreateRangeStmt + 306, // 224: pg_query.Node.alter_enum_stmt:type_name -> pg_query.AlterEnumStmt + 307, // 225: pg_query.Node.view_stmt:type_name -> pg_query.ViewStmt + 308, // 226: pg_query.Node.load_stmt:type_name -> pg_query.LoadStmt + 309, // 227: pg_query.Node.createdb_stmt:type_name -> pg_query.CreatedbStmt + 310, // 228: pg_query.Node.alter_database_stmt:type_name -> pg_query.AlterDatabaseStmt + 311, // 229: pg_query.Node.alter_database_refresh_coll_stmt:type_name -> pg_query.AlterDatabaseRefreshCollStmt + 312, // 230: pg_query.Node.alter_database_set_stmt:type_name -> pg_query.AlterDatabaseSetStmt + 313, // 231: pg_query.Node.dropdb_stmt:type_name -> pg_query.DropdbStmt + 314, // 232: pg_query.Node.alter_system_stmt:type_name -> pg_query.AlterSystemStmt + 315, // 233: pg_query.Node.cluster_stmt:type_name -> pg_query.ClusterStmt + 316, // 234: pg_query.Node.vacuum_stmt:type_name -> pg_query.VacuumStmt + 317, // 235: pg_query.Node.vacuum_relation:type_name -> pg_query.VacuumRelation + 318, // 236: pg_query.Node.explain_stmt:type_name -> pg_query.ExplainStmt + 319, // 237: pg_query.Node.create_table_as_stmt:type_name -> pg_query.CreateTableAsStmt + 320, // 238: pg_query.Node.refresh_mat_view_stmt:type_name -> pg_query.RefreshMatViewStmt + 321, // 239: pg_query.Node.check_point_stmt:type_name -> pg_query.CheckPointStmt + 322, // 240: pg_query.Node.discard_stmt:type_name -> pg_query.DiscardStmt + 323, // 241: pg_query.Node.lock_stmt:type_name -> pg_query.LockStmt + 324, // 242: pg_query.Node.constraints_set_stmt:type_name -> pg_query.ConstraintsSetStmt + 325, // 243: pg_query.Node.reindex_stmt:type_name -> pg_query.ReindexStmt + 326, // 244: pg_query.Node.create_conversion_stmt:type_name -> pg_query.CreateConversionStmt + 327, // 245: pg_query.Node.create_cast_stmt:type_name -> pg_query.CreateCastStmt + 328, // 246: pg_query.Node.create_transform_stmt:type_name -> pg_query.CreateTransformStmt + 329, // 247: pg_query.Node.prepare_stmt:type_name -> pg_query.PrepareStmt + 330, // 248: pg_query.Node.execute_stmt:type_name -> pg_query.ExecuteStmt + 331, // 249: pg_query.Node.deallocate_stmt:type_name -> pg_query.DeallocateStmt + 332, // 250: pg_query.Node.drop_owned_stmt:type_name -> pg_query.DropOwnedStmt + 333, // 251: pg_query.Node.reassign_owned_stmt:type_name -> pg_query.ReassignOwnedStmt + 334, // 252: pg_query.Node.alter_tsdictionary_stmt:type_name -> pg_query.AlterTSDictionaryStmt + 335, // 253: pg_query.Node.alter_tsconfiguration_stmt:type_name -> pg_query.AlterTSConfigurationStmt + 336, // 254: pg_query.Node.publication_table:type_name -> pg_query.PublicationTable + 337, // 255: pg_query.Node.publication_obj_spec:type_name -> pg_query.PublicationObjSpec + 338, // 256: pg_query.Node.create_publication_stmt:type_name -> pg_query.CreatePublicationStmt + 339, // 257: pg_query.Node.alter_publication_stmt:type_name -> pg_query.AlterPublicationStmt + 340, // 258: pg_query.Node.create_subscription_stmt:type_name -> pg_query.CreateSubscriptionStmt + 341, // 259: pg_query.Node.alter_subscription_stmt:type_name -> pg_query.AlterSubscriptionStmt + 342, // 260: pg_query.Node.drop_subscription_stmt:type_name -> pg_query.DropSubscriptionStmt + 75, // 261: pg_query.Node.integer:type_name -> pg_query.Integer + 76, // 262: pg_query.Node.float:type_name -> pg_query.Float + 77, // 263: pg_query.Node.boolean:type_name -> pg_query.Boolean + 78, // 264: pg_query.Node.string:type_name -> pg_query.String + 79, // 265: pg_query.Node.bit_string:type_name -> pg_query.BitString + 80, // 266: pg_query.Node.list:type_name -> pg_query.List + 82, // 267: pg_query.Node.int_list:type_name -> pg_query.IntList + 81, // 268: pg_query.Node.oid_list:type_name -> pg_query.OidList + 83, // 269: pg_query.Node.a_const:type_name -> pg_query.A_Const + 74, // 270: pg_query.List.items:type_name -> pg_query.Node + 74, // 271: pg_query.OidList.items:type_name -> pg_query.Node + 74, // 272: pg_query.IntList.items:type_name -> pg_query.Node + 75, // 273: pg_query.A_Const.ival:type_name -> pg_query.Integer + 76, // 274: pg_query.A_Const.fval:type_name -> pg_query.Float + 77, // 275: pg_query.A_Const.boolval:type_name -> pg_query.Boolean + 78, // 276: pg_query.A_Const.sval:type_name -> pg_query.String + 79, // 277: pg_query.A_Const.bsval:type_name -> pg_query.BitString + 74, // 278: pg_query.Alias.colnames:type_name -> pg_query.Node + 84, // 279: pg_query.RangeVar.alias:type_name -> pg_query.Alias + 37, // 280: pg_query.TableFunc.functype:type_name -> pg_query.TableFuncType + 74, // 281: pg_query.TableFunc.ns_uris:type_name -> pg_query.Node + 74, // 282: pg_query.TableFunc.ns_names:type_name -> pg_query.Node + 74, // 283: pg_query.TableFunc.docexpr:type_name -> pg_query.Node + 74, // 284: pg_query.TableFunc.rowexpr:type_name -> pg_query.Node + 74, // 285: pg_query.TableFunc.colnames:type_name -> pg_query.Node + 74, // 286: pg_query.TableFunc.coltypes:type_name -> pg_query.Node + 74, // 287: pg_query.TableFunc.coltypmods:type_name -> pg_query.Node + 74, // 288: pg_query.TableFunc.colcollations:type_name -> pg_query.Node + 74, // 289: pg_query.TableFunc.colexprs:type_name -> pg_query.Node + 74, // 290: pg_query.TableFunc.coldefexprs:type_name -> pg_query.Node + 74, // 291: pg_query.TableFunc.colvalexprs:type_name -> pg_query.Node + 74, // 292: pg_query.TableFunc.passingvalexprs:type_name -> pg_query.Node + 74, // 293: pg_query.TableFunc.plan:type_name -> pg_query.Node + 85, // 294: pg_query.IntoClause.rel:type_name -> pg_query.RangeVar + 74, // 295: pg_query.IntoClause.col_names:type_name -> pg_query.Node + 74, // 296: pg_query.IntoClause.options:type_name -> pg_query.Node + 36, // 297: pg_query.IntoClause.on_commit:type_name -> pg_query.OnCommitAction + 74, // 298: pg_query.IntoClause.view_query:type_name -> pg_query.Node + 74, // 299: pg_query.Var.xpr:type_name -> pg_query.Node + 74, // 300: pg_query.Param.xpr:type_name -> pg_query.Node + 38, // 301: pg_query.Param.paramkind:type_name -> pg_query.ParamKind + 74, // 302: pg_query.Aggref.xpr:type_name -> pg_query.Node + 74, // 303: pg_query.Aggref.aggargtypes:type_name -> pg_query.Node + 74, // 304: pg_query.Aggref.aggdirectargs:type_name -> pg_query.Node + 74, // 305: pg_query.Aggref.args:type_name -> pg_query.Node + 74, // 306: pg_query.Aggref.aggorder:type_name -> pg_query.Node + 74, // 307: pg_query.Aggref.aggdistinct:type_name -> pg_query.Node + 74, // 308: pg_query.Aggref.aggfilter:type_name -> pg_query.Node + 61, // 309: pg_query.Aggref.aggsplit:type_name -> pg_query.AggSplit + 74, // 310: pg_query.GroupingFunc.xpr:type_name -> pg_query.Node + 74, // 311: pg_query.GroupingFunc.args:type_name -> pg_query.Node + 74, // 312: pg_query.GroupingFunc.refs:type_name -> pg_query.Node + 74, // 313: pg_query.WindowFunc.xpr:type_name -> pg_query.Node + 74, // 314: pg_query.WindowFunc.args:type_name -> pg_query.Node + 74, // 315: pg_query.WindowFunc.aggfilter:type_name -> pg_query.Node + 74, // 316: pg_query.WindowFunc.run_condition:type_name -> pg_query.Node + 74, // 317: pg_query.WindowFuncRunCondition.xpr:type_name -> pg_query.Node + 74, // 318: pg_query.WindowFuncRunCondition.arg:type_name -> pg_query.Node + 74, // 319: pg_query.MergeSupportFunc.xpr:type_name -> pg_query.Node + 74, // 320: pg_query.SubscriptingRef.xpr:type_name -> pg_query.Node + 74, // 321: pg_query.SubscriptingRef.refupperindexpr:type_name -> pg_query.Node + 74, // 322: pg_query.SubscriptingRef.reflowerindexpr:type_name -> pg_query.Node + 74, // 323: pg_query.SubscriptingRef.refexpr:type_name -> pg_query.Node + 74, // 324: pg_query.SubscriptingRef.refassgnexpr:type_name -> pg_query.Node + 74, // 325: pg_query.FuncExpr.xpr:type_name -> pg_query.Node + 40, // 326: pg_query.FuncExpr.funcformat:type_name -> pg_query.CoercionForm + 74, // 327: pg_query.FuncExpr.args:type_name -> pg_query.Node + 74, // 328: pg_query.NamedArgExpr.xpr:type_name -> pg_query.Node + 74, // 329: pg_query.NamedArgExpr.arg:type_name -> pg_query.Node + 74, // 330: pg_query.OpExpr.xpr:type_name -> pg_query.Node + 74, // 331: pg_query.OpExpr.args:type_name -> pg_query.Node + 74, // 332: pg_query.DistinctExpr.xpr:type_name -> pg_query.Node + 74, // 333: pg_query.DistinctExpr.args:type_name -> pg_query.Node + 74, // 334: pg_query.NullIfExpr.xpr:type_name -> pg_query.Node + 74, // 335: pg_query.NullIfExpr.args:type_name -> pg_query.Node + 74, // 336: pg_query.ScalarArrayOpExpr.xpr:type_name -> pg_query.Node + 74, // 337: pg_query.ScalarArrayOpExpr.args:type_name -> pg_query.Node + 74, // 338: pg_query.BoolExpr.xpr:type_name -> pg_query.Node + 41, // 339: pg_query.BoolExpr.boolop:type_name -> pg_query.BoolExprType + 74, // 340: pg_query.BoolExpr.args:type_name -> pg_query.Node + 74, // 341: pg_query.SubLink.xpr:type_name -> pg_query.Node + 42, // 342: pg_query.SubLink.sub_link_type:type_name -> pg_query.SubLinkType + 74, // 343: pg_query.SubLink.testexpr:type_name -> pg_query.Node + 74, // 344: pg_query.SubLink.oper_name:type_name -> pg_query.Node + 74, // 345: pg_query.SubLink.subselect:type_name -> pg_query.Node + 74, // 346: pg_query.SubPlan.xpr:type_name -> pg_query.Node + 42, // 347: pg_query.SubPlan.sub_link_type:type_name -> pg_query.SubLinkType + 74, // 348: pg_query.SubPlan.testexpr:type_name -> pg_query.Node + 74, // 349: pg_query.SubPlan.param_ids:type_name -> pg_query.Node + 74, // 350: pg_query.SubPlan.set_param:type_name -> pg_query.Node + 74, // 351: pg_query.SubPlan.par_param:type_name -> pg_query.Node + 74, // 352: pg_query.SubPlan.args:type_name -> pg_query.Node + 74, // 353: pg_query.AlternativeSubPlan.xpr:type_name -> pg_query.Node + 74, // 354: pg_query.AlternativeSubPlan.subplans:type_name -> pg_query.Node + 74, // 355: pg_query.FieldSelect.xpr:type_name -> pg_query.Node + 74, // 356: pg_query.FieldSelect.arg:type_name -> pg_query.Node + 74, // 357: pg_query.FieldStore.xpr:type_name -> pg_query.Node + 74, // 358: pg_query.FieldStore.arg:type_name -> pg_query.Node + 74, // 359: pg_query.FieldStore.newvals:type_name -> pg_query.Node + 74, // 360: pg_query.FieldStore.fieldnums:type_name -> pg_query.Node + 74, // 361: pg_query.RelabelType.xpr:type_name -> pg_query.Node + 74, // 362: pg_query.RelabelType.arg:type_name -> pg_query.Node + 40, // 363: pg_query.RelabelType.relabelformat:type_name -> pg_query.CoercionForm + 74, // 364: pg_query.CoerceViaIO.xpr:type_name -> pg_query.Node + 74, // 365: pg_query.CoerceViaIO.arg:type_name -> pg_query.Node + 40, // 366: pg_query.CoerceViaIO.coerceformat:type_name -> pg_query.CoercionForm + 74, // 367: pg_query.ArrayCoerceExpr.xpr:type_name -> pg_query.Node + 74, // 368: pg_query.ArrayCoerceExpr.arg:type_name -> pg_query.Node + 74, // 369: pg_query.ArrayCoerceExpr.elemexpr:type_name -> pg_query.Node + 40, // 370: pg_query.ArrayCoerceExpr.coerceformat:type_name -> pg_query.CoercionForm + 74, // 371: pg_query.ConvertRowtypeExpr.xpr:type_name -> pg_query.Node + 74, // 372: pg_query.ConvertRowtypeExpr.arg:type_name -> pg_query.Node + 40, // 373: pg_query.ConvertRowtypeExpr.convertformat:type_name -> pg_query.CoercionForm + 74, // 374: pg_query.CollateExpr.xpr:type_name -> pg_query.Node + 74, // 375: pg_query.CollateExpr.arg:type_name -> pg_query.Node + 74, // 376: pg_query.CaseExpr.xpr:type_name -> pg_query.Node + 74, // 377: pg_query.CaseExpr.arg:type_name -> pg_query.Node + 74, // 378: pg_query.CaseExpr.args:type_name -> pg_query.Node + 74, // 379: pg_query.CaseExpr.defresult:type_name -> pg_query.Node + 74, // 380: pg_query.CaseWhen.xpr:type_name -> pg_query.Node + 74, // 381: pg_query.CaseWhen.expr:type_name -> pg_query.Node + 74, // 382: pg_query.CaseWhen.result:type_name -> pg_query.Node + 74, // 383: pg_query.CaseTestExpr.xpr:type_name -> pg_query.Node + 74, // 384: pg_query.ArrayExpr.xpr:type_name -> pg_query.Node + 74, // 385: pg_query.ArrayExpr.elements:type_name -> pg_query.Node + 74, // 386: pg_query.RowExpr.xpr:type_name -> pg_query.Node + 74, // 387: pg_query.RowExpr.args:type_name -> pg_query.Node + 40, // 388: pg_query.RowExpr.row_format:type_name -> pg_query.CoercionForm + 74, // 389: pg_query.RowExpr.colnames:type_name -> pg_query.Node + 74, // 390: pg_query.RowCompareExpr.xpr:type_name -> pg_query.Node + 43, // 391: pg_query.RowCompareExpr.rctype:type_name -> pg_query.RowCompareType + 74, // 392: pg_query.RowCompareExpr.opnos:type_name -> pg_query.Node + 74, // 393: pg_query.RowCompareExpr.opfamilies:type_name -> pg_query.Node + 74, // 394: pg_query.RowCompareExpr.inputcollids:type_name -> pg_query.Node + 74, // 395: pg_query.RowCompareExpr.largs:type_name -> pg_query.Node + 74, // 396: pg_query.RowCompareExpr.rargs:type_name -> pg_query.Node + 74, // 397: pg_query.CoalesceExpr.xpr:type_name -> pg_query.Node + 74, // 398: pg_query.CoalesceExpr.args:type_name -> pg_query.Node + 74, // 399: pg_query.MinMaxExpr.xpr:type_name -> pg_query.Node + 44, // 400: pg_query.MinMaxExpr.op:type_name -> pg_query.MinMaxOp + 74, // 401: pg_query.MinMaxExpr.args:type_name -> pg_query.Node + 74, // 402: pg_query.SQLValueFunction.xpr:type_name -> pg_query.Node + 45, // 403: pg_query.SQLValueFunction.op:type_name -> pg_query.SQLValueFunctionOp + 74, // 404: pg_query.XmlExpr.xpr:type_name -> pg_query.Node + 46, // 405: pg_query.XmlExpr.op:type_name -> pg_query.XmlExprOp + 74, // 406: pg_query.XmlExpr.named_args:type_name -> pg_query.Node + 74, // 407: pg_query.XmlExpr.arg_names:type_name -> pg_query.Node + 74, // 408: pg_query.XmlExpr.args:type_name -> pg_query.Node + 47, // 409: pg_query.XmlExpr.xmloption:type_name -> pg_query.XmlOptionType + 49, // 410: pg_query.JsonFormat.format_type:type_name -> pg_query.JsonFormatType + 48, // 411: pg_query.JsonFormat.encoding:type_name -> pg_query.JsonEncoding + 123, // 412: pg_query.JsonReturning.format:type_name -> pg_query.JsonFormat + 74, // 413: pg_query.JsonValueExpr.raw_expr:type_name -> pg_query.Node + 74, // 414: pg_query.JsonValueExpr.formatted_expr:type_name -> pg_query.Node + 123, // 415: pg_query.JsonValueExpr.format:type_name -> pg_query.JsonFormat + 74, // 416: pg_query.JsonConstructorExpr.xpr:type_name -> pg_query.Node + 50, // 417: pg_query.JsonConstructorExpr.type:type_name -> pg_query.JsonConstructorType + 74, // 418: pg_query.JsonConstructorExpr.args:type_name -> pg_query.Node + 74, // 419: pg_query.JsonConstructorExpr.func:type_name -> pg_query.Node + 74, // 420: pg_query.JsonConstructorExpr.coercion:type_name -> pg_query.Node + 124, // 421: pg_query.JsonConstructorExpr.returning:type_name -> pg_query.JsonReturning + 74, // 422: pg_query.JsonIsPredicate.expr:type_name -> pg_query.Node + 123, // 423: pg_query.JsonIsPredicate.format:type_name -> pg_query.JsonFormat + 51, // 424: pg_query.JsonIsPredicate.item_type:type_name -> pg_query.JsonValueType + 53, // 425: pg_query.JsonBehavior.btype:type_name -> pg_query.JsonBehaviorType + 74, // 426: pg_query.JsonBehavior.expr:type_name -> pg_query.Node + 74, // 427: pg_query.JsonExpr.xpr:type_name -> pg_query.Node + 54, // 428: pg_query.JsonExpr.op:type_name -> pg_query.JsonExprOp + 74, // 429: pg_query.JsonExpr.formatted_expr:type_name -> pg_query.Node + 123, // 430: pg_query.JsonExpr.format:type_name -> pg_query.JsonFormat + 74, // 431: pg_query.JsonExpr.path_spec:type_name -> pg_query.Node + 124, // 432: pg_query.JsonExpr.returning:type_name -> pg_query.JsonReturning + 74, // 433: pg_query.JsonExpr.passing_names:type_name -> pg_query.Node + 74, // 434: pg_query.JsonExpr.passing_values:type_name -> pg_query.Node + 128, // 435: pg_query.JsonExpr.on_empty:type_name -> pg_query.JsonBehavior + 128, // 436: pg_query.JsonExpr.on_error:type_name -> pg_query.JsonBehavior + 52, // 437: pg_query.JsonExpr.wrapper:type_name -> pg_query.JsonWrapper + 74, // 438: pg_query.JsonTablePathScan.plan:type_name -> pg_query.Node + 130, // 439: pg_query.JsonTablePathScan.path:type_name -> pg_query.JsonTablePath + 74, // 440: pg_query.JsonTablePathScan.child:type_name -> pg_query.Node + 74, // 441: pg_query.JsonTableSiblingJoin.plan:type_name -> pg_query.Node + 74, // 442: pg_query.JsonTableSiblingJoin.lplan:type_name -> pg_query.Node + 74, // 443: pg_query.JsonTableSiblingJoin.rplan:type_name -> pg_query.Node + 74, // 444: pg_query.NullTest.xpr:type_name -> pg_query.Node + 74, // 445: pg_query.NullTest.arg:type_name -> pg_query.Node + 55, // 446: pg_query.NullTest.nulltesttype:type_name -> pg_query.NullTestType + 74, // 447: pg_query.BooleanTest.xpr:type_name -> pg_query.Node + 74, // 448: pg_query.BooleanTest.arg:type_name -> pg_query.Node + 56, // 449: pg_query.BooleanTest.booltesttype:type_name -> pg_query.BoolTestType + 57, // 450: pg_query.MergeAction.match_kind:type_name -> pg_query.MergeMatchKind + 58, // 451: pg_query.MergeAction.command_type:type_name -> pg_query.CmdType + 35, // 452: pg_query.MergeAction.override:type_name -> pg_query.OverridingKind + 74, // 453: pg_query.MergeAction.qual:type_name -> pg_query.Node + 74, // 454: pg_query.MergeAction.target_list:type_name -> pg_query.Node + 74, // 455: pg_query.MergeAction.update_colnos:type_name -> pg_query.Node + 74, // 456: pg_query.CoerceToDomain.xpr:type_name -> pg_query.Node + 74, // 457: pg_query.CoerceToDomain.arg:type_name -> pg_query.Node + 40, // 458: pg_query.CoerceToDomain.coercionformat:type_name -> pg_query.CoercionForm + 74, // 459: pg_query.CoerceToDomainValue.xpr:type_name -> pg_query.Node + 74, // 460: pg_query.SetToDefault.xpr:type_name -> pg_query.Node + 74, // 461: pg_query.CurrentOfExpr.xpr:type_name -> pg_query.Node + 74, // 462: pg_query.NextValueExpr.xpr:type_name -> pg_query.Node + 74, // 463: pg_query.InferenceElem.xpr:type_name -> pg_query.Node + 74, // 464: pg_query.InferenceElem.expr:type_name -> pg_query.Node + 74, // 465: pg_query.TargetEntry.xpr:type_name -> pg_query.Node + 74, // 466: pg_query.TargetEntry.expr:type_name -> pg_query.Node + 59, // 467: pg_query.JoinExpr.jointype:type_name -> pg_query.JoinType + 74, // 468: pg_query.JoinExpr.larg:type_name -> pg_query.Node + 74, // 469: pg_query.JoinExpr.rarg:type_name -> pg_query.Node + 74, // 470: pg_query.JoinExpr.using_clause:type_name -> pg_query.Node + 84, // 471: pg_query.JoinExpr.join_using_alias:type_name -> pg_query.Alias + 74, // 472: pg_query.JoinExpr.quals:type_name -> pg_query.Node + 84, // 473: pg_query.JoinExpr.alias:type_name -> pg_query.Alias + 74, // 474: pg_query.FromExpr.fromlist:type_name -> pg_query.Node + 74, // 475: pg_query.FromExpr.quals:type_name -> pg_query.Node + 64, // 476: pg_query.OnConflictExpr.action:type_name -> pg_query.OnConflictAction + 74, // 477: pg_query.OnConflictExpr.arbiter_elems:type_name -> pg_query.Node + 74, // 478: pg_query.OnConflictExpr.arbiter_where:type_name -> pg_query.Node + 74, // 479: pg_query.OnConflictExpr.on_conflict_set:type_name -> pg_query.Node + 74, // 480: pg_query.OnConflictExpr.on_conflict_where:type_name -> pg_query.Node + 74, // 481: pg_query.OnConflictExpr.excl_rel_tlist:type_name -> pg_query.Node + 58, // 482: pg_query.Query.command_type:type_name -> pg_query.CmdType + 0, // 483: pg_query.Query.query_source:type_name -> pg_query.QuerySource + 74, // 484: pg_query.Query.utility_stmt:type_name -> pg_query.Node + 74, // 485: pg_query.Query.cte_list:type_name -> pg_query.Node + 74, // 486: pg_query.Query.rtable:type_name -> pg_query.Node + 74, // 487: pg_query.Query.rteperminfos:type_name -> pg_query.Node + 145, // 488: pg_query.Query.jointree:type_name -> pg_query.FromExpr + 74, // 489: pg_query.Query.merge_action_list:type_name -> pg_query.Node + 74, // 490: pg_query.Query.merge_join_condition:type_name -> pg_query.Node + 74, // 491: pg_query.Query.target_list:type_name -> pg_query.Node + 35, // 492: pg_query.Query.override:type_name -> pg_query.OverridingKind + 146, // 493: pg_query.Query.on_conflict:type_name -> pg_query.OnConflictExpr + 74, // 494: pg_query.Query.returning_list:type_name -> pg_query.Node + 74, // 495: pg_query.Query.group_clause:type_name -> pg_query.Node + 74, // 496: pg_query.Query.grouping_sets:type_name -> pg_query.Node + 74, // 497: pg_query.Query.having_qual:type_name -> pg_query.Node + 74, // 498: pg_query.Query.window_clause:type_name -> pg_query.Node + 74, // 499: pg_query.Query.distinct_clause:type_name -> pg_query.Node + 74, // 500: pg_query.Query.sort_clause:type_name -> pg_query.Node + 74, // 501: pg_query.Query.limit_offset:type_name -> pg_query.Node + 74, // 502: pg_query.Query.limit_count:type_name -> pg_query.Node + 65, // 503: pg_query.Query.limit_option:type_name -> pg_query.LimitOption + 74, // 504: pg_query.Query.row_marks:type_name -> pg_query.Node + 74, // 505: pg_query.Query.set_operations:type_name -> pg_query.Node + 74, // 506: pg_query.Query.constraint_deps:type_name -> pg_query.Node + 74, // 507: pg_query.Query.with_check_options:type_name -> pg_query.Node + 74, // 508: pg_query.TypeName.names:type_name -> pg_query.Node + 74, // 509: pg_query.TypeName.typmods:type_name -> pg_query.Node + 74, // 510: pg_query.TypeName.array_bounds:type_name -> pg_query.Node + 74, // 511: pg_query.ColumnRef.fields:type_name -> pg_query.Node + 4, // 512: pg_query.A_Expr.kind:type_name -> pg_query.A_Expr_Kind + 74, // 513: pg_query.A_Expr.name:type_name -> pg_query.Node + 74, // 514: pg_query.A_Expr.lexpr:type_name -> pg_query.Node + 74, // 515: pg_query.A_Expr.rexpr:type_name -> pg_query.Node + 74, // 516: pg_query.TypeCast.arg:type_name -> pg_query.Node + 148, // 517: pg_query.TypeCast.type_name:type_name -> pg_query.TypeName + 74, // 518: pg_query.CollateClause.arg:type_name -> pg_query.Node + 74, // 519: pg_query.CollateClause.collname:type_name -> pg_query.Node + 5, // 520: pg_query.RoleSpec.roletype:type_name -> pg_query.RoleSpecType + 74, // 521: pg_query.FuncCall.funcname:type_name -> pg_query.Node + 74, // 522: pg_query.FuncCall.args:type_name -> pg_query.Node + 74, // 523: pg_query.FuncCall.agg_order:type_name -> pg_query.Node + 74, // 524: pg_query.FuncCall.agg_filter:type_name -> pg_query.Node + 163, // 525: pg_query.FuncCall.over:type_name -> pg_query.WindowDef + 40, // 526: pg_query.FuncCall.funcformat:type_name -> pg_query.CoercionForm + 74, // 527: pg_query.A_Indices.lidx:type_name -> pg_query.Node + 74, // 528: pg_query.A_Indices.uidx:type_name -> pg_query.Node + 74, // 529: pg_query.A_Indirection.arg:type_name -> pg_query.Node + 74, // 530: pg_query.A_Indirection.indirection:type_name -> pg_query.Node + 74, // 531: pg_query.A_ArrayExpr.elements:type_name -> pg_query.Node + 74, // 532: pg_query.ResTarget.indirection:type_name -> pg_query.Node + 74, // 533: pg_query.ResTarget.val:type_name -> pg_query.Node + 74, // 534: pg_query.MultiAssignRef.source:type_name -> pg_query.Node + 74, // 535: pg_query.SortBy.node:type_name -> pg_query.Node + 1, // 536: pg_query.SortBy.sortby_dir:type_name -> pg_query.SortByDir + 2, // 537: pg_query.SortBy.sortby_nulls:type_name -> pg_query.SortByNulls + 74, // 538: pg_query.SortBy.use_op:type_name -> pg_query.Node + 74, // 539: pg_query.WindowDef.partition_clause:type_name -> pg_query.Node + 74, // 540: pg_query.WindowDef.order_clause:type_name -> pg_query.Node + 74, // 541: pg_query.WindowDef.start_offset:type_name -> pg_query.Node + 74, // 542: pg_query.WindowDef.end_offset:type_name -> pg_query.Node + 74, // 543: pg_query.RangeSubselect.subquery:type_name -> pg_query.Node + 84, // 544: pg_query.RangeSubselect.alias:type_name -> pg_query.Alias + 74, // 545: pg_query.RangeFunction.functions:type_name -> pg_query.Node + 84, // 546: pg_query.RangeFunction.alias:type_name -> pg_query.Alias + 74, // 547: pg_query.RangeFunction.coldeflist:type_name -> pg_query.Node + 74, // 548: pg_query.RangeTableFunc.docexpr:type_name -> pg_query.Node + 74, // 549: pg_query.RangeTableFunc.rowexpr:type_name -> pg_query.Node + 74, // 550: pg_query.RangeTableFunc.namespaces:type_name -> pg_query.Node + 74, // 551: pg_query.RangeTableFunc.columns:type_name -> pg_query.Node + 84, // 552: pg_query.RangeTableFunc.alias:type_name -> pg_query.Alias + 148, // 553: pg_query.RangeTableFuncCol.type_name:type_name -> pg_query.TypeName + 74, // 554: pg_query.RangeTableFuncCol.colexpr:type_name -> pg_query.Node + 74, // 555: pg_query.RangeTableFuncCol.coldefexpr:type_name -> pg_query.Node + 74, // 556: pg_query.RangeTableSample.relation:type_name -> pg_query.Node + 74, // 557: pg_query.RangeTableSample.method:type_name -> pg_query.Node + 74, // 558: pg_query.RangeTableSample.args:type_name -> pg_query.Node + 74, // 559: pg_query.RangeTableSample.repeatable:type_name -> pg_query.Node + 148, // 560: pg_query.ColumnDef.type_name:type_name -> pg_query.TypeName + 74, // 561: pg_query.ColumnDef.raw_default:type_name -> pg_query.Node + 74, // 562: pg_query.ColumnDef.cooked_default:type_name -> pg_query.Node + 85, // 563: pg_query.ColumnDef.identity_sequence:type_name -> pg_query.RangeVar + 153, // 564: pg_query.ColumnDef.coll_clause:type_name -> pg_query.CollateClause + 74, // 565: pg_query.ColumnDef.constraints:type_name -> pg_query.Node + 74, // 566: pg_query.ColumnDef.fdwoptions:type_name -> pg_query.Node + 85, // 567: pg_query.TableLikeClause.relation:type_name -> pg_query.RangeVar + 74, // 568: pg_query.IndexElem.expr:type_name -> pg_query.Node + 74, // 569: pg_query.IndexElem.collation:type_name -> pg_query.Node + 74, // 570: pg_query.IndexElem.opclass:type_name -> pg_query.Node + 74, // 571: pg_query.IndexElem.opclassopts:type_name -> pg_query.Node + 1, // 572: pg_query.IndexElem.ordering:type_name -> pg_query.SortByDir + 2, // 573: pg_query.IndexElem.nulls_ordering:type_name -> pg_query.SortByNulls + 74, // 574: pg_query.DefElem.arg:type_name -> pg_query.Node + 7, // 575: pg_query.DefElem.defaction:type_name -> pg_query.DefElemAction + 74, // 576: pg_query.LockingClause.locked_rels:type_name -> pg_query.Node + 66, // 577: pg_query.LockingClause.strength:type_name -> pg_query.LockClauseStrength + 67, // 578: pg_query.LockingClause.wait_policy:type_name -> pg_query.LockWaitPolicy + 47, // 579: pg_query.XmlSerialize.xmloption:type_name -> pg_query.XmlOptionType + 74, // 580: pg_query.XmlSerialize.expr:type_name -> pg_query.Node + 148, // 581: pg_query.XmlSerialize.type_name:type_name -> pg_query.TypeName + 74, // 582: pg_query.PartitionElem.expr:type_name -> pg_query.Node + 74, // 583: pg_query.PartitionElem.collation:type_name -> pg_query.Node + 74, // 584: pg_query.PartitionElem.opclass:type_name -> pg_query.Node + 8, // 585: pg_query.PartitionSpec.strategy:type_name -> pg_query.PartitionStrategy + 74, // 586: pg_query.PartitionSpec.part_params:type_name -> pg_query.Node + 74, // 587: pg_query.PartitionBoundSpec.listdatums:type_name -> pg_query.Node + 74, // 588: pg_query.PartitionBoundSpec.lowerdatums:type_name -> pg_query.Node + 74, // 589: pg_query.PartitionBoundSpec.upperdatums:type_name -> pg_query.Node + 9, // 590: pg_query.PartitionRangeDatum.kind:type_name -> pg_query.PartitionRangeDatumKind + 74, // 591: pg_query.PartitionRangeDatum.value:type_name -> pg_query.Node + 85, // 592: pg_query.PartitionCmd.name:type_name -> pg_query.RangeVar + 177, // 593: pg_query.PartitionCmd.bound:type_name -> pg_query.PartitionBoundSpec + 84, // 594: pg_query.RangeTblEntry.alias:type_name -> pg_query.Alias + 84, // 595: pg_query.RangeTblEntry.eref:type_name -> pg_query.Alias + 10, // 596: pg_query.RangeTblEntry.rtekind:type_name -> pg_query.RTEKind + 184, // 597: pg_query.RangeTblEntry.tablesample:type_name -> pg_query.TableSampleClause + 147, // 598: pg_query.RangeTblEntry.subquery:type_name -> pg_query.Query + 59, // 599: pg_query.RangeTblEntry.jointype:type_name -> pg_query.JoinType + 74, // 600: pg_query.RangeTblEntry.joinaliasvars:type_name -> pg_query.Node + 74, // 601: pg_query.RangeTblEntry.joinleftcols:type_name -> pg_query.Node + 74, // 602: pg_query.RangeTblEntry.joinrightcols:type_name -> pg_query.Node + 84, // 603: pg_query.RangeTblEntry.join_using_alias:type_name -> pg_query.Alias + 74, // 604: pg_query.RangeTblEntry.functions:type_name -> pg_query.Node + 86, // 605: pg_query.RangeTblEntry.tablefunc:type_name -> pg_query.TableFunc + 74, // 606: pg_query.RangeTblEntry.values_lists:type_name -> pg_query.Node + 74, // 607: pg_query.RangeTblEntry.coltypes:type_name -> pg_query.Node + 74, // 608: pg_query.RangeTblEntry.coltypmods:type_name -> pg_query.Node + 74, // 609: pg_query.RangeTblEntry.colcollations:type_name -> pg_query.Node + 74, // 610: pg_query.RangeTblEntry.security_quals:type_name -> pg_query.Node + 74, // 611: pg_query.RangeTblFunction.funcexpr:type_name -> pg_query.Node + 74, // 612: pg_query.RangeTblFunction.funccolnames:type_name -> pg_query.Node + 74, // 613: pg_query.RangeTblFunction.funccoltypes:type_name -> pg_query.Node + 74, // 614: pg_query.RangeTblFunction.funccoltypmods:type_name -> pg_query.Node + 74, // 615: pg_query.RangeTblFunction.funccolcollations:type_name -> pg_query.Node + 74, // 616: pg_query.TableSampleClause.args:type_name -> pg_query.Node + 74, // 617: pg_query.TableSampleClause.repeatable:type_name -> pg_query.Node + 11, // 618: pg_query.WithCheckOption.kind:type_name -> pg_query.WCOKind + 74, // 619: pg_query.WithCheckOption.qual:type_name -> pg_query.Node + 12, // 620: pg_query.GroupingSet.kind:type_name -> pg_query.GroupingSetKind + 74, // 621: pg_query.GroupingSet.content:type_name -> pg_query.Node + 74, // 622: pg_query.WindowClause.partition_clause:type_name -> pg_query.Node + 74, // 623: pg_query.WindowClause.order_clause:type_name -> pg_query.Node + 74, // 624: pg_query.WindowClause.start_offset:type_name -> pg_query.Node + 74, // 625: pg_query.WindowClause.end_offset:type_name -> pg_query.Node + 66, // 626: pg_query.RowMarkClause.strength:type_name -> pg_query.LockClauseStrength + 67, // 627: pg_query.RowMarkClause.wait_policy:type_name -> pg_query.LockWaitPolicy + 74, // 628: pg_query.WithClause.ctes:type_name -> pg_query.Node + 74, // 629: pg_query.InferClause.index_elems:type_name -> pg_query.Node + 74, // 630: pg_query.InferClause.where_clause:type_name -> pg_query.Node + 64, // 631: pg_query.OnConflictClause.action:type_name -> pg_query.OnConflictAction + 191, // 632: pg_query.OnConflictClause.infer:type_name -> pg_query.InferClause + 74, // 633: pg_query.OnConflictClause.target_list:type_name -> pg_query.Node + 74, // 634: pg_query.OnConflictClause.where_clause:type_name -> pg_query.Node + 74, // 635: pg_query.CTESearchClause.search_col_list:type_name -> pg_query.Node + 74, // 636: pg_query.CTECycleClause.cycle_col_list:type_name -> pg_query.Node + 74, // 637: pg_query.CTECycleClause.cycle_mark_value:type_name -> pg_query.Node + 74, // 638: pg_query.CTECycleClause.cycle_mark_default:type_name -> pg_query.Node + 74, // 639: pg_query.CommonTableExpr.aliascolnames:type_name -> pg_query.Node + 13, // 640: pg_query.CommonTableExpr.ctematerialized:type_name -> pg_query.CTEMaterialize + 74, // 641: pg_query.CommonTableExpr.ctequery:type_name -> pg_query.Node + 193, // 642: pg_query.CommonTableExpr.search_clause:type_name -> pg_query.CTESearchClause + 194, // 643: pg_query.CommonTableExpr.cycle_clause:type_name -> pg_query.CTECycleClause + 74, // 644: pg_query.CommonTableExpr.ctecolnames:type_name -> pg_query.Node + 74, // 645: pg_query.CommonTableExpr.ctecoltypes:type_name -> pg_query.Node + 74, // 646: pg_query.CommonTableExpr.ctecoltypmods:type_name -> pg_query.Node + 74, // 647: pg_query.CommonTableExpr.ctecolcollations:type_name -> pg_query.Node + 57, // 648: pg_query.MergeWhenClause.match_kind:type_name -> pg_query.MergeMatchKind + 58, // 649: pg_query.MergeWhenClause.command_type:type_name -> pg_query.CmdType + 35, // 650: pg_query.MergeWhenClause.override:type_name -> pg_query.OverridingKind + 74, // 651: pg_query.MergeWhenClause.condition:type_name -> pg_query.Node + 74, // 652: pg_query.MergeWhenClause.target_list:type_name -> pg_query.Node + 74, // 653: pg_query.MergeWhenClause.values:type_name -> pg_query.Node + 148, // 654: pg_query.JsonOutput.type_name:type_name -> pg_query.TypeName + 124, // 655: pg_query.JsonOutput.returning:type_name -> pg_query.JsonReturning + 125, // 656: pg_query.JsonArgument.val:type_name -> pg_query.JsonValueExpr + 54, // 657: pg_query.JsonFuncExpr.op:type_name -> pg_query.JsonExprOp + 125, // 658: pg_query.JsonFuncExpr.context_item:type_name -> pg_query.JsonValueExpr + 74, // 659: pg_query.JsonFuncExpr.pathspec:type_name -> pg_query.Node + 74, // 660: pg_query.JsonFuncExpr.passing:type_name -> pg_query.Node + 198, // 661: pg_query.JsonFuncExpr.output:type_name -> pg_query.JsonOutput + 128, // 662: pg_query.JsonFuncExpr.on_empty:type_name -> pg_query.JsonBehavior + 128, // 663: pg_query.JsonFuncExpr.on_error:type_name -> pg_query.JsonBehavior + 52, // 664: pg_query.JsonFuncExpr.wrapper:type_name -> pg_query.JsonWrapper + 14, // 665: pg_query.JsonFuncExpr.quotes:type_name -> pg_query.JsonQuotes + 74, // 666: pg_query.JsonTablePathSpec.string:type_name -> pg_query.Node + 125, // 667: pg_query.JsonTable.context_item:type_name -> pg_query.JsonValueExpr + 201, // 668: pg_query.JsonTable.pathspec:type_name -> pg_query.JsonTablePathSpec + 74, // 669: pg_query.JsonTable.passing:type_name -> pg_query.Node + 74, // 670: pg_query.JsonTable.columns:type_name -> pg_query.Node + 128, // 671: pg_query.JsonTable.on_error:type_name -> pg_query.JsonBehavior + 84, // 672: pg_query.JsonTable.alias:type_name -> pg_query.Alias + 15, // 673: pg_query.JsonTableColumn.coltype:type_name -> pg_query.JsonTableColumnType + 148, // 674: pg_query.JsonTableColumn.type_name:type_name -> pg_query.TypeName + 201, // 675: pg_query.JsonTableColumn.pathspec:type_name -> pg_query.JsonTablePathSpec + 123, // 676: pg_query.JsonTableColumn.format:type_name -> pg_query.JsonFormat + 52, // 677: pg_query.JsonTableColumn.wrapper:type_name -> pg_query.JsonWrapper + 14, // 678: pg_query.JsonTableColumn.quotes:type_name -> pg_query.JsonQuotes + 74, // 679: pg_query.JsonTableColumn.columns:type_name -> pg_query.Node + 128, // 680: pg_query.JsonTableColumn.on_empty:type_name -> pg_query.JsonBehavior + 128, // 681: pg_query.JsonTableColumn.on_error:type_name -> pg_query.JsonBehavior + 74, // 682: pg_query.JsonKeyValue.key:type_name -> pg_query.Node + 125, // 683: pg_query.JsonKeyValue.value:type_name -> pg_query.JsonValueExpr + 125, // 684: pg_query.JsonParseExpr.expr:type_name -> pg_query.JsonValueExpr + 198, // 685: pg_query.JsonParseExpr.output:type_name -> pg_query.JsonOutput + 74, // 686: pg_query.JsonScalarExpr.expr:type_name -> pg_query.Node + 198, // 687: pg_query.JsonScalarExpr.output:type_name -> pg_query.JsonOutput + 125, // 688: pg_query.JsonSerializeExpr.expr:type_name -> pg_query.JsonValueExpr + 198, // 689: pg_query.JsonSerializeExpr.output:type_name -> pg_query.JsonOutput + 74, // 690: pg_query.JsonObjectConstructor.exprs:type_name -> pg_query.Node + 198, // 691: pg_query.JsonObjectConstructor.output:type_name -> pg_query.JsonOutput + 74, // 692: pg_query.JsonArrayConstructor.exprs:type_name -> pg_query.Node + 198, // 693: pg_query.JsonArrayConstructor.output:type_name -> pg_query.JsonOutput + 74, // 694: pg_query.JsonArrayQueryConstructor.query:type_name -> pg_query.Node + 198, // 695: pg_query.JsonArrayQueryConstructor.output:type_name -> pg_query.JsonOutput + 123, // 696: pg_query.JsonArrayQueryConstructor.format:type_name -> pg_query.JsonFormat + 198, // 697: pg_query.JsonAggConstructor.output:type_name -> pg_query.JsonOutput + 74, // 698: pg_query.JsonAggConstructor.agg_filter:type_name -> pg_query.Node + 74, // 699: pg_query.JsonAggConstructor.agg_order:type_name -> pg_query.Node + 163, // 700: pg_query.JsonAggConstructor.over:type_name -> pg_query.WindowDef + 211, // 701: pg_query.JsonObjectAgg.constructor:type_name -> pg_query.JsonAggConstructor + 204, // 702: pg_query.JsonObjectAgg.arg:type_name -> pg_query.JsonKeyValue + 211, // 703: pg_query.JsonArrayAgg.constructor:type_name -> pg_query.JsonAggConstructor + 125, // 704: pg_query.JsonArrayAgg.arg:type_name -> pg_query.JsonValueExpr + 74, // 705: pg_query.RawStmt.stmt:type_name -> pg_query.Node + 85, // 706: pg_query.InsertStmt.relation:type_name -> pg_query.RangeVar + 74, // 707: pg_query.InsertStmt.cols:type_name -> pg_query.Node + 74, // 708: pg_query.InsertStmt.select_stmt:type_name -> pg_query.Node + 192, // 709: pg_query.InsertStmt.on_conflict_clause:type_name -> pg_query.OnConflictClause + 74, // 710: pg_query.InsertStmt.returning_list:type_name -> pg_query.Node + 190, // 711: pg_query.InsertStmt.with_clause:type_name -> pg_query.WithClause + 35, // 712: pg_query.InsertStmt.override:type_name -> pg_query.OverridingKind + 85, // 713: pg_query.DeleteStmt.relation:type_name -> pg_query.RangeVar + 74, // 714: pg_query.DeleteStmt.using_clause:type_name -> pg_query.Node + 74, // 715: pg_query.DeleteStmt.where_clause:type_name -> pg_query.Node + 74, // 716: pg_query.DeleteStmt.returning_list:type_name -> pg_query.Node + 190, // 717: pg_query.DeleteStmt.with_clause:type_name -> pg_query.WithClause + 85, // 718: pg_query.UpdateStmt.relation:type_name -> pg_query.RangeVar + 74, // 719: pg_query.UpdateStmt.target_list:type_name -> pg_query.Node + 74, // 720: pg_query.UpdateStmt.where_clause:type_name -> pg_query.Node + 74, // 721: pg_query.UpdateStmt.from_clause:type_name -> pg_query.Node + 74, // 722: pg_query.UpdateStmt.returning_list:type_name -> pg_query.Node + 190, // 723: pg_query.UpdateStmt.with_clause:type_name -> pg_query.WithClause + 85, // 724: pg_query.MergeStmt.relation:type_name -> pg_query.RangeVar + 74, // 725: pg_query.MergeStmt.source_relation:type_name -> pg_query.Node + 74, // 726: pg_query.MergeStmt.join_condition:type_name -> pg_query.Node + 74, // 727: pg_query.MergeStmt.merge_when_clauses:type_name -> pg_query.Node + 74, // 728: pg_query.MergeStmt.returning_list:type_name -> pg_query.Node + 190, // 729: pg_query.MergeStmt.with_clause:type_name -> pg_query.WithClause + 74, // 730: pg_query.SelectStmt.distinct_clause:type_name -> pg_query.Node + 87, // 731: pg_query.SelectStmt.into_clause:type_name -> pg_query.IntoClause + 74, // 732: pg_query.SelectStmt.target_list:type_name -> pg_query.Node + 74, // 733: pg_query.SelectStmt.from_clause:type_name -> pg_query.Node + 74, // 734: pg_query.SelectStmt.where_clause:type_name -> pg_query.Node + 74, // 735: pg_query.SelectStmt.group_clause:type_name -> pg_query.Node + 74, // 736: pg_query.SelectStmt.having_clause:type_name -> pg_query.Node + 74, // 737: pg_query.SelectStmt.window_clause:type_name -> pg_query.Node + 74, // 738: pg_query.SelectStmt.values_lists:type_name -> pg_query.Node + 74, // 739: pg_query.SelectStmt.sort_clause:type_name -> pg_query.Node + 74, // 740: pg_query.SelectStmt.limit_offset:type_name -> pg_query.Node + 74, // 741: pg_query.SelectStmt.limit_count:type_name -> pg_query.Node + 65, // 742: pg_query.SelectStmt.limit_option:type_name -> pg_query.LimitOption + 74, // 743: pg_query.SelectStmt.locking_clause:type_name -> pg_query.Node + 190, // 744: pg_query.SelectStmt.with_clause:type_name -> pg_query.WithClause + 16, // 745: pg_query.SelectStmt.op:type_name -> pg_query.SetOperation + 219, // 746: pg_query.SelectStmt.larg:type_name -> pg_query.SelectStmt + 219, // 747: pg_query.SelectStmt.rarg:type_name -> pg_query.SelectStmt + 16, // 748: pg_query.SetOperationStmt.op:type_name -> pg_query.SetOperation + 74, // 749: pg_query.SetOperationStmt.larg:type_name -> pg_query.Node + 74, // 750: pg_query.SetOperationStmt.rarg:type_name -> pg_query.Node + 74, // 751: pg_query.SetOperationStmt.col_types:type_name -> pg_query.Node + 74, // 752: pg_query.SetOperationStmt.col_typmods:type_name -> pg_query.Node + 74, // 753: pg_query.SetOperationStmt.col_collations:type_name -> pg_query.Node + 74, // 754: pg_query.SetOperationStmt.group_clauses:type_name -> pg_query.Node + 74, // 755: pg_query.ReturnStmt.returnval:type_name -> pg_query.Node + 74, // 756: pg_query.PLAssignStmt.indirection:type_name -> pg_query.Node + 219, // 757: pg_query.PLAssignStmt.val:type_name -> pg_query.SelectStmt + 154, // 758: pg_query.CreateSchemaStmt.authrole:type_name -> pg_query.RoleSpec + 74, // 759: pg_query.CreateSchemaStmt.schema_elts:type_name -> pg_query.Node + 85, // 760: pg_query.AlterTableStmt.relation:type_name -> pg_query.RangeVar + 74, // 761: pg_query.AlterTableStmt.cmds:type_name -> pg_query.Node + 17, // 762: pg_query.AlterTableStmt.objtype:type_name -> pg_query.ObjectType + 19, // 763: pg_query.AlterTableCmd.subtype:type_name -> pg_query.AlterTableType + 154, // 764: pg_query.AlterTableCmd.newowner:type_name -> pg_query.RoleSpec + 74, // 765: pg_query.AlterTableCmd.def:type_name -> pg_query.Node + 18, // 766: pg_query.AlterTableCmd.behavior:type_name -> pg_query.DropBehavior + 74, // 767: pg_query.AlterCollationStmt.collname:type_name -> pg_query.Node + 74, // 768: pg_query.AlterDomainStmt.type_name:type_name -> pg_query.Node + 74, // 769: pg_query.AlterDomainStmt.def:type_name -> pg_query.Node + 18, // 770: pg_query.AlterDomainStmt.behavior:type_name -> pg_query.DropBehavior + 20, // 771: pg_query.GrantStmt.targtype:type_name -> pg_query.GrantTargetType + 17, // 772: pg_query.GrantStmt.objtype:type_name -> pg_query.ObjectType + 74, // 773: pg_query.GrantStmt.objects:type_name -> pg_query.Node + 74, // 774: pg_query.GrantStmt.privileges:type_name -> pg_query.Node + 74, // 775: pg_query.GrantStmt.grantees:type_name -> pg_query.Node + 154, // 776: pg_query.GrantStmt.grantor:type_name -> pg_query.RoleSpec + 18, // 777: pg_query.GrantStmt.behavior:type_name -> pg_query.DropBehavior + 74, // 778: pg_query.ObjectWithArgs.objname:type_name -> pg_query.Node + 74, // 779: pg_query.ObjectWithArgs.objargs:type_name -> pg_query.Node + 74, // 780: pg_query.ObjectWithArgs.objfuncargs:type_name -> pg_query.Node + 74, // 781: pg_query.AccessPriv.cols:type_name -> pg_query.Node + 74, // 782: pg_query.GrantRoleStmt.granted_roles:type_name -> pg_query.Node + 74, // 783: pg_query.GrantRoleStmt.grantee_roles:type_name -> pg_query.Node + 74, // 784: pg_query.GrantRoleStmt.opt:type_name -> pg_query.Node + 154, // 785: pg_query.GrantRoleStmt.grantor:type_name -> pg_query.RoleSpec + 18, // 786: pg_query.GrantRoleStmt.behavior:type_name -> pg_query.DropBehavior + 74, // 787: pg_query.AlterDefaultPrivilegesStmt.options:type_name -> pg_query.Node + 229, // 788: pg_query.AlterDefaultPrivilegesStmt.action:type_name -> pg_query.GrantStmt + 85, // 789: pg_query.CopyStmt.relation:type_name -> pg_query.RangeVar + 74, // 790: pg_query.CopyStmt.query:type_name -> pg_query.Node + 74, // 791: pg_query.CopyStmt.attlist:type_name -> pg_query.Node + 74, // 792: pg_query.CopyStmt.options:type_name -> pg_query.Node + 74, // 793: pg_query.CopyStmt.where_clause:type_name -> pg_query.Node + 21, // 794: pg_query.VariableSetStmt.kind:type_name -> pg_query.VariableSetKind + 74, // 795: pg_query.VariableSetStmt.args:type_name -> pg_query.Node + 85, // 796: pg_query.CreateStmt.relation:type_name -> pg_query.RangeVar + 74, // 797: pg_query.CreateStmt.table_elts:type_name -> pg_query.Node + 74, // 798: pg_query.CreateStmt.inh_relations:type_name -> pg_query.Node + 177, // 799: pg_query.CreateStmt.partbound:type_name -> pg_query.PartitionBoundSpec + 176, // 800: pg_query.CreateStmt.partspec:type_name -> pg_query.PartitionSpec + 148, // 801: pg_query.CreateStmt.of_typename:type_name -> pg_query.TypeName + 74, // 802: pg_query.CreateStmt.constraints:type_name -> pg_query.Node + 74, // 803: pg_query.CreateStmt.options:type_name -> pg_query.Node + 36, // 804: pg_query.CreateStmt.oncommit:type_name -> pg_query.OnCommitAction + 22, // 805: pg_query.Constraint.contype:type_name -> pg_query.ConstrType + 74, // 806: pg_query.Constraint.raw_expr:type_name -> pg_query.Node + 74, // 807: pg_query.Constraint.keys:type_name -> pg_query.Node + 74, // 808: pg_query.Constraint.including:type_name -> pg_query.Node + 74, // 809: pg_query.Constraint.exclusions:type_name -> pg_query.Node + 74, // 810: pg_query.Constraint.options:type_name -> pg_query.Node + 74, // 811: pg_query.Constraint.where_clause:type_name -> pg_query.Node + 85, // 812: pg_query.Constraint.pktable:type_name -> pg_query.RangeVar + 74, // 813: pg_query.Constraint.fk_attrs:type_name -> pg_query.Node + 74, // 814: pg_query.Constraint.pk_attrs:type_name -> pg_query.Node + 74, // 815: pg_query.Constraint.fk_del_set_cols:type_name -> pg_query.Node + 74, // 816: pg_query.Constraint.old_conpfeqop:type_name -> pg_query.Node + 154, // 817: pg_query.CreateTableSpaceStmt.owner:type_name -> pg_query.RoleSpec + 74, // 818: pg_query.CreateTableSpaceStmt.options:type_name -> pg_query.Node + 74, // 819: pg_query.AlterTableSpaceOptionsStmt.options:type_name -> pg_query.Node + 17, // 820: pg_query.AlterTableMoveAllStmt.objtype:type_name -> pg_query.ObjectType + 74, // 821: pg_query.AlterTableMoveAllStmt.roles:type_name -> pg_query.Node + 74, // 822: pg_query.CreateExtensionStmt.options:type_name -> pg_query.Node + 74, // 823: pg_query.AlterExtensionStmt.options:type_name -> pg_query.Node + 17, // 824: pg_query.AlterExtensionContentsStmt.objtype:type_name -> pg_query.ObjectType + 74, // 825: pg_query.AlterExtensionContentsStmt.object:type_name -> pg_query.Node + 74, // 826: pg_query.CreateFdwStmt.func_options:type_name -> pg_query.Node + 74, // 827: pg_query.CreateFdwStmt.options:type_name -> pg_query.Node + 74, // 828: pg_query.AlterFdwStmt.func_options:type_name -> pg_query.Node + 74, // 829: pg_query.AlterFdwStmt.options:type_name -> pg_query.Node + 74, // 830: pg_query.CreateForeignServerStmt.options:type_name -> pg_query.Node + 74, // 831: pg_query.AlterForeignServerStmt.options:type_name -> pg_query.Node + 237, // 832: pg_query.CreateForeignTableStmt.base_stmt:type_name -> pg_query.CreateStmt + 74, // 833: pg_query.CreateForeignTableStmt.options:type_name -> pg_query.Node + 154, // 834: pg_query.CreateUserMappingStmt.user:type_name -> pg_query.RoleSpec + 74, // 835: pg_query.CreateUserMappingStmt.options:type_name -> pg_query.Node + 154, // 836: pg_query.AlterUserMappingStmt.user:type_name -> pg_query.RoleSpec + 74, // 837: pg_query.AlterUserMappingStmt.options:type_name -> pg_query.Node + 154, // 838: pg_query.DropUserMappingStmt.user:type_name -> pg_query.RoleSpec + 23, // 839: pg_query.ImportForeignSchemaStmt.list_type:type_name -> pg_query.ImportForeignSchemaType + 74, // 840: pg_query.ImportForeignSchemaStmt.table_list:type_name -> pg_query.Node + 74, // 841: pg_query.ImportForeignSchemaStmt.options:type_name -> pg_query.Node + 85, // 842: pg_query.CreatePolicyStmt.table:type_name -> pg_query.RangeVar + 74, // 843: pg_query.CreatePolicyStmt.roles:type_name -> pg_query.Node + 74, // 844: pg_query.CreatePolicyStmt.qual:type_name -> pg_query.Node + 74, // 845: pg_query.CreatePolicyStmt.with_check:type_name -> pg_query.Node + 85, // 846: pg_query.AlterPolicyStmt.table:type_name -> pg_query.RangeVar + 74, // 847: pg_query.AlterPolicyStmt.roles:type_name -> pg_query.Node + 74, // 848: pg_query.AlterPolicyStmt.qual:type_name -> pg_query.Node + 74, // 849: pg_query.AlterPolicyStmt.with_check:type_name -> pg_query.Node + 74, // 850: pg_query.CreateAmStmt.handler_name:type_name -> pg_query.Node + 85, // 851: pg_query.CreateTrigStmt.relation:type_name -> pg_query.RangeVar + 74, // 852: pg_query.CreateTrigStmt.funcname:type_name -> pg_query.Node + 74, // 853: pg_query.CreateTrigStmt.args:type_name -> pg_query.Node + 74, // 854: pg_query.CreateTrigStmt.columns:type_name -> pg_query.Node + 74, // 855: pg_query.CreateTrigStmt.when_clause:type_name -> pg_query.Node + 74, // 856: pg_query.CreateTrigStmt.transition_rels:type_name -> pg_query.Node + 85, // 857: pg_query.CreateTrigStmt.constrrel:type_name -> pg_query.RangeVar + 74, // 858: pg_query.CreateEventTrigStmt.whenclause:type_name -> pg_query.Node + 74, // 859: pg_query.CreateEventTrigStmt.funcname:type_name -> pg_query.Node + 74, // 860: pg_query.CreatePLangStmt.plhandler:type_name -> pg_query.Node + 74, // 861: pg_query.CreatePLangStmt.plinline:type_name -> pg_query.Node + 74, // 862: pg_query.CreatePLangStmt.plvalidator:type_name -> pg_query.Node + 24, // 863: pg_query.CreateRoleStmt.stmt_type:type_name -> pg_query.RoleStmtType + 74, // 864: pg_query.CreateRoleStmt.options:type_name -> pg_query.Node + 154, // 865: pg_query.AlterRoleStmt.role:type_name -> pg_query.RoleSpec + 74, // 866: pg_query.AlterRoleStmt.options:type_name -> pg_query.Node + 154, // 867: pg_query.AlterRoleSetStmt.role:type_name -> pg_query.RoleSpec + 235, // 868: pg_query.AlterRoleSetStmt.setstmt:type_name -> pg_query.VariableSetStmt + 74, // 869: pg_query.DropRoleStmt.roles:type_name -> pg_query.Node + 85, // 870: pg_query.CreateSeqStmt.sequence:type_name -> pg_query.RangeVar + 74, // 871: pg_query.CreateSeqStmt.options:type_name -> pg_query.Node + 85, // 872: pg_query.AlterSeqStmt.sequence:type_name -> pg_query.RangeVar + 74, // 873: pg_query.AlterSeqStmt.options:type_name -> pg_query.Node + 17, // 874: pg_query.DefineStmt.kind:type_name -> pg_query.ObjectType + 74, // 875: pg_query.DefineStmt.defnames:type_name -> pg_query.Node + 74, // 876: pg_query.DefineStmt.args:type_name -> pg_query.Node + 74, // 877: pg_query.DefineStmt.definition:type_name -> pg_query.Node + 74, // 878: pg_query.CreateDomainStmt.domainname:type_name -> pg_query.Node + 148, // 879: pg_query.CreateDomainStmt.type_name:type_name -> pg_query.TypeName + 153, // 880: pg_query.CreateDomainStmt.coll_clause:type_name -> pg_query.CollateClause + 74, // 881: pg_query.CreateDomainStmt.constraints:type_name -> pg_query.Node + 74, // 882: pg_query.CreateOpClassStmt.opclassname:type_name -> pg_query.Node + 74, // 883: pg_query.CreateOpClassStmt.opfamilyname:type_name -> pg_query.Node + 148, // 884: pg_query.CreateOpClassStmt.datatype:type_name -> pg_query.TypeName + 74, // 885: pg_query.CreateOpClassStmt.items:type_name -> pg_query.Node + 230, // 886: pg_query.CreateOpClassItem.name:type_name -> pg_query.ObjectWithArgs + 74, // 887: pg_query.CreateOpClassItem.order_family:type_name -> pg_query.Node + 74, // 888: pg_query.CreateOpClassItem.class_args:type_name -> pg_query.Node + 148, // 889: pg_query.CreateOpClassItem.storedtype:type_name -> pg_query.TypeName + 74, // 890: pg_query.CreateOpFamilyStmt.opfamilyname:type_name -> pg_query.Node + 74, // 891: pg_query.AlterOpFamilyStmt.opfamilyname:type_name -> pg_query.Node + 74, // 892: pg_query.AlterOpFamilyStmt.items:type_name -> pg_query.Node + 74, // 893: pg_query.DropStmt.objects:type_name -> pg_query.Node + 17, // 894: pg_query.DropStmt.remove_type:type_name -> pg_query.ObjectType + 18, // 895: pg_query.DropStmt.behavior:type_name -> pg_query.DropBehavior + 74, // 896: pg_query.TruncateStmt.relations:type_name -> pg_query.Node + 18, // 897: pg_query.TruncateStmt.behavior:type_name -> pg_query.DropBehavior + 17, // 898: pg_query.CommentStmt.objtype:type_name -> pg_query.ObjectType + 74, // 899: pg_query.CommentStmt.object:type_name -> pg_query.Node + 17, // 900: pg_query.SecLabelStmt.objtype:type_name -> pg_query.ObjectType + 74, // 901: pg_query.SecLabelStmt.object:type_name -> pg_query.Node + 74, // 902: pg_query.DeclareCursorStmt.query:type_name -> pg_query.Node + 25, // 903: pg_query.FetchStmt.direction:type_name -> pg_query.FetchDirection + 85, // 904: pg_query.IndexStmt.relation:type_name -> pg_query.RangeVar + 74, // 905: pg_query.IndexStmt.index_params:type_name -> pg_query.Node + 74, // 906: pg_query.IndexStmt.index_including_params:type_name -> pg_query.Node + 74, // 907: pg_query.IndexStmt.options:type_name -> pg_query.Node + 74, // 908: pg_query.IndexStmt.where_clause:type_name -> pg_query.Node + 74, // 909: pg_query.IndexStmt.exclude_op_names:type_name -> pg_query.Node + 74, // 910: pg_query.CreateStatsStmt.defnames:type_name -> pg_query.Node + 74, // 911: pg_query.CreateStatsStmt.stat_types:type_name -> pg_query.Node + 74, // 912: pg_query.CreateStatsStmt.exprs:type_name -> pg_query.Node + 74, // 913: pg_query.CreateStatsStmt.relations:type_name -> pg_query.Node + 74, // 914: pg_query.StatsElem.expr:type_name -> pg_query.Node + 74, // 915: pg_query.AlterStatsStmt.defnames:type_name -> pg_query.Node + 74, // 916: pg_query.AlterStatsStmt.stxstattarget:type_name -> pg_query.Node + 74, // 917: pg_query.CreateFunctionStmt.funcname:type_name -> pg_query.Node + 74, // 918: pg_query.CreateFunctionStmt.parameters:type_name -> pg_query.Node + 148, // 919: pg_query.CreateFunctionStmt.return_type:type_name -> pg_query.TypeName + 74, // 920: pg_query.CreateFunctionStmt.options:type_name -> pg_query.Node + 74, // 921: pg_query.CreateFunctionStmt.sql_body:type_name -> pg_query.Node + 148, // 922: pg_query.FunctionParameter.arg_type:type_name -> pg_query.TypeName + 26, // 923: pg_query.FunctionParameter.mode:type_name -> pg_query.FunctionParameterMode + 74, // 924: pg_query.FunctionParameter.defexpr:type_name -> pg_query.Node + 17, // 925: pg_query.AlterFunctionStmt.objtype:type_name -> pg_query.ObjectType + 230, // 926: pg_query.AlterFunctionStmt.func:type_name -> pg_query.ObjectWithArgs + 74, // 927: pg_query.AlterFunctionStmt.actions:type_name -> pg_query.Node + 74, // 928: pg_query.DoStmt.args:type_name -> pg_query.Node + 155, // 929: pg_query.CallStmt.funccall:type_name -> pg_query.FuncCall + 96, // 930: pg_query.CallStmt.funcexpr:type_name -> pg_query.FuncExpr + 74, // 931: pg_query.CallStmt.outargs:type_name -> pg_query.Node + 17, // 932: pg_query.RenameStmt.rename_type:type_name -> pg_query.ObjectType + 17, // 933: pg_query.RenameStmt.relation_type:type_name -> pg_query.ObjectType + 85, // 934: pg_query.RenameStmt.relation:type_name -> pg_query.RangeVar + 74, // 935: pg_query.RenameStmt.object:type_name -> pg_query.Node + 18, // 936: pg_query.RenameStmt.behavior:type_name -> pg_query.DropBehavior + 17, // 937: pg_query.AlterObjectDependsStmt.object_type:type_name -> pg_query.ObjectType + 85, // 938: pg_query.AlterObjectDependsStmt.relation:type_name -> pg_query.RangeVar + 74, // 939: pg_query.AlterObjectDependsStmt.object:type_name -> pg_query.Node + 78, // 940: pg_query.AlterObjectDependsStmt.extname:type_name -> pg_query.String + 17, // 941: pg_query.AlterObjectSchemaStmt.object_type:type_name -> pg_query.ObjectType + 85, // 942: pg_query.AlterObjectSchemaStmt.relation:type_name -> pg_query.RangeVar + 74, // 943: pg_query.AlterObjectSchemaStmt.object:type_name -> pg_query.Node + 17, // 944: pg_query.AlterOwnerStmt.object_type:type_name -> pg_query.ObjectType + 85, // 945: pg_query.AlterOwnerStmt.relation:type_name -> pg_query.RangeVar + 74, // 946: pg_query.AlterOwnerStmt.object:type_name -> pg_query.Node + 154, // 947: pg_query.AlterOwnerStmt.newowner:type_name -> pg_query.RoleSpec + 230, // 948: pg_query.AlterOperatorStmt.opername:type_name -> pg_query.ObjectWithArgs + 74, // 949: pg_query.AlterOperatorStmt.options:type_name -> pg_query.Node + 74, // 950: pg_query.AlterTypeStmt.type_name:type_name -> pg_query.Node + 74, // 951: pg_query.AlterTypeStmt.options:type_name -> pg_query.Node + 85, // 952: pg_query.RuleStmt.relation:type_name -> pg_query.RangeVar + 74, // 953: pg_query.RuleStmt.where_clause:type_name -> pg_query.Node + 58, // 954: pg_query.RuleStmt.event:type_name -> pg_query.CmdType + 74, // 955: pg_query.RuleStmt.actions:type_name -> pg_query.Node + 27, // 956: pg_query.TransactionStmt.kind:type_name -> pg_query.TransactionStmtKind + 74, // 957: pg_query.TransactionStmt.options:type_name -> pg_query.Node + 85, // 958: pg_query.CompositeTypeStmt.typevar:type_name -> pg_query.RangeVar + 74, // 959: pg_query.CompositeTypeStmt.coldeflist:type_name -> pg_query.Node + 74, // 960: pg_query.CreateEnumStmt.type_name:type_name -> pg_query.Node + 74, // 961: pg_query.CreateEnumStmt.vals:type_name -> pg_query.Node + 74, // 962: pg_query.CreateRangeStmt.type_name:type_name -> pg_query.Node + 74, // 963: pg_query.CreateRangeStmt.params:type_name -> pg_query.Node + 74, // 964: pg_query.AlterEnumStmt.type_name:type_name -> pg_query.Node + 85, // 965: pg_query.ViewStmt.view:type_name -> pg_query.RangeVar + 74, // 966: pg_query.ViewStmt.aliases:type_name -> pg_query.Node + 74, // 967: pg_query.ViewStmt.query:type_name -> pg_query.Node + 74, // 968: pg_query.ViewStmt.options:type_name -> pg_query.Node + 28, // 969: pg_query.ViewStmt.with_check_option:type_name -> pg_query.ViewCheckOption + 74, // 970: pg_query.CreatedbStmt.options:type_name -> pg_query.Node + 74, // 971: pg_query.AlterDatabaseStmt.options:type_name -> pg_query.Node + 235, // 972: pg_query.AlterDatabaseSetStmt.setstmt:type_name -> pg_query.VariableSetStmt + 74, // 973: pg_query.DropdbStmt.options:type_name -> pg_query.Node + 235, // 974: pg_query.AlterSystemStmt.setstmt:type_name -> pg_query.VariableSetStmt + 85, // 975: pg_query.ClusterStmt.relation:type_name -> pg_query.RangeVar + 74, // 976: pg_query.ClusterStmt.params:type_name -> pg_query.Node + 74, // 977: pg_query.VacuumStmt.options:type_name -> pg_query.Node + 74, // 978: pg_query.VacuumStmt.rels:type_name -> pg_query.Node + 85, // 979: pg_query.VacuumRelation.relation:type_name -> pg_query.RangeVar + 74, // 980: pg_query.VacuumRelation.va_cols:type_name -> pg_query.Node + 74, // 981: pg_query.ExplainStmt.query:type_name -> pg_query.Node + 74, // 982: pg_query.ExplainStmt.options:type_name -> pg_query.Node + 74, // 983: pg_query.CreateTableAsStmt.query:type_name -> pg_query.Node + 87, // 984: pg_query.CreateTableAsStmt.into:type_name -> pg_query.IntoClause + 17, // 985: pg_query.CreateTableAsStmt.objtype:type_name -> pg_query.ObjectType + 85, // 986: pg_query.RefreshMatViewStmt.relation:type_name -> pg_query.RangeVar + 29, // 987: pg_query.DiscardStmt.target:type_name -> pg_query.DiscardMode + 74, // 988: pg_query.LockStmt.relations:type_name -> pg_query.Node + 74, // 989: pg_query.ConstraintsSetStmt.constraints:type_name -> pg_query.Node + 30, // 990: pg_query.ReindexStmt.kind:type_name -> pg_query.ReindexObjectType + 85, // 991: pg_query.ReindexStmt.relation:type_name -> pg_query.RangeVar + 74, // 992: pg_query.ReindexStmt.params:type_name -> pg_query.Node + 74, // 993: pg_query.CreateConversionStmt.conversion_name:type_name -> pg_query.Node + 74, // 994: pg_query.CreateConversionStmt.func_name:type_name -> pg_query.Node + 148, // 995: pg_query.CreateCastStmt.sourcetype:type_name -> pg_query.TypeName + 148, // 996: pg_query.CreateCastStmt.targettype:type_name -> pg_query.TypeName + 230, // 997: pg_query.CreateCastStmt.func:type_name -> pg_query.ObjectWithArgs + 39, // 998: pg_query.CreateCastStmt.context:type_name -> pg_query.CoercionContext + 148, // 999: pg_query.CreateTransformStmt.type_name:type_name -> pg_query.TypeName + 230, // 1000: pg_query.CreateTransformStmt.fromsql:type_name -> pg_query.ObjectWithArgs + 230, // 1001: pg_query.CreateTransformStmt.tosql:type_name -> pg_query.ObjectWithArgs + 74, // 1002: pg_query.PrepareStmt.argtypes:type_name -> pg_query.Node + 74, // 1003: pg_query.PrepareStmt.query:type_name -> pg_query.Node + 74, // 1004: pg_query.ExecuteStmt.params:type_name -> pg_query.Node + 74, // 1005: pg_query.DropOwnedStmt.roles:type_name -> pg_query.Node + 18, // 1006: pg_query.DropOwnedStmt.behavior:type_name -> pg_query.DropBehavior + 74, // 1007: pg_query.ReassignOwnedStmt.roles:type_name -> pg_query.Node + 154, // 1008: pg_query.ReassignOwnedStmt.newrole:type_name -> pg_query.RoleSpec + 74, // 1009: pg_query.AlterTSDictionaryStmt.dictname:type_name -> pg_query.Node + 74, // 1010: pg_query.AlterTSDictionaryStmt.options:type_name -> pg_query.Node + 31, // 1011: pg_query.AlterTSConfigurationStmt.kind:type_name -> pg_query.AlterTSConfigType + 74, // 1012: pg_query.AlterTSConfigurationStmt.cfgname:type_name -> pg_query.Node + 74, // 1013: pg_query.AlterTSConfigurationStmt.tokentype:type_name -> pg_query.Node + 74, // 1014: pg_query.AlterTSConfigurationStmt.dicts:type_name -> pg_query.Node + 85, // 1015: pg_query.PublicationTable.relation:type_name -> pg_query.RangeVar + 74, // 1016: pg_query.PublicationTable.where_clause:type_name -> pg_query.Node + 74, // 1017: pg_query.PublicationTable.columns:type_name -> pg_query.Node + 32, // 1018: pg_query.PublicationObjSpec.pubobjtype:type_name -> pg_query.PublicationObjSpecType + 336, // 1019: pg_query.PublicationObjSpec.pubtable:type_name -> pg_query.PublicationTable + 74, // 1020: pg_query.CreatePublicationStmt.options:type_name -> pg_query.Node + 74, // 1021: pg_query.CreatePublicationStmt.pubobjects:type_name -> pg_query.Node + 74, // 1022: pg_query.AlterPublicationStmt.options:type_name -> pg_query.Node + 74, // 1023: pg_query.AlterPublicationStmt.pubobjects:type_name -> pg_query.Node + 33, // 1024: pg_query.AlterPublicationStmt.action:type_name -> pg_query.AlterPublicationAction + 74, // 1025: pg_query.CreateSubscriptionStmt.publication:type_name -> pg_query.Node + 74, // 1026: pg_query.CreateSubscriptionStmt.options:type_name -> pg_query.Node + 34, // 1027: pg_query.AlterSubscriptionStmt.kind:type_name -> pg_query.AlterSubscriptionType + 74, // 1028: pg_query.AlterSubscriptionStmt.publication:type_name -> pg_query.Node + 74, // 1029: pg_query.AlterSubscriptionStmt.options:type_name -> pg_query.Node + 18, // 1030: pg_query.DropSubscriptionStmt.behavior:type_name -> pg_query.DropBehavior + 70, // 1031: pg_query.ScanToken.token:type_name -> pg_query.Token + 69, // 1032: pg_query.ScanToken.keyword_kind:type_name -> pg_query.KeywordKind + 345, // 1033: pg_query.SummaryResult.tables:type_name -> pg_query.SummaryResult.Table + 346, // 1034: pg_query.SummaryResult.aliases:type_name -> pg_query.SummaryResult.AliasesEntry + 347, // 1035: pg_query.SummaryResult.functions:type_name -> pg_query.SummaryResult.Function + 348, // 1036: pg_query.SummaryResult.filter_columns:type_name -> pg_query.SummaryResult.FilterColumn + 71, // 1037: pg_query.SummaryResult.Table.context:type_name -> pg_query.SummaryResult.Context + 71, // 1038: pg_query.SummaryResult.Function.context:type_name -> pg_query.SummaryResult.Context + 1039, // [1039:1039] is the sub-list for method output_type + 1039, // [1039:1039] is the sub-list for method input_type + 1039, // [1039:1039] is the sub-list for extension type_name + 1039, // [1039:1039] is the sub-list for extension extendee + 0, // [0:1039] 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_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_SinglePartitionSpec)(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_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_ReplicaIdentityStmt)(nil), + (*Node_AlterTableCmd)(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: 72, + NumMessages: 277, + 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 index 4d14f8c..e604912 100644 --- a/internal/pgparse/pgparse.go +++ b/internal/pgparse/pgparse.go @@ -15,10 +15,11 @@ import ( "context" _ "embed" "fmt" + "os" + "path/filepath" "strings" "sync" - pg_query "github.com/pganalyze/pg_query_go/v6" "github.com/tetratelabs/wazero" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/imports/emscripten" @@ -55,7 +56,7 @@ var pg17 = &module{wasm: wasm17} func (m *module) compile() error { m.once.Do(func() { ctx := context.Background() - m.runtime = wazero.NewRuntime(ctx) + m.runtime = wazero.NewRuntimeWithConfig(ctx, runtimeConfig()) if _, err := wasi_snapshot_preview1.Instantiate(ctx, m.runtime); err != nil { m.err = err return @@ -73,6 +74,24 @@ func (m *module) compile() error { 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 @@ -224,12 +243,12 @@ func (m *module) parseProtobuf(sql string) (out []byte, err error) { } // Parse parses sql into a parse tree. -func Parse(sql string) (*pg_query.ParseResult, error) { +func Parse(sql string) (*ParseResult, error) { b, err := pg17.parseProtobuf(sql) if err != nil { return nil, err } - tree := &pg_query.ParseResult{} + tree := &ParseResult{} if err := proto.Unmarshal(b, tree); err != nil { return nil, fmt.Errorf("pgparse: decoding parse tree: %w", err) } @@ -237,7 +256,7 @@ func Parse(sql string) (*pg_query.ParseResult, error) { } // Deparse renders a parse tree back to SQL. -func Deparse(tree *pg_query.ParseResult) (out string, err error) { +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) diff --git a/internal/pgparse/pgparse_test.go b/internal/pgparse/pgparse_test.go index e10815e..be317a2 100644 --- a/internal/pgparse/pgparse_test.go +++ b/internal/pgparse/pgparse_test.go @@ -4,57 +4,41 @@ import ( "strings" "sync" "testing" - - pg_query "github.com/pganalyze/pg_query_go/v6" - "github.com/pganalyze/pg_query_go/v6/parser" - "google.golang.org/protobuf/proto" ) -var statements = []string{ - "SELECT 1", - "SELECT a FROM t WHERE b = $1 AND c IN (1,2)", - "INSERT INTO t (a) VALUES (1) ON CONFLICT (a) DO UPDATE SET a = excluded.a RETURNING *", - "WITH d AS (DELETE FROM ledger WHERE id = $1 RETURNING amount) SELECT amount FROM d", - "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)", - "SELECT * FROM json_table(j, '$[*]' COLUMNS (a int PATH '$.a')) AS jt", - "SELECT json_table(j) FROM t", // rejected by both - "CREATE TABLE t (id bigint PRIMARY KEY, s text NOT NULL CHECK (s IN ('a','b')), FOREIGN KEY (id) REFERENCES p (id))", - "SELECT * FROM t WHERE x = 'it''s' AND y = E'\\n' AND z = $$dollar$$", - "SELECT 'ünïcödé', 'あ' FROM t; SELECT 2", -} +// 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. -// TestParseMatchesCgo: the wasm parser's protobuf bytes are the cgo parser's. -func TestParseMatchesCgo(t *testing.T) { - for _, sql := range statements { - want, cgoErr := parser.ParseToProtobuf(sql) - got, err := pg17.parseProtobuf(sql) - if cgoErr != nil || err != nil { - if err == nil || cgoErr == nil || err.Error() != cgoErr.Error() { - t.Errorf("%q: wasm %v, cgo %v", sql, err, cgoErr) - } - continue - } - if string(got) != string(want) { - t.Errorf("%q: protobuf differs (%d vs %d bytes)", sql, len(got), len(want)) - } +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 cgo's message and -// position, and the instance keeps working afterwards. +// 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 i := 0; i < 3; i++ { + for range 3 { _, err := Parse("SELECT id FROM WHERE") e, ok := err.(*Error) if !ok { t.Fatalf("got %v, want *Error", err) } - _, cgoErr := pg_query.Parse("SELECT id FROM WHERE") - if e.Message != cgoErr.Error() { - t.Errorf("message %q, cgo %q", e.Message, cgoErr) - } - if e.Cursorpos != cgoErr.(*parser.Error).Cursorpos { - t.Errorf("cursor %d, cgo %d", e.Cursorpos, cgoErr.(*parser.Error).Cursorpos) + 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) @@ -63,7 +47,7 @@ func TestParseError(t *testing.T) { } func TestDeparse(t *testing.T) { - tree, err := Parse("SELECT a, b FROM t WHERE c = 1 ORDER BY a") + tree, err := Parse("select a,b from t where c=1 order by a") if err != nil { t.Fatal(err) } @@ -71,38 +55,40 @@ func TestDeparse(t *testing.T) { if err != nil { t.Fatal(err) } - want, _ := pg_query.Deparse(tree) - if got != want { + 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) { - src := "CREATE FUNCTION f() RETURNS int LANGUAGE plpgsql AS $$ DECLARE x int := 1; BEGIN RETURN x + 1; END $$" - got, err := ParsePlPgSqlToJSON(src) + 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) } - want, _ := pg_query.ParsePlPgSqlToJSON(src) - if got != want { - t.Errorf("got %q, want %q", got, want) + if !strings.Contains(got, `"PLpgSQL_stmt_return"`) || !strings.Contains(got, `"x"`) { + t.Errorf("unexpected JSON: %s", got) } - if _, err := ParsePlPgSqlToJSON("CREATE FUNCTION f() RETURNS int LANGUAGE plpgsql AS $$ BEGIN RETRUN 1; END $$"); err == nil { - t.Error("want an error for a PL/pgSQL syntax error") + _, 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" - for _, trim := range []bool{false, true} { - got, err := SplitWithScanner(src, trim) - if err != nil { - t.Fatal(err) - } - want, _ := pg_query.SplitWithScanner(src, trim) - if strings.Join(got, "|") != strings.Join(want, "|") { - t.Errorf("trim=%v: got %q, want %q", trim, got, want) - } + 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") @@ -111,14 +97,18 @@ func TestSplitWithScanner(t *testing.T) { // TestConcurrent: parallel callers each get a working instance. func TestConcurrent(t *testing.T) { - want, _ := parser.ParseToProtobuf(statements[4]) + 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.parseProtobuf(sql) + if err != nil { + t.Fatal(err) + } var wg sync.WaitGroup - for g := 0; g < 16; g++ { + for range 16 { wg.Add(1) go func() { defer wg.Done() - for i := 0; i < 50; i++ { - got, err := pg17.parseProtobuf(statements[4]) + for range 50 { + got, err := pg17.parseProtobuf(sql) if err != nil || string(got) != string(want) { t.Errorf("concurrent parse: err=%v same=%v", err, string(got) == string(want)) return @@ -133,15 +123,7 @@ func TestConcurrent(t *testing.T) { } func BenchmarkParse(b *testing.B) { - for i := 0; i < b.N; i++ { - pg17.parseProtobuf(statements[4]) - } -} - -func BenchmarkParseCgo(b *testing.B) { - for i := 0; i < b.N; i++ { - parser.ParseToProtobuf(statements[4]) + for range b.N { + pg17.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") } } - -var _ = proto.Marshal diff --git a/internal/pgparse/wasm/build.sh b/internal/pgparse/wasm/build.sh index 45e3449..0740508 100755 --- a/internal/pgparse/wasm/build.sh +++ b/internal/pgparse/wasm/build.sh @@ -1,10 +1,12 @@ #!/usr/bin/env bash -# Builds pg_query_.wasm from a libpg_query checkout with emscripten. +# Builds pg_query_.wasm from a libpg_query checkout with emscripten, and regenerates +# the Go node types (../pg_query.pb.go) from that checkout's pg_query.proto. # # build.sh e.g. build.sh 17-6.2.2 # # The tag is cloned (shallow) into $LIBPG_QUERY_CACHE (default ~/.cache/sqlshape/libpg_query) -# unless already present. Needs emcc on PATH: `nix-shell -p emscripten --run "./build.sh 17-6.2.2"`. +# 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 -> @@ -42,3 +44,7 @@ emcc -O2 -std=gnu99 -fwrapv -fno-strict-aliasing \ -sERROR_ON_UNDEFINED_SYMBOLS=0 --no-entry \ -o "$out" $srcs "$here/shim.c" ls -la "$out" +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/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/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 d3eb414..72460b0 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -14,7 +14,6 @@ import ( "strings" "unicode/utf8" - pg_query "github.com/pganalyze/pg_query_go/v6" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" @@ -23,7 +22,7 @@ import ( ) // 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 { @@ -67,9 +66,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. @@ -211,7 +210,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). @@ -511,7 +510,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 @@ -652,51 +651,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 { @@ -704,24 +703,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 @@ -741,35 +740,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{} } @@ -782,29 +781,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) @@ -813,7 +812,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()) @@ -831,7 +830,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() @@ -842,7 +841,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() } @@ -856,7 +855,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") } @@ -915,7 +914,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": @@ -926,7 +925,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() @@ -935,7 +934,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() @@ -951,9 +950,9 @@ func (s *Schema) createDomain(st *pg_query.CreateDomainStmt, loc int32) { 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 { @@ -966,7 +965,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()) } @@ -974,7 +973,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++ @@ -1005,7 +1004,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 { @@ -1020,7 +1019,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) @@ -1074,11 +1073,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) @@ -1107,7 +1106,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]) @@ -1119,11 +1118,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 { @@ -1150,7 +1149,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) @@ -1183,38 +1182,38 @@ 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: + 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: + case pgparse.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_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_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'} if c.FkDelAction != "" { @@ -1238,9 +1237,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 { @@ -1255,15 +1254,15 @@ func (s *Schema) addTableConstraint(rel *Relation, c *pg_query.Constraint) { // 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: + case pgparse.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: + case pgparse.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_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() @@ -1284,7 +1283,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 { @@ -1318,9 +1317,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 @@ -1374,7 +1373,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 @@ -1385,7 +1384,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 { @@ -1396,7 +1395,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 } } @@ -1406,7 +1405,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 { @@ -1414,23 +1413,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 { @@ -1443,7 +1442,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 @@ -1459,7 +1458,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 @@ -1480,13 +1479,13 @@ 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 { s.problem(loc, "%s: constraint %q does not exist", rel.Name, cmd.Name) } - case pg_query.AlterTableType_AT_AddIdentity: + case pgparse.AlterTableType_AT_AddIdentity: if col := rel.Column(cmd.Name); col != nil && col.Identity == 0 { col.NotNull = true col.Identity = 'd' @@ -1495,11 +1494,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()) @@ -1508,7 +1507,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 { @@ -1532,7 +1531,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] @@ -1540,7 +1539,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 @@ -1564,12 +1563,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() { @@ -1587,38 +1586,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_AlterConstraint, 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 { @@ -1650,7 +1649,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() @@ -1687,15 +1686,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) } @@ -1770,14 +1769,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: @@ -1793,7 +1792,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 @@ -1860,11 +1859,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 } @@ -1888,7 +1887,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 } @@ -1912,7 +1911,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 @@ -1927,11 +1926,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 } @@ -1954,7 +1953,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 { @@ -2029,16 +2028,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" { @@ -2057,7 +2056,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 @@ -2070,7 +2069,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 @@ -2103,8 +2102,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 } @@ -2126,7 +2125,7 @@ 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) @@ -2134,12 +2133,12 @@ func (rel *Relation) applyRule(r *pg_query.RuleStmt) { if len(act.InsertStmt.ReturningList) == 0 { set(&rel.RuleNoReturning) } - case *pg_query.Node_UpdateStmt: + case *pgparse.Node_UpdateStmt: dml = true if len(act.UpdateStmt.ReturningList) == 0 { set(&rel.RuleNoReturning) } - case *pg_query.Node_DeleteStmt: + case *pgparse.Node_DeleteStmt: dml = true if len(act.DeleteStmt.ReturningList) == 0 { set(&rel.RuleNoReturning) @@ -2183,7 +2182,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 } @@ -2202,7 +2201,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 { @@ -2271,7 +2270,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 } @@ -2290,8 +2289,8 @@ 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 := pgparse.Deparse(res) if err != nil { @@ -2301,11 +2300,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 := pgparse.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/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 0f33e33..6f313f3 100644 --- a/internal/vet/hazards.go +++ b/internal/vet/hazards.go @@ -6,8 +6,6 @@ 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" @@ -158,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 @@ -169,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) } From 11afacc4f8521b2866456cbb2a78841fb5208c72 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Tue, 8 Sep 2026 18:31:10 +0900 Subject: [PATCH 03/27] =?UTF-8?q?pgparse:=20the=20PostgreSQL=2018=20parser?= =?UTF-8?q?=20(libpg=5Fquery=2018.0.0)=20is=20embedded=20beside=2017=20?= =?UTF-8?q?=E2=80=94=20pgparse.PG17=20/=20PG18,=20Default=20=3D=20PG17=20u?= =?UTF-8?q?ntil=20the=20rest=20of=20sqlshape=20supports=2018=20=E2=80=94?= =?UTF-8?q?=20and=20every=20version's=20tree=20is=20read=20from=20the=20pa?= =?UTF-8?q?rser's=20JSON=20output=20into=20node=20types=20generated=20from?= =?UTF-8?q?=20the=20newest=20version's=20proto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit protobuf field numbers are not stable across libpg_query versions (17→18 renumbers 267 fields and 434 enum values), so the protobuf path cannot serve two versions; the JSON output names fields and node types, protojson reads it into the newest types, and it is faster than the protobuf path anyway (215 µs vs 273 µs a statement). An older version's renamed fields are rewritten on the JSON before decoding (17→18: returningList → returningClause.exprs, plus three fields a raw tree never carries); a rewrite the table misses fails the decode on an unknown field instead of vanishing. Over the 43,226 regress statements 17 accepts: all decode through the rewrite, 18 rejects none, and 18's JSON path equals its protobuf path. ReturningList call sites read GetReturningClause().GetExprs(); Deparse runs on the newest module. All tests, the regress baseline, the golden files and the Facts snapshot unchanged. --- docs/design.md | 3 +- internal/analyze/stmt.go | 22 +- internal/pgparse/pg_query.pb.go | 10288 ++++++++++++----------- internal/pgparse/pgparse.go | 136 +- internal/pgparse/pgparse_test.go | 6 +- internal/pgparse/upgrade.go | 80 + internal/pgparse/version_test.go | 126 + internal/pgparse/wasm/build.sh | 13 +- internal/pgparse/wasm/pg_query_17.wasm | Bin 1577852 -> 1700796 bytes internal/pgparse/wasm/pg_query_18.wasm | Bin 0 -> 1767328 bytes internal/pgparse/wasm/shim.c | 12 + internal/schema/schema.go | 6 +- 12 files changed, 5850 insertions(+), 4842 deletions(-) create mode 100644 internal/pgparse/upgrade.go create mode 100644 internal/pgparse/version_test.go create mode 100755 internal/pgparse/wasm/pg_query_18.wasm diff --git a/docs/design.md b/docs/design.md index c10a3bc..918fdf7 100644 --- a/docs/design.md +++ b/docs/design.md @@ -115,6 +115,7 @@ 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/analyze` | アナライザー本体。10章の型変換、スコープ、DML、`$n`推論、nullability、カーディナリティ、違反の列挙、PG互換のエラー。文の事実(`facts.Facts`)の生産と、義務の述語を事実の言語に落とす`Lower` | @@ -130,5 +131,5 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em - 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のバージョンを`schema.sql`が宣言し(`-- sqlshape: postgres 18`)、アナライザーはその版の規則で判定する。既定は最新のサポート版(宣言はスキーマに1行なので、新版利用者に毎回書かせない)。パーサはlibpg_queryをWebAssemblyにビルドしてwazeroで実行する(スパイクで成立: longjmpはemscriptenのエミュレーションで動き、protobuf出力はcgo版とバイト一致、速度は3.6倍遅いが解析全体では誤差)。cgoが消えて`go install`にCツールチェーンが要らなくなり、wasmモジュールは隔離されるので版ごとのパーサを同じバイナリに複数積める。宣言版より新しい構文は、その版の本物の文法が拒否する(gram.y差分の表は要らない)。ノードのGo型は最新版のpg_query.protoから生成した1組だけを持つ。protobufのフィールド番号はlibpg_queryが版ごとに振り直すので(17→18で267フィールド、enum値434が変わった)版をまたいでは読めず、木はどの版もパーサのJSON出力(フィールド名・ノード名で書かれる)をprotojsonで読む。JSON経路のほうがprotobuf経路より速い(1文215µs対273µs)。古い版で名前が違うフィールドは読む前にJSON上で最新版の形に書き換える(17→18は`returningList`→`returningClause.exprs`と、生の木には現れない3フィールドの削除だけ)。書き換え漏れはprotojsonが未知フィールドとして拒否するので黙って消えない。regressコーパス43,226文で、17の木は全文が書き換え経由で読め、18のJSON経路はprotobuf経路と全一致。カタログは版ごとの生成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/internal/analyze/stmt.go b/internal/analyze/stmt.go index 7f1500c..32d564c 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -1301,7 +1301,7 @@ func (a *analyzer) insertStmt(ins *pgparse.InsertStmt, sc *scope) ([]rteCol, *Er 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"] { @@ -1459,7 +1459,7 @@ func (a *analyzer) insertStmt(ins *pgparse.InsertStmt, sc *scope) ([]rteCol, *Er } } } - return a.returning(ins.ReturningList, inner) + return a.returning(ins.GetReturningClause().GetExprs(), inner) } func (a *analyzer) setClause(targets []*pgparse.Node, rel *schema.Relation, sc *scope) *Error { @@ -1580,7 +1580,7 @@ func (a *analyzer) updateStmt(upd *pgparse.UpdateStmt, sc *scope) ([]rteCol, *Er 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,7 +1610,7 @@ func (a *analyzer) updateStmt(upd *pgparse.UpdateStmt, sc *scope) ([]rteCol, *Er return nil, err } a.recordFixed(sc, upd.WhereClause) - return a.returning(upd.ReturningList, sc) + return a.returning(upd.GetReturningClause().GetExprs(), sc) } func (a *analyzer) deleteStmt(del *pgparse.DeleteStmt, sc *scope) ([]rteCol, *Error) { @@ -1624,7 +1624,7 @@ func (a *analyzer) deleteStmt(del *pgparse.DeleteStmt, sc *scope) ([]rteCol, *Er 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,7 +1647,7 @@ func (a *analyzer) deleteStmt(del *pgparse.DeleteStmt, sc *scope) ([]rteCol, *Er return nil, err } a.recordFixed(sc, del.WhereClause) - return a.returning(del.ReturningList, sc) + return a.returning(del.GetReturningClause().GetExprs(), sc) } // figureColname implements PG's FigureColname for unaliased target entries. @@ -2008,7 +2008,7 @@ func (a *analyzer) mergeStmt(m *pgparse.MergeStmt, sc *scope) ([]rteCol, *Error) } 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.GetReturningClause().GetExprs(), ret) } const ( @@ -2344,13 +2344,13 @@ func (a *analyzer) checkCTEColumnList(c *pgparse.CommonTableExpr, cols []rteCol) func hasReturning(n *pgparse.Node) bool { switch v := n.Node.(type) { case *pgparse.Node_InsertStmt: - return len(v.InsertStmt.ReturningList) > 0 + return len(v.InsertStmt.GetReturningClause().GetExprs()) > 0 case *pgparse.Node_UpdateStmt: - return len(v.UpdateStmt.ReturningList) > 0 + return len(v.UpdateStmt.GetReturningClause().GetExprs()) > 0 case *pgparse.Node_DeleteStmt: - return len(v.DeleteStmt.ReturningList) > 0 + return len(v.DeleteStmt.GetReturningClause().GetExprs()) > 0 case *pgparse.Node_MergeStmt: - return len(v.MergeStmt.ReturningList) > 0 + return len(v.MergeStmt.GetReturningClause().GetExprs()) > 0 } return true } diff --git a/internal/pgparse/pg_query.pb.go b/internal/pgparse/pg_query.pb.go index 0108477..de6812b 100644 --- a/internal/pgparse/pg_query.pb.go +++ b/internal/pgparse/pg_query.pb.go @@ -628,21 +628,23 @@ const ( 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", + 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, @@ -655,6 +657,7 @@ var ( "RTE_CTE": 7, "RTE_NAMEDTUPLESTORE": 8, "RTE_RESULT": 9, + "RTE_GROUP": 10, } ) @@ -856,6 +859,55 @@ 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 ( @@ -892,11 +944,11 @@ func (x JsonQuotes) String() string { } func (JsonQuotes) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[14].Descriptor() + return file_pg_query_proto_enumTypes[15].Descriptor() } func (JsonQuotes) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[14] + return &file_pg_query_proto_enumTypes[15] } func (x JsonQuotes) Number() protoreflect.EnumNumber { @@ -905,7 +957,7 @@ func (x JsonQuotes) Number() protoreflect.EnumNumber { // Deprecated: Use JsonQuotes.Descriptor instead. func (JsonQuotes) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{14} + return file_pg_query_proto_rawDescGZIP(), []int{15} } type JsonTableColumnType int32 @@ -950,11 +1002,11 @@ func (x JsonTableColumnType) String() string { } func (JsonTableColumnType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[15].Descriptor() + return file_pg_query_proto_enumTypes[16].Descriptor() } func (JsonTableColumnType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[15] + return &file_pg_query_proto_enumTypes[16] } func (x JsonTableColumnType) Number() protoreflect.EnumNumber { @@ -963,7 +1015,7 @@ func (x JsonTableColumnType) Number() protoreflect.EnumNumber { // Deprecated: Use JsonTableColumnType.Descriptor instead. func (JsonTableColumnType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{15} + return file_pg_query_proto_rawDescGZIP(), []int{16} } type SetOperation int32 @@ -1005,11 +1057,11 @@ func (x SetOperation) String() string { } func (SetOperation) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[16].Descriptor() + return file_pg_query_proto_enumTypes[17].Descriptor() } func (SetOperation) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[16] + return &file_pg_query_proto_enumTypes[17] } func (x SetOperation) Number() protoreflect.EnumNumber { @@ -1018,7 +1070,7 @@ func (x SetOperation) Number() protoreflect.EnumNumber { // Deprecated: Use SetOperation.Descriptor instead. func (SetOperation) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{16} + return file_pg_query_proto_rawDescGZIP(), []int{17} } type ObjectType int32 @@ -1204,11 +1256,11 @@ func (x ObjectType) String() string { } func (ObjectType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[17].Descriptor() + return file_pg_query_proto_enumTypes[18].Descriptor() } func (ObjectType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[17] + return &file_pg_query_proto_enumTypes[18] } func (x ObjectType) Number() protoreflect.EnumNumber { @@ -1217,7 +1269,7 @@ func (x ObjectType) Number() protoreflect.EnumNumber { // Deprecated: Use ObjectType.Descriptor instead. func (ObjectType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{17} + return file_pg_query_proto_rawDescGZIP(), []int{18} } type DropBehavior int32 @@ -1253,11 +1305,11 @@ func (x DropBehavior) String() string { } func (DropBehavior) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[18].Descriptor() + return file_pg_query_proto_enumTypes[19].Descriptor() } func (DropBehavior) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[18] + return &file_pg_query_proto_enumTypes[19] } func (x DropBehavior) Number() protoreflect.EnumNumber { @@ -1266,7 +1318,7 @@ func (x DropBehavior) Number() protoreflect.EnumNumber { // Deprecated: Use DropBehavior.Descriptor instead. func (DropBehavior) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{18} + return file_pg_query_proto_rawDescGZIP(), []int{19} } type AlterTableType int32 @@ -1281,65 +1333,64 @@ const ( AlterTableType_AT_SetNotNull AlterTableType = 6 AlterTableType_AT_SetExpression AlterTableType = 7 AlterTableType_AT_DropExpression AlterTableType = 8 - AlterTableType_AT_CheckNotNull AlterTableType = 9 - AlterTableType_AT_SetStatistics AlterTableType = 10 - AlterTableType_AT_SetOptions AlterTableType = 11 - AlterTableType_AT_ResetOptions AlterTableType = 12 - AlterTableType_AT_SetStorage AlterTableType = 13 - AlterTableType_AT_SetCompression AlterTableType = 14 - AlterTableType_AT_DropColumn AlterTableType = 15 - AlterTableType_AT_AddIndex AlterTableType = 16 - AlterTableType_AT_ReAddIndex AlterTableType = 17 - AlterTableType_AT_AddConstraint AlterTableType = 18 - AlterTableType_AT_ReAddConstraint AlterTableType = 19 - AlterTableType_AT_ReAddDomainConstraint AlterTableType = 20 - AlterTableType_AT_AlterConstraint AlterTableType = 21 - AlterTableType_AT_ValidateConstraint AlterTableType = 22 - AlterTableType_AT_AddIndexConstraint AlterTableType = 23 - AlterTableType_AT_DropConstraint AlterTableType = 24 - AlterTableType_AT_ReAddComment AlterTableType = 25 - AlterTableType_AT_AlterColumnType AlterTableType = 26 - AlterTableType_AT_AlterColumnGenericOptions AlterTableType = 27 - AlterTableType_AT_ChangeOwner AlterTableType = 28 - AlterTableType_AT_ClusterOn AlterTableType = 29 - AlterTableType_AT_DropCluster AlterTableType = 30 - AlterTableType_AT_SetLogged AlterTableType = 31 - AlterTableType_AT_SetUnLogged AlterTableType = 32 - AlterTableType_AT_DropOids AlterTableType = 33 - AlterTableType_AT_SetAccessMethod AlterTableType = 34 - AlterTableType_AT_SetTableSpace AlterTableType = 35 - AlterTableType_AT_SetRelOptions AlterTableType = 36 - AlterTableType_AT_ResetRelOptions AlterTableType = 37 - AlterTableType_AT_ReplaceRelOptions AlterTableType = 38 - AlterTableType_AT_EnableTrig AlterTableType = 39 - AlterTableType_AT_EnableAlwaysTrig AlterTableType = 40 - AlterTableType_AT_EnableReplicaTrig AlterTableType = 41 - AlterTableType_AT_DisableTrig AlterTableType = 42 - AlterTableType_AT_EnableTrigAll AlterTableType = 43 - AlterTableType_AT_DisableTrigAll AlterTableType = 44 - AlterTableType_AT_EnableTrigUser AlterTableType = 45 - AlterTableType_AT_DisableTrigUser AlterTableType = 46 - AlterTableType_AT_EnableRule AlterTableType = 47 - AlterTableType_AT_EnableAlwaysRule AlterTableType = 48 - AlterTableType_AT_EnableReplicaRule AlterTableType = 49 - AlterTableType_AT_DisableRule AlterTableType = 50 - AlterTableType_AT_AddInherit AlterTableType = 51 - AlterTableType_AT_DropInherit AlterTableType = 52 - AlterTableType_AT_AddOf AlterTableType = 53 - AlterTableType_AT_DropOf AlterTableType = 54 - AlterTableType_AT_ReplicaIdentity AlterTableType = 55 - AlterTableType_AT_EnableRowSecurity AlterTableType = 56 - AlterTableType_AT_DisableRowSecurity AlterTableType = 57 - AlterTableType_AT_ForceRowSecurity AlterTableType = 58 - AlterTableType_AT_NoForceRowSecurity AlterTableType = 59 - AlterTableType_AT_GenericOptions AlterTableType = 60 - AlterTableType_AT_AttachPartition AlterTableType = 61 - AlterTableType_AT_DetachPartition AlterTableType = 62 - AlterTableType_AT_DetachPartitionFinalize AlterTableType = 63 - AlterTableType_AT_AddIdentity AlterTableType = 64 - AlterTableType_AT_SetIdentity AlterTableType = 65 - AlterTableType_AT_DropIdentity AlterTableType = 66 - AlterTableType_AT_ReAddStatistics AlterTableType = 67 + 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. @@ -1354,65 +1405,64 @@ var ( 6: "AT_SetNotNull", 7: "AT_SetExpression", 8: "AT_DropExpression", - 9: "AT_CheckNotNull", - 10: "AT_SetStatistics", - 11: "AT_SetOptions", - 12: "AT_ResetOptions", - 13: "AT_SetStorage", - 14: "AT_SetCompression", - 15: "AT_DropColumn", - 16: "AT_AddIndex", - 17: "AT_ReAddIndex", - 18: "AT_AddConstraint", - 19: "AT_ReAddConstraint", - 20: "AT_ReAddDomainConstraint", - 21: "AT_AlterConstraint", - 22: "AT_ValidateConstraint", - 23: "AT_AddIndexConstraint", - 24: "AT_DropConstraint", - 25: "AT_ReAddComment", - 26: "AT_AlterColumnType", - 27: "AT_AlterColumnGenericOptions", - 28: "AT_ChangeOwner", - 29: "AT_ClusterOn", - 30: "AT_DropCluster", - 31: "AT_SetLogged", - 32: "AT_SetUnLogged", - 33: "AT_DropOids", - 34: "AT_SetAccessMethod", - 35: "AT_SetTableSpace", - 36: "AT_SetRelOptions", - 37: "AT_ResetRelOptions", - 38: "AT_ReplaceRelOptions", - 39: "AT_EnableTrig", - 40: "AT_EnableAlwaysTrig", - 41: "AT_EnableReplicaTrig", - 42: "AT_DisableTrig", - 43: "AT_EnableTrigAll", - 44: "AT_DisableTrigAll", - 45: "AT_EnableTrigUser", - 46: "AT_DisableTrigUser", - 47: "AT_EnableRule", - 48: "AT_EnableAlwaysRule", - 49: "AT_EnableReplicaRule", - 50: "AT_DisableRule", - 51: "AT_AddInherit", - 52: "AT_DropInherit", - 53: "AT_AddOf", - 54: "AT_DropOf", - 55: "AT_ReplicaIdentity", - 56: "AT_EnableRowSecurity", - 57: "AT_DisableRowSecurity", - 58: "AT_ForceRowSecurity", - 59: "AT_NoForceRowSecurity", - 60: "AT_GenericOptions", - 61: "AT_AttachPartition", - 62: "AT_DetachPartition", - 63: "AT_DetachPartitionFinalize", - 64: "AT_AddIdentity", - 65: "AT_SetIdentity", - 66: "AT_DropIdentity", - 67: "AT_ReAddStatistics", + 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, @@ -1424,65 +1474,64 @@ var ( "AT_SetNotNull": 6, "AT_SetExpression": 7, "AT_DropExpression": 8, - "AT_CheckNotNull": 9, - "AT_SetStatistics": 10, - "AT_SetOptions": 11, - "AT_ResetOptions": 12, - "AT_SetStorage": 13, - "AT_SetCompression": 14, - "AT_DropColumn": 15, - "AT_AddIndex": 16, - "AT_ReAddIndex": 17, - "AT_AddConstraint": 18, - "AT_ReAddConstraint": 19, - "AT_ReAddDomainConstraint": 20, - "AT_AlterConstraint": 21, - "AT_ValidateConstraint": 22, - "AT_AddIndexConstraint": 23, - "AT_DropConstraint": 24, - "AT_ReAddComment": 25, - "AT_AlterColumnType": 26, - "AT_AlterColumnGenericOptions": 27, - "AT_ChangeOwner": 28, - "AT_ClusterOn": 29, - "AT_DropCluster": 30, - "AT_SetLogged": 31, - "AT_SetUnLogged": 32, - "AT_DropOids": 33, - "AT_SetAccessMethod": 34, - "AT_SetTableSpace": 35, - "AT_SetRelOptions": 36, - "AT_ResetRelOptions": 37, - "AT_ReplaceRelOptions": 38, - "AT_EnableTrig": 39, - "AT_EnableAlwaysTrig": 40, - "AT_EnableReplicaTrig": 41, - "AT_DisableTrig": 42, - "AT_EnableTrigAll": 43, - "AT_DisableTrigAll": 44, - "AT_EnableTrigUser": 45, - "AT_DisableTrigUser": 46, - "AT_EnableRule": 47, - "AT_EnableAlwaysRule": 48, - "AT_EnableReplicaRule": 49, - "AT_DisableRule": 50, - "AT_AddInherit": 51, - "AT_DropInherit": 52, - "AT_AddOf": 53, - "AT_DropOf": 54, - "AT_ReplicaIdentity": 55, - "AT_EnableRowSecurity": 56, - "AT_DisableRowSecurity": 57, - "AT_ForceRowSecurity": 58, - "AT_NoForceRowSecurity": 59, - "AT_GenericOptions": 60, - "AT_AttachPartition": 61, - "AT_DetachPartition": 62, - "AT_DetachPartitionFinalize": 63, - "AT_AddIdentity": 64, - "AT_SetIdentity": 65, - "AT_DropIdentity": 66, - "AT_ReAddStatistics": 67, + "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, } ) @@ -1497,11 +1546,11 @@ func (x AlterTableType) String() string { } func (AlterTableType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[19].Descriptor() + return file_pg_query_proto_enumTypes[20].Descriptor() } func (AlterTableType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[19] + return &file_pg_query_proto_enumTypes[20] } func (x AlterTableType) Number() protoreflect.EnumNumber { @@ -1510,7 +1559,7 @@ func (x AlterTableType) Number() protoreflect.EnumNumber { // Deprecated: Use AlterTableType.Descriptor instead. func (AlterTableType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{19} + return file_pg_query_proto_rawDescGZIP(), []int{20} } type GrantTargetType int32 @@ -1549,11 +1598,11 @@ func (x GrantTargetType) String() string { } func (GrantTargetType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[20].Descriptor() + return file_pg_query_proto_enumTypes[21].Descriptor() } func (GrantTargetType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[20] + return &file_pg_query_proto_enumTypes[21] } func (x GrantTargetType) Number() protoreflect.EnumNumber { @@ -1562,7 +1611,7 @@ func (x GrantTargetType) Number() protoreflect.EnumNumber { // Deprecated: Use GrantTargetType.Descriptor instead. func (GrantTargetType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{20} + return file_pg_query_proto_rawDescGZIP(), []int{21} } type VariableSetKind int32 @@ -1610,11 +1659,11 @@ func (x VariableSetKind) String() string { } func (VariableSetKind) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[21].Descriptor() + return file_pg_query_proto_enumTypes[22].Descriptor() } func (VariableSetKind) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[21] + return &file_pg_query_proto_enumTypes[22] } func (x VariableSetKind) Number() protoreflect.EnumNumber { @@ -1623,7 +1672,7 @@ func (x VariableSetKind) Number() protoreflect.EnumNumber { // Deprecated: Use VariableSetKind.Descriptor instead. func (VariableSetKind) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{21} + return file_pg_query_proto_rawDescGZIP(), []int{22} } type ConstrType int32 @@ -1644,6 +1693,8 @@ const ( 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. @@ -1664,6 +1715,8 @@ var ( 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, @@ -1681,6 +1734,8 @@ var ( "CONSTR_ATTR_NOT_DEFERRABLE": 12, "CONSTR_ATTR_DEFERRED": 13, "CONSTR_ATTR_IMMEDIATE": 14, + "CONSTR_ATTR_ENFORCED": 15, + "CONSTR_ATTR_NOT_ENFORCED": 16, } ) @@ -1695,11 +1750,11 @@ func (x ConstrType) String() string { } func (ConstrType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[22].Descriptor() + return file_pg_query_proto_enumTypes[23].Descriptor() } func (ConstrType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[22] + return &file_pg_query_proto_enumTypes[23] } func (x ConstrType) Number() protoreflect.EnumNumber { @@ -1708,7 +1763,7 @@ func (x ConstrType) Number() protoreflect.EnumNumber { // Deprecated: Use ConstrType.Descriptor instead. func (ConstrType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{22} + return file_pg_query_proto_rawDescGZIP(), []int{23} } type ImportForeignSchemaType int32 @@ -1747,11 +1802,11 @@ func (x ImportForeignSchemaType) String() string { } func (ImportForeignSchemaType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[23].Descriptor() + return file_pg_query_proto_enumTypes[24].Descriptor() } func (ImportForeignSchemaType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[23] + return &file_pg_query_proto_enumTypes[24] } func (x ImportForeignSchemaType) Number() protoreflect.EnumNumber { @@ -1760,7 +1815,7 @@ func (x ImportForeignSchemaType) Number() protoreflect.EnumNumber { // Deprecated: Use ImportForeignSchemaType.Descriptor instead. func (ImportForeignSchemaType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{23} + return file_pg_query_proto_rawDescGZIP(), []int{24} } type RoleStmtType int32 @@ -1799,11 +1854,11 @@ func (x RoleStmtType) String() string { } func (RoleStmtType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[24].Descriptor() + return file_pg_query_proto_enumTypes[25].Descriptor() } func (RoleStmtType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[24] + return &file_pg_query_proto_enumTypes[25] } func (x RoleStmtType) Number() protoreflect.EnumNumber { @@ -1812,7 +1867,7 @@ func (x RoleStmtType) Number() protoreflect.EnumNumber { // Deprecated: Use RoleStmtType.Descriptor instead. func (RoleStmtType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{24} + return file_pg_query_proto_rawDescGZIP(), []int{25} } type FetchDirection int32 @@ -1854,11 +1909,11 @@ func (x FetchDirection) String() string { } func (FetchDirection) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[25].Descriptor() + return file_pg_query_proto_enumTypes[26].Descriptor() } func (FetchDirection) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[25] + return &file_pg_query_proto_enumTypes[26] } func (x FetchDirection) Number() protoreflect.EnumNumber { @@ -1867,7 +1922,7 @@ func (x FetchDirection) Number() protoreflect.EnumNumber { // Deprecated: Use FetchDirection.Descriptor instead. func (FetchDirection) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{25} + return file_pg_query_proto_rawDescGZIP(), []int{26} } type FunctionParameterMode int32 @@ -1915,11 +1970,11 @@ func (x FunctionParameterMode) String() string { } func (FunctionParameterMode) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[26].Descriptor() + return file_pg_query_proto_enumTypes[27].Descriptor() } func (FunctionParameterMode) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[26] + return &file_pg_query_proto_enumTypes[27] } func (x FunctionParameterMode) Number() protoreflect.EnumNumber { @@ -1928,7 +1983,7 @@ func (x FunctionParameterMode) Number() protoreflect.EnumNumber { // Deprecated: Use FunctionParameterMode.Descriptor instead. func (FunctionParameterMode) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{26} + return file_pg_query_proto_rawDescGZIP(), []int{27} } type TransactionStmtKind int32 @@ -1988,11 +2043,11 @@ func (x TransactionStmtKind) String() string { } func (TransactionStmtKind) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[27].Descriptor() + return file_pg_query_proto_enumTypes[28].Descriptor() } func (TransactionStmtKind) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[27] + return &file_pg_query_proto_enumTypes[28] } func (x TransactionStmtKind) Number() protoreflect.EnumNumber { @@ -2001,7 +2056,7 @@ func (x TransactionStmtKind) Number() protoreflect.EnumNumber { // Deprecated: Use TransactionStmtKind.Descriptor instead. func (TransactionStmtKind) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{27} + return file_pg_query_proto_rawDescGZIP(), []int{28} } type ViewCheckOption int32 @@ -2040,11 +2095,11 @@ func (x ViewCheckOption) String() string { } func (ViewCheckOption) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[28].Descriptor() + return file_pg_query_proto_enumTypes[29].Descriptor() } func (ViewCheckOption) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[28] + return &file_pg_query_proto_enumTypes[29] } func (x ViewCheckOption) Number() protoreflect.EnumNumber { @@ -2053,7 +2108,7 @@ func (x ViewCheckOption) Number() protoreflect.EnumNumber { // Deprecated: Use ViewCheckOption.Descriptor instead. func (ViewCheckOption) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{28} + return file_pg_query_proto_rawDescGZIP(), []int{29} } type DiscardMode int32 @@ -2095,11 +2150,11 @@ func (x DiscardMode) String() string { } func (DiscardMode) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[29].Descriptor() + return file_pg_query_proto_enumTypes[30].Descriptor() } func (DiscardMode) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[29] + return &file_pg_query_proto_enumTypes[30] } func (x DiscardMode) Number() protoreflect.EnumNumber { @@ -2108,7 +2163,7 @@ func (x DiscardMode) Number() protoreflect.EnumNumber { // Deprecated: Use DiscardMode.Descriptor instead. func (DiscardMode) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{29} + return file_pg_query_proto_rawDescGZIP(), []int{30} } type ReindexObjectType int32 @@ -2153,11 +2208,11 @@ func (x ReindexObjectType) String() string { } func (ReindexObjectType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[30].Descriptor() + return file_pg_query_proto_enumTypes[31].Descriptor() } func (ReindexObjectType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[30] + return &file_pg_query_proto_enumTypes[31] } func (x ReindexObjectType) Number() protoreflect.EnumNumber { @@ -2166,7 +2221,7 @@ func (x ReindexObjectType) Number() protoreflect.EnumNumber { // Deprecated: Use ReindexObjectType.Descriptor instead. func (ReindexObjectType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{30} + return file_pg_query_proto_rawDescGZIP(), []int{31} } type AlterTSConfigType int32 @@ -2211,11 +2266,11 @@ func (x AlterTSConfigType) String() string { } func (AlterTSConfigType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[31].Descriptor() + return file_pg_query_proto_enumTypes[32].Descriptor() } func (AlterTSConfigType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[31] + return &file_pg_query_proto_enumTypes[32] } func (x AlterTSConfigType) Number() protoreflect.EnumNumber { @@ -2224,7 +2279,7 @@ func (x AlterTSConfigType) Number() protoreflect.EnumNumber { // Deprecated: Use AlterTSConfigType.Descriptor instead. func (AlterTSConfigType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{31} + return file_pg_query_proto_rawDescGZIP(), []int{32} } type PublicationObjSpecType int32 @@ -2266,11 +2321,11 @@ func (x PublicationObjSpecType) String() string { } func (PublicationObjSpecType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[32].Descriptor() + return file_pg_query_proto_enumTypes[33].Descriptor() } func (PublicationObjSpecType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[32] + return &file_pg_query_proto_enumTypes[33] } func (x PublicationObjSpecType) Number() protoreflect.EnumNumber { @@ -2279,7 +2334,7 @@ func (x PublicationObjSpecType) Number() protoreflect.EnumNumber { // Deprecated: Use PublicationObjSpecType.Descriptor instead. func (PublicationObjSpecType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{32} + return file_pg_query_proto_rawDescGZIP(), []int{33} } type AlterPublicationAction int32 @@ -2318,11 +2373,11 @@ func (x AlterPublicationAction) String() string { } func (AlterPublicationAction) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[33].Descriptor() + return file_pg_query_proto_enumTypes[34].Descriptor() } func (AlterPublicationAction) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[33] + return &file_pg_query_proto_enumTypes[34] } func (x AlterPublicationAction) Number() protoreflect.EnumNumber { @@ -2331,7 +2386,7 @@ func (x AlterPublicationAction) Number() protoreflect.EnumNumber { // Deprecated: Use AlterPublicationAction.Descriptor instead. func (AlterPublicationAction) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{33} + return file_pg_query_proto_rawDescGZIP(), []int{34} } type AlterSubscriptionType int32 @@ -2385,11 +2440,11 @@ func (x AlterSubscriptionType) String() string { } func (AlterSubscriptionType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[34].Descriptor() + return file_pg_query_proto_enumTypes[35].Descriptor() } func (AlterSubscriptionType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[34] + return &file_pg_query_proto_enumTypes[35] } func (x AlterSubscriptionType) Number() protoreflect.EnumNumber { @@ -2398,7 +2453,7 @@ func (x AlterSubscriptionType) Number() protoreflect.EnumNumber { // Deprecated: Use AlterSubscriptionType.Descriptor instead. func (AlterSubscriptionType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{34} + return file_pg_query_proto_rawDescGZIP(), []int{35} } type OverridingKind int32 @@ -2437,11 +2492,11 @@ func (x OverridingKind) String() string { } func (OverridingKind) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[35].Descriptor() + return file_pg_query_proto_enumTypes[36].Descriptor() } func (OverridingKind) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[35] + return &file_pg_query_proto_enumTypes[36] } func (x OverridingKind) Number() protoreflect.EnumNumber { @@ -2450,7 +2505,7 @@ func (x OverridingKind) Number() protoreflect.EnumNumber { // Deprecated: Use OverridingKind.Descriptor instead. func (OverridingKind) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{35} + return file_pg_query_proto_rawDescGZIP(), []int{36} } type OnCommitAction int32 @@ -2492,11 +2547,11 @@ func (x OnCommitAction) String() string { } func (OnCommitAction) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[36].Descriptor() + return file_pg_query_proto_enumTypes[37].Descriptor() } func (OnCommitAction) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[36] + return &file_pg_query_proto_enumTypes[37] } func (x OnCommitAction) Number() protoreflect.EnumNumber { @@ -2505,7 +2560,7 @@ func (x OnCommitAction) Number() protoreflect.EnumNumber { // Deprecated: Use OnCommitAction.Descriptor instead. func (OnCommitAction) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{36} + return file_pg_query_proto_rawDescGZIP(), []int{37} } type TableFuncType int32 @@ -2541,11 +2596,11 @@ func (x TableFuncType) String() string { } func (TableFuncType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[37].Descriptor() + return file_pg_query_proto_enumTypes[38].Descriptor() } func (TableFuncType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[37] + return &file_pg_query_proto_enumTypes[38] } func (x TableFuncType) Number() protoreflect.EnumNumber { @@ -2554,7 +2609,59 @@ func (x TableFuncType) Number() protoreflect.EnumNumber { // Deprecated: Use TableFuncType.Descriptor instead. func (TableFuncType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{37} + 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 @@ -2596,11 +2703,11 @@ func (x ParamKind) String() string { } func (ParamKind) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[38].Descriptor() + return file_pg_query_proto_enumTypes[40].Descriptor() } func (ParamKind) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[38] + return &file_pg_query_proto_enumTypes[40] } func (x ParamKind) Number() protoreflect.EnumNumber { @@ -2609,7 +2716,7 @@ func (x ParamKind) Number() protoreflect.EnumNumber { // Deprecated: Use ParamKind.Descriptor instead. func (ParamKind) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{38} + return file_pg_query_proto_rawDescGZIP(), []int{40} } type CoercionContext int32 @@ -2651,11 +2758,11 @@ func (x CoercionContext) String() string { } func (CoercionContext) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[39].Descriptor() + return file_pg_query_proto_enumTypes[41].Descriptor() } func (CoercionContext) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[39] + return &file_pg_query_proto_enumTypes[41] } func (x CoercionContext) Number() protoreflect.EnumNumber { @@ -2664,7 +2771,7 @@ func (x CoercionContext) Number() protoreflect.EnumNumber { // Deprecated: Use CoercionContext.Descriptor instead. func (CoercionContext) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{39} + return file_pg_query_proto_rawDescGZIP(), []int{41} } type CoercionForm int32 @@ -2706,11 +2813,11 @@ func (x CoercionForm) String() string { } func (CoercionForm) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[40].Descriptor() + return file_pg_query_proto_enumTypes[42].Descriptor() } func (CoercionForm) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[40] + return &file_pg_query_proto_enumTypes[42] } func (x CoercionForm) Number() protoreflect.EnumNumber { @@ -2719,7 +2826,7 @@ func (x CoercionForm) Number() protoreflect.EnumNumber { // Deprecated: Use CoercionForm.Descriptor instead. func (CoercionForm) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{40} + return file_pg_query_proto_rawDescGZIP(), []int{42} } type BoolExprType int32 @@ -2758,11 +2865,11 @@ func (x BoolExprType) String() string { } func (BoolExprType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[41].Descriptor() + return file_pg_query_proto_enumTypes[43].Descriptor() } func (BoolExprType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[41] + return &file_pg_query_proto_enumTypes[43] } func (x BoolExprType) Number() protoreflect.EnumNumber { @@ -2771,7 +2878,7 @@ func (x BoolExprType) Number() protoreflect.EnumNumber { // Deprecated: Use BoolExprType.Descriptor instead. func (BoolExprType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{41} + return file_pg_query_proto_rawDescGZIP(), []int{43} } type SubLinkType int32 @@ -2825,11 +2932,11 @@ func (x SubLinkType) String() string { } func (SubLinkType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[42].Descriptor() + return file_pg_query_proto_enumTypes[44].Descriptor() } func (SubLinkType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[42] + return &file_pg_query_proto_enumTypes[44] } func (x SubLinkType) Number() protoreflect.EnumNumber { @@ -2838,68 +2945,7 @@ func (x SubLinkType) Number() protoreflect.EnumNumber { // Deprecated: Use SubLinkType.Descriptor instead. func (SubLinkType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{42} -} - -type RowCompareType int32 - -const ( - RowCompareType_ROW_COMPARE_TYPE_UNDEFINED RowCompareType = 0 - RowCompareType_ROWCOMPARE_LT RowCompareType = 1 - RowCompareType_ROWCOMPARE_LE RowCompareType = 2 - RowCompareType_ROWCOMPARE_EQ RowCompareType = 3 - RowCompareType_ROWCOMPARE_GE RowCompareType = 4 - RowCompareType_ROWCOMPARE_GT RowCompareType = 5 - RowCompareType_ROWCOMPARE_NE RowCompareType = 6 -) - -// Enum value maps for RowCompareType. -var ( - RowCompareType_name = map[int32]string{ - 0: "ROW_COMPARE_TYPE_UNDEFINED", - 1: "ROWCOMPARE_LT", - 2: "ROWCOMPARE_LE", - 3: "ROWCOMPARE_EQ", - 4: "ROWCOMPARE_GE", - 5: "ROWCOMPARE_GT", - 6: "ROWCOMPARE_NE", - } - RowCompareType_value = map[string]int32{ - "ROW_COMPARE_TYPE_UNDEFINED": 0, - "ROWCOMPARE_LT": 1, - "ROWCOMPARE_LE": 2, - "ROWCOMPARE_EQ": 3, - "ROWCOMPARE_GE": 4, - "ROWCOMPARE_GT": 5, - "ROWCOMPARE_NE": 6, - } -) - -func (x RowCompareType) Enum() *RowCompareType { - p := new(RowCompareType) - *p = x - return p -} - -func (x RowCompareType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RowCompareType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[43].Descriptor() -} - -func (RowCompareType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[43] -} - -func (x RowCompareType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use RowCompareType.Descriptor instead. -func (RowCompareType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{43} + return file_pg_query_proto_rawDescGZIP(), []int{44} } type MinMaxOp int32 @@ -2935,11 +2981,11 @@ func (x MinMaxOp) String() string { } func (MinMaxOp) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[44].Descriptor() + return file_pg_query_proto_enumTypes[45].Descriptor() } func (MinMaxOp) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[44] + return &file_pg_query_proto_enumTypes[45] } func (x MinMaxOp) Number() protoreflect.EnumNumber { @@ -2948,7 +2994,7 @@ func (x MinMaxOp) Number() protoreflect.EnumNumber { // Deprecated: Use MinMaxOp.Descriptor instead. func (MinMaxOp) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{44} + return file_pg_query_proto_rawDescGZIP(), []int{45} } type SQLValueFunctionOp int32 @@ -3023,11 +3069,11 @@ func (x SQLValueFunctionOp) String() string { } func (SQLValueFunctionOp) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[45].Descriptor() + return file_pg_query_proto_enumTypes[46].Descriptor() } func (SQLValueFunctionOp) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[45] + return &file_pg_query_proto_enumTypes[46] } func (x SQLValueFunctionOp) Number() protoreflect.EnumNumber { @@ -3036,7 +3082,7 @@ func (x SQLValueFunctionOp) Number() protoreflect.EnumNumber { // Deprecated: Use SQLValueFunctionOp.Descriptor instead. func (SQLValueFunctionOp) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{45} + return file_pg_query_proto_rawDescGZIP(), []int{46} } type XmlExprOp int32 @@ -3090,11 +3136,11 @@ func (x XmlExprOp) String() string { } func (XmlExprOp) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[46].Descriptor() + return file_pg_query_proto_enumTypes[47].Descriptor() } func (XmlExprOp) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[46] + return &file_pg_query_proto_enumTypes[47] } func (x XmlExprOp) Number() protoreflect.EnumNumber { @@ -3103,7 +3149,7 @@ func (x XmlExprOp) Number() protoreflect.EnumNumber { // Deprecated: Use XmlExprOp.Descriptor instead. func (XmlExprOp) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{46} + return file_pg_query_proto_rawDescGZIP(), []int{47} } type XmlOptionType int32 @@ -3139,11 +3185,11 @@ func (x XmlOptionType) String() string { } func (XmlOptionType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[47].Descriptor() + return file_pg_query_proto_enumTypes[48].Descriptor() } func (XmlOptionType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[47] + return &file_pg_query_proto_enumTypes[48] } func (x XmlOptionType) Number() protoreflect.EnumNumber { @@ -3152,7 +3198,7 @@ func (x XmlOptionType) Number() protoreflect.EnumNumber { // Deprecated: Use XmlOptionType.Descriptor instead. func (XmlOptionType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{47} + return file_pg_query_proto_rawDescGZIP(), []int{48} } type JsonEncoding int32 @@ -3194,11 +3240,11 @@ func (x JsonEncoding) String() string { } func (JsonEncoding) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[48].Descriptor() + return file_pg_query_proto_enumTypes[49].Descriptor() } func (JsonEncoding) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[48] + return &file_pg_query_proto_enumTypes[49] } func (x JsonEncoding) Number() protoreflect.EnumNumber { @@ -3207,7 +3253,7 @@ func (x JsonEncoding) Number() protoreflect.EnumNumber { // Deprecated: Use JsonEncoding.Descriptor instead. func (JsonEncoding) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{48} + return file_pg_query_proto_rawDescGZIP(), []int{49} } type JsonFormatType int32 @@ -3246,11 +3292,11 @@ func (x JsonFormatType) String() string { } func (JsonFormatType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[49].Descriptor() + return file_pg_query_proto_enumTypes[50].Descriptor() } func (JsonFormatType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[49] + return &file_pg_query_proto_enumTypes[50] } func (x JsonFormatType) Number() protoreflect.EnumNumber { @@ -3259,7 +3305,7 @@ func (x JsonFormatType) Number() protoreflect.EnumNumber { // Deprecated: Use JsonFormatType.Descriptor instead. func (JsonFormatType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{49} + return file_pg_query_proto_rawDescGZIP(), []int{50} } type JsonConstructorType int32 @@ -3310,11 +3356,11 @@ func (x JsonConstructorType) String() string { } func (JsonConstructorType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[50].Descriptor() + return file_pg_query_proto_enumTypes[51].Descriptor() } func (JsonConstructorType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[50] + return &file_pg_query_proto_enumTypes[51] } func (x JsonConstructorType) Number() protoreflect.EnumNumber { @@ -3323,7 +3369,7 @@ func (x JsonConstructorType) Number() protoreflect.EnumNumber { // Deprecated: Use JsonConstructorType.Descriptor instead. func (JsonConstructorType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{50} + return file_pg_query_proto_rawDescGZIP(), []int{51} } type JsonValueType int32 @@ -3365,11 +3411,11 @@ func (x JsonValueType) String() string { } func (JsonValueType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[51].Descriptor() + return file_pg_query_proto_enumTypes[52].Descriptor() } func (JsonValueType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[51] + return &file_pg_query_proto_enumTypes[52] } func (x JsonValueType) Number() protoreflect.EnumNumber { @@ -3378,7 +3424,7 @@ func (x JsonValueType) Number() protoreflect.EnumNumber { // Deprecated: Use JsonValueType.Descriptor instead. func (JsonValueType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{51} + return file_pg_query_proto_rawDescGZIP(), []int{52} } type JsonWrapper int32 @@ -3420,11 +3466,11 @@ func (x JsonWrapper) String() string { } func (JsonWrapper) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[52].Descriptor() + return file_pg_query_proto_enumTypes[53].Descriptor() } func (JsonWrapper) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[52] + return &file_pg_query_proto_enumTypes[53] } func (x JsonWrapper) Number() protoreflect.EnumNumber { @@ -3433,7 +3479,7 @@ func (x JsonWrapper) Number() protoreflect.EnumNumber { // Deprecated: Use JsonWrapper.Descriptor instead. func (JsonWrapper) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{52} + return file_pg_query_proto_rawDescGZIP(), []int{53} } type JsonBehaviorType int32 @@ -3490,11 +3536,11 @@ func (x JsonBehaviorType) String() string { } func (JsonBehaviorType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[53].Descriptor() + return file_pg_query_proto_enumTypes[54].Descriptor() } func (JsonBehaviorType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[53] + return &file_pg_query_proto_enumTypes[54] } func (x JsonBehaviorType) Number() protoreflect.EnumNumber { @@ -3503,7 +3549,7 @@ func (x JsonBehaviorType) Number() protoreflect.EnumNumber { // Deprecated: Use JsonBehaviorType.Descriptor instead. func (JsonBehaviorType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{53} + return file_pg_query_proto_rawDescGZIP(), []int{54} } type JsonExprOp int32 @@ -3545,11 +3591,11 @@ func (x JsonExprOp) String() string { } func (JsonExprOp) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[54].Descriptor() + return file_pg_query_proto_enumTypes[55].Descriptor() } func (JsonExprOp) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[54] + return &file_pg_query_proto_enumTypes[55] } func (x JsonExprOp) Number() protoreflect.EnumNumber { @@ -3558,7 +3604,7 @@ func (x JsonExprOp) Number() protoreflect.EnumNumber { // Deprecated: Use JsonExprOp.Descriptor instead. func (JsonExprOp) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{54} + return file_pg_query_proto_rawDescGZIP(), []int{55} } type NullTestType int32 @@ -3594,11 +3640,11 @@ func (x NullTestType) String() string { } func (NullTestType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[55].Descriptor() + return file_pg_query_proto_enumTypes[56].Descriptor() } func (NullTestType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[55] + return &file_pg_query_proto_enumTypes[56] } func (x NullTestType) Number() protoreflect.EnumNumber { @@ -3607,7 +3653,7 @@ func (x NullTestType) Number() protoreflect.EnumNumber { // Deprecated: Use NullTestType.Descriptor instead. func (NullTestType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{55} + return file_pg_query_proto_rawDescGZIP(), []int{56} } type BoolTestType int32 @@ -3655,11 +3701,11 @@ func (x BoolTestType) String() string { } func (BoolTestType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[56].Descriptor() + return file_pg_query_proto_enumTypes[57].Descriptor() } func (BoolTestType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[56] + return &file_pg_query_proto_enumTypes[57] } func (x BoolTestType) Number() protoreflect.EnumNumber { @@ -3668,7 +3714,7 @@ func (x BoolTestType) Number() protoreflect.EnumNumber { // Deprecated: Use BoolTestType.Descriptor instead. func (BoolTestType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{56} + return file_pg_query_proto_rawDescGZIP(), []int{57} } type MergeMatchKind int32 @@ -3707,11 +3753,11 @@ func (x MergeMatchKind) String() string { } func (MergeMatchKind) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[57].Descriptor() + return file_pg_query_proto_enumTypes[58].Descriptor() } func (MergeMatchKind) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[57] + return &file_pg_query_proto_enumTypes[58] } func (x MergeMatchKind) Number() protoreflect.EnumNumber { @@ -3720,7 +3766,7 @@ func (x MergeMatchKind) Number() protoreflect.EnumNumber { // Deprecated: Use MergeMatchKind.Descriptor instead. func (MergeMatchKind) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{57} + return file_pg_query_proto_rawDescGZIP(), []int{58} } type CmdType int32 @@ -3774,11 +3820,11 @@ func (x CmdType) String() string { } func (CmdType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[58].Descriptor() + return file_pg_query_proto_enumTypes[59].Descriptor() } func (CmdType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[58] + return &file_pg_query_proto_enumTypes[59] } func (x CmdType) Number() protoreflect.EnumNumber { @@ -3787,7 +3833,7 @@ func (x CmdType) Number() protoreflect.EnumNumber { // Deprecated: Use CmdType.Descriptor instead. func (CmdType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{58} + return file_pg_query_proto_rawDescGZIP(), []int{59} } type JoinType int32 @@ -3800,24 +3846,26 @@ const ( JoinType_JOIN_RIGHT JoinType = 4 JoinType_JOIN_SEMI JoinType = 5 JoinType_JOIN_ANTI JoinType = 6 - JoinType_JOIN_RIGHT_ANTI JoinType = 7 - JoinType_JOIN_UNIQUE_OUTER JoinType = 8 - JoinType_JOIN_UNIQUE_INNER JoinType = 9 + 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_ANTI", - 8: "JOIN_UNIQUE_OUTER", - 9: "JOIN_UNIQUE_INNER", + 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, @@ -3827,9 +3875,10 @@ var ( "JOIN_RIGHT": 4, "JOIN_SEMI": 5, "JOIN_ANTI": 6, - "JOIN_RIGHT_ANTI": 7, - "JOIN_UNIQUE_OUTER": 8, - "JOIN_UNIQUE_INNER": 9, + "JOIN_RIGHT_SEMI": 7, + "JOIN_RIGHT_ANTI": 8, + "JOIN_UNIQUE_OUTER": 9, + "JOIN_UNIQUE_INNER": 10, } ) @@ -3844,11 +3893,11 @@ func (x JoinType) String() string { } func (JoinType) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[59].Descriptor() + return file_pg_query_proto_enumTypes[60].Descriptor() } func (JoinType) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[59] + return &file_pg_query_proto_enumTypes[60] } func (x JoinType) Number() protoreflect.EnumNumber { @@ -3857,7 +3906,7 @@ func (x JoinType) Number() protoreflect.EnumNumber { // Deprecated: Use JoinType.Descriptor instead. func (JoinType) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{59} + return file_pg_query_proto_rawDescGZIP(), []int{60} } type AggStrategy int32 @@ -3899,11 +3948,11 @@ func (x AggStrategy) String() string { } func (AggStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[60].Descriptor() + return file_pg_query_proto_enumTypes[61].Descriptor() } func (AggStrategy) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[60] + return &file_pg_query_proto_enumTypes[61] } func (x AggStrategy) Number() protoreflect.EnumNumber { @@ -3912,7 +3961,7 @@ func (x AggStrategy) Number() protoreflect.EnumNumber { // Deprecated: Use AggStrategy.Descriptor instead. func (AggStrategy) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{60} + return file_pg_query_proto_rawDescGZIP(), []int{61} } type AggSplit int32 @@ -3951,11 +4000,11 @@ func (x AggSplit) String() string { } func (AggSplit) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[61].Descriptor() + return file_pg_query_proto_enumTypes[62].Descriptor() } func (AggSplit) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[61] + return &file_pg_query_proto_enumTypes[62] } func (x AggSplit) Number() protoreflect.EnumNumber { @@ -3964,7 +4013,7 @@ func (x AggSplit) Number() protoreflect.EnumNumber { // Deprecated: Use AggSplit.Descriptor instead. func (AggSplit) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{61} + return file_pg_query_proto_rawDescGZIP(), []int{62} } type SetOpCmd int32 @@ -4006,11 +4055,11 @@ func (x SetOpCmd) String() string { } func (SetOpCmd) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[62].Descriptor() + return file_pg_query_proto_enumTypes[63].Descriptor() } func (SetOpCmd) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[62] + return &file_pg_query_proto_enumTypes[63] } func (x SetOpCmd) Number() protoreflect.EnumNumber { @@ -4019,7 +4068,7 @@ func (x SetOpCmd) Number() protoreflect.EnumNumber { // Deprecated: Use SetOpCmd.Descriptor instead. func (SetOpCmd) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{62} + return file_pg_query_proto_rawDescGZIP(), []int{63} } type SetOpStrategy int32 @@ -4055,11 +4104,11 @@ func (x SetOpStrategy) String() string { } func (SetOpStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[63].Descriptor() + return file_pg_query_proto_enumTypes[64].Descriptor() } func (SetOpStrategy) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[63] + return &file_pg_query_proto_enumTypes[64] } func (x SetOpStrategy) Number() protoreflect.EnumNumber { @@ -4068,7 +4117,7 @@ func (x SetOpStrategy) Number() protoreflect.EnumNumber { // Deprecated: Use SetOpStrategy.Descriptor instead. func (SetOpStrategy) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{63} + return file_pg_query_proto_rawDescGZIP(), []int{64} } type OnConflictAction int32 @@ -4107,11 +4156,11 @@ func (x OnConflictAction) String() string { } func (OnConflictAction) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[64].Descriptor() + return file_pg_query_proto_enumTypes[65].Descriptor() } func (OnConflictAction) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[64] + return &file_pg_query_proto_enumTypes[65] } func (x OnConflictAction) Number() protoreflect.EnumNumber { @@ -4120,7 +4169,7 @@ func (x OnConflictAction) Number() protoreflect.EnumNumber { // Deprecated: Use OnConflictAction.Descriptor instead. func (OnConflictAction) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{64} + return file_pg_query_proto_rawDescGZIP(), []int{65} } type LimitOption int32 @@ -4159,11 +4208,11 @@ func (x LimitOption) String() string { } func (LimitOption) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[65].Descriptor() + return file_pg_query_proto_enumTypes[66].Descriptor() } func (LimitOption) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[65] + return &file_pg_query_proto_enumTypes[66] } func (x LimitOption) Number() protoreflect.EnumNumber { @@ -4172,7 +4221,7 @@ func (x LimitOption) Number() protoreflect.EnumNumber { // Deprecated: Use LimitOption.Descriptor instead. func (LimitOption) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{65} + return file_pg_query_proto_rawDescGZIP(), []int{66} } type LockClauseStrength int32 @@ -4217,11 +4266,11 @@ func (x LockClauseStrength) String() string { } func (LockClauseStrength) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[66].Descriptor() + return file_pg_query_proto_enumTypes[67].Descriptor() } func (LockClauseStrength) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[66] + return &file_pg_query_proto_enumTypes[67] } func (x LockClauseStrength) Number() protoreflect.EnumNumber { @@ -4230,7 +4279,7 @@ func (x LockClauseStrength) Number() protoreflect.EnumNumber { // Deprecated: Use LockClauseStrength.Descriptor instead. func (LockClauseStrength) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{66} + return file_pg_query_proto_rawDescGZIP(), []int{67} } type LockWaitPolicy int32 @@ -4269,11 +4318,11 @@ func (x LockWaitPolicy) String() string { } func (LockWaitPolicy) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[67].Descriptor() + return file_pg_query_proto_enumTypes[68].Descriptor() } func (LockWaitPolicy) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[67] + return &file_pg_query_proto_enumTypes[68] } func (x LockWaitPolicy) Number() protoreflect.EnumNumber { @@ -4282,7 +4331,7 @@ func (x LockWaitPolicy) Number() protoreflect.EnumNumber { // Deprecated: Use LockWaitPolicy.Descriptor instead. func (LockWaitPolicy) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{67} + return file_pg_query_proto_rawDescGZIP(), []int{68} } type LockTupleMode int32 @@ -4324,11 +4373,11 @@ func (x LockTupleMode) String() string { } func (LockTupleMode) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[68].Descriptor() + return file_pg_query_proto_enumTypes[69].Descriptor() } func (LockTupleMode) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[68] + return &file_pg_query_proto_enumTypes[69] } func (x LockTupleMode) Number() protoreflect.EnumNumber { @@ -4337,7 +4386,77 @@ func (x LockTupleMode) Number() protoreflect.EnumNumber { // Deprecated: Use LockTupleMode.Descriptor instead. func (LockTupleMode) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{68} + 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 @@ -4379,11 +4498,11 @@ func (x KeywordKind) String() string { } func (KeywordKind) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[69].Descriptor() + return file_pg_query_proto_enumTypes[71].Descriptor() } func (KeywordKind) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[69] + return &file_pg_query_proto_enumTypes[71] } func (x KeywordKind) Number() protoreflect.EnumNumber { @@ -4392,7 +4511,7 @@ func (x KeywordKind) Number() protoreflect.EnumNumber { // Deprecated: Use KeywordKind.Descriptor instead. func (KeywordKind) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{69} + return file_pg_query_proto_rawDescGZIP(), []int{71} } type Token int32 @@ -4570,380 +4689,383 @@ const ( Token_ENCODING Token = 402 Token_ENCRYPTED Token = 403 Token_END_P Token = 404 - Token_ENUM_P Token = 405 - Token_ERROR_P Token = 406 - Token_ESCAPE Token = 407 - Token_EVENT Token = 408 - Token_EXCEPT Token = 409 - Token_EXCLUDE Token = 410 - Token_EXCLUDING Token = 411 - Token_EXCLUSIVE Token = 412 - Token_EXECUTE Token = 413 - Token_EXISTS Token = 414 - Token_EXPLAIN Token = 415 - Token_EXPRESSION Token = 416 - Token_EXTENSION Token = 417 - Token_EXTERNAL Token = 418 - Token_EXTRACT Token = 419 - Token_FALSE_P Token = 420 - Token_FAMILY Token = 421 - Token_FETCH Token = 422 - Token_FILTER Token = 423 - Token_FINALIZE Token = 424 - Token_FIRST_P Token = 425 - Token_FLOAT_P Token = 426 - Token_FOLLOWING Token = 427 - Token_FOR Token = 428 - Token_FORCE Token = 429 - Token_FOREIGN Token = 430 - Token_FORMAT Token = 431 - Token_FORWARD Token = 432 - Token_FREEZE Token = 433 - Token_FROM Token = 434 - Token_FULL Token = 435 - Token_FUNCTION Token = 436 - Token_FUNCTIONS Token = 437 - Token_GENERATED Token = 438 - Token_GLOBAL Token = 439 - Token_GRANT Token = 440 - Token_GRANTED Token = 441 - Token_GREATEST Token = 442 - Token_GROUP_P Token = 443 - Token_GROUPING Token = 444 - Token_GROUPS Token = 445 - Token_HANDLER Token = 446 - Token_HAVING Token = 447 - Token_HEADER_P Token = 448 - Token_HOLD Token = 449 - Token_HOUR_P Token = 450 - Token_IDENTITY_P Token = 451 - Token_IF_P Token = 452 - Token_ILIKE Token = 453 - Token_IMMEDIATE Token = 454 - Token_IMMUTABLE Token = 455 - Token_IMPLICIT_P Token = 456 - Token_IMPORT_P Token = 457 - Token_IN_P Token = 458 - Token_INCLUDE Token = 459 - Token_INCLUDING Token = 460 - Token_INCREMENT Token = 461 - Token_INDENT Token = 462 - Token_INDEX Token = 463 - Token_INDEXES Token = 464 - Token_INHERIT Token = 465 - Token_INHERITS Token = 466 - Token_INITIALLY Token = 467 - Token_INLINE_P Token = 468 - Token_INNER_P Token = 469 - Token_INOUT Token = 470 - Token_INPUT_P Token = 471 - Token_INSENSITIVE Token = 472 - Token_INSERT Token = 473 - Token_INSTEAD Token = 474 - Token_INT_P Token = 475 - Token_INTEGER Token = 476 - Token_INTERSECT Token = 477 - Token_INTERVAL Token = 478 - Token_INTO Token = 479 - Token_INVOKER Token = 480 - Token_IS Token = 481 - Token_ISNULL Token = 482 - Token_ISOLATION Token = 483 - Token_JOIN Token = 484 - Token_JSON Token = 485 - Token_JSON_ARRAY Token = 486 - Token_JSON_ARRAYAGG Token = 487 - Token_JSON_EXISTS Token = 488 - Token_JSON_OBJECT Token = 489 - Token_JSON_OBJECTAGG Token = 490 - Token_JSON_QUERY Token = 491 - Token_JSON_SCALAR Token = 492 - Token_JSON_SERIALIZE Token = 493 - Token_JSON_TABLE Token = 494 - Token_JSON_VALUE Token = 495 - Token_KEEP Token = 496 - Token_KEY Token = 497 - Token_KEYS Token = 498 - Token_LABEL Token = 499 - Token_LANGUAGE Token = 500 - Token_LARGE_P Token = 501 - Token_LAST_P Token = 502 - Token_LATERAL_P Token = 503 - Token_LEADING Token = 504 - Token_LEAKPROOF Token = 505 - Token_LEAST Token = 506 - Token_LEFT Token = 507 - Token_LEVEL Token = 508 - Token_LIKE Token = 509 - Token_LIMIT Token = 510 - Token_LISTEN Token = 511 - Token_LOAD Token = 512 - Token_LOCAL Token = 513 - Token_LOCALTIME Token = 514 - Token_LOCALTIMESTAMP Token = 515 - Token_LOCATION Token = 516 - Token_LOCK_P Token = 517 - Token_LOCKED Token = 518 - Token_LOGGED Token = 519 - Token_MAPPING Token = 520 - Token_MATCH Token = 521 - Token_MATCHED Token = 522 - Token_MATERIALIZED Token = 523 - Token_MAXVALUE Token = 524 - Token_MERGE Token = 525 - Token_MERGE_ACTION Token = 526 - Token_METHOD Token = 527 - Token_MINUTE_P Token = 528 - Token_MINVALUE Token = 529 - Token_MODE Token = 530 - Token_MONTH_P Token = 531 - Token_MOVE Token = 532 - Token_NAME_P Token = 533 - Token_NAMES Token = 534 - Token_NATIONAL Token = 535 - Token_NATURAL Token = 536 - Token_NCHAR Token = 537 - Token_NESTED Token = 538 - Token_NEW Token = 539 - Token_NEXT Token = 540 - Token_NFC Token = 541 - Token_NFD Token = 542 - Token_NFKC Token = 543 - Token_NFKD Token = 544 - Token_NO Token = 545 - Token_NONE Token = 546 - Token_NORMALIZE Token = 547 - Token_NORMALIZED Token = 548 - Token_NOT Token = 549 - Token_NOTHING Token = 550 - Token_NOTIFY Token = 551 - Token_NOTNULL Token = 552 - Token_NOWAIT Token = 553 - Token_NULL_P Token = 554 - Token_NULLIF Token = 555 - Token_NULLS_P Token = 556 - Token_NUMERIC Token = 557 - Token_OBJECT_P Token = 558 - Token_OF Token = 559 - Token_OFF Token = 560 - Token_OFFSET Token = 561 - Token_OIDS Token = 562 - Token_OLD Token = 563 - Token_OMIT Token = 564 - Token_ON Token = 565 - Token_ONLY Token = 566 - Token_OPERATOR Token = 567 - Token_OPTION Token = 568 - Token_OPTIONS Token = 569 - Token_OR Token = 570 - Token_ORDER Token = 571 - Token_ORDINALITY Token = 572 - Token_OTHERS Token = 573 - Token_OUT_P Token = 574 - Token_OUTER_P Token = 575 - Token_OVER Token = 576 - Token_OVERLAPS Token = 577 - Token_OVERLAY Token = 578 - Token_OVERRIDING Token = 579 - Token_OWNED Token = 580 - Token_OWNER Token = 581 - Token_PARALLEL Token = 582 - Token_PARAMETER Token = 583 - Token_PARSER Token = 584 - Token_PARTIAL Token = 585 - Token_PARTITION Token = 586 - Token_PASSING Token = 587 - Token_PASSWORD Token = 588 - Token_PATH Token = 589 - Token_PLACING Token = 590 - Token_PLAN Token = 591 - Token_PLANS Token = 592 - Token_POLICY Token = 593 - Token_POSITION Token = 594 - Token_PRECEDING Token = 595 - Token_PRECISION Token = 596 - Token_PRESERVE Token = 597 - Token_PREPARE Token = 598 - Token_PREPARED Token = 599 - Token_PRIMARY Token = 600 - Token_PRIOR Token = 601 - Token_PRIVILEGES Token = 602 - Token_PROCEDURAL Token = 603 - Token_PROCEDURE Token = 604 - Token_PROCEDURES Token = 605 - Token_PROGRAM Token = 606 - Token_PUBLICATION Token = 607 - Token_QUOTE Token = 608 - Token_QUOTES Token = 609 - Token_RANGE Token = 610 - Token_READ Token = 611 - Token_REAL Token = 612 - Token_REASSIGN Token = 613 - Token_RECHECK Token = 614 - Token_RECURSIVE Token = 615 - Token_REF_P Token = 616 - Token_REFERENCES Token = 617 - Token_REFERENCING Token = 618 - Token_REFRESH Token = 619 - Token_REINDEX Token = 620 - Token_RELATIVE_P Token = 621 - Token_RELEASE Token = 622 - Token_RENAME Token = 623 - Token_REPEATABLE Token = 624 - Token_REPLACE Token = 625 - Token_REPLICA Token = 626 - Token_RESET Token = 627 - Token_RESTART Token = 628 - Token_RESTRICT Token = 629 - Token_RETURN Token = 630 - Token_RETURNING Token = 631 - Token_RETURNS Token = 632 - Token_REVOKE Token = 633 - Token_RIGHT Token = 634 - Token_ROLE Token = 635 - Token_ROLLBACK Token = 636 - Token_ROLLUP Token = 637 - Token_ROUTINE Token = 638 - Token_ROUTINES Token = 639 - Token_ROW Token = 640 - Token_ROWS Token = 641 - Token_RULE Token = 642 - Token_SAVEPOINT Token = 643 - Token_SCALAR Token = 644 - Token_SCHEMA Token = 645 - Token_SCHEMAS Token = 646 - Token_SCROLL Token = 647 - Token_SEARCH Token = 648 - Token_SECOND_P Token = 649 - Token_SECURITY Token = 650 - Token_SELECT Token = 651 - Token_SEQUENCE Token = 652 - Token_SEQUENCES Token = 653 - Token_SERIALIZABLE Token = 654 - Token_SERVER Token = 655 - Token_SESSION Token = 656 - Token_SESSION_USER Token = 657 - Token_SET Token = 658 - Token_SETS Token = 659 - Token_SETOF Token = 660 - Token_SHARE Token = 661 - Token_SHOW Token = 662 - Token_SIMILAR Token = 663 - Token_SIMPLE Token = 664 - Token_SKIP Token = 665 - Token_SMALLINT Token = 666 - Token_SNAPSHOT Token = 667 - Token_SOME Token = 668 - Token_SOURCE Token = 669 - Token_SQL_P Token = 670 - Token_STABLE Token = 671 - Token_STANDALONE_P Token = 672 - Token_START Token = 673 - Token_STATEMENT Token = 674 - Token_STATISTICS Token = 675 - Token_STDIN Token = 676 - Token_STDOUT Token = 677 - Token_STORAGE Token = 678 - Token_STORED Token = 679 - Token_STRICT_P Token = 680 - Token_STRING_P Token = 681 - Token_STRIP_P Token = 682 - Token_SUBSCRIPTION Token = 683 - Token_SUBSTRING Token = 684 - Token_SUPPORT Token = 685 - Token_SYMMETRIC Token = 686 - Token_SYSID Token = 687 - Token_SYSTEM_P Token = 688 - Token_SYSTEM_USER Token = 689 - Token_TABLE Token = 690 - Token_TABLES Token = 691 - Token_TABLESAMPLE Token = 692 - Token_TABLESPACE Token = 693 - Token_TARGET Token = 694 - Token_TEMP Token = 695 - Token_TEMPLATE Token = 696 - Token_TEMPORARY Token = 697 - Token_TEXT_P Token = 698 - Token_THEN Token = 699 - Token_TIES Token = 700 - Token_TIME Token = 701 - Token_TIMESTAMP Token = 702 - Token_TO Token = 703 - Token_TRAILING Token = 704 - Token_TRANSACTION Token = 705 - Token_TRANSFORM Token = 706 - Token_TREAT Token = 707 - Token_TRIGGER Token = 708 - Token_TRIM Token = 709 - Token_TRUE_P Token = 710 - Token_TRUNCATE Token = 711 - Token_TRUSTED Token = 712 - Token_TYPE_P Token = 713 - Token_TYPES_P Token = 714 - Token_UESCAPE Token = 715 - Token_UNBOUNDED Token = 716 - Token_UNCONDITIONAL Token = 717 - Token_UNCOMMITTED Token = 718 - Token_UNENCRYPTED Token = 719 - Token_UNION Token = 720 - Token_UNIQUE Token = 721 - Token_UNKNOWN Token = 722 - Token_UNLISTEN Token = 723 - Token_UNLOGGED Token = 724 - Token_UNTIL Token = 725 - Token_UPDATE Token = 726 - Token_USER Token = 727 - Token_USING Token = 728 - Token_VACUUM Token = 729 - Token_VALID Token = 730 - Token_VALIDATE Token = 731 - Token_VALIDATOR Token = 732 - Token_VALUE_P Token = 733 - Token_VALUES Token = 734 - Token_VARCHAR Token = 735 - Token_VARIADIC Token = 736 - Token_VARYING Token = 737 - Token_VERBOSE Token = 738 - Token_VERSION_P Token = 739 - Token_VIEW Token = 740 - Token_VIEWS Token = 741 - Token_VOLATILE Token = 742 - Token_WHEN Token = 743 - Token_WHERE Token = 744 - Token_WHITESPACE_P Token = 745 - Token_WINDOW Token = 746 - Token_WITH Token = 747 - Token_WITHIN Token = 748 - Token_WITHOUT Token = 749 - Token_WORK Token = 750 - Token_WRAPPER Token = 751 - Token_WRITE Token = 752 - Token_XML_P Token = 753 - Token_XMLATTRIBUTES Token = 754 - Token_XMLCONCAT Token = 755 - Token_XMLELEMENT Token = 756 - Token_XMLEXISTS Token = 757 - Token_XMLFOREST Token = 758 - Token_XMLNAMESPACES Token = 759 - Token_XMLPARSE Token = 760 - Token_XMLPI Token = 761 - Token_XMLROOT Token = 762 - Token_XMLSERIALIZE Token = 763 - Token_XMLTABLE Token = 764 - Token_YEAR_P Token = 765 - Token_YES_P Token = 766 - Token_ZONE Token = 767 - Token_FORMAT_LA Token = 768 - Token_NOT_LA Token = 769 - Token_NULLS_LA Token = 770 - Token_WITH_LA Token = 771 - Token_WITHOUT_LA Token = 772 - Token_MODE_TYPE_NAME Token = 773 - Token_MODE_PLPGSQL_EXPR Token = 774 - Token_MODE_PLPGSQL_ASSIGN1 Token = 775 - Token_MODE_PLPGSQL_ASSIGN2 Token = 776 - Token_MODE_PLPGSQL_ASSIGN3 Token = 777 - Token_UMINUS Token = 778 + 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. @@ -5117,380 +5239,383 @@ var ( 402: "ENCODING", 403: "ENCRYPTED", 404: "END_P", - 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: "OF", - 560: "OFF", - 561: "OFFSET", - 562: "OIDS", - 563: "OLD", - 564: "OMIT", - 565: "ON", - 566: "ONLY", - 567: "OPERATOR", - 568: "OPTION", - 569: "OPTIONS", - 570: "OR", - 571: "ORDER", - 572: "ORDINALITY", - 573: "OTHERS", - 574: "OUT_P", - 575: "OUTER_P", - 576: "OVER", - 577: "OVERLAPS", - 578: "OVERLAY", - 579: "OVERRIDING", - 580: "OWNED", - 581: "OWNER", - 582: "PARALLEL", - 583: "PARAMETER", - 584: "PARSER", - 585: "PARTIAL", - 586: "PARTITION", - 587: "PASSING", - 588: "PASSWORD", - 589: "PATH", - 590: "PLACING", - 591: "PLAN", - 592: "PLANS", - 593: "POLICY", - 594: "POSITION", - 595: "PRECEDING", - 596: "PRECISION", - 597: "PRESERVE", - 598: "PREPARE", - 599: "PREPARED", - 600: "PRIMARY", - 601: "PRIOR", - 602: "PRIVILEGES", - 603: "PROCEDURAL", - 604: "PROCEDURE", - 605: "PROCEDURES", - 606: "PROGRAM", - 607: "PUBLICATION", - 608: "QUOTE", - 609: "QUOTES", - 610: "RANGE", - 611: "READ", - 612: "REAL", - 613: "REASSIGN", - 614: "RECHECK", - 615: "RECURSIVE", - 616: "REF_P", - 617: "REFERENCES", - 618: "REFERENCING", - 619: "REFRESH", - 620: "REINDEX", - 621: "RELATIVE_P", - 622: "RELEASE", - 623: "RENAME", - 624: "REPEATABLE", - 625: "REPLACE", - 626: "REPLICA", - 627: "RESET", - 628: "RESTART", - 629: "RESTRICT", - 630: "RETURN", - 631: "RETURNING", - 632: "RETURNS", - 633: "REVOKE", - 634: "RIGHT", - 635: "ROLE", - 636: "ROLLBACK", - 637: "ROLLUP", - 638: "ROUTINE", - 639: "ROUTINES", - 640: "ROW", - 641: "ROWS", - 642: "RULE", - 643: "SAVEPOINT", - 644: "SCALAR", - 645: "SCHEMA", - 646: "SCHEMAS", - 647: "SCROLL", - 648: "SEARCH", - 649: "SECOND_P", - 650: "SECURITY", - 651: "SELECT", - 652: "SEQUENCE", - 653: "SEQUENCES", - 654: "SERIALIZABLE", - 655: "SERVER", - 656: "SESSION", - 657: "SESSION_USER", - 658: "SET", - 659: "SETS", - 660: "SETOF", - 661: "SHARE", - 662: "SHOW", - 663: "SIMILAR", - 664: "SIMPLE", - 665: "SKIP", - 666: "SMALLINT", - 667: "SNAPSHOT", - 668: "SOME", - 669: "SOURCE", - 670: "SQL_P", - 671: "STABLE", - 672: "STANDALONE_P", - 673: "START", - 674: "STATEMENT", - 675: "STATISTICS", - 676: "STDIN", - 677: "STDOUT", - 678: "STORAGE", - 679: "STORED", - 680: "STRICT_P", - 681: "STRING_P", - 682: "STRIP_P", - 683: "SUBSCRIPTION", - 684: "SUBSTRING", - 685: "SUPPORT", - 686: "SYMMETRIC", - 687: "SYSID", - 688: "SYSTEM_P", - 689: "SYSTEM_USER", - 690: "TABLE", - 691: "TABLES", - 692: "TABLESAMPLE", - 693: "TABLESPACE", - 694: "TARGET", - 695: "TEMP", - 696: "TEMPLATE", - 697: "TEMPORARY", - 698: "TEXT_P", - 699: "THEN", - 700: "TIES", - 701: "TIME", - 702: "TIMESTAMP", - 703: "TO", - 704: "TRAILING", - 705: "TRANSACTION", - 706: "TRANSFORM", - 707: "TREAT", - 708: "TRIGGER", - 709: "TRIM", - 710: "TRUE_P", - 711: "TRUNCATE", - 712: "TRUSTED", - 713: "TYPE_P", - 714: "TYPES_P", - 715: "UESCAPE", - 716: "UNBOUNDED", - 717: "UNCONDITIONAL", - 718: "UNCOMMITTED", - 719: "UNENCRYPTED", - 720: "UNION", - 721: "UNIQUE", - 722: "UNKNOWN", - 723: "UNLISTEN", - 724: "UNLOGGED", - 725: "UNTIL", - 726: "UPDATE", - 727: "USER", - 728: "USING", - 729: "VACUUM", - 730: "VALID", - 731: "VALIDATE", - 732: "VALIDATOR", - 733: "VALUE_P", - 734: "VALUES", - 735: "VARCHAR", - 736: "VARIADIC", - 737: "VARYING", - 738: "VERBOSE", - 739: "VERSION_P", - 740: "VIEW", - 741: "VIEWS", - 742: "VOLATILE", - 743: "WHEN", - 744: "WHERE", - 745: "WHITESPACE_P", - 746: "WINDOW", - 747: "WITH", - 748: "WITHIN", - 749: "WITHOUT", - 750: "WORK", - 751: "WRAPPER", - 752: "WRITE", - 753: "XML_P", - 754: "XMLATTRIBUTES", - 755: "XMLCONCAT", - 756: "XMLELEMENT", - 757: "XMLEXISTS", - 758: "XMLFOREST", - 759: "XMLNAMESPACES", - 760: "XMLPARSE", - 761: "XMLPI", - 762: "XMLROOT", - 763: "XMLSERIALIZE", - 764: "XMLTABLE", - 765: "YEAR_P", - 766: "YES_P", - 767: "ZONE", - 768: "FORMAT_LA", - 769: "NOT_LA", - 770: "NULLS_LA", - 771: "WITH_LA", - 772: "WITHOUT_LA", - 773: "MODE_TYPE_NAME", - 774: "MODE_PLPGSQL_EXPR", - 775: "MODE_PLPGSQL_ASSIGN1", - 776: "MODE_PLPGSQL_ASSIGN2", - 777: "MODE_PLPGSQL_ASSIGN3", - 778: "UMINUS", + 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, @@ -5661,380 +5786,383 @@ var ( "ENCODING": 402, "ENCRYPTED": 403, "END_P": 404, - "ENUM_P": 405, - "ERROR_P": 406, - "ESCAPE": 407, - "EVENT": 408, - "EXCEPT": 409, - "EXCLUDE": 410, - "EXCLUDING": 411, - "EXCLUSIVE": 412, - "EXECUTE": 413, - "EXISTS": 414, - "EXPLAIN": 415, - "EXPRESSION": 416, - "EXTENSION": 417, - "EXTERNAL": 418, - "EXTRACT": 419, - "FALSE_P": 420, - "FAMILY": 421, - "FETCH": 422, - "FILTER": 423, - "FINALIZE": 424, - "FIRST_P": 425, - "FLOAT_P": 426, - "FOLLOWING": 427, - "FOR": 428, - "FORCE": 429, - "FOREIGN": 430, - "FORMAT": 431, - "FORWARD": 432, - "FREEZE": 433, - "FROM": 434, - "FULL": 435, - "FUNCTION": 436, - "FUNCTIONS": 437, - "GENERATED": 438, - "GLOBAL": 439, - "GRANT": 440, - "GRANTED": 441, - "GREATEST": 442, - "GROUP_P": 443, - "GROUPING": 444, - "GROUPS": 445, - "HANDLER": 446, - "HAVING": 447, - "HEADER_P": 448, - "HOLD": 449, - "HOUR_P": 450, - "IDENTITY_P": 451, - "IF_P": 452, - "ILIKE": 453, - "IMMEDIATE": 454, - "IMMUTABLE": 455, - "IMPLICIT_P": 456, - "IMPORT_P": 457, - "IN_P": 458, - "INCLUDE": 459, - "INCLUDING": 460, - "INCREMENT": 461, - "INDENT": 462, - "INDEX": 463, - "INDEXES": 464, - "INHERIT": 465, - "INHERITS": 466, - "INITIALLY": 467, - "INLINE_P": 468, - "INNER_P": 469, - "INOUT": 470, - "INPUT_P": 471, - "INSENSITIVE": 472, - "INSERT": 473, - "INSTEAD": 474, - "INT_P": 475, - "INTEGER": 476, - "INTERSECT": 477, - "INTERVAL": 478, - "INTO": 479, - "INVOKER": 480, - "IS": 481, - "ISNULL": 482, - "ISOLATION": 483, - "JOIN": 484, - "JSON": 485, - "JSON_ARRAY": 486, - "JSON_ARRAYAGG": 487, - "JSON_EXISTS": 488, - "JSON_OBJECT": 489, - "JSON_OBJECTAGG": 490, - "JSON_QUERY": 491, - "JSON_SCALAR": 492, - "JSON_SERIALIZE": 493, - "JSON_TABLE": 494, - "JSON_VALUE": 495, - "KEEP": 496, - "KEY": 497, - "KEYS": 498, - "LABEL": 499, - "LANGUAGE": 500, - "LARGE_P": 501, - "LAST_P": 502, - "LATERAL_P": 503, - "LEADING": 504, - "LEAKPROOF": 505, - "LEAST": 506, - "LEFT": 507, - "LEVEL": 508, - "LIKE": 509, - "LIMIT": 510, - "LISTEN": 511, - "LOAD": 512, - "LOCAL": 513, - "LOCALTIME": 514, - "LOCALTIMESTAMP": 515, - "LOCATION": 516, - "LOCK_P": 517, - "LOCKED": 518, - "LOGGED": 519, - "MAPPING": 520, - "MATCH": 521, - "MATCHED": 522, - "MATERIALIZED": 523, - "MAXVALUE": 524, - "MERGE": 525, - "MERGE_ACTION": 526, - "METHOD": 527, - "MINUTE_P": 528, - "MINVALUE": 529, - "MODE": 530, - "MONTH_P": 531, - "MOVE": 532, - "NAME_P": 533, - "NAMES": 534, - "NATIONAL": 535, - "NATURAL": 536, - "NCHAR": 537, - "NESTED": 538, - "NEW": 539, - "NEXT": 540, - "NFC": 541, - "NFD": 542, - "NFKC": 543, - "NFKD": 544, - "NO": 545, - "NONE": 546, - "NORMALIZE": 547, - "NORMALIZED": 548, - "NOT": 549, - "NOTHING": 550, - "NOTIFY": 551, - "NOTNULL": 552, - "NOWAIT": 553, - "NULL_P": 554, - "NULLIF": 555, - "NULLS_P": 556, - "NUMERIC": 557, - "OBJECT_P": 558, - "OF": 559, - "OFF": 560, - "OFFSET": 561, - "OIDS": 562, - "OLD": 563, - "OMIT": 564, - "ON": 565, - "ONLY": 566, - "OPERATOR": 567, - "OPTION": 568, - "OPTIONS": 569, - "OR": 570, - "ORDER": 571, - "ORDINALITY": 572, - "OTHERS": 573, - "OUT_P": 574, - "OUTER_P": 575, - "OVER": 576, - "OVERLAPS": 577, - "OVERLAY": 578, - "OVERRIDING": 579, - "OWNED": 580, - "OWNER": 581, - "PARALLEL": 582, - "PARAMETER": 583, - "PARSER": 584, - "PARTIAL": 585, - "PARTITION": 586, - "PASSING": 587, - "PASSWORD": 588, - "PATH": 589, - "PLACING": 590, - "PLAN": 591, - "PLANS": 592, - "POLICY": 593, - "POSITION": 594, - "PRECEDING": 595, - "PRECISION": 596, - "PRESERVE": 597, - "PREPARE": 598, - "PREPARED": 599, - "PRIMARY": 600, - "PRIOR": 601, - "PRIVILEGES": 602, - "PROCEDURAL": 603, - "PROCEDURE": 604, - "PROCEDURES": 605, - "PROGRAM": 606, - "PUBLICATION": 607, - "QUOTE": 608, - "QUOTES": 609, - "RANGE": 610, - "READ": 611, - "REAL": 612, - "REASSIGN": 613, - "RECHECK": 614, - "RECURSIVE": 615, - "REF_P": 616, - "REFERENCES": 617, - "REFERENCING": 618, - "REFRESH": 619, - "REINDEX": 620, - "RELATIVE_P": 621, - "RELEASE": 622, - "RENAME": 623, - "REPEATABLE": 624, - "REPLACE": 625, - "REPLICA": 626, - "RESET": 627, - "RESTART": 628, - "RESTRICT": 629, - "RETURN": 630, - "RETURNING": 631, - "RETURNS": 632, - "REVOKE": 633, - "RIGHT": 634, - "ROLE": 635, - "ROLLBACK": 636, - "ROLLUP": 637, - "ROUTINE": 638, - "ROUTINES": 639, - "ROW": 640, - "ROWS": 641, - "RULE": 642, - "SAVEPOINT": 643, - "SCALAR": 644, - "SCHEMA": 645, - "SCHEMAS": 646, - "SCROLL": 647, - "SEARCH": 648, - "SECOND_P": 649, - "SECURITY": 650, - "SELECT": 651, - "SEQUENCE": 652, - "SEQUENCES": 653, - "SERIALIZABLE": 654, - "SERVER": 655, - "SESSION": 656, - "SESSION_USER": 657, - "SET": 658, - "SETS": 659, - "SETOF": 660, - "SHARE": 661, - "SHOW": 662, - "SIMILAR": 663, - "SIMPLE": 664, - "SKIP": 665, - "SMALLINT": 666, - "SNAPSHOT": 667, - "SOME": 668, - "SOURCE": 669, - "SQL_P": 670, - "STABLE": 671, - "STANDALONE_P": 672, - "START": 673, - "STATEMENT": 674, - "STATISTICS": 675, - "STDIN": 676, - "STDOUT": 677, - "STORAGE": 678, - "STORED": 679, - "STRICT_P": 680, - "STRING_P": 681, - "STRIP_P": 682, - "SUBSCRIPTION": 683, - "SUBSTRING": 684, - "SUPPORT": 685, - "SYMMETRIC": 686, - "SYSID": 687, - "SYSTEM_P": 688, - "SYSTEM_USER": 689, - "TABLE": 690, - "TABLES": 691, - "TABLESAMPLE": 692, - "TABLESPACE": 693, - "TARGET": 694, - "TEMP": 695, - "TEMPLATE": 696, - "TEMPORARY": 697, - "TEXT_P": 698, - "THEN": 699, - "TIES": 700, - "TIME": 701, - "TIMESTAMP": 702, - "TO": 703, - "TRAILING": 704, - "TRANSACTION": 705, - "TRANSFORM": 706, - "TREAT": 707, - "TRIGGER": 708, - "TRIM": 709, - "TRUE_P": 710, - "TRUNCATE": 711, - "TRUSTED": 712, - "TYPE_P": 713, - "TYPES_P": 714, - "UESCAPE": 715, - "UNBOUNDED": 716, - "UNCONDITIONAL": 717, - "UNCOMMITTED": 718, - "UNENCRYPTED": 719, - "UNION": 720, - "UNIQUE": 721, - "UNKNOWN": 722, - "UNLISTEN": 723, - "UNLOGGED": 724, - "UNTIL": 725, - "UPDATE": 726, - "USER": 727, - "USING": 728, - "VACUUM": 729, - "VALID": 730, - "VALIDATE": 731, - "VALIDATOR": 732, - "VALUE_P": 733, - "VALUES": 734, - "VARCHAR": 735, - "VARIADIC": 736, - "VARYING": 737, - "VERBOSE": 738, - "VERSION_P": 739, - "VIEW": 740, - "VIEWS": 741, - "VOLATILE": 742, - "WHEN": 743, - "WHERE": 744, - "WHITESPACE_P": 745, - "WINDOW": 746, - "WITH": 747, - "WITHIN": 748, - "WITHOUT": 749, - "WORK": 750, - "WRAPPER": 751, - "WRITE": 752, - "XML_P": 753, - "XMLATTRIBUTES": 754, - "XMLCONCAT": 755, - "XMLELEMENT": 756, - "XMLEXISTS": 757, - "XMLFOREST": 758, - "XMLNAMESPACES": 759, - "XMLPARSE": 760, - "XMLPI": 761, - "XMLROOT": 762, - "XMLSERIALIZE": 763, - "XMLTABLE": 764, - "YEAR_P": 765, - "YES_P": 766, - "ZONE": 767, - "FORMAT_LA": 768, - "NOT_LA": 769, - "NULLS_LA": 770, - "WITH_LA": 771, - "WITHOUT_LA": 772, - "MODE_TYPE_NAME": 773, - "MODE_PLPGSQL_EXPR": 774, - "MODE_PLPGSQL_ASSIGN1": 775, - "MODE_PLPGSQL_ASSIGN2": 776, - "MODE_PLPGSQL_ASSIGN3": 777, - "UMINUS": 778, + "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, } ) @@ -6049,11 +6177,11 @@ func (x Token) String() string { } func (Token) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[70].Descriptor() + return file_pg_query_proto_enumTypes[72].Descriptor() } func (Token) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[70] + return &file_pg_query_proto_enumTypes[72] } func (x Token) Number() protoreflect.EnumNumber { @@ -6062,7 +6190,7 @@ func (x Token) Number() protoreflect.EnumNumber { // Deprecated: Use Token.Descriptor instead. func (Token) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{70} + return file_pg_query_proto_rawDescGZIP(), []int{72} } type SummaryResult_Context int32 @@ -6104,11 +6232,11 @@ func (x SummaryResult_Context) String() string { } func (SummaryResult_Context) Descriptor() protoreflect.EnumDescriptor { - return file_pg_query_proto_enumTypes[71].Descriptor() + return file_pg_query_proto_enumTypes[73].Descriptor() } func (SummaryResult_Context) Type() protoreflect.EnumType { - return &file_pg_query_proto_enumTypes[71] + return &file_pg_query_proto_enumTypes[73] } func (x SummaryResult_Context) Number() protoreflect.EnumNumber { @@ -6117,7 +6245,7 @@ func (x SummaryResult_Context) Number() protoreflect.EnumNumber { // Deprecated: Use SummaryResult_Context.Descriptor instead. func (SummaryResult_Context) EnumDescriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{272, 0} + return file_pg_query_proto_rawDescGZIP(), []int{275, 0} } type ParseResult struct { @@ -6286,6 +6414,7 @@ type Node struct { // *Node_CurrentOfExpr // *Node_NextValueExpr // *Node_InferenceElem + // *Node_ReturningExpr // *Node_TargetEntry // *Node_RangeTblRef // *Node_JoinExpr @@ -6323,7 +6452,6 @@ type Node struct { // *Node_PartitionSpec // *Node_PartitionBoundSpec // *Node_PartitionRangeDatum - // *Node_SinglePartitionSpec // *Node_PartitionCmd // *Node_RangeTblEntry // *Node_RtepermissionInfo @@ -6341,6 +6469,8 @@ type Node struct { // *Node_CtecycleClause // *Node_CommonTableExpr // *Node_MergeWhenClause + // *Node_ReturningOption + // *Node_ReturningClause // *Node_TriggerTransition // *Node_JsonOutput // *Node_JsonArgument @@ -6369,8 +6499,9 @@ type Node struct { // *Node_PlassignStmt // *Node_CreateSchemaStmt // *Node_AlterTableStmt - // *Node_ReplicaIdentityStmt // *Node_AlterTableCmd + // *Node_AtalterConstraint + // *Node_ReplicaIdentityStmt // *Node_AlterCollationStmt // *Node_AlterDomainStmt // *Node_GrantStmt @@ -7060,6 +7191,15 @@ func (x *Node) GetInferenceElem() *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 { @@ -7393,15 +7533,6 @@ func (x *Node) GetPartitionRangeDatum() *PartitionRangeDatum { return nil } -func (x *Node) GetSinglePartitionSpec() *SinglePartitionSpec { - if x != nil { - if x, ok := x.Node.(*Node_SinglePartitionSpec); ok { - return x.SinglePartitionSpec - } - } - return nil -} - func (x *Node) GetPartitionCmd() *PartitionCmd { if x != nil { if x, ok := x.Node.(*Node_PartitionCmd); ok { @@ -7555,6 +7686,24 @@ func (x *Node) GetMergeWhenClause() *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 { @@ -7807,19 +7956,28 @@ func (x *Node) GetAlterTableStmt() *AlterTableStmt { return nil } -func (x *Node) GetReplicaIdentityStmt() *ReplicaIdentityStmt { +func (x *Node) GetAlterTableCmd() *AlterTableCmd { if x != nil { - if x, ok := x.Node.(*Node_ReplicaIdentityStmt); ok { - return x.ReplicaIdentityStmt + if x, ok := x.Node.(*Node_AlterTableCmd); ok { + return x.AlterTableCmd } } return nil } -func (x *Node) GetAlterTableCmd() *AlterTableCmd { +func (x *Node) GetAtalterConstraint() *ATAlterConstraint { if x != nil { - if x, ok := x.Node.(*Node_AlterTableCmd); ok { - return x.AlterTableCmd + 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 @@ -9186,156 +9344,156 @@ 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,59,opt,name=target_entry,json=TargetEntry,proto3,oneof"` + TargetEntry *TargetEntry `protobuf:"bytes,60,opt,name=target_entry,json=TargetEntry,proto3,oneof"` } type Node_RangeTblRef struct { - RangeTblRef *RangeTblRef `protobuf:"bytes,60,opt,name=range_tbl_ref,json=RangeTblRef,proto3,oneof"` + RangeTblRef *RangeTblRef `protobuf:"bytes,61,opt,name=range_tbl_ref,json=RangeTblRef,proto3,oneof"` } type Node_JoinExpr struct { - JoinExpr *JoinExpr `protobuf:"bytes,61,opt,name=join_expr,json=JoinExpr,proto3,oneof"` + JoinExpr *JoinExpr `protobuf:"bytes,62,opt,name=join_expr,json=JoinExpr,proto3,oneof"` } type Node_FromExpr struct { - FromExpr *FromExpr `protobuf:"bytes,62,opt,name=from_expr,json=FromExpr,proto3,oneof"` + FromExpr *FromExpr `protobuf:"bytes,63,opt,name=from_expr,json=FromExpr,proto3,oneof"` } type Node_OnConflictExpr struct { - OnConflictExpr *OnConflictExpr `protobuf:"bytes,63,opt,name=on_conflict_expr,json=OnConflictExpr,proto3,oneof"` + OnConflictExpr *OnConflictExpr `protobuf:"bytes,64,opt,name=on_conflict_expr,json=OnConflictExpr,proto3,oneof"` } type Node_Query struct { - Query *Query `protobuf:"bytes,64,opt,name=query,json=Query,proto3,oneof"` + Query *Query `protobuf:"bytes,65,opt,name=query,json=Query,proto3,oneof"` } type Node_TypeName struct { - TypeName *TypeName `protobuf:"bytes,65,opt,name=type_name,json=TypeName,proto3,oneof"` + TypeName *TypeName `protobuf:"bytes,66,opt,name=type_name,json=TypeName,proto3,oneof"` } type Node_ColumnRef struct { - ColumnRef *ColumnRef `protobuf:"bytes,66,opt,name=column_ref,json=ColumnRef,proto3,oneof"` + ColumnRef *ColumnRef `protobuf:"bytes,67,opt,name=column_ref,json=ColumnRef,proto3,oneof"` } type Node_ParamRef struct { - ParamRef *ParamRef `protobuf:"bytes,67,opt,name=param_ref,json=ParamRef,proto3,oneof"` + ParamRef *ParamRef `protobuf:"bytes,68,opt,name=param_ref,json=ParamRef,proto3,oneof"` } type Node_AExpr struct { - AExpr *A_Expr `protobuf:"bytes,68,opt,name=a_expr,json=A_Expr,proto3,oneof"` + AExpr *A_Expr `protobuf:"bytes,69,opt,name=a_expr,json=A_Expr,proto3,oneof"` } type Node_TypeCast struct { - TypeCast *TypeCast `protobuf:"bytes,69,opt,name=type_cast,json=TypeCast,proto3,oneof"` + TypeCast *TypeCast `protobuf:"bytes,70,opt,name=type_cast,json=TypeCast,proto3,oneof"` } type Node_CollateClause struct { - CollateClause *CollateClause `protobuf:"bytes,70,opt,name=collate_clause,json=CollateClause,proto3,oneof"` + CollateClause *CollateClause `protobuf:"bytes,71,opt,name=collate_clause,json=CollateClause,proto3,oneof"` } type Node_RoleSpec struct { - RoleSpec *RoleSpec `protobuf:"bytes,71,opt,name=role_spec,json=RoleSpec,proto3,oneof"` + RoleSpec *RoleSpec `protobuf:"bytes,72,opt,name=role_spec,json=RoleSpec,proto3,oneof"` } type Node_FuncCall struct { - FuncCall *FuncCall `protobuf:"bytes,72,opt,name=func_call,json=FuncCall,proto3,oneof"` + FuncCall *FuncCall `protobuf:"bytes,73,opt,name=func_call,json=FuncCall,proto3,oneof"` } type Node_AStar struct { - AStar *A_Star `protobuf:"bytes,73,opt,name=a_star,json=A_Star,proto3,oneof"` + AStar *A_Star `protobuf:"bytes,74,opt,name=a_star,json=A_Star,proto3,oneof"` } type Node_AIndices struct { - AIndices *A_Indices `protobuf:"bytes,74,opt,name=a_indices,json=A_Indices,proto3,oneof"` + AIndices *A_Indices `protobuf:"bytes,75,opt,name=a_indices,json=A_Indices,proto3,oneof"` } type Node_AIndirection struct { - AIndirection *A_Indirection `protobuf:"bytes,75,opt,name=a_indirection,json=A_Indirection,proto3,oneof"` + AIndirection *A_Indirection `protobuf:"bytes,76,opt,name=a_indirection,json=A_Indirection,proto3,oneof"` } type Node_AArrayExpr struct { - AArrayExpr *A_ArrayExpr `protobuf:"bytes,76,opt,name=a_array_expr,json=A_ArrayExpr,proto3,oneof"` + AArrayExpr *A_ArrayExpr `protobuf:"bytes,77,opt,name=a_array_expr,json=A_ArrayExpr,proto3,oneof"` } type Node_ResTarget struct { - ResTarget *ResTarget `protobuf:"bytes,77,opt,name=res_target,json=ResTarget,proto3,oneof"` + ResTarget *ResTarget `protobuf:"bytes,78,opt,name=res_target,json=ResTarget,proto3,oneof"` } type Node_MultiAssignRef struct { - MultiAssignRef *MultiAssignRef `protobuf:"bytes,78,opt,name=multi_assign_ref,json=MultiAssignRef,proto3,oneof"` + MultiAssignRef *MultiAssignRef `protobuf:"bytes,79,opt,name=multi_assign_ref,json=MultiAssignRef,proto3,oneof"` } type Node_SortBy struct { - SortBy *SortBy `protobuf:"bytes,79,opt,name=sort_by,json=SortBy,proto3,oneof"` + SortBy *SortBy `protobuf:"bytes,80,opt,name=sort_by,json=SortBy,proto3,oneof"` } type Node_WindowDef struct { - WindowDef *WindowDef `protobuf:"bytes,80,opt,name=window_def,json=WindowDef,proto3,oneof"` + WindowDef *WindowDef `protobuf:"bytes,81,opt,name=window_def,json=WindowDef,proto3,oneof"` } type Node_RangeSubselect struct { - RangeSubselect *RangeSubselect `protobuf:"bytes,81,opt,name=range_subselect,json=RangeSubselect,proto3,oneof"` + RangeSubselect *RangeSubselect `protobuf:"bytes,82,opt,name=range_subselect,json=RangeSubselect,proto3,oneof"` } type Node_RangeFunction struct { - RangeFunction *RangeFunction `protobuf:"bytes,82,opt,name=range_function,json=RangeFunction,proto3,oneof"` + RangeFunction *RangeFunction `protobuf:"bytes,83,opt,name=range_function,json=RangeFunction,proto3,oneof"` } type Node_RangeTableFunc struct { - RangeTableFunc *RangeTableFunc `protobuf:"bytes,83,opt,name=range_table_func,json=RangeTableFunc,proto3,oneof"` + RangeTableFunc *RangeTableFunc `protobuf:"bytes,84,opt,name=range_table_func,json=RangeTableFunc,proto3,oneof"` } type Node_RangeTableFuncCol struct { - RangeTableFuncCol *RangeTableFuncCol `protobuf:"bytes,84,opt,name=range_table_func_col,json=RangeTableFuncCol,proto3,oneof"` + RangeTableFuncCol *RangeTableFuncCol `protobuf:"bytes,85,opt,name=range_table_func_col,json=RangeTableFuncCol,proto3,oneof"` } type Node_RangeTableSample struct { - RangeTableSample *RangeTableSample `protobuf:"bytes,85,opt,name=range_table_sample,json=RangeTableSample,proto3,oneof"` + RangeTableSample *RangeTableSample `protobuf:"bytes,86,opt,name=range_table_sample,json=RangeTableSample,proto3,oneof"` } type Node_ColumnDef struct { - ColumnDef *ColumnDef `protobuf:"bytes,86,opt,name=column_def,json=ColumnDef,proto3,oneof"` + ColumnDef *ColumnDef `protobuf:"bytes,87,opt,name=column_def,json=ColumnDef,proto3,oneof"` } type Node_TableLikeClause struct { - TableLikeClause *TableLikeClause `protobuf:"bytes,87,opt,name=table_like_clause,json=TableLikeClause,proto3,oneof"` + TableLikeClause *TableLikeClause `protobuf:"bytes,88,opt,name=table_like_clause,json=TableLikeClause,proto3,oneof"` } type Node_IndexElem struct { - IndexElem *IndexElem `protobuf:"bytes,88,opt,name=index_elem,json=IndexElem,proto3,oneof"` + IndexElem *IndexElem `protobuf:"bytes,89,opt,name=index_elem,json=IndexElem,proto3,oneof"` } type Node_DefElem struct { - DefElem *DefElem `protobuf:"bytes,89,opt,name=def_elem,json=DefElem,proto3,oneof"` + DefElem *DefElem `protobuf:"bytes,90,opt,name=def_elem,json=DefElem,proto3,oneof"` } type Node_LockingClause struct { - LockingClause *LockingClause `protobuf:"bytes,90,opt,name=locking_clause,json=LockingClause,proto3,oneof"` + LockingClause *LockingClause `protobuf:"bytes,91,opt,name=locking_clause,json=LockingClause,proto3,oneof"` } type Node_XmlSerialize struct { - XmlSerialize *XmlSerialize `protobuf:"bytes,91,opt,name=xml_serialize,json=XmlSerialize,proto3,oneof"` + XmlSerialize *XmlSerialize `protobuf:"bytes,92,opt,name=xml_serialize,json=XmlSerialize,proto3,oneof"` } type Node_PartitionElem struct { - PartitionElem *PartitionElem `protobuf:"bytes,92,opt,name=partition_elem,json=PartitionElem,proto3,oneof"` + PartitionElem *PartitionElem `protobuf:"bytes,93,opt,name=partition_elem,json=PartitionElem,proto3,oneof"` } type Node_PartitionSpec struct { - PartitionSpec *PartitionSpec `protobuf:"bytes,93,opt,name=partition_spec,json=PartitionSpec,proto3,oneof"` + PartitionSpec *PartitionSpec `protobuf:"bytes,94,opt,name=partition_spec,json=PartitionSpec,proto3,oneof"` } type Node_PartitionBoundSpec struct { - PartitionBoundSpec *PartitionBoundSpec `protobuf:"bytes,94,opt,name=partition_bound_spec,json=PartitionBoundSpec,proto3,oneof"` + PartitionBoundSpec *PartitionBoundSpec `protobuf:"bytes,95,opt,name=partition_bound_spec,json=PartitionBoundSpec,proto3,oneof"` } type Node_PartitionRangeDatum struct { - PartitionRangeDatum *PartitionRangeDatum `protobuf:"bytes,95,opt,name=partition_range_datum,json=PartitionRangeDatum,proto3,oneof"` -} - -type Node_SinglePartitionSpec struct { - SinglePartitionSpec *SinglePartitionSpec `protobuf:"bytes,96,opt,name=single_partition_spec,json=SinglePartitionSpec,proto3,oneof"` + PartitionRangeDatum *PartitionRangeDatum `protobuf:"bytes,96,opt,name=partition_range_datum,json=PartitionRangeDatum,proto3,oneof"` } type Node_PartitionCmd struct { @@ -9406,624 +9564,636 @@ 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,114,opt,name=trigger_transition,json=TriggerTransition,proto3,oneof"` + TriggerTransition *TriggerTransition `protobuf:"bytes,116,opt,name=trigger_transition,json=TriggerTransition,proto3,oneof"` } type Node_JsonOutput struct { - JsonOutput *JsonOutput `protobuf:"bytes,115,opt,name=json_output,json=JsonOutput,proto3,oneof"` + JsonOutput *JsonOutput `protobuf:"bytes,117,opt,name=json_output,json=JsonOutput,proto3,oneof"` } type Node_JsonArgument struct { - JsonArgument *JsonArgument `protobuf:"bytes,116,opt,name=json_argument,json=JsonArgument,proto3,oneof"` + JsonArgument *JsonArgument `protobuf:"bytes,118,opt,name=json_argument,json=JsonArgument,proto3,oneof"` } type Node_JsonFuncExpr struct { - JsonFuncExpr *JsonFuncExpr `protobuf:"bytes,117,opt,name=json_func_expr,json=JsonFuncExpr,proto3,oneof"` + JsonFuncExpr *JsonFuncExpr `protobuf:"bytes,119,opt,name=json_func_expr,json=JsonFuncExpr,proto3,oneof"` } type Node_JsonTablePathSpec struct { - JsonTablePathSpec *JsonTablePathSpec `protobuf:"bytes,118,opt,name=json_table_path_spec,json=JsonTablePathSpec,proto3,oneof"` + JsonTablePathSpec *JsonTablePathSpec `protobuf:"bytes,120,opt,name=json_table_path_spec,json=JsonTablePathSpec,proto3,oneof"` } type Node_JsonTable struct { - JsonTable *JsonTable `protobuf:"bytes,119,opt,name=json_table,json=JsonTable,proto3,oneof"` + JsonTable *JsonTable `protobuf:"bytes,121,opt,name=json_table,json=JsonTable,proto3,oneof"` } type Node_JsonTableColumn struct { - JsonTableColumn *JsonTableColumn `protobuf:"bytes,120,opt,name=json_table_column,json=JsonTableColumn,proto3,oneof"` + JsonTableColumn *JsonTableColumn `protobuf:"bytes,122,opt,name=json_table_column,json=JsonTableColumn,proto3,oneof"` } type Node_JsonKeyValue struct { - JsonKeyValue *JsonKeyValue `protobuf:"bytes,121,opt,name=json_key_value,json=JsonKeyValue,proto3,oneof"` + JsonKeyValue *JsonKeyValue `protobuf:"bytes,123,opt,name=json_key_value,json=JsonKeyValue,proto3,oneof"` } type Node_JsonParseExpr struct { - JsonParseExpr *JsonParseExpr `protobuf:"bytes,122,opt,name=json_parse_expr,json=JsonParseExpr,proto3,oneof"` + JsonParseExpr *JsonParseExpr `protobuf:"bytes,124,opt,name=json_parse_expr,json=JsonParseExpr,proto3,oneof"` } type Node_JsonScalarExpr struct { - JsonScalarExpr *JsonScalarExpr `protobuf:"bytes,123,opt,name=json_scalar_expr,json=JsonScalarExpr,proto3,oneof"` + JsonScalarExpr *JsonScalarExpr `protobuf:"bytes,125,opt,name=json_scalar_expr,json=JsonScalarExpr,proto3,oneof"` } type Node_JsonSerializeExpr struct { - JsonSerializeExpr *JsonSerializeExpr `protobuf:"bytes,124,opt,name=json_serialize_expr,json=JsonSerializeExpr,proto3,oneof"` + JsonSerializeExpr *JsonSerializeExpr `protobuf:"bytes,126,opt,name=json_serialize_expr,json=JsonSerializeExpr,proto3,oneof"` } type Node_JsonObjectConstructor struct { - JsonObjectConstructor *JsonObjectConstructor `protobuf:"bytes,125,opt,name=json_object_constructor,json=JsonObjectConstructor,proto3,oneof"` + JsonObjectConstructor *JsonObjectConstructor `protobuf:"bytes,127,opt,name=json_object_constructor,json=JsonObjectConstructor,proto3,oneof"` } type Node_JsonArrayConstructor struct { - JsonArrayConstructor *JsonArrayConstructor `protobuf:"bytes,126,opt,name=json_array_constructor,json=JsonArrayConstructor,proto3,oneof"` + JsonArrayConstructor *JsonArrayConstructor `protobuf:"bytes,128,opt,name=json_array_constructor,json=JsonArrayConstructor,proto3,oneof"` } type Node_JsonArrayQueryConstructor struct { - JsonArrayQueryConstructor *JsonArrayQueryConstructor `protobuf:"bytes,127,opt,name=json_array_query_constructor,json=JsonArrayQueryConstructor,proto3,oneof"` + JsonArrayQueryConstructor *JsonArrayQueryConstructor `protobuf:"bytes,129,opt,name=json_array_query_constructor,json=JsonArrayQueryConstructor,proto3,oneof"` } type Node_JsonAggConstructor struct { - JsonAggConstructor *JsonAggConstructor `protobuf:"bytes,128,opt,name=json_agg_constructor,json=JsonAggConstructor,proto3,oneof"` + JsonAggConstructor *JsonAggConstructor `protobuf:"bytes,130,opt,name=json_agg_constructor,json=JsonAggConstructor,proto3,oneof"` } type Node_JsonObjectAgg struct { - JsonObjectAgg *JsonObjectAgg `protobuf:"bytes,129,opt,name=json_object_agg,json=JsonObjectAgg,proto3,oneof"` + JsonObjectAgg *JsonObjectAgg `protobuf:"bytes,131,opt,name=json_object_agg,json=JsonObjectAgg,proto3,oneof"` } type Node_JsonArrayAgg struct { - JsonArrayAgg *JsonArrayAgg `protobuf:"bytes,130,opt,name=json_array_agg,json=JsonArrayAgg,proto3,oneof"` + JsonArrayAgg *JsonArrayAgg `protobuf:"bytes,132,opt,name=json_array_agg,json=JsonArrayAgg,proto3,oneof"` } type Node_RawStmt struct { - RawStmt *RawStmt `protobuf:"bytes,131,opt,name=raw_stmt,json=RawStmt,proto3,oneof"` + RawStmt *RawStmt `protobuf:"bytes,133,opt,name=raw_stmt,json=RawStmt,proto3,oneof"` } type Node_InsertStmt struct { - InsertStmt *InsertStmt `protobuf:"bytes,132,opt,name=insert_stmt,json=InsertStmt,proto3,oneof"` + InsertStmt *InsertStmt `protobuf:"bytes,134,opt,name=insert_stmt,json=InsertStmt,proto3,oneof"` } type Node_DeleteStmt struct { - DeleteStmt *DeleteStmt `protobuf:"bytes,133,opt,name=delete_stmt,json=DeleteStmt,proto3,oneof"` + DeleteStmt *DeleteStmt `protobuf:"bytes,135,opt,name=delete_stmt,json=DeleteStmt,proto3,oneof"` } type Node_UpdateStmt struct { - UpdateStmt *UpdateStmt `protobuf:"bytes,134,opt,name=update_stmt,json=UpdateStmt,proto3,oneof"` + UpdateStmt *UpdateStmt `protobuf:"bytes,136,opt,name=update_stmt,json=UpdateStmt,proto3,oneof"` } type Node_MergeStmt struct { - MergeStmt *MergeStmt `protobuf:"bytes,135,opt,name=merge_stmt,json=MergeStmt,proto3,oneof"` + MergeStmt *MergeStmt `protobuf:"bytes,137,opt,name=merge_stmt,json=MergeStmt,proto3,oneof"` } type Node_SelectStmt struct { - SelectStmt *SelectStmt `protobuf:"bytes,136,opt,name=select_stmt,json=SelectStmt,proto3,oneof"` + SelectStmt *SelectStmt `protobuf:"bytes,138,opt,name=select_stmt,json=SelectStmt,proto3,oneof"` } type Node_SetOperationStmt struct { - SetOperationStmt *SetOperationStmt `protobuf:"bytes,137,opt,name=set_operation_stmt,json=SetOperationStmt,proto3,oneof"` + SetOperationStmt *SetOperationStmt `protobuf:"bytes,139,opt,name=set_operation_stmt,json=SetOperationStmt,proto3,oneof"` } type Node_ReturnStmt struct { - ReturnStmt *ReturnStmt `protobuf:"bytes,138,opt,name=return_stmt,json=ReturnStmt,proto3,oneof"` + ReturnStmt *ReturnStmt `protobuf:"bytes,140,opt,name=return_stmt,json=ReturnStmt,proto3,oneof"` } type Node_PlassignStmt struct { - PlassignStmt *PLAssignStmt `protobuf:"bytes,139,opt,name=plassign_stmt,json=PLAssignStmt,proto3,oneof"` + PlassignStmt *PLAssignStmt `protobuf:"bytes,141,opt,name=plassign_stmt,json=PLAssignStmt,proto3,oneof"` } type Node_CreateSchemaStmt struct { - CreateSchemaStmt *CreateSchemaStmt `protobuf:"bytes,140,opt,name=create_schema_stmt,json=CreateSchemaStmt,proto3,oneof"` + CreateSchemaStmt *CreateSchemaStmt `protobuf:"bytes,142,opt,name=create_schema_stmt,json=CreateSchemaStmt,proto3,oneof"` } type Node_AlterTableStmt struct { - AlterTableStmt *AlterTableStmt `protobuf:"bytes,141,opt,name=alter_table_stmt,json=AlterTableStmt,proto3,oneof"` + AlterTableStmt *AlterTableStmt `protobuf:"bytes,143,opt,name=alter_table_stmt,json=AlterTableStmt,proto3,oneof"` } -type Node_ReplicaIdentityStmt struct { - ReplicaIdentityStmt *ReplicaIdentityStmt `protobuf:"bytes,142,opt,name=replica_identity_stmt,json=ReplicaIdentityStmt,proto3,oneof"` +type Node_AlterTableCmd struct { + AlterTableCmd *AlterTableCmd `protobuf:"bytes,144,opt,name=alter_table_cmd,json=AlterTableCmd,proto3,oneof"` } -type Node_AlterTableCmd struct { - AlterTableCmd *AlterTableCmd `protobuf:"bytes,143,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,144,opt,name=alter_collation_stmt,json=AlterCollationStmt,proto3,oneof"` + AlterCollationStmt *AlterCollationStmt `protobuf:"bytes,147,opt,name=alter_collation_stmt,json=AlterCollationStmt,proto3,oneof"` } type Node_AlterDomainStmt struct { - AlterDomainStmt *AlterDomainStmt `protobuf:"bytes,145,opt,name=alter_domain_stmt,json=AlterDomainStmt,proto3,oneof"` + AlterDomainStmt *AlterDomainStmt `protobuf:"bytes,148,opt,name=alter_domain_stmt,json=AlterDomainStmt,proto3,oneof"` } type Node_GrantStmt struct { - GrantStmt *GrantStmt `protobuf:"bytes,146,opt,name=grant_stmt,json=GrantStmt,proto3,oneof"` + GrantStmt *GrantStmt `protobuf:"bytes,149,opt,name=grant_stmt,json=GrantStmt,proto3,oneof"` } type Node_ObjectWithArgs struct { - ObjectWithArgs *ObjectWithArgs `protobuf:"bytes,147,opt,name=object_with_args,json=ObjectWithArgs,proto3,oneof"` + ObjectWithArgs *ObjectWithArgs `protobuf:"bytes,150,opt,name=object_with_args,json=ObjectWithArgs,proto3,oneof"` } type Node_AccessPriv struct { - AccessPriv *AccessPriv `protobuf:"bytes,148,opt,name=access_priv,json=AccessPriv,proto3,oneof"` + AccessPriv *AccessPriv `protobuf:"bytes,151,opt,name=access_priv,json=AccessPriv,proto3,oneof"` } type Node_GrantRoleStmt struct { - GrantRoleStmt *GrantRoleStmt `protobuf:"bytes,149,opt,name=grant_role_stmt,json=GrantRoleStmt,proto3,oneof"` + GrantRoleStmt *GrantRoleStmt `protobuf:"bytes,152,opt,name=grant_role_stmt,json=GrantRoleStmt,proto3,oneof"` } type Node_AlterDefaultPrivilegesStmt struct { - AlterDefaultPrivilegesStmt *AlterDefaultPrivilegesStmt `protobuf:"bytes,150,opt,name=alter_default_privileges_stmt,json=AlterDefaultPrivilegesStmt,proto3,oneof"` + AlterDefaultPrivilegesStmt *AlterDefaultPrivilegesStmt `protobuf:"bytes,153,opt,name=alter_default_privileges_stmt,json=AlterDefaultPrivilegesStmt,proto3,oneof"` } type Node_CopyStmt struct { - CopyStmt *CopyStmt `protobuf:"bytes,151,opt,name=copy_stmt,json=CopyStmt,proto3,oneof"` + CopyStmt *CopyStmt `protobuf:"bytes,154,opt,name=copy_stmt,json=CopyStmt,proto3,oneof"` } type Node_VariableSetStmt struct { - VariableSetStmt *VariableSetStmt `protobuf:"bytes,152,opt,name=variable_set_stmt,json=VariableSetStmt,proto3,oneof"` + VariableSetStmt *VariableSetStmt `protobuf:"bytes,155,opt,name=variable_set_stmt,json=VariableSetStmt,proto3,oneof"` } type Node_VariableShowStmt struct { - VariableShowStmt *VariableShowStmt `protobuf:"bytes,153,opt,name=variable_show_stmt,json=VariableShowStmt,proto3,oneof"` + VariableShowStmt *VariableShowStmt `protobuf:"bytes,156,opt,name=variable_show_stmt,json=VariableShowStmt,proto3,oneof"` } type Node_CreateStmt struct { - CreateStmt *CreateStmt `protobuf:"bytes,154,opt,name=create_stmt,json=CreateStmt,proto3,oneof"` + CreateStmt *CreateStmt `protobuf:"bytes,157,opt,name=create_stmt,json=CreateStmt,proto3,oneof"` } type Node_Constraint struct { - Constraint *Constraint `protobuf:"bytes,155,opt,name=constraint,json=Constraint,proto3,oneof"` + Constraint *Constraint `protobuf:"bytes,158,opt,name=constraint,json=Constraint,proto3,oneof"` } type Node_CreateTableSpaceStmt struct { - CreateTableSpaceStmt *CreateTableSpaceStmt `protobuf:"bytes,156,opt,name=create_table_space_stmt,json=CreateTableSpaceStmt,proto3,oneof"` + CreateTableSpaceStmt *CreateTableSpaceStmt `protobuf:"bytes,159,opt,name=create_table_space_stmt,json=CreateTableSpaceStmt,proto3,oneof"` } type Node_DropTableSpaceStmt struct { - DropTableSpaceStmt *DropTableSpaceStmt `protobuf:"bytes,157,opt,name=drop_table_space_stmt,json=DropTableSpaceStmt,proto3,oneof"` + DropTableSpaceStmt *DropTableSpaceStmt `protobuf:"bytes,160,opt,name=drop_table_space_stmt,json=DropTableSpaceStmt,proto3,oneof"` } type Node_AlterTableSpaceOptionsStmt struct { - AlterTableSpaceOptionsStmt *AlterTableSpaceOptionsStmt `protobuf:"bytes,158,opt,name=alter_table_space_options_stmt,json=AlterTableSpaceOptionsStmt,proto3,oneof"` + AlterTableSpaceOptionsStmt *AlterTableSpaceOptionsStmt `protobuf:"bytes,161,opt,name=alter_table_space_options_stmt,json=AlterTableSpaceOptionsStmt,proto3,oneof"` } type Node_AlterTableMoveAllStmt struct { - AlterTableMoveAllStmt *AlterTableMoveAllStmt `protobuf:"bytes,159,opt,name=alter_table_move_all_stmt,json=AlterTableMoveAllStmt,proto3,oneof"` + AlterTableMoveAllStmt *AlterTableMoveAllStmt `protobuf:"bytes,162,opt,name=alter_table_move_all_stmt,json=AlterTableMoveAllStmt,proto3,oneof"` } type Node_CreateExtensionStmt struct { - CreateExtensionStmt *CreateExtensionStmt `protobuf:"bytes,160,opt,name=create_extension_stmt,json=CreateExtensionStmt,proto3,oneof"` + CreateExtensionStmt *CreateExtensionStmt `protobuf:"bytes,163,opt,name=create_extension_stmt,json=CreateExtensionStmt,proto3,oneof"` } type Node_AlterExtensionStmt struct { - AlterExtensionStmt *AlterExtensionStmt `protobuf:"bytes,161,opt,name=alter_extension_stmt,json=AlterExtensionStmt,proto3,oneof"` + AlterExtensionStmt *AlterExtensionStmt `protobuf:"bytes,164,opt,name=alter_extension_stmt,json=AlterExtensionStmt,proto3,oneof"` } type Node_AlterExtensionContentsStmt struct { - AlterExtensionContentsStmt *AlterExtensionContentsStmt `protobuf:"bytes,162,opt,name=alter_extension_contents_stmt,json=AlterExtensionContentsStmt,proto3,oneof"` + AlterExtensionContentsStmt *AlterExtensionContentsStmt `protobuf:"bytes,165,opt,name=alter_extension_contents_stmt,json=AlterExtensionContentsStmt,proto3,oneof"` } type Node_CreateFdwStmt struct { - CreateFdwStmt *CreateFdwStmt `protobuf:"bytes,163,opt,name=create_fdw_stmt,json=CreateFdwStmt,proto3,oneof"` + CreateFdwStmt *CreateFdwStmt `protobuf:"bytes,166,opt,name=create_fdw_stmt,json=CreateFdwStmt,proto3,oneof"` } type Node_AlterFdwStmt struct { - AlterFdwStmt *AlterFdwStmt `protobuf:"bytes,164,opt,name=alter_fdw_stmt,json=AlterFdwStmt,proto3,oneof"` + AlterFdwStmt *AlterFdwStmt `protobuf:"bytes,167,opt,name=alter_fdw_stmt,json=AlterFdwStmt,proto3,oneof"` } type Node_CreateForeignServerStmt struct { - CreateForeignServerStmt *CreateForeignServerStmt `protobuf:"bytes,165,opt,name=create_foreign_server_stmt,json=CreateForeignServerStmt,proto3,oneof"` + CreateForeignServerStmt *CreateForeignServerStmt `protobuf:"bytes,168,opt,name=create_foreign_server_stmt,json=CreateForeignServerStmt,proto3,oneof"` } type Node_AlterForeignServerStmt struct { - AlterForeignServerStmt *AlterForeignServerStmt `protobuf:"bytes,166,opt,name=alter_foreign_server_stmt,json=AlterForeignServerStmt,proto3,oneof"` + AlterForeignServerStmt *AlterForeignServerStmt `protobuf:"bytes,169,opt,name=alter_foreign_server_stmt,json=AlterForeignServerStmt,proto3,oneof"` } type Node_CreateForeignTableStmt struct { - CreateForeignTableStmt *CreateForeignTableStmt `protobuf:"bytes,167,opt,name=create_foreign_table_stmt,json=CreateForeignTableStmt,proto3,oneof"` + CreateForeignTableStmt *CreateForeignTableStmt `protobuf:"bytes,170,opt,name=create_foreign_table_stmt,json=CreateForeignTableStmt,proto3,oneof"` } type Node_CreateUserMappingStmt struct { - CreateUserMappingStmt *CreateUserMappingStmt `protobuf:"bytes,168,opt,name=create_user_mapping_stmt,json=CreateUserMappingStmt,proto3,oneof"` + CreateUserMappingStmt *CreateUserMappingStmt `protobuf:"bytes,171,opt,name=create_user_mapping_stmt,json=CreateUserMappingStmt,proto3,oneof"` } type Node_AlterUserMappingStmt struct { - AlterUserMappingStmt *AlterUserMappingStmt `protobuf:"bytes,169,opt,name=alter_user_mapping_stmt,json=AlterUserMappingStmt,proto3,oneof"` + AlterUserMappingStmt *AlterUserMappingStmt `protobuf:"bytes,172,opt,name=alter_user_mapping_stmt,json=AlterUserMappingStmt,proto3,oneof"` } type Node_DropUserMappingStmt struct { - DropUserMappingStmt *DropUserMappingStmt `protobuf:"bytes,170,opt,name=drop_user_mapping_stmt,json=DropUserMappingStmt,proto3,oneof"` + DropUserMappingStmt *DropUserMappingStmt `protobuf:"bytes,173,opt,name=drop_user_mapping_stmt,json=DropUserMappingStmt,proto3,oneof"` } type Node_ImportForeignSchemaStmt struct { - ImportForeignSchemaStmt *ImportForeignSchemaStmt `protobuf:"bytes,171,opt,name=import_foreign_schema_stmt,json=ImportForeignSchemaStmt,proto3,oneof"` + ImportForeignSchemaStmt *ImportForeignSchemaStmt `protobuf:"bytes,174,opt,name=import_foreign_schema_stmt,json=ImportForeignSchemaStmt,proto3,oneof"` } type Node_CreatePolicyStmt struct { - CreatePolicyStmt *CreatePolicyStmt `protobuf:"bytes,172,opt,name=create_policy_stmt,json=CreatePolicyStmt,proto3,oneof"` + CreatePolicyStmt *CreatePolicyStmt `protobuf:"bytes,175,opt,name=create_policy_stmt,json=CreatePolicyStmt,proto3,oneof"` } type Node_AlterPolicyStmt struct { - AlterPolicyStmt *AlterPolicyStmt `protobuf:"bytes,173,opt,name=alter_policy_stmt,json=AlterPolicyStmt,proto3,oneof"` + AlterPolicyStmt *AlterPolicyStmt `protobuf:"bytes,176,opt,name=alter_policy_stmt,json=AlterPolicyStmt,proto3,oneof"` } type Node_CreateAmStmt struct { - CreateAmStmt *CreateAmStmt `protobuf:"bytes,174,opt,name=create_am_stmt,json=CreateAmStmt,proto3,oneof"` + CreateAmStmt *CreateAmStmt `protobuf:"bytes,177,opt,name=create_am_stmt,json=CreateAmStmt,proto3,oneof"` } type Node_CreateTrigStmt struct { - CreateTrigStmt *CreateTrigStmt `protobuf:"bytes,175,opt,name=create_trig_stmt,json=CreateTrigStmt,proto3,oneof"` + CreateTrigStmt *CreateTrigStmt `protobuf:"bytes,178,opt,name=create_trig_stmt,json=CreateTrigStmt,proto3,oneof"` } type Node_CreateEventTrigStmt struct { - CreateEventTrigStmt *CreateEventTrigStmt `protobuf:"bytes,176,opt,name=create_event_trig_stmt,json=CreateEventTrigStmt,proto3,oneof"` + CreateEventTrigStmt *CreateEventTrigStmt `protobuf:"bytes,179,opt,name=create_event_trig_stmt,json=CreateEventTrigStmt,proto3,oneof"` } type Node_AlterEventTrigStmt struct { - AlterEventTrigStmt *AlterEventTrigStmt `protobuf:"bytes,177,opt,name=alter_event_trig_stmt,json=AlterEventTrigStmt,proto3,oneof"` + AlterEventTrigStmt *AlterEventTrigStmt `protobuf:"bytes,180,opt,name=alter_event_trig_stmt,json=AlterEventTrigStmt,proto3,oneof"` } type Node_CreatePlangStmt struct { - CreatePlangStmt *CreatePLangStmt `protobuf:"bytes,178,opt,name=create_plang_stmt,json=CreatePLangStmt,proto3,oneof"` + CreatePlangStmt *CreatePLangStmt `protobuf:"bytes,181,opt,name=create_plang_stmt,json=CreatePLangStmt,proto3,oneof"` } type Node_CreateRoleStmt struct { - CreateRoleStmt *CreateRoleStmt `protobuf:"bytes,179,opt,name=create_role_stmt,json=CreateRoleStmt,proto3,oneof"` + CreateRoleStmt *CreateRoleStmt `protobuf:"bytes,182,opt,name=create_role_stmt,json=CreateRoleStmt,proto3,oneof"` } type Node_AlterRoleStmt struct { - AlterRoleStmt *AlterRoleStmt `protobuf:"bytes,180,opt,name=alter_role_stmt,json=AlterRoleStmt,proto3,oneof"` + AlterRoleStmt *AlterRoleStmt `protobuf:"bytes,183,opt,name=alter_role_stmt,json=AlterRoleStmt,proto3,oneof"` } type Node_AlterRoleSetStmt struct { - AlterRoleSetStmt *AlterRoleSetStmt `protobuf:"bytes,181,opt,name=alter_role_set_stmt,json=AlterRoleSetStmt,proto3,oneof"` + AlterRoleSetStmt *AlterRoleSetStmt `protobuf:"bytes,184,opt,name=alter_role_set_stmt,json=AlterRoleSetStmt,proto3,oneof"` } type Node_DropRoleStmt struct { - DropRoleStmt *DropRoleStmt `protobuf:"bytes,182,opt,name=drop_role_stmt,json=DropRoleStmt,proto3,oneof"` + DropRoleStmt *DropRoleStmt `protobuf:"bytes,185,opt,name=drop_role_stmt,json=DropRoleStmt,proto3,oneof"` } type Node_CreateSeqStmt struct { - CreateSeqStmt *CreateSeqStmt `protobuf:"bytes,183,opt,name=create_seq_stmt,json=CreateSeqStmt,proto3,oneof"` + CreateSeqStmt *CreateSeqStmt `protobuf:"bytes,186,opt,name=create_seq_stmt,json=CreateSeqStmt,proto3,oneof"` } type Node_AlterSeqStmt struct { - AlterSeqStmt *AlterSeqStmt `protobuf:"bytes,184,opt,name=alter_seq_stmt,json=AlterSeqStmt,proto3,oneof"` + AlterSeqStmt *AlterSeqStmt `protobuf:"bytes,187,opt,name=alter_seq_stmt,json=AlterSeqStmt,proto3,oneof"` } type Node_DefineStmt struct { - DefineStmt *DefineStmt `protobuf:"bytes,185,opt,name=define_stmt,json=DefineStmt,proto3,oneof"` + DefineStmt *DefineStmt `protobuf:"bytes,188,opt,name=define_stmt,json=DefineStmt,proto3,oneof"` } type Node_CreateDomainStmt struct { - CreateDomainStmt *CreateDomainStmt `protobuf:"bytes,186,opt,name=create_domain_stmt,json=CreateDomainStmt,proto3,oneof"` + CreateDomainStmt *CreateDomainStmt `protobuf:"bytes,189,opt,name=create_domain_stmt,json=CreateDomainStmt,proto3,oneof"` } type Node_CreateOpClassStmt struct { - CreateOpClassStmt *CreateOpClassStmt `protobuf:"bytes,187,opt,name=create_op_class_stmt,json=CreateOpClassStmt,proto3,oneof"` + CreateOpClassStmt *CreateOpClassStmt `protobuf:"bytes,190,opt,name=create_op_class_stmt,json=CreateOpClassStmt,proto3,oneof"` } type Node_CreateOpClassItem struct { - CreateOpClassItem *CreateOpClassItem `protobuf:"bytes,188,opt,name=create_op_class_item,json=CreateOpClassItem,proto3,oneof"` + CreateOpClassItem *CreateOpClassItem `protobuf:"bytes,191,opt,name=create_op_class_item,json=CreateOpClassItem,proto3,oneof"` } type Node_CreateOpFamilyStmt struct { - CreateOpFamilyStmt *CreateOpFamilyStmt `protobuf:"bytes,189,opt,name=create_op_family_stmt,json=CreateOpFamilyStmt,proto3,oneof"` + CreateOpFamilyStmt *CreateOpFamilyStmt `protobuf:"bytes,192,opt,name=create_op_family_stmt,json=CreateOpFamilyStmt,proto3,oneof"` } type Node_AlterOpFamilyStmt struct { - AlterOpFamilyStmt *AlterOpFamilyStmt `protobuf:"bytes,190,opt,name=alter_op_family_stmt,json=AlterOpFamilyStmt,proto3,oneof"` + AlterOpFamilyStmt *AlterOpFamilyStmt `protobuf:"bytes,193,opt,name=alter_op_family_stmt,json=AlterOpFamilyStmt,proto3,oneof"` } type Node_DropStmt struct { - DropStmt *DropStmt `protobuf:"bytes,191,opt,name=drop_stmt,json=DropStmt,proto3,oneof"` + DropStmt *DropStmt `protobuf:"bytes,194,opt,name=drop_stmt,json=DropStmt,proto3,oneof"` } type Node_TruncateStmt struct { - TruncateStmt *TruncateStmt `protobuf:"bytes,192,opt,name=truncate_stmt,json=TruncateStmt,proto3,oneof"` + TruncateStmt *TruncateStmt `protobuf:"bytes,195,opt,name=truncate_stmt,json=TruncateStmt,proto3,oneof"` } type Node_CommentStmt struct { - CommentStmt *CommentStmt `protobuf:"bytes,193,opt,name=comment_stmt,json=CommentStmt,proto3,oneof"` + CommentStmt *CommentStmt `protobuf:"bytes,196,opt,name=comment_stmt,json=CommentStmt,proto3,oneof"` } type Node_SecLabelStmt struct { - SecLabelStmt *SecLabelStmt `protobuf:"bytes,194,opt,name=sec_label_stmt,json=SecLabelStmt,proto3,oneof"` + SecLabelStmt *SecLabelStmt `protobuf:"bytes,197,opt,name=sec_label_stmt,json=SecLabelStmt,proto3,oneof"` } type Node_DeclareCursorStmt struct { - DeclareCursorStmt *DeclareCursorStmt `protobuf:"bytes,195,opt,name=declare_cursor_stmt,json=DeclareCursorStmt,proto3,oneof"` + DeclareCursorStmt *DeclareCursorStmt `protobuf:"bytes,198,opt,name=declare_cursor_stmt,json=DeclareCursorStmt,proto3,oneof"` } type Node_ClosePortalStmt struct { - ClosePortalStmt *ClosePortalStmt `protobuf:"bytes,196,opt,name=close_portal_stmt,json=ClosePortalStmt,proto3,oneof"` + ClosePortalStmt *ClosePortalStmt `protobuf:"bytes,199,opt,name=close_portal_stmt,json=ClosePortalStmt,proto3,oneof"` } type Node_FetchStmt struct { - FetchStmt *FetchStmt `protobuf:"bytes,197,opt,name=fetch_stmt,json=FetchStmt,proto3,oneof"` + FetchStmt *FetchStmt `protobuf:"bytes,200,opt,name=fetch_stmt,json=FetchStmt,proto3,oneof"` } type Node_IndexStmt struct { - IndexStmt *IndexStmt `protobuf:"bytes,198,opt,name=index_stmt,json=IndexStmt,proto3,oneof"` + IndexStmt *IndexStmt `protobuf:"bytes,201,opt,name=index_stmt,json=IndexStmt,proto3,oneof"` } type Node_CreateStatsStmt struct { - CreateStatsStmt *CreateStatsStmt `protobuf:"bytes,199,opt,name=create_stats_stmt,json=CreateStatsStmt,proto3,oneof"` + CreateStatsStmt *CreateStatsStmt `protobuf:"bytes,202,opt,name=create_stats_stmt,json=CreateStatsStmt,proto3,oneof"` } type Node_StatsElem struct { - StatsElem *StatsElem `protobuf:"bytes,200,opt,name=stats_elem,json=StatsElem,proto3,oneof"` + StatsElem *StatsElem `protobuf:"bytes,203,opt,name=stats_elem,json=StatsElem,proto3,oneof"` } type Node_AlterStatsStmt struct { - AlterStatsStmt *AlterStatsStmt `protobuf:"bytes,201,opt,name=alter_stats_stmt,json=AlterStatsStmt,proto3,oneof"` + AlterStatsStmt *AlterStatsStmt `protobuf:"bytes,204,opt,name=alter_stats_stmt,json=AlterStatsStmt,proto3,oneof"` } type Node_CreateFunctionStmt struct { - CreateFunctionStmt *CreateFunctionStmt `protobuf:"bytes,202,opt,name=create_function_stmt,json=CreateFunctionStmt,proto3,oneof"` + CreateFunctionStmt *CreateFunctionStmt `protobuf:"bytes,205,opt,name=create_function_stmt,json=CreateFunctionStmt,proto3,oneof"` } type Node_FunctionParameter struct { - FunctionParameter *FunctionParameter `protobuf:"bytes,203,opt,name=function_parameter,json=FunctionParameter,proto3,oneof"` + FunctionParameter *FunctionParameter `protobuf:"bytes,206,opt,name=function_parameter,json=FunctionParameter,proto3,oneof"` } type Node_AlterFunctionStmt struct { - AlterFunctionStmt *AlterFunctionStmt `protobuf:"bytes,204,opt,name=alter_function_stmt,json=AlterFunctionStmt,proto3,oneof"` + AlterFunctionStmt *AlterFunctionStmt `protobuf:"bytes,207,opt,name=alter_function_stmt,json=AlterFunctionStmt,proto3,oneof"` } type Node_DoStmt struct { - DoStmt *DoStmt `protobuf:"bytes,205,opt,name=do_stmt,json=DoStmt,proto3,oneof"` + DoStmt *DoStmt `protobuf:"bytes,208,opt,name=do_stmt,json=DoStmt,proto3,oneof"` } type Node_InlineCodeBlock struct { - InlineCodeBlock *InlineCodeBlock `protobuf:"bytes,206,opt,name=inline_code_block,json=InlineCodeBlock,proto3,oneof"` + InlineCodeBlock *InlineCodeBlock `protobuf:"bytes,209,opt,name=inline_code_block,json=InlineCodeBlock,proto3,oneof"` } type Node_CallStmt struct { - CallStmt *CallStmt `protobuf:"bytes,207,opt,name=call_stmt,json=CallStmt,proto3,oneof"` + CallStmt *CallStmt `protobuf:"bytes,210,opt,name=call_stmt,json=CallStmt,proto3,oneof"` } type Node_CallContext struct { - CallContext *CallContext `protobuf:"bytes,208,opt,name=call_context,json=CallContext,proto3,oneof"` + CallContext *CallContext `protobuf:"bytes,211,opt,name=call_context,json=CallContext,proto3,oneof"` } type Node_RenameStmt struct { - RenameStmt *RenameStmt `protobuf:"bytes,209,opt,name=rename_stmt,json=RenameStmt,proto3,oneof"` + RenameStmt *RenameStmt `protobuf:"bytes,212,opt,name=rename_stmt,json=RenameStmt,proto3,oneof"` } type Node_AlterObjectDependsStmt struct { - AlterObjectDependsStmt *AlterObjectDependsStmt `protobuf:"bytes,210,opt,name=alter_object_depends_stmt,json=AlterObjectDependsStmt,proto3,oneof"` + AlterObjectDependsStmt *AlterObjectDependsStmt `protobuf:"bytes,213,opt,name=alter_object_depends_stmt,json=AlterObjectDependsStmt,proto3,oneof"` } type Node_AlterObjectSchemaStmt struct { - AlterObjectSchemaStmt *AlterObjectSchemaStmt `protobuf:"bytes,211,opt,name=alter_object_schema_stmt,json=AlterObjectSchemaStmt,proto3,oneof"` + AlterObjectSchemaStmt *AlterObjectSchemaStmt `protobuf:"bytes,214,opt,name=alter_object_schema_stmt,json=AlterObjectSchemaStmt,proto3,oneof"` } type Node_AlterOwnerStmt struct { - AlterOwnerStmt *AlterOwnerStmt `protobuf:"bytes,212,opt,name=alter_owner_stmt,json=AlterOwnerStmt,proto3,oneof"` + AlterOwnerStmt *AlterOwnerStmt `protobuf:"bytes,215,opt,name=alter_owner_stmt,json=AlterOwnerStmt,proto3,oneof"` } type Node_AlterOperatorStmt struct { - AlterOperatorStmt *AlterOperatorStmt `protobuf:"bytes,213,opt,name=alter_operator_stmt,json=AlterOperatorStmt,proto3,oneof"` + AlterOperatorStmt *AlterOperatorStmt `protobuf:"bytes,216,opt,name=alter_operator_stmt,json=AlterOperatorStmt,proto3,oneof"` } type Node_AlterTypeStmt struct { - AlterTypeStmt *AlterTypeStmt `protobuf:"bytes,214,opt,name=alter_type_stmt,json=AlterTypeStmt,proto3,oneof"` + AlterTypeStmt *AlterTypeStmt `protobuf:"bytes,217,opt,name=alter_type_stmt,json=AlterTypeStmt,proto3,oneof"` } type Node_RuleStmt struct { - RuleStmt *RuleStmt `protobuf:"bytes,215,opt,name=rule_stmt,json=RuleStmt,proto3,oneof"` + RuleStmt *RuleStmt `protobuf:"bytes,218,opt,name=rule_stmt,json=RuleStmt,proto3,oneof"` } type Node_NotifyStmt struct { - NotifyStmt *NotifyStmt `protobuf:"bytes,216,opt,name=notify_stmt,json=NotifyStmt,proto3,oneof"` + NotifyStmt *NotifyStmt `protobuf:"bytes,219,opt,name=notify_stmt,json=NotifyStmt,proto3,oneof"` } type Node_ListenStmt struct { - ListenStmt *ListenStmt `protobuf:"bytes,217,opt,name=listen_stmt,json=ListenStmt,proto3,oneof"` + ListenStmt *ListenStmt `protobuf:"bytes,220,opt,name=listen_stmt,json=ListenStmt,proto3,oneof"` } type Node_UnlistenStmt struct { - UnlistenStmt *UnlistenStmt `protobuf:"bytes,218,opt,name=unlisten_stmt,json=UnlistenStmt,proto3,oneof"` + UnlistenStmt *UnlistenStmt `protobuf:"bytes,221,opt,name=unlisten_stmt,json=UnlistenStmt,proto3,oneof"` } type Node_TransactionStmt struct { - TransactionStmt *TransactionStmt `protobuf:"bytes,219,opt,name=transaction_stmt,json=TransactionStmt,proto3,oneof"` + TransactionStmt *TransactionStmt `protobuf:"bytes,222,opt,name=transaction_stmt,json=TransactionStmt,proto3,oneof"` } type Node_CompositeTypeStmt struct { - CompositeTypeStmt *CompositeTypeStmt `protobuf:"bytes,220,opt,name=composite_type_stmt,json=CompositeTypeStmt,proto3,oneof"` + CompositeTypeStmt *CompositeTypeStmt `protobuf:"bytes,223,opt,name=composite_type_stmt,json=CompositeTypeStmt,proto3,oneof"` } type Node_CreateEnumStmt struct { - CreateEnumStmt *CreateEnumStmt `protobuf:"bytes,221,opt,name=create_enum_stmt,json=CreateEnumStmt,proto3,oneof"` + CreateEnumStmt *CreateEnumStmt `protobuf:"bytes,224,opt,name=create_enum_stmt,json=CreateEnumStmt,proto3,oneof"` } type Node_CreateRangeStmt struct { - CreateRangeStmt *CreateRangeStmt `protobuf:"bytes,222,opt,name=create_range_stmt,json=CreateRangeStmt,proto3,oneof"` + CreateRangeStmt *CreateRangeStmt `protobuf:"bytes,225,opt,name=create_range_stmt,json=CreateRangeStmt,proto3,oneof"` } type Node_AlterEnumStmt struct { - AlterEnumStmt *AlterEnumStmt `protobuf:"bytes,223,opt,name=alter_enum_stmt,json=AlterEnumStmt,proto3,oneof"` + AlterEnumStmt *AlterEnumStmt `protobuf:"bytes,226,opt,name=alter_enum_stmt,json=AlterEnumStmt,proto3,oneof"` } type Node_ViewStmt struct { - ViewStmt *ViewStmt `protobuf:"bytes,224,opt,name=view_stmt,json=ViewStmt,proto3,oneof"` + ViewStmt *ViewStmt `protobuf:"bytes,227,opt,name=view_stmt,json=ViewStmt,proto3,oneof"` } type Node_LoadStmt struct { - LoadStmt *LoadStmt `protobuf:"bytes,225,opt,name=load_stmt,json=LoadStmt,proto3,oneof"` + LoadStmt *LoadStmt `protobuf:"bytes,228,opt,name=load_stmt,json=LoadStmt,proto3,oneof"` } type Node_CreatedbStmt struct { - CreatedbStmt *CreatedbStmt `protobuf:"bytes,226,opt,name=createdb_stmt,json=CreatedbStmt,proto3,oneof"` + CreatedbStmt *CreatedbStmt `protobuf:"bytes,229,opt,name=createdb_stmt,json=CreatedbStmt,proto3,oneof"` } type Node_AlterDatabaseStmt struct { - AlterDatabaseStmt *AlterDatabaseStmt `protobuf:"bytes,227,opt,name=alter_database_stmt,json=AlterDatabaseStmt,proto3,oneof"` + AlterDatabaseStmt *AlterDatabaseStmt `protobuf:"bytes,230,opt,name=alter_database_stmt,json=AlterDatabaseStmt,proto3,oneof"` } type Node_AlterDatabaseRefreshCollStmt struct { - AlterDatabaseRefreshCollStmt *AlterDatabaseRefreshCollStmt `protobuf:"bytes,228,opt,name=alter_database_refresh_coll_stmt,json=AlterDatabaseRefreshCollStmt,proto3,oneof"` + AlterDatabaseRefreshCollStmt *AlterDatabaseRefreshCollStmt `protobuf:"bytes,231,opt,name=alter_database_refresh_coll_stmt,json=AlterDatabaseRefreshCollStmt,proto3,oneof"` } type Node_AlterDatabaseSetStmt struct { - AlterDatabaseSetStmt *AlterDatabaseSetStmt `protobuf:"bytes,229,opt,name=alter_database_set_stmt,json=AlterDatabaseSetStmt,proto3,oneof"` + AlterDatabaseSetStmt *AlterDatabaseSetStmt `protobuf:"bytes,232,opt,name=alter_database_set_stmt,json=AlterDatabaseSetStmt,proto3,oneof"` } type Node_DropdbStmt struct { - DropdbStmt *DropdbStmt `protobuf:"bytes,230,opt,name=dropdb_stmt,json=DropdbStmt,proto3,oneof"` + DropdbStmt *DropdbStmt `protobuf:"bytes,233,opt,name=dropdb_stmt,json=DropdbStmt,proto3,oneof"` } type Node_AlterSystemStmt struct { - AlterSystemStmt *AlterSystemStmt `protobuf:"bytes,231,opt,name=alter_system_stmt,json=AlterSystemStmt,proto3,oneof"` + AlterSystemStmt *AlterSystemStmt `protobuf:"bytes,234,opt,name=alter_system_stmt,json=AlterSystemStmt,proto3,oneof"` } type Node_ClusterStmt struct { - ClusterStmt *ClusterStmt `protobuf:"bytes,232,opt,name=cluster_stmt,json=ClusterStmt,proto3,oneof"` + ClusterStmt *ClusterStmt `protobuf:"bytes,235,opt,name=cluster_stmt,json=ClusterStmt,proto3,oneof"` } type Node_VacuumStmt struct { - VacuumStmt *VacuumStmt `protobuf:"bytes,233,opt,name=vacuum_stmt,json=VacuumStmt,proto3,oneof"` + VacuumStmt *VacuumStmt `protobuf:"bytes,236,opt,name=vacuum_stmt,json=VacuumStmt,proto3,oneof"` } type Node_VacuumRelation struct { - VacuumRelation *VacuumRelation `protobuf:"bytes,234,opt,name=vacuum_relation,json=VacuumRelation,proto3,oneof"` + VacuumRelation *VacuumRelation `protobuf:"bytes,237,opt,name=vacuum_relation,json=VacuumRelation,proto3,oneof"` } type Node_ExplainStmt struct { - ExplainStmt *ExplainStmt `protobuf:"bytes,235,opt,name=explain_stmt,json=ExplainStmt,proto3,oneof"` + ExplainStmt *ExplainStmt `protobuf:"bytes,238,opt,name=explain_stmt,json=ExplainStmt,proto3,oneof"` } type Node_CreateTableAsStmt struct { - CreateTableAsStmt *CreateTableAsStmt `protobuf:"bytes,236,opt,name=create_table_as_stmt,json=CreateTableAsStmt,proto3,oneof"` + CreateTableAsStmt *CreateTableAsStmt `protobuf:"bytes,239,opt,name=create_table_as_stmt,json=CreateTableAsStmt,proto3,oneof"` } type Node_RefreshMatViewStmt struct { - RefreshMatViewStmt *RefreshMatViewStmt `protobuf:"bytes,237,opt,name=refresh_mat_view_stmt,json=RefreshMatViewStmt,proto3,oneof"` + RefreshMatViewStmt *RefreshMatViewStmt `protobuf:"bytes,240,opt,name=refresh_mat_view_stmt,json=RefreshMatViewStmt,proto3,oneof"` } type Node_CheckPointStmt struct { - CheckPointStmt *CheckPointStmt `protobuf:"bytes,238,opt,name=check_point_stmt,json=CheckPointStmt,proto3,oneof"` + CheckPointStmt *CheckPointStmt `protobuf:"bytes,241,opt,name=check_point_stmt,json=CheckPointStmt,proto3,oneof"` } type Node_DiscardStmt struct { - DiscardStmt *DiscardStmt `protobuf:"bytes,239,opt,name=discard_stmt,json=DiscardStmt,proto3,oneof"` + DiscardStmt *DiscardStmt `protobuf:"bytes,242,opt,name=discard_stmt,json=DiscardStmt,proto3,oneof"` } type Node_LockStmt struct { - LockStmt *LockStmt `protobuf:"bytes,240,opt,name=lock_stmt,json=LockStmt,proto3,oneof"` + LockStmt *LockStmt `protobuf:"bytes,243,opt,name=lock_stmt,json=LockStmt,proto3,oneof"` } type Node_ConstraintsSetStmt struct { - ConstraintsSetStmt *ConstraintsSetStmt `protobuf:"bytes,241,opt,name=constraints_set_stmt,json=ConstraintsSetStmt,proto3,oneof"` + ConstraintsSetStmt *ConstraintsSetStmt `protobuf:"bytes,244,opt,name=constraints_set_stmt,json=ConstraintsSetStmt,proto3,oneof"` } type Node_ReindexStmt struct { - ReindexStmt *ReindexStmt `protobuf:"bytes,242,opt,name=reindex_stmt,json=ReindexStmt,proto3,oneof"` + ReindexStmt *ReindexStmt `protobuf:"bytes,245,opt,name=reindex_stmt,json=ReindexStmt,proto3,oneof"` } type Node_CreateConversionStmt struct { - CreateConversionStmt *CreateConversionStmt `protobuf:"bytes,243,opt,name=create_conversion_stmt,json=CreateConversionStmt,proto3,oneof"` + CreateConversionStmt *CreateConversionStmt `protobuf:"bytes,246,opt,name=create_conversion_stmt,json=CreateConversionStmt,proto3,oneof"` } type Node_CreateCastStmt struct { - CreateCastStmt *CreateCastStmt `protobuf:"bytes,244,opt,name=create_cast_stmt,json=CreateCastStmt,proto3,oneof"` + CreateCastStmt *CreateCastStmt `protobuf:"bytes,247,opt,name=create_cast_stmt,json=CreateCastStmt,proto3,oneof"` } type Node_CreateTransformStmt struct { - CreateTransformStmt *CreateTransformStmt `protobuf:"bytes,245,opt,name=create_transform_stmt,json=CreateTransformStmt,proto3,oneof"` + CreateTransformStmt *CreateTransformStmt `protobuf:"bytes,248,opt,name=create_transform_stmt,json=CreateTransformStmt,proto3,oneof"` } type Node_PrepareStmt struct { - PrepareStmt *PrepareStmt `protobuf:"bytes,246,opt,name=prepare_stmt,json=PrepareStmt,proto3,oneof"` + PrepareStmt *PrepareStmt `protobuf:"bytes,249,opt,name=prepare_stmt,json=PrepareStmt,proto3,oneof"` } type Node_ExecuteStmt struct { - ExecuteStmt *ExecuteStmt `protobuf:"bytes,247,opt,name=execute_stmt,json=ExecuteStmt,proto3,oneof"` + ExecuteStmt *ExecuteStmt `protobuf:"bytes,250,opt,name=execute_stmt,json=ExecuteStmt,proto3,oneof"` } type Node_DeallocateStmt struct { - DeallocateStmt *DeallocateStmt `protobuf:"bytes,248,opt,name=deallocate_stmt,json=DeallocateStmt,proto3,oneof"` + DeallocateStmt *DeallocateStmt `protobuf:"bytes,251,opt,name=deallocate_stmt,json=DeallocateStmt,proto3,oneof"` } type Node_DropOwnedStmt struct { - DropOwnedStmt *DropOwnedStmt `protobuf:"bytes,249,opt,name=drop_owned_stmt,json=DropOwnedStmt,proto3,oneof"` + DropOwnedStmt *DropOwnedStmt `protobuf:"bytes,252,opt,name=drop_owned_stmt,json=DropOwnedStmt,proto3,oneof"` } type Node_ReassignOwnedStmt struct { - ReassignOwnedStmt *ReassignOwnedStmt `protobuf:"bytes,250,opt,name=reassign_owned_stmt,json=ReassignOwnedStmt,proto3,oneof"` + ReassignOwnedStmt *ReassignOwnedStmt `protobuf:"bytes,253,opt,name=reassign_owned_stmt,json=ReassignOwnedStmt,proto3,oneof"` } type Node_AlterTsdictionaryStmt struct { - AlterTsdictionaryStmt *AlterTSDictionaryStmt `protobuf:"bytes,251,opt,name=alter_tsdictionary_stmt,json=AlterTSDictionaryStmt,proto3,oneof"` + AlterTsdictionaryStmt *AlterTSDictionaryStmt `protobuf:"bytes,254,opt,name=alter_tsdictionary_stmt,json=AlterTSDictionaryStmt,proto3,oneof"` } type Node_AlterTsconfigurationStmt struct { - AlterTsconfigurationStmt *AlterTSConfigurationStmt `protobuf:"bytes,252,opt,name=alter_tsconfiguration_stmt,json=AlterTSConfigurationStmt,proto3,oneof"` + AlterTsconfigurationStmt *AlterTSConfigurationStmt `protobuf:"bytes,255,opt,name=alter_tsconfiguration_stmt,json=AlterTSConfigurationStmt,proto3,oneof"` } type Node_PublicationTable struct { - PublicationTable *PublicationTable `protobuf:"bytes,253,opt,name=publication_table,json=PublicationTable,proto3,oneof"` + PublicationTable *PublicationTable `protobuf:"bytes,256,opt,name=publication_table,json=PublicationTable,proto3,oneof"` } type Node_PublicationObjSpec struct { - PublicationObjSpec *PublicationObjSpec `protobuf:"bytes,254,opt,name=publication_obj_spec,json=PublicationObjSpec,proto3,oneof"` + PublicationObjSpec *PublicationObjSpec `protobuf:"bytes,257,opt,name=publication_obj_spec,json=PublicationObjSpec,proto3,oneof"` } type Node_CreatePublicationStmt struct { - CreatePublicationStmt *CreatePublicationStmt `protobuf:"bytes,255,opt,name=create_publication_stmt,json=CreatePublicationStmt,proto3,oneof"` + CreatePublicationStmt *CreatePublicationStmt `protobuf:"bytes,258,opt,name=create_publication_stmt,json=CreatePublicationStmt,proto3,oneof"` } type Node_AlterPublicationStmt struct { - AlterPublicationStmt *AlterPublicationStmt `protobuf:"bytes,256,opt,name=alter_publication_stmt,json=AlterPublicationStmt,proto3,oneof"` + AlterPublicationStmt *AlterPublicationStmt `protobuf:"bytes,259,opt,name=alter_publication_stmt,json=AlterPublicationStmt,proto3,oneof"` } type Node_CreateSubscriptionStmt struct { - CreateSubscriptionStmt *CreateSubscriptionStmt `protobuf:"bytes,257,opt,name=create_subscription_stmt,json=CreateSubscriptionStmt,proto3,oneof"` + CreateSubscriptionStmt *CreateSubscriptionStmt `protobuf:"bytes,260,opt,name=create_subscription_stmt,json=CreateSubscriptionStmt,proto3,oneof"` } type Node_AlterSubscriptionStmt struct { - AlterSubscriptionStmt *AlterSubscriptionStmt `protobuf:"bytes,258,opt,name=alter_subscription_stmt,json=AlterSubscriptionStmt,proto3,oneof"` + AlterSubscriptionStmt *AlterSubscriptionStmt `protobuf:"bytes,261,opt,name=alter_subscription_stmt,json=AlterSubscriptionStmt,proto3,oneof"` } type Node_DropSubscriptionStmt struct { - DropSubscriptionStmt *DropSubscriptionStmt `protobuf:"bytes,259,opt,name=drop_subscription_stmt,json=DropSubscriptionStmt,proto3,oneof"` + DropSubscriptionStmt *DropSubscriptionStmt `protobuf:"bytes,262,opt,name=drop_subscription_stmt,json=DropSubscriptionStmt,proto3,oneof"` } type Node_Integer struct { - Integer *Integer `protobuf:"bytes,260,opt,name=integer,json=Integer,proto3,oneof"` + Integer *Integer `protobuf:"bytes,263,opt,name=integer,json=Integer,proto3,oneof"` } type Node_Float struct { - Float *Float `protobuf:"bytes,261,opt,name=float,json=Float,proto3,oneof"` + Float *Float `protobuf:"bytes,264,opt,name=float,json=Float,proto3,oneof"` } type Node_Boolean struct { - Boolean *Boolean `protobuf:"bytes,262,opt,name=boolean,json=Boolean,proto3,oneof"` + Boolean *Boolean `protobuf:"bytes,265,opt,name=boolean,json=Boolean,proto3,oneof"` } type Node_String_ struct { - String_ *String `protobuf:"bytes,263,opt,name=string,json=String,proto3,oneof"` + String_ *String `protobuf:"bytes,266,opt,name=string,json=String,proto3,oneof"` } type Node_BitString struct { - BitString *BitString `protobuf:"bytes,264,opt,name=bit_string,json=BitString,proto3,oneof"` + BitString *BitString `protobuf:"bytes,267,opt,name=bit_string,json=BitString,proto3,oneof"` } type Node_List struct { - List *List `protobuf:"bytes,265,opt,name=list,json=List,proto3,oneof"` + List *List `protobuf:"bytes,268,opt,name=list,json=List,proto3,oneof"` } type Node_IntList struct { - IntList *IntList `protobuf:"bytes,266,opt,name=int_list,json=IntList,proto3,oneof"` + IntList *IntList `protobuf:"bytes,269,opt,name=int_list,json=IntList,proto3,oneof"` } type Node_OidList struct { - OidList *OidList `protobuf:"bytes,267,opt,name=oid_list,json=OidList,proto3,oneof"` + OidList *OidList `protobuf:"bytes,270,opt,name=oid_list,json=OidList,proto3,oneof"` } type Node_AConst struct { - AConst *A_Const `protobuf:"bytes,268,opt,name=a_const,json=A_Const,proto3,oneof"` + AConst *A_Const `protobuf:"bytes,271,opt,name=a_const,json=A_Const,proto3,oneof"` } func (*Node_Alias) isNode_Node() {} @@ -10142,6 +10312,8 @@ 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() {} @@ -10216,8 +10388,6 @@ func (*Node_PartitionBoundSpec) isNode_Node() {} func (*Node_PartitionRangeDatum) isNode_Node() {} -func (*Node_SinglePartitionSpec) isNode_Node() {} - func (*Node_PartitionCmd) isNode_Node() {} func (*Node_RangeTblEntry) isNode_Node() {} @@ -10252,6 +10422,10 @@ 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() {} @@ -10308,10 +10482,12 @@ func (*Node_CreateSchemaStmt) isNode_Node() {} func (*Node_AlterTableStmt) isNode_Node() {} -func (*Node_ReplicaIdentityStmt) 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() {} @@ -11384,7 +11560,7 @@ type IntoClause struct { 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 *Node `protobuf:"bytes,7,opt,name=view_query,json=viewQuery,proto3" json:"view_query,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 @@ -11462,7 +11638,7 @@ func (x *IntoClause) GetTableSpaceName() string { return "" } -func (x *IntoClause) GetViewQuery() *Node { +func (x *IntoClause) GetViewQuery() *Query { if x != nil { return x.ViewQuery } @@ -11477,18 +11653,19 @@ func (x *IntoClause) GetSkipData() bool { } 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"` - Location int32 `protobuf:"varint,9,opt,name=location,proto3" json:"location,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + 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() { @@ -11577,6 +11754,13 @@ func (x *Var) GetVarlevelsup() uint32 { 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 @@ -14108,7 +14292,9 @@ type ArrayExpr struct { 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"` - Location int32 `protobuf:"varint,7,opt,name=location,proto3" json:"location,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 } @@ -14185,6 +14371,20 @@ func (x *ArrayExpr) GetMultidims() bool { 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 @@ -14279,7 +14479,7 @@ func (x *RowExpr) GetLocation() int32 { type RowCompareExpr struct { state protoimpl.MessageState `protogen:"open.v1"` Xpr *Node `protobuf:"bytes,1,opt,name=xpr,proto3" json:"xpr,omitempty"` - Rctype RowCompareType `protobuf:"varint,2,opt,name=rctype,proto3,enum=pg_query.RowCompareType" json:"rctype,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"` @@ -14326,11 +14526,11 @@ func (x *RowCompareExpr) GetXpr() *Node { return nil } -func (x *RowCompareExpr) GetRctype() RowCompareType { +func (x *RowCompareExpr) GetCmptype() CompareType { if x != nil { - return x.Rctype + return x.Cmptype } - return RowCompareType_ROW_COMPARE_TYPE_UNDEFINED + return CompareType_COMPARE_TYPE_UNDEFINED } func (x *RowCompareExpr) GetOpnos() []*Node { @@ -16196,6 +16396,74 @@ func (x *InferenceElem) GetInferopclass() uint32 { 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"` @@ -16212,7 +16480,7 @@ type TargetEntry struct { func (x *TargetEntry) Reset() { *x = TargetEntry{} - mi := &file_pg_query_proto_msgTypes[70] + mi := &file_pg_query_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16224,7 +16492,7 @@ func (x *TargetEntry) String() string { func (*TargetEntry) ProtoMessage() {} func (x *TargetEntry) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[70] + mi := &file_pg_query_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16237,7 +16505,7 @@ func (x *TargetEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use TargetEntry.ProtoReflect.Descriptor instead. func (*TargetEntry) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{70} + return file_pg_query_proto_rawDescGZIP(), []int{71} } func (x *TargetEntry) GetXpr() *Node { @@ -16305,7 +16573,7 @@ type RangeTblRef struct { func (x *RangeTblRef) Reset() { *x = RangeTblRef{} - mi := &file_pg_query_proto_msgTypes[71] + mi := &file_pg_query_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16317,7 +16585,7 @@ func (x *RangeTblRef) String() string { func (*RangeTblRef) ProtoMessage() {} func (x *RangeTblRef) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[71] + mi := &file_pg_query_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16330,7 +16598,7 @@ func (x *RangeTblRef) ProtoReflect() protoreflect.Message { // Deprecated: Use RangeTblRef.ProtoReflect.Descriptor instead. func (*RangeTblRef) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{71} + return file_pg_query_proto_rawDescGZIP(), []int{72} } func (x *RangeTblRef) GetRtindex() int32 { @@ -16357,7 +16625,7 @@ type JoinExpr struct { func (x *JoinExpr) Reset() { *x = JoinExpr{} - mi := &file_pg_query_proto_msgTypes[72] + mi := &file_pg_query_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16369,7 +16637,7 @@ func (x *JoinExpr) String() string { func (*JoinExpr) ProtoMessage() {} func (x *JoinExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[72] + mi := &file_pg_query_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16382,7 +16650,7 @@ func (x *JoinExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinExpr.ProtoReflect.Descriptor instead. func (*JoinExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{72} + return file_pg_query_proto_rawDescGZIP(), []int{73} } func (x *JoinExpr) GetJointype() JoinType { @@ -16458,7 +16726,7 @@ type FromExpr struct { func (x *FromExpr) Reset() { *x = FromExpr{} - mi := &file_pg_query_proto_msgTypes[73] + mi := &file_pg_query_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16470,7 +16738,7 @@ func (x *FromExpr) String() string { func (*FromExpr) ProtoMessage() {} func (x *FromExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[73] + mi := &file_pg_query_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16483,7 +16751,7 @@ func (x *FromExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use FromExpr.ProtoReflect.Descriptor instead. func (*FromExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{73} + return file_pg_query_proto_rawDescGZIP(), []int{74} } func (x *FromExpr) GetFromlist() []*Node { @@ -16516,7 +16784,7 @@ type OnConflictExpr struct { func (x *OnConflictExpr) Reset() { *x = OnConflictExpr{} - mi := &file_pg_query_proto_msgTypes[74] + mi := &file_pg_query_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16528,7 +16796,7 @@ func (x *OnConflictExpr) String() string { func (*OnConflictExpr) ProtoMessage() {} func (x *OnConflictExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[74] + mi := &file_pg_query_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16541,7 +16809,7 @@ func (x *OnConflictExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use OnConflictExpr.ProtoReflect.Descriptor instead. func (*OnConflictExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{74} + return file_pg_query_proto_rawDescGZIP(), []int{75} } func (x *OnConflictExpr) GetAction() OnConflictAction { @@ -16616,41 +16884,44 @@ type Query struct { 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"` - IsReturn bool `protobuf:"varint,15,opt,name=is_return,json=isReturn,proto3" json:"is_return,omitempty"` - CteList []*Node `protobuf:"bytes,16,rep,name=cte_list,json=cteList,proto3" json:"cte_list,omitempty"` - Rtable []*Node `protobuf:"bytes,17,rep,name=rtable,proto3" json:"rtable,omitempty"` - Rteperminfos []*Node `protobuf:"bytes,18,rep,name=rteperminfos,proto3" json:"rteperminfos,omitempty"` - Jointree *FromExpr `protobuf:"bytes,19,opt,name=jointree,proto3" json:"jointree,omitempty"` - MergeActionList []*Node `protobuf:"bytes,20,rep,name=merge_action_list,json=mergeActionList,proto3" json:"merge_action_list,omitempty"` - MergeTargetRelation int32 `protobuf:"varint,21,opt,name=merge_target_relation,json=mergeTargetRelation,proto3" json:"merge_target_relation,omitempty"` - MergeJoinCondition *Node `protobuf:"bytes,22,opt,name=merge_join_condition,json=mergeJoinCondition,proto3" json:"merge_join_condition,omitempty"` - TargetList []*Node `protobuf:"bytes,23,rep,name=target_list,json=targetList,proto3" json:"target_list,omitempty"` - Override OverridingKind `protobuf:"varint,24,opt,name=override,proto3,enum=pg_query.OverridingKind" json:"override,omitempty"` - OnConflict *OnConflictExpr `protobuf:"bytes,25,opt,name=on_conflict,json=onConflict,proto3" json:"on_conflict,omitempty"` - ReturningList []*Node `protobuf:"bytes,26,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` - GroupClause []*Node `protobuf:"bytes,27,rep,name=group_clause,json=groupClause,proto3" json:"group_clause,omitempty"` - GroupDistinct bool `protobuf:"varint,28,opt,name=group_distinct,json=groupDistinct,proto3" json:"group_distinct,omitempty"` - GroupingSets []*Node `protobuf:"bytes,29,rep,name=grouping_sets,json=groupingSets,proto3" json:"grouping_sets,omitempty"` - HavingQual *Node `protobuf:"bytes,30,opt,name=having_qual,json=havingQual,proto3" json:"having_qual,omitempty"` - WindowClause []*Node `protobuf:"bytes,31,rep,name=window_clause,json=windowClause,proto3" json:"window_clause,omitempty"` - DistinctClause []*Node `protobuf:"bytes,32,rep,name=distinct_clause,json=distinctClause,proto3" json:"distinct_clause,omitempty"` - SortClause []*Node `protobuf:"bytes,33,rep,name=sort_clause,json=sortClause,proto3" json:"sort_clause,omitempty"` - LimitOffset *Node `protobuf:"bytes,34,opt,name=limit_offset,json=limitOffset,proto3" json:"limit_offset,omitempty"` - LimitCount *Node `protobuf:"bytes,35,opt,name=limit_count,json=limitCount,proto3" json:"limit_count,omitempty"` - LimitOption LimitOption `protobuf:"varint,36,opt,name=limit_option,json=limitOption,proto3,enum=pg_query.LimitOption" json:"limit_option,omitempty"` - RowMarks []*Node `protobuf:"bytes,37,rep,name=row_marks,json=rowMarks,proto3" json:"row_marks,omitempty"` - SetOperations *Node `protobuf:"bytes,38,opt,name=set_operations,json=setOperations,proto3" json:"set_operations,omitempty"` - ConstraintDeps []*Node `protobuf:"bytes,39,rep,name=constraint_deps,json=constraintDeps,proto3" json:"constraint_deps,omitempty"` - WithCheckOptions []*Node `protobuf:"bytes,40,rep,name=with_check_options,json=withCheckOptions,proto3" json:"with_check_options,omitempty"` - StmtLocation int32 `protobuf:"varint,41,opt,name=stmt_location,proto3" json:"stmt_location,omitempty"` - StmtLen int32 `protobuf:"varint,42,opt,name=stmt_len,proto3" json:"stmt_len,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[75] + mi := &file_pg_query_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16662,7 +16933,7 @@ func (x *Query) String() string { func (*Query) ProtoMessage() {} func (x *Query) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[75] + mi := &file_pg_query_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16675,7 +16946,7 @@ func (x *Query) ProtoReflect() protoreflect.Message { // Deprecated: Use Query.ProtoReflect.Descriptor instead. func (*Query) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{75} + return file_pg_query_proto_rawDescGZIP(), []int{76} } func (x *Query) GetCommandType() CmdType { @@ -16776,6 +17047,13 @@ func (x *Query) GetHasRowSecurity() bool { 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 @@ -16853,6 +17131,20 @@ func (x *Query) GetOnConflict() *OnConflictExpr { 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 @@ -16988,7 +17280,7 @@ type TypeName struct { func (x *TypeName) Reset() { *x = TypeName{} - mi := &file_pg_query_proto_msgTypes[76] + mi := &file_pg_query_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17000,7 +17292,7 @@ func (x *TypeName) String() string { func (*TypeName) ProtoMessage() {} func (x *TypeName) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[76] + mi := &file_pg_query_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17013,7 +17305,7 @@ func (x *TypeName) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeName.ProtoReflect.Descriptor instead. func (*TypeName) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{76} + return file_pg_query_proto_rawDescGZIP(), []int{77} } func (x *TypeName) GetNames() []*Node { @@ -17082,7 +17374,7 @@ type ColumnRef struct { func (x *ColumnRef) Reset() { *x = ColumnRef{} - mi := &file_pg_query_proto_msgTypes[77] + mi := &file_pg_query_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17094,7 +17386,7 @@ func (x *ColumnRef) String() string { func (*ColumnRef) ProtoMessage() {} func (x *ColumnRef) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[77] + mi := &file_pg_query_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17107,7 +17399,7 @@ func (x *ColumnRef) ProtoReflect() protoreflect.Message { // Deprecated: Use ColumnRef.ProtoReflect.Descriptor instead. func (*ColumnRef) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{77} + return file_pg_query_proto_rawDescGZIP(), []int{78} } func (x *ColumnRef) GetFields() []*Node { @@ -17134,7 +17426,7 @@ type ParamRef struct { func (x *ParamRef) Reset() { *x = ParamRef{} - mi := &file_pg_query_proto_msgTypes[78] + mi := &file_pg_query_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17146,7 +17438,7 @@ func (x *ParamRef) String() string { func (*ParamRef) ProtoMessage() {} func (x *ParamRef) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[78] + mi := &file_pg_query_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17159,7 +17451,7 @@ func (x *ParamRef) ProtoReflect() protoreflect.Message { // Deprecated: Use ParamRef.ProtoReflect.Descriptor instead. func (*ParamRef) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{78} + return file_pg_query_proto_rawDescGZIP(), []int{79} } func (x *ParamRef) GetNumber() int32 { @@ -17177,19 +17469,21 @@ func (x *ParamRef) GetLocation() int32 { } 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"` - Location int32 `protobuf:"varint,5,opt,name=location,proto3" json:"location,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + 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[79] + mi := &file_pg_query_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17201,7 +17495,7 @@ func (x *A_Expr) String() string { func (*A_Expr) ProtoMessage() {} func (x *A_Expr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[79] + mi := &file_pg_query_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17214,7 +17508,7 @@ func (x *A_Expr) ProtoReflect() protoreflect.Message { // Deprecated: Use A_Expr.ProtoReflect.Descriptor instead. func (*A_Expr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{79} + return file_pg_query_proto_rawDescGZIP(), []int{80} } func (x *A_Expr) GetKind() A_Expr_Kind { @@ -17245,6 +17539,20 @@ func (x *A_Expr) GetRexpr() *Node { 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 @@ -17263,7 +17571,7 @@ type TypeCast struct { func (x *TypeCast) Reset() { *x = TypeCast{} - mi := &file_pg_query_proto_msgTypes[80] + mi := &file_pg_query_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17275,7 +17583,7 @@ func (x *TypeCast) String() string { func (*TypeCast) ProtoMessage() {} func (x *TypeCast) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[80] + mi := &file_pg_query_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17288,7 +17596,7 @@ func (x *TypeCast) ProtoReflect() protoreflect.Message { // Deprecated: Use TypeCast.ProtoReflect.Descriptor instead. func (*TypeCast) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{80} + return file_pg_query_proto_rawDescGZIP(), []int{81} } func (x *TypeCast) GetArg() *Node { @@ -17323,7 +17631,7 @@ type CollateClause struct { func (x *CollateClause) Reset() { *x = CollateClause{} - mi := &file_pg_query_proto_msgTypes[81] + mi := &file_pg_query_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17335,7 +17643,7 @@ func (x *CollateClause) String() string { func (*CollateClause) ProtoMessage() {} func (x *CollateClause) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[81] + mi := &file_pg_query_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17348,7 +17656,7 @@ func (x *CollateClause) ProtoReflect() protoreflect.Message { // Deprecated: Use CollateClause.ProtoReflect.Descriptor instead. func (*CollateClause) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{81} + return file_pg_query_proto_rawDescGZIP(), []int{82} } func (x *CollateClause) GetArg() *Node { @@ -17383,7 +17691,7 @@ type RoleSpec struct { func (x *RoleSpec) Reset() { *x = RoleSpec{} - mi := &file_pg_query_proto_msgTypes[82] + mi := &file_pg_query_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17395,7 +17703,7 @@ func (x *RoleSpec) String() string { func (*RoleSpec) ProtoMessage() {} func (x *RoleSpec) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[82] + mi := &file_pg_query_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17408,7 +17716,7 @@ func (x *RoleSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use RoleSpec.ProtoReflect.Descriptor instead. func (*RoleSpec) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{82} + return file_pg_query_proto_rawDescGZIP(), []int{83} } func (x *RoleSpec) GetRoletype() RoleSpecType { @@ -17451,7 +17759,7 @@ type FuncCall struct { func (x *FuncCall) Reset() { *x = FuncCall{} - mi := &file_pg_query_proto_msgTypes[83] + mi := &file_pg_query_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17463,7 +17771,7 @@ func (x *FuncCall) String() string { func (*FuncCall) ProtoMessage() {} func (x *FuncCall) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[83] + mi := &file_pg_query_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17476,7 +17784,7 @@ func (x *FuncCall) ProtoReflect() protoreflect.Message { // Deprecated: Use FuncCall.ProtoReflect.Descriptor instead. func (*FuncCall) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{83} + return file_pg_query_proto_rawDescGZIP(), []int{84} } func (x *FuncCall) GetFuncname() []*Node { @@ -17564,7 +17872,7 @@ type A_Star struct { func (x *A_Star) Reset() { *x = A_Star{} - mi := &file_pg_query_proto_msgTypes[84] + mi := &file_pg_query_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17576,7 +17884,7 @@ func (x *A_Star) String() string { func (*A_Star) ProtoMessage() {} func (x *A_Star) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[84] + mi := &file_pg_query_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17589,7 +17897,7 @@ func (x *A_Star) ProtoReflect() protoreflect.Message { // Deprecated: Use A_Star.ProtoReflect.Descriptor instead. func (*A_Star) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{84} + return file_pg_query_proto_rawDescGZIP(), []int{85} } type A_Indices struct { @@ -17603,7 +17911,7 @@ type A_Indices struct { func (x *A_Indices) Reset() { *x = A_Indices{} - mi := &file_pg_query_proto_msgTypes[85] + mi := &file_pg_query_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17615,7 +17923,7 @@ func (x *A_Indices) String() string { func (*A_Indices) ProtoMessage() {} func (x *A_Indices) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[85] + mi := &file_pg_query_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17628,7 +17936,7 @@ func (x *A_Indices) ProtoReflect() protoreflect.Message { // Deprecated: Use A_Indices.ProtoReflect.Descriptor instead. func (*A_Indices) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{85} + return file_pg_query_proto_rawDescGZIP(), []int{86} } func (x *A_Indices) GetIsSlice() bool { @@ -17662,7 +17970,7 @@ type A_Indirection struct { func (x *A_Indirection) Reset() { *x = A_Indirection{} - mi := &file_pg_query_proto_msgTypes[86] + mi := &file_pg_query_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17674,7 +17982,7 @@ func (x *A_Indirection) String() string { func (*A_Indirection) ProtoMessage() {} func (x *A_Indirection) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[86] + mi := &file_pg_query_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17687,7 +17995,7 @@ func (x *A_Indirection) ProtoReflect() protoreflect.Message { // Deprecated: Use A_Indirection.ProtoReflect.Descriptor instead. func (*A_Indirection) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{86} + return file_pg_query_proto_rawDescGZIP(), []int{87} } func (x *A_Indirection) GetArg() *Node { @@ -17707,14 +18015,16 @@ func (x *A_Indirection) GetIndirection() []*Node { type A_ArrayExpr struct { state protoimpl.MessageState `protogen:"open.v1"` Elements []*Node `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` - Location int32 `protobuf:"varint,2,opt,name=location,proto3" json:"location,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[87] + mi := &file_pg_query_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17726,7 +18036,7 @@ func (x *A_ArrayExpr) String() string { func (*A_ArrayExpr) ProtoMessage() {} func (x *A_ArrayExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[87] + mi := &file_pg_query_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17739,7 +18049,7 @@ func (x *A_ArrayExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use A_ArrayExpr.ProtoReflect.Descriptor instead. func (*A_ArrayExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{87} + return file_pg_query_proto_rawDescGZIP(), []int{88} } func (x *A_ArrayExpr) GetElements() []*Node { @@ -17749,6 +18059,20 @@ func (x *A_ArrayExpr) GetElements() []*Node { 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 @@ -17768,7 +18092,7 @@ type ResTarget struct { func (x *ResTarget) Reset() { *x = ResTarget{} - mi := &file_pg_query_proto_msgTypes[88] + mi := &file_pg_query_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17780,7 +18104,7 @@ func (x *ResTarget) String() string { func (*ResTarget) ProtoMessage() {} func (x *ResTarget) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[88] + mi := &file_pg_query_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17793,7 +18117,7 @@ func (x *ResTarget) ProtoReflect() protoreflect.Message { // Deprecated: Use ResTarget.ProtoReflect.Descriptor instead. func (*ResTarget) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{88} + return file_pg_query_proto_rawDescGZIP(), []int{89} } func (x *ResTarget) GetName() string { @@ -17835,7 +18159,7 @@ type MultiAssignRef struct { func (x *MultiAssignRef) Reset() { *x = MultiAssignRef{} - mi := &file_pg_query_proto_msgTypes[89] + mi := &file_pg_query_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17847,7 +18171,7 @@ func (x *MultiAssignRef) String() string { func (*MultiAssignRef) ProtoMessage() {} func (x *MultiAssignRef) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[89] + mi := &file_pg_query_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17860,7 +18184,7 @@ func (x *MultiAssignRef) ProtoReflect() protoreflect.Message { // Deprecated: Use MultiAssignRef.ProtoReflect.Descriptor instead. func (*MultiAssignRef) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{89} + return file_pg_query_proto_rawDescGZIP(), []int{90} } func (x *MultiAssignRef) GetSource() *Node { @@ -17897,7 +18221,7 @@ type SortBy struct { func (x *SortBy) Reset() { *x = SortBy{} - mi := &file_pg_query_proto_msgTypes[90] + mi := &file_pg_query_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17909,7 +18233,7 @@ func (x *SortBy) String() string { func (*SortBy) ProtoMessage() {} func (x *SortBy) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[90] + mi := &file_pg_query_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17922,7 +18246,7 @@ func (x *SortBy) ProtoReflect() protoreflect.Message { // Deprecated: Use SortBy.ProtoReflect.Descriptor instead. func (*SortBy) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{90} + return file_pg_query_proto_rawDescGZIP(), []int{91} } func (x *SortBy) GetNode() *Node { @@ -17976,7 +18300,7 @@ type WindowDef struct { func (x *WindowDef) Reset() { *x = WindowDef{} - mi := &file_pg_query_proto_msgTypes[91] + mi := &file_pg_query_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17988,7 +18312,7 @@ func (x *WindowDef) String() string { func (*WindowDef) ProtoMessage() {} func (x *WindowDef) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[91] + mi := &file_pg_query_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18001,7 +18325,7 @@ func (x *WindowDef) ProtoReflect() protoreflect.Message { // Deprecated: Use WindowDef.ProtoReflect.Descriptor instead. func (*WindowDef) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{91} + return file_pg_query_proto_rawDescGZIP(), []int{92} } func (x *WindowDef) GetName() string { @@ -18071,7 +18395,7 @@ type RangeSubselect struct { func (x *RangeSubselect) Reset() { *x = RangeSubselect{} - mi := &file_pg_query_proto_msgTypes[92] + mi := &file_pg_query_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18083,7 +18407,7 @@ func (x *RangeSubselect) String() string { func (*RangeSubselect) ProtoMessage() {} func (x *RangeSubselect) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[92] + mi := &file_pg_query_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18096,7 +18420,7 @@ func (x *RangeSubselect) ProtoReflect() protoreflect.Message { // Deprecated: Use RangeSubselect.ProtoReflect.Descriptor instead. func (*RangeSubselect) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{92} + return file_pg_query_proto_rawDescGZIP(), []int{93} } func (x *RangeSubselect) GetLateral() bool { @@ -18134,7 +18458,7 @@ type RangeFunction struct { func (x *RangeFunction) Reset() { *x = RangeFunction{} - mi := &file_pg_query_proto_msgTypes[93] + mi := &file_pg_query_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18146,7 +18470,7 @@ func (x *RangeFunction) String() string { func (*RangeFunction) ProtoMessage() {} func (x *RangeFunction) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[93] + mi := &file_pg_query_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18159,7 +18483,7 @@ func (x *RangeFunction) ProtoReflect() protoreflect.Message { // Deprecated: Use RangeFunction.ProtoReflect.Descriptor instead. func (*RangeFunction) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{93} + return file_pg_query_proto_rawDescGZIP(), []int{94} } func (x *RangeFunction) GetLateral() bool { @@ -18219,7 +18543,7 @@ type RangeTableFunc struct { func (x *RangeTableFunc) Reset() { *x = RangeTableFunc{} - mi := &file_pg_query_proto_msgTypes[94] + mi := &file_pg_query_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18231,7 +18555,7 @@ func (x *RangeTableFunc) String() string { func (*RangeTableFunc) ProtoMessage() {} func (x *RangeTableFunc) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[94] + mi := &file_pg_query_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18244,7 +18568,7 @@ func (x *RangeTableFunc) ProtoReflect() protoreflect.Message { // Deprecated: Use RangeTableFunc.ProtoReflect.Descriptor instead. func (*RangeTableFunc) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{94} + return file_pg_query_proto_rawDescGZIP(), []int{95} } func (x *RangeTableFunc) GetLateral() bool { @@ -18311,7 +18635,7 @@ type RangeTableFuncCol struct { func (x *RangeTableFuncCol) Reset() { *x = RangeTableFuncCol{} - mi := &file_pg_query_proto_msgTypes[95] + mi := &file_pg_query_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18323,7 +18647,7 @@ func (x *RangeTableFuncCol) String() string { func (*RangeTableFuncCol) ProtoMessage() {} func (x *RangeTableFuncCol) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[95] + mi := &file_pg_query_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18336,7 +18660,7 @@ func (x *RangeTableFuncCol) ProtoReflect() protoreflect.Message { // Deprecated: Use RangeTableFuncCol.ProtoReflect.Descriptor instead. func (*RangeTableFuncCol) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{95} + return file_pg_query_proto_rawDescGZIP(), []int{96} } func (x *RangeTableFuncCol) GetColname() string { @@ -18401,7 +18725,7 @@ type RangeTableSample struct { func (x *RangeTableSample) Reset() { *x = RangeTableSample{} - mi := &file_pg_query_proto_msgTypes[96] + mi := &file_pg_query_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18413,7 +18737,7 @@ func (x *RangeTableSample) String() string { func (*RangeTableSample) ProtoMessage() {} func (x *RangeTableSample) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[96] + mi := &file_pg_query_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18426,7 +18750,7 @@ func (x *RangeTableSample) ProtoReflect() protoreflect.Message { // Deprecated: Use RangeTableSample.ProtoReflect.Descriptor instead. func (*RangeTableSample) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{96} + return file_pg_query_proto_rawDescGZIP(), []int{97} } func (x *RangeTableSample) GetRelation() *Node { @@ -18491,7 +18815,7 @@ type ColumnDef struct { func (x *ColumnDef) Reset() { *x = ColumnDef{} - mi := &file_pg_query_proto_msgTypes[97] + mi := &file_pg_query_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18503,7 +18827,7 @@ func (x *ColumnDef) String() string { func (*ColumnDef) ProtoMessage() {} func (x *ColumnDef) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[97] + mi := &file_pg_query_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18516,7 +18840,7 @@ func (x *ColumnDef) ProtoReflect() protoreflect.Message { // Deprecated: Use ColumnDef.ProtoReflect.Descriptor instead. func (*ColumnDef) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{97} + return file_pg_query_proto_rawDescGZIP(), []int{98} } func (x *ColumnDef) GetColname() string { @@ -18663,7 +18987,7 @@ type TableLikeClause struct { func (x *TableLikeClause) Reset() { *x = TableLikeClause{} - mi := &file_pg_query_proto_msgTypes[98] + mi := &file_pg_query_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18675,7 +18999,7 @@ func (x *TableLikeClause) String() string { func (*TableLikeClause) ProtoMessage() {} func (x *TableLikeClause) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[98] + mi := &file_pg_query_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18688,7 +19012,7 @@ func (x *TableLikeClause) ProtoReflect() protoreflect.Message { // Deprecated: Use TableLikeClause.ProtoReflect.Descriptor instead. func (*TableLikeClause) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{98} + return file_pg_query_proto_rawDescGZIP(), []int{99} } func (x *TableLikeClause) GetRelation() *RangeVar { @@ -18728,7 +19052,7 @@ type IndexElem struct { func (x *IndexElem) Reset() { *x = IndexElem{} - mi := &file_pg_query_proto_msgTypes[99] + mi := &file_pg_query_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18740,7 +19064,7 @@ func (x *IndexElem) String() string { func (*IndexElem) ProtoMessage() {} func (x *IndexElem) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[99] + mi := &file_pg_query_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18753,7 +19077,7 @@ func (x *IndexElem) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexElem.ProtoReflect.Descriptor instead. func (*IndexElem) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{99} + return file_pg_query_proto_rawDescGZIP(), []int{100} } func (x *IndexElem) GetName() string { @@ -18825,7 +19149,7 @@ type DefElem struct { func (x *DefElem) Reset() { *x = DefElem{} - mi := &file_pg_query_proto_msgTypes[100] + mi := &file_pg_query_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18837,7 +19161,7 @@ func (x *DefElem) String() string { func (*DefElem) ProtoMessage() {} func (x *DefElem) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[100] + mi := &file_pg_query_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18850,7 +19174,7 @@ func (x *DefElem) ProtoReflect() protoreflect.Message { // Deprecated: Use DefElem.ProtoReflect.Descriptor instead. func (*DefElem) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{100} + return file_pg_query_proto_rawDescGZIP(), []int{101} } func (x *DefElem) GetDefnamespace() string { @@ -18899,7 +19223,7 @@ type LockingClause struct { func (x *LockingClause) Reset() { *x = LockingClause{} - mi := &file_pg_query_proto_msgTypes[101] + mi := &file_pg_query_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18911,7 +19235,7 @@ func (x *LockingClause) String() string { func (*LockingClause) ProtoMessage() {} func (x *LockingClause) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[101] + mi := &file_pg_query_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18924,7 +19248,7 @@ func (x *LockingClause) ProtoReflect() protoreflect.Message { // Deprecated: Use LockingClause.ProtoReflect.Descriptor instead. func (*LockingClause) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{101} + return file_pg_query_proto_rawDescGZIP(), []int{102} } func (x *LockingClause) GetLockedRels() []*Node { @@ -18961,7 +19285,7 @@ type XmlSerialize struct { func (x *XmlSerialize) Reset() { *x = XmlSerialize{} - mi := &file_pg_query_proto_msgTypes[102] + mi := &file_pg_query_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18973,7 +19297,7 @@ func (x *XmlSerialize) String() string { func (*XmlSerialize) ProtoMessage() {} func (x *XmlSerialize) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[102] + mi := &file_pg_query_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18986,7 +19310,7 @@ func (x *XmlSerialize) ProtoReflect() protoreflect.Message { // Deprecated: Use XmlSerialize.ProtoReflect.Descriptor instead. func (*XmlSerialize) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{102} + return file_pg_query_proto_rawDescGZIP(), []int{103} } func (x *XmlSerialize) GetXmloption() XmlOptionType { @@ -19037,7 +19361,7 @@ type PartitionElem struct { func (x *PartitionElem) Reset() { *x = PartitionElem{} - mi := &file_pg_query_proto_msgTypes[103] + mi := &file_pg_query_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19049,7 +19373,7 @@ func (x *PartitionElem) String() string { func (*PartitionElem) ProtoMessage() {} func (x *PartitionElem) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[103] + mi := &file_pg_query_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19062,7 +19386,7 @@ func (x *PartitionElem) ProtoReflect() protoreflect.Message { // Deprecated: Use PartitionElem.ProtoReflect.Descriptor instead. func (*PartitionElem) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{103} + return file_pg_query_proto_rawDescGZIP(), []int{104} } func (x *PartitionElem) GetName() string { @@ -19111,7 +19435,7 @@ type PartitionSpec struct { func (x *PartitionSpec) Reset() { *x = PartitionSpec{} - mi := &file_pg_query_proto_msgTypes[104] + mi := &file_pg_query_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19123,7 +19447,7 @@ func (x *PartitionSpec) String() string { func (*PartitionSpec) ProtoMessage() {} func (x *PartitionSpec) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[104] + mi := &file_pg_query_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19136,7 +19460,7 @@ func (x *PartitionSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use PartitionSpec.ProtoReflect.Descriptor instead. func (*PartitionSpec) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{104} + return file_pg_query_proto_rawDescGZIP(), []int{105} } func (x *PartitionSpec) GetStrategy() PartitionStrategy { @@ -19176,7 +19500,7 @@ type PartitionBoundSpec struct { func (x *PartitionBoundSpec) Reset() { *x = PartitionBoundSpec{} - mi := &file_pg_query_proto_msgTypes[105] + mi := &file_pg_query_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19188,7 +19512,7 @@ func (x *PartitionBoundSpec) String() string { func (*PartitionBoundSpec) ProtoMessage() {} func (x *PartitionBoundSpec) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[105] + mi := &file_pg_query_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19201,7 +19525,7 @@ func (x *PartitionBoundSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use PartitionBoundSpec.ProtoReflect.Descriptor instead. func (*PartitionBoundSpec) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{105} + return file_pg_query_proto_rawDescGZIP(), []int{106} } func (x *PartitionBoundSpec) GetStrategy() string { @@ -19271,7 +19595,7 @@ type PartitionRangeDatum struct { func (x *PartitionRangeDatum) Reset() { *x = PartitionRangeDatum{} - mi := &file_pg_query_proto_msgTypes[106] + mi := &file_pg_query_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19283,7 +19607,7 @@ func (x *PartitionRangeDatum) String() string { func (*PartitionRangeDatum) ProtoMessage() {} func (x *PartitionRangeDatum) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[106] + mi := &file_pg_query_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19296,7 +19620,7 @@ func (x *PartitionRangeDatum) ProtoReflect() protoreflect.Message { // Deprecated: Use PartitionRangeDatum.ProtoReflect.Descriptor instead. func (*PartitionRangeDatum) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{106} + return file_pg_query_proto_rawDescGZIP(), []int{107} } func (x *PartitionRangeDatum) GetKind() PartitionRangeDatumKind { @@ -19320,42 +19644,6 @@ func (x *PartitionRangeDatum) GetLocation() int32 { return 0 } -type SinglePartitionSpec struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SinglePartitionSpec) Reset() { - *x = SinglePartitionSpec{} - mi := &file_pg_query_proto_msgTypes[107] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SinglePartitionSpec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SinglePartitionSpec) ProtoMessage() {} - -func (x *SinglePartitionSpec) 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 SinglePartitionSpec.ProtoReflect.Descriptor instead. -func (*SinglePartitionSpec) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{107} -} - type PartitionCmd struct { state protoimpl.MessageState `protogen:"open.v1"` Name *RangeVar `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -19447,9 +19735,10 @@ type RangeTblEntry struct { 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"` - Lateral bool `protobuf:"varint,30,opt,name=lateral,proto3" json:"lateral,omitempty"` - InFromCl bool `protobuf:"varint,31,opt,name=in_from_cl,json=inFromCl,proto3" json:"in_from_cl,omitempty"` - SecurityQuals []*Node `protobuf:"bytes,32,rep,name=security_quals,json=securityQuals,proto3" json:"security_quals,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 } @@ -19687,6 +19976,13 @@ func (x *RangeTblEntry) GetEnrtuples() float64 { 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 @@ -20033,8 +20329,9 @@ type SortGroupClause struct { 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"` - NullsFirst bool `protobuf:"varint,4,opt,name=nulls_first,proto3" json:"nulls_first,omitempty"` - Hashable bool `protobuf:"varint,5,opt,name=hashable,proto3" json:"hashable,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 } @@ -20090,6 +20387,13 @@ func (x *SortGroupClause) GetSortop() uint32 { 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 @@ -20992,6 +21296,118 @@ func (x *MergeWhenClause) GetValues() []*Node { 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"` @@ -21003,7 +21419,7 @@ type TriggerTransition struct { func (x *TriggerTransition) Reset() { *x = TriggerTransition{} - mi := &file_pg_query_proto_msgTypes[125] + mi := &file_pg_query_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21015,7 +21431,7 @@ func (x *TriggerTransition) String() string { func (*TriggerTransition) ProtoMessage() {} func (x *TriggerTransition) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[125] + mi := &file_pg_query_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21028,7 +21444,7 @@ func (x *TriggerTransition) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerTransition.ProtoReflect.Descriptor instead. func (*TriggerTransition) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{125} + return file_pg_query_proto_rawDescGZIP(), []int{127} } func (x *TriggerTransition) GetName() string { @@ -21062,7 +21478,7 @@ type JsonOutput struct { func (x *JsonOutput) Reset() { *x = JsonOutput{} - mi := &file_pg_query_proto_msgTypes[126] + mi := &file_pg_query_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21074,7 +21490,7 @@ func (x *JsonOutput) String() string { func (*JsonOutput) ProtoMessage() {} func (x *JsonOutput) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[126] + mi := &file_pg_query_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21087,7 +21503,7 @@ func (x *JsonOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonOutput.ProtoReflect.Descriptor instead. func (*JsonOutput) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{126} + return file_pg_query_proto_rawDescGZIP(), []int{128} } func (x *JsonOutput) GetTypeName() *TypeName { @@ -21114,7 +21530,7 @@ type JsonArgument struct { func (x *JsonArgument) Reset() { *x = JsonArgument{} - mi := &file_pg_query_proto_msgTypes[127] + mi := &file_pg_query_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21126,7 +21542,7 @@ func (x *JsonArgument) String() string { func (*JsonArgument) ProtoMessage() {} func (x *JsonArgument) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[127] + mi := &file_pg_query_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21139,7 +21555,7 @@ func (x *JsonArgument) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonArgument.ProtoReflect.Descriptor instead. func (*JsonArgument) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{127} + return file_pg_query_proto_rawDescGZIP(), []int{129} } func (x *JsonArgument) GetVal() *JsonValueExpr { @@ -21175,7 +21591,7 @@ type JsonFuncExpr struct { func (x *JsonFuncExpr) Reset() { *x = JsonFuncExpr{} - mi := &file_pg_query_proto_msgTypes[128] + mi := &file_pg_query_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21187,7 +21603,7 @@ func (x *JsonFuncExpr) String() string { func (*JsonFuncExpr) ProtoMessage() {} func (x *JsonFuncExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[128] + mi := &file_pg_query_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21200,7 +21616,7 @@ func (x *JsonFuncExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonFuncExpr.ProtoReflect.Descriptor instead. func (*JsonFuncExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{128} + return file_pg_query_proto_rawDescGZIP(), []int{130} } func (x *JsonFuncExpr) GetOp() JsonExprOp { @@ -21292,7 +21708,7 @@ type JsonTablePathSpec struct { func (x *JsonTablePathSpec) Reset() { *x = JsonTablePathSpec{} - mi := &file_pg_query_proto_msgTypes[129] + mi := &file_pg_query_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21304,7 +21720,7 @@ func (x *JsonTablePathSpec) String() string { func (*JsonTablePathSpec) ProtoMessage() {} func (x *JsonTablePathSpec) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[129] + mi := &file_pg_query_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21317,7 +21733,7 @@ func (x *JsonTablePathSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonTablePathSpec.ProtoReflect.Descriptor instead. func (*JsonTablePathSpec) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{129} + return file_pg_query_proto_rawDescGZIP(), []int{131} } func (x *JsonTablePathSpec) GetString_() *Node { @@ -21364,7 +21780,7 @@ type JsonTable struct { func (x *JsonTable) Reset() { *x = JsonTable{} - mi := &file_pg_query_proto_msgTypes[130] + mi := &file_pg_query_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21376,7 +21792,7 @@ func (x *JsonTable) String() string { func (*JsonTable) ProtoMessage() {} func (x *JsonTable) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[130] + mi := &file_pg_query_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21389,7 +21805,7 @@ func (x *JsonTable) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonTable.ProtoReflect.Descriptor instead. func (*JsonTable) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{130} + return file_pg_query_proto_rawDescGZIP(), []int{132} } func (x *JsonTable) GetContextItem() *JsonValueExpr { @@ -21467,7 +21883,7 @@ type JsonTableColumn struct { func (x *JsonTableColumn) Reset() { *x = JsonTableColumn{} - mi := &file_pg_query_proto_msgTypes[131] + mi := &file_pg_query_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21479,7 +21895,7 @@ func (x *JsonTableColumn) String() string { func (*JsonTableColumn) ProtoMessage() {} func (x *JsonTableColumn) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[131] + mi := &file_pg_query_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21492,7 +21908,7 @@ func (x *JsonTableColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonTableColumn.ProtoReflect.Descriptor instead. func (*JsonTableColumn) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{131} + return file_pg_query_proto_rawDescGZIP(), []int{133} } func (x *JsonTableColumn) GetColtype() JsonTableColumnType { @@ -21582,7 +21998,7 @@ type JsonKeyValue struct { func (x *JsonKeyValue) Reset() { *x = JsonKeyValue{} - mi := &file_pg_query_proto_msgTypes[132] + mi := &file_pg_query_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21594,7 +22010,7 @@ func (x *JsonKeyValue) String() string { func (*JsonKeyValue) ProtoMessage() {} func (x *JsonKeyValue) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[132] + mi := &file_pg_query_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21607,7 +22023,7 @@ func (x *JsonKeyValue) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonKeyValue.ProtoReflect.Descriptor instead. func (*JsonKeyValue) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{132} + return file_pg_query_proto_rawDescGZIP(), []int{134} } func (x *JsonKeyValue) GetKey() *Node { @@ -21636,7 +22052,7 @@ type JsonParseExpr struct { func (x *JsonParseExpr) Reset() { *x = JsonParseExpr{} - mi := &file_pg_query_proto_msgTypes[133] + mi := &file_pg_query_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21648,7 +22064,7 @@ func (x *JsonParseExpr) String() string { func (*JsonParseExpr) ProtoMessage() {} func (x *JsonParseExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[133] + mi := &file_pg_query_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21661,7 +22077,7 @@ func (x *JsonParseExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonParseExpr.ProtoReflect.Descriptor instead. func (*JsonParseExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{133} + return file_pg_query_proto_rawDescGZIP(), []int{135} } func (x *JsonParseExpr) GetExpr() *JsonValueExpr { @@ -21703,7 +22119,7 @@ type JsonScalarExpr struct { func (x *JsonScalarExpr) Reset() { *x = JsonScalarExpr{} - mi := &file_pg_query_proto_msgTypes[134] + mi := &file_pg_query_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21715,7 +22131,7 @@ func (x *JsonScalarExpr) String() string { func (*JsonScalarExpr) ProtoMessage() {} func (x *JsonScalarExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[134] + mi := &file_pg_query_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21728,7 +22144,7 @@ func (x *JsonScalarExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonScalarExpr.ProtoReflect.Descriptor instead. func (*JsonScalarExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{134} + return file_pg_query_proto_rawDescGZIP(), []int{136} } func (x *JsonScalarExpr) GetExpr() *Node { @@ -21763,7 +22179,7 @@ type JsonSerializeExpr struct { func (x *JsonSerializeExpr) Reset() { *x = JsonSerializeExpr{} - mi := &file_pg_query_proto_msgTypes[135] + mi := &file_pg_query_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21775,7 +22191,7 @@ func (x *JsonSerializeExpr) String() string { func (*JsonSerializeExpr) ProtoMessage() {} func (x *JsonSerializeExpr) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[135] + mi := &file_pg_query_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21788,7 +22204,7 @@ func (x *JsonSerializeExpr) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonSerializeExpr.ProtoReflect.Descriptor instead. func (*JsonSerializeExpr) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{135} + return file_pg_query_proto_rawDescGZIP(), []int{137} } func (x *JsonSerializeExpr) GetExpr() *JsonValueExpr { @@ -21825,7 +22241,7 @@ type JsonObjectConstructor struct { func (x *JsonObjectConstructor) Reset() { *x = JsonObjectConstructor{} - mi := &file_pg_query_proto_msgTypes[136] + mi := &file_pg_query_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21837,7 +22253,7 @@ func (x *JsonObjectConstructor) String() string { func (*JsonObjectConstructor) ProtoMessage() {} func (x *JsonObjectConstructor) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[136] + mi := &file_pg_query_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21850,7 +22266,7 @@ func (x *JsonObjectConstructor) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonObjectConstructor.ProtoReflect.Descriptor instead. func (*JsonObjectConstructor) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{136} + return file_pg_query_proto_rawDescGZIP(), []int{138} } func (x *JsonObjectConstructor) GetExprs() []*Node { @@ -21900,7 +22316,7 @@ type JsonArrayConstructor struct { func (x *JsonArrayConstructor) Reset() { *x = JsonArrayConstructor{} - mi := &file_pg_query_proto_msgTypes[137] + mi := &file_pg_query_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21912,7 +22328,7 @@ func (x *JsonArrayConstructor) String() string { func (*JsonArrayConstructor) ProtoMessage() {} func (x *JsonArrayConstructor) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[137] + mi := &file_pg_query_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21925,7 +22341,7 @@ func (x *JsonArrayConstructor) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonArrayConstructor.ProtoReflect.Descriptor instead. func (*JsonArrayConstructor) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{137} + return file_pg_query_proto_rawDescGZIP(), []int{139} } func (x *JsonArrayConstructor) GetExprs() []*Node { @@ -21969,7 +22385,7 @@ type JsonArrayQueryConstructor struct { func (x *JsonArrayQueryConstructor) Reset() { *x = JsonArrayQueryConstructor{} - mi := &file_pg_query_proto_msgTypes[138] + mi := &file_pg_query_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21981,7 +22397,7 @@ func (x *JsonArrayQueryConstructor) String() string { func (*JsonArrayQueryConstructor) ProtoMessage() {} func (x *JsonArrayQueryConstructor) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[138] + mi := &file_pg_query_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21994,7 +22410,7 @@ func (x *JsonArrayQueryConstructor) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonArrayQueryConstructor.ProtoReflect.Descriptor instead. func (*JsonArrayQueryConstructor) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{138} + return file_pg_query_proto_rawDescGZIP(), []int{140} } func (x *JsonArrayQueryConstructor) GetQuery() *Node { @@ -22045,7 +22461,7 @@ type JsonAggConstructor struct { func (x *JsonAggConstructor) Reset() { *x = JsonAggConstructor{} - mi := &file_pg_query_proto_msgTypes[139] + mi := &file_pg_query_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22057,7 +22473,7 @@ func (x *JsonAggConstructor) String() string { func (*JsonAggConstructor) ProtoMessage() {} func (x *JsonAggConstructor) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[139] + mi := &file_pg_query_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22070,7 +22486,7 @@ func (x *JsonAggConstructor) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonAggConstructor.ProtoReflect.Descriptor instead. func (*JsonAggConstructor) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{139} + return file_pg_query_proto_rawDescGZIP(), []int{141} } func (x *JsonAggConstructor) GetOutput() *JsonOutput { @@ -22120,7 +22536,7 @@ type JsonObjectAgg struct { func (x *JsonObjectAgg) Reset() { *x = JsonObjectAgg{} - mi := &file_pg_query_proto_msgTypes[140] + mi := &file_pg_query_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22132,7 +22548,7 @@ func (x *JsonObjectAgg) String() string { func (*JsonObjectAgg) ProtoMessage() {} func (x *JsonObjectAgg) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[140] + mi := &file_pg_query_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22145,7 +22561,7 @@ func (x *JsonObjectAgg) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonObjectAgg.ProtoReflect.Descriptor instead. func (*JsonObjectAgg) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{140} + return file_pg_query_proto_rawDescGZIP(), []int{142} } func (x *JsonObjectAgg) GetConstructor() *JsonAggConstructor { @@ -22187,7 +22603,7 @@ type JsonArrayAgg struct { func (x *JsonArrayAgg) Reset() { *x = JsonArrayAgg{} - mi := &file_pg_query_proto_msgTypes[141] + mi := &file_pg_query_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22199,7 +22615,7 @@ func (x *JsonArrayAgg) String() string { func (*JsonArrayAgg) ProtoMessage() {} func (x *JsonArrayAgg) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[141] + mi := &file_pg_query_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22212,7 +22628,7 @@ func (x *JsonArrayAgg) ProtoReflect() protoreflect.Message { // Deprecated: Use JsonArrayAgg.ProtoReflect.Descriptor instead. func (*JsonArrayAgg) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{141} + return file_pg_query_proto_rawDescGZIP(), []int{143} } func (x *JsonArrayAgg) GetConstructor() *JsonAggConstructor { @@ -22247,7 +22663,7 @@ type RawStmt struct { func (x *RawStmt) Reset() { *x = RawStmt{} - mi := &file_pg_query_proto_msgTypes[142] + mi := &file_pg_query_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22259,7 +22675,7 @@ func (x *RawStmt) String() string { func (*RawStmt) ProtoMessage() {} func (x *RawStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[142] + mi := &file_pg_query_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22272,7 +22688,7 @@ func (x *RawStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use RawStmt.ProtoReflect.Descriptor instead. func (*RawStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{142} + return file_pg_query_proto_rawDescGZIP(), []int{144} } func (x *RawStmt) GetStmt() *Node { @@ -22302,7 +22718,7 @@ type InsertStmt struct { 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"` - ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,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 @@ -22311,7 +22727,7 @@ type InsertStmt struct { func (x *InsertStmt) Reset() { *x = InsertStmt{} - mi := &file_pg_query_proto_msgTypes[143] + mi := &file_pg_query_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22323,7 +22739,7 @@ func (x *InsertStmt) String() string { func (*InsertStmt) ProtoMessage() {} func (x *InsertStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[143] + mi := &file_pg_query_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22336,7 +22752,7 @@ func (x *InsertStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use InsertStmt.ProtoReflect.Descriptor instead. func (*InsertStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{143} + return file_pg_query_proto_rawDescGZIP(), []int{145} } func (x *InsertStmt) GetRelation() *RangeVar { @@ -22367,9 +22783,9 @@ func (x *InsertStmt) GetOnConflictClause() *OnConflictClause { return nil } -func (x *InsertStmt) GetReturningList() []*Node { +func (x *InsertStmt) GetReturningClause() *ReturningClause { if x != nil { - return x.ReturningList + return x.ReturningClause } return nil } @@ -22389,19 +22805,19 @@ func (x *InsertStmt) GetOverride() OverridingKind { } 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"` - ReturningList []*Node `protobuf:"bytes,4,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` - WithClause *WithClause `protobuf:"bytes,5,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + 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[144] + mi := &file_pg_query_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22413,7 +22829,7 @@ func (x *DeleteStmt) String() string { func (*DeleteStmt) ProtoMessage() {} func (x *DeleteStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[144] + mi := &file_pg_query_proto_msgTypes[146] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22426,7 +22842,7 @@ func (x *DeleteStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteStmt.ProtoReflect.Descriptor instead. func (*DeleteStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{144} + return file_pg_query_proto_rawDescGZIP(), []int{146} } func (x *DeleteStmt) GetRelation() *RangeVar { @@ -22450,9 +22866,9 @@ func (x *DeleteStmt) GetWhereClause() *Node { return nil } -func (x *DeleteStmt) GetReturningList() []*Node { +func (x *DeleteStmt) GetReturningClause() *ReturningClause { if x != nil { - return x.ReturningList + return x.ReturningClause } return nil } @@ -22465,20 +22881,20 @@ func (x *DeleteStmt) GetWithClause() *WithClause { } 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"` - ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,omitempty"` - WithClause *WithClause `protobuf:"bytes,6,opt,name=with_clause,json=withClause,proto3" json:"with_clause,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + 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[145] + mi := &file_pg_query_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22490,7 +22906,7 @@ func (x *UpdateStmt) String() string { func (*UpdateStmt) ProtoMessage() {} func (x *UpdateStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[145] + mi := &file_pg_query_proto_msgTypes[147] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22503,7 +22919,7 @@ func (x *UpdateStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateStmt.ProtoReflect.Descriptor instead. func (*UpdateStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{145} + return file_pg_query_proto_rawDescGZIP(), []int{147} } func (x *UpdateStmt) GetRelation() *RangeVar { @@ -22534,9 +22950,9 @@ func (x *UpdateStmt) GetFromClause() []*Node { return nil } -func (x *UpdateStmt) GetReturningList() []*Node { +func (x *UpdateStmt) GetReturningClause() *ReturningClause { if x != nil { - return x.ReturningList + return x.ReturningClause } return nil } @@ -22554,7 +22970,7 @@ type MergeStmt struct { 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"` - ReturningList []*Node `protobuf:"bytes,5,rep,name=returning_list,json=returningList,proto3" json:"returning_list,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 @@ -22562,7 +22978,7 @@ type MergeStmt struct { func (x *MergeStmt) Reset() { *x = MergeStmt{} - mi := &file_pg_query_proto_msgTypes[146] + mi := &file_pg_query_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22574,7 +22990,7 @@ func (x *MergeStmt) String() string { func (*MergeStmt) ProtoMessage() {} func (x *MergeStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[146] + mi := &file_pg_query_proto_msgTypes[148] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22587,7 +23003,7 @@ func (x *MergeStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use MergeStmt.ProtoReflect.Descriptor instead. func (*MergeStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{146} + return file_pg_query_proto_rawDescGZIP(), []int{148} } func (x *MergeStmt) GetRelation() *RangeVar { @@ -22618,9 +23034,9 @@ func (x *MergeStmt) GetMergeWhenClauses() []*Node { return nil } -func (x *MergeStmt) GetReturningList() []*Node { +func (x *MergeStmt) GetReturningClause() *ReturningClause { if x != nil { - return x.ReturningList + return x.ReturningClause } return nil } @@ -22660,7 +23076,7 @@ type SelectStmt struct { func (x *SelectStmt) Reset() { *x = SelectStmt{} - mi := &file_pg_query_proto_msgTypes[147] + mi := &file_pg_query_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22672,7 +23088,7 @@ func (x *SelectStmt) String() string { func (*SelectStmt) ProtoMessage() {} func (x *SelectStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[147] + mi := &file_pg_query_proto_msgTypes[149] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22685,7 +23101,7 @@ func (x *SelectStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use SelectStmt.ProtoReflect.Descriptor instead. func (*SelectStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{147} + return file_pg_query_proto_rawDescGZIP(), []int{149} } func (x *SelectStmt) GetDistinctClause() []*Node { @@ -22844,7 +23260,7 @@ type SetOperationStmt struct { func (x *SetOperationStmt) Reset() { *x = SetOperationStmt{} - mi := &file_pg_query_proto_msgTypes[148] + mi := &file_pg_query_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22856,7 +23272,7 @@ func (x *SetOperationStmt) String() string { func (*SetOperationStmt) ProtoMessage() {} func (x *SetOperationStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[148] + mi := &file_pg_query_proto_msgTypes[150] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22869,7 +23285,7 @@ func (x *SetOperationStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use SetOperationStmt.ProtoReflect.Descriptor instead. func (*SetOperationStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{148} + return file_pg_query_proto_rawDescGZIP(), []int{150} } func (x *SetOperationStmt) GetOp() SetOperation { @@ -22937,7 +23353,7 @@ type ReturnStmt struct { func (x *ReturnStmt) Reset() { *x = ReturnStmt{} - mi := &file_pg_query_proto_msgTypes[149] + mi := &file_pg_query_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22949,7 +23365,7 @@ func (x *ReturnStmt) String() string { func (*ReturnStmt) ProtoMessage() {} func (x *ReturnStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[149] + mi := &file_pg_query_proto_msgTypes[151] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22962,7 +23378,7 @@ func (x *ReturnStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ReturnStmt.ProtoReflect.Descriptor instead. func (*ReturnStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{149} + return file_pg_query_proto_rawDescGZIP(), []int{151} } func (x *ReturnStmt) GetReturnval() *Node { @@ -22985,7 +23401,7 @@ type PLAssignStmt struct { func (x *PLAssignStmt) Reset() { *x = PLAssignStmt{} - mi := &file_pg_query_proto_msgTypes[150] + mi := &file_pg_query_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22997,7 +23413,7 @@ func (x *PLAssignStmt) String() string { func (*PLAssignStmt) ProtoMessage() {} func (x *PLAssignStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[150] + mi := &file_pg_query_proto_msgTypes[152] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23010,7 +23426,7 @@ func (x *PLAssignStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use PLAssignStmt.ProtoReflect.Descriptor instead. func (*PLAssignStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{150} + return file_pg_query_proto_rawDescGZIP(), []int{152} } func (x *PLAssignStmt) GetName() string { @@ -23060,7 +23476,7 @@ type CreateSchemaStmt struct { func (x *CreateSchemaStmt) Reset() { *x = CreateSchemaStmt{} - mi := &file_pg_query_proto_msgTypes[151] + mi := &file_pg_query_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23072,7 +23488,7 @@ func (x *CreateSchemaStmt) String() string { func (*CreateSchemaStmt) ProtoMessage() {} func (x *CreateSchemaStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[151] + mi := &file_pg_query_proto_msgTypes[153] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23085,7 +23501,7 @@ func (x *CreateSchemaStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSchemaStmt.ProtoReflect.Descriptor instead. func (*CreateSchemaStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{151} + return file_pg_query_proto_rawDescGZIP(), []int{153} } func (x *CreateSchemaStmt) GetSchemaname() string { @@ -23128,7 +23544,7 @@ type AlterTableStmt struct { func (x *AlterTableStmt) Reset() { *x = AlterTableStmt{} - mi := &file_pg_query_proto_msgTypes[152] + mi := &file_pg_query_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23140,7 +23556,7 @@ func (x *AlterTableStmt) String() string { func (*AlterTableStmt) ProtoMessage() {} func (x *AlterTableStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[152] + mi := &file_pg_query_proto_msgTypes[154] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23153,7 +23569,7 @@ func (x *AlterTableStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTableStmt.ProtoReflect.Descriptor instead. func (*AlterTableStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{152} + return file_pg_query_proto_rawDescGZIP(), []int{154} } func (x *AlterTableStmt) GetRelation() *RangeVar { @@ -23184,58 +23600,6 @@ func (x *AlterTableStmt) GetMissingOk() bool { 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[153] - 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[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 ReplicaIdentityStmt.ProtoReflect.Descriptor instead. -func (*ReplicaIdentityStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{153} -} - -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 AlterTableCmd struct { state protoimpl.MessageState `protogen:"open.v1"` Subtype AlterTableType `protobuf:"varint,1,opt,name=subtype,proto3,enum=pg_query.AlterTableType" json:"subtype,omitempty"` @@ -23252,7 +23616,7 @@ type AlterTableCmd struct { func (x *AlterTableCmd) Reset() { *x = AlterTableCmd{} - mi := &file_pg_query_proto_msgTypes[154] + mi := &file_pg_query_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23264,7 +23628,7 @@ func (x *AlterTableCmd) String() string { func (*AlterTableCmd) ProtoMessage() {} func (x *AlterTableCmd) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[154] + mi := &file_pg_query_proto_msgTypes[155] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23277,7 +23641,7 @@ func (x *AlterTableCmd) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTableCmd.ProtoReflect.Descriptor instead. func (*AlterTableCmd) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{154} + return file_pg_query_proto_rawDescGZIP(), []int{155} } func (x *AlterTableCmd) GetSubtype() AlterTableType { @@ -23336,6 +23700,158 @@ func (x *AlterTableCmd) GetRecurse() bool { 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"` @@ -23345,7 +23861,7 @@ type AlterCollationStmt struct { func (x *AlterCollationStmt) Reset() { *x = AlterCollationStmt{} - mi := &file_pg_query_proto_msgTypes[155] + mi := &file_pg_query_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23357,7 +23873,7 @@ func (x *AlterCollationStmt) String() string { func (*AlterCollationStmt) ProtoMessage() {} func (x *AlterCollationStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[155] + mi := &file_pg_query_proto_msgTypes[158] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23370,7 +23886,7 @@ func (x *AlterCollationStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterCollationStmt.ProtoReflect.Descriptor instead. func (*AlterCollationStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{155} + return file_pg_query_proto_rawDescGZIP(), []int{158} } func (x *AlterCollationStmt) GetCollname() []*Node { @@ -23394,7 +23910,7 @@ type AlterDomainStmt struct { func (x *AlterDomainStmt) Reset() { *x = AlterDomainStmt{} - mi := &file_pg_query_proto_msgTypes[156] + mi := &file_pg_query_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23406,7 +23922,7 @@ func (x *AlterDomainStmt) String() string { func (*AlterDomainStmt) ProtoMessage() {} func (x *AlterDomainStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[156] + mi := &file_pg_query_proto_msgTypes[159] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23419,7 +23935,7 @@ func (x *AlterDomainStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterDomainStmt.ProtoReflect.Descriptor instead. func (*AlterDomainStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{156} + return file_pg_query_proto_rawDescGZIP(), []int{159} } func (x *AlterDomainStmt) GetSubtype() string { @@ -23481,7 +23997,7 @@ type GrantStmt struct { func (x *GrantStmt) Reset() { *x = GrantStmt{} - mi := &file_pg_query_proto_msgTypes[157] + mi := &file_pg_query_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23493,7 +24009,7 @@ func (x *GrantStmt) String() string { func (*GrantStmt) ProtoMessage() {} func (x *GrantStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[157] + mi := &file_pg_query_proto_msgTypes[160] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23506,7 +24022,7 @@ func (x *GrantStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use GrantStmt.ProtoReflect.Descriptor instead. func (*GrantStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{157} + return file_pg_query_proto_rawDescGZIP(), []int{160} } func (x *GrantStmt) GetIsGrant() bool { @@ -23584,7 +24100,7 @@ type ObjectWithArgs struct { func (x *ObjectWithArgs) Reset() { *x = ObjectWithArgs{} - mi := &file_pg_query_proto_msgTypes[158] + mi := &file_pg_query_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23596,7 +24112,7 @@ func (x *ObjectWithArgs) String() string { func (*ObjectWithArgs) ProtoMessage() {} func (x *ObjectWithArgs) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[158] + mi := &file_pg_query_proto_msgTypes[161] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23609,7 +24125,7 @@ func (x *ObjectWithArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use ObjectWithArgs.ProtoReflect.Descriptor instead. func (*ObjectWithArgs) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{158} + return file_pg_query_proto_rawDescGZIP(), []int{161} } func (x *ObjectWithArgs) GetObjname() []*Node { @@ -23650,7 +24166,7 @@ type AccessPriv struct { func (x *AccessPriv) Reset() { *x = AccessPriv{} - mi := &file_pg_query_proto_msgTypes[159] + mi := &file_pg_query_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23662,7 +24178,7 @@ func (x *AccessPriv) String() string { func (*AccessPriv) ProtoMessage() {} func (x *AccessPriv) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[159] + mi := &file_pg_query_proto_msgTypes[162] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23675,7 +24191,7 @@ func (x *AccessPriv) ProtoReflect() protoreflect.Message { // Deprecated: Use AccessPriv.ProtoReflect.Descriptor instead. func (*AccessPriv) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{159} + return file_pg_query_proto_rawDescGZIP(), []int{162} } func (x *AccessPriv) GetPrivName() string { @@ -23706,7 +24222,7 @@ type GrantRoleStmt struct { func (x *GrantRoleStmt) Reset() { *x = GrantRoleStmt{} - mi := &file_pg_query_proto_msgTypes[160] + mi := &file_pg_query_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23718,7 +24234,7 @@ func (x *GrantRoleStmt) String() string { func (*GrantRoleStmt) ProtoMessage() {} func (x *GrantRoleStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[160] + mi := &file_pg_query_proto_msgTypes[163] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23731,7 +24247,7 @@ func (x *GrantRoleStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use GrantRoleStmt.ProtoReflect.Descriptor instead. func (*GrantRoleStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{160} + return file_pg_query_proto_rawDescGZIP(), []int{163} } func (x *GrantRoleStmt) GetGrantedRoles() []*Node { @@ -23786,7 +24302,7 @@ type AlterDefaultPrivilegesStmt struct { func (x *AlterDefaultPrivilegesStmt) Reset() { *x = AlterDefaultPrivilegesStmt{} - mi := &file_pg_query_proto_msgTypes[161] + mi := &file_pg_query_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23798,7 +24314,7 @@ func (x *AlterDefaultPrivilegesStmt) String() string { func (*AlterDefaultPrivilegesStmt) ProtoMessage() {} func (x *AlterDefaultPrivilegesStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[161] + mi := &file_pg_query_proto_msgTypes[164] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23811,7 +24327,7 @@ func (x *AlterDefaultPrivilegesStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterDefaultPrivilegesStmt.ProtoReflect.Descriptor instead. func (*AlterDefaultPrivilegesStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{161} + return file_pg_query_proto_rawDescGZIP(), []int{164} } func (x *AlterDefaultPrivilegesStmt) GetOptions() []*Node { @@ -23844,7 +24360,7 @@ type CopyStmt struct { func (x *CopyStmt) Reset() { *x = CopyStmt{} - mi := &file_pg_query_proto_msgTypes[162] + mi := &file_pg_query_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23856,7 +24372,7 @@ func (x *CopyStmt) String() string { func (*CopyStmt) ProtoMessage() {} func (x *CopyStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[162] + mi := &file_pg_query_proto_msgTypes[165] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23869,7 +24385,7 @@ func (x *CopyStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyStmt.ProtoReflect.Descriptor instead. func (*CopyStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{162} + return file_pg_query_proto_rawDescGZIP(), []int{165} } func (x *CopyStmt) GetRelation() *RangeVar { @@ -23933,14 +24449,16 @@ type VariableSetStmt struct { 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"` - IsLocal bool `protobuf:"varint,4,opt,name=is_local,proto3" json:"is_local,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[163] + mi := &file_pg_query_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23952,7 +24470,7 @@ func (x *VariableSetStmt) String() string { func (*VariableSetStmt) ProtoMessage() {} func (x *VariableSetStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[163] + mi := &file_pg_query_proto_msgTypes[166] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23965,7 +24483,7 @@ func (x *VariableSetStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use VariableSetStmt.ProtoReflect.Descriptor instead. func (*VariableSetStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{163} + return file_pg_query_proto_rawDescGZIP(), []int{166} } func (x *VariableSetStmt) GetKind() VariableSetKind { @@ -23989,6 +24507,13 @@ func (x *VariableSetStmt) GetArgs() []*Node { 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 @@ -23996,6 +24521,13 @@ func (x *VariableSetStmt) GetIsLocal() bool { 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"` @@ -24005,7 +24537,7 @@ type VariableShowStmt struct { func (x *VariableShowStmt) Reset() { *x = VariableShowStmt{} - mi := &file_pg_query_proto_msgTypes[164] + mi := &file_pg_query_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24017,7 +24549,7 @@ func (x *VariableShowStmt) String() string { func (*VariableShowStmt) ProtoMessage() {} func (x *VariableShowStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[164] + mi := &file_pg_query_proto_msgTypes[167] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24030,7 +24562,7 @@ func (x *VariableShowStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use VariableShowStmt.ProtoReflect.Descriptor instead. func (*VariableShowStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{164} + return file_pg_query_proto_rawDescGZIP(), []int{167} } func (x *VariableShowStmt) GetName() string { @@ -24049,18 +24581,19 @@ type CreateStmt struct { 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"` - Options []*Node `protobuf:"bytes,8,rep,name=options,proto3" json:"options,omitempty"` - Oncommit OnCommitAction `protobuf:"varint,9,opt,name=oncommit,proto3,enum=pg_query.OnCommitAction" json:"oncommit,omitempty"` - Tablespacename string `protobuf:"bytes,10,opt,name=tablespacename,proto3" json:"tablespacename,omitempty"` - AccessMethod string `protobuf:"bytes,11,opt,name=access_method,json=accessMethod,proto3" json:"access_method,omitempty"` - IfNotExists bool `protobuf:"varint,12,opt,name=if_not_exists,proto3" json:"if_not_exists,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[165] + mi := &file_pg_query_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24072,7 +24605,7 @@ func (x *CreateStmt) String() string { func (*CreateStmt) ProtoMessage() {} func (x *CreateStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[165] + mi := &file_pg_query_proto_msgTypes[168] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24085,7 +24618,7 @@ func (x *CreateStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateStmt.ProtoReflect.Descriptor instead. func (*CreateStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{165} + return file_pg_query_proto_rawDescGZIP(), []int{168} } func (x *CreateStmt) GetRelation() *RangeVar { @@ -24137,6 +24670,13 @@ func (x *CreateStmt) GetConstraints() []*Node { 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 @@ -24178,40 +24718,44 @@ type Constraint struct { 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"` - SkipValidation bool `protobuf:"varint,5,opt,name=skip_validation,proto3" json:"skip_validation,omitempty"` - InitiallyValid bool `protobuf:"varint,6,opt,name=initially_valid,proto3" json:"initially_valid,omitempty"` - IsNoInherit bool `protobuf:"varint,7,opt,name=is_no_inherit,proto3" json:"is_no_inherit,omitempty"` - RawExpr *Node `protobuf:"bytes,8,opt,name=raw_expr,proto3" json:"raw_expr,omitempty"` - CookedExpr string `protobuf:"bytes,9,opt,name=cooked_expr,proto3" json:"cooked_expr,omitempty"` - GeneratedWhen string `protobuf:"bytes,10,opt,name=generated_when,proto3" json:"generated_when,omitempty"` - Inhcount int32 `protobuf:"varint,11,opt,name=inhcount,proto3" json:"inhcount,omitempty"` - NullsNotDistinct bool `protobuf:"varint,12,opt,name=nulls_not_distinct,proto3" json:"nulls_not_distinct,omitempty"` - Keys []*Node `protobuf:"bytes,13,rep,name=keys,proto3" json:"keys,omitempty"` - Including []*Node `protobuf:"bytes,14,rep,name=including,proto3" json:"including,omitempty"` - Exclusions []*Node `protobuf:"bytes,15,rep,name=exclusions,proto3" json:"exclusions,omitempty"` - Options []*Node `protobuf:"bytes,16,rep,name=options,proto3" json:"options,omitempty"` - Indexname string `protobuf:"bytes,17,opt,name=indexname,proto3" json:"indexname,omitempty"` - Indexspace string `protobuf:"bytes,18,opt,name=indexspace,proto3" json:"indexspace,omitempty"` - ResetDefaultTblspc bool `protobuf:"varint,19,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,omitempty"` - AccessMethod string `protobuf:"bytes,20,opt,name=access_method,proto3" json:"access_method,omitempty"` - WhereClause *Node `protobuf:"bytes,21,opt,name=where_clause,proto3" json:"where_clause,omitempty"` - Pktable *RangeVar `protobuf:"bytes,22,opt,name=pktable,proto3" json:"pktable,omitempty"` - FkAttrs []*Node `protobuf:"bytes,23,rep,name=fk_attrs,proto3" json:"fk_attrs,omitempty"` - PkAttrs []*Node `protobuf:"bytes,24,rep,name=pk_attrs,proto3" json:"pk_attrs,omitempty"` - FkMatchtype string `protobuf:"bytes,25,opt,name=fk_matchtype,proto3" json:"fk_matchtype,omitempty"` - FkUpdAction string `protobuf:"bytes,26,opt,name=fk_upd_action,proto3" json:"fk_upd_action,omitempty"` - FkDelAction string `protobuf:"bytes,27,opt,name=fk_del_action,proto3" json:"fk_del_action,omitempty"` - FkDelSetCols []*Node `protobuf:"bytes,28,rep,name=fk_del_set_cols,proto3" json:"fk_del_set_cols,omitempty"` - OldConpfeqop []*Node `protobuf:"bytes,29,rep,name=old_conpfeqop,proto3" json:"old_conpfeqop,omitempty"` - OldPktableOid uint32 `protobuf:"varint,30,opt,name=old_pktable_oid,proto3" json:"old_pktable_oid,omitempty"` - Location int32 `protobuf:"varint,31,opt,name=location,proto3" json:"location,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[166] + mi := &file_pg_query_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24223,7 +24767,7 @@ func (x *Constraint) String() string { func (*Constraint) ProtoMessage() {} func (x *Constraint) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[166] + mi := &file_pg_query_proto_msgTypes[169] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24236,7 +24780,7 @@ func (x *Constraint) ProtoReflect() protoreflect.Message { // Deprecated: Use Constraint.ProtoReflect.Descriptor instead. func (*Constraint) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{166} + return file_pg_query_proto_rawDescGZIP(), []int{169} } func (x *Constraint) GetContype() ConstrType { @@ -24267,6 +24811,13 @@ func (x *Constraint) GetInitdeferred() bool { 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 @@ -24309,11 +24860,11 @@ func (x *Constraint) GetGeneratedWhen() string { return "" } -func (x *Constraint) GetInhcount() int32 { +func (x *Constraint) GetGeneratedKind() string { if x != nil { - return x.Inhcount + return x.GeneratedKind } - return 0 + return "" } func (x *Constraint) GetNullsNotDistinct() bool { @@ -24330,6 +24881,13 @@ func (x *Constraint) GetKeys() []*Node { 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 @@ -24407,6 +24965,20 @@ func (x *Constraint) GetPkAttrs() []*Node { 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 @@ -24468,7 +25040,7 @@ type CreateTableSpaceStmt struct { func (x *CreateTableSpaceStmt) Reset() { *x = CreateTableSpaceStmt{} - mi := &file_pg_query_proto_msgTypes[167] + mi := &file_pg_query_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24480,7 +25052,7 @@ func (x *CreateTableSpaceStmt) String() string { func (*CreateTableSpaceStmt) ProtoMessage() {} func (x *CreateTableSpaceStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[167] + mi := &file_pg_query_proto_msgTypes[170] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24493,7 +25065,7 @@ func (x *CreateTableSpaceStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTableSpaceStmt.ProtoReflect.Descriptor instead. func (*CreateTableSpaceStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{167} + return file_pg_query_proto_rawDescGZIP(), []int{170} } func (x *CreateTableSpaceStmt) GetTablespacename() string { @@ -24534,7 +25106,7 @@ type DropTableSpaceStmt struct { func (x *DropTableSpaceStmt) Reset() { *x = DropTableSpaceStmt{} - mi := &file_pg_query_proto_msgTypes[168] + mi := &file_pg_query_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24546,7 +25118,7 @@ func (x *DropTableSpaceStmt) String() string { func (*DropTableSpaceStmt) ProtoMessage() {} func (x *DropTableSpaceStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[168] + mi := &file_pg_query_proto_msgTypes[171] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24559,7 +25131,7 @@ func (x *DropTableSpaceStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropTableSpaceStmt.ProtoReflect.Descriptor instead. func (*DropTableSpaceStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{168} + return file_pg_query_proto_rawDescGZIP(), []int{171} } func (x *DropTableSpaceStmt) GetTablespacename() string { @@ -24587,7 +25159,7 @@ type AlterTableSpaceOptionsStmt struct { func (x *AlterTableSpaceOptionsStmt) Reset() { *x = AlterTableSpaceOptionsStmt{} - mi := &file_pg_query_proto_msgTypes[169] + mi := &file_pg_query_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24599,7 +25171,7 @@ func (x *AlterTableSpaceOptionsStmt) String() string { func (*AlterTableSpaceOptionsStmt) ProtoMessage() {} func (x *AlterTableSpaceOptionsStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[169] + mi := &file_pg_query_proto_msgTypes[172] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24612,7 +25184,7 @@ func (x *AlterTableSpaceOptionsStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTableSpaceOptionsStmt.ProtoReflect.Descriptor instead. func (*AlterTableSpaceOptionsStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{169} + return file_pg_query_proto_rawDescGZIP(), []int{172} } func (x *AlterTableSpaceOptionsStmt) GetTablespacename() string { @@ -24649,7 +25221,7 @@ type AlterTableMoveAllStmt struct { func (x *AlterTableMoveAllStmt) Reset() { *x = AlterTableMoveAllStmt{} - mi := &file_pg_query_proto_msgTypes[170] + mi := &file_pg_query_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24661,7 +25233,7 @@ func (x *AlterTableMoveAllStmt) String() string { func (*AlterTableMoveAllStmt) ProtoMessage() {} func (x *AlterTableMoveAllStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[170] + mi := &file_pg_query_proto_msgTypes[173] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24674,7 +25246,7 @@ func (x *AlterTableMoveAllStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTableMoveAllStmt.ProtoReflect.Descriptor instead. func (*AlterTableMoveAllStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{170} + return file_pg_query_proto_rawDescGZIP(), []int{173} } func (x *AlterTableMoveAllStmt) GetOrigTablespacename() string { @@ -24723,7 +25295,7 @@ type CreateExtensionStmt struct { func (x *CreateExtensionStmt) Reset() { *x = CreateExtensionStmt{} - mi := &file_pg_query_proto_msgTypes[171] + mi := &file_pg_query_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24735,7 +25307,7 @@ func (x *CreateExtensionStmt) String() string { func (*CreateExtensionStmt) ProtoMessage() {} func (x *CreateExtensionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[171] + mi := &file_pg_query_proto_msgTypes[174] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24748,7 +25320,7 @@ func (x *CreateExtensionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateExtensionStmt.ProtoReflect.Descriptor instead. func (*CreateExtensionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{171} + return file_pg_query_proto_rawDescGZIP(), []int{174} } func (x *CreateExtensionStmt) GetExtname() string { @@ -24782,7 +25354,7 @@ type AlterExtensionStmt struct { func (x *AlterExtensionStmt) Reset() { *x = AlterExtensionStmt{} - mi := &file_pg_query_proto_msgTypes[172] + mi := &file_pg_query_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24794,7 +25366,7 @@ func (x *AlterExtensionStmt) String() string { func (*AlterExtensionStmt) ProtoMessage() {} func (x *AlterExtensionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[172] + mi := &file_pg_query_proto_msgTypes[175] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24807,7 +25379,7 @@ func (x *AlterExtensionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterExtensionStmt.ProtoReflect.Descriptor instead. func (*AlterExtensionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{172} + return file_pg_query_proto_rawDescGZIP(), []int{175} } func (x *AlterExtensionStmt) GetExtname() string { @@ -24836,7 +25408,7 @@ type AlterExtensionContentsStmt struct { func (x *AlterExtensionContentsStmt) Reset() { *x = AlterExtensionContentsStmt{} - mi := &file_pg_query_proto_msgTypes[173] + mi := &file_pg_query_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24848,7 +25420,7 @@ func (x *AlterExtensionContentsStmt) String() string { func (*AlterExtensionContentsStmt) ProtoMessage() {} func (x *AlterExtensionContentsStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[173] + mi := &file_pg_query_proto_msgTypes[176] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24861,7 +25433,7 @@ func (x *AlterExtensionContentsStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterExtensionContentsStmt.ProtoReflect.Descriptor instead. func (*AlterExtensionContentsStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{173} + return file_pg_query_proto_rawDescGZIP(), []int{176} } func (x *AlterExtensionContentsStmt) GetExtname() string { @@ -24903,7 +25475,7 @@ type CreateFdwStmt struct { func (x *CreateFdwStmt) Reset() { *x = CreateFdwStmt{} - mi := &file_pg_query_proto_msgTypes[174] + mi := &file_pg_query_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24915,7 +25487,7 @@ func (x *CreateFdwStmt) String() string { func (*CreateFdwStmt) ProtoMessage() {} func (x *CreateFdwStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[174] + mi := &file_pg_query_proto_msgTypes[177] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24928,7 +25500,7 @@ func (x *CreateFdwStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFdwStmt.ProtoReflect.Descriptor instead. func (*CreateFdwStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{174} + return file_pg_query_proto_rawDescGZIP(), []int{177} } func (x *CreateFdwStmt) GetFdwname() string { @@ -24963,7 +25535,7 @@ type AlterFdwStmt struct { func (x *AlterFdwStmt) Reset() { *x = AlterFdwStmt{} - mi := &file_pg_query_proto_msgTypes[175] + mi := &file_pg_query_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24975,7 +25547,7 @@ func (x *AlterFdwStmt) String() string { func (*AlterFdwStmt) ProtoMessage() {} func (x *AlterFdwStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[175] + mi := &file_pg_query_proto_msgTypes[178] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24988,7 +25560,7 @@ func (x *AlterFdwStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterFdwStmt.ProtoReflect.Descriptor instead. func (*AlterFdwStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{175} + return file_pg_query_proto_rawDescGZIP(), []int{178} } func (x *AlterFdwStmt) GetFdwname() string { @@ -25026,7 +25598,7 @@ type CreateForeignServerStmt struct { func (x *CreateForeignServerStmt) Reset() { *x = CreateForeignServerStmt{} - mi := &file_pg_query_proto_msgTypes[176] + mi := &file_pg_query_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25038,7 +25610,7 @@ func (x *CreateForeignServerStmt) String() string { func (*CreateForeignServerStmt) ProtoMessage() {} func (x *CreateForeignServerStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[176] + mi := &file_pg_query_proto_msgTypes[179] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25051,7 +25623,7 @@ func (x *CreateForeignServerStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateForeignServerStmt.ProtoReflect.Descriptor instead. func (*CreateForeignServerStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{176} + return file_pg_query_proto_rawDescGZIP(), []int{179} } func (x *CreateForeignServerStmt) GetServername() string { @@ -25108,7 +25680,7 @@ type AlterForeignServerStmt struct { func (x *AlterForeignServerStmt) Reset() { *x = AlterForeignServerStmt{} - mi := &file_pg_query_proto_msgTypes[177] + mi := &file_pg_query_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25120,7 +25692,7 @@ func (x *AlterForeignServerStmt) String() string { func (*AlterForeignServerStmt) ProtoMessage() {} func (x *AlterForeignServerStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[177] + mi := &file_pg_query_proto_msgTypes[180] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25133,7 +25705,7 @@ func (x *AlterForeignServerStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterForeignServerStmt.ProtoReflect.Descriptor instead. func (*AlterForeignServerStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{177} + return file_pg_query_proto_rawDescGZIP(), []int{180} } func (x *AlterForeignServerStmt) GetServername() string { @@ -25175,7 +25747,7 @@ type CreateForeignTableStmt struct { func (x *CreateForeignTableStmt) Reset() { *x = CreateForeignTableStmt{} - mi := &file_pg_query_proto_msgTypes[178] + mi := &file_pg_query_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25187,7 +25759,7 @@ func (x *CreateForeignTableStmt) String() string { func (*CreateForeignTableStmt) ProtoMessage() {} func (x *CreateForeignTableStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[178] + mi := &file_pg_query_proto_msgTypes[181] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25200,7 +25772,7 @@ func (x *CreateForeignTableStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateForeignTableStmt.ProtoReflect.Descriptor instead. func (*CreateForeignTableStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{178} + return file_pg_query_proto_rawDescGZIP(), []int{181} } func (x *CreateForeignTableStmt) GetBaseStmt() *CreateStmt { @@ -25236,7 +25808,7 @@ type CreateUserMappingStmt struct { func (x *CreateUserMappingStmt) Reset() { *x = CreateUserMappingStmt{} - mi := &file_pg_query_proto_msgTypes[179] + mi := &file_pg_query_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25248,7 +25820,7 @@ func (x *CreateUserMappingStmt) String() string { func (*CreateUserMappingStmt) ProtoMessage() {} func (x *CreateUserMappingStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[179] + mi := &file_pg_query_proto_msgTypes[182] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25261,7 +25833,7 @@ func (x *CreateUserMappingStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserMappingStmt.ProtoReflect.Descriptor instead. func (*CreateUserMappingStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{179} + return file_pg_query_proto_rawDescGZIP(), []int{182} } func (x *CreateUserMappingStmt) GetUser() *RoleSpec { @@ -25303,7 +25875,7 @@ type AlterUserMappingStmt struct { func (x *AlterUserMappingStmt) Reset() { *x = AlterUserMappingStmt{} - mi := &file_pg_query_proto_msgTypes[180] + mi := &file_pg_query_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25315,7 +25887,7 @@ func (x *AlterUserMappingStmt) String() string { func (*AlterUserMappingStmt) ProtoMessage() {} func (x *AlterUserMappingStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[180] + mi := &file_pg_query_proto_msgTypes[183] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25328,7 +25900,7 @@ func (x *AlterUserMappingStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterUserMappingStmt.ProtoReflect.Descriptor instead. func (*AlterUserMappingStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{180} + return file_pg_query_proto_rawDescGZIP(), []int{183} } func (x *AlterUserMappingStmt) GetUser() *RoleSpec { @@ -25363,7 +25935,7 @@ type DropUserMappingStmt struct { func (x *DropUserMappingStmt) Reset() { *x = DropUserMappingStmt{} - mi := &file_pg_query_proto_msgTypes[181] + mi := &file_pg_query_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25375,7 +25947,7 @@ func (x *DropUserMappingStmt) String() string { func (*DropUserMappingStmt) ProtoMessage() {} func (x *DropUserMappingStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[181] + mi := &file_pg_query_proto_msgTypes[184] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25388,7 +25960,7 @@ func (x *DropUserMappingStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropUserMappingStmt.ProtoReflect.Descriptor instead. func (*DropUserMappingStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{181} + return file_pg_query_proto_rawDescGZIP(), []int{184} } func (x *DropUserMappingStmt) GetUser() *RoleSpec { @@ -25426,7 +25998,7 @@ type ImportForeignSchemaStmt struct { func (x *ImportForeignSchemaStmt) Reset() { *x = ImportForeignSchemaStmt{} - mi := &file_pg_query_proto_msgTypes[182] + mi := &file_pg_query_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25438,7 +26010,7 @@ func (x *ImportForeignSchemaStmt) String() string { func (*ImportForeignSchemaStmt) ProtoMessage() {} func (x *ImportForeignSchemaStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[182] + mi := &file_pg_query_proto_msgTypes[185] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25451,7 +26023,7 @@ func (x *ImportForeignSchemaStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportForeignSchemaStmt.ProtoReflect.Descriptor instead. func (*ImportForeignSchemaStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{182} + return file_pg_query_proto_rawDescGZIP(), []int{185} } func (x *ImportForeignSchemaStmt) GetServerName() string { @@ -25511,7 +26083,7 @@ type CreatePolicyStmt struct { func (x *CreatePolicyStmt) Reset() { *x = CreatePolicyStmt{} - mi := &file_pg_query_proto_msgTypes[183] + mi := &file_pg_query_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25523,7 +26095,7 @@ func (x *CreatePolicyStmt) String() string { func (*CreatePolicyStmt) ProtoMessage() {} func (x *CreatePolicyStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[183] + mi := &file_pg_query_proto_msgTypes[186] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25536,7 +26108,7 @@ func (x *CreatePolicyStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePolicyStmt.ProtoReflect.Descriptor instead. func (*CreatePolicyStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{183} + return file_pg_query_proto_rawDescGZIP(), []int{186} } func (x *CreatePolicyStmt) GetPolicyName() string { @@ -25601,7 +26173,7 @@ type AlterPolicyStmt struct { func (x *AlterPolicyStmt) Reset() { *x = AlterPolicyStmt{} - mi := &file_pg_query_proto_msgTypes[184] + mi := &file_pg_query_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25613,7 +26185,7 @@ func (x *AlterPolicyStmt) String() string { func (*AlterPolicyStmt) ProtoMessage() {} func (x *AlterPolicyStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[184] + mi := &file_pg_query_proto_msgTypes[187] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25626,7 +26198,7 @@ func (x *AlterPolicyStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterPolicyStmt.ProtoReflect.Descriptor instead. func (*AlterPolicyStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{184} + return file_pg_query_proto_rawDescGZIP(), []int{187} } func (x *AlterPolicyStmt) GetPolicyName() string { @@ -25675,7 +26247,7 @@ type CreateAmStmt struct { func (x *CreateAmStmt) Reset() { *x = CreateAmStmt{} - mi := &file_pg_query_proto_msgTypes[185] + mi := &file_pg_query_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25687,7 +26259,7 @@ func (x *CreateAmStmt) String() string { func (*CreateAmStmt) ProtoMessage() {} func (x *CreateAmStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[185] + mi := &file_pg_query_proto_msgTypes[188] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25700,7 +26272,7 @@ func (x *CreateAmStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAmStmt.ProtoReflect.Descriptor instead. func (*CreateAmStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{185} + return file_pg_query_proto_rawDescGZIP(), []int{188} } func (x *CreateAmStmt) GetAmname() string { @@ -25747,7 +26319,7 @@ type CreateTrigStmt struct { func (x *CreateTrigStmt) Reset() { *x = CreateTrigStmt{} - mi := &file_pg_query_proto_msgTypes[186] + mi := &file_pg_query_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25759,7 +26331,7 @@ func (x *CreateTrigStmt) String() string { func (*CreateTrigStmt) ProtoMessage() {} func (x *CreateTrigStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[186] + mi := &file_pg_query_proto_msgTypes[189] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25772,7 +26344,7 @@ func (x *CreateTrigStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTrigStmt.ProtoReflect.Descriptor instead. func (*CreateTrigStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{186} + return file_pg_query_proto_rawDescGZIP(), []int{189} } func (x *CreateTrigStmt) GetReplace() bool { @@ -25892,7 +26464,7 @@ type CreateEventTrigStmt struct { func (x *CreateEventTrigStmt) Reset() { *x = CreateEventTrigStmt{} - mi := &file_pg_query_proto_msgTypes[187] + mi := &file_pg_query_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25904,7 +26476,7 @@ func (x *CreateEventTrigStmt) String() string { func (*CreateEventTrigStmt) ProtoMessage() {} func (x *CreateEventTrigStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[187] + mi := &file_pg_query_proto_msgTypes[190] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25917,7 +26489,7 @@ func (x *CreateEventTrigStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEventTrigStmt.ProtoReflect.Descriptor instead. func (*CreateEventTrigStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{187} + return file_pg_query_proto_rawDescGZIP(), []int{190} } func (x *CreateEventTrigStmt) GetTrigname() string { @@ -25958,7 +26530,7 @@ type AlterEventTrigStmt struct { func (x *AlterEventTrigStmt) Reset() { *x = AlterEventTrigStmt{} - mi := &file_pg_query_proto_msgTypes[188] + mi := &file_pg_query_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25970,7 +26542,7 @@ func (x *AlterEventTrigStmt) String() string { func (*AlterEventTrigStmt) ProtoMessage() {} func (x *AlterEventTrigStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[188] + mi := &file_pg_query_proto_msgTypes[191] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25983,7 +26555,7 @@ func (x *AlterEventTrigStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterEventTrigStmt.ProtoReflect.Descriptor instead. func (*AlterEventTrigStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{188} + return file_pg_query_proto_rawDescGZIP(), []int{191} } func (x *AlterEventTrigStmt) GetTrigname() string { @@ -26014,7 +26586,7 @@ type CreatePLangStmt struct { func (x *CreatePLangStmt) Reset() { *x = CreatePLangStmt{} - mi := &file_pg_query_proto_msgTypes[189] + mi := &file_pg_query_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26026,7 +26598,7 @@ func (x *CreatePLangStmt) String() string { func (*CreatePLangStmt) ProtoMessage() {} func (x *CreatePLangStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[189] + mi := &file_pg_query_proto_msgTypes[192] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26039,7 +26611,7 @@ func (x *CreatePLangStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePLangStmt.ProtoReflect.Descriptor instead. func (*CreatePLangStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{189} + return file_pg_query_proto_rawDescGZIP(), []int{192} } func (x *CreatePLangStmt) GetReplace() bool { @@ -26095,7 +26667,7 @@ type CreateRoleStmt struct { func (x *CreateRoleStmt) Reset() { *x = CreateRoleStmt{} - mi := &file_pg_query_proto_msgTypes[190] + mi := &file_pg_query_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26107,7 +26679,7 @@ func (x *CreateRoleStmt) String() string { func (*CreateRoleStmt) ProtoMessage() {} func (x *CreateRoleStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[190] + mi := &file_pg_query_proto_msgTypes[193] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26120,7 +26692,7 @@ func (x *CreateRoleStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleStmt.ProtoReflect.Descriptor instead. func (*CreateRoleStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{190} + return file_pg_query_proto_rawDescGZIP(), []int{193} } func (x *CreateRoleStmt) GetStmtType() RoleStmtType { @@ -26155,7 +26727,7 @@ type AlterRoleStmt struct { func (x *AlterRoleStmt) Reset() { *x = AlterRoleStmt{} - mi := &file_pg_query_proto_msgTypes[191] + mi := &file_pg_query_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26167,7 +26739,7 @@ func (x *AlterRoleStmt) String() string { func (*AlterRoleStmt) ProtoMessage() {} func (x *AlterRoleStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[191] + mi := &file_pg_query_proto_msgTypes[194] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26180,7 +26752,7 @@ func (x *AlterRoleStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterRoleStmt.ProtoReflect.Descriptor instead. func (*AlterRoleStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{191} + return file_pg_query_proto_rawDescGZIP(), []int{194} } func (x *AlterRoleStmt) GetRole() *RoleSpec { @@ -26215,7 +26787,7 @@ type AlterRoleSetStmt struct { func (x *AlterRoleSetStmt) Reset() { *x = AlterRoleSetStmt{} - mi := &file_pg_query_proto_msgTypes[192] + mi := &file_pg_query_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26227,7 +26799,7 @@ func (x *AlterRoleSetStmt) String() string { func (*AlterRoleSetStmt) ProtoMessage() {} func (x *AlterRoleSetStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[192] + mi := &file_pg_query_proto_msgTypes[195] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26240,7 +26812,7 @@ func (x *AlterRoleSetStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterRoleSetStmt.ProtoReflect.Descriptor instead. func (*AlterRoleSetStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{192} + return file_pg_query_proto_rawDescGZIP(), []int{195} } func (x *AlterRoleSetStmt) GetRole() *RoleSpec { @@ -26274,7 +26846,7 @@ type DropRoleStmt struct { func (x *DropRoleStmt) Reset() { *x = DropRoleStmt{} - mi := &file_pg_query_proto_msgTypes[193] + mi := &file_pg_query_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26286,7 +26858,7 @@ func (x *DropRoleStmt) String() string { func (*DropRoleStmt) ProtoMessage() {} func (x *DropRoleStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[193] + mi := &file_pg_query_proto_msgTypes[196] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26299,7 +26871,7 @@ func (x *DropRoleStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropRoleStmt.ProtoReflect.Descriptor instead. func (*DropRoleStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{193} + return file_pg_query_proto_rawDescGZIP(), []int{196} } func (x *DropRoleStmt) GetRoles() []*Node { @@ -26329,7 +26901,7 @@ type CreateSeqStmt struct { func (x *CreateSeqStmt) Reset() { *x = CreateSeqStmt{} - mi := &file_pg_query_proto_msgTypes[194] + mi := &file_pg_query_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26341,7 +26913,7 @@ func (x *CreateSeqStmt) String() string { func (*CreateSeqStmt) ProtoMessage() {} func (x *CreateSeqStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[194] + mi := &file_pg_query_proto_msgTypes[197] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26354,7 +26926,7 @@ func (x *CreateSeqStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSeqStmt.ProtoReflect.Descriptor instead. func (*CreateSeqStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{194} + return file_pg_query_proto_rawDescGZIP(), []int{197} } func (x *CreateSeqStmt) GetSequence() *RangeVar { @@ -26404,7 +26976,7 @@ type AlterSeqStmt struct { func (x *AlterSeqStmt) Reset() { *x = AlterSeqStmt{} - mi := &file_pg_query_proto_msgTypes[195] + mi := &file_pg_query_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26416,7 +26988,7 @@ func (x *AlterSeqStmt) String() string { func (*AlterSeqStmt) ProtoMessage() {} func (x *AlterSeqStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[195] + mi := &file_pg_query_proto_msgTypes[198] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26429,7 +27001,7 @@ func (x *AlterSeqStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterSeqStmt.ProtoReflect.Descriptor instead. func (*AlterSeqStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{195} + return file_pg_query_proto_rawDescGZIP(), []int{198} } func (x *AlterSeqStmt) GetSequence() *RangeVar { @@ -26475,7 +27047,7 @@ type DefineStmt struct { func (x *DefineStmt) Reset() { *x = DefineStmt{} - mi := &file_pg_query_proto_msgTypes[196] + mi := &file_pg_query_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26487,7 +27059,7 @@ func (x *DefineStmt) String() string { func (*DefineStmt) ProtoMessage() {} func (x *DefineStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[196] + mi := &file_pg_query_proto_msgTypes[199] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26500,7 +27072,7 @@ func (x *DefineStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DefineStmt.ProtoReflect.Descriptor instead. func (*DefineStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{196} + return file_pg_query_proto_rawDescGZIP(), []int{199} } func (x *DefineStmt) GetKind() ObjectType { @@ -26564,7 +27136,7 @@ type CreateDomainStmt struct { func (x *CreateDomainStmt) Reset() { *x = CreateDomainStmt{} - mi := &file_pg_query_proto_msgTypes[197] + mi := &file_pg_query_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26576,7 +27148,7 @@ func (x *CreateDomainStmt) String() string { func (*CreateDomainStmt) ProtoMessage() {} func (x *CreateDomainStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[197] + mi := &file_pg_query_proto_msgTypes[200] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26589,7 +27161,7 @@ func (x *CreateDomainStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDomainStmt.ProtoReflect.Descriptor instead. func (*CreateDomainStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{197} + return file_pg_query_proto_rawDescGZIP(), []int{200} } func (x *CreateDomainStmt) GetDomainname() []*Node { @@ -26634,7 +27206,7 @@ type CreateOpClassStmt struct { func (x *CreateOpClassStmt) Reset() { *x = CreateOpClassStmt{} - mi := &file_pg_query_proto_msgTypes[198] + mi := &file_pg_query_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26646,7 +27218,7 @@ func (x *CreateOpClassStmt) String() string { func (*CreateOpClassStmt) ProtoMessage() {} func (x *CreateOpClassStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[198] + mi := &file_pg_query_proto_msgTypes[201] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26659,7 +27231,7 @@ func (x *CreateOpClassStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOpClassStmt.ProtoReflect.Descriptor instead. func (*CreateOpClassStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{198} + return file_pg_query_proto_rawDescGZIP(), []int{201} } func (x *CreateOpClassStmt) GetOpclassname() []*Node { @@ -26718,7 +27290,7 @@ type CreateOpClassItem struct { func (x *CreateOpClassItem) Reset() { *x = CreateOpClassItem{} - mi := &file_pg_query_proto_msgTypes[199] + mi := &file_pg_query_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26730,7 +27302,7 @@ func (x *CreateOpClassItem) String() string { func (*CreateOpClassItem) ProtoMessage() {} func (x *CreateOpClassItem) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[199] + mi := &file_pg_query_proto_msgTypes[202] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26743,7 +27315,7 @@ func (x *CreateOpClassItem) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOpClassItem.ProtoReflect.Descriptor instead. func (*CreateOpClassItem) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{199} + return file_pg_query_proto_rawDescGZIP(), []int{202} } func (x *CreateOpClassItem) GetItemtype() int32 { @@ -26798,7 +27370,7 @@ type CreateOpFamilyStmt struct { func (x *CreateOpFamilyStmt) Reset() { *x = CreateOpFamilyStmt{} - mi := &file_pg_query_proto_msgTypes[200] + mi := &file_pg_query_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26810,7 +27382,7 @@ func (x *CreateOpFamilyStmt) String() string { func (*CreateOpFamilyStmt) ProtoMessage() {} func (x *CreateOpFamilyStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[200] + mi := &file_pg_query_proto_msgTypes[203] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26823,7 +27395,7 @@ func (x *CreateOpFamilyStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOpFamilyStmt.ProtoReflect.Descriptor instead. func (*CreateOpFamilyStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{200} + return file_pg_query_proto_rawDescGZIP(), []int{203} } func (x *CreateOpFamilyStmt) GetOpfamilyname() []*Node { @@ -26852,7 +27424,7 @@ type AlterOpFamilyStmt struct { func (x *AlterOpFamilyStmt) Reset() { *x = AlterOpFamilyStmt{} - mi := &file_pg_query_proto_msgTypes[201] + mi := &file_pg_query_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26864,7 +27436,7 @@ func (x *AlterOpFamilyStmt) String() string { func (*AlterOpFamilyStmt) ProtoMessage() {} func (x *AlterOpFamilyStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[201] + mi := &file_pg_query_proto_msgTypes[204] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26877,7 +27449,7 @@ func (x *AlterOpFamilyStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterOpFamilyStmt.ProtoReflect.Descriptor instead. func (*AlterOpFamilyStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{201} + return file_pg_query_proto_rawDescGZIP(), []int{204} } func (x *AlterOpFamilyStmt) GetOpfamilyname() []*Node { @@ -26921,7 +27493,7 @@ type DropStmt struct { func (x *DropStmt) Reset() { *x = DropStmt{} - mi := &file_pg_query_proto_msgTypes[202] + mi := &file_pg_query_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26933,7 +27505,7 @@ func (x *DropStmt) String() string { func (*DropStmt) ProtoMessage() {} func (x *DropStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[202] + mi := &file_pg_query_proto_msgTypes[205] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26946,7 +27518,7 @@ func (x *DropStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropStmt.ProtoReflect.Descriptor instead. func (*DropStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{202} + return file_pg_query_proto_rawDescGZIP(), []int{205} } func (x *DropStmt) GetObjects() []*Node { @@ -26995,7 +27567,7 @@ type TruncateStmt struct { func (x *TruncateStmt) Reset() { *x = TruncateStmt{} - mi := &file_pg_query_proto_msgTypes[203] + mi := &file_pg_query_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27007,7 +27579,7 @@ func (x *TruncateStmt) String() string { func (*TruncateStmt) ProtoMessage() {} func (x *TruncateStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[203] + mi := &file_pg_query_proto_msgTypes[206] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27020,7 +27592,7 @@ func (x *TruncateStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use TruncateStmt.ProtoReflect.Descriptor instead. func (*TruncateStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{203} + return file_pg_query_proto_rawDescGZIP(), []int{206} } func (x *TruncateStmt) GetRelations() []*Node { @@ -27055,7 +27627,7 @@ type CommentStmt struct { func (x *CommentStmt) Reset() { *x = CommentStmt{} - mi := &file_pg_query_proto_msgTypes[204] + mi := &file_pg_query_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27067,7 +27639,7 @@ func (x *CommentStmt) String() string { func (*CommentStmt) ProtoMessage() {} func (x *CommentStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[204] + mi := &file_pg_query_proto_msgTypes[207] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27080,7 +27652,7 @@ func (x *CommentStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CommentStmt.ProtoReflect.Descriptor instead. func (*CommentStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{204} + return file_pg_query_proto_rawDescGZIP(), []int{207} } func (x *CommentStmt) GetObjtype() ObjectType { @@ -27116,7 +27688,7 @@ type SecLabelStmt struct { func (x *SecLabelStmt) Reset() { *x = SecLabelStmt{} - mi := &file_pg_query_proto_msgTypes[205] + mi := &file_pg_query_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27128,7 +27700,7 @@ func (x *SecLabelStmt) String() string { func (*SecLabelStmt) ProtoMessage() {} func (x *SecLabelStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[205] + mi := &file_pg_query_proto_msgTypes[208] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27141,7 +27713,7 @@ func (x *SecLabelStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use SecLabelStmt.ProtoReflect.Descriptor instead. func (*SecLabelStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{205} + return file_pg_query_proto_rawDescGZIP(), []int{208} } func (x *SecLabelStmt) GetObjtype() ObjectType { @@ -27183,7 +27755,7 @@ type DeclareCursorStmt struct { func (x *DeclareCursorStmt) Reset() { *x = DeclareCursorStmt{} - mi := &file_pg_query_proto_msgTypes[206] + mi := &file_pg_query_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27195,7 +27767,7 @@ func (x *DeclareCursorStmt) String() string { func (*DeclareCursorStmt) ProtoMessage() {} func (x *DeclareCursorStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[206] + mi := &file_pg_query_proto_msgTypes[209] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27208,7 +27780,7 @@ func (x *DeclareCursorStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DeclareCursorStmt.ProtoReflect.Descriptor instead. func (*DeclareCursorStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{206} + return file_pg_query_proto_rawDescGZIP(), []int{209} } func (x *DeclareCursorStmt) GetPortalname() string { @@ -27241,7 +27813,7 @@ type ClosePortalStmt struct { func (x *ClosePortalStmt) Reset() { *x = ClosePortalStmt{} - mi := &file_pg_query_proto_msgTypes[207] + mi := &file_pg_query_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27253,7 +27825,7 @@ func (x *ClosePortalStmt) String() string { func (*ClosePortalStmt) ProtoMessage() {} func (x *ClosePortalStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[207] + mi := &file_pg_query_proto_msgTypes[210] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27266,7 +27838,7 @@ func (x *ClosePortalStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ClosePortalStmt.ProtoReflect.Descriptor instead. func (*ClosePortalStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{207} + return file_pg_query_proto_rawDescGZIP(), []int{210} } func (x *ClosePortalStmt) GetPortalname() string { @@ -27288,7 +27860,7 @@ type FetchStmt struct { func (x *FetchStmt) Reset() { *x = FetchStmt{} - mi := &file_pg_query_proto_msgTypes[208] + mi := &file_pg_query_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27300,7 +27872,7 @@ func (x *FetchStmt) String() string { func (*FetchStmt) ProtoMessage() {} func (x *FetchStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[208] + mi := &file_pg_query_proto_msgTypes[211] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27313,7 +27885,7 @@ func (x *FetchStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchStmt.ProtoReflect.Descriptor instead. func (*FetchStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{208} + return file_pg_query_proto_rawDescGZIP(), []int{211} } func (x *FetchStmt) GetDirection() FetchDirection { @@ -27364,19 +27936,20 @@ type IndexStmt struct { 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"` - Deferrable bool `protobuf:"varint,19,opt,name=deferrable,proto3" json:"deferrable,omitempty"` - Initdeferred bool `protobuf:"varint,20,opt,name=initdeferred,proto3" json:"initdeferred,omitempty"` - Transformed bool `protobuf:"varint,21,opt,name=transformed,proto3" json:"transformed,omitempty"` - Concurrent bool `protobuf:"varint,22,opt,name=concurrent,proto3" json:"concurrent,omitempty"` - IfNotExists bool `protobuf:"varint,23,opt,name=if_not_exists,proto3" json:"if_not_exists,omitempty"` - ResetDefaultTblspc bool `protobuf:"varint,24,opt,name=reset_default_tblspc,proto3" json:"reset_default_tblspc,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[209] + mi := &file_pg_query_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27388,7 +27961,7 @@ func (x *IndexStmt) String() string { func (*IndexStmt) ProtoMessage() {} func (x *IndexStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[209] + mi := &file_pg_query_proto_msgTypes[212] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27401,7 +27974,7 @@ func (x *IndexStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexStmt.ProtoReflect.Descriptor instead. func (*IndexStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{209} + return file_pg_query_proto_rawDescGZIP(), []int{212} } func (x *IndexStmt) GetIdxname() string { @@ -27530,6 +28103,13 @@ func (x *IndexStmt) GetIsconstraint() bool { 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 @@ -27587,7 +28167,7 @@ type CreateStatsStmt struct { func (x *CreateStatsStmt) Reset() { *x = CreateStatsStmt{} - mi := &file_pg_query_proto_msgTypes[210] + mi := &file_pg_query_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27599,7 +28179,7 @@ func (x *CreateStatsStmt) String() string { func (*CreateStatsStmt) ProtoMessage() {} func (x *CreateStatsStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[210] + mi := &file_pg_query_proto_msgTypes[213] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27612,7 +28192,7 @@ func (x *CreateStatsStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateStatsStmt.ProtoReflect.Descriptor instead. func (*CreateStatsStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{210} + return file_pg_query_proto_rawDescGZIP(), []int{213} } func (x *CreateStatsStmt) GetDefnames() []*Node { @@ -27674,7 +28254,7 @@ type StatsElem struct { func (x *StatsElem) Reset() { *x = StatsElem{} - mi := &file_pg_query_proto_msgTypes[211] + mi := &file_pg_query_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27686,7 +28266,7 @@ func (x *StatsElem) String() string { func (*StatsElem) ProtoMessage() {} func (x *StatsElem) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[211] + mi := &file_pg_query_proto_msgTypes[214] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27699,7 +28279,7 @@ func (x *StatsElem) ProtoReflect() protoreflect.Message { // Deprecated: Use StatsElem.ProtoReflect.Descriptor instead. func (*StatsElem) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{211} + return file_pg_query_proto_rawDescGZIP(), []int{214} } func (x *StatsElem) GetName() string { @@ -27727,7 +28307,7 @@ type AlterStatsStmt struct { func (x *AlterStatsStmt) Reset() { *x = AlterStatsStmt{} - mi := &file_pg_query_proto_msgTypes[212] + mi := &file_pg_query_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27739,7 +28319,7 @@ func (x *AlterStatsStmt) String() string { func (*AlterStatsStmt) ProtoMessage() {} func (x *AlterStatsStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[212] + mi := &file_pg_query_proto_msgTypes[215] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27752,7 +28332,7 @@ func (x *AlterStatsStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterStatsStmt.ProtoReflect.Descriptor instead. func (*AlterStatsStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{212} + return file_pg_query_proto_rawDescGZIP(), []int{215} } func (x *AlterStatsStmt) GetDefnames() []*Node { @@ -27791,7 +28371,7 @@ type CreateFunctionStmt struct { func (x *CreateFunctionStmt) Reset() { *x = CreateFunctionStmt{} - mi := &file_pg_query_proto_msgTypes[213] + mi := &file_pg_query_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27803,7 +28383,7 @@ func (x *CreateFunctionStmt) String() string { func (*CreateFunctionStmt) ProtoMessage() {} func (x *CreateFunctionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[213] + mi := &file_pg_query_proto_msgTypes[216] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27816,7 +28396,7 @@ func (x *CreateFunctionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateFunctionStmt.ProtoReflect.Descriptor instead. func (*CreateFunctionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{213} + return file_pg_query_proto_rawDescGZIP(), []int{216} } func (x *CreateFunctionStmt) GetIsProcedure() bool { @@ -27874,13 +28454,14 @@ type FunctionParameter struct { 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[214] + mi := &file_pg_query_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27892,7 +28473,7 @@ func (x *FunctionParameter) String() string { func (*FunctionParameter) ProtoMessage() {} func (x *FunctionParameter) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[214] + mi := &file_pg_query_proto_msgTypes[217] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27905,7 +28486,7 @@ func (x *FunctionParameter) ProtoReflect() protoreflect.Message { // Deprecated: Use FunctionParameter.ProtoReflect.Descriptor instead. func (*FunctionParameter) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{214} + return file_pg_query_proto_rawDescGZIP(), []int{217} } func (x *FunctionParameter) GetName() string { @@ -27936,6 +28517,13 @@ func (x *FunctionParameter) GetDefexpr() *Node { 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"` @@ -27947,7 +28535,7 @@ type AlterFunctionStmt struct { func (x *AlterFunctionStmt) Reset() { *x = AlterFunctionStmt{} - mi := &file_pg_query_proto_msgTypes[215] + mi := &file_pg_query_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27959,7 +28547,7 @@ func (x *AlterFunctionStmt) String() string { func (*AlterFunctionStmt) ProtoMessage() {} func (x *AlterFunctionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[215] + mi := &file_pg_query_proto_msgTypes[218] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27972,7 +28560,7 @@ func (x *AlterFunctionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterFunctionStmt.ProtoReflect.Descriptor instead. func (*AlterFunctionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{215} + return file_pg_query_proto_rawDescGZIP(), []int{218} } func (x *AlterFunctionStmt) GetObjtype() ObjectType { @@ -28005,7 +28593,7 @@ type DoStmt struct { func (x *DoStmt) Reset() { *x = DoStmt{} - mi := &file_pg_query_proto_msgTypes[216] + mi := &file_pg_query_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28017,7 +28605,7 @@ func (x *DoStmt) String() string { func (*DoStmt) ProtoMessage() {} func (x *DoStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[216] + mi := &file_pg_query_proto_msgTypes[219] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28030,7 +28618,7 @@ func (x *DoStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DoStmt.ProtoReflect.Descriptor instead. func (*DoStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{216} + return file_pg_query_proto_rawDescGZIP(), []int{219} } func (x *DoStmt) GetArgs() []*Node { @@ -28052,7 +28640,7 @@ type InlineCodeBlock struct { func (x *InlineCodeBlock) Reset() { *x = InlineCodeBlock{} - mi := &file_pg_query_proto_msgTypes[217] + mi := &file_pg_query_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28064,7 +28652,7 @@ func (x *InlineCodeBlock) String() string { func (*InlineCodeBlock) ProtoMessage() {} func (x *InlineCodeBlock) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[217] + mi := &file_pg_query_proto_msgTypes[220] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28077,7 +28665,7 @@ func (x *InlineCodeBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use InlineCodeBlock.ProtoReflect.Descriptor instead. func (*InlineCodeBlock) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{217} + return file_pg_query_proto_rawDescGZIP(), []int{220} } func (x *InlineCodeBlock) GetSourceText() string { @@ -28119,7 +28707,7 @@ type CallStmt struct { func (x *CallStmt) Reset() { *x = CallStmt{} - mi := &file_pg_query_proto_msgTypes[218] + mi := &file_pg_query_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28131,7 +28719,7 @@ func (x *CallStmt) String() string { func (*CallStmt) ProtoMessage() {} func (x *CallStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[218] + mi := &file_pg_query_proto_msgTypes[221] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28144,7 +28732,7 @@ func (x *CallStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CallStmt.ProtoReflect.Descriptor instead. func (*CallStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{218} + return file_pg_query_proto_rawDescGZIP(), []int{221} } func (x *CallStmt) GetFunccall() *FuncCall { @@ -28177,7 +28765,7 @@ type CallContext struct { func (x *CallContext) Reset() { *x = CallContext{} - mi := &file_pg_query_proto_msgTypes[219] + mi := &file_pg_query_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28189,7 +28777,7 @@ func (x *CallContext) String() string { func (*CallContext) ProtoMessage() {} func (x *CallContext) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[219] + mi := &file_pg_query_proto_msgTypes[222] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28202,7 +28790,7 @@ func (x *CallContext) ProtoReflect() protoreflect.Message { // Deprecated: Use CallContext.ProtoReflect.Descriptor instead. func (*CallContext) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{219} + return file_pg_query_proto_rawDescGZIP(), []int{222} } func (x *CallContext) GetAtomic() bool { @@ -28228,7 +28816,7 @@ type RenameStmt struct { func (x *RenameStmt) Reset() { *x = RenameStmt{} - mi := &file_pg_query_proto_msgTypes[220] + mi := &file_pg_query_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28240,7 +28828,7 @@ func (x *RenameStmt) String() string { func (*RenameStmt) ProtoMessage() {} func (x *RenameStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[220] + mi := &file_pg_query_proto_msgTypes[223] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28253,7 +28841,7 @@ func (x *RenameStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameStmt.ProtoReflect.Descriptor instead. func (*RenameStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{220} + return file_pg_query_proto_rawDescGZIP(), []int{223} } func (x *RenameStmt) GetRenameType() ObjectType { @@ -28325,7 +28913,7 @@ type AlterObjectDependsStmt struct { func (x *AlterObjectDependsStmt) Reset() { *x = AlterObjectDependsStmt{} - mi := &file_pg_query_proto_msgTypes[221] + mi := &file_pg_query_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28337,7 +28925,7 @@ func (x *AlterObjectDependsStmt) String() string { func (*AlterObjectDependsStmt) ProtoMessage() {} func (x *AlterObjectDependsStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[221] + mi := &file_pg_query_proto_msgTypes[224] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28350,7 +28938,7 @@ func (x *AlterObjectDependsStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterObjectDependsStmt.ProtoReflect.Descriptor instead. func (*AlterObjectDependsStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{221} + return file_pg_query_proto_rawDescGZIP(), []int{224} } func (x *AlterObjectDependsStmt) GetObjectType() ObjectType { @@ -28401,7 +28989,7 @@ type AlterObjectSchemaStmt struct { func (x *AlterObjectSchemaStmt) Reset() { *x = AlterObjectSchemaStmt{} - mi := &file_pg_query_proto_msgTypes[222] + mi := &file_pg_query_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28413,7 +29001,7 @@ func (x *AlterObjectSchemaStmt) String() string { func (*AlterObjectSchemaStmt) ProtoMessage() {} func (x *AlterObjectSchemaStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[222] + mi := &file_pg_query_proto_msgTypes[225] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28426,7 +29014,7 @@ func (x *AlterObjectSchemaStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterObjectSchemaStmt.ProtoReflect.Descriptor instead. func (*AlterObjectSchemaStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{222} + return file_pg_query_proto_rawDescGZIP(), []int{225} } func (x *AlterObjectSchemaStmt) GetObjectType() ObjectType { @@ -28476,7 +29064,7 @@ type AlterOwnerStmt struct { func (x *AlterOwnerStmt) Reset() { *x = AlterOwnerStmt{} - mi := &file_pg_query_proto_msgTypes[223] + mi := &file_pg_query_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28488,7 +29076,7 @@ func (x *AlterOwnerStmt) String() string { func (*AlterOwnerStmt) ProtoMessage() {} func (x *AlterOwnerStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[223] + mi := &file_pg_query_proto_msgTypes[226] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28501,7 +29089,7 @@ func (x *AlterOwnerStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterOwnerStmt.ProtoReflect.Descriptor instead. func (*AlterOwnerStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{223} + return file_pg_query_proto_rawDescGZIP(), []int{226} } func (x *AlterOwnerStmt) GetObjectType() ObjectType { @@ -28542,7 +29130,7 @@ type AlterOperatorStmt struct { func (x *AlterOperatorStmt) Reset() { *x = AlterOperatorStmt{} - mi := &file_pg_query_proto_msgTypes[224] + mi := &file_pg_query_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28554,7 +29142,7 @@ func (x *AlterOperatorStmt) String() string { func (*AlterOperatorStmt) ProtoMessage() {} func (x *AlterOperatorStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[224] + mi := &file_pg_query_proto_msgTypes[227] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28567,7 +29155,7 @@ func (x *AlterOperatorStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterOperatorStmt.ProtoReflect.Descriptor instead. func (*AlterOperatorStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{224} + return file_pg_query_proto_rawDescGZIP(), []int{227} } func (x *AlterOperatorStmt) GetOpername() *ObjectWithArgs { @@ -28594,7 +29182,7 @@ type AlterTypeStmt struct { func (x *AlterTypeStmt) Reset() { *x = AlterTypeStmt{} - mi := &file_pg_query_proto_msgTypes[225] + mi := &file_pg_query_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28606,7 +29194,7 @@ func (x *AlterTypeStmt) String() string { func (*AlterTypeStmt) ProtoMessage() {} func (x *AlterTypeStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[225] + mi := &file_pg_query_proto_msgTypes[228] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28619,7 +29207,7 @@ func (x *AlterTypeStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTypeStmt.ProtoReflect.Descriptor instead. func (*AlterTypeStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{225} + return file_pg_query_proto_rawDescGZIP(), []int{228} } func (x *AlterTypeStmt) GetTypeName() []*Node { @@ -28651,7 +29239,7 @@ type RuleStmt struct { func (x *RuleStmt) Reset() { *x = RuleStmt{} - mi := &file_pg_query_proto_msgTypes[226] + mi := &file_pg_query_proto_msgTypes[229] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28663,7 +29251,7 @@ func (x *RuleStmt) String() string { func (*RuleStmt) ProtoMessage() {} func (x *RuleStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[226] + mi := &file_pg_query_proto_msgTypes[229] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28676,7 +29264,7 @@ func (x *RuleStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use RuleStmt.ProtoReflect.Descriptor instead. func (*RuleStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{226} + return file_pg_query_proto_rawDescGZIP(), []int{229} } func (x *RuleStmt) GetRelation() *RangeVar { @@ -28738,7 +29326,7 @@ type NotifyStmt struct { func (x *NotifyStmt) Reset() { *x = NotifyStmt{} - mi := &file_pg_query_proto_msgTypes[227] + mi := &file_pg_query_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28750,7 +29338,7 @@ func (x *NotifyStmt) String() string { func (*NotifyStmt) ProtoMessage() {} func (x *NotifyStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[227] + mi := &file_pg_query_proto_msgTypes[230] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28763,7 +29351,7 @@ func (x *NotifyStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyStmt.ProtoReflect.Descriptor instead. func (*NotifyStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{227} + return file_pg_query_proto_rawDescGZIP(), []int{230} } func (x *NotifyStmt) GetConditionname() string { @@ -28789,7 +29377,7 @@ type ListenStmt struct { func (x *ListenStmt) Reset() { *x = ListenStmt{} - mi := &file_pg_query_proto_msgTypes[228] + mi := &file_pg_query_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28801,7 +29389,7 @@ func (x *ListenStmt) String() string { func (*ListenStmt) ProtoMessage() {} func (x *ListenStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[228] + mi := &file_pg_query_proto_msgTypes[231] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28814,7 +29402,7 @@ func (x *ListenStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ListenStmt.ProtoReflect.Descriptor instead. func (*ListenStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{228} + return file_pg_query_proto_rawDescGZIP(), []int{231} } func (x *ListenStmt) GetConditionname() string { @@ -28833,7 +29421,7 @@ type UnlistenStmt struct { func (x *UnlistenStmt) Reset() { *x = UnlistenStmt{} - mi := &file_pg_query_proto_msgTypes[229] + mi := &file_pg_query_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28845,7 +29433,7 @@ func (x *UnlistenStmt) String() string { func (*UnlistenStmt) ProtoMessage() {} func (x *UnlistenStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[229] + mi := &file_pg_query_proto_msgTypes[232] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28858,7 +29446,7 @@ func (x *UnlistenStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlistenStmt.ProtoReflect.Descriptor instead. func (*UnlistenStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{229} + return file_pg_query_proto_rawDescGZIP(), []int{232} } func (x *UnlistenStmt) GetConditionname() string { @@ -28882,7 +29470,7 @@ type TransactionStmt struct { func (x *TransactionStmt) Reset() { *x = TransactionStmt{} - mi := &file_pg_query_proto_msgTypes[230] + mi := &file_pg_query_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28894,7 +29482,7 @@ func (x *TransactionStmt) String() string { func (*TransactionStmt) ProtoMessage() {} func (x *TransactionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[230] + mi := &file_pg_query_proto_msgTypes[233] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28907,7 +29495,7 @@ func (x *TransactionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionStmt.ProtoReflect.Descriptor instead. func (*TransactionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{230} + return file_pg_query_proto_rawDescGZIP(), []int{233} } func (x *TransactionStmt) GetKind() TransactionStmtKind { @@ -28962,7 +29550,7 @@ type CompositeTypeStmt struct { func (x *CompositeTypeStmt) Reset() { *x = CompositeTypeStmt{} - mi := &file_pg_query_proto_msgTypes[231] + mi := &file_pg_query_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28974,7 +29562,7 @@ func (x *CompositeTypeStmt) String() string { func (*CompositeTypeStmt) ProtoMessage() {} func (x *CompositeTypeStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[231] + mi := &file_pg_query_proto_msgTypes[234] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28987,7 +29575,7 @@ func (x *CompositeTypeStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CompositeTypeStmt.ProtoReflect.Descriptor instead. func (*CompositeTypeStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{231} + return file_pg_query_proto_rawDescGZIP(), []int{234} } func (x *CompositeTypeStmt) GetTypevar() *RangeVar { @@ -29014,7 +29602,7 @@ type CreateEnumStmt struct { func (x *CreateEnumStmt) Reset() { *x = CreateEnumStmt{} - mi := &file_pg_query_proto_msgTypes[232] + mi := &file_pg_query_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29026,7 +29614,7 @@ func (x *CreateEnumStmt) String() string { func (*CreateEnumStmt) ProtoMessage() {} func (x *CreateEnumStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[232] + mi := &file_pg_query_proto_msgTypes[235] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29039,7 +29627,7 @@ func (x *CreateEnumStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEnumStmt.ProtoReflect.Descriptor instead. func (*CreateEnumStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{232} + return file_pg_query_proto_rawDescGZIP(), []int{235} } func (x *CreateEnumStmt) GetTypeName() []*Node { @@ -29066,7 +29654,7 @@ type CreateRangeStmt struct { func (x *CreateRangeStmt) Reset() { *x = CreateRangeStmt{} - mi := &file_pg_query_proto_msgTypes[233] + mi := &file_pg_query_proto_msgTypes[236] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29078,7 +29666,7 @@ func (x *CreateRangeStmt) String() string { func (*CreateRangeStmt) ProtoMessage() {} func (x *CreateRangeStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[233] + mi := &file_pg_query_proto_msgTypes[236] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29091,7 +29679,7 @@ func (x *CreateRangeStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRangeStmt.ProtoReflect.Descriptor instead. func (*CreateRangeStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{233} + return file_pg_query_proto_rawDescGZIP(), []int{236} } func (x *CreateRangeStmt) GetTypeName() []*Node { @@ -29122,7 +29710,7 @@ type AlterEnumStmt struct { func (x *AlterEnumStmt) Reset() { *x = AlterEnumStmt{} - mi := &file_pg_query_proto_msgTypes[234] + mi := &file_pg_query_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29134,7 +29722,7 @@ func (x *AlterEnumStmt) String() string { func (*AlterEnumStmt) ProtoMessage() {} func (x *AlterEnumStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[234] + mi := &file_pg_query_proto_msgTypes[237] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29147,7 +29735,7 @@ func (x *AlterEnumStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterEnumStmt.ProtoReflect.Descriptor instead. func (*AlterEnumStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{234} + return file_pg_query_proto_rawDescGZIP(), []int{237} } func (x *AlterEnumStmt) GetTypeName() []*Node { @@ -29206,7 +29794,7 @@ type ViewStmt struct { func (x *ViewStmt) Reset() { *x = ViewStmt{} - mi := &file_pg_query_proto_msgTypes[235] + mi := &file_pg_query_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29218,7 +29806,7 @@ func (x *ViewStmt) String() string { func (*ViewStmt) ProtoMessage() {} func (x *ViewStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[235] + mi := &file_pg_query_proto_msgTypes[238] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29231,7 +29819,7 @@ func (x *ViewStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ViewStmt.ProtoReflect.Descriptor instead. func (*ViewStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{235} + return file_pg_query_proto_rawDescGZIP(), []int{238} } func (x *ViewStmt) GetView() *RangeVar { @@ -29285,7 +29873,7 @@ type LoadStmt struct { func (x *LoadStmt) Reset() { *x = LoadStmt{} - mi := &file_pg_query_proto_msgTypes[236] + mi := &file_pg_query_proto_msgTypes[239] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29297,7 +29885,7 @@ func (x *LoadStmt) String() string { func (*LoadStmt) ProtoMessage() {} func (x *LoadStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[236] + mi := &file_pg_query_proto_msgTypes[239] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29310,7 +29898,7 @@ func (x *LoadStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use LoadStmt.ProtoReflect.Descriptor instead. func (*LoadStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{236} + return file_pg_query_proto_rawDescGZIP(), []int{239} } func (x *LoadStmt) GetFilename() string { @@ -29330,7 +29918,7 @@ type CreatedbStmt struct { func (x *CreatedbStmt) Reset() { *x = CreatedbStmt{} - mi := &file_pg_query_proto_msgTypes[237] + mi := &file_pg_query_proto_msgTypes[240] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29342,7 +29930,7 @@ func (x *CreatedbStmt) String() string { func (*CreatedbStmt) ProtoMessage() {} func (x *CreatedbStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[237] + mi := &file_pg_query_proto_msgTypes[240] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29355,7 +29943,7 @@ func (x *CreatedbStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatedbStmt.ProtoReflect.Descriptor instead. func (*CreatedbStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{237} + return file_pg_query_proto_rawDescGZIP(), []int{240} } func (x *CreatedbStmt) GetDbname() string { @@ -29382,7 +29970,7 @@ type AlterDatabaseStmt struct { func (x *AlterDatabaseStmt) Reset() { *x = AlterDatabaseStmt{} - mi := &file_pg_query_proto_msgTypes[238] + mi := &file_pg_query_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29394,7 +29982,7 @@ func (x *AlterDatabaseStmt) String() string { func (*AlterDatabaseStmt) ProtoMessage() {} func (x *AlterDatabaseStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[238] + mi := &file_pg_query_proto_msgTypes[241] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29407,7 +29995,7 @@ func (x *AlterDatabaseStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterDatabaseStmt.ProtoReflect.Descriptor instead. func (*AlterDatabaseStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{238} + return file_pg_query_proto_rawDescGZIP(), []int{241} } func (x *AlterDatabaseStmt) GetDbname() string { @@ -29433,7 +30021,7 @@ type AlterDatabaseRefreshCollStmt struct { func (x *AlterDatabaseRefreshCollStmt) Reset() { *x = AlterDatabaseRefreshCollStmt{} - mi := &file_pg_query_proto_msgTypes[239] + mi := &file_pg_query_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29445,7 +30033,7 @@ func (x *AlterDatabaseRefreshCollStmt) String() string { func (*AlterDatabaseRefreshCollStmt) ProtoMessage() {} func (x *AlterDatabaseRefreshCollStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[239] + mi := &file_pg_query_proto_msgTypes[242] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29458,7 +30046,7 @@ func (x *AlterDatabaseRefreshCollStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterDatabaseRefreshCollStmt.ProtoReflect.Descriptor instead. func (*AlterDatabaseRefreshCollStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{239} + return file_pg_query_proto_rawDescGZIP(), []int{242} } func (x *AlterDatabaseRefreshCollStmt) GetDbname() string { @@ -29478,7 +30066,7 @@ type AlterDatabaseSetStmt struct { func (x *AlterDatabaseSetStmt) Reset() { *x = AlterDatabaseSetStmt{} - mi := &file_pg_query_proto_msgTypes[240] + mi := &file_pg_query_proto_msgTypes[243] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29490,7 +30078,7 @@ func (x *AlterDatabaseSetStmt) String() string { func (*AlterDatabaseSetStmt) ProtoMessage() {} func (x *AlterDatabaseSetStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[240] + mi := &file_pg_query_proto_msgTypes[243] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29503,7 +30091,7 @@ func (x *AlterDatabaseSetStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterDatabaseSetStmt.ProtoReflect.Descriptor instead. func (*AlterDatabaseSetStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{240} + return file_pg_query_proto_rawDescGZIP(), []int{243} } func (x *AlterDatabaseSetStmt) GetDbname() string { @@ -29531,7 +30119,7 @@ type DropdbStmt struct { func (x *DropdbStmt) Reset() { *x = DropdbStmt{} - mi := &file_pg_query_proto_msgTypes[241] + mi := &file_pg_query_proto_msgTypes[244] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29543,7 +30131,7 @@ func (x *DropdbStmt) String() string { func (*DropdbStmt) ProtoMessage() {} func (x *DropdbStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[241] + mi := &file_pg_query_proto_msgTypes[244] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29556,7 +30144,7 @@ func (x *DropdbStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropdbStmt.ProtoReflect.Descriptor instead. func (*DropdbStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{241} + return file_pg_query_proto_rawDescGZIP(), []int{244} } func (x *DropdbStmt) GetDbname() string { @@ -29589,7 +30177,7 @@ type AlterSystemStmt struct { func (x *AlterSystemStmt) Reset() { *x = AlterSystemStmt{} - mi := &file_pg_query_proto_msgTypes[242] + mi := &file_pg_query_proto_msgTypes[245] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29601,7 +30189,7 @@ func (x *AlterSystemStmt) String() string { func (*AlterSystemStmt) ProtoMessage() {} func (x *AlterSystemStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[242] + mi := &file_pg_query_proto_msgTypes[245] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29614,7 +30202,7 @@ func (x *AlterSystemStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterSystemStmt.ProtoReflect.Descriptor instead. func (*AlterSystemStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{242} + return file_pg_query_proto_rawDescGZIP(), []int{245} } func (x *AlterSystemStmt) GetSetstmt() *VariableSetStmt { @@ -29635,7 +30223,7 @@ type ClusterStmt struct { func (x *ClusterStmt) Reset() { *x = ClusterStmt{} - mi := &file_pg_query_proto_msgTypes[243] + mi := &file_pg_query_proto_msgTypes[246] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29647,7 +30235,7 @@ func (x *ClusterStmt) String() string { func (*ClusterStmt) ProtoMessage() {} func (x *ClusterStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[243] + mi := &file_pg_query_proto_msgTypes[246] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29660,7 +30248,7 @@ func (x *ClusterStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterStmt.ProtoReflect.Descriptor instead. func (*ClusterStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{243} + return file_pg_query_proto_rawDescGZIP(), []int{246} } func (x *ClusterStmt) GetRelation() *RangeVar { @@ -29695,7 +30283,7 @@ type VacuumStmt struct { func (x *VacuumStmt) Reset() { *x = VacuumStmt{} - mi := &file_pg_query_proto_msgTypes[244] + mi := &file_pg_query_proto_msgTypes[247] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29707,7 +30295,7 @@ func (x *VacuumStmt) String() string { func (*VacuumStmt) ProtoMessage() {} func (x *VacuumStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[244] + mi := &file_pg_query_proto_msgTypes[247] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29720,7 +30308,7 @@ func (x *VacuumStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use VacuumStmt.ProtoReflect.Descriptor instead. func (*VacuumStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{244} + return file_pg_query_proto_rawDescGZIP(), []int{247} } func (x *VacuumStmt) GetOptions() []*Node { @@ -29755,7 +30343,7 @@ type VacuumRelation struct { func (x *VacuumRelation) Reset() { *x = VacuumRelation{} - mi := &file_pg_query_proto_msgTypes[245] + mi := &file_pg_query_proto_msgTypes[248] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29767,7 +30355,7 @@ func (x *VacuumRelation) String() string { func (*VacuumRelation) ProtoMessage() {} func (x *VacuumRelation) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[245] + mi := &file_pg_query_proto_msgTypes[248] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29780,7 +30368,7 @@ func (x *VacuumRelation) ProtoReflect() protoreflect.Message { // Deprecated: Use VacuumRelation.ProtoReflect.Descriptor instead. func (*VacuumRelation) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{245} + return file_pg_query_proto_rawDescGZIP(), []int{248} } func (x *VacuumRelation) GetRelation() *RangeVar { @@ -29814,7 +30402,7 @@ type ExplainStmt struct { func (x *ExplainStmt) Reset() { *x = ExplainStmt{} - mi := &file_pg_query_proto_msgTypes[246] + mi := &file_pg_query_proto_msgTypes[249] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29826,7 +30414,7 @@ func (x *ExplainStmt) String() string { func (*ExplainStmt) ProtoMessage() {} func (x *ExplainStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[246] + mi := &file_pg_query_proto_msgTypes[249] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29839,7 +30427,7 @@ func (x *ExplainStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ExplainStmt.ProtoReflect.Descriptor instead. func (*ExplainStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{246} + return file_pg_query_proto_rawDescGZIP(), []int{249} } func (x *ExplainStmt) GetQuery() *Node { @@ -29869,7 +30457,7 @@ type CreateTableAsStmt struct { func (x *CreateTableAsStmt) Reset() { *x = CreateTableAsStmt{} - mi := &file_pg_query_proto_msgTypes[247] + mi := &file_pg_query_proto_msgTypes[250] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29881,7 +30469,7 @@ func (x *CreateTableAsStmt) String() string { func (*CreateTableAsStmt) ProtoMessage() {} func (x *CreateTableAsStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[247] + mi := &file_pg_query_proto_msgTypes[250] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29894,7 +30482,7 @@ func (x *CreateTableAsStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTableAsStmt.ProtoReflect.Descriptor instead. func (*CreateTableAsStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{247} + return file_pg_query_proto_rawDescGZIP(), []int{250} } func (x *CreateTableAsStmt) GetQuery() *Node { @@ -29943,7 +30531,7 @@ type RefreshMatViewStmt struct { func (x *RefreshMatViewStmt) Reset() { *x = RefreshMatViewStmt{} - mi := &file_pg_query_proto_msgTypes[248] + mi := &file_pg_query_proto_msgTypes[251] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29955,7 +30543,7 @@ func (x *RefreshMatViewStmt) String() string { func (*RefreshMatViewStmt) ProtoMessage() {} func (x *RefreshMatViewStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[248] + mi := &file_pg_query_proto_msgTypes[251] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29968,7 +30556,7 @@ func (x *RefreshMatViewStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshMatViewStmt.ProtoReflect.Descriptor instead. func (*RefreshMatViewStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{248} + return file_pg_query_proto_rawDescGZIP(), []int{251} } func (x *RefreshMatViewStmt) GetConcurrent() bool { @@ -30000,7 +30588,7 @@ type CheckPointStmt struct { func (x *CheckPointStmt) Reset() { *x = CheckPointStmt{} - mi := &file_pg_query_proto_msgTypes[249] + mi := &file_pg_query_proto_msgTypes[252] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30012,7 +30600,7 @@ func (x *CheckPointStmt) String() string { func (*CheckPointStmt) ProtoMessage() {} func (x *CheckPointStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[249] + mi := &file_pg_query_proto_msgTypes[252] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30025,7 +30613,7 @@ func (x *CheckPointStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckPointStmt.ProtoReflect.Descriptor instead. func (*CheckPointStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{249} + return file_pg_query_proto_rawDescGZIP(), []int{252} } type DiscardStmt struct { @@ -30037,7 +30625,7 @@ type DiscardStmt struct { func (x *DiscardStmt) Reset() { *x = DiscardStmt{} - mi := &file_pg_query_proto_msgTypes[250] + mi := &file_pg_query_proto_msgTypes[253] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30049,7 +30637,7 @@ func (x *DiscardStmt) String() string { func (*DiscardStmt) ProtoMessage() {} func (x *DiscardStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[250] + mi := &file_pg_query_proto_msgTypes[253] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30062,7 +30650,7 @@ func (x *DiscardStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscardStmt.ProtoReflect.Descriptor instead. func (*DiscardStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{250} + return file_pg_query_proto_rawDescGZIP(), []int{253} } func (x *DiscardStmt) GetTarget() DiscardMode { @@ -30083,7 +30671,7 @@ type LockStmt struct { func (x *LockStmt) Reset() { *x = LockStmt{} - mi := &file_pg_query_proto_msgTypes[251] + mi := &file_pg_query_proto_msgTypes[254] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30095,7 +30683,7 @@ func (x *LockStmt) String() string { func (*LockStmt) ProtoMessage() {} func (x *LockStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[251] + mi := &file_pg_query_proto_msgTypes[254] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30108,7 +30696,7 @@ func (x *LockStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use LockStmt.ProtoReflect.Descriptor instead. func (*LockStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{251} + return file_pg_query_proto_rawDescGZIP(), []int{254} } func (x *LockStmt) GetRelations() []*Node { @@ -30142,7 +30730,7 @@ type ConstraintsSetStmt struct { func (x *ConstraintsSetStmt) Reset() { *x = ConstraintsSetStmt{} - mi := &file_pg_query_proto_msgTypes[252] + mi := &file_pg_query_proto_msgTypes[255] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30154,7 +30742,7 @@ func (x *ConstraintsSetStmt) String() string { func (*ConstraintsSetStmt) ProtoMessage() {} func (x *ConstraintsSetStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[252] + mi := &file_pg_query_proto_msgTypes[255] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30167,7 +30755,7 @@ func (x *ConstraintsSetStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ConstraintsSetStmt.ProtoReflect.Descriptor instead. func (*ConstraintsSetStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{252} + return file_pg_query_proto_rawDescGZIP(), []int{255} } func (x *ConstraintsSetStmt) GetConstraints() []*Node { @@ -30196,7 +30784,7 @@ type ReindexStmt struct { func (x *ReindexStmt) Reset() { *x = ReindexStmt{} - mi := &file_pg_query_proto_msgTypes[253] + mi := &file_pg_query_proto_msgTypes[256] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30208,7 +30796,7 @@ func (x *ReindexStmt) String() string { func (*ReindexStmt) ProtoMessage() {} func (x *ReindexStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[253] + mi := &file_pg_query_proto_msgTypes[256] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30221,7 +30809,7 @@ func (x *ReindexStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ReindexStmt.ProtoReflect.Descriptor instead. func (*ReindexStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{253} + return file_pg_query_proto_rawDescGZIP(), []int{256} } func (x *ReindexStmt) GetKind() ReindexObjectType { @@ -30265,7 +30853,7 @@ type CreateConversionStmt struct { func (x *CreateConversionStmt) Reset() { *x = CreateConversionStmt{} - mi := &file_pg_query_proto_msgTypes[254] + mi := &file_pg_query_proto_msgTypes[257] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30277,7 +30865,7 @@ func (x *CreateConversionStmt) String() string { func (*CreateConversionStmt) ProtoMessage() {} func (x *CreateConversionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[254] + mi := &file_pg_query_proto_msgTypes[257] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30290,7 +30878,7 @@ func (x *CreateConversionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateConversionStmt.ProtoReflect.Descriptor instead. func (*CreateConversionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{254} + return file_pg_query_proto_rawDescGZIP(), []int{257} } func (x *CreateConversionStmt) GetConversionName() []*Node { @@ -30341,7 +30929,7 @@ type CreateCastStmt struct { func (x *CreateCastStmt) Reset() { *x = CreateCastStmt{} - mi := &file_pg_query_proto_msgTypes[255] + mi := &file_pg_query_proto_msgTypes[258] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30353,7 +30941,7 @@ func (x *CreateCastStmt) String() string { func (*CreateCastStmt) ProtoMessage() {} func (x *CreateCastStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[255] + mi := &file_pg_query_proto_msgTypes[258] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30366,7 +30954,7 @@ func (x *CreateCastStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateCastStmt.ProtoReflect.Descriptor instead. func (*CreateCastStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{255} + return file_pg_query_proto_rawDescGZIP(), []int{258} } func (x *CreateCastStmt) GetSourcetype() *TypeName { @@ -30417,7 +31005,7 @@ type CreateTransformStmt struct { func (x *CreateTransformStmt) Reset() { *x = CreateTransformStmt{} - mi := &file_pg_query_proto_msgTypes[256] + mi := &file_pg_query_proto_msgTypes[259] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30429,7 +31017,7 @@ func (x *CreateTransformStmt) String() string { func (*CreateTransformStmt) ProtoMessage() {} func (x *CreateTransformStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[256] + mi := &file_pg_query_proto_msgTypes[259] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30442,7 +31030,7 @@ func (x *CreateTransformStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTransformStmt.ProtoReflect.Descriptor instead. func (*CreateTransformStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{256} + return file_pg_query_proto_rawDescGZIP(), []int{259} } func (x *CreateTransformStmt) GetReplace() bool { @@ -30491,7 +31079,7 @@ type PrepareStmt struct { func (x *PrepareStmt) Reset() { *x = PrepareStmt{} - mi := &file_pg_query_proto_msgTypes[257] + mi := &file_pg_query_proto_msgTypes[260] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30503,7 +31091,7 @@ func (x *PrepareStmt) String() string { func (*PrepareStmt) ProtoMessage() {} func (x *PrepareStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[257] + mi := &file_pg_query_proto_msgTypes[260] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30516,7 +31104,7 @@ func (x *PrepareStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareStmt.ProtoReflect.Descriptor instead. func (*PrepareStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{257} + return file_pg_query_proto_rawDescGZIP(), []int{260} } func (x *PrepareStmt) GetName() string { @@ -30550,7 +31138,7 @@ type ExecuteStmt struct { func (x *ExecuteStmt) Reset() { *x = ExecuteStmt{} - mi := &file_pg_query_proto_msgTypes[258] + mi := &file_pg_query_proto_msgTypes[261] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30562,7 +31150,7 @@ func (x *ExecuteStmt) String() string { func (*ExecuteStmt) ProtoMessage() {} func (x *ExecuteStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[258] + mi := &file_pg_query_proto_msgTypes[261] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30575,7 +31163,7 @@ func (x *ExecuteStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteStmt.ProtoReflect.Descriptor instead. func (*ExecuteStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{258} + return file_pg_query_proto_rawDescGZIP(), []int{261} } func (x *ExecuteStmt) GetName() string { @@ -30603,7 +31191,7 @@ type DeallocateStmt struct { func (x *DeallocateStmt) Reset() { *x = DeallocateStmt{} - mi := &file_pg_query_proto_msgTypes[259] + mi := &file_pg_query_proto_msgTypes[262] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30615,7 +31203,7 @@ func (x *DeallocateStmt) String() string { func (*DeallocateStmt) ProtoMessage() {} func (x *DeallocateStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[259] + mi := &file_pg_query_proto_msgTypes[262] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30628,7 +31216,7 @@ func (x *DeallocateStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DeallocateStmt.ProtoReflect.Descriptor instead. func (*DeallocateStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{259} + return file_pg_query_proto_rawDescGZIP(), []int{262} } func (x *DeallocateStmt) GetName() string { @@ -30662,7 +31250,7 @@ type DropOwnedStmt struct { func (x *DropOwnedStmt) Reset() { *x = DropOwnedStmt{} - mi := &file_pg_query_proto_msgTypes[260] + mi := &file_pg_query_proto_msgTypes[263] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30674,7 +31262,7 @@ func (x *DropOwnedStmt) String() string { func (*DropOwnedStmt) ProtoMessage() {} func (x *DropOwnedStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[260] + mi := &file_pg_query_proto_msgTypes[263] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30687,7 +31275,7 @@ func (x *DropOwnedStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropOwnedStmt.ProtoReflect.Descriptor instead. func (*DropOwnedStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{260} + return file_pg_query_proto_rawDescGZIP(), []int{263} } func (x *DropOwnedStmt) GetRoles() []*Node { @@ -30714,7 +31302,7 @@ type ReassignOwnedStmt struct { func (x *ReassignOwnedStmt) Reset() { *x = ReassignOwnedStmt{} - mi := &file_pg_query_proto_msgTypes[261] + mi := &file_pg_query_proto_msgTypes[264] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30726,7 +31314,7 @@ func (x *ReassignOwnedStmt) String() string { func (*ReassignOwnedStmt) ProtoMessage() {} func (x *ReassignOwnedStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[261] + mi := &file_pg_query_proto_msgTypes[264] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30739,7 +31327,7 @@ func (x *ReassignOwnedStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use ReassignOwnedStmt.ProtoReflect.Descriptor instead. func (*ReassignOwnedStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{261} + return file_pg_query_proto_rawDescGZIP(), []int{264} } func (x *ReassignOwnedStmt) GetRoles() []*Node { @@ -30766,7 +31354,7 @@ type AlterTSDictionaryStmt struct { func (x *AlterTSDictionaryStmt) Reset() { *x = AlterTSDictionaryStmt{} - mi := &file_pg_query_proto_msgTypes[262] + mi := &file_pg_query_proto_msgTypes[265] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30778,7 +31366,7 @@ func (x *AlterTSDictionaryStmt) String() string { func (*AlterTSDictionaryStmt) ProtoMessage() {} func (x *AlterTSDictionaryStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[262] + mi := &file_pg_query_proto_msgTypes[265] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30791,7 +31379,7 @@ func (x *AlterTSDictionaryStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTSDictionaryStmt.ProtoReflect.Descriptor instead. func (*AlterTSDictionaryStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{262} + return file_pg_query_proto_rawDescGZIP(), []int{265} } func (x *AlterTSDictionaryStmt) GetDictname() []*Node { @@ -30823,7 +31411,7 @@ type AlterTSConfigurationStmt struct { func (x *AlterTSConfigurationStmt) Reset() { *x = AlterTSConfigurationStmt{} - mi := &file_pg_query_proto_msgTypes[263] + mi := &file_pg_query_proto_msgTypes[266] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30835,7 +31423,7 @@ func (x *AlterTSConfigurationStmt) String() string { func (*AlterTSConfigurationStmt) ProtoMessage() {} func (x *AlterTSConfigurationStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[263] + mi := &file_pg_query_proto_msgTypes[266] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30848,7 +31436,7 @@ func (x *AlterTSConfigurationStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterTSConfigurationStmt.ProtoReflect.Descriptor instead. func (*AlterTSConfigurationStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{263} + return file_pg_query_proto_rawDescGZIP(), []int{266} } func (x *AlterTSConfigurationStmt) GetKind() AlterTSConfigType { @@ -30911,7 +31499,7 @@ type PublicationTable struct { func (x *PublicationTable) Reset() { *x = PublicationTable{} - mi := &file_pg_query_proto_msgTypes[264] + mi := &file_pg_query_proto_msgTypes[267] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30923,7 +31511,7 @@ func (x *PublicationTable) String() string { func (*PublicationTable) ProtoMessage() {} func (x *PublicationTable) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[264] + mi := &file_pg_query_proto_msgTypes[267] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30936,7 +31524,7 @@ func (x *PublicationTable) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicationTable.ProtoReflect.Descriptor instead. func (*PublicationTable) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{264} + return file_pg_query_proto_rawDescGZIP(), []int{267} } func (x *PublicationTable) GetRelation() *RangeVar { @@ -30972,7 +31560,7 @@ type PublicationObjSpec struct { func (x *PublicationObjSpec) Reset() { *x = PublicationObjSpec{} - mi := &file_pg_query_proto_msgTypes[265] + mi := &file_pg_query_proto_msgTypes[268] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30984,7 +31572,7 @@ func (x *PublicationObjSpec) String() string { func (*PublicationObjSpec) ProtoMessage() {} func (x *PublicationObjSpec) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[265] + mi := &file_pg_query_proto_msgTypes[268] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30997,7 +31585,7 @@ func (x *PublicationObjSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicationObjSpec.ProtoReflect.Descriptor instead. func (*PublicationObjSpec) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{265} + return file_pg_query_proto_rawDescGZIP(), []int{268} } func (x *PublicationObjSpec) GetPubobjtype() PublicationObjSpecType { @@ -31040,7 +31628,7 @@ type CreatePublicationStmt struct { func (x *CreatePublicationStmt) Reset() { *x = CreatePublicationStmt{} - mi := &file_pg_query_proto_msgTypes[266] + mi := &file_pg_query_proto_msgTypes[269] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31052,7 +31640,7 @@ func (x *CreatePublicationStmt) String() string { func (*CreatePublicationStmt) ProtoMessage() {} func (x *CreatePublicationStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[266] + mi := &file_pg_query_proto_msgTypes[269] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31065,7 +31653,7 @@ func (x *CreatePublicationStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreatePublicationStmt.ProtoReflect.Descriptor instead. func (*CreatePublicationStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{266} + return file_pg_query_proto_rawDescGZIP(), []int{269} } func (x *CreatePublicationStmt) GetPubname() string { @@ -31109,7 +31697,7 @@ type AlterPublicationStmt struct { func (x *AlterPublicationStmt) Reset() { *x = AlterPublicationStmt{} - mi := &file_pg_query_proto_msgTypes[267] + mi := &file_pg_query_proto_msgTypes[270] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31121,7 +31709,7 @@ func (x *AlterPublicationStmt) String() string { func (*AlterPublicationStmt) ProtoMessage() {} func (x *AlterPublicationStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[267] + mi := &file_pg_query_proto_msgTypes[270] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31134,7 +31722,7 @@ func (x *AlterPublicationStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterPublicationStmt.ProtoReflect.Descriptor instead. func (*AlterPublicationStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{267} + return file_pg_query_proto_rawDescGZIP(), []int{270} } func (x *AlterPublicationStmt) GetPubname() string { @@ -31184,7 +31772,7 @@ type CreateSubscriptionStmt struct { func (x *CreateSubscriptionStmt) Reset() { *x = CreateSubscriptionStmt{} - mi := &file_pg_query_proto_msgTypes[268] + mi := &file_pg_query_proto_msgTypes[271] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31196,7 +31784,7 @@ func (x *CreateSubscriptionStmt) String() string { func (*CreateSubscriptionStmt) ProtoMessage() {} func (x *CreateSubscriptionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[268] + mi := &file_pg_query_proto_msgTypes[271] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31209,7 +31797,7 @@ func (x *CreateSubscriptionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSubscriptionStmt.ProtoReflect.Descriptor instead. func (*CreateSubscriptionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{268} + return file_pg_query_proto_rawDescGZIP(), []int{271} } func (x *CreateSubscriptionStmt) GetSubname() string { @@ -31253,7 +31841,7 @@ type AlterSubscriptionStmt struct { func (x *AlterSubscriptionStmt) Reset() { *x = AlterSubscriptionStmt{} - mi := &file_pg_query_proto_msgTypes[269] + mi := &file_pg_query_proto_msgTypes[272] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31265,7 +31853,7 @@ func (x *AlterSubscriptionStmt) String() string { func (*AlterSubscriptionStmt) ProtoMessage() {} func (x *AlterSubscriptionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[269] + mi := &file_pg_query_proto_msgTypes[272] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31278,7 +31866,7 @@ func (x *AlterSubscriptionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterSubscriptionStmt.ProtoReflect.Descriptor instead. func (*AlterSubscriptionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{269} + return file_pg_query_proto_rawDescGZIP(), []int{272} } func (x *AlterSubscriptionStmt) GetKind() AlterSubscriptionType { @@ -31327,7 +31915,7 @@ type DropSubscriptionStmt struct { func (x *DropSubscriptionStmt) Reset() { *x = DropSubscriptionStmt{} - mi := &file_pg_query_proto_msgTypes[270] + mi := &file_pg_query_proto_msgTypes[273] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31339,7 +31927,7 @@ func (x *DropSubscriptionStmt) String() string { func (*DropSubscriptionStmt) ProtoMessage() {} func (x *DropSubscriptionStmt) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[270] + mi := &file_pg_query_proto_msgTypes[273] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31352,7 +31940,7 @@ func (x *DropSubscriptionStmt) ProtoReflect() protoreflect.Message { // Deprecated: Use DropSubscriptionStmt.ProtoReflect.Descriptor instead. func (*DropSubscriptionStmt) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{270} + return file_pg_query_proto_rawDescGZIP(), []int{273} } func (x *DropSubscriptionStmt) GetSubname() string { @@ -31388,7 +31976,7 @@ type ScanToken struct { func (x *ScanToken) Reset() { *x = ScanToken{} - mi := &file_pg_query_proto_msgTypes[271] + mi := &file_pg_query_proto_msgTypes[274] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31400,7 +31988,7 @@ func (x *ScanToken) String() string { func (*ScanToken) ProtoMessage() {} func (x *ScanToken) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[271] + mi := &file_pg_query_proto_msgTypes[274] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31413,7 +32001,7 @@ func (x *ScanToken) ProtoReflect() protoreflect.Message { // Deprecated: Use ScanToken.ProtoReflect.Descriptor instead. func (*ScanToken) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{271} + return file_pg_query_proto_rawDescGZIP(), []int{274} } func (x *ScanToken) GetStart() int32 { @@ -31466,7 +32054,7 @@ type SummaryResult struct { func (x *SummaryResult) Reset() { *x = SummaryResult{} - mi := &file_pg_query_proto_msgTypes[272] + mi := &file_pg_query_proto_msgTypes[275] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31478,7 +32066,7 @@ func (x *SummaryResult) String() string { func (*SummaryResult) ProtoMessage() {} func (x *SummaryResult) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[272] + mi := &file_pg_query_proto_msgTypes[275] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31491,7 +32079,7 @@ func (x *SummaryResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SummaryResult.ProtoReflect.Descriptor instead. func (*SummaryResult) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{272} + return file_pg_query_proto_rawDescGZIP(), []int{275} } func (x *SummaryResult) GetTables() []*SummaryResult_Table { @@ -31555,7 +32143,7 @@ type SummaryResult_Table struct { func (x *SummaryResult_Table) Reset() { *x = SummaryResult_Table{} - mi := &file_pg_query_proto_msgTypes[273] + mi := &file_pg_query_proto_msgTypes[276] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31567,7 +32155,7 @@ func (x *SummaryResult_Table) String() string { func (*SummaryResult_Table) ProtoMessage() {} func (x *SummaryResult_Table) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[273] + mi := &file_pg_query_proto_msgTypes[276] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31580,7 +32168,7 @@ func (x *SummaryResult_Table) ProtoReflect() protoreflect.Message { // Deprecated: Use SummaryResult_Table.ProtoReflect.Descriptor instead. func (*SummaryResult_Table) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{272, 0} + return file_pg_query_proto_rawDescGZIP(), []int{275, 0} } func (x *SummaryResult_Table) GetName() string { @@ -31623,7 +32211,7 @@ type SummaryResult_Function struct { func (x *SummaryResult_Function) Reset() { *x = SummaryResult_Function{} - mi := &file_pg_query_proto_msgTypes[275] + mi := &file_pg_query_proto_msgTypes[278] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31635,7 +32223,7 @@ func (x *SummaryResult_Function) String() string { func (*SummaryResult_Function) ProtoMessage() {} func (x *SummaryResult_Function) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[275] + mi := &file_pg_query_proto_msgTypes[278] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31648,7 +32236,7 @@ func (x *SummaryResult_Function) ProtoReflect() protoreflect.Message { // Deprecated: Use SummaryResult_Function.ProtoReflect.Descriptor instead. func (*SummaryResult_Function) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{272, 2} + return file_pg_query_proto_rawDescGZIP(), []int{275, 2} } func (x *SummaryResult_Function) GetName() string { @@ -31690,7 +32278,7 @@ type SummaryResult_FilterColumn struct { func (x *SummaryResult_FilterColumn) Reset() { *x = SummaryResult_FilterColumn{} - mi := &file_pg_query_proto_msgTypes[276] + mi := &file_pg_query_proto_msgTypes[279] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31702,7 +32290,7 @@ func (x *SummaryResult_FilterColumn) String() string { func (*SummaryResult_FilterColumn) ProtoMessage() {} func (x *SummaryResult_FilterColumn) ProtoReflect() protoreflect.Message { - mi := &file_pg_query_proto_msgTypes[276] + mi := &file_pg_query_proto_msgTypes[279] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31715,7 +32303,7 @@ func (x *SummaryResult_FilterColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use SummaryResult_FilterColumn.ProtoReflect.Descriptor instead. func (*SummaryResult_FilterColumn) Descriptor() ([]byte, []int) { - return file_pg_query_proto_rawDescGZIP(), []int{272, 3} + return file_pg_query_proto_rawDescGZIP(), []int{275, 3} } func (x *SummaryResult_FilterColumn) GetSchemaName() string { @@ -31750,7 +32338,7 @@ const file_pg_query_proto_rawDesc = "" + "\n" + "ScanResult\x12\x18\n" + "\aversion\x18\x01 \x01(\x05R\aversion\x12+\n" + - "\x06tokens\x18\x02 \x03(\v2\x13.pg_query.ScanTokenR\x06tokens\"Վ\x01\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" + @@ -31818,50 +32406,50 @@ const file_pg_query_proto_rawDesc = "" + "\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" + - "\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\x18@ \x01(\v2\x0f.pg_query.QueryH\x00R\x05Query\x121\n" + - "\ttype_name\x18A \x01(\v2\x12.pg_query.TypeNameH\x00R\bTypeName\x124\n" + - "\n" + - "column_ref\x18B \x01(\v2\x13.pg_query.ColumnRefH\x00R\tColumnRef\x121\n" + - "\tparam_ref\x18C \x01(\v2\x12.pg_query.ParamRefH\x00R\bParamRef\x12*\n" + - "\x06a_expr\x18D \x01(\v2\x10.pg_query.A_ExprH\x00R\x06A_Expr\x121\n" + - "\ttype_cast\x18E \x01(\v2\x12.pg_query.TypeCastH\x00R\bTypeCast\x12@\n" + - "\x0ecollate_clause\x18F \x01(\v2\x17.pg_query.CollateClauseH\x00R\rCollateClause\x121\n" + - "\trole_spec\x18G \x01(\v2\x12.pg_query.RoleSpecH\x00R\bRoleSpec\x121\n" + - "\tfunc_call\x18H \x01(\v2\x12.pg_query.FuncCallH\x00R\bFuncCall\x12*\n" + - "\x06a_star\x18I \x01(\v2\x10.pg_query.A_StarH\x00R\x06A_Star\x123\n" + - "\ta_indices\x18J \x01(\v2\x13.pg_query.A_IndicesH\x00R\tA_Indices\x12?\n" + - "\ra_indirection\x18K \x01(\v2\x17.pg_query.A_IndirectionH\x00R\rA_Indirection\x12:\n" + - "\fa_array_expr\x18L \x01(\v2\x15.pg_query.A_ArrayExprH\x00R\vA_ArrayExpr\x124\n" + - "\n" + - "res_target\x18M \x01(\v2\x13.pg_query.ResTargetH\x00R\tResTarget\x12D\n" + - "\x10multi_assign_ref\x18N \x01(\v2\x18.pg_query.MultiAssignRefH\x00R\x0eMultiAssignRef\x12+\n" + - "\asort_by\x18O \x01(\v2\x10.pg_query.SortByH\x00R\x06SortBy\x124\n" + - "\n" + - "window_def\x18P \x01(\v2\x13.pg_query.WindowDefH\x00R\tWindowDef\x12C\n" + - "\x0frange_subselect\x18Q \x01(\v2\x18.pg_query.RangeSubselectH\x00R\x0eRangeSubselect\x12@\n" + - "\x0erange_function\x18R \x01(\v2\x17.pg_query.RangeFunctionH\x00R\rRangeFunction\x12D\n" + - "\x10range_table_func\x18S \x01(\v2\x18.pg_query.RangeTableFuncH\x00R\x0eRangeTableFunc\x12N\n" + - "\x14range_table_func_col\x18T \x01(\v2\x1b.pg_query.RangeTableFuncColH\x00R\x11RangeTableFuncCol\x12J\n" + - "\x12range_table_sample\x18U \x01(\v2\x1a.pg_query.RangeTableSampleH\x00R\x10RangeTableSample\x124\n" + - "\n" + - "column_def\x18V \x01(\v2\x13.pg_query.ColumnDefH\x00R\tColumnDef\x12G\n" + - "\x11table_like_clause\x18W \x01(\v2\x19.pg_query.TableLikeClauseH\x00R\x0fTableLikeClause\x124\n" + - "\n" + - "index_elem\x18X \x01(\v2\x13.pg_query.IndexElemH\x00R\tIndexElem\x12.\n" + - "\bdef_elem\x18Y \x01(\v2\x11.pg_query.DefElemH\x00R\aDefElem\x12@\n" + - "\x0elocking_clause\x18Z \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\x12S\n" + - "\x15single_partition_spec\x18` \x01(\v2\x1d.pg_query.SinglePartitionSpecH\x00R\x13SinglePartitionSpec\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" + @@ -31879,185 +32467,188 @@ const file_pg_query_proto_rawDesc = "" + "\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\x12L\n" + - "\x12trigger_transition\x18r \x01(\v2\x1b.pg_query.TriggerTransitionH\x00R\x11TriggerTransition\x127\n" + - "\vjson_output\x18s \x01(\v2\x14.pg_query.JsonOutputH\x00R\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\x18t \x01(\v2\x16.pg_query.JsonArgumentH\x00R\fJsonArgument\x12>\n" + - "\x0ejson_func_expr\x18u \x01(\v2\x16.pg_query.JsonFuncExprH\x00R\fJsonFuncExpr\x12N\n" + - "\x14json_table_path_spec\x18v \x01(\v2\x1b.pg_query.JsonTablePathSpecH\x00R\x11JsonTablePathSpec\x124\n" + - "\n" + - "json_table\x18w \x01(\v2\x13.pg_query.JsonTableH\x00R\tJsonTable\x12G\n" + - "\x11json_table_column\x18x \x01(\v2\x19.pg_query.JsonTableColumnH\x00R\x0fJsonTableColumn\x12>\n" + - "\x0ejson_key_value\x18y \x01(\v2\x16.pg_query.JsonKeyValueH\x00R\fJsonKeyValue\x12A\n" + - "\x0fjson_parse_expr\x18z \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} \x01(\v2\x1f.pg_query.JsonObjectConstructorH\x00R\x15JsonObjectConstructor\x12V\n" + - "\x16json_array_constructor\x18~ \x01(\v2\x1e.pg_query.JsonArrayConstructorH\x00R\x14JsonArrayConstructor\x12f\n" + - "\x1cjson_array_query_constructor\x18\x7f \x01(\v2#.pg_query.JsonArrayQueryConstructorH\x00R\x19JsonArrayQueryConstructor\x12Q\n" + - "\x14json_agg_constructor\x18\x80\x01 \x01(\v2\x1c.pg_query.JsonAggConstructorH\x00R\x12JsonAggConstructor\x12B\n" + - "\x0fjson_object_agg\x18\x81\x01 \x01(\v2\x17.pg_query.JsonObjectAggH\x00R\rJsonObjectAgg\x12?\n" + - "\x0ejson_array_agg\x18\x82\x01 \x01(\v2\x16.pg_query.JsonArrayAggH\x00R\fJsonArrayAgg\x12/\n" + - "\braw_stmt\x18\x83\x01 \x01(\v2\x11.pg_query.RawStmtH\x00R\aRawStmt\x128\n" + - "\vinsert_stmt\x18\x84\x01 \x01(\v2\x14.pg_query.InsertStmtH\x00R\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\x85\x01 \x01(\v2\x14.pg_query.DeleteStmtH\x00R\n" + + "\vdelete_stmt\x18\x87\x01 \x01(\v2\x14.pg_query.DeleteStmtH\x00R\n" + "DeleteStmt\x128\n" + - "\vupdate_stmt\x18\x86\x01 \x01(\v2\x14.pg_query.UpdateStmtH\x00R\n" + + "\vupdate_stmt\x18\x88\x01 \x01(\v2\x14.pg_query.UpdateStmtH\x00R\n" + "UpdateStmt\x125\n" + "\n" + - "merge_stmt\x18\x87\x01 \x01(\v2\x13.pg_query.MergeStmtH\x00R\tMergeStmt\x128\n" + - "\vselect_stmt\x18\x88\x01 \x01(\v2\x14.pg_query.SelectStmtH\x00R\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\x89\x01 \x01(\v2\x1a.pg_query.SetOperationStmtH\x00R\x10SetOperationStmt\x128\n" + - "\vreturn_stmt\x18\x8a\x01 \x01(\v2\x14.pg_query.ReturnStmtH\x00R\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\x8b\x01 \x01(\v2\x16.pg_query.PLAssignStmtH\x00R\fPLAssignStmt\x12K\n" + - "\x12create_schema_stmt\x18\x8c\x01 \x01(\v2\x1a.pg_query.CreateSchemaStmtH\x00R\x10CreateSchemaStmt\x12E\n" + - "\x10alter_table_stmt\x18\x8d\x01 \x01(\v2\x18.pg_query.AlterTableStmtH\x00R\x0eAlterTableStmt\x12T\n" + - "\x15replica_identity_stmt\x18\x8e\x01 \x01(\v2\x1d.pg_query.ReplicaIdentityStmtH\x00R\x13ReplicaIdentityStmt\x12B\n" + - "\x0falter_table_cmd\x18\x8f\x01 \x01(\v2\x17.pg_query.AlterTableCmdH\x00R\rAlterTableCmd\x12Q\n" + - "\x14alter_collation_stmt\x18\x90\x01 \x01(\v2\x1c.pg_query.AlterCollationStmtH\x00R\x12AlterCollationStmt\x12H\n" + - "\x11alter_domain_stmt\x18\x91\x01 \x01(\v2\x19.pg_query.AlterDomainStmtH\x00R\x0fAlterDomainStmt\x125\n" + - "\n" + - "grant_stmt\x18\x92\x01 \x01(\v2\x13.pg_query.GrantStmtH\x00R\tGrantStmt\x12E\n" + - "\x10object_with_args\x18\x93\x01 \x01(\v2\x18.pg_query.ObjectWithArgsH\x00R\x0eObjectWithArgs\x128\n" + - "\vaccess_priv\x18\x94\x01 \x01(\v2\x14.pg_query.AccessPrivH\x00R\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\x95\x01 \x01(\v2\x17.pg_query.GrantRoleStmtH\x00R\rGrantRoleStmt\x12j\n" + - "\x1dalter_default_privileges_stmt\x18\x96\x01 \x01(\v2$.pg_query.AlterDefaultPrivilegesStmtH\x00R\x1aAlterDefaultPrivilegesStmt\x122\n" + - "\tcopy_stmt\x18\x97\x01 \x01(\v2\x12.pg_query.CopyStmtH\x00R\bCopyStmt\x12H\n" + - "\x11variable_set_stmt\x18\x98\x01 \x01(\v2\x19.pg_query.VariableSetStmtH\x00R\x0fVariableSetStmt\x12K\n" + - "\x12variable_show_stmt\x18\x99\x01 \x01(\v2\x1a.pg_query.VariableShowStmtH\x00R\x10VariableShowStmt\x128\n" + - "\vcreate_stmt\x18\x9a\x01 \x01(\v2\x14.pg_query.CreateStmtH\x00R\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\x9b\x01 \x01(\v2\x14.pg_query.ConstraintH\x00R\n" + + "constraint\x18\x9e\x01 \x01(\v2\x14.pg_query.ConstraintH\x00R\n" + "Constraint\x12X\n" + - "\x17create_table_space_stmt\x18\x9c\x01 \x01(\v2\x1e.pg_query.CreateTableSpaceStmtH\x00R\x14CreateTableSpaceStmt\x12R\n" + - "\x15drop_table_space_stmt\x18\x9d\x01 \x01(\v2\x1c.pg_query.DropTableSpaceStmtH\x00R\x12DropTableSpaceStmt\x12k\n" + - "\x1ealter_table_space_options_stmt\x18\x9e\x01 \x01(\v2$.pg_query.AlterTableSpaceOptionsStmtH\x00R\x1aAlterTableSpaceOptionsStmt\x12\\\n" + - "\x19alter_table_move_all_stmt\x18\x9f\x01 \x01(\v2\x1f.pg_query.AlterTableMoveAllStmtH\x00R\x15AlterTableMoveAllStmt\x12T\n" + - "\x15create_extension_stmt\x18\xa0\x01 \x01(\v2\x1d.pg_query.CreateExtensionStmtH\x00R\x13CreateExtensionStmt\x12Q\n" + - "\x14alter_extension_stmt\x18\xa1\x01 \x01(\v2\x1c.pg_query.AlterExtensionStmtH\x00R\x12AlterExtensionStmt\x12j\n" + - "\x1dalter_extension_contents_stmt\x18\xa2\x01 \x01(\v2$.pg_query.AlterExtensionContentsStmtH\x00R\x1aAlterExtensionContentsStmt\x12B\n" + - "\x0fcreate_fdw_stmt\x18\xa3\x01 \x01(\v2\x17.pg_query.CreateFdwStmtH\x00R\rCreateFdwStmt\x12?\n" + - "\x0ealter_fdw_stmt\x18\xa4\x01 \x01(\v2\x16.pg_query.AlterFdwStmtH\x00R\fAlterFdwStmt\x12a\n" + - "\x1acreate_foreign_server_stmt\x18\xa5\x01 \x01(\v2!.pg_query.CreateForeignServerStmtH\x00R\x17CreateForeignServerStmt\x12^\n" + - "\x19alter_foreign_server_stmt\x18\xa6\x01 \x01(\v2 .pg_query.AlterForeignServerStmtH\x00R\x16AlterForeignServerStmt\x12^\n" + - "\x19create_foreign_table_stmt\x18\xa7\x01 \x01(\v2 .pg_query.CreateForeignTableStmtH\x00R\x16CreateForeignTableStmt\x12[\n" + - "\x18create_user_mapping_stmt\x18\xa8\x01 \x01(\v2\x1f.pg_query.CreateUserMappingStmtH\x00R\x15CreateUserMappingStmt\x12X\n" + - "\x17alter_user_mapping_stmt\x18\xa9\x01 \x01(\v2\x1e.pg_query.AlterUserMappingStmtH\x00R\x14AlterUserMappingStmt\x12U\n" + - "\x16drop_user_mapping_stmt\x18\xaa\x01 \x01(\v2\x1d.pg_query.DropUserMappingStmtH\x00R\x13DropUserMappingStmt\x12a\n" + - "\x1aimport_foreign_schema_stmt\x18\xab\x01 \x01(\v2!.pg_query.ImportForeignSchemaStmtH\x00R\x17ImportForeignSchemaStmt\x12K\n" + - "\x12create_policy_stmt\x18\xac\x01 \x01(\v2\x1a.pg_query.CreatePolicyStmtH\x00R\x10CreatePolicyStmt\x12H\n" + - "\x11alter_policy_stmt\x18\xad\x01 \x01(\v2\x19.pg_query.AlterPolicyStmtH\x00R\x0fAlterPolicyStmt\x12?\n" + - "\x0ecreate_am_stmt\x18\xae\x01 \x01(\v2\x16.pg_query.CreateAmStmtH\x00R\fCreateAmStmt\x12E\n" + - "\x10create_trig_stmt\x18\xaf\x01 \x01(\v2\x18.pg_query.CreateTrigStmtH\x00R\x0eCreateTrigStmt\x12U\n" + - "\x16create_event_trig_stmt\x18\xb0\x01 \x01(\v2\x1d.pg_query.CreateEventTrigStmtH\x00R\x13CreateEventTrigStmt\x12R\n" + - "\x15alter_event_trig_stmt\x18\xb1\x01 \x01(\v2\x1c.pg_query.AlterEventTrigStmtH\x00R\x12AlterEventTrigStmt\x12H\n" + - "\x11create_plang_stmt\x18\xb2\x01 \x01(\v2\x19.pg_query.CreatePLangStmtH\x00R\x0fCreatePLangStmt\x12E\n" + - "\x10create_role_stmt\x18\xb3\x01 \x01(\v2\x18.pg_query.CreateRoleStmtH\x00R\x0eCreateRoleStmt\x12B\n" + - "\x0falter_role_stmt\x18\xb4\x01 \x01(\v2\x17.pg_query.AlterRoleStmtH\x00R\rAlterRoleStmt\x12L\n" + - "\x13alter_role_set_stmt\x18\xb5\x01 \x01(\v2\x1a.pg_query.AlterRoleSetStmtH\x00R\x10AlterRoleSetStmt\x12?\n" + - "\x0edrop_role_stmt\x18\xb6\x01 \x01(\v2\x16.pg_query.DropRoleStmtH\x00R\fDropRoleStmt\x12B\n" + - "\x0fcreate_seq_stmt\x18\xb7\x01 \x01(\v2\x17.pg_query.CreateSeqStmtH\x00R\rCreateSeqStmt\x12?\n" + - "\x0ealter_seq_stmt\x18\xb8\x01 \x01(\v2\x16.pg_query.AlterSeqStmtH\x00R\fAlterSeqStmt\x128\n" + - "\vdefine_stmt\x18\xb9\x01 \x01(\v2\x14.pg_query.DefineStmtH\x00R\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\xba\x01 \x01(\v2\x1a.pg_query.CreateDomainStmtH\x00R\x10CreateDomainStmt\x12O\n" + - "\x14create_op_class_stmt\x18\xbb\x01 \x01(\v2\x1b.pg_query.CreateOpClassStmtH\x00R\x11CreateOpClassStmt\x12O\n" + - "\x14create_op_class_item\x18\xbc\x01 \x01(\v2\x1b.pg_query.CreateOpClassItemH\x00R\x11CreateOpClassItem\x12R\n" + - "\x15create_op_family_stmt\x18\xbd\x01 \x01(\v2\x1c.pg_query.CreateOpFamilyStmtH\x00R\x12CreateOpFamilyStmt\x12O\n" + - "\x14alter_op_family_stmt\x18\xbe\x01 \x01(\v2\x1b.pg_query.AlterOpFamilyStmtH\x00R\x11AlterOpFamilyStmt\x122\n" + - "\tdrop_stmt\x18\xbf\x01 \x01(\v2\x12.pg_query.DropStmtH\x00R\bDropStmt\x12>\n" + - "\rtruncate_stmt\x18\xc0\x01 \x01(\v2\x16.pg_query.TruncateStmtH\x00R\fTruncateStmt\x12;\n" + - "\fcomment_stmt\x18\xc1\x01 \x01(\v2\x15.pg_query.CommentStmtH\x00R\vCommentStmt\x12?\n" + - "\x0esec_label_stmt\x18\xc2\x01 \x01(\v2\x16.pg_query.SecLabelStmtH\x00R\fSecLabelStmt\x12N\n" + - "\x13declare_cursor_stmt\x18\xc3\x01 \x01(\v2\x1b.pg_query.DeclareCursorStmtH\x00R\x11DeclareCursorStmt\x12H\n" + - "\x11close_portal_stmt\x18\xc4\x01 \x01(\v2\x19.pg_query.ClosePortalStmtH\x00R\x0fClosePortalStmt\x125\n" + - "\n" + - "fetch_stmt\x18\xc5\x01 \x01(\v2\x13.pg_query.FetchStmtH\x00R\tFetchStmt\x125\n" + - "\n" + - "index_stmt\x18\xc6\x01 \x01(\v2\x13.pg_query.IndexStmtH\x00R\tIndexStmt\x12H\n" + - "\x11create_stats_stmt\x18\xc7\x01 \x01(\v2\x19.pg_query.CreateStatsStmtH\x00R\x0fCreateStatsStmt\x125\n" + - "\n" + - "stats_elem\x18\xc8\x01 \x01(\v2\x13.pg_query.StatsElemH\x00R\tStatsElem\x12E\n" + - "\x10alter_stats_stmt\x18\xc9\x01 \x01(\v2\x18.pg_query.AlterStatsStmtH\x00R\x0eAlterStatsStmt\x12Q\n" + - "\x14create_function_stmt\x18\xca\x01 \x01(\v2\x1c.pg_query.CreateFunctionStmtH\x00R\x12CreateFunctionStmt\x12M\n" + - "\x12function_parameter\x18\xcb\x01 \x01(\v2\x1b.pg_query.FunctionParameterH\x00R\x11FunctionParameter\x12N\n" + - "\x13alter_function_stmt\x18\xcc\x01 \x01(\v2\x1b.pg_query.AlterFunctionStmtH\x00R\x11AlterFunctionStmt\x12,\n" + - "\ado_stmt\x18\xcd\x01 \x01(\v2\x10.pg_query.DoStmtH\x00R\x06DoStmt\x12H\n" + - "\x11inline_code_block\x18\xce\x01 \x01(\v2\x19.pg_query.InlineCodeBlockH\x00R\x0fInlineCodeBlock\x122\n" + - "\tcall_stmt\x18\xcf\x01 \x01(\v2\x12.pg_query.CallStmtH\x00R\bCallStmt\x12;\n" + - "\fcall_context\x18\xd0\x01 \x01(\v2\x15.pg_query.CallContextH\x00R\vCallContext\x128\n" + - "\vrename_stmt\x18\xd1\x01 \x01(\v2\x14.pg_query.RenameStmtH\x00R\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\xd2\x01 \x01(\v2 .pg_query.AlterObjectDependsStmtH\x00R\x16AlterObjectDependsStmt\x12[\n" + - "\x18alter_object_schema_stmt\x18\xd3\x01 \x01(\v2\x1f.pg_query.AlterObjectSchemaStmtH\x00R\x15AlterObjectSchemaStmt\x12E\n" + - "\x10alter_owner_stmt\x18\xd4\x01 \x01(\v2\x18.pg_query.AlterOwnerStmtH\x00R\x0eAlterOwnerStmt\x12N\n" + - "\x13alter_operator_stmt\x18\xd5\x01 \x01(\v2\x1b.pg_query.AlterOperatorStmtH\x00R\x11AlterOperatorStmt\x12B\n" + - "\x0falter_type_stmt\x18\xd6\x01 \x01(\v2\x17.pg_query.AlterTypeStmtH\x00R\rAlterTypeStmt\x122\n" + - "\trule_stmt\x18\xd7\x01 \x01(\v2\x12.pg_query.RuleStmtH\x00R\bRuleStmt\x128\n" + - "\vnotify_stmt\x18\xd8\x01 \x01(\v2\x14.pg_query.NotifyStmtH\x00R\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\xd9\x01 \x01(\v2\x14.pg_query.ListenStmtH\x00R\n" + + "\vlisten_stmt\x18\xdc\x01 \x01(\v2\x14.pg_query.ListenStmtH\x00R\n" + "ListenStmt\x12>\n" + - "\runlisten_stmt\x18\xda\x01 \x01(\v2\x16.pg_query.UnlistenStmtH\x00R\fUnlistenStmt\x12G\n" + - "\x10transaction_stmt\x18\xdb\x01 \x01(\v2\x19.pg_query.TransactionStmtH\x00R\x0fTransactionStmt\x12N\n" + - "\x13composite_type_stmt\x18\xdc\x01 \x01(\v2\x1b.pg_query.CompositeTypeStmtH\x00R\x11CompositeTypeStmt\x12E\n" + - "\x10create_enum_stmt\x18\xdd\x01 \x01(\v2\x18.pg_query.CreateEnumStmtH\x00R\x0eCreateEnumStmt\x12H\n" + - "\x11create_range_stmt\x18\xde\x01 \x01(\v2\x19.pg_query.CreateRangeStmtH\x00R\x0fCreateRangeStmt\x12B\n" + - "\x0falter_enum_stmt\x18\xdf\x01 \x01(\v2\x17.pg_query.AlterEnumStmtH\x00R\rAlterEnumStmt\x122\n" + - "\tview_stmt\x18\xe0\x01 \x01(\v2\x12.pg_query.ViewStmtH\x00R\bViewStmt\x122\n" + - "\tload_stmt\x18\xe1\x01 \x01(\v2\x12.pg_query.LoadStmtH\x00R\bLoadStmt\x12>\n" + - "\rcreatedb_stmt\x18\xe2\x01 \x01(\v2\x16.pg_query.CreatedbStmtH\x00R\fCreatedbStmt\x12N\n" + - "\x13alter_database_stmt\x18\xe3\x01 \x01(\v2\x1b.pg_query.AlterDatabaseStmtH\x00R\x11AlterDatabaseStmt\x12q\n" + - " alter_database_refresh_coll_stmt\x18\xe4\x01 \x01(\v2&.pg_query.AlterDatabaseRefreshCollStmtH\x00R\x1cAlterDatabaseRefreshCollStmt\x12X\n" + - "\x17alter_database_set_stmt\x18\xe5\x01 \x01(\v2\x1e.pg_query.AlterDatabaseSetStmtH\x00R\x14AlterDatabaseSetStmt\x128\n" + - "\vdropdb_stmt\x18\xe6\x01 \x01(\v2\x14.pg_query.DropdbStmtH\x00R\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\xe7\x01 \x01(\v2\x19.pg_query.AlterSystemStmtH\x00R\x0fAlterSystemStmt\x12;\n" + - "\fcluster_stmt\x18\xe8\x01 \x01(\v2\x15.pg_query.ClusterStmtH\x00R\vClusterStmt\x128\n" + - "\vvacuum_stmt\x18\xe9\x01 \x01(\v2\x14.pg_query.VacuumStmtH\x00R\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\xea\x01 \x01(\v2\x18.pg_query.VacuumRelationH\x00R\x0eVacuumRelation\x12;\n" + - "\fexplain_stmt\x18\xeb\x01 \x01(\v2\x15.pg_query.ExplainStmtH\x00R\vExplainStmt\x12O\n" + - "\x14create_table_as_stmt\x18\xec\x01 \x01(\v2\x1b.pg_query.CreateTableAsStmtH\x00R\x11CreateTableAsStmt\x12R\n" + - "\x15refresh_mat_view_stmt\x18\xed\x01 \x01(\v2\x1c.pg_query.RefreshMatViewStmtH\x00R\x12RefreshMatViewStmt\x12E\n" + - "\x10check_point_stmt\x18\xee\x01 \x01(\v2\x18.pg_query.CheckPointStmtH\x00R\x0eCheckPointStmt\x12;\n" + - "\fdiscard_stmt\x18\xef\x01 \x01(\v2\x15.pg_query.DiscardStmtH\x00R\vDiscardStmt\x122\n" + - "\tlock_stmt\x18\xf0\x01 \x01(\v2\x12.pg_query.LockStmtH\x00R\bLockStmt\x12Q\n" + - "\x14constraints_set_stmt\x18\xf1\x01 \x01(\v2\x1c.pg_query.ConstraintsSetStmtH\x00R\x12ConstraintsSetStmt\x12;\n" + - "\freindex_stmt\x18\xf2\x01 \x01(\v2\x15.pg_query.ReindexStmtH\x00R\vReindexStmt\x12W\n" + - "\x16create_conversion_stmt\x18\xf3\x01 \x01(\v2\x1e.pg_query.CreateConversionStmtH\x00R\x14CreateConversionStmt\x12E\n" + - "\x10create_cast_stmt\x18\xf4\x01 \x01(\v2\x18.pg_query.CreateCastStmtH\x00R\x0eCreateCastStmt\x12T\n" + - "\x15create_transform_stmt\x18\xf5\x01 \x01(\v2\x1d.pg_query.CreateTransformStmtH\x00R\x13CreateTransformStmt\x12;\n" + - "\fprepare_stmt\x18\xf6\x01 \x01(\v2\x15.pg_query.PrepareStmtH\x00R\vPrepareStmt\x12;\n" + - "\fexecute_stmt\x18\xf7\x01 \x01(\v2\x15.pg_query.ExecuteStmtH\x00R\vExecuteStmt\x12D\n" + - "\x0fdeallocate_stmt\x18\xf8\x01 \x01(\v2\x18.pg_query.DeallocateStmtH\x00R\x0eDeallocateStmt\x12B\n" + - "\x0fdrop_owned_stmt\x18\xf9\x01 \x01(\v2\x17.pg_query.DropOwnedStmtH\x00R\rDropOwnedStmt\x12N\n" + - "\x13reassign_owned_stmt\x18\xfa\x01 \x01(\v2\x1b.pg_query.ReassignOwnedStmtH\x00R\x11ReassignOwnedStmt\x12Z\n" + - "\x17alter_tsdictionary_stmt\x18\xfb\x01 \x01(\v2\x1f.pg_query.AlterTSDictionaryStmtH\x00R\x15AlterTSDictionaryStmt\x12c\n" + - "\x1aalter_tsconfiguration_stmt\x18\xfc\x01 \x01(\v2\".pg_query.AlterTSConfigurationStmtH\x00R\x18AlterTSConfigurationStmt\x12J\n" + - "\x11publication_table\x18\xfd\x01 \x01(\v2\x1a.pg_query.PublicationTableH\x00R\x10PublicationTable\x12Q\n" + - "\x14publication_obj_spec\x18\xfe\x01 \x01(\v2\x1c.pg_query.PublicationObjSpecH\x00R\x12PublicationObjSpec\x12Z\n" + - "\x17create_publication_stmt\x18\xff\x01 \x01(\v2\x1f.pg_query.CreatePublicationStmtH\x00R\x15CreatePublicationStmt\x12W\n" + - "\x16alter_publication_stmt\x18\x80\x02 \x01(\v2\x1e.pg_query.AlterPublicationStmtH\x00R\x14AlterPublicationStmt\x12]\n" + - "\x18create_subscription_stmt\x18\x81\x02 \x01(\v2 .pg_query.CreateSubscriptionStmtH\x00R\x16CreateSubscriptionStmt\x12Z\n" + - "\x17alter_subscription_stmt\x18\x82\x02 \x01(\v2\x1f.pg_query.AlterSubscriptionStmtH\x00R\x15AlterSubscriptionStmt\x12W\n" + - "\x16drop_subscription_stmt\x18\x83\x02 \x01(\v2\x1e.pg_query.DropSubscriptionStmtH\x00R\x14DropSubscriptionStmt\x12.\n" + - "\ainteger\x18\x84\x02 \x01(\v2\x11.pg_query.IntegerH\x00R\aInteger\x12(\n" + - "\x05float\x18\x85\x02 \x01(\v2\x0f.pg_query.FloatH\x00R\x05Float\x12.\n" + - "\aboolean\x18\x86\x02 \x01(\v2\x11.pg_query.BooleanH\x00R\aBoolean\x12+\n" + - "\x06string\x18\x87\x02 \x01(\v2\x10.pg_query.StringH\x00R\x06String\x125\n" + - "\n" + - "bit_string\x18\x88\x02 \x01(\v2\x13.pg_query.BitStringH\x00R\tBitString\x12%\n" + - "\x04list\x18\x89\x02 \x01(\v2\x0e.pg_query.ListH\x00R\x04List\x12/\n" + - "\bint_list\x18\x8a\x02 \x01(\v2\x11.pg_query.IntListH\x00R\aIntList\x12/\n" + - "\boid_list\x18\x8b\x02 \x01(\v2\x11.pg_query.OidListH\x00R\aOidList\x12.\n" + - "\aa_const\x18\x8c\x02 \x01(\v2\x11.pg_query.A_ConstH\x00R\aA_ConstB\x06\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" + @@ -32118,7 +32709,7 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\xdb\x02\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" + @@ -32126,10 +32717,10 @@ const file_pg_query_proto_rawDesc = "" + "\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" + + "\x10table_space_name\x18\x06 \x01(\tR\x0etableSpaceName\x12.\n" + "\n" + - "view_query\x18\a \x01(\v2\x0e.pg_query.NodeR\tviewQuery\x12\x1b\n" + - "\tskip_data\x18\b \x01(\bR\bskipData\"\x95\x02\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" + @@ -32138,8 +32729,10 @@ const file_pg_query_proto_rawDesc = "" + "\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\x12\x1a\n" + - "\blocation\x18\t \x01(\x05R\blocation\"\xf4\x01\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" + @@ -32393,15 +32986,19 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\x83\x02\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\x1a\n" + - "\blocation\x18\a \x01(\x05R\blocation\"\xef\x01\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" + @@ -32412,10 +33009,10 @@ const file_pg_query_proto_rawDesc = "" + "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\"\xba\x02\n" + + "\blocation\x18\x06 \x01(\x05R\blocation\"\xb9\x02\n" + "\x0eRowCompareExpr\x12 \n" + - "\x03xpr\x18\x01 \x01(\v2\x0e.pg_query.NodeR\x03xpr\x120\n" + - "\x06rctype\x18\x02 \x01(\x0e2\x18.pg_query.RowCompareTypeR\x06rctype\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" + @@ -32582,7 +33179,12 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\x87\x02\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" + @@ -32622,7 +33224,7 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\xc6\x0f\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" + @@ -32638,40 +33240,43 @@ const file_pg_query_proto_rawDesc = "" + "\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\x1b\n" + - "\tis_return\x18\x0f \x01(\bR\bisReturn\x12)\n" + - "\bcte_list\x18\x10 \x03(\v2\x0e.pg_query.NodeR\acteList\x12&\n" + - "\x06rtable\x18\x11 \x03(\v2\x0e.pg_query.NodeR\x06rtable\x122\n" + - "\frteperminfos\x18\x12 \x03(\v2\x0e.pg_query.NodeR\frteperminfos\x12.\n" + - "\bjointree\x18\x13 \x01(\v2\x12.pg_query.FromExprR\bjointree\x12:\n" + - "\x11merge_action_list\x18\x14 \x03(\v2\x0e.pg_query.NodeR\x0fmergeActionList\x122\n" + - "\x15merge_target_relation\x18\x15 \x01(\x05R\x13mergeTargetRelation\x12@\n" + - "\x14merge_join_condition\x18\x16 \x01(\v2\x0e.pg_query.NodeR\x12mergeJoinCondition\x12/\n" + - "\vtarget_list\x18\x17 \x03(\v2\x0e.pg_query.NodeR\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\x18 \x01(\x0e2\x18.pg_query.OverridingKindR\boverride\x129\n" + - "\von_conflict\x18\x19 \x01(\v2\x18.pg_query.OnConflictExprR\n" + - "onConflict\x125\n" + - "\x0ereturning_list\x18\x1a \x03(\v2\x0e.pg_query.NodeR\rreturningList\x121\n" + - "\fgroup_clause\x18\x1b \x03(\v2\x0e.pg_query.NodeR\vgroupClause\x12%\n" + - "\x0egroup_distinct\x18\x1c \x01(\bR\rgroupDistinct\x123\n" + - "\rgrouping_sets\x18\x1d \x03(\v2\x0e.pg_query.NodeR\fgroupingSets\x12/\n" + - "\vhaving_qual\x18\x1e \x01(\v2\x0e.pg_query.NodeR\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\x1f \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" + + "\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" + + "\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" + + "\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" + @@ -32686,13 +33291,15 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\xbf\x01\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\x1a\n" + - "\blocation\x18\x05 \x01(\x05R\blocation\"y\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" + @@ -32729,10 +33336,14 @@ const file_pg_query_proto_rawDesc = "" + "\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\"U\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\x1a\n" + - "\blocation\x18\x02 \x01(\x05R\blocation\"\x8f\x01\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" + @@ -32885,14 +33496,13 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\x15\n" + - "\x13SinglePartitionSpec\"\x8a\x01\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\"\xb9\n" + + "concurrent\"\xe9\n" + "\n" + "\rRangeTblEntry\x12%\n" + "\x05alias\x18\x01 \x01(\v2\x0f.pg_query.AliasR\x05alias\x12#\n" + @@ -32926,11 +33536,14 @@ const file_pg_query_proto_rawDesc = "" + "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\x18\n" + - "\alateral\x18\x1e \x01(\bR\alateral\x12\x1c\n" + + "\tenrtuples\x18\x1d \x01(\x01R\tenrtuples\x12.\n" + "\n" + - "in_from_cl\x18\x1f \x01(\bR\binFromCl\x125\n" + - "\x0esecurity_quals\x18 \x03(\v2\x0e.pg_query.NodeR\rsecurityQuals\"\xf3\x01\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" + @@ -32962,13 +33575,14 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\xa8\x01\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" + - "\vnulls_first\x18\x04 \x01(\bR\vnulls_first\x12\x1a\n" + - "\bhashable\x18\x05 \x01(\bR\bhashable\"\x82\x01\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" + @@ -33056,7 +33670,14 @@ const file_pg_query_proto_rawDesc = "" + "\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\"Y\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" + @@ -33161,26 +33782,26 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\xff\x02\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\x125\n" + - "\x0ereturning_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\rreturningList\x125\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\"\x90\x02\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\x125\n" + - "\x0ereturning_list\x18\x04 \x03(\v2\x0e.pg_query.NodeR\rreturningList\x125\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\"\xbf\x02\n" + + "withClause\"\xce\x02\n" + "\n" + "UpdateStmt\x12.\n" + "\brelation\x18\x01 \x01(\v2\x12.pg_query.RangeVarR\brelation\x12/\n" + @@ -33188,16 +33809,16 @@ const file_pg_query_proto_rawDesc = "" + "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\x125\n" + - "\x0ereturning_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\rreturningList\x125\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\"\xd7\x02\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\x125\n" + - "\x0ereturning_list\x18\x05 \x03(\v2\x0e.pg_query.NodeR\rreturningList\x125\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" + @@ -33262,10 +33883,7 @@ const file_pg_query_proto_rawDesc = "" + "\aobjtype\x18\x03 \x01(\x0e2\x14.pg_query.ObjectTypeR\aobjtype\x12\x1e\n" + "\n" + "missing_ok\x18\x04 \x01(\bR\n" + - "missing_ok\"O\n" + - "\x13ReplicaIdentityStmt\x12$\n" + - "\ridentity_type\x18\x01 \x01(\tR\ridentity_type\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\"\xa9\x02\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" + @@ -33276,7 +33894,21 @@ const file_pg_query_proto_rawDesc = "" + "\n" + "missing_ok\x18\a \x01(\bR\n" + "missing_ok\x12\x18\n" + - "\arecurse\x18\b \x01(\bR\arecurse\"@\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" + @@ -33329,14 +33961,16 @@ const file_pg_query_proto_rawDesc = "" + "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\"\x94\x01\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\x1a\n" + - "\bis_local\x18\x04 \x01(\bR\bis_local\"&\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\"\xcb\x04\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" + @@ -33347,13 +33981,14 @@ const file_pg_query_proto_rawDesc = "" + "\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\x12(\n" + - "\aoptions\x18\b \x03(\v2\x0e.pg_query.NodeR\aoptions\x124\n" + - "\boncommit\x18\t \x01(\x0e2\x18.pg_query.OnCommitActionR\boncommit\x12&\n" + - "\x0etablespacename\x18\n" + - " \x01(\tR\x0etablespacename\x12#\n" + - "\raccess_method\x18\v \x01(\tR\faccessMethod\x12$\n" + - "\rif_not_exists\x18\f \x01(\bR\rif_not_exists\"\xfa\t\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" + @@ -33361,39 +33996,43 @@ const file_pg_query_proto_rawDesc = "" + "\n" + "deferrable\x18\x03 \x01(\bR\n" + "deferrable\x12\"\n" + - "\finitdeferred\x18\x04 \x01(\bR\finitdeferred\x12(\n" + - "\x0fskip_validation\x18\x05 \x01(\bR\x0fskip_validation\x12(\n" + - "\x0finitially_valid\x18\x06 \x01(\bR\x0finitially_valid\x12$\n" + - "\ris_no_inherit\x18\a \x01(\bR\ris_no_inherit\x12*\n" + - "\braw_expr\x18\b \x01(\v2\x0e.pg_query.NodeR\braw_expr\x12 \n" + - "\vcooked_expr\x18\t \x01(\tR\vcooked_expr\x12&\n" + - "\x0egenerated_when\x18\n" + - " \x01(\tR\x0egenerated_when\x12\x1a\n" + - "\binhcount\x18\v \x01(\x05R\binhcount\x12.\n" + - "\x12nulls_not_distinct\x18\f \x01(\bR\x12nulls_not_distinct\x12\"\n" + - "\x04keys\x18\r \x03(\v2\x0e.pg_query.NodeR\x04keys\x12,\n" + - "\tincluding\x18\x0e \x03(\v2\x0e.pg_query.NodeR\tincluding\x12.\n" + - "\n" + - "exclusions\x18\x0f \x03(\v2\x0e.pg_query.NodeR\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\x10 \x03(\v2\x0e.pg_query.NodeR\aoptions\x12\x1c\n" + - "\tindexname\x18\x11 \x01(\tR\tindexname\x12\x1e\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\x12 \x01(\tR\n" + + "indexspace\x18\x14 \x01(\tR\n" + "indexspace\x122\n" + - "\x14reset_default_tblspc\x18\x13 \x01(\bR\x14reset_default_tblspc\x12$\n" + - "\raccess_method\x18\x14 \x01(\tR\raccess_method\x122\n" + - "\fwhere_clause\x18\x15 \x01(\v2\x0e.pg_query.NodeR\fwhere_clause\x12,\n" + - "\apktable\x18\x16 \x01(\v2\x12.pg_query.RangeVarR\apktable\x12*\n" + - "\bfk_attrs\x18\x17 \x03(\v2\x0e.pg_query.NodeR\bfk_attrs\x12*\n" + - "\bpk_attrs\x18\x18 \x03(\v2\x0e.pg_query.NodeR\bpk_attrs\x12\"\n" + - "\ffk_matchtype\x18\x19 \x01(\tR\ffk_matchtype\x12$\n" + - "\rfk_upd_action\x18\x1a \x01(\tR\rfk_upd_action\x12$\n" + - "\rfk_del_action\x18\x1b \x01(\tR\rfk_del_action\x128\n" + - "\x0ffk_del_set_cols\x18\x1c \x03(\v2\x0e.pg_query.NodeR\x0ffk_del_set_cols\x124\n" + - "\rold_conpfeqop\x18\x1d \x03(\v2\x0e.pg_query.NodeR\rold_conpfeqop\x12(\n" + - "\x0fold_pktable_oid\x18\x1e \x01(\rR\x0fold_pktable_oid\x12\x1a\n" + - "\blocation\x18\x1f \x01(\x05R\blocation\"\xae\x01\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" + @@ -33665,7 +34304,7 @@ const file_pg_query_proto_rawDesc = "" + "\n" + "portalname\x18\x03 \x01(\tR\n" + "portalname\x12\x16\n" + - "\x06ismove\x18\x04 \x01(\bR\x06ismove\"\xdc\a\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" + @@ -33689,17 +34328,18 @@ const file_pg_query_proto_rawDesc = "" + "\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\x1e\n" + + "\fisconstraint\x18\x12 \x01(\bR\fisconstraint\x12,\n" + + "\x11iswithoutoverlaps\x18\x13 \x01(\bR\x11iswithoutoverlaps\x12\x1e\n" + "\n" + - "deferrable\x18\x13 \x01(\bR\n" + + "deferrable\x18\x14 \x01(\bR\n" + "deferrable\x12\"\n" + - "\finitdeferred\x18\x14 \x01(\bR\finitdeferred\x12 \n" + - "\vtransformed\x18\x15 \x01(\bR\vtransformed\x12\x1e\n" + + "\finitdeferred\x18\x15 \x01(\bR\finitdeferred\x12 \n" + + "\vtransformed\x18\x16 \x01(\bR\vtransformed\x12\x1e\n" + "\n" + - "concurrent\x18\x16 \x01(\bR\n" + + "concurrent\x18\x17 \x01(\bR\n" + "concurrent\x12$\n" + - "\rif_not_exists\x18\x17 \x01(\bR\rif_not_exists\x122\n" + - "\x14reset_default_tblspc\x18\x18 \x01(\bR\x14reset_default_tblspc\"\xa9\x02\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" + @@ -33731,12 +34371,13 @@ const file_pg_query_proto_rawDesc = "" + "\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\"\xb5\x01\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\"\x9b\x01\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" + @@ -34123,7 +34764,7 @@ const file_pg_query_proto_rawDesc = "" + "$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*\xbd\x01\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" + @@ -34136,7 +34777,9 @@ const file_pg_query_proto_rawDesc = "" + "\aRTE_CTE\x10\a\x12\x17\n" + "\x13RTE_NAMEDTUPLESTORE\x10\b\x12\x0e\n" + "\n" + - "RTE_RESULT\x10\t*\xc4\x01\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" + @@ -34156,7 +34799,11 @@ const file_pg_query_proto_rawDesc = "" + "\x18CTEMATERIALIZE_UNDEFINED\x10\x00\x12\x19\n" + "\x15CTEMaterializeDefault\x10\x01\x12\x18\n" + "\x14CTEMaterializeAlways\x10\x02\x12\x17\n" + - "\x13CTEMaterializeNever\x10\x03*e\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" + @@ -34239,7 +34886,7 @@ const file_pg_query_proto_rawDesc = "" + "\fDropBehavior\x12\x1b\n" + "\x17DROP_BEHAVIOR_UNDEFINED\x10\x00\x12\x11\n" + "\rDROP_RESTRICT\x10\x01\x12\x10\n" + - "\fDROP_CASCADE\x10\x02*\x8c\f\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" + @@ -34249,67 +34896,66 @@ const file_pg_query_proto_rawDesc = "" + "\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\x13\n" + - "\x0fAT_CheckNotNull\x10\t\x12\x14\n" + - "\x10AT_SetStatistics\x10\n" + - "\x12\x11\n" + - "\rAT_SetOptions\x10\v\x12\x13\n" + - "\x0fAT_ResetOptions\x10\f\x12\x11\n" + - "\rAT_SetStorage\x10\r\x12\x15\n" + - "\x11AT_SetCompression\x10\x0e\x12\x11\n" + - "\rAT_DropColumn\x10\x0f\x12\x0f\n" + - "\vAT_AddIndex\x10\x10\x12\x11\n" + - "\rAT_ReAddIndex\x10\x11\x12\x14\n" + - "\x10AT_AddConstraint\x10\x12\x12\x16\n" + - "\x12AT_ReAddConstraint\x10\x13\x12\x1c\n" + - "\x18AT_ReAddDomainConstraint\x10\x14\x12\x16\n" + - "\x12AT_AlterConstraint\x10\x15\x12\x19\n" + - "\x15AT_ValidateConstraint\x10\x16\x12\x19\n" + - "\x15AT_AddIndexConstraint\x10\x17\x12\x15\n" + - "\x11AT_DropConstraint\x10\x18\x12\x13\n" + - "\x0fAT_ReAddComment\x10\x19\x12\x16\n" + - "\x12AT_AlterColumnType\x10\x1a\x12 \n" + - "\x1cAT_AlterColumnGenericOptions\x10\x1b\x12\x12\n" + - "\x0eAT_ChangeOwner\x10\x1c\x12\x10\n" + - "\fAT_ClusterOn\x10\x1d\x12\x12\n" + - "\x0eAT_DropCluster\x10\x1e\x12\x10\n" + - "\fAT_SetLogged\x10\x1f\x12\x12\n" + - "\x0eAT_SetUnLogged\x10 \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\x100\x12\x18\n" + - "\x14AT_EnableReplicaRule\x101\x12\x12\n" + - "\x0eAT_DisableRule\x102\x12\x11\n" + - "\rAT_AddInherit\x103\x12\x12\n" + - "\x0eAT_DropInherit\x104\x12\f\n" + - "\bAT_AddOf\x105\x12\r\n" + - "\tAT_DropOf\x106\x12\x16\n" + - "\x12AT_ReplicaIdentity\x107\x12\x18\n" + - "\x14AT_EnableRowSecurity\x108\x12\x19\n" + - "\x15AT_DisableRowSecurity\x109\x12\x17\n" + - "\x13AT_ForceRowSecurity\x10:\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\x10A\x12\x13\n" + - "\x0fAT_DropIdentity\x10B\x12\x16\n" + - "\x12AT_ReAddStatistics\x10C*\x80\x01\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" + @@ -34322,7 +34968,7 @@ const file_pg_query_proto_rawDesc = "" + "\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*\xdf\x02\n" + + "\rVAR_RESET_ALL\x10\x06*\x97\x03\n" + "\n" + "ConstrType\x12\x19\n" + "\x15CONSTR_TYPE_UNDEFINED\x10\x00\x12\x0f\n" + @@ -34340,7 +34986,9 @@ const file_pg_query_proto_rawDesc = "" + "\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*\x9c\x01\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" + @@ -34438,7 +35086,12 @@ const file_pg_query_proto_rawDesc = "" + "\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*o\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" + @@ -34472,15 +35125,7 @@ const file_pg_query_proto_rawDesc = "" + "\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*\xa2\x01\n" + - "\x0eRowCompareType\x12\x1e\n" + - "\x1aROW_COMPARE_TYPE_UNDEFINED\x10\x00\x12\x11\n" + - "\rROWCOMPARE_LT\x10\x01\x12\x11\n" + - "\rROWCOMPARE_LE\x10\x02\x12\x11\n" + - "\rROWCOMPARE_EQ\x10\x03\x12\x11\n" + - "\rROWCOMPARE_GE\x10\x04\x12\x11\n" + - "\rROWCOMPARE_GT\x10\x05\x12\x11\n" + - "\rROWCOMPARE_NE\x10\x06*C\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" + @@ -34601,7 +35246,7 @@ const file_pg_query_proto_rawDesc = "" + "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*\xc2\x01\n" + + "\vCMD_NOTHING\x10\b*\xd7\x01\n" + "\bJoinType\x12\x17\n" + "\x13JOIN_TYPE_UNDEFINED\x10\x00\x12\x0e\n" + "\n" + @@ -34612,9 +35257,11 @@ const file_pg_query_proto_rawDesc = "" + "JOIN_RIGHT\x10\x04\x12\r\n" + "\tJOIN_SEMI\x10\x05\x12\r\n" + "\tJOIN_ANTI\x10\x06\x12\x13\n" + - "\x0fJOIN_RIGHT_ANTI\x10\a\x12\x15\n" + - "\x11JOIN_UNIQUE_OUTER\x10\b\x12\x15\n" + - "\x11JOIN_UNIQUE_INNER\x10\t*g\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" + @@ -34665,14 +35312,31 @@ const file_pg_query_proto_rawDesc = "" + "\x11LockTupleKeyShare\x10\x01\x12\x12\n" + "\x0eLockTupleShare\x10\x02\x12\x1b\n" + "\x17LockTupleNoKeyExclusive\x10\x03\x12\x16\n" + - "\x12LockTupleExclusive\x10\x04*}\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*\xe8;\n" + + "\x10RESERVED_KEYWORD\x10\x04*\x94<\n" + "\x05Token\x12\a\n" + "\x03NUL\x10\x00\x12\f\n" + "\bASCII_36\x10$\x12\f\n" + @@ -34872,447 +35536,450 @@ const file_pg_query_proto_rawDesc = "" + "\bENCODING\x10\x92\x03\x12\x0e\n" + "\tENCRYPTED\x10\x93\x03\x12\n" + "\n" + - "\x05END_P\x10\x94\x03\x12\v\n" + - "\x06ENUM_P\x10\x95\x03\x12\f\n" + - "\aERROR_P\x10\x96\x03\x12\v\n" + - "\x06ESCAPE\x10\x97\x03\x12\n" + - "\n" + - "\x05EVENT\x10\x98\x03\x12\v\n" + - "\x06EXCEPT\x10\x99\x03\x12\f\n" + - "\aEXCLUDE\x10\x9a\x03\x12\x0e\n" + - "\tEXCLUDING\x10\x9b\x03\x12\x0e\n" + - "\tEXCLUSIVE\x10\x9c\x03\x12\f\n" + - "\aEXECUTE\x10\x9d\x03\x12\v\n" + - "\x06EXISTS\x10\x9e\x03\x12\f\n" + - "\aEXPLAIN\x10\x9f\x03\x12\x0f\n" + - "\n" + - "EXPRESSION\x10\xa0\x03\x12\x0e\n" + - "\tEXTENSION\x10\xa1\x03\x12\r\n" + - "\bEXTERNAL\x10\xa2\x03\x12\f\n" + - "\aEXTRACT\x10\xa3\x03\x12\f\n" + - "\aFALSE_P\x10\xa4\x03\x12\v\n" + - "\x06FAMILY\x10\xa5\x03\x12\n" + - "\n" + - "\x05FETCH\x10\xa6\x03\x12\v\n" + - "\x06FILTER\x10\xa7\x03\x12\r\n" + - "\bFINALIZE\x10\xa8\x03\x12\f\n" + - "\aFIRST_P\x10\xa9\x03\x12\f\n" + - "\aFLOAT_P\x10\xaa\x03\x12\x0e\n" + - "\tFOLLOWING\x10\xab\x03\x12\b\n" + - "\x03FOR\x10\xac\x03\x12\n" + - "\n" + - "\x05FORCE\x10\xad\x03\x12\f\n" + - "\aFOREIGN\x10\xae\x03\x12\v\n" + - "\x06FORMAT\x10\xaf\x03\x12\f\n" + - "\aFORWARD\x10\xb0\x03\x12\v\n" + - "\x06FREEZE\x10\xb1\x03\x12\t\n" + - "\x04FROM\x10\xb2\x03\x12\t\n" + - "\x04FULL\x10\xb3\x03\x12\r\n" + - "\bFUNCTION\x10\xb4\x03\x12\x0e\n" + - "\tFUNCTIONS\x10\xb5\x03\x12\x0e\n" + - "\tGENERATED\x10\xb6\x03\x12\v\n" + - "\x06GLOBAL\x10\xb7\x03\x12\n" + - "\n" + - "\x05GRANT\x10\xb8\x03\x12\f\n" + - "\aGRANTED\x10\xb9\x03\x12\r\n" + - "\bGREATEST\x10\xba\x03\x12\f\n" + - "\aGROUP_P\x10\xbb\x03\x12\r\n" + - "\bGROUPING\x10\xbc\x03\x12\v\n" + - "\x06GROUPS\x10\xbd\x03\x12\f\n" + - "\aHANDLER\x10\xbe\x03\x12\v\n" + - "\x06HAVING\x10\xbf\x03\x12\r\n" + - "\bHEADER_P\x10\xc0\x03\x12\t\n" + - "\x04HOLD\x10\xc1\x03\x12\v\n" + - "\x06HOUR_P\x10\xc2\x03\x12\x0f\n" + - "\n" + - "IDENTITY_P\x10\xc3\x03\x12\t\n" + - "\x04IF_P\x10\xc4\x03\x12\n" + - "\n" + - "\x05ILIKE\x10\xc5\x03\x12\x0e\n" + - "\tIMMEDIATE\x10\xc6\x03\x12\x0e\n" + - "\tIMMUTABLE\x10\xc7\x03\x12\x0f\n" + - "\n" + - "IMPLICIT_P\x10\xc8\x03\x12\r\n" + - "\bIMPORT_P\x10\xc9\x03\x12\t\n" + - "\x04IN_P\x10\xca\x03\x12\f\n" + - "\aINCLUDE\x10\xcb\x03\x12\x0e\n" + - "\tINCLUDING\x10\xcc\x03\x12\x0e\n" + - "\tINCREMENT\x10\xcd\x03\x12\v\n" + - "\x06INDENT\x10\xce\x03\x12\n" + - "\n" + - "\x05INDEX\x10\xcf\x03\x12\f\n" + - "\aINDEXES\x10\xd0\x03\x12\f\n" + - "\aINHERIT\x10\xd1\x03\x12\r\n" + - "\bINHERITS\x10\xd2\x03\x12\x0e\n" + - "\tINITIALLY\x10\xd3\x03\x12\r\n" + - "\bINLINE_P\x10\xd4\x03\x12\f\n" + - "\aINNER_P\x10\xd5\x03\x12\n" + - "\n" + - "\x05INOUT\x10\xd6\x03\x12\f\n" + - "\aINPUT_P\x10\xd7\x03\x12\x10\n" + - "\vINSENSITIVE\x10\xd8\x03\x12\v\n" + - "\x06INSERT\x10\xd9\x03\x12\f\n" + - "\aINSTEAD\x10\xda\x03\x12\n" + - "\n" + - "\x05INT_P\x10\xdb\x03\x12\f\n" + - "\aINTEGER\x10\xdc\x03\x12\x0e\n" + - "\tINTERSECT\x10\xdd\x03\x12\r\n" + - "\bINTERVAL\x10\xde\x03\x12\t\n" + - "\x04INTO\x10\xdf\x03\x12\f\n" + - "\aINVOKER\x10\xe0\x03\x12\a\n" + - "\x02IS\x10\xe1\x03\x12\v\n" + - "\x06ISNULL\x10\xe2\x03\x12\x0e\n" + - "\tISOLATION\x10\xe3\x03\x12\t\n" + - "\x04JOIN\x10\xe4\x03\x12\t\n" + - "\x04JSON\x10\xe5\x03\x12\x0f\n" + - "\n" + - "JSON_ARRAY\x10\xe6\x03\x12\x12\n" + - "\rJSON_ARRAYAGG\x10\xe7\x03\x12\x10\n" + - "\vJSON_EXISTS\x10\xe8\x03\x12\x10\n" + - "\vJSON_OBJECT\x10\xe9\x03\x12\x13\n" + - "\x0eJSON_OBJECTAGG\x10\xea\x03\x12\x0f\n" + - "\n" + - "JSON_QUERY\x10\xeb\x03\x12\x10\n" + - "\vJSON_SCALAR\x10\xec\x03\x12\x13\n" + - "\x0eJSON_SERIALIZE\x10\xed\x03\x12\x0f\n" + - "\n" + - "JSON_TABLE\x10\xee\x03\x12\x0f\n" + - "\n" + - "JSON_VALUE\x10\xef\x03\x12\t\n" + - "\x04KEEP\x10\xf0\x03\x12\b\n" + - "\x03KEY\x10\xf1\x03\x12\t\n" + - "\x04KEYS\x10\xf2\x03\x12\n" + - "\n" + - "\x05LABEL\x10\xf3\x03\x12\r\n" + - "\bLANGUAGE\x10\xf4\x03\x12\f\n" + - "\aLARGE_P\x10\xf5\x03\x12\v\n" + - "\x06LAST_P\x10\xf6\x03\x12\x0e\n" + - "\tLATERAL_P\x10\xf7\x03\x12\f\n" + - "\aLEADING\x10\xf8\x03\x12\x0e\n" + - "\tLEAKPROOF\x10\xf9\x03\x12\n" + - "\n" + - "\x05LEAST\x10\xfa\x03\x12\t\n" + - "\x04LEFT\x10\xfb\x03\x12\n" + - "\n" + - "\x05LEVEL\x10\xfc\x03\x12\t\n" + - "\x04LIKE\x10\xfd\x03\x12\n" + - "\n" + - "\x05LIMIT\x10\xfe\x03\x12\v\n" + - "\x06LISTEN\x10\xff\x03\x12\t\n" + - "\x04LOAD\x10\x80\x04\x12\n" + - "\n" + - "\x05LOCAL\x10\x81\x04\x12\x0e\n" + - "\tLOCALTIME\x10\x82\x04\x12\x13\n" + - "\x0eLOCALTIMESTAMP\x10\x83\x04\x12\r\n" + - "\bLOCATION\x10\x84\x04\x12\v\n" + - "\x06LOCK_P\x10\x85\x04\x12\v\n" + - "\x06LOCKED\x10\x86\x04\x12\v\n" + - "\x06LOGGED\x10\x87\x04\x12\f\n" + - "\aMAPPING\x10\x88\x04\x12\n" + - "\n" + - "\x05MATCH\x10\x89\x04\x12\f\n" + - "\aMATCHED\x10\x8a\x04\x12\x11\n" + - "\fMATERIALIZED\x10\x8b\x04\x12\r\n" + - "\bMAXVALUE\x10\x8c\x04\x12\n" + - "\n" + - "\x05MERGE\x10\x8d\x04\x12\x11\n" + - "\fMERGE_ACTION\x10\x8e\x04\x12\v\n" + - "\x06METHOD\x10\x8f\x04\x12\r\n" + - "\bMINUTE_P\x10\x90\x04\x12\r\n" + - "\bMINVALUE\x10\x91\x04\x12\t\n" + - "\x04MODE\x10\x92\x04\x12\f\n" + - "\aMONTH_P\x10\x93\x04\x12\t\n" + - "\x04MOVE\x10\x94\x04\x12\v\n" + - "\x06NAME_P\x10\x95\x04\x12\n" + - "\n" + - "\x05NAMES\x10\x96\x04\x12\r\n" + - "\bNATIONAL\x10\x97\x04\x12\f\n" + - "\aNATURAL\x10\x98\x04\x12\n" + - "\n" + - "\x05NCHAR\x10\x99\x04\x12\v\n" + - "\x06NESTED\x10\x9a\x04\x12\b\n" + - "\x03NEW\x10\x9b\x04\x12\t\n" + - "\x04NEXT\x10\x9c\x04\x12\b\n" + - "\x03NFC\x10\x9d\x04\x12\b\n" + - "\x03NFD\x10\x9e\x04\x12\t\n" + - "\x04NFKC\x10\x9f\x04\x12\t\n" + - "\x04NFKD\x10\xa0\x04\x12\a\n" + - "\x02NO\x10\xa1\x04\x12\t\n" + - "\x04NONE\x10\xa2\x04\x12\x0e\n" + - "\tNORMALIZE\x10\xa3\x04\x12\x0f\n" + - "\n" + - "NORMALIZED\x10\xa4\x04\x12\b\n" + - "\x03NOT\x10\xa5\x04\x12\f\n" + - "\aNOTHING\x10\xa6\x04\x12\v\n" + - "\x06NOTIFY\x10\xa7\x04\x12\f\n" + - "\aNOTNULL\x10\xa8\x04\x12\v\n" + - "\x06NOWAIT\x10\xa9\x04\x12\v\n" + - "\x06NULL_P\x10\xaa\x04\x12\v\n" + - "\x06NULLIF\x10\xab\x04\x12\f\n" + - "\aNULLS_P\x10\xac\x04\x12\f\n" + - "\aNUMERIC\x10\xad\x04\x12\r\n" + - "\bOBJECT_P\x10\xae\x04\x12\a\n" + - "\x02OF\x10\xaf\x04\x12\b\n" + - "\x03OFF\x10\xb0\x04\x12\v\n" + - "\x06OFFSET\x10\xb1\x04\x12\t\n" + - "\x04OIDS\x10\xb2\x04\x12\b\n" + - "\x03OLD\x10\xb3\x04\x12\t\n" + - "\x04OMIT\x10\xb4\x04\x12\a\n" + - "\x02ON\x10\xb5\x04\x12\t\n" + - "\x04ONLY\x10\xb6\x04\x12\r\n" + - "\bOPERATOR\x10\xb7\x04\x12\v\n" + - "\x06OPTION\x10\xb8\x04\x12\f\n" + - "\aOPTIONS\x10\xb9\x04\x12\a\n" + - "\x02OR\x10\xba\x04\x12\n" + - "\n" + - "\x05ORDER\x10\xbb\x04\x12\x0f\n" + - "\n" + - "ORDINALITY\x10\xbc\x04\x12\v\n" + - "\x06OTHERS\x10\xbd\x04\x12\n" + - "\n" + - "\x05OUT_P\x10\xbe\x04\x12\f\n" + - "\aOUTER_P\x10\xbf\x04\x12\t\n" + - "\x04OVER\x10\xc0\x04\x12\r\n" + - "\bOVERLAPS\x10\xc1\x04\x12\f\n" + - "\aOVERLAY\x10\xc2\x04\x12\x0f\n" + - "\n" + - "OVERRIDING\x10\xc3\x04\x12\n" + - "\n" + - "\x05OWNED\x10\xc4\x04\x12\n" + - "\n" + - "\x05OWNER\x10\xc5\x04\x12\r\n" + - "\bPARALLEL\x10\xc6\x04\x12\x0e\n" + - "\tPARAMETER\x10\xc7\x04\x12\v\n" + - "\x06PARSER\x10\xc8\x04\x12\f\n" + - "\aPARTIAL\x10\xc9\x04\x12\x0e\n" + - "\tPARTITION\x10\xca\x04\x12\f\n" + - "\aPASSING\x10\xcb\x04\x12\r\n" + - "\bPASSWORD\x10\xcc\x04\x12\t\n" + - "\x04PATH\x10\xcd\x04\x12\f\n" + - "\aPLACING\x10\xce\x04\x12\t\n" + - "\x04PLAN\x10\xcf\x04\x12\n" + - "\n" + - "\x05PLANS\x10\xd0\x04\x12\v\n" + - "\x06POLICY\x10\xd1\x04\x12\r\n" + - "\bPOSITION\x10\xd2\x04\x12\x0e\n" + - "\tPRECEDING\x10\xd3\x04\x12\x0e\n" + - "\tPRECISION\x10\xd4\x04\x12\r\n" + - "\bPRESERVE\x10\xd5\x04\x12\f\n" + - "\aPREPARE\x10\xd6\x04\x12\r\n" + - "\bPREPARED\x10\xd7\x04\x12\f\n" + - "\aPRIMARY\x10\xd8\x04\x12\n" + - "\n" + - "\x05PRIOR\x10\xd9\x04\x12\x0f\n" + - "\n" + - "PRIVILEGES\x10\xda\x04\x12\x0f\n" + - "\n" + - "PROCEDURAL\x10\xdb\x04\x12\x0e\n" + - "\tPROCEDURE\x10\xdc\x04\x12\x0f\n" + - "\n" + - "PROCEDURES\x10\xdd\x04\x12\f\n" + - "\aPROGRAM\x10\xde\x04\x12\x10\n" + - "\vPUBLICATION\x10\xdf\x04\x12\n" + - "\n" + - "\x05QUOTE\x10\xe0\x04\x12\v\n" + - "\x06QUOTES\x10\xe1\x04\x12\n" + - "\n" + - "\x05RANGE\x10\xe2\x04\x12\t\n" + - "\x04READ\x10\xe3\x04\x12\t\n" + - "\x04REAL\x10\xe4\x04\x12\r\n" + - "\bREASSIGN\x10\xe5\x04\x12\f\n" + - "\aRECHECK\x10\xe6\x04\x12\x0e\n" + - "\tRECURSIVE\x10\xe7\x04\x12\n" + - "\n" + - "\x05REF_P\x10\xe8\x04\x12\x0f\n" + - "\n" + - "REFERENCES\x10\xe9\x04\x12\x10\n" + - "\vREFERENCING\x10\xea\x04\x12\f\n" + - "\aREFRESH\x10\xeb\x04\x12\f\n" + - "\aREINDEX\x10\xec\x04\x12\x0f\n" + - "\n" + - "RELATIVE_P\x10\xed\x04\x12\f\n" + - "\aRELEASE\x10\xee\x04\x12\v\n" + - "\x06RENAME\x10\xef\x04\x12\x0f\n" + - "\n" + - "REPEATABLE\x10\xf0\x04\x12\f\n" + - "\aREPLACE\x10\xf1\x04\x12\f\n" + - "\aREPLICA\x10\xf2\x04\x12\n" + - "\n" + - "\x05RESET\x10\xf3\x04\x12\f\n" + - "\aRESTART\x10\xf4\x04\x12\r\n" + - "\bRESTRICT\x10\xf5\x04\x12\v\n" + - "\x06RETURN\x10\xf6\x04\x12\x0e\n" + - "\tRETURNING\x10\xf7\x04\x12\f\n" + - "\aRETURNS\x10\xf8\x04\x12\v\n" + - "\x06REVOKE\x10\xf9\x04\x12\n" + - "\n" + - "\x05RIGHT\x10\xfa\x04\x12\t\n" + - "\x04ROLE\x10\xfb\x04\x12\r\n" + - "\bROLLBACK\x10\xfc\x04\x12\v\n" + - "\x06ROLLUP\x10\xfd\x04\x12\f\n" + - "\aROUTINE\x10\xfe\x04\x12\r\n" + - "\bROUTINES\x10\xff\x04\x12\b\n" + - "\x03ROW\x10\x80\x05\x12\t\n" + - "\x04ROWS\x10\x81\x05\x12\t\n" + - "\x04RULE\x10\x82\x05\x12\x0e\n" + - "\tSAVEPOINT\x10\x83\x05\x12\v\n" + - "\x06SCALAR\x10\x84\x05\x12\v\n" + - "\x06SCHEMA\x10\x85\x05\x12\f\n" + - "\aSCHEMAS\x10\x86\x05\x12\v\n" + - "\x06SCROLL\x10\x87\x05\x12\v\n" + - "\x06SEARCH\x10\x88\x05\x12\r\n" + - "\bSECOND_P\x10\x89\x05\x12\r\n" + - "\bSECURITY\x10\x8a\x05\x12\v\n" + - "\x06SELECT\x10\x8b\x05\x12\r\n" + - "\bSEQUENCE\x10\x8c\x05\x12\x0e\n" + - "\tSEQUENCES\x10\x8d\x05\x12\x11\n" + - "\fSERIALIZABLE\x10\x8e\x05\x12\v\n" + - "\x06SERVER\x10\x8f\x05\x12\f\n" + - "\aSESSION\x10\x90\x05\x12\x11\n" + - "\fSESSION_USER\x10\x91\x05\x12\b\n" + - "\x03SET\x10\x92\x05\x12\t\n" + - "\x04SETS\x10\x93\x05\x12\n" + - "\n" + - "\x05SETOF\x10\x94\x05\x12\n" + - "\n" + - "\x05SHARE\x10\x95\x05\x12\t\n" + - "\x04SHOW\x10\x96\x05\x12\f\n" + - "\aSIMILAR\x10\x97\x05\x12\v\n" + - "\x06SIMPLE\x10\x98\x05\x12\t\n" + - "\x04SKIP\x10\x99\x05\x12\r\n" + - "\bSMALLINT\x10\x9a\x05\x12\r\n" + - "\bSNAPSHOT\x10\x9b\x05\x12\t\n" + - "\x04SOME\x10\x9c\x05\x12\v\n" + - "\x06SOURCE\x10\x9d\x05\x12\n" + - "\n" + - "\x05SQL_P\x10\x9e\x05\x12\v\n" + - "\x06STABLE\x10\x9f\x05\x12\x11\n" + - "\fSTANDALONE_P\x10\xa0\x05\x12\n" + - "\n" + - "\x05START\x10\xa1\x05\x12\x0e\n" + - "\tSTATEMENT\x10\xa2\x05\x12\x0f\n" + - "\n" + - "STATISTICS\x10\xa3\x05\x12\n" + - "\n" + - "\x05STDIN\x10\xa4\x05\x12\v\n" + - "\x06STDOUT\x10\xa5\x05\x12\f\n" + - "\aSTORAGE\x10\xa6\x05\x12\v\n" + - "\x06STORED\x10\xa7\x05\x12\r\n" + - "\bSTRICT_P\x10\xa8\x05\x12\r\n" + - "\bSTRING_P\x10\xa9\x05\x12\f\n" + - "\aSTRIP_P\x10\xaa\x05\x12\x11\n" + - "\fSUBSCRIPTION\x10\xab\x05\x12\x0e\n" + - "\tSUBSTRING\x10\xac\x05\x12\f\n" + - "\aSUPPORT\x10\xad\x05\x12\x0e\n" + - "\tSYMMETRIC\x10\xae\x05\x12\n" + - "\n" + - "\x05SYSID\x10\xaf\x05\x12\r\n" + - "\bSYSTEM_P\x10\xb0\x05\x12\x10\n" + - "\vSYSTEM_USER\x10\xb1\x05\x12\n" + - "\n" + - "\x05TABLE\x10\xb2\x05\x12\v\n" + - "\x06TABLES\x10\xb3\x05\x12\x10\n" + - "\vTABLESAMPLE\x10\xb4\x05\x12\x0f\n" + - "\n" + - "TABLESPACE\x10\xb5\x05\x12\v\n" + - "\x06TARGET\x10\xb6\x05\x12\t\n" + - "\x04TEMP\x10\xb7\x05\x12\r\n" + - "\bTEMPLATE\x10\xb8\x05\x12\x0e\n" + - "\tTEMPORARY\x10\xb9\x05\x12\v\n" + - "\x06TEXT_P\x10\xba\x05\x12\t\n" + - "\x04THEN\x10\xbb\x05\x12\t\n" + - "\x04TIES\x10\xbc\x05\x12\t\n" + - "\x04TIME\x10\xbd\x05\x12\x0e\n" + - "\tTIMESTAMP\x10\xbe\x05\x12\a\n" + - "\x02TO\x10\xbf\x05\x12\r\n" + - "\bTRAILING\x10\xc0\x05\x12\x10\n" + - "\vTRANSACTION\x10\xc1\x05\x12\x0e\n" + - "\tTRANSFORM\x10\xc2\x05\x12\n" + - "\n" + - "\x05TREAT\x10\xc3\x05\x12\f\n" + - "\aTRIGGER\x10\xc4\x05\x12\t\n" + - "\x04TRIM\x10\xc5\x05\x12\v\n" + - "\x06TRUE_P\x10\xc6\x05\x12\r\n" + - "\bTRUNCATE\x10\xc7\x05\x12\f\n" + - "\aTRUSTED\x10\xc8\x05\x12\v\n" + - "\x06TYPE_P\x10\xc9\x05\x12\f\n" + - "\aTYPES_P\x10\xca\x05\x12\f\n" + - "\aUESCAPE\x10\xcb\x05\x12\x0e\n" + - "\tUNBOUNDED\x10\xcc\x05\x12\x12\n" + - "\rUNCONDITIONAL\x10\xcd\x05\x12\x10\n" + - "\vUNCOMMITTED\x10\xce\x05\x12\x10\n" + - "\vUNENCRYPTED\x10\xcf\x05\x12\n" + - "\n" + - "\x05UNION\x10\xd0\x05\x12\v\n" + - "\x06UNIQUE\x10\xd1\x05\x12\f\n" + - "\aUNKNOWN\x10\xd2\x05\x12\r\n" + - "\bUNLISTEN\x10\xd3\x05\x12\r\n" + - "\bUNLOGGED\x10\xd4\x05\x12\n" + - "\n" + - "\x05UNTIL\x10\xd5\x05\x12\v\n" + - "\x06UPDATE\x10\xd6\x05\x12\t\n" + - "\x04USER\x10\xd7\x05\x12\n" + - "\n" + - "\x05USING\x10\xd8\x05\x12\v\n" + - "\x06VACUUM\x10\xd9\x05\x12\n" + - "\n" + - "\x05VALID\x10\xda\x05\x12\r\n" + - "\bVALIDATE\x10\xdb\x05\x12\x0e\n" + - "\tVALIDATOR\x10\xdc\x05\x12\f\n" + - "\aVALUE_P\x10\xdd\x05\x12\v\n" + - "\x06VALUES\x10\xde\x05\x12\f\n" + - "\aVARCHAR\x10\xdf\x05\x12\r\n" + - "\bVARIADIC\x10\xe0\x05\x12\f\n" + - "\aVARYING\x10\xe1\x05\x12\f\n" + - "\aVERBOSE\x10\xe2\x05\x12\x0e\n" + - "\tVERSION_P\x10\xe3\x05\x12\t\n" + - "\x04VIEW\x10\xe4\x05\x12\n" + - "\n" + - "\x05VIEWS\x10\xe5\x05\x12\r\n" + - "\bVOLATILE\x10\xe6\x05\x12\t\n" + - "\x04WHEN\x10\xe7\x05\x12\n" + - "\n" + - "\x05WHERE\x10\xe8\x05\x12\x11\n" + - "\fWHITESPACE_P\x10\xe9\x05\x12\v\n" + - "\x06WINDOW\x10\xea\x05\x12\t\n" + - "\x04WITH\x10\xeb\x05\x12\v\n" + - "\x06WITHIN\x10\xec\x05\x12\f\n" + - "\aWITHOUT\x10\xed\x05\x12\t\n" + - "\x04WORK\x10\xee\x05\x12\f\n" + - "\aWRAPPER\x10\xef\x05\x12\n" + - "\n" + - "\x05WRITE\x10\xf0\x05\x12\n" + - "\n" + - "\x05XML_P\x10\xf1\x05\x12\x12\n" + - "\rXMLATTRIBUTES\x10\xf2\x05\x12\x0e\n" + - "\tXMLCONCAT\x10\xf3\x05\x12\x0f\n" + - "\n" + - "XMLELEMENT\x10\xf4\x05\x12\x0e\n" + - "\tXMLEXISTS\x10\xf5\x05\x12\x0e\n" + - "\tXMLFOREST\x10\xf6\x05\x12\x12\n" + - "\rXMLNAMESPACES\x10\xf7\x05\x12\r\n" + - "\bXMLPARSE\x10\xf8\x05\x12\n" + - "\n" + - "\x05XMLPI\x10\xf9\x05\x12\f\n" + - "\aXMLROOT\x10\xfa\x05\x12\x11\n" + - "\fXMLSERIALIZE\x10\xfb\x05\x12\r\n" + - "\bXMLTABLE\x10\xfc\x05\x12\v\n" + - "\x06YEAR_P\x10\xfd\x05\x12\n" + - "\n" + - "\x05YES_P\x10\xfe\x05\x12\t\n" + - "\x04ZONE\x10\xff\x05\x12\x0e\n" + - "\tFORMAT_LA\x10\x80\x06\x12\v\n" + - "\x06NOT_LA\x10\x81\x06\x12\r\n" + - "\bNULLS_LA\x10\x82\x06\x12\f\n" + - "\aWITH_LA\x10\x83\x06\x12\x0f\n" + - "\n" + - "WITHOUT_LA\x10\x84\x06\x12\x13\n" + - "\x0eMODE_TYPE_NAME\x10\x85\x06\x12\x16\n" + - "\x11MODE_PLPGSQL_EXPR\x10\x86\x06\x12\x19\n" + - "\x14MODE_PLPGSQL_ASSIGN1\x10\x87\x06\x12\x19\n" + - "\x14MODE_PLPGSQL_ASSIGN2\x10\x88\x06\x12\x19\n" + - "\x14MODE_PLPGSQL_ASSIGN3\x10\x89\x06\x12\v\n" + - "\x06UMINUS\x10\x8a\x06b\x06proto3" + "\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 @@ -35326,8 +35993,8 @@ func file_pg_query_proto_rawDescGZIP() []byte { return file_pg_query_proto_rawDescData } -var file_pg_query_proto_enumTypes = make([]protoimpl.EnumInfo, 72) -var file_pg_query_proto_msgTypes = make([]protoimpl.MessageInfo, 277) +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 @@ -35343,1387 +36010,1403 @@ var file_pg_query_proto_goTypes = []any{ (WCOKind)(0), // 11: pg_query.WCOKind (GroupingSetKind)(0), // 12: pg_query.GroupingSetKind (CTEMaterialize)(0), // 13: pg_query.CTEMaterialize - (JsonQuotes)(0), // 14: pg_query.JsonQuotes - (JsonTableColumnType)(0), // 15: pg_query.JsonTableColumnType - (SetOperation)(0), // 16: pg_query.SetOperation - (ObjectType)(0), // 17: pg_query.ObjectType - (DropBehavior)(0), // 18: pg_query.DropBehavior - (AlterTableType)(0), // 19: pg_query.AlterTableType - (GrantTargetType)(0), // 20: pg_query.GrantTargetType - (VariableSetKind)(0), // 21: pg_query.VariableSetKind - (ConstrType)(0), // 22: pg_query.ConstrType - (ImportForeignSchemaType)(0), // 23: pg_query.ImportForeignSchemaType - (RoleStmtType)(0), // 24: pg_query.RoleStmtType - (FetchDirection)(0), // 25: pg_query.FetchDirection - (FunctionParameterMode)(0), // 26: pg_query.FunctionParameterMode - (TransactionStmtKind)(0), // 27: pg_query.TransactionStmtKind - (ViewCheckOption)(0), // 28: pg_query.ViewCheckOption - (DiscardMode)(0), // 29: pg_query.DiscardMode - (ReindexObjectType)(0), // 30: pg_query.ReindexObjectType - (AlterTSConfigType)(0), // 31: pg_query.AlterTSConfigType - (PublicationObjSpecType)(0), // 32: pg_query.PublicationObjSpecType - (AlterPublicationAction)(0), // 33: pg_query.AlterPublicationAction - (AlterSubscriptionType)(0), // 34: pg_query.AlterSubscriptionType - (OverridingKind)(0), // 35: pg_query.OverridingKind - (OnCommitAction)(0), // 36: pg_query.OnCommitAction - (TableFuncType)(0), // 37: pg_query.TableFuncType - (ParamKind)(0), // 38: pg_query.ParamKind - (CoercionContext)(0), // 39: pg_query.CoercionContext - (CoercionForm)(0), // 40: pg_query.CoercionForm - (BoolExprType)(0), // 41: pg_query.BoolExprType - (SubLinkType)(0), // 42: pg_query.SubLinkType - (RowCompareType)(0), // 43: pg_query.RowCompareType - (MinMaxOp)(0), // 44: pg_query.MinMaxOp - (SQLValueFunctionOp)(0), // 45: pg_query.SQLValueFunctionOp - (XmlExprOp)(0), // 46: pg_query.XmlExprOp - (XmlOptionType)(0), // 47: pg_query.XmlOptionType - (JsonEncoding)(0), // 48: pg_query.JsonEncoding - (JsonFormatType)(0), // 49: pg_query.JsonFormatType - (JsonConstructorType)(0), // 50: pg_query.JsonConstructorType - (JsonValueType)(0), // 51: pg_query.JsonValueType - (JsonWrapper)(0), // 52: pg_query.JsonWrapper - (JsonBehaviorType)(0), // 53: pg_query.JsonBehaviorType - (JsonExprOp)(0), // 54: pg_query.JsonExprOp - (NullTestType)(0), // 55: pg_query.NullTestType - (BoolTestType)(0), // 56: pg_query.BoolTestType - (MergeMatchKind)(0), // 57: pg_query.MergeMatchKind - (CmdType)(0), // 58: pg_query.CmdType - (JoinType)(0), // 59: pg_query.JoinType - (AggStrategy)(0), // 60: pg_query.AggStrategy - (AggSplit)(0), // 61: pg_query.AggSplit - (SetOpCmd)(0), // 62: pg_query.SetOpCmd - (SetOpStrategy)(0), // 63: pg_query.SetOpStrategy - (OnConflictAction)(0), // 64: pg_query.OnConflictAction - (LimitOption)(0), // 65: pg_query.LimitOption - (LockClauseStrength)(0), // 66: pg_query.LockClauseStrength - (LockWaitPolicy)(0), // 67: pg_query.LockWaitPolicy - (LockTupleMode)(0), // 68: pg_query.LockTupleMode - (KeywordKind)(0), // 69: pg_query.KeywordKind - (Token)(0), // 70: pg_query.Token - (SummaryResult_Context)(0), // 71: pg_query.SummaryResult.Context - (*ParseResult)(nil), // 72: pg_query.ParseResult - (*ScanResult)(nil), // 73: pg_query.ScanResult - (*Node)(nil), // 74: pg_query.Node - (*Integer)(nil), // 75: pg_query.Integer - (*Float)(nil), // 76: pg_query.Float - (*Boolean)(nil), // 77: pg_query.Boolean - (*String)(nil), // 78: pg_query.String - (*BitString)(nil), // 79: pg_query.BitString - (*List)(nil), // 80: pg_query.List - (*OidList)(nil), // 81: pg_query.OidList - (*IntList)(nil), // 82: pg_query.IntList - (*A_Const)(nil), // 83: pg_query.A_Const - (*Alias)(nil), // 84: pg_query.Alias - (*RangeVar)(nil), // 85: pg_query.RangeVar - (*TableFunc)(nil), // 86: pg_query.TableFunc - (*IntoClause)(nil), // 87: pg_query.IntoClause - (*Var)(nil), // 88: pg_query.Var - (*Param)(nil), // 89: pg_query.Param - (*Aggref)(nil), // 90: pg_query.Aggref - (*GroupingFunc)(nil), // 91: pg_query.GroupingFunc - (*WindowFunc)(nil), // 92: pg_query.WindowFunc - (*WindowFuncRunCondition)(nil), // 93: pg_query.WindowFuncRunCondition - (*MergeSupportFunc)(nil), // 94: pg_query.MergeSupportFunc - (*SubscriptingRef)(nil), // 95: pg_query.SubscriptingRef - (*FuncExpr)(nil), // 96: pg_query.FuncExpr - (*NamedArgExpr)(nil), // 97: pg_query.NamedArgExpr - (*OpExpr)(nil), // 98: pg_query.OpExpr - (*DistinctExpr)(nil), // 99: pg_query.DistinctExpr - (*NullIfExpr)(nil), // 100: pg_query.NullIfExpr - (*ScalarArrayOpExpr)(nil), // 101: pg_query.ScalarArrayOpExpr - (*BoolExpr)(nil), // 102: pg_query.BoolExpr - (*SubLink)(nil), // 103: pg_query.SubLink - (*SubPlan)(nil), // 104: pg_query.SubPlan - (*AlternativeSubPlan)(nil), // 105: pg_query.AlternativeSubPlan - (*FieldSelect)(nil), // 106: pg_query.FieldSelect - (*FieldStore)(nil), // 107: pg_query.FieldStore - (*RelabelType)(nil), // 108: pg_query.RelabelType - (*CoerceViaIO)(nil), // 109: pg_query.CoerceViaIO - (*ArrayCoerceExpr)(nil), // 110: pg_query.ArrayCoerceExpr - (*ConvertRowtypeExpr)(nil), // 111: pg_query.ConvertRowtypeExpr - (*CollateExpr)(nil), // 112: pg_query.CollateExpr - (*CaseExpr)(nil), // 113: pg_query.CaseExpr - (*CaseWhen)(nil), // 114: pg_query.CaseWhen - (*CaseTestExpr)(nil), // 115: pg_query.CaseTestExpr - (*ArrayExpr)(nil), // 116: pg_query.ArrayExpr - (*RowExpr)(nil), // 117: pg_query.RowExpr - (*RowCompareExpr)(nil), // 118: pg_query.RowCompareExpr - (*CoalesceExpr)(nil), // 119: pg_query.CoalesceExpr - (*MinMaxExpr)(nil), // 120: pg_query.MinMaxExpr - (*SQLValueFunction)(nil), // 121: pg_query.SQLValueFunction - (*XmlExpr)(nil), // 122: pg_query.XmlExpr - (*JsonFormat)(nil), // 123: pg_query.JsonFormat - (*JsonReturning)(nil), // 124: pg_query.JsonReturning - (*JsonValueExpr)(nil), // 125: pg_query.JsonValueExpr - (*JsonConstructorExpr)(nil), // 126: pg_query.JsonConstructorExpr - (*JsonIsPredicate)(nil), // 127: pg_query.JsonIsPredicate - (*JsonBehavior)(nil), // 128: pg_query.JsonBehavior - (*JsonExpr)(nil), // 129: pg_query.JsonExpr - (*JsonTablePath)(nil), // 130: pg_query.JsonTablePath - (*JsonTablePathScan)(nil), // 131: pg_query.JsonTablePathScan - (*JsonTableSiblingJoin)(nil), // 132: pg_query.JsonTableSiblingJoin - (*NullTest)(nil), // 133: pg_query.NullTest - (*BooleanTest)(nil), // 134: pg_query.BooleanTest - (*MergeAction)(nil), // 135: pg_query.MergeAction - (*CoerceToDomain)(nil), // 136: pg_query.CoerceToDomain - (*CoerceToDomainValue)(nil), // 137: pg_query.CoerceToDomainValue - (*SetToDefault)(nil), // 138: pg_query.SetToDefault - (*CurrentOfExpr)(nil), // 139: pg_query.CurrentOfExpr - (*NextValueExpr)(nil), // 140: pg_query.NextValueExpr - (*InferenceElem)(nil), // 141: pg_query.InferenceElem - (*TargetEntry)(nil), // 142: pg_query.TargetEntry - (*RangeTblRef)(nil), // 143: pg_query.RangeTblRef - (*JoinExpr)(nil), // 144: pg_query.JoinExpr - (*FromExpr)(nil), // 145: pg_query.FromExpr - (*OnConflictExpr)(nil), // 146: pg_query.OnConflictExpr - (*Query)(nil), // 147: pg_query.Query - (*TypeName)(nil), // 148: pg_query.TypeName - (*ColumnRef)(nil), // 149: pg_query.ColumnRef - (*ParamRef)(nil), // 150: pg_query.ParamRef - (*A_Expr)(nil), // 151: pg_query.A_Expr - (*TypeCast)(nil), // 152: pg_query.TypeCast - (*CollateClause)(nil), // 153: pg_query.CollateClause - (*RoleSpec)(nil), // 154: pg_query.RoleSpec - (*FuncCall)(nil), // 155: pg_query.FuncCall - (*A_Star)(nil), // 156: pg_query.A_Star - (*A_Indices)(nil), // 157: pg_query.A_Indices - (*A_Indirection)(nil), // 158: pg_query.A_Indirection - (*A_ArrayExpr)(nil), // 159: pg_query.A_ArrayExpr - (*ResTarget)(nil), // 160: pg_query.ResTarget - (*MultiAssignRef)(nil), // 161: pg_query.MultiAssignRef - (*SortBy)(nil), // 162: pg_query.SortBy - (*WindowDef)(nil), // 163: pg_query.WindowDef - (*RangeSubselect)(nil), // 164: pg_query.RangeSubselect - (*RangeFunction)(nil), // 165: pg_query.RangeFunction - (*RangeTableFunc)(nil), // 166: pg_query.RangeTableFunc - (*RangeTableFuncCol)(nil), // 167: pg_query.RangeTableFuncCol - (*RangeTableSample)(nil), // 168: pg_query.RangeTableSample - (*ColumnDef)(nil), // 169: pg_query.ColumnDef - (*TableLikeClause)(nil), // 170: pg_query.TableLikeClause - (*IndexElem)(nil), // 171: pg_query.IndexElem - (*DefElem)(nil), // 172: pg_query.DefElem - (*LockingClause)(nil), // 173: pg_query.LockingClause - (*XmlSerialize)(nil), // 174: pg_query.XmlSerialize - (*PartitionElem)(nil), // 175: pg_query.PartitionElem - (*PartitionSpec)(nil), // 176: pg_query.PartitionSpec - (*PartitionBoundSpec)(nil), // 177: pg_query.PartitionBoundSpec - (*PartitionRangeDatum)(nil), // 178: pg_query.PartitionRangeDatum - (*SinglePartitionSpec)(nil), // 179: pg_query.SinglePartitionSpec - (*PartitionCmd)(nil), // 180: pg_query.PartitionCmd - (*RangeTblEntry)(nil), // 181: pg_query.RangeTblEntry - (*RTEPermissionInfo)(nil), // 182: pg_query.RTEPermissionInfo - (*RangeTblFunction)(nil), // 183: pg_query.RangeTblFunction - (*TableSampleClause)(nil), // 184: pg_query.TableSampleClause - (*WithCheckOption)(nil), // 185: pg_query.WithCheckOption - (*SortGroupClause)(nil), // 186: pg_query.SortGroupClause - (*GroupingSet)(nil), // 187: pg_query.GroupingSet - (*WindowClause)(nil), // 188: pg_query.WindowClause - (*RowMarkClause)(nil), // 189: pg_query.RowMarkClause - (*WithClause)(nil), // 190: pg_query.WithClause - (*InferClause)(nil), // 191: pg_query.InferClause - (*OnConflictClause)(nil), // 192: pg_query.OnConflictClause - (*CTESearchClause)(nil), // 193: pg_query.CTESearchClause - (*CTECycleClause)(nil), // 194: pg_query.CTECycleClause - (*CommonTableExpr)(nil), // 195: pg_query.CommonTableExpr - (*MergeWhenClause)(nil), // 196: pg_query.MergeWhenClause - (*TriggerTransition)(nil), // 197: pg_query.TriggerTransition - (*JsonOutput)(nil), // 198: pg_query.JsonOutput - (*JsonArgument)(nil), // 199: pg_query.JsonArgument - (*JsonFuncExpr)(nil), // 200: pg_query.JsonFuncExpr - (*JsonTablePathSpec)(nil), // 201: pg_query.JsonTablePathSpec - (*JsonTable)(nil), // 202: pg_query.JsonTable - (*JsonTableColumn)(nil), // 203: pg_query.JsonTableColumn - (*JsonKeyValue)(nil), // 204: pg_query.JsonKeyValue - (*JsonParseExpr)(nil), // 205: pg_query.JsonParseExpr - (*JsonScalarExpr)(nil), // 206: pg_query.JsonScalarExpr - (*JsonSerializeExpr)(nil), // 207: pg_query.JsonSerializeExpr - (*JsonObjectConstructor)(nil), // 208: pg_query.JsonObjectConstructor - (*JsonArrayConstructor)(nil), // 209: pg_query.JsonArrayConstructor - (*JsonArrayQueryConstructor)(nil), // 210: pg_query.JsonArrayQueryConstructor - (*JsonAggConstructor)(nil), // 211: pg_query.JsonAggConstructor - (*JsonObjectAgg)(nil), // 212: pg_query.JsonObjectAgg - (*JsonArrayAgg)(nil), // 213: pg_query.JsonArrayAgg - (*RawStmt)(nil), // 214: pg_query.RawStmt - (*InsertStmt)(nil), // 215: pg_query.InsertStmt - (*DeleteStmt)(nil), // 216: pg_query.DeleteStmt - (*UpdateStmt)(nil), // 217: pg_query.UpdateStmt - (*MergeStmt)(nil), // 218: pg_query.MergeStmt - (*SelectStmt)(nil), // 219: pg_query.SelectStmt - (*SetOperationStmt)(nil), // 220: pg_query.SetOperationStmt - (*ReturnStmt)(nil), // 221: pg_query.ReturnStmt - (*PLAssignStmt)(nil), // 222: pg_query.PLAssignStmt - (*CreateSchemaStmt)(nil), // 223: pg_query.CreateSchemaStmt - (*AlterTableStmt)(nil), // 224: pg_query.AlterTableStmt - (*ReplicaIdentityStmt)(nil), // 225: pg_query.ReplicaIdentityStmt - (*AlterTableCmd)(nil), // 226: pg_query.AlterTableCmd - (*AlterCollationStmt)(nil), // 227: pg_query.AlterCollationStmt - (*AlterDomainStmt)(nil), // 228: pg_query.AlterDomainStmt - (*GrantStmt)(nil), // 229: pg_query.GrantStmt - (*ObjectWithArgs)(nil), // 230: pg_query.ObjectWithArgs - (*AccessPriv)(nil), // 231: pg_query.AccessPriv - (*GrantRoleStmt)(nil), // 232: pg_query.GrantRoleStmt - (*AlterDefaultPrivilegesStmt)(nil), // 233: pg_query.AlterDefaultPrivilegesStmt - (*CopyStmt)(nil), // 234: pg_query.CopyStmt - (*VariableSetStmt)(nil), // 235: pg_query.VariableSetStmt - (*VariableShowStmt)(nil), // 236: pg_query.VariableShowStmt - (*CreateStmt)(nil), // 237: pg_query.CreateStmt - (*Constraint)(nil), // 238: pg_query.Constraint - (*CreateTableSpaceStmt)(nil), // 239: pg_query.CreateTableSpaceStmt - (*DropTableSpaceStmt)(nil), // 240: pg_query.DropTableSpaceStmt - (*AlterTableSpaceOptionsStmt)(nil), // 241: pg_query.AlterTableSpaceOptionsStmt - (*AlterTableMoveAllStmt)(nil), // 242: pg_query.AlterTableMoveAllStmt - (*CreateExtensionStmt)(nil), // 243: pg_query.CreateExtensionStmt - (*AlterExtensionStmt)(nil), // 244: pg_query.AlterExtensionStmt - (*AlterExtensionContentsStmt)(nil), // 245: pg_query.AlterExtensionContentsStmt - (*CreateFdwStmt)(nil), // 246: pg_query.CreateFdwStmt - (*AlterFdwStmt)(nil), // 247: pg_query.AlterFdwStmt - (*CreateForeignServerStmt)(nil), // 248: pg_query.CreateForeignServerStmt - (*AlterForeignServerStmt)(nil), // 249: pg_query.AlterForeignServerStmt - (*CreateForeignTableStmt)(nil), // 250: pg_query.CreateForeignTableStmt - (*CreateUserMappingStmt)(nil), // 251: pg_query.CreateUserMappingStmt - (*AlterUserMappingStmt)(nil), // 252: pg_query.AlterUserMappingStmt - (*DropUserMappingStmt)(nil), // 253: pg_query.DropUserMappingStmt - (*ImportForeignSchemaStmt)(nil), // 254: pg_query.ImportForeignSchemaStmt - (*CreatePolicyStmt)(nil), // 255: pg_query.CreatePolicyStmt - (*AlterPolicyStmt)(nil), // 256: pg_query.AlterPolicyStmt - (*CreateAmStmt)(nil), // 257: pg_query.CreateAmStmt - (*CreateTrigStmt)(nil), // 258: pg_query.CreateTrigStmt - (*CreateEventTrigStmt)(nil), // 259: pg_query.CreateEventTrigStmt - (*AlterEventTrigStmt)(nil), // 260: pg_query.AlterEventTrigStmt - (*CreatePLangStmt)(nil), // 261: pg_query.CreatePLangStmt - (*CreateRoleStmt)(nil), // 262: pg_query.CreateRoleStmt - (*AlterRoleStmt)(nil), // 263: pg_query.AlterRoleStmt - (*AlterRoleSetStmt)(nil), // 264: pg_query.AlterRoleSetStmt - (*DropRoleStmt)(nil), // 265: pg_query.DropRoleStmt - (*CreateSeqStmt)(nil), // 266: pg_query.CreateSeqStmt - (*AlterSeqStmt)(nil), // 267: pg_query.AlterSeqStmt - (*DefineStmt)(nil), // 268: pg_query.DefineStmt - (*CreateDomainStmt)(nil), // 269: pg_query.CreateDomainStmt - (*CreateOpClassStmt)(nil), // 270: pg_query.CreateOpClassStmt - (*CreateOpClassItem)(nil), // 271: pg_query.CreateOpClassItem - (*CreateOpFamilyStmt)(nil), // 272: pg_query.CreateOpFamilyStmt - (*AlterOpFamilyStmt)(nil), // 273: pg_query.AlterOpFamilyStmt - (*DropStmt)(nil), // 274: pg_query.DropStmt - (*TruncateStmt)(nil), // 275: pg_query.TruncateStmt - (*CommentStmt)(nil), // 276: pg_query.CommentStmt - (*SecLabelStmt)(nil), // 277: pg_query.SecLabelStmt - (*DeclareCursorStmt)(nil), // 278: pg_query.DeclareCursorStmt - (*ClosePortalStmt)(nil), // 279: pg_query.ClosePortalStmt - (*FetchStmt)(nil), // 280: pg_query.FetchStmt - (*IndexStmt)(nil), // 281: pg_query.IndexStmt - (*CreateStatsStmt)(nil), // 282: pg_query.CreateStatsStmt - (*StatsElem)(nil), // 283: pg_query.StatsElem - (*AlterStatsStmt)(nil), // 284: pg_query.AlterStatsStmt - (*CreateFunctionStmt)(nil), // 285: pg_query.CreateFunctionStmt - (*FunctionParameter)(nil), // 286: pg_query.FunctionParameter - (*AlterFunctionStmt)(nil), // 287: pg_query.AlterFunctionStmt - (*DoStmt)(nil), // 288: pg_query.DoStmt - (*InlineCodeBlock)(nil), // 289: pg_query.InlineCodeBlock - (*CallStmt)(nil), // 290: pg_query.CallStmt - (*CallContext)(nil), // 291: pg_query.CallContext - (*RenameStmt)(nil), // 292: pg_query.RenameStmt - (*AlterObjectDependsStmt)(nil), // 293: pg_query.AlterObjectDependsStmt - (*AlterObjectSchemaStmt)(nil), // 294: pg_query.AlterObjectSchemaStmt - (*AlterOwnerStmt)(nil), // 295: pg_query.AlterOwnerStmt - (*AlterOperatorStmt)(nil), // 296: pg_query.AlterOperatorStmt - (*AlterTypeStmt)(nil), // 297: pg_query.AlterTypeStmt - (*RuleStmt)(nil), // 298: pg_query.RuleStmt - (*NotifyStmt)(nil), // 299: pg_query.NotifyStmt - (*ListenStmt)(nil), // 300: pg_query.ListenStmt - (*UnlistenStmt)(nil), // 301: pg_query.UnlistenStmt - (*TransactionStmt)(nil), // 302: pg_query.TransactionStmt - (*CompositeTypeStmt)(nil), // 303: pg_query.CompositeTypeStmt - (*CreateEnumStmt)(nil), // 304: pg_query.CreateEnumStmt - (*CreateRangeStmt)(nil), // 305: pg_query.CreateRangeStmt - (*AlterEnumStmt)(nil), // 306: pg_query.AlterEnumStmt - (*ViewStmt)(nil), // 307: pg_query.ViewStmt - (*LoadStmt)(nil), // 308: pg_query.LoadStmt - (*CreatedbStmt)(nil), // 309: pg_query.CreatedbStmt - (*AlterDatabaseStmt)(nil), // 310: pg_query.AlterDatabaseStmt - (*AlterDatabaseRefreshCollStmt)(nil), // 311: pg_query.AlterDatabaseRefreshCollStmt - (*AlterDatabaseSetStmt)(nil), // 312: pg_query.AlterDatabaseSetStmt - (*DropdbStmt)(nil), // 313: pg_query.DropdbStmt - (*AlterSystemStmt)(nil), // 314: pg_query.AlterSystemStmt - (*ClusterStmt)(nil), // 315: pg_query.ClusterStmt - (*VacuumStmt)(nil), // 316: pg_query.VacuumStmt - (*VacuumRelation)(nil), // 317: pg_query.VacuumRelation - (*ExplainStmt)(nil), // 318: pg_query.ExplainStmt - (*CreateTableAsStmt)(nil), // 319: pg_query.CreateTableAsStmt - (*RefreshMatViewStmt)(nil), // 320: pg_query.RefreshMatViewStmt - (*CheckPointStmt)(nil), // 321: pg_query.CheckPointStmt - (*DiscardStmt)(nil), // 322: pg_query.DiscardStmt - (*LockStmt)(nil), // 323: pg_query.LockStmt - (*ConstraintsSetStmt)(nil), // 324: pg_query.ConstraintsSetStmt - (*ReindexStmt)(nil), // 325: pg_query.ReindexStmt - (*CreateConversionStmt)(nil), // 326: pg_query.CreateConversionStmt - (*CreateCastStmt)(nil), // 327: pg_query.CreateCastStmt - (*CreateTransformStmt)(nil), // 328: pg_query.CreateTransformStmt - (*PrepareStmt)(nil), // 329: pg_query.PrepareStmt - (*ExecuteStmt)(nil), // 330: pg_query.ExecuteStmt - (*DeallocateStmt)(nil), // 331: pg_query.DeallocateStmt - (*DropOwnedStmt)(nil), // 332: pg_query.DropOwnedStmt - (*ReassignOwnedStmt)(nil), // 333: pg_query.ReassignOwnedStmt - (*AlterTSDictionaryStmt)(nil), // 334: pg_query.AlterTSDictionaryStmt - (*AlterTSConfigurationStmt)(nil), // 335: pg_query.AlterTSConfigurationStmt - (*PublicationTable)(nil), // 336: pg_query.PublicationTable - (*PublicationObjSpec)(nil), // 337: pg_query.PublicationObjSpec - (*CreatePublicationStmt)(nil), // 338: pg_query.CreatePublicationStmt - (*AlterPublicationStmt)(nil), // 339: pg_query.AlterPublicationStmt - (*CreateSubscriptionStmt)(nil), // 340: pg_query.CreateSubscriptionStmt - (*AlterSubscriptionStmt)(nil), // 341: pg_query.AlterSubscriptionStmt - (*DropSubscriptionStmt)(nil), // 342: pg_query.DropSubscriptionStmt - (*ScanToken)(nil), // 343: pg_query.ScanToken - (*SummaryResult)(nil), // 344: pg_query.SummaryResult - (*SummaryResult_Table)(nil), // 345: pg_query.SummaryResult.Table - nil, // 346: pg_query.SummaryResult.AliasesEntry - (*SummaryResult_Function)(nil), // 347: pg_query.SummaryResult.Function - (*SummaryResult_FilterColumn)(nil), // 348: pg_query.SummaryResult.FilterColumn + (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{ - 214, // 0: pg_query.ParseResult.stmts:type_name -> pg_query.RawStmt - 343, // 1: pg_query.ScanResult.tokens:type_name -> pg_query.ScanToken - 84, // 2: pg_query.Node.alias:type_name -> pg_query.Alias - 85, // 3: pg_query.Node.range_var:type_name -> pg_query.RangeVar - 86, // 4: pg_query.Node.table_func:type_name -> pg_query.TableFunc - 87, // 5: pg_query.Node.into_clause:type_name -> pg_query.IntoClause - 88, // 6: pg_query.Node.var:type_name -> pg_query.Var - 89, // 7: pg_query.Node.param:type_name -> pg_query.Param - 90, // 8: pg_query.Node.aggref:type_name -> pg_query.Aggref - 91, // 9: pg_query.Node.grouping_func:type_name -> pg_query.GroupingFunc - 92, // 10: pg_query.Node.window_func:type_name -> pg_query.WindowFunc - 93, // 11: pg_query.Node.window_func_run_condition:type_name -> pg_query.WindowFuncRunCondition - 94, // 12: pg_query.Node.merge_support_func:type_name -> pg_query.MergeSupportFunc - 95, // 13: pg_query.Node.subscripting_ref:type_name -> pg_query.SubscriptingRef - 96, // 14: pg_query.Node.func_expr:type_name -> pg_query.FuncExpr - 97, // 15: pg_query.Node.named_arg_expr:type_name -> pg_query.NamedArgExpr - 98, // 16: pg_query.Node.op_expr:type_name -> pg_query.OpExpr - 99, // 17: pg_query.Node.distinct_expr:type_name -> pg_query.DistinctExpr - 100, // 18: pg_query.Node.null_if_expr:type_name -> pg_query.NullIfExpr - 101, // 19: pg_query.Node.scalar_array_op_expr:type_name -> pg_query.ScalarArrayOpExpr - 102, // 20: pg_query.Node.bool_expr:type_name -> pg_query.BoolExpr - 103, // 21: pg_query.Node.sub_link:type_name -> pg_query.SubLink - 104, // 22: pg_query.Node.sub_plan:type_name -> pg_query.SubPlan - 105, // 23: pg_query.Node.alternative_sub_plan:type_name -> pg_query.AlternativeSubPlan - 106, // 24: pg_query.Node.field_select:type_name -> pg_query.FieldSelect - 107, // 25: pg_query.Node.field_store:type_name -> pg_query.FieldStore - 108, // 26: pg_query.Node.relabel_type:type_name -> pg_query.RelabelType - 109, // 27: pg_query.Node.coerce_via_io:type_name -> pg_query.CoerceViaIO - 110, // 28: pg_query.Node.array_coerce_expr:type_name -> pg_query.ArrayCoerceExpr - 111, // 29: pg_query.Node.convert_rowtype_expr:type_name -> pg_query.ConvertRowtypeExpr - 112, // 30: pg_query.Node.collate_expr:type_name -> pg_query.CollateExpr - 113, // 31: pg_query.Node.case_expr:type_name -> pg_query.CaseExpr - 114, // 32: pg_query.Node.case_when:type_name -> pg_query.CaseWhen - 115, // 33: pg_query.Node.case_test_expr:type_name -> pg_query.CaseTestExpr - 116, // 34: pg_query.Node.array_expr:type_name -> pg_query.ArrayExpr - 117, // 35: pg_query.Node.row_expr:type_name -> pg_query.RowExpr - 118, // 36: pg_query.Node.row_compare_expr:type_name -> pg_query.RowCompareExpr - 119, // 37: pg_query.Node.coalesce_expr:type_name -> pg_query.CoalesceExpr - 120, // 38: pg_query.Node.min_max_expr:type_name -> pg_query.MinMaxExpr - 121, // 39: pg_query.Node.sqlvalue_function:type_name -> pg_query.SQLValueFunction - 122, // 40: pg_query.Node.xml_expr:type_name -> pg_query.XmlExpr - 123, // 41: pg_query.Node.json_format:type_name -> pg_query.JsonFormat - 124, // 42: pg_query.Node.json_returning:type_name -> pg_query.JsonReturning - 125, // 43: pg_query.Node.json_value_expr:type_name -> pg_query.JsonValueExpr - 126, // 44: pg_query.Node.json_constructor_expr:type_name -> pg_query.JsonConstructorExpr - 127, // 45: pg_query.Node.json_is_predicate:type_name -> pg_query.JsonIsPredicate - 128, // 46: pg_query.Node.json_behavior:type_name -> pg_query.JsonBehavior - 129, // 47: pg_query.Node.json_expr:type_name -> pg_query.JsonExpr - 130, // 48: pg_query.Node.json_table_path:type_name -> pg_query.JsonTablePath - 131, // 49: pg_query.Node.json_table_path_scan:type_name -> pg_query.JsonTablePathScan - 132, // 50: pg_query.Node.json_table_sibling_join:type_name -> pg_query.JsonTableSiblingJoin - 133, // 51: pg_query.Node.null_test:type_name -> pg_query.NullTest - 134, // 52: pg_query.Node.boolean_test:type_name -> pg_query.BooleanTest - 135, // 53: pg_query.Node.merge_action:type_name -> pg_query.MergeAction - 136, // 54: pg_query.Node.coerce_to_domain:type_name -> pg_query.CoerceToDomain - 137, // 55: pg_query.Node.coerce_to_domain_value:type_name -> pg_query.CoerceToDomainValue - 138, // 56: pg_query.Node.set_to_default:type_name -> pg_query.SetToDefault - 139, // 57: pg_query.Node.current_of_expr:type_name -> pg_query.CurrentOfExpr - 140, // 58: pg_query.Node.next_value_expr:type_name -> pg_query.NextValueExpr - 141, // 59: pg_query.Node.inference_elem:type_name -> pg_query.InferenceElem - 142, // 60: pg_query.Node.target_entry:type_name -> pg_query.TargetEntry - 143, // 61: pg_query.Node.range_tbl_ref:type_name -> pg_query.RangeTblRef - 144, // 62: pg_query.Node.join_expr:type_name -> pg_query.JoinExpr - 145, // 63: pg_query.Node.from_expr:type_name -> pg_query.FromExpr - 146, // 64: pg_query.Node.on_conflict_expr:type_name -> pg_query.OnConflictExpr - 147, // 65: pg_query.Node.query:type_name -> pg_query.Query - 148, // 66: pg_query.Node.type_name:type_name -> pg_query.TypeName - 149, // 67: pg_query.Node.column_ref:type_name -> pg_query.ColumnRef - 150, // 68: pg_query.Node.param_ref:type_name -> pg_query.ParamRef - 151, // 69: pg_query.Node.a_expr:type_name -> pg_query.A_Expr - 152, // 70: pg_query.Node.type_cast:type_name -> pg_query.TypeCast - 153, // 71: pg_query.Node.collate_clause:type_name -> pg_query.CollateClause - 154, // 72: pg_query.Node.role_spec:type_name -> pg_query.RoleSpec - 155, // 73: pg_query.Node.func_call:type_name -> pg_query.FuncCall - 156, // 74: pg_query.Node.a_star:type_name -> pg_query.A_Star - 157, // 75: pg_query.Node.a_indices:type_name -> pg_query.A_Indices - 158, // 76: pg_query.Node.a_indirection:type_name -> pg_query.A_Indirection - 159, // 77: pg_query.Node.a_array_expr:type_name -> pg_query.A_ArrayExpr - 160, // 78: pg_query.Node.res_target:type_name -> pg_query.ResTarget - 161, // 79: pg_query.Node.multi_assign_ref:type_name -> pg_query.MultiAssignRef - 162, // 80: pg_query.Node.sort_by:type_name -> pg_query.SortBy - 163, // 81: pg_query.Node.window_def:type_name -> pg_query.WindowDef - 164, // 82: pg_query.Node.range_subselect:type_name -> pg_query.RangeSubselect - 165, // 83: pg_query.Node.range_function:type_name -> pg_query.RangeFunction - 166, // 84: pg_query.Node.range_table_func:type_name -> pg_query.RangeTableFunc - 167, // 85: pg_query.Node.range_table_func_col:type_name -> pg_query.RangeTableFuncCol - 168, // 86: pg_query.Node.range_table_sample:type_name -> pg_query.RangeTableSample - 169, // 87: pg_query.Node.column_def:type_name -> pg_query.ColumnDef - 170, // 88: pg_query.Node.table_like_clause:type_name -> pg_query.TableLikeClause - 171, // 89: pg_query.Node.index_elem:type_name -> pg_query.IndexElem - 172, // 90: pg_query.Node.def_elem:type_name -> pg_query.DefElem - 173, // 91: pg_query.Node.locking_clause:type_name -> pg_query.LockingClause - 174, // 92: pg_query.Node.xml_serialize:type_name -> pg_query.XmlSerialize - 175, // 93: pg_query.Node.partition_elem:type_name -> pg_query.PartitionElem - 176, // 94: pg_query.Node.partition_spec:type_name -> pg_query.PartitionSpec - 177, // 95: pg_query.Node.partition_bound_spec:type_name -> pg_query.PartitionBoundSpec - 178, // 96: pg_query.Node.partition_range_datum:type_name -> pg_query.PartitionRangeDatum - 179, // 97: pg_query.Node.single_partition_spec:type_name -> pg_query.SinglePartitionSpec - 180, // 98: pg_query.Node.partition_cmd:type_name -> pg_query.PartitionCmd - 181, // 99: pg_query.Node.range_tbl_entry:type_name -> pg_query.RangeTblEntry - 182, // 100: pg_query.Node.rtepermission_info:type_name -> pg_query.RTEPermissionInfo - 183, // 101: pg_query.Node.range_tbl_function:type_name -> pg_query.RangeTblFunction - 184, // 102: pg_query.Node.table_sample_clause:type_name -> pg_query.TableSampleClause - 185, // 103: pg_query.Node.with_check_option:type_name -> pg_query.WithCheckOption - 186, // 104: pg_query.Node.sort_group_clause:type_name -> pg_query.SortGroupClause - 187, // 105: pg_query.Node.grouping_set:type_name -> pg_query.GroupingSet - 188, // 106: pg_query.Node.window_clause:type_name -> pg_query.WindowClause - 189, // 107: pg_query.Node.row_mark_clause:type_name -> pg_query.RowMarkClause - 190, // 108: pg_query.Node.with_clause:type_name -> pg_query.WithClause - 191, // 109: pg_query.Node.infer_clause:type_name -> pg_query.InferClause - 192, // 110: pg_query.Node.on_conflict_clause:type_name -> pg_query.OnConflictClause - 193, // 111: pg_query.Node.ctesearch_clause:type_name -> pg_query.CTESearchClause - 194, // 112: pg_query.Node.ctecycle_clause:type_name -> pg_query.CTECycleClause - 195, // 113: pg_query.Node.common_table_expr:type_name -> pg_query.CommonTableExpr - 196, // 114: pg_query.Node.merge_when_clause:type_name -> pg_query.MergeWhenClause - 197, // 115: pg_query.Node.trigger_transition:type_name -> pg_query.TriggerTransition - 198, // 116: pg_query.Node.json_output:type_name -> pg_query.JsonOutput - 199, // 117: pg_query.Node.json_argument:type_name -> pg_query.JsonArgument - 200, // 118: pg_query.Node.json_func_expr:type_name -> pg_query.JsonFuncExpr - 201, // 119: pg_query.Node.json_table_path_spec:type_name -> pg_query.JsonTablePathSpec - 202, // 120: pg_query.Node.json_table:type_name -> pg_query.JsonTable - 203, // 121: pg_query.Node.json_table_column:type_name -> pg_query.JsonTableColumn - 204, // 122: pg_query.Node.json_key_value:type_name -> pg_query.JsonKeyValue - 205, // 123: pg_query.Node.json_parse_expr:type_name -> pg_query.JsonParseExpr - 206, // 124: pg_query.Node.json_scalar_expr:type_name -> pg_query.JsonScalarExpr - 207, // 125: pg_query.Node.json_serialize_expr:type_name -> pg_query.JsonSerializeExpr - 208, // 126: pg_query.Node.json_object_constructor:type_name -> pg_query.JsonObjectConstructor - 209, // 127: pg_query.Node.json_array_constructor:type_name -> pg_query.JsonArrayConstructor - 210, // 128: pg_query.Node.json_array_query_constructor:type_name -> pg_query.JsonArrayQueryConstructor - 211, // 129: pg_query.Node.json_agg_constructor:type_name -> pg_query.JsonAggConstructor - 212, // 130: pg_query.Node.json_object_agg:type_name -> pg_query.JsonObjectAgg - 213, // 131: pg_query.Node.json_array_agg:type_name -> pg_query.JsonArrayAgg - 214, // 132: pg_query.Node.raw_stmt:type_name -> pg_query.RawStmt - 215, // 133: pg_query.Node.insert_stmt:type_name -> pg_query.InsertStmt - 216, // 134: pg_query.Node.delete_stmt:type_name -> pg_query.DeleteStmt - 217, // 135: pg_query.Node.update_stmt:type_name -> pg_query.UpdateStmt - 218, // 136: pg_query.Node.merge_stmt:type_name -> pg_query.MergeStmt - 219, // 137: pg_query.Node.select_stmt:type_name -> pg_query.SelectStmt - 220, // 138: pg_query.Node.set_operation_stmt:type_name -> pg_query.SetOperationStmt - 221, // 139: pg_query.Node.return_stmt:type_name -> pg_query.ReturnStmt - 222, // 140: pg_query.Node.plassign_stmt:type_name -> pg_query.PLAssignStmt - 223, // 141: pg_query.Node.create_schema_stmt:type_name -> pg_query.CreateSchemaStmt - 224, // 142: pg_query.Node.alter_table_stmt:type_name -> pg_query.AlterTableStmt - 225, // 143: pg_query.Node.replica_identity_stmt:type_name -> pg_query.ReplicaIdentityStmt - 226, // 144: pg_query.Node.alter_table_cmd:type_name -> pg_query.AlterTableCmd - 227, // 145: pg_query.Node.alter_collation_stmt:type_name -> pg_query.AlterCollationStmt - 228, // 146: pg_query.Node.alter_domain_stmt:type_name -> pg_query.AlterDomainStmt - 229, // 147: pg_query.Node.grant_stmt:type_name -> pg_query.GrantStmt - 230, // 148: pg_query.Node.object_with_args:type_name -> pg_query.ObjectWithArgs - 231, // 149: pg_query.Node.access_priv:type_name -> pg_query.AccessPriv - 232, // 150: pg_query.Node.grant_role_stmt:type_name -> pg_query.GrantRoleStmt - 233, // 151: pg_query.Node.alter_default_privileges_stmt:type_name -> pg_query.AlterDefaultPrivilegesStmt - 234, // 152: pg_query.Node.copy_stmt:type_name -> pg_query.CopyStmt - 235, // 153: pg_query.Node.variable_set_stmt:type_name -> pg_query.VariableSetStmt - 236, // 154: pg_query.Node.variable_show_stmt:type_name -> pg_query.VariableShowStmt - 237, // 155: pg_query.Node.create_stmt:type_name -> pg_query.CreateStmt - 238, // 156: pg_query.Node.constraint:type_name -> pg_query.Constraint - 239, // 157: pg_query.Node.create_table_space_stmt:type_name -> pg_query.CreateTableSpaceStmt - 240, // 158: pg_query.Node.drop_table_space_stmt:type_name -> pg_query.DropTableSpaceStmt - 241, // 159: pg_query.Node.alter_table_space_options_stmt:type_name -> pg_query.AlterTableSpaceOptionsStmt - 242, // 160: pg_query.Node.alter_table_move_all_stmt:type_name -> pg_query.AlterTableMoveAllStmt - 243, // 161: pg_query.Node.create_extension_stmt:type_name -> pg_query.CreateExtensionStmt - 244, // 162: pg_query.Node.alter_extension_stmt:type_name -> pg_query.AlterExtensionStmt - 245, // 163: pg_query.Node.alter_extension_contents_stmt:type_name -> pg_query.AlterExtensionContentsStmt - 246, // 164: pg_query.Node.create_fdw_stmt:type_name -> pg_query.CreateFdwStmt - 247, // 165: pg_query.Node.alter_fdw_stmt:type_name -> pg_query.AlterFdwStmt - 248, // 166: pg_query.Node.create_foreign_server_stmt:type_name -> pg_query.CreateForeignServerStmt - 249, // 167: pg_query.Node.alter_foreign_server_stmt:type_name -> pg_query.AlterForeignServerStmt - 250, // 168: pg_query.Node.create_foreign_table_stmt:type_name -> pg_query.CreateForeignTableStmt - 251, // 169: pg_query.Node.create_user_mapping_stmt:type_name -> pg_query.CreateUserMappingStmt - 252, // 170: pg_query.Node.alter_user_mapping_stmt:type_name -> pg_query.AlterUserMappingStmt - 253, // 171: pg_query.Node.drop_user_mapping_stmt:type_name -> pg_query.DropUserMappingStmt - 254, // 172: pg_query.Node.import_foreign_schema_stmt:type_name -> pg_query.ImportForeignSchemaStmt - 255, // 173: pg_query.Node.create_policy_stmt:type_name -> pg_query.CreatePolicyStmt - 256, // 174: pg_query.Node.alter_policy_stmt:type_name -> pg_query.AlterPolicyStmt - 257, // 175: pg_query.Node.create_am_stmt:type_name -> pg_query.CreateAmStmt - 258, // 176: pg_query.Node.create_trig_stmt:type_name -> pg_query.CreateTrigStmt - 259, // 177: pg_query.Node.create_event_trig_stmt:type_name -> pg_query.CreateEventTrigStmt - 260, // 178: pg_query.Node.alter_event_trig_stmt:type_name -> pg_query.AlterEventTrigStmt - 261, // 179: pg_query.Node.create_plang_stmt:type_name -> pg_query.CreatePLangStmt - 262, // 180: pg_query.Node.create_role_stmt:type_name -> pg_query.CreateRoleStmt - 263, // 181: pg_query.Node.alter_role_stmt:type_name -> pg_query.AlterRoleStmt - 264, // 182: pg_query.Node.alter_role_set_stmt:type_name -> pg_query.AlterRoleSetStmt - 265, // 183: pg_query.Node.drop_role_stmt:type_name -> pg_query.DropRoleStmt - 266, // 184: pg_query.Node.create_seq_stmt:type_name -> pg_query.CreateSeqStmt - 267, // 185: pg_query.Node.alter_seq_stmt:type_name -> pg_query.AlterSeqStmt - 268, // 186: pg_query.Node.define_stmt:type_name -> pg_query.DefineStmt - 269, // 187: pg_query.Node.create_domain_stmt:type_name -> pg_query.CreateDomainStmt - 270, // 188: pg_query.Node.create_op_class_stmt:type_name -> pg_query.CreateOpClassStmt - 271, // 189: pg_query.Node.create_op_class_item:type_name -> pg_query.CreateOpClassItem - 272, // 190: pg_query.Node.create_op_family_stmt:type_name -> pg_query.CreateOpFamilyStmt - 273, // 191: pg_query.Node.alter_op_family_stmt:type_name -> pg_query.AlterOpFamilyStmt - 274, // 192: pg_query.Node.drop_stmt:type_name -> pg_query.DropStmt - 275, // 193: pg_query.Node.truncate_stmt:type_name -> pg_query.TruncateStmt - 276, // 194: pg_query.Node.comment_stmt:type_name -> pg_query.CommentStmt - 277, // 195: pg_query.Node.sec_label_stmt:type_name -> pg_query.SecLabelStmt - 278, // 196: pg_query.Node.declare_cursor_stmt:type_name -> pg_query.DeclareCursorStmt - 279, // 197: pg_query.Node.close_portal_stmt:type_name -> pg_query.ClosePortalStmt - 280, // 198: pg_query.Node.fetch_stmt:type_name -> pg_query.FetchStmt - 281, // 199: pg_query.Node.index_stmt:type_name -> pg_query.IndexStmt - 282, // 200: pg_query.Node.create_stats_stmt:type_name -> pg_query.CreateStatsStmt - 283, // 201: pg_query.Node.stats_elem:type_name -> pg_query.StatsElem - 284, // 202: pg_query.Node.alter_stats_stmt:type_name -> pg_query.AlterStatsStmt - 285, // 203: pg_query.Node.create_function_stmt:type_name -> pg_query.CreateFunctionStmt - 286, // 204: pg_query.Node.function_parameter:type_name -> pg_query.FunctionParameter - 287, // 205: pg_query.Node.alter_function_stmt:type_name -> pg_query.AlterFunctionStmt - 288, // 206: pg_query.Node.do_stmt:type_name -> pg_query.DoStmt - 289, // 207: pg_query.Node.inline_code_block:type_name -> pg_query.InlineCodeBlock - 290, // 208: pg_query.Node.call_stmt:type_name -> pg_query.CallStmt - 291, // 209: pg_query.Node.call_context:type_name -> pg_query.CallContext - 292, // 210: pg_query.Node.rename_stmt:type_name -> pg_query.RenameStmt - 293, // 211: pg_query.Node.alter_object_depends_stmt:type_name -> pg_query.AlterObjectDependsStmt - 294, // 212: pg_query.Node.alter_object_schema_stmt:type_name -> pg_query.AlterObjectSchemaStmt - 295, // 213: pg_query.Node.alter_owner_stmt:type_name -> pg_query.AlterOwnerStmt - 296, // 214: pg_query.Node.alter_operator_stmt:type_name -> pg_query.AlterOperatorStmt - 297, // 215: pg_query.Node.alter_type_stmt:type_name -> pg_query.AlterTypeStmt - 298, // 216: pg_query.Node.rule_stmt:type_name -> pg_query.RuleStmt - 299, // 217: pg_query.Node.notify_stmt:type_name -> pg_query.NotifyStmt - 300, // 218: pg_query.Node.listen_stmt:type_name -> pg_query.ListenStmt - 301, // 219: pg_query.Node.unlisten_stmt:type_name -> pg_query.UnlistenStmt - 302, // 220: pg_query.Node.transaction_stmt:type_name -> pg_query.TransactionStmt - 303, // 221: pg_query.Node.composite_type_stmt:type_name -> pg_query.CompositeTypeStmt - 304, // 222: pg_query.Node.create_enum_stmt:type_name -> pg_query.CreateEnumStmt - 305, // 223: pg_query.Node.create_range_stmt:type_name -> pg_query.CreateRangeStmt - 306, // 224: pg_query.Node.alter_enum_stmt:type_name -> pg_query.AlterEnumStmt - 307, // 225: pg_query.Node.view_stmt:type_name -> pg_query.ViewStmt - 308, // 226: pg_query.Node.load_stmt:type_name -> pg_query.LoadStmt - 309, // 227: pg_query.Node.createdb_stmt:type_name -> pg_query.CreatedbStmt - 310, // 228: pg_query.Node.alter_database_stmt:type_name -> pg_query.AlterDatabaseStmt - 311, // 229: pg_query.Node.alter_database_refresh_coll_stmt:type_name -> pg_query.AlterDatabaseRefreshCollStmt - 312, // 230: pg_query.Node.alter_database_set_stmt:type_name -> pg_query.AlterDatabaseSetStmt - 313, // 231: pg_query.Node.dropdb_stmt:type_name -> pg_query.DropdbStmt - 314, // 232: pg_query.Node.alter_system_stmt:type_name -> pg_query.AlterSystemStmt - 315, // 233: pg_query.Node.cluster_stmt:type_name -> pg_query.ClusterStmt - 316, // 234: pg_query.Node.vacuum_stmt:type_name -> pg_query.VacuumStmt - 317, // 235: pg_query.Node.vacuum_relation:type_name -> pg_query.VacuumRelation - 318, // 236: pg_query.Node.explain_stmt:type_name -> pg_query.ExplainStmt - 319, // 237: pg_query.Node.create_table_as_stmt:type_name -> pg_query.CreateTableAsStmt - 320, // 238: pg_query.Node.refresh_mat_view_stmt:type_name -> pg_query.RefreshMatViewStmt - 321, // 239: pg_query.Node.check_point_stmt:type_name -> pg_query.CheckPointStmt - 322, // 240: pg_query.Node.discard_stmt:type_name -> pg_query.DiscardStmt - 323, // 241: pg_query.Node.lock_stmt:type_name -> pg_query.LockStmt - 324, // 242: pg_query.Node.constraints_set_stmt:type_name -> pg_query.ConstraintsSetStmt - 325, // 243: pg_query.Node.reindex_stmt:type_name -> pg_query.ReindexStmt - 326, // 244: pg_query.Node.create_conversion_stmt:type_name -> pg_query.CreateConversionStmt - 327, // 245: pg_query.Node.create_cast_stmt:type_name -> pg_query.CreateCastStmt - 328, // 246: pg_query.Node.create_transform_stmt:type_name -> pg_query.CreateTransformStmt - 329, // 247: pg_query.Node.prepare_stmt:type_name -> pg_query.PrepareStmt - 330, // 248: pg_query.Node.execute_stmt:type_name -> pg_query.ExecuteStmt - 331, // 249: pg_query.Node.deallocate_stmt:type_name -> pg_query.DeallocateStmt - 332, // 250: pg_query.Node.drop_owned_stmt:type_name -> pg_query.DropOwnedStmt - 333, // 251: pg_query.Node.reassign_owned_stmt:type_name -> pg_query.ReassignOwnedStmt - 334, // 252: pg_query.Node.alter_tsdictionary_stmt:type_name -> pg_query.AlterTSDictionaryStmt - 335, // 253: pg_query.Node.alter_tsconfiguration_stmt:type_name -> pg_query.AlterTSConfigurationStmt - 336, // 254: pg_query.Node.publication_table:type_name -> pg_query.PublicationTable - 337, // 255: pg_query.Node.publication_obj_spec:type_name -> pg_query.PublicationObjSpec - 338, // 256: pg_query.Node.create_publication_stmt:type_name -> pg_query.CreatePublicationStmt - 339, // 257: pg_query.Node.alter_publication_stmt:type_name -> pg_query.AlterPublicationStmt - 340, // 258: pg_query.Node.create_subscription_stmt:type_name -> pg_query.CreateSubscriptionStmt - 341, // 259: pg_query.Node.alter_subscription_stmt:type_name -> pg_query.AlterSubscriptionStmt - 342, // 260: pg_query.Node.drop_subscription_stmt:type_name -> pg_query.DropSubscriptionStmt - 75, // 261: pg_query.Node.integer:type_name -> pg_query.Integer - 76, // 262: pg_query.Node.float:type_name -> pg_query.Float - 77, // 263: pg_query.Node.boolean:type_name -> pg_query.Boolean - 78, // 264: pg_query.Node.string:type_name -> pg_query.String - 79, // 265: pg_query.Node.bit_string:type_name -> pg_query.BitString - 80, // 266: pg_query.Node.list:type_name -> pg_query.List - 82, // 267: pg_query.Node.int_list:type_name -> pg_query.IntList - 81, // 268: pg_query.Node.oid_list:type_name -> pg_query.OidList - 83, // 269: pg_query.Node.a_const:type_name -> pg_query.A_Const - 74, // 270: pg_query.List.items:type_name -> pg_query.Node - 74, // 271: pg_query.OidList.items:type_name -> pg_query.Node - 74, // 272: pg_query.IntList.items:type_name -> pg_query.Node - 75, // 273: pg_query.A_Const.ival:type_name -> pg_query.Integer - 76, // 274: pg_query.A_Const.fval:type_name -> pg_query.Float - 77, // 275: pg_query.A_Const.boolval:type_name -> pg_query.Boolean - 78, // 276: pg_query.A_Const.sval:type_name -> pg_query.String - 79, // 277: pg_query.A_Const.bsval:type_name -> pg_query.BitString - 74, // 278: pg_query.Alias.colnames:type_name -> pg_query.Node - 84, // 279: pg_query.RangeVar.alias:type_name -> pg_query.Alias - 37, // 280: pg_query.TableFunc.functype:type_name -> pg_query.TableFuncType - 74, // 281: pg_query.TableFunc.ns_uris:type_name -> pg_query.Node - 74, // 282: pg_query.TableFunc.ns_names:type_name -> pg_query.Node - 74, // 283: pg_query.TableFunc.docexpr:type_name -> pg_query.Node - 74, // 284: pg_query.TableFunc.rowexpr:type_name -> pg_query.Node - 74, // 285: pg_query.TableFunc.colnames:type_name -> pg_query.Node - 74, // 286: pg_query.TableFunc.coltypes:type_name -> pg_query.Node - 74, // 287: pg_query.TableFunc.coltypmods:type_name -> pg_query.Node - 74, // 288: pg_query.TableFunc.colcollations:type_name -> pg_query.Node - 74, // 289: pg_query.TableFunc.colexprs:type_name -> pg_query.Node - 74, // 290: pg_query.TableFunc.coldefexprs:type_name -> pg_query.Node - 74, // 291: pg_query.TableFunc.colvalexprs:type_name -> pg_query.Node - 74, // 292: pg_query.TableFunc.passingvalexprs:type_name -> pg_query.Node - 74, // 293: pg_query.TableFunc.plan:type_name -> pg_query.Node - 85, // 294: pg_query.IntoClause.rel:type_name -> pg_query.RangeVar - 74, // 295: pg_query.IntoClause.col_names:type_name -> pg_query.Node - 74, // 296: pg_query.IntoClause.options:type_name -> pg_query.Node - 36, // 297: pg_query.IntoClause.on_commit:type_name -> pg_query.OnCommitAction - 74, // 298: pg_query.IntoClause.view_query:type_name -> pg_query.Node - 74, // 299: pg_query.Var.xpr:type_name -> pg_query.Node - 74, // 300: pg_query.Param.xpr:type_name -> pg_query.Node - 38, // 301: pg_query.Param.paramkind:type_name -> pg_query.ParamKind - 74, // 302: pg_query.Aggref.xpr:type_name -> pg_query.Node - 74, // 303: pg_query.Aggref.aggargtypes:type_name -> pg_query.Node - 74, // 304: pg_query.Aggref.aggdirectargs:type_name -> pg_query.Node - 74, // 305: pg_query.Aggref.args:type_name -> pg_query.Node - 74, // 306: pg_query.Aggref.aggorder:type_name -> pg_query.Node - 74, // 307: pg_query.Aggref.aggdistinct:type_name -> pg_query.Node - 74, // 308: pg_query.Aggref.aggfilter:type_name -> pg_query.Node - 61, // 309: pg_query.Aggref.aggsplit:type_name -> pg_query.AggSplit - 74, // 310: pg_query.GroupingFunc.xpr:type_name -> pg_query.Node - 74, // 311: pg_query.GroupingFunc.args:type_name -> pg_query.Node - 74, // 312: pg_query.GroupingFunc.refs:type_name -> pg_query.Node - 74, // 313: pg_query.WindowFunc.xpr:type_name -> pg_query.Node - 74, // 314: pg_query.WindowFunc.args:type_name -> pg_query.Node - 74, // 315: pg_query.WindowFunc.aggfilter:type_name -> pg_query.Node - 74, // 316: pg_query.WindowFunc.run_condition:type_name -> pg_query.Node - 74, // 317: pg_query.WindowFuncRunCondition.xpr:type_name -> pg_query.Node - 74, // 318: pg_query.WindowFuncRunCondition.arg:type_name -> pg_query.Node - 74, // 319: pg_query.MergeSupportFunc.xpr:type_name -> pg_query.Node - 74, // 320: pg_query.SubscriptingRef.xpr:type_name -> pg_query.Node - 74, // 321: pg_query.SubscriptingRef.refupperindexpr:type_name -> pg_query.Node - 74, // 322: pg_query.SubscriptingRef.reflowerindexpr:type_name -> pg_query.Node - 74, // 323: pg_query.SubscriptingRef.refexpr:type_name -> pg_query.Node - 74, // 324: pg_query.SubscriptingRef.refassgnexpr:type_name -> pg_query.Node - 74, // 325: pg_query.FuncExpr.xpr:type_name -> pg_query.Node - 40, // 326: pg_query.FuncExpr.funcformat:type_name -> pg_query.CoercionForm - 74, // 327: pg_query.FuncExpr.args:type_name -> pg_query.Node - 74, // 328: pg_query.NamedArgExpr.xpr:type_name -> pg_query.Node - 74, // 329: pg_query.NamedArgExpr.arg:type_name -> pg_query.Node - 74, // 330: pg_query.OpExpr.xpr:type_name -> pg_query.Node - 74, // 331: pg_query.OpExpr.args:type_name -> pg_query.Node - 74, // 332: pg_query.DistinctExpr.xpr:type_name -> pg_query.Node - 74, // 333: pg_query.DistinctExpr.args:type_name -> pg_query.Node - 74, // 334: pg_query.NullIfExpr.xpr:type_name -> pg_query.Node - 74, // 335: pg_query.NullIfExpr.args:type_name -> pg_query.Node - 74, // 336: pg_query.ScalarArrayOpExpr.xpr:type_name -> pg_query.Node - 74, // 337: pg_query.ScalarArrayOpExpr.args:type_name -> pg_query.Node - 74, // 338: pg_query.BoolExpr.xpr:type_name -> pg_query.Node - 41, // 339: pg_query.BoolExpr.boolop:type_name -> pg_query.BoolExprType - 74, // 340: pg_query.BoolExpr.args:type_name -> pg_query.Node - 74, // 341: pg_query.SubLink.xpr:type_name -> pg_query.Node - 42, // 342: pg_query.SubLink.sub_link_type:type_name -> pg_query.SubLinkType - 74, // 343: pg_query.SubLink.testexpr:type_name -> pg_query.Node - 74, // 344: pg_query.SubLink.oper_name:type_name -> pg_query.Node - 74, // 345: pg_query.SubLink.subselect:type_name -> pg_query.Node - 74, // 346: pg_query.SubPlan.xpr:type_name -> pg_query.Node - 42, // 347: pg_query.SubPlan.sub_link_type:type_name -> pg_query.SubLinkType - 74, // 348: pg_query.SubPlan.testexpr:type_name -> pg_query.Node - 74, // 349: pg_query.SubPlan.param_ids:type_name -> pg_query.Node - 74, // 350: pg_query.SubPlan.set_param:type_name -> pg_query.Node - 74, // 351: pg_query.SubPlan.par_param:type_name -> pg_query.Node - 74, // 352: pg_query.SubPlan.args:type_name -> pg_query.Node - 74, // 353: pg_query.AlternativeSubPlan.xpr:type_name -> pg_query.Node - 74, // 354: pg_query.AlternativeSubPlan.subplans:type_name -> pg_query.Node - 74, // 355: pg_query.FieldSelect.xpr:type_name -> pg_query.Node - 74, // 356: pg_query.FieldSelect.arg:type_name -> pg_query.Node - 74, // 357: pg_query.FieldStore.xpr:type_name -> pg_query.Node - 74, // 358: pg_query.FieldStore.arg:type_name -> pg_query.Node - 74, // 359: pg_query.FieldStore.newvals:type_name -> pg_query.Node - 74, // 360: pg_query.FieldStore.fieldnums:type_name -> pg_query.Node - 74, // 361: pg_query.RelabelType.xpr:type_name -> pg_query.Node - 74, // 362: pg_query.RelabelType.arg:type_name -> pg_query.Node - 40, // 363: pg_query.RelabelType.relabelformat:type_name -> pg_query.CoercionForm - 74, // 364: pg_query.CoerceViaIO.xpr:type_name -> pg_query.Node - 74, // 365: pg_query.CoerceViaIO.arg:type_name -> pg_query.Node - 40, // 366: pg_query.CoerceViaIO.coerceformat:type_name -> pg_query.CoercionForm - 74, // 367: pg_query.ArrayCoerceExpr.xpr:type_name -> pg_query.Node - 74, // 368: pg_query.ArrayCoerceExpr.arg:type_name -> pg_query.Node - 74, // 369: pg_query.ArrayCoerceExpr.elemexpr:type_name -> pg_query.Node - 40, // 370: pg_query.ArrayCoerceExpr.coerceformat:type_name -> pg_query.CoercionForm - 74, // 371: pg_query.ConvertRowtypeExpr.xpr:type_name -> pg_query.Node - 74, // 372: pg_query.ConvertRowtypeExpr.arg:type_name -> pg_query.Node - 40, // 373: pg_query.ConvertRowtypeExpr.convertformat:type_name -> pg_query.CoercionForm - 74, // 374: pg_query.CollateExpr.xpr:type_name -> pg_query.Node - 74, // 375: pg_query.CollateExpr.arg:type_name -> pg_query.Node - 74, // 376: pg_query.CaseExpr.xpr:type_name -> pg_query.Node - 74, // 377: pg_query.CaseExpr.arg:type_name -> pg_query.Node - 74, // 378: pg_query.CaseExpr.args:type_name -> pg_query.Node - 74, // 379: pg_query.CaseExpr.defresult:type_name -> pg_query.Node - 74, // 380: pg_query.CaseWhen.xpr:type_name -> pg_query.Node - 74, // 381: pg_query.CaseWhen.expr:type_name -> pg_query.Node - 74, // 382: pg_query.CaseWhen.result:type_name -> pg_query.Node - 74, // 383: pg_query.CaseTestExpr.xpr:type_name -> pg_query.Node - 74, // 384: pg_query.ArrayExpr.xpr:type_name -> pg_query.Node - 74, // 385: pg_query.ArrayExpr.elements:type_name -> pg_query.Node - 74, // 386: pg_query.RowExpr.xpr:type_name -> pg_query.Node - 74, // 387: pg_query.RowExpr.args:type_name -> pg_query.Node - 40, // 388: pg_query.RowExpr.row_format:type_name -> pg_query.CoercionForm - 74, // 389: pg_query.RowExpr.colnames:type_name -> pg_query.Node - 74, // 390: pg_query.RowCompareExpr.xpr:type_name -> pg_query.Node - 43, // 391: pg_query.RowCompareExpr.rctype:type_name -> pg_query.RowCompareType - 74, // 392: pg_query.RowCompareExpr.opnos:type_name -> pg_query.Node - 74, // 393: pg_query.RowCompareExpr.opfamilies:type_name -> pg_query.Node - 74, // 394: pg_query.RowCompareExpr.inputcollids:type_name -> pg_query.Node - 74, // 395: pg_query.RowCompareExpr.largs:type_name -> pg_query.Node - 74, // 396: pg_query.RowCompareExpr.rargs:type_name -> pg_query.Node - 74, // 397: pg_query.CoalesceExpr.xpr:type_name -> pg_query.Node - 74, // 398: pg_query.CoalesceExpr.args:type_name -> pg_query.Node - 74, // 399: pg_query.MinMaxExpr.xpr:type_name -> pg_query.Node - 44, // 400: pg_query.MinMaxExpr.op:type_name -> pg_query.MinMaxOp - 74, // 401: pg_query.MinMaxExpr.args:type_name -> pg_query.Node - 74, // 402: pg_query.SQLValueFunction.xpr:type_name -> pg_query.Node - 45, // 403: pg_query.SQLValueFunction.op:type_name -> pg_query.SQLValueFunctionOp - 74, // 404: pg_query.XmlExpr.xpr:type_name -> pg_query.Node - 46, // 405: pg_query.XmlExpr.op:type_name -> pg_query.XmlExprOp - 74, // 406: pg_query.XmlExpr.named_args:type_name -> pg_query.Node - 74, // 407: pg_query.XmlExpr.arg_names:type_name -> pg_query.Node - 74, // 408: pg_query.XmlExpr.args:type_name -> pg_query.Node - 47, // 409: pg_query.XmlExpr.xmloption:type_name -> pg_query.XmlOptionType - 49, // 410: pg_query.JsonFormat.format_type:type_name -> pg_query.JsonFormatType - 48, // 411: pg_query.JsonFormat.encoding:type_name -> pg_query.JsonEncoding - 123, // 412: pg_query.JsonReturning.format:type_name -> pg_query.JsonFormat - 74, // 413: pg_query.JsonValueExpr.raw_expr:type_name -> pg_query.Node - 74, // 414: pg_query.JsonValueExpr.formatted_expr:type_name -> pg_query.Node - 123, // 415: pg_query.JsonValueExpr.format:type_name -> pg_query.JsonFormat - 74, // 416: pg_query.JsonConstructorExpr.xpr:type_name -> pg_query.Node - 50, // 417: pg_query.JsonConstructorExpr.type:type_name -> pg_query.JsonConstructorType - 74, // 418: pg_query.JsonConstructorExpr.args:type_name -> pg_query.Node - 74, // 419: pg_query.JsonConstructorExpr.func:type_name -> pg_query.Node - 74, // 420: pg_query.JsonConstructorExpr.coercion:type_name -> pg_query.Node - 124, // 421: pg_query.JsonConstructorExpr.returning:type_name -> pg_query.JsonReturning - 74, // 422: pg_query.JsonIsPredicate.expr:type_name -> pg_query.Node - 123, // 423: pg_query.JsonIsPredicate.format:type_name -> pg_query.JsonFormat - 51, // 424: pg_query.JsonIsPredicate.item_type:type_name -> pg_query.JsonValueType - 53, // 425: pg_query.JsonBehavior.btype:type_name -> pg_query.JsonBehaviorType - 74, // 426: pg_query.JsonBehavior.expr:type_name -> pg_query.Node - 74, // 427: pg_query.JsonExpr.xpr:type_name -> pg_query.Node - 54, // 428: pg_query.JsonExpr.op:type_name -> pg_query.JsonExprOp - 74, // 429: pg_query.JsonExpr.formatted_expr:type_name -> pg_query.Node - 123, // 430: pg_query.JsonExpr.format:type_name -> pg_query.JsonFormat - 74, // 431: pg_query.JsonExpr.path_spec:type_name -> pg_query.Node - 124, // 432: pg_query.JsonExpr.returning:type_name -> pg_query.JsonReturning - 74, // 433: pg_query.JsonExpr.passing_names:type_name -> pg_query.Node - 74, // 434: pg_query.JsonExpr.passing_values:type_name -> pg_query.Node - 128, // 435: pg_query.JsonExpr.on_empty:type_name -> pg_query.JsonBehavior - 128, // 436: pg_query.JsonExpr.on_error:type_name -> pg_query.JsonBehavior - 52, // 437: pg_query.JsonExpr.wrapper:type_name -> pg_query.JsonWrapper - 74, // 438: pg_query.JsonTablePathScan.plan:type_name -> pg_query.Node - 130, // 439: pg_query.JsonTablePathScan.path:type_name -> pg_query.JsonTablePath - 74, // 440: pg_query.JsonTablePathScan.child:type_name -> pg_query.Node - 74, // 441: pg_query.JsonTableSiblingJoin.plan:type_name -> pg_query.Node - 74, // 442: pg_query.JsonTableSiblingJoin.lplan:type_name -> pg_query.Node - 74, // 443: pg_query.JsonTableSiblingJoin.rplan:type_name -> pg_query.Node - 74, // 444: pg_query.NullTest.xpr:type_name -> pg_query.Node - 74, // 445: pg_query.NullTest.arg:type_name -> pg_query.Node - 55, // 446: pg_query.NullTest.nulltesttype:type_name -> pg_query.NullTestType - 74, // 447: pg_query.BooleanTest.xpr:type_name -> pg_query.Node - 74, // 448: pg_query.BooleanTest.arg:type_name -> pg_query.Node - 56, // 449: pg_query.BooleanTest.booltesttype:type_name -> pg_query.BoolTestType - 57, // 450: pg_query.MergeAction.match_kind:type_name -> pg_query.MergeMatchKind - 58, // 451: pg_query.MergeAction.command_type:type_name -> pg_query.CmdType - 35, // 452: pg_query.MergeAction.override:type_name -> pg_query.OverridingKind - 74, // 453: pg_query.MergeAction.qual:type_name -> pg_query.Node - 74, // 454: pg_query.MergeAction.target_list:type_name -> pg_query.Node - 74, // 455: pg_query.MergeAction.update_colnos:type_name -> pg_query.Node - 74, // 456: pg_query.CoerceToDomain.xpr:type_name -> pg_query.Node - 74, // 457: pg_query.CoerceToDomain.arg:type_name -> pg_query.Node - 40, // 458: pg_query.CoerceToDomain.coercionformat:type_name -> pg_query.CoercionForm - 74, // 459: pg_query.CoerceToDomainValue.xpr:type_name -> pg_query.Node - 74, // 460: pg_query.SetToDefault.xpr:type_name -> pg_query.Node - 74, // 461: pg_query.CurrentOfExpr.xpr:type_name -> pg_query.Node - 74, // 462: pg_query.NextValueExpr.xpr:type_name -> pg_query.Node - 74, // 463: pg_query.InferenceElem.xpr:type_name -> pg_query.Node - 74, // 464: pg_query.InferenceElem.expr:type_name -> pg_query.Node - 74, // 465: pg_query.TargetEntry.xpr:type_name -> pg_query.Node - 74, // 466: pg_query.TargetEntry.expr:type_name -> pg_query.Node - 59, // 467: pg_query.JoinExpr.jointype:type_name -> pg_query.JoinType - 74, // 468: pg_query.JoinExpr.larg:type_name -> pg_query.Node - 74, // 469: pg_query.JoinExpr.rarg:type_name -> pg_query.Node - 74, // 470: pg_query.JoinExpr.using_clause:type_name -> pg_query.Node - 84, // 471: pg_query.JoinExpr.join_using_alias:type_name -> pg_query.Alias - 74, // 472: pg_query.JoinExpr.quals:type_name -> pg_query.Node - 84, // 473: pg_query.JoinExpr.alias:type_name -> pg_query.Alias - 74, // 474: pg_query.FromExpr.fromlist:type_name -> pg_query.Node - 74, // 475: pg_query.FromExpr.quals:type_name -> pg_query.Node - 64, // 476: pg_query.OnConflictExpr.action:type_name -> pg_query.OnConflictAction - 74, // 477: pg_query.OnConflictExpr.arbiter_elems:type_name -> pg_query.Node - 74, // 478: pg_query.OnConflictExpr.arbiter_where:type_name -> pg_query.Node - 74, // 479: pg_query.OnConflictExpr.on_conflict_set:type_name -> pg_query.Node - 74, // 480: pg_query.OnConflictExpr.on_conflict_where:type_name -> pg_query.Node - 74, // 481: pg_query.OnConflictExpr.excl_rel_tlist:type_name -> pg_query.Node - 58, // 482: pg_query.Query.command_type:type_name -> pg_query.CmdType - 0, // 483: pg_query.Query.query_source:type_name -> pg_query.QuerySource - 74, // 484: pg_query.Query.utility_stmt:type_name -> pg_query.Node - 74, // 485: pg_query.Query.cte_list:type_name -> pg_query.Node - 74, // 486: pg_query.Query.rtable:type_name -> pg_query.Node - 74, // 487: pg_query.Query.rteperminfos:type_name -> pg_query.Node - 145, // 488: pg_query.Query.jointree:type_name -> pg_query.FromExpr - 74, // 489: pg_query.Query.merge_action_list:type_name -> pg_query.Node - 74, // 490: pg_query.Query.merge_join_condition:type_name -> pg_query.Node - 74, // 491: pg_query.Query.target_list:type_name -> pg_query.Node - 35, // 492: pg_query.Query.override:type_name -> pg_query.OverridingKind - 146, // 493: pg_query.Query.on_conflict:type_name -> pg_query.OnConflictExpr - 74, // 494: pg_query.Query.returning_list:type_name -> pg_query.Node - 74, // 495: pg_query.Query.group_clause:type_name -> pg_query.Node - 74, // 496: pg_query.Query.grouping_sets:type_name -> pg_query.Node - 74, // 497: pg_query.Query.having_qual:type_name -> pg_query.Node - 74, // 498: pg_query.Query.window_clause:type_name -> pg_query.Node - 74, // 499: pg_query.Query.distinct_clause:type_name -> pg_query.Node - 74, // 500: pg_query.Query.sort_clause:type_name -> pg_query.Node - 74, // 501: pg_query.Query.limit_offset:type_name -> pg_query.Node - 74, // 502: pg_query.Query.limit_count:type_name -> pg_query.Node - 65, // 503: pg_query.Query.limit_option:type_name -> pg_query.LimitOption - 74, // 504: pg_query.Query.row_marks:type_name -> pg_query.Node - 74, // 505: pg_query.Query.set_operations:type_name -> pg_query.Node - 74, // 506: pg_query.Query.constraint_deps:type_name -> pg_query.Node - 74, // 507: pg_query.Query.with_check_options:type_name -> pg_query.Node - 74, // 508: pg_query.TypeName.names:type_name -> pg_query.Node - 74, // 509: pg_query.TypeName.typmods:type_name -> pg_query.Node - 74, // 510: pg_query.TypeName.array_bounds:type_name -> pg_query.Node - 74, // 511: pg_query.ColumnRef.fields:type_name -> pg_query.Node - 4, // 512: pg_query.A_Expr.kind:type_name -> pg_query.A_Expr_Kind - 74, // 513: pg_query.A_Expr.name:type_name -> pg_query.Node - 74, // 514: pg_query.A_Expr.lexpr:type_name -> pg_query.Node - 74, // 515: pg_query.A_Expr.rexpr:type_name -> pg_query.Node - 74, // 516: pg_query.TypeCast.arg:type_name -> pg_query.Node - 148, // 517: pg_query.TypeCast.type_name:type_name -> pg_query.TypeName - 74, // 518: pg_query.CollateClause.arg:type_name -> pg_query.Node - 74, // 519: pg_query.CollateClause.collname:type_name -> pg_query.Node - 5, // 520: pg_query.RoleSpec.roletype:type_name -> pg_query.RoleSpecType - 74, // 521: pg_query.FuncCall.funcname:type_name -> pg_query.Node - 74, // 522: pg_query.FuncCall.args:type_name -> pg_query.Node - 74, // 523: pg_query.FuncCall.agg_order:type_name -> pg_query.Node - 74, // 524: pg_query.FuncCall.agg_filter:type_name -> pg_query.Node - 163, // 525: pg_query.FuncCall.over:type_name -> pg_query.WindowDef - 40, // 526: pg_query.FuncCall.funcformat:type_name -> pg_query.CoercionForm - 74, // 527: pg_query.A_Indices.lidx:type_name -> pg_query.Node - 74, // 528: pg_query.A_Indices.uidx:type_name -> pg_query.Node - 74, // 529: pg_query.A_Indirection.arg:type_name -> pg_query.Node - 74, // 530: pg_query.A_Indirection.indirection:type_name -> pg_query.Node - 74, // 531: pg_query.A_ArrayExpr.elements:type_name -> pg_query.Node - 74, // 532: pg_query.ResTarget.indirection:type_name -> pg_query.Node - 74, // 533: pg_query.ResTarget.val:type_name -> pg_query.Node - 74, // 534: pg_query.MultiAssignRef.source:type_name -> pg_query.Node - 74, // 535: pg_query.SortBy.node:type_name -> pg_query.Node - 1, // 536: pg_query.SortBy.sortby_dir:type_name -> pg_query.SortByDir - 2, // 537: pg_query.SortBy.sortby_nulls:type_name -> pg_query.SortByNulls - 74, // 538: pg_query.SortBy.use_op:type_name -> pg_query.Node - 74, // 539: pg_query.WindowDef.partition_clause:type_name -> pg_query.Node - 74, // 540: pg_query.WindowDef.order_clause:type_name -> pg_query.Node - 74, // 541: pg_query.WindowDef.start_offset:type_name -> pg_query.Node - 74, // 542: pg_query.WindowDef.end_offset:type_name -> pg_query.Node - 74, // 543: pg_query.RangeSubselect.subquery:type_name -> pg_query.Node - 84, // 544: pg_query.RangeSubselect.alias:type_name -> pg_query.Alias - 74, // 545: pg_query.RangeFunction.functions:type_name -> pg_query.Node - 84, // 546: pg_query.RangeFunction.alias:type_name -> pg_query.Alias - 74, // 547: pg_query.RangeFunction.coldeflist:type_name -> pg_query.Node - 74, // 548: pg_query.RangeTableFunc.docexpr:type_name -> pg_query.Node - 74, // 549: pg_query.RangeTableFunc.rowexpr:type_name -> pg_query.Node - 74, // 550: pg_query.RangeTableFunc.namespaces:type_name -> pg_query.Node - 74, // 551: pg_query.RangeTableFunc.columns:type_name -> pg_query.Node - 84, // 552: pg_query.RangeTableFunc.alias:type_name -> pg_query.Alias - 148, // 553: pg_query.RangeTableFuncCol.type_name:type_name -> pg_query.TypeName - 74, // 554: pg_query.RangeTableFuncCol.colexpr:type_name -> pg_query.Node - 74, // 555: pg_query.RangeTableFuncCol.coldefexpr:type_name -> pg_query.Node - 74, // 556: pg_query.RangeTableSample.relation:type_name -> pg_query.Node - 74, // 557: pg_query.RangeTableSample.method:type_name -> pg_query.Node - 74, // 558: pg_query.RangeTableSample.args:type_name -> pg_query.Node - 74, // 559: pg_query.RangeTableSample.repeatable:type_name -> pg_query.Node - 148, // 560: pg_query.ColumnDef.type_name:type_name -> pg_query.TypeName - 74, // 561: pg_query.ColumnDef.raw_default:type_name -> pg_query.Node - 74, // 562: pg_query.ColumnDef.cooked_default:type_name -> pg_query.Node - 85, // 563: pg_query.ColumnDef.identity_sequence:type_name -> pg_query.RangeVar - 153, // 564: pg_query.ColumnDef.coll_clause:type_name -> pg_query.CollateClause - 74, // 565: pg_query.ColumnDef.constraints:type_name -> pg_query.Node - 74, // 566: pg_query.ColumnDef.fdwoptions:type_name -> pg_query.Node - 85, // 567: pg_query.TableLikeClause.relation:type_name -> pg_query.RangeVar - 74, // 568: pg_query.IndexElem.expr:type_name -> pg_query.Node - 74, // 569: pg_query.IndexElem.collation:type_name -> pg_query.Node - 74, // 570: pg_query.IndexElem.opclass:type_name -> pg_query.Node - 74, // 571: pg_query.IndexElem.opclassopts:type_name -> pg_query.Node - 1, // 572: pg_query.IndexElem.ordering:type_name -> pg_query.SortByDir - 2, // 573: pg_query.IndexElem.nulls_ordering:type_name -> pg_query.SortByNulls - 74, // 574: pg_query.DefElem.arg:type_name -> pg_query.Node - 7, // 575: pg_query.DefElem.defaction:type_name -> pg_query.DefElemAction - 74, // 576: pg_query.LockingClause.locked_rels:type_name -> pg_query.Node - 66, // 577: pg_query.LockingClause.strength:type_name -> pg_query.LockClauseStrength - 67, // 578: pg_query.LockingClause.wait_policy:type_name -> pg_query.LockWaitPolicy - 47, // 579: pg_query.XmlSerialize.xmloption:type_name -> pg_query.XmlOptionType - 74, // 580: pg_query.XmlSerialize.expr:type_name -> pg_query.Node - 148, // 581: pg_query.XmlSerialize.type_name:type_name -> pg_query.TypeName - 74, // 582: pg_query.PartitionElem.expr:type_name -> pg_query.Node - 74, // 583: pg_query.PartitionElem.collation:type_name -> pg_query.Node - 74, // 584: pg_query.PartitionElem.opclass:type_name -> pg_query.Node - 8, // 585: pg_query.PartitionSpec.strategy:type_name -> pg_query.PartitionStrategy - 74, // 586: pg_query.PartitionSpec.part_params:type_name -> pg_query.Node - 74, // 587: pg_query.PartitionBoundSpec.listdatums:type_name -> pg_query.Node - 74, // 588: pg_query.PartitionBoundSpec.lowerdatums:type_name -> pg_query.Node - 74, // 589: pg_query.PartitionBoundSpec.upperdatums:type_name -> pg_query.Node - 9, // 590: pg_query.PartitionRangeDatum.kind:type_name -> pg_query.PartitionRangeDatumKind - 74, // 591: pg_query.PartitionRangeDatum.value:type_name -> pg_query.Node - 85, // 592: pg_query.PartitionCmd.name:type_name -> pg_query.RangeVar - 177, // 593: pg_query.PartitionCmd.bound:type_name -> pg_query.PartitionBoundSpec - 84, // 594: pg_query.RangeTblEntry.alias:type_name -> pg_query.Alias - 84, // 595: pg_query.RangeTblEntry.eref:type_name -> pg_query.Alias - 10, // 596: pg_query.RangeTblEntry.rtekind:type_name -> pg_query.RTEKind - 184, // 597: pg_query.RangeTblEntry.tablesample:type_name -> pg_query.TableSampleClause - 147, // 598: pg_query.RangeTblEntry.subquery:type_name -> pg_query.Query - 59, // 599: pg_query.RangeTblEntry.jointype:type_name -> pg_query.JoinType - 74, // 600: pg_query.RangeTblEntry.joinaliasvars:type_name -> pg_query.Node - 74, // 601: pg_query.RangeTblEntry.joinleftcols:type_name -> pg_query.Node - 74, // 602: pg_query.RangeTblEntry.joinrightcols:type_name -> pg_query.Node - 84, // 603: pg_query.RangeTblEntry.join_using_alias:type_name -> pg_query.Alias - 74, // 604: pg_query.RangeTblEntry.functions:type_name -> pg_query.Node - 86, // 605: pg_query.RangeTblEntry.tablefunc:type_name -> pg_query.TableFunc - 74, // 606: pg_query.RangeTblEntry.values_lists:type_name -> pg_query.Node - 74, // 607: pg_query.RangeTblEntry.coltypes:type_name -> pg_query.Node - 74, // 608: pg_query.RangeTblEntry.coltypmods:type_name -> pg_query.Node - 74, // 609: pg_query.RangeTblEntry.colcollations:type_name -> pg_query.Node - 74, // 610: pg_query.RangeTblEntry.security_quals:type_name -> pg_query.Node - 74, // 611: pg_query.RangeTblFunction.funcexpr:type_name -> pg_query.Node - 74, // 612: pg_query.RangeTblFunction.funccolnames:type_name -> pg_query.Node - 74, // 613: pg_query.RangeTblFunction.funccoltypes:type_name -> pg_query.Node - 74, // 614: pg_query.RangeTblFunction.funccoltypmods:type_name -> pg_query.Node - 74, // 615: pg_query.RangeTblFunction.funccolcollations:type_name -> pg_query.Node - 74, // 616: pg_query.TableSampleClause.args:type_name -> pg_query.Node - 74, // 617: pg_query.TableSampleClause.repeatable:type_name -> pg_query.Node - 11, // 618: pg_query.WithCheckOption.kind:type_name -> pg_query.WCOKind - 74, // 619: pg_query.WithCheckOption.qual:type_name -> pg_query.Node - 12, // 620: pg_query.GroupingSet.kind:type_name -> pg_query.GroupingSetKind - 74, // 621: pg_query.GroupingSet.content:type_name -> pg_query.Node - 74, // 622: pg_query.WindowClause.partition_clause:type_name -> pg_query.Node - 74, // 623: pg_query.WindowClause.order_clause:type_name -> pg_query.Node - 74, // 624: pg_query.WindowClause.start_offset:type_name -> pg_query.Node - 74, // 625: pg_query.WindowClause.end_offset:type_name -> pg_query.Node - 66, // 626: pg_query.RowMarkClause.strength:type_name -> pg_query.LockClauseStrength - 67, // 627: pg_query.RowMarkClause.wait_policy:type_name -> pg_query.LockWaitPolicy - 74, // 628: pg_query.WithClause.ctes:type_name -> pg_query.Node - 74, // 629: pg_query.InferClause.index_elems:type_name -> pg_query.Node - 74, // 630: pg_query.InferClause.where_clause:type_name -> pg_query.Node - 64, // 631: pg_query.OnConflictClause.action:type_name -> pg_query.OnConflictAction - 191, // 632: pg_query.OnConflictClause.infer:type_name -> pg_query.InferClause - 74, // 633: pg_query.OnConflictClause.target_list:type_name -> pg_query.Node - 74, // 634: pg_query.OnConflictClause.where_clause:type_name -> pg_query.Node - 74, // 635: pg_query.CTESearchClause.search_col_list:type_name -> pg_query.Node - 74, // 636: pg_query.CTECycleClause.cycle_col_list:type_name -> pg_query.Node - 74, // 637: pg_query.CTECycleClause.cycle_mark_value:type_name -> pg_query.Node - 74, // 638: pg_query.CTECycleClause.cycle_mark_default:type_name -> pg_query.Node - 74, // 639: pg_query.CommonTableExpr.aliascolnames:type_name -> pg_query.Node - 13, // 640: pg_query.CommonTableExpr.ctematerialized:type_name -> pg_query.CTEMaterialize - 74, // 641: pg_query.CommonTableExpr.ctequery:type_name -> pg_query.Node - 193, // 642: pg_query.CommonTableExpr.search_clause:type_name -> pg_query.CTESearchClause - 194, // 643: pg_query.CommonTableExpr.cycle_clause:type_name -> pg_query.CTECycleClause - 74, // 644: pg_query.CommonTableExpr.ctecolnames:type_name -> pg_query.Node - 74, // 645: pg_query.CommonTableExpr.ctecoltypes:type_name -> pg_query.Node - 74, // 646: pg_query.CommonTableExpr.ctecoltypmods:type_name -> pg_query.Node - 74, // 647: pg_query.CommonTableExpr.ctecolcollations:type_name -> pg_query.Node - 57, // 648: pg_query.MergeWhenClause.match_kind:type_name -> pg_query.MergeMatchKind - 58, // 649: pg_query.MergeWhenClause.command_type:type_name -> pg_query.CmdType - 35, // 650: pg_query.MergeWhenClause.override:type_name -> pg_query.OverridingKind - 74, // 651: pg_query.MergeWhenClause.condition:type_name -> pg_query.Node - 74, // 652: pg_query.MergeWhenClause.target_list:type_name -> pg_query.Node - 74, // 653: pg_query.MergeWhenClause.values:type_name -> pg_query.Node - 148, // 654: pg_query.JsonOutput.type_name:type_name -> pg_query.TypeName - 124, // 655: pg_query.JsonOutput.returning:type_name -> pg_query.JsonReturning - 125, // 656: pg_query.JsonArgument.val:type_name -> pg_query.JsonValueExpr - 54, // 657: pg_query.JsonFuncExpr.op:type_name -> pg_query.JsonExprOp - 125, // 658: pg_query.JsonFuncExpr.context_item:type_name -> pg_query.JsonValueExpr - 74, // 659: pg_query.JsonFuncExpr.pathspec:type_name -> pg_query.Node - 74, // 660: pg_query.JsonFuncExpr.passing:type_name -> pg_query.Node - 198, // 661: pg_query.JsonFuncExpr.output:type_name -> pg_query.JsonOutput - 128, // 662: pg_query.JsonFuncExpr.on_empty:type_name -> pg_query.JsonBehavior - 128, // 663: pg_query.JsonFuncExpr.on_error:type_name -> pg_query.JsonBehavior - 52, // 664: pg_query.JsonFuncExpr.wrapper:type_name -> pg_query.JsonWrapper - 14, // 665: pg_query.JsonFuncExpr.quotes:type_name -> pg_query.JsonQuotes - 74, // 666: pg_query.JsonTablePathSpec.string:type_name -> pg_query.Node - 125, // 667: pg_query.JsonTable.context_item:type_name -> pg_query.JsonValueExpr - 201, // 668: pg_query.JsonTable.pathspec:type_name -> pg_query.JsonTablePathSpec - 74, // 669: pg_query.JsonTable.passing:type_name -> pg_query.Node - 74, // 670: pg_query.JsonTable.columns:type_name -> pg_query.Node - 128, // 671: pg_query.JsonTable.on_error:type_name -> pg_query.JsonBehavior - 84, // 672: pg_query.JsonTable.alias:type_name -> pg_query.Alias - 15, // 673: pg_query.JsonTableColumn.coltype:type_name -> pg_query.JsonTableColumnType - 148, // 674: pg_query.JsonTableColumn.type_name:type_name -> pg_query.TypeName - 201, // 675: pg_query.JsonTableColumn.pathspec:type_name -> pg_query.JsonTablePathSpec - 123, // 676: pg_query.JsonTableColumn.format:type_name -> pg_query.JsonFormat - 52, // 677: pg_query.JsonTableColumn.wrapper:type_name -> pg_query.JsonWrapper - 14, // 678: pg_query.JsonTableColumn.quotes:type_name -> pg_query.JsonQuotes - 74, // 679: pg_query.JsonTableColumn.columns:type_name -> pg_query.Node - 128, // 680: pg_query.JsonTableColumn.on_empty:type_name -> pg_query.JsonBehavior - 128, // 681: pg_query.JsonTableColumn.on_error:type_name -> pg_query.JsonBehavior - 74, // 682: pg_query.JsonKeyValue.key:type_name -> pg_query.Node - 125, // 683: pg_query.JsonKeyValue.value:type_name -> pg_query.JsonValueExpr - 125, // 684: pg_query.JsonParseExpr.expr:type_name -> pg_query.JsonValueExpr - 198, // 685: pg_query.JsonParseExpr.output:type_name -> pg_query.JsonOutput - 74, // 686: pg_query.JsonScalarExpr.expr:type_name -> pg_query.Node - 198, // 687: pg_query.JsonScalarExpr.output:type_name -> pg_query.JsonOutput - 125, // 688: pg_query.JsonSerializeExpr.expr:type_name -> pg_query.JsonValueExpr - 198, // 689: pg_query.JsonSerializeExpr.output:type_name -> pg_query.JsonOutput - 74, // 690: pg_query.JsonObjectConstructor.exprs:type_name -> pg_query.Node - 198, // 691: pg_query.JsonObjectConstructor.output:type_name -> pg_query.JsonOutput - 74, // 692: pg_query.JsonArrayConstructor.exprs:type_name -> pg_query.Node - 198, // 693: pg_query.JsonArrayConstructor.output:type_name -> pg_query.JsonOutput - 74, // 694: pg_query.JsonArrayQueryConstructor.query:type_name -> pg_query.Node - 198, // 695: pg_query.JsonArrayQueryConstructor.output:type_name -> pg_query.JsonOutput - 123, // 696: pg_query.JsonArrayQueryConstructor.format:type_name -> pg_query.JsonFormat - 198, // 697: pg_query.JsonAggConstructor.output:type_name -> pg_query.JsonOutput - 74, // 698: pg_query.JsonAggConstructor.agg_filter:type_name -> pg_query.Node - 74, // 699: pg_query.JsonAggConstructor.agg_order:type_name -> pg_query.Node - 163, // 700: pg_query.JsonAggConstructor.over:type_name -> pg_query.WindowDef - 211, // 701: pg_query.JsonObjectAgg.constructor:type_name -> pg_query.JsonAggConstructor - 204, // 702: pg_query.JsonObjectAgg.arg:type_name -> pg_query.JsonKeyValue - 211, // 703: pg_query.JsonArrayAgg.constructor:type_name -> pg_query.JsonAggConstructor - 125, // 704: pg_query.JsonArrayAgg.arg:type_name -> pg_query.JsonValueExpr - 74, // 705: pg_query.RawStmt.stmt:type_name -> pg_query.Node - 85, // 706: pg_query.InsertStmt.relation:type_name -> pg_query.RangeVar - 74, // 707: pg_query.InsertStmt.cols:type_name -> pg_query.Node - 74, // 708: pg_query.InsertStmt.select_stmt:type_name -> pg_query.Node - 192, // 709: pg_query.InsertStmt.on_conflict_clause:type_name -> pg_query.OnConflictClause - 74, // 710: pg_query.InsertStmt.returning_list:type_name -> pg_query.Node - 190, // 711: pg_query.InsertStmt.with_clause:type_name -> pg_query.WithClause - 35, // 712: pg_query.InsertStmt.override:type_name -> pg_query.OverridingKind - 85, // 713: pg_query.DeleteStmt.relation:type_name -> pg_query.RangeVar - 74, // 714: pg_query.DeleteStmt.using_clause:type_name -> pg_query.Node - 74, // 715: pg_query.DeleteStmt.where_clause:type_name -> pg_query.Node - 74, // 716: pg_query.DeleteStmt.returning_list:type_name -> pg_query.Node - 190, // 717: pg_query.DeleteStmt.with_clause:type_name -> pg_query.WithClause - 85, // 718: pg_query.UpdateStmt.relation:type_name -> pg_query.RangeVar - 74, // 719: pg_query.UpdateStmt.target_list:type_name -> pg_query.Node - 74, // 720: pg_query.UpdateStmt.where_clause:type_name -> pg_query.Node - 74, // 721: pg_query.UpdateStmt.from_clause:type_name -> pg_query.Node - 74, // 722: pg_query.UpdateStmt.returning_list:type_name -> pg_query.Node - 190, // 723: pg_query.UpdateStmt.with_clause:type_name -> pg_query.WithClause - 85, // 724: pg_query.MergeStmt.relation:type_name -> pg_query.RangeVar - 74, // 725: pg_query.MergeStmt.source_relation:type_name -> pg_query.Node - 74, // 726: pg_query.MergeStmt.join_condition:type_name -> pg_query.Node - 74, // 727: pg_query.MergeStmt.merge_when_clauses:type_name -> pg_query.Node - 74, // 728: pg_query.MergeStmt.returning_list:type_name -> pg_query.Node - 190, // 729: pg_query.MergeStmt.with_clause:type_name -> pg_query.WithClause - 74, // 730: pg_query.SelectStmt.distinct_clause:type_name -> pg_query.Node - 87, // 731: pg_query.SelectStmt.into_clause:type_name -> pg_query.IntoClause - 74, // 732: pg_query.SelectStmt.target_list:type_name -> pg_query.Node - 74, // 733: pg_query.SelectStmt.from_clause:type_name -> pg_query.Node - 74, // 734: pg_query.SelectStmt.where_clause:type_name -> pg_query.Node - 74, // 735: pg_query.SelectStmt.group_clause:type_name -> pg_query.Node - 74, // 736: pg_query.SelectStmt.having_clause:type_name -> pg_query.Node - 74, // 737: pg_query.SelectStmt.window_clause:type_name -> pg_query.Node - 74, // 738: pg_query.SelectStmt.values_lists:type_name -> pg_query.Node - 74, // 739: pg_query.SelectStmt.sort_clause:type_name -> pg_query.Node - 74, // 740: pg_query.SelectStmt.limit_offset:type_name -> pg_query.Node - 74, // 741: pg_query.SelectStmt.limit_count:type_name -> pg_query.Node - 65, // 742: pg_query.SelectStmt.limit_option:type_name -> pg_query.LimitOption - 74, // 743: pg_query.SelectStmt.locking_clause:type_name -> pg_query.Node - 190, // 744: pg_query.SelectStmt.with_clause:type_name -> pg_query.WithClause - 16, // 745: pg_query.SelectStmt.op:type_name -> pg_query.SetOperation - 219, // 746: pg_query.SelectStmt.larg:type_name -> pg_query.SelectStmt - 219, // 747: pg_query.SelectStmt.rarg:type_name -> pg_query.SelectStmt - 16, // 748: pg_query.SetOperationStmt.op:type_name -> pg_query.SetOperation - 74, // 749: pg_query.SetOperationStmt.larg:type_name -> pg_query.Node - 74, // 750: pg_query.SetOperationStmt.rarg:type_name -> pg_query.Node - 74, // 751: pg_query.SetOperationStmt.col_types:type_name -> pg_query.Node - 74, // 752: pg_query.SetOperationStmt.col_typmods:type_name -> pg_query.Node - 74, // 753: pg_query.SetOperationStmt.col_collations:type_name -> pg_query.Node - 74, // 754: pg_query.SetOperationStmt.group_clauses:type_name -> pg_query.Node - 74, // 755: pg_query.ReturnStmt.returnval:type_name -> pg_query.Node - 74, // 756: pg_query.PLAssignStmt.indirection:type_name -> pg_query.Node - 219, // 757: pg_query.PLAssignStmt.val:type_name -> pg_query.SelectStmt - 154, // 758: pg_query.CreateSchemaStmt.authrole:type_name -> pg_query.RoleSpec - 74, // 759: pg_query.CreateSchemaStmt.schema_elts:type_name -> pg_query.Node - 85, // 760: pg_query.AlterTableStmt.relation:type_name -> pg_query.RangeVar - 74, // 761: pg_query.AlterTableStmt.cmds:type_name -> pg_query.Node - 17, // 762: pg_query.AlterTableStmt.objtype:type_name -> pg_query.ObjectType - 19, // 763: pg_query.AlterTableCmd.subtype:type_name -> pg_query.AlterTableType - 154, // 764: pg_query.AlterTableCmd.newowner:type_name -> pg_query.RoleSpec - 74, // 765: pg_query.AlterTableCmd.def:type_name -> pg_query.Node - 18, // 766: pg_query.AlterTableCmd.behavior:type_name -> pg_query.DropBehavior - 74, // 767: pg_query.AlterCollationStmt.collname:type_name -> pg_query.Node - 74, // 768: pg_query.AlterDomainStmt.type_name:type_name -> pg_query.Node - 74, // 769: pg_query.AlterDomainStmt.def:type_name -> pg_query.Node - 18, // 770: pg_query.AlterDomainStmt.behavior:type_name -> pg_query.DropBehavior - 20, // 771: pg_query.GrantStmt.targtype:type_name -> pg_query.GrantTargetType - 17, // 772: pg_query.GrantStmt.objtype:type_name -> pg_query.ObjectType - 74, // 773: pg_query.GrantStmt.objects:type_name -> pg_query.Node - 74, // 774: pg_query.GrantStmt.privileges:type_name -> pg_query.Node - 74, // 775: pg_query.GrantStmt.grantees:type_name -> pg_query.Node - 154, // 776: pg_query.GrantStmt.grantor:type_name -> pg_query.RoleSpec - 18, // 777: pg_query.GrantStmt.behavior:type_name -> pg_query.DropBehavior - 74, // 778: pg_query.ObjectWithArgs.objname:type_name -> pg_query.Node - 74, // 779: pg_query.ObjectWithArgs.objargs:type_name -> pg_query.Node - 74, // 780: pg_query.ObjectWithArgs.objfuncargs:type_name -> pg_query.Node - 74, // 781: pg_query.AccessPriv.cols:type_name -> pg_query.Node - 74, // 782: pg_query.GrantRoleStmt.granted_roles:type_name -> pg_query.Node - 74, // 783: pg_query.GrantRoleStmt.grantee_roles:type_name -> pg_query.Node - 74, // 784: pg_query.GrantRoleStmt.opt:type_name -> pg_query.Node - 154, // 785: pg_query.GrantRoleStmt.grantor:type_name -> pg_query.RoleSpec - 18, // 786: pg_query.GrantRoleStmt.behavior:type_name -> pg_query.DropBehavior - 74, // 787: pg_query.AlterDefaultPrivilegesStmt.options:type_name -> pg_query.Node - 229, // 788: pg_query.AlterDefaultPrivilegesStmt.action:type_name -> pg_query.GrantStmt - 85, // 789: pg_query.CopyStmt.relation:type_name -> pg_query.RangeVar - 74, // 790: pg_query.CopyStmt.query:type_name -> pg_query.Node - 74, // 791: pg_query.CopyStmt.attlist:type_name -> pg_query.Node - 74, // 792: pg_query.CopyStmt.options:type_name -> pg_query.Node - 74, // 793: pg_query.CopyStmt.where_clause:type_name -> pg_query.Node - 21, // 794: pg_query.VariableSetStmt.kind:type_name -> pg_query.VariableSetKind - 74, // 795: pg_query.VariableSetStmt.args:type_name -> pg_query.Node - 85, // 796: pg_query.CreateStmt.relation:type_name -> pg_query.RangeVar - 74, // 797: pg_query.CreateStmt.table_elts:type_name -> pg_query.Node - 74, // 798: pg_query.CreateStmt.inh_relations:type_name -> pg_query.Node - 177, // 799: pg_query.CreateStmt.partbound:type_name -> pg_query.PartitionBoundSpec - 176, // 800: pg_query.CreateStmt.partspec:type_name -> pg_query.PartitionSpec - 148, // 801: pg_query.CreateStmt.of_typename:type_name -> pg_query.TypeName - 74, // 802: pg_query.CreateStmt.constraints:type_name -> pg_query.Node - 74, // 803: pg_query.CreateStmt.options:type_name -> pg_query.Node - 36, // 804: pg_query.CreateStmt.oncommit:type_name -> pg_query.OnCommitAction - 22, // 805: pg_query.Constraint.contype:type_name -> pg_query.ConstrType - 74, // 806: pg_query.Constraint.raw_expr:type_name -> pg_query.Node - 74, // 807: pg_query.Constraint.keys:type_name -> pg_query.Node - 74, // 808: pg_query.Constraint.including:type_name -> pg_query.Node - 74, // 809: pg_query.Constraint.exclusions:type_name -> pg_query.Node - 74, // 810: pg_query.Constraint.options:type_name -> pg_query.Node - 74, // 811: pg_query.Constraint.where_clause:type_name -> pg_query.Node - 85, // 812: pg_query.Constraint.pktable:type_name -> pg_query.RangeVar - 74, // 813: pg_query.Constraint.fk_attrs:type_name -> pg_query.Node - 74, // 814: pg_query.Constraint.pk_attrs:type_name -> pg_query.Node - 74, // 815: pg_query.Constraint.fk_del_set_cols:type_name -> pg_query.Node - 74, // 816: pg_query.Constraint.old_conpfeqop:type_name -> pg_query.Node - 154, // 817: pg_query.CreateTableSpaceStmt.owner:type_name -> pg_query.RoleSpec - 74, // 818: pg_query.CreateTableSpaceStmt.options:type_name -> pg_query.Node - 74, // 819: pg_query.AlterTableSpaceOptionsStmt.options:type_name -> pg_query.Node - 17, // 820: pg_query.AlterTableMoveAllStmt.objtype:type_name -> pg_query.ObjectType - 74, // 821: pg_query.AlterTableMoveAllStmt.roles:type_name -> pg_query.Node - 74, // 822: pg_query.CreateExtensionStmt.options:type_name -> pg_query.Node - 74, // 823: pg_query.AlterExtensionStmt.options:type_name -> pg_query.Node - 17, // 824: pg_query.AlterExtensionContentsStmt.objtype:type_name -> pg_query.ObjectType - 74, // 825: pg_query.AlterExtensionContentsStmt.object:type_name -> pg_query.Node - 74, // 826: pg_query.CreateFdwStmt.func_options:type_name -> pg_query.Node - 74, // 827: pg_query.CreateFdwStmt.options:type_name -> pg_query.Node - 74, // 828: pg_query.AlterFdwStmt.func_options:type_name -> pg_query.Node - 74, // 829: pg_query.AlterFdwStmt.options:type_name -> pg_query.Node - 74, // 830: pg_query.CreateForeignServerStmt.options:type_name -> pg_query.Node - 74, // 831: pg_query.AlterForeignServerStmt.options:type_name -> pg_query.Node - 237, // 832: pg_query.CreateForeignTableStmt.base_stmt:type_name -> pg_query.CreateStmt - 74, // 833: pg_query.CreateForeignTableStmt.options:type_name -> pg_query.Node - 154, // 834: pg_query.CreateUserMappingStmt.user:type_name -> pg_query.RoleSpec - 74, // 835: pg_query.CreateUserMappingStmt.options:type_name -> pg_query.Node - 154, // 836: pg_query.AlterUserMappingStmt.user:type_name -> pg_query.RoleSpec - 74, // 837: pg_query.AlterUserMappingStmt.options:type_name -> pg_query.Node - 154, // 838: pg_query.DropUserMappingStmt.user:type_name -> pg_query.RoleSpec - 23, // 839: pg_query.ImportForeignSchemaStmt.list_type:type_name -> pg_query.ImportForeignSchemaType - 74, // 840: pg_query.ImportForeignSchemaStmt.table_list:type_name -> pg_query.Node - 74, // 841: pg_query.ImportForeignSchemaStmt.options:type_name -> pg_query.Node - 85, // 842: pg_query.CreatePolicyStmt.table:type_name -> pg_query.RangeVar - 74, // 843: pg_query.CreatePolicyStmt.roles:type_name -> pg_query.Node - 74, // 844: pg_query.CreatePolicyStmt.qual:type_name -> pg_query.Node - 74, // 845: pg_query.CreatePolicyStmt.with_check:type_name -> pg_query.Node - 85, // 846: pg_query.AlterPolicyStmt.table:type_name -> pg_query.RangeVar - 74, // 847: pg_query.AlterPolicyStmt.roles:type_name -> pg_query.Node - 74, // 848: pg_query.AlterPolicyStmt.qual:type_name -> pg_query.Node - 74, // 849: pg_query.AlterPolicyStmt.with_check:type_name -> pg_query.Node - 74, // 850: pg_query.CreateAmStmt.handler_name:type_name -> pg_query.Node - 85, // 851: pg_query.CreateTrigStmt.relation:type_name -> pg_query.RangeVar - 74, // 852: pg_query.CreateTrigStmt.funcname:type_name -> pg_query.Node - 74, // 853: pg_query.CreateTrigStmt.args:type_name -> pg_query.Node - 74, // 854: pg_query.CreateTrigStmt.columns:type_name -> pg_query.Node - 74, // 855: pg_query.CreateTrigStmt.when_clause:type_name -> pg_query.Node - 74, // 856: pg_query.CreateTrigStmt.transition_rels:type_name -> pg_query.Node - 85, // 857: pg_query.CreateTrigStmt.constrrel:type_name -> pg_query.RangeVar - 74, // 858: pg_query.CreateEventTrigStmt.whenclause:type_name -> pg_query.Node - 74, // 859: pg_query.CreateEventTrigStmt.funcname:type_name -> pg_query.Node - 74, // 860: pg_query.CreatePLangStmt.plhandler:type_name -> pg_query.Node - 74, // 861: pg_query.CreatePLangStmt.plinline:type_name -> pg_query.Node - 74, // 862: pg_query.CreatePLangStmt.plvalidator:type_name -> pg_query.Node - 24, // 863: pg_query.CreateRoleStmt.stmt_type:type_name -> pg_query.RoleStmtType - 74, // 864: pg_query.CreateRoleStmt.options:type_name -> pg_query.Node - 154, // 865: pg_query.AlterRoleStmt.role:type_name -> pg_query.RoleSpec - 74, // 866: pg_query.AlterRoleStmt.options:type_name -> pg_query.Node - 154, // 867: pg_query.AlterRoleSetStmt.role:type_name -> pg_query.RoleSpec - 235, // 868: pg_query.AlterRoleSetStmt.setstmt:type_name -> pg_query.VariableSetStmt - 74, // 869: pg_query.DropRoleStmt.roles:type_name -> pg_query.Node - 85, // 870: pg_query.CreateSeqStmt.sequence:type_name -> pg_query.RangeVar - 74, // 871: pg_query.CreateSeqStmt.options:type_name -> pg_query.Node - 85, // 872: pg_query.AlterSeqStmt.sequence:type_name -> pg_query.RangeVar - 74, // 873: pg_query.AlterSeqStmt.options:type_name -> pg_query.Node - 17, // 874: pg_query.DefineStmt.kind:type_name -> pg_query.ObjectType - 74, // 875: pg_query.DefineStmt.defnames:type_name -> pg_query.Node - 74, // 876: pg_query.DefineStmt.args:type_name -> pg_query.Node - 74, // 877: pg_query.DefineStmt.definition:type_name -> pg_query.Node - 74, // 878: pg_query.CreateDomainStmt.domainname:type_name -> pg_query.Node - 148, // 879: pg_query.CreateDomainStmt.type_name:type_name -> pg_query.TypeName - 153, // 880: pg_query.CreateDomainStmt.coll_clause:type_name -> pg_query.CollateClause - 74, // 881: pg_query.CreateDomainStmt.constraints:type_name -> pg_query.Node - 74, // 882: pg_query.CreateOpClassStmt.opclassname:type_name -> pg_query.Node - 74, // 883: pg_query.CreateOpClassStmt.opfamilyname:type_name -> pg_query.Node - 148, // 884: pg_query.CreateOpClassStmt.datatype:type_name -> pg_query.TypeName - 74, // 885: pg_query.CreateOpClassStmt.items:type_name -> pg_query.Node - 230, // 886: pg_query.CreateOpClassItem.name:type_name -> pg_query.ObjectWithArgs - 74, // 887: pg_query.CreateOpClassItem.order_family:type_name -> pg_query.Node - 74, // 888: pg_query.CreateOpClassItem.class_args:type_name -> pg_query.Node - 148, // 889: pg_query.CreateOpClassItem.storedtype:type_name -> pg_query.TypeName - 74, // 890: pg_query.CreateOpFamilyStmt.opfamilyname:type_name -> pg_query.Node - 74, // 891: pg_query.AlterOpFamilyStmt.opfamilyname:type_name -> pg_query.Node - 74, // 892: pg_query.AlterOpFamilyStmt.items:type_name -> pg_query.Node - 74, // 893: pg_query.DropStmt.objects:type_name -> pg_query.Node - 17, // 894: pg_query.DropStmt.remove_type:type_name -> pg_query.ObjectType - 18, // 895: pg_query.DropStmt.behavior:type_name -> pg_query.DropBehavior - 74, // 896: pg_query.TruncateStmt.relations:type_name -> pg_query.Node - 18, // 897: pg_query.TruncateStmt.behavior:type_name -> pg_query.DropBehavior - 17, // 898: pg_query.CommentStmt.objtype:type_name -> pg_query.ObjectType - 74, // 899: pg_query.CommentStmt.object:type_name -> pg_query.Node - 17, // 900: pg_query.SecLabelStmt.objtype:type_name -> pg_query.ObjectType - 74, // 901: pg_query.SecLabelStmt.object:type_name -> pg_query.Node - 74, // 902: pg_query.DeclareCursorStmt.query:type_name -> pg_query.Node - 25, // 903: pg_query.FetchStmt.direction:type_name -> pg_query.FetchDirection - 85, // 904: pg_query.IndexStmt.relation:type_name -> pg_query.RangeVar - 74, // 905: pg_query.IndexStmt.index_params:type_name -> pg_query.Node - 74, // 906: pg_query.IndexStmt.index_including_params:type_name -> pg_query.Node - 74, // 907: pg_query.IndexStmt.options:type_name -> pg_query.Node - 74, // 908: pg_query.IndexStmt.where_clause:type_name -> pg_query.Node - 74, // 909: pg_query.IndexStmt.exclude_op_names:type_name -> pg_query.Node - 74, // 910: pg_query.CreateStatsStmt.defnames:type_name -> pg_query.Node - 74, // 911: pg_query.CreateStatsStmt.stat_types:type_name -> pg_query.Node - 74, // 912: pg_query.CreateStatsStmt.exprs:type_name -> pg_query.Node - 74, // 913: pg_query.CreateStatsStmt.relations:type_name -> pg_query.Node - 74, // 914: pg_query.StatsElem.expr:type_name -> pg_query.Node - 74, // 915: pg_query.AlterStatsStmt.defnames:type_name -> pg_query.Node - 74, // 916: pg_query.AlterStatsStmt.stxstattarget:type_name -> pg_query.Node - 74, // 917: pg_query.CreateFunctionStmt.funcname:type_name -> pg_query.Node - 74, // 918: pg_query.CreateFunctionStmt.parameters:type_name -> pg_query.Node - 148, // 919: pg_query.CreateFunctionStmt.return_type:type_name -> pg_query.TypeName - 74, // 920: pg_query.CreateFunctionStmt.options:type_name -> pg_query.Node - 74, // 921: pg_query.CreateFunctionStmt.sql_body:type_name -> pg_query.Node - 148, // 922: pg_query.FunctionParameter.arg_type:type_name -> pg_query.TypeName - 26, // 923: pg_query.FunctionParameter.mode:type_name -> pg_query.FunctionParameterMode - 74, // 924: pg_query.FunctionParameter.defexpr:type_name -> pg_query.Node - 17, // 925: pg_query.AlterFunctionStmt.objtype:type_name -> pg_query.ObjectType - 230, // 926: pg_query.AlterFunctionStmt.func:type_name -> pg_query.ObjectWithArgs - 74, // 927: pg_query.AlterFunctionStmt.actions:type_name -> pg_query.Node - 74, // 928: pg_query.DoStmt.args:type_name -> pg_query.Node - 155, // 929: pg_query.CallStmt.funccall:type_name -> pg_query.FuncCall - 96, // 930: pg_query.CallStmt.funcexpr:type_name -> pg_query.FuncExpr - 74, // 931: pg_query.CallStmt.outargs:type_name -> pg_query.Node - 17, // 932: pg_query.RenameStmt.rename_type:type_name -> pg_query.ObjectType - 17, // 933: pg_query.RenameStmt.relation_type:type_name -> pg_query.ObjectType - 85, // 934: pg_query.RenameStmt.relation:type_name -> pg_query.RangeVar - 74, // 935: pg_query.RenameStmt.object:type_name -> pg_query.Node - 18, // 936: pg_query.RenameStmt.behavior:type_name -> pg_query.DropBehavior - 17, // 937: pg_query.AlterObjectDependsStmt.object_type:type_name -> pg_query.ObjectType - 85, // 938: pg_query.AlterObjectDependsStmt.relation:type_name -> pg_query.RangeVar - 74, // 939: pg_query.AlterObjectDependsStmt.object:type_name -> pg_query.Node - 78, // 940: pg_query.AlterObjectDependsStmt.extname:type_name -> pg_query.String - 17, // 941: pg_query.AlterObjectSchemaStmt.object_type:type_name -> pg_query.ObjectType - 85, // 942: pg_query.AlterObjectSchemaStmt.relation:type_name -> pg_query.RangeVar - 74, // 943: pg_query.AlterObjectSchemaStmt.object:type_name -> pg_query.Node - 17, // 944: pg_query.AlterOwnerStmt.object_type:type_name -> pg_query.ObjectType - 85, // 945: pg_query.AlterOwnerStmt.relation:type_name -> pg_query.RangeVar - 74, // 946: pg_query.AlterOwnerStmt.object:type_name -> pg_query.Node - 154, // 947: pg_query.AlterOwnerStmt.newowner:type_name -> pg_query.RoleSpec - 230, // 948: pg_query.AlterOperatorStmt.opername:type_name -> pg_query.ObjectWithArgs - 74, // 949: pg_query.AlterOperatorStmt.options:type_name -> pg_query.Node - 74, // 950: pg_query.AlterTypeStmt.type_name:type_name -> pg_query.Node - 74, // 951: pg_query.AlterTypeStmt.options:type_name -> pg_query.Node - 85, // 952: pg_query.RuleStmt.relation:type_name -> pg_query.RangeVar - 74, // 953: pg_query.RuleStmt.where_clause:type_name -> pg_query.Node - 58, // 954: pg_query.RuleStmt.event:type_name -> pg_query.CmdType - 74, // 955: pg_query.RuleStmt.actions:type_name -> pg_query.Node - 27, // 956: pg_query.TransactionStmt.kind:type_name -> pg_query.TransactionStmtKind - 74, // 957: pg_query.TransactionStmt.options:type_name -> pg_query.Node - 85, // 958: pg_query.CompositeTypeStmt.typevar:type_name -> pg_query.RangeVar - 74, // 959: pg_query.CompositeTypeStmt.coldeflist:type_name -> pg_query.Node - 74, // 960: pg_query.CreateEnumStmt.type_name:type_name -> pg_query.Node - 74, // 961: pg_query.CreateEnumStmt.vals:type_name -> pg_query.Node - 74, // 962: pg_query.CreateRangeStmt.type_name:type_name -> pg_query.Node - 74, // 963: pg_query.CreateRangeStmt.params:type_name -> pg_query.Node - 74, // 964: pg_query.AlterEnumStmt.type_name:type_name -> pg_query.Node - 85, // 965: pg_query.ViewStmt.view:type_name -> pg_query.RangeVar - 74, // 966: pg_query.ViewStmt.aliases:type_name -> pg_query.Node - 74, // 967: pg_query.ViewStmt.query:type_name -> pg_query.Node - 74, // 968: pg_query.ViewStmt.options:type_name -> pg_query.Node - 28, // 969: pg_query.ViewStmt.with_check_option:type_name -> pg_query.ViewCheckOption - 74, // 970: pg_query.CreatedbStmt.options:type_name -> pg_query.Node - 74, // 971: pg_query.AlterDatabaseStmt.options:type_name -> pg_query.Node - 235, // 972: pg_query.AlterDatabaseSetStmt.setstmt:type_name -> pg_query.VariableSetStmt - 74, // 973: pg_query.DropdbStmt.options:type_name -> pg_query.Node - 235, // 974: pg_query.AlterSystemStmt.setstmt:type_name -> pg_query.VariableSetStmt - 85, // 975: pg_query.ClusterStmt.relation:type_name -> pg_query.RangeVar - 74, // 976: pg_query.ClusterStmt.params:type_name -> pg_query.Node - 74, // 977: pg_query.VacuumStmt.options:type_name -> pg_query.Node - 74, // 978: pg_query.VacuumStmt.rels:type_name -> pg_query.Node - 85, // 979: pg_query.VacuumRelation.relation:type_name -> pg_query.RangeVar - 74, // 980: pg_query.VacuumRelation.va_cols:type_name -> pg_query.Node - 74, // 981: pg_query.ExplainStmt.query:type_name -> pg_query.Node - 74, // 982: pg_query.ExplainStmt.options:type_name -> pg_query.Node - 74, // 983: pg_query.CreateTableAsStmt.query:type_name -> pg_query.Node - 87, // 984: pg_query.CreateTableAsStmt.into:type_name -> pg_query.IntoClause - 17, // 985: pg_query.CreateTableAsStmt.objtype:type_name -> pg_query.ObjectType - 85, // 986: pg_query.RefreshMatViewStmt.relation:type_name -> pg_query.RangeVar - 29, // 987: pg_query.DiscardStmt.target:type_name -> pg_query.DiscardMode - 74, // 988: pg_query.LockStmt.relations:type_name -> pg_query.Node - 74, // 989: pg_query.ConstraintsSetStmt.constraints:type_name -> pg_query.Node - 30, // 990: pg_query.ReindexStmt.kind:type_name -> pg_query.ReindexObjectType - 85, // 991: pg_query.ReindexStmt.relation:type_name -> pg_query.RangeVar - 74, // 992: pg_query.ReindexStmt.params:type_name -> pg_query.Node - 74, // 993: pg_query.CreateConversionStmt.conversion_name:type_name -> pg_query.Node - 74, // 994: pg_query.CreateConversionStmt.func_name:type_name -> pg_query.Node - 148, // 995: pg_query.CreateCastStmt.sourcetype:type_name -> pg_query.TypeName - 148, // 996: pg_query.CreateCastStmt.targettype:type_name -> pg_query.TypeName - 230, // 997: pg_query.CreateCastStmt.func:type_name -> pg_query.ObjectWithArgs - 39, // 998: pg_query.CreateCastStmt.context:type_name -> pg_query.CoercionContext - 148, // 999: pg_query.CreateTransformStmt.type_name:type_name -> pg_query.TypeName - 230, // 1000: pg_query.CreateTransformStmt.fromsql:type_name -> pg_query.ObjectWithArgs - 230, // 1001: pg_query.CreateTransformStmt.tosql:type_name -> pg_query.ObjectWithArgs - 74, // 1002: pg_query.PrepareStmt.argtypes:type_name -> pg_query.Node - 74, // 1003: pg_query.PrepareStmt.query:type_name -> pg_query.Node - 74, // 1004: pg_query.ExecuteStmt.params:type_name -> pg_query.Node - 74, // 1005: pg_query.DropOwnedStmt.roles:type_name -> pg_query.Node - 18, // 1006: pg_query.DropOwnedStmt.behavior:type_name -> pg_query.DropBehavior - 74, // 1007: pg_query.ReassignOwnedStmt.roles:type_name -> pg_query.Node - 154, // 1008: pg_query.ReassignOwnedStmt.newrole:type_name -> pg_query.RoleSpec - 74, // 1009: pg_query.AlterTSDictionaryStmt.dictname:type_name -> pg_query.Node - 74, // 1010: pg_query.AlterTSDictionaryStmt.options:type_name -> pg_query.Node - 31, // 1011: pg_query.AlterTSConfigurationStmt.kind:type_name -> pg_query.AlterTSConfigType - 74, // 1012: pg_query.AlterTSConfigurationStmt.cfgname:type_name -> pg_query.Node - 74, // 1013: pg_query.AlterTSConfigurationStmt.tokentype:type_name -> pg_query.Node - 74, // 1014: pg_query.AlterTSConfigurationStmt.dicts:type_name -> pg_query.Node - 85, // 1015: pg_query.PublicationTable.relation:type_name -> pg_query.RangeVar - 74, // 1016: pg_query.PublicationTable.where_clause:type_name -> pg_query.Node - 74, // 1017: pg_query.PublicationTable.columns:type_name -> pg_query.Node - 32, // 1018: pg_query.PublicationObjSpec.pubobjtype:type_name -> pg_query.PublicationObjSpecType - 336, // 1019: pg_query.PublicationObjSpec.pubtable:type_name -> pg_query.PublicationTable - 74, // 1020: pg_query.CreatePublicationStmt.options:type_name -> pg_query.Node - 74, // 1021: pg_query.CreatePublicationStmt.pubobjects:type_name -> pg_query.Node - 74, // 1022: pg_query.AlterPublicationStmt.options:type_name -> pg_query.Node - 74, // 1023: pg_query.AlterPublicationStmt.pubobjects:type_name -> pg_query.Node - 33, // 1024: pg_query.AlterPublicationStmt.action:type_name -> pg_query.AlterPublicationAction - 74, // 1025: pg_query.CreateSubscriptionStmt.publication:type_name -> pg_query.Node - 74, // 1026: pg_query.CreateSubscriptionStmt.options:type_name -> pg_query.Node - 34, // 1027: pg_query.AlterSubscriptionStmt.kind:type_name -> pg_query.AlterSubscriptionType - 74, // 1028: pg_query.AlterSubscriptionStmt.publication:type_name -> pg_query.Node - 74, // 1029: pg_query.AlterSubscriptionStmt.options:type_name -> pg_query.Node - 18, // 1030: pg_query.DropSubscriptionStmt.behavior:type_name -> pg_query.DropBehavior - 70, // 1031: pg_query.ScanToken.token:type_name -> pg_query.Token - 69, // 1032: pg_query.ScanToken.keyword_kind:type_name -> pg_query.KeywordKind - 345, // 1033: pg_query.SummaryResult.tables:type_name -> pg_query.SummaryResult.Table - 346, // 1034: pg_query.SummaryResult.aliases:type_name -> pg_query.SummaryResult.AliasesEntry - 347, // 1035: pg_query.SummaryResult.functions:type_name -> pg_query.SummaryResult.Function - 348, // 1036: pg_query.SummaryResult.filter_columns:type_name -> pg_query.SummaryResult.FilterColumn - 71, // 1037: pg_query.SummaryResult.Table.context:type_name -> pg_query.SummaryResult.Context - 71, // 1038: pg_query.SummaryResult.Function.context:type_name -> pg_query.SummaryResult.Context - 1039, // [1039:1039] is the sub-list for method output_type - 1039, // [1039:1039] is the sub-list for method input_type - 1039, // [1039:1039] is the sub-list for extension type_name - 1039, // [1039:1039] is the sub-list for extension extendee - 0, // [0:1039] is the sub-list for field type_name + 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() } @@ -36790,6 +37473,7 @@ func file_pg_query_proto_init() { (*Node_CurrentOfExpr)(nil), (*Node_NextValueExpr)(nil), (*Node_InferenceElem)(nil), + (*Node_ReturningExpr)(nil), (*Node_TargetEntry)(nil), (*Node_RangeTblRef)(nil), (*Node_JoinExpr)(nil), @@ -36827,7 +37511,6 @@ func file_pg_query_proto_init() { (*Node_PartitionSpec)(nil), (*Node_PartitionBoundSpec)(nil), (*Node_PartitionRangeDatum)(nil), - (*Node_SinglePartitionSpec)(nil), (*Node_PartitionCmd)(nil), (*Node_RangeTblEntry)(nil), (*Node_RtepermissionInfo)(nil), @@ -36845,6 +37528,8 @@ func file_pg_query_proto_init() { (*Node_CtecycleClause)(nil), (*Node_CommonTableExpr)(nil), (*Node_MergeWhenClause)(nil), + (*Node_ReturningOption)(nil), + (*Node_ReturningClause)(nil), (*Node_TriggerTransition)(nil), (*Node_JsonOutput)(nil), (*Node_JsonArgument)(nil), @@ -36873,8 +37558,9 @@ func file_pg_query_proto_init() { (*Node_PlassignStmt)(nil), (*Node_CreateSchemaStmt)(nil), (*Node_AlterTableStmt)(nil), - (*Node_ReplicaIdentityStmt)(nil), (*Node_AlterTableCmd)(nil), + (*Node_AtalterConstraint)(nil), + (*Node_ReplicaIdentityStmt)(nil), (*Node_AlterCollationStmt)(nil), (*Node_AlterDomainStmt)(nil), (*Node_GrantStmt)(nil), @@ -37013,8 +37699,8 @@ func file_pg_query_proto_init() { 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: 72, - NumMessages: 277, + NumEnums: 74, + NumMessages: 280, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/pgparse/pgparse.go b/internal/pgparse/pgparse.go index e604912..56c4da1 100644 --- a/internal/pgparse/pgparse.go +++ b/internal/pgparse/pgparse.go @@ -7,8 +7,14 @@ // 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. The module is compiled once per process on first use. +// per call. A module is compiled once per process on first use. package pgparse import ( @@ -24,6 +30,7 @@ import ( "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" ) @@ -32,6 +39,11 @@ import ( //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 { @@ -51,7 +63,38 @@ type module struct { pool sync.Pool // *instance } -var pg17 = &module{wasm: wasm17} +// Version is a PostgreSQL major version with an embedded parser. +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} } + +func (v Version) module() *module { + m := modules[v] + 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() { @@ -242,14 +285,55 @@ func (m *module) parseProtobuf(sql string) (out []byte, err error) { return out, err } -// Parse parses sql into a parse tree. -func Parse(sql string) (*ParseResult, error) { - b, err := pg17.parseProtobuf(sql) +// 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 := proto.Unmarshal(b, tree); err != nil { + if err := protojson.Unmarshal([]byte(js), tree); err != nil { return nil, fmt.Errorf("pgparse: decoding parse tree: %w", err) } return tree, nil @@ -261,7 +345,7 @@ func Deparse(tree *ParseResult) (out string, err error) { if err != nil { return "", fmt.Errorf("pgparse: encoding parse tree: %w", err) } - err = pg17.with(func(in *instance) error { + err = newest.module().with(func(in *instance) error { data, err := in.putBytes(b) if err != nil { return err @@ -287,10 +371,13 @@ func Deparse(tree *ParseResult) (out string, err error) { 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 ParsePlPgSqlToJSON(input string) (out string, err error) { - err = pg17.with(func(in *instance) error { +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 @@ -316,11 +403,26 @@ func ParsePlPgSqlToJSON(input string) (out string, err error) { return out, err } -// SplitWithScanner splits input into statements by the 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) (out []string, err error) { - err = pg17.with(func(in *instance) error { +// 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 @@ -349,11 +451,7 @@ func SplitWithScanner(input string, trimSpace bool) (out []string, err error) { if err != nil { return err } - s := input[int32(loc) : int32(loc)+int32(l)] - if trimSpace { - s = strings.TrimSpace(s) - } - out = append(out, s) + out = append(out, input[int32(loc):int32(loc)+int32(l)]) } return nil }) diff --git a/internal/pgparse/pgparse_test.go b/internal/pgparse/pgparse_test.go index be317a2..f041b99 100644 --- a/internal/pgparse/pgparse_test.go +++ b/internal/pgparse/pgparse_test.go @@ -98,7 +98,7 @@ func TestSplitWithScanner(t *testing.T) { // 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.parseProtobuf(sql) + want, err := PG17.module().parseProtobuf(sql) if err != nil { t.Fatal(err) } @@ -108,7 +108,7 @@ func TestConcurrent(t *testing.T) { go func() { defer wg.Done() for range 50 { - got, err := pg17.parseProtobuf(sql) + 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 @@ -124,6 +124,6 @@ func TestConcurrent(t *testing.T) { func BenchmarkParse(b *testing.B) { for range b.N { - pg17.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") + 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..91e9b2b --- /dev/null +++ b/internal/pgparse/upgrade.go @@ -0,0 +1,80 @@ +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"`}, + apply: func(obj map[string]any) { + // 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..9573b73 --- /dev/null +++ b/internal/pgparse/version_test.go @@ -0,0 +1,126 @@ +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) + } +} + +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 index 0740508..78581eb 100755 --- a/internal/pgparse/wasm/build.sh +++ b/internal/pgparse/wasm/build.sh @@ -1,8 +1,11 @@ #!/usr/bin/env bash -# Builds pg_query_.wasm from a libpg_query checkout with emscripten, and regenerates -# the Go node types (../pg_query.pb.go) from that checkout's pg_query.proto. +# 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 e.g. build.sh 17-6.2.2 +# 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: @@ -19,7 +22,7 @@ # -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%%-*} +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 @@ -32,6 +35,7 @@ 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 @@ -44,6 +48,7 @@ emcc -O2 -std=gnu99 -fwrapv -fno-strict-aliasing \ -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" diff --git a/internal/pgparse/wasm/pg_query_17.wasm b/internal/pgparse/wasm/pg_query_17.wasm index 30b73a9527a9a509276b3e3a65e7e46dd48b9a73..1fb7838c1557ccdc6902bcf937def9d0c0a7fbb4 100755 GIT binary patch literal 1700796 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 z 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

24*D`eJgzJ`!l&l#{N>-z+ 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ᒯQldBQCvDoND+Tg43ORewEU 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

uxj5XCxRZWX*Q7!f1t&}L+etWgSANO=2i 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%0A9K1a`=&^eFOIP@ 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 aRSz2~84eY_b{v&z%pM0-Woi$e`2PVjj8C)x diff --git a/internal/pgparse/wasm/pg_query_18.wasm b/internal/pgparse/wasm/pg_query_18.wasm new file mode 100755 index 0000000000000000000000000000000000000000..b55a8c8297967dee26e599868845c6244cf22784 GIT binary patch literal 1767328 zcmeEv34m19mG*nD>b-900?UX7l_W(6V<&c-PC^JKB%u;bOvcGDGtNwACNtnf5=Em# z$uje2VzUa0&?qWy*zSs3yDy-&ii$h#xS*}5sGuSu?(l!--2K(7rK?JtnTeU9yIz;Qq5K7(1o+^n34_H4>R)>ApZUFm)Fb}sO&Fm6_9kTX z@Aw5T8Gx^d{{+x~o)G-$DF06r8jkuCKlYCb?n&*Cnt0gn8xKD0_lF-cas0tvivAp+ z{yf<8?Z1D2uouwZP4e^KAAIn^UIRTDXr6c>Jy37_z317V(-+e8AY;COM+59f7=uRx z>5-a#2yg~Hr3lo2HOaT-X5w!S zKjJ^f|N4l-|1jks&)ew_2ON3u_#+QHVDga%9X@6J@*_+K7+_>mL6RFRj^h(8>0@RW&ORAfX0MjSbD;vwGlB?cTZ@qhz8UjEMG zt@TVf2um1$=;4R`deUzudyT1O4L3G4HhN8-7xeMJRG-HCsq+7QCgp>6eEPpK|E1Dt z8sVh|4oqWsdSH~slYvnx&9nIF9nuYc5T*S=nAeZef#*f|$iuImA7H8Y8^5IRmQ*Sb zuwice8TetUAw^@n#>SM_)YO;?8vJx4C@>XyUOFAoZ>a(JHTFv*s5a#dY6vj}&y}J9 zdK|!wn!GSb2LV7zr?E)hd!z@N0L?V@NWye$nN|MH)W0j5xp3aBxKAE4sK2K>YZr$N@V!633!I+MsQ1sxqhG&nfQ&-c7~d(ecR zUQ@%uusIUaEAR$Q{`L6Z{%#@!*};cFMh)3{JbpRw;3Fpfa?1E${qC?|PC5AS!^TfJ z;6DzX=zHm39WimDx4a?x%>joVdiXEB+ZzTRdC(G10rXVVI?I#Am;rIAuJrf5gPYrg--?40tE< zy}aLaV`|5p{`hh5aq)Djth|b~2d@Wj1UCn_2Db&vf}4Wd zgXO^;!JWaw!6U(=!OGyF;IZKG;E7;W@K&%fcsqDA*brP#(29iKWOwJ>!e zo*swaPD-7Oe;1`rNu8QHEj2xLdg_eS;?$X`uGEawS*f#A=cH!o_nezLFLi$Eg4Bih z#zmz4ZI( z57Hl|KT3a`-jd#$?g*!b)57WDjBsW+D?B=!9nJ}l36BluhR22T!uermxF9?}JRw{d zo*14Ko*XU;PYF*APYX{E&j=TXXNFzjS>f5?IpMkCdExot1>uF^Md6b0;_#C2((tnI z@~}I+BD^xZD!e+pCcHMhF1$XxA-pkM8ZHZO3U3Z?346j@!`s5!!{y-};ho`K;fnC? z@SgDA@V@Z=@PY8baAo*V_;C10_-Oc8_;~n4xGH=yd@6i8d?s8SJ{vw4_J+@gFNABt z7sHprm&3K;E8(l*YvHWa>a&W_HB&W+BC&W|pLE{raUmP8jvmqeFFmqnLH-O&}%mC;qv z)zLN4wb6Ca_0bK{jnUF*S#(o$b97786Wto!7Tq2#kM4->jP8n7M0ZE`ME6GbMfXP! zL=Q$Qqlco0qer4gqsOAhqbH(O(UZ|r(bLg0(dy{g=((sjdOms~S`)n(y%fD1t&LuZ zUX5Oh)vr+-%h9BI-pDF zk1qP-nLBRxS^^J$H;wf2-FNd}`=rP6uX!KOvrh)uYlG}r4f(6Zr}-HV@TlzB4NXm( z0zWz`hgS?~PN&DF#^%z)1N<8_`}8On7wmBFc(l0H|DIVnKQY}H_sGx;@rs*GV zdyj`=#2~MUzcf5-%7y8%^!u>ksepeO+8p6YluL~YhGl$wPQMLl%Hg%S6pb7@Dj15d z|G@iJFf<1(IV#BFPx?6`=hJ`;z~Q-a=^xWf0(AV=l;3neud6vA82PVUfVrCq3;7NB zkpBU!dH)bR$_3fw4LP3{i7$WTe3|~TzWg42nf^)sa?T?#6l5M=o9_UQ32KkAEqb;UY1|B7fpkG^Z4^u z@6^-KGj|%$6s@H>$b0*NQUmO3Gv0x5lbX|Qo|kV0i2y)=kj|y^-nTs>nEaDZiFX2w zHZPm^e?)NR&t8pTqK_=14~gi(kAmod zGGeQ|KM5Ryd4}yvQcn>V1T4MFr+4}CU4iv3pdQ#!@5(rHURH=W?29@ zum@t1jRI?gf&KXNW^5+!5Vj!~Ov*O{Q91k%OvqTGC6g$j&lric*M^w=vy!U{`tH&@?GgB;PM&oM}q>O0f+$3e!`M+%pr(W_#P;fB{bHZzvn)W8B4*D z!s{T}1>OiJjJI6S!(1R>6=S?ydQvVZgFp3JNPqKM0@K$ z-~6_XOvK8t9?%Y`@}>qDHi9gKP`IUCk|p#7GZ(m>md)JG1VzNgq_O-~n^iLold|s0 z3hu|ZPv4YcsS4cU>)GbiK0q%SMa)sKr1-B45FboohW|W%WhSIS4ig3mS}bKTA!{+r zCKy^WA%i32`zg7Ye1Du*46PzG_FV>4de$5gsG$Wae$TLCxb6FdssPeM06iQwL;kWa z(?bxLd`+$aUnNx1BJ<)aUVhqF_^bGcF?r?P8k3~mTucII*io>*Sa^!04+}S_Z{jMY zz9AUWpdPhwsBbw(qp;o7d#XYpEkodE`epzELcr_j8E+-Y_)m2^t6Yo3NkpU-@ut>+ zw5o@N@u;;+pZ0|mFWC3A@q&H3nw0&?dbCjfR{Dh4(;K|&t{htqqlU%-1Di5~25*<$ z{xdra*>R`O4&8Yd5-1B=iMB9SNC_5>WRVH;l`S%6Im^1u;bYR!Dd;05N3#12+7*wl z9>;KL;R#&tfHI^xB2Xd=6#VXr+E9sF@`2v{x)g98Ipv@O5WzUTIm$C3 zfyz{*HisSzhtVRb467=jGI~}(WwiWJv=@@f*soE0Bd`Zs55id(M3b5uEa8lArgIIp za2Cu@-i(l|YYZ~z8Se|rRhswH+8ec;zLOel1&r)TFtTX}>qI9*_ZhScBf-nhGx!1B z4sG^{Sn!*L8~l|-w=~Fsr;j2*&~1hV-=m`o1;R=aSwbSL^kWiXkr8b*NQ54mLCCfq zo}v1El4J**AY28$VA0)8?>~lxbGKQ6VAAs(y!V+&Z(&UVinf@vi>4C@>ypzEQvw>J z3+O@hT-s?6*6AQjP|IKVw61*G<_&dXKOKbqQ{N_C-(kpU*gk`Hmc0C^LsJMne%ide zGb#65RH)7}VtNU5L7Ke=^h*7meFhDcD~vllpZW?B9!7lpJB8A!gH)$jVMh>?R+V^k z__ordBt)tYk!>JU3!%2b;nBV;A0yO;>@(=IiCcis?Wav-pQSD6`dZ-@tTbD&vdS$u zxkXr-tOB#yo$H|xguFj~ckyOyZVlnt9$KQ*SiHn~04QSN%ME}c7G9N+-E9Eut{Z?N z!tj{f8(^@82y&MJu&ZtW=1Aj<7=9fIk! z{qA?r6hfMJ@Dz$&s@;9$vc3E%96tr6+V+>({a&+}N?F?=WhK2wgqv2H_aIeI0+2FT zJv87RP9XM}0YbxA@u*rfj6qtrgR~$af}OTv1suVKqaq{Nie*F$d!Io&Bnp{+Frs&$ zO}y#zg)H1j(G|hMooUI!ZC=Lp5opYFudt7x#&DPlk6kk~8;it{VY1Jl&tRNohYqQp zxHp)6+TiR{wZ#1y!pp}A&PBJuOSf5bW}iXZ;|mtiWvX9H7fm5JwTq{yl~cE;#mpaA zxXCNcVpckfp*U=P7Sm%E(^HqlphyNbk4k%6Vy6?SVMVcFOzBt(w1yB)2hAWwD9@la zrWR>{s4m|6l9BPXxMK#{8ysZU0w5T5J1MTte@Ewyh=U7lBG^ZQ@I{i$*U7-@xuMsr zsn=Ok5^IN+2)%5-MnxPZ;S03 zuFbe~_3Y4PFx%x|w(sn~;ONw4-@jjfb{b6VbVgI5qUwzBfwV@Vm~6K!h+1Sj%^+nv z&rlcHzR#dRcd-e(-+w40_l+=?3HDLQS5?f=YlytpA@U>&`m`;VCZfjIzEDVwD-AWS zR2vDajyK75>XNI)@Y??iu^YyR#ho<-8F~zN_SA_x5w+fD(7;66ANHwO?cHWg-Oie} z1==4-wErwup1^RnT*wZTfJ#Z+(O4wtv4K|h>}Jv#8w`J-3JNh=7B#aSCn=#gr?fr! zY8&w+0$=yr*1ea#Bjp(QqHv3jGQjj474#BR&woHr^$Mtzh~E|v&ZWN>CDfa3FbLnE z5DsBu+@xL_AOfSkW`I@pu#yIFp?rR&86eVNR^YUjG#JewlxGjmpfFpLYO16B=r#a$ z*9}0C2D8EvwWPrefL(P1Ft^Vj#7q*Dd+t*aaGhpNoz9xJ1%BhY`iBy-*1ZEj%fi&` z9S}1$9SbaD?A=<(+-6joT5$48IW;@YLlDQOkJfPMQV)N`sV^f0y6N-N_^eE~fm%?g z6{W0<LuU<6S&M?L6M*PvyAgzqop@%e<`1df7gM$mO&! zTtiU1lcta^2v4CfoWw7cxKn%t-FMLW?ELx)LW+ z8)({sgI>T;(kN@=ZfBu(${l&li`}he5{Kqd3ocOC>A9V1fLk|7TVTVut?GZ;#`Q7jT z@W=oBumAU_|Niq)9sX2*nm^s2;m`DE`A7S+{W<5fC-@8f z6aAC?ll?{hDgLScY5wW{8UAAbOux%N%Rk#c$3NFU&p+S4z`xMH$Y0`L>|f$v>R;wx z?sxlF_*eQ@`B(eb_}BW^`Pch5_&54X{bl}5{>}a^evf~vf17{1zudpWztg|VU*X^F z-{arw-{;@&Kj1&;uSAoyhy6$VNBzhA$NeY#RsNIyQ~uNbGyZD-S^qh|*MHuB!C&LQ z=)dH@?637-@n7{{^Vj+7{n!0B{5Sm#{#*V=|80Mh|Bk=ee;55i-uFN7KSV!}kNqwF zR=*>d8cYkO2Qz}1!K~ouV0JJkI3_qYn2Qb~^ZxR`Z3qLNKOeoL<^^FikI!Acw7ZUx z!M2(o? z3qGIApTEXAd@p~})hae%PHLy~bW)p6?h?yqpuupWu~`)Di(|saG-4%u4j4zQbEI%^ zmX*f}YmmP1lQfzqPJ|Mi#4uQPL4FZHSo%Ulr@+D-CYR3bH*vp!&1}7Ud6(R+ zVVI8AmKC(|AVDth-cDOOo6+?O7nhO^Hav4QKUuW;TlDH^2N+desaMm zB5-;#A~S=ZTu0vm`F7ILT%7I~JORvM(osQ&k7bHlG<_UmPamgp)c`tCxQq+<>=T9N z^9lHT`g0tgGbau$_m~d7y~=rGb?6NMSha3r@%baq)Avm;4w2vAAmfb$F^(=|&qkk@ zy!SIct<12u|B$3#iswVHQ%c-IqK@GhoT_|86U{dC^4=l2v_)(bnC z8Zt1k&>`y-O+x~(C0L=RAq2mFOawv|2&Q=~)*$?z2qXm-elv!12!~f-`vTFbgjb9s z@QSf$#qVSHBo~PDk>=wpKA!dheOvM!ZI#>Xf!3&+J>bYF);NvV*hQyTL6$vu+n)0y%#Z(;-I<;EmTN0a%y@={tbKY5_2(0X*TlBmfJ;n0*H@R||k6G=NKQP6BX59kzHx zEdaJ?0I#?#3BZ;*0N7FsfUQj4Cur=kXv>nUP^J?EMVr^|#0e+k{pK1E6$k`cX-LaDC>z7yFAYJm=LSp7=CPWVd+BnXnC0x2y8Qo5NX7|9%A zD-$AP0!jBe!AFij!U=Jit~f0bK+%PxHUM$roK{pFfI{X&3kj7>1QJ^MO4uU&v4^$M zu7s>ELTGuYs}A0jYvrbNKwXhahAy$19uaNd3vCq`+IE!i1bn`LwX7y=tjFk4BJ7P& zMM{Uq)iCV`sVZBEixWMRQB9V!g;lId&I%8z5=}Lvl#~$86K@JvoB|SuFoYH7N{OLy zDZ!o1KtHsOvu;U}cEuH1FFybOexd6l? zjE**MH)jM%hGlQj2qPIqyxMO><+DiX0MZV*^vlfab~RC{4L3hK^gNG)+Lbo z%rb>N!dfmylXwIh55q2ThK+~~V=Dr*`w>&os@=d_ISBUbZkZ4H$#q}UdRR&P1cpGw z2{UQCN9?20d8pbaj+9WWhi0g){(AXrI#z!0x*R%`fD=6!y0wDsgY zF@{#f>-AE?HgAX{&uICNIueiQ*jbG$cWjZLth$O* z*{3h^Y4>cwGxiXW%w|U1VnZM#cQ_aTQ_2nota`x;1}vVbB?XbKXswfs0nuW|K9&o@ zVjHM(K0|vrGMcJ$Gc6gYFrXq8OmOco2Ckxb7)S>K-@!nG35UF>FhF$j{v5&pi&Dmb z5wt|~S8yyxsVBhB>^9e7;*85~^p>nPKws1SIc=d@SgF=`TxM&*r6}6!(Y_o3J*03Q zLk%|KC}(ZAiBbMORht3jT{3Q>sV)iU90UW zYC)-`gE@|K4wH_I;|LiHyPjk(m0SoJJY7?V*nom|$JPc+203k|QNtpjnj)!qxVXY#C-8R zq92x+q<;2Djom9nvg2KP4xb){fs`ML0u>aHe!Xfg=zUGbjuw$U|?`M61AW%xq*pucdsWYm)GMt}hZZ zy>dP!F0|o6+|#+0%qYb@WZCPFiFNLQWp5lciVo|K3A>MT;M?dU(P16Ic#*cbj2v>d z?8z;MRqz(W{x%i00ru=6&5<3xDFeH*2i9Gav?^FENSCMO0-KO#0E^{o%BvZ%mebU}qo0qh=*g8zZdFW(>z#FO*A?TFB?~)?MMu^zk z*BK-4ju05J0xf-}VuIBXfJ}$j-J-CraOtpwPs;Y{dIt3x2`Zx5RWlq3n9v zA$CyK@$63+M3I96?y*kA5C&Fr?8jJ7R%nQ3UH*brupHbGMzJf(OS&Y<7Q{B&CWPonh7dJQEQ`odd4aseuQ8GzlP(D~p0mZT=@1elzR<-G9`HF16p8Fvlqp!W zzsgW-rkgq-B`ltB8FK?ukiFHKZ)vO7z?`>3E-?a|PGMiE?Ro95@T~XCS?Q7$wRkh_ z1ibguHAJ|Un_$@}1ATcNIZwc73`21%6zR@(o-KBW>rI)Miv+euhv{iZVq@=rB zI$jY&c-_G8cocY+p$F_`wvj+XQmUreg zLl6HW(r9eI01=|{=u+%DC7_7n*zn@Zn@UONtDstCUW?cbWJ0*RA(=!fFxH9`F(_*i zWLCYgRwC!dy!A5g;EPgtOG_G+SuDQujTBuXySF8nu}0cSLVGAU=?? zw4N1G&*5WHdM3@0RDS*pP$~=VX1KaP+BLs;I__&i9V)57OWn+Y2q-6GH=g#Vt>6$& zAF~G~Q~%N#$19VaaVwG<$FOi?)-Z}!%Y3%XJn1sW!KTddLM7k{ql5-&N3e`Hh5#Y- zL@vNE_MK%%5e~14*>@$}7mntN#0O_{Yf58JTZsq72q_g^g1Iq*O-nABR*Ya@&L@gb zK-eO3W;=QCT3}B;V+6%w}7~95~oUXes=fFbNu8SvKVue#Ba$wEBMzWw+;L9MJV~mBq?XS zC;=zzF6SgAW0%2ZLpqs^`aey}z}@S#)JTp;U}1OlC}We>6|dyMBcWGL`#KlD6B;Q` zxjR^w@AwMXlER)+2^>8teMKkkIaEdT@jDopJopT-lGbhB&JL9mO+3qI%CoYJ%1OU@ z_}HdX7TBwK!>4^ygaK6TJk}sC@2D^uvGNOI^@?Q4<#1B^n#jii2tnjR+EWOSs5~tK zXq5SA2{e@hiIU0%W0UD-^cT?`JF?PVP&iMzS1k=i;@qnSQ6hUm8k{ru&=U?UipmN9 zS6b`|AtUclm8D>W{v|lBZ@b+kVzoj{Jj3{(%E!ux1;3nmnxDKYS+F2u&8HaznjT#% z8IUv9!rT!VYhVIfSfE2U-DA^ovJS-}?sh^@ML9!lI%{`0H?--vIgbPcU7%-4HqJKF zuB+=q=ok&b7Ya<%B~aF`PX-Jm+f>mrjkWB+3HX@lSjC6bzE{s{ii@9fWI|H80gDcY z*@xDH*;RQDDc|c7t%Ks_J(U-?)LKL)J(P12?W=9!hyt*8t?Zr4f_Oys%k>}*R0rVA zo4#a;_?CLSxy@^J1UL!Dt=yzg2uDQE+q^bs2mx}UeG4;lACl{~%z94=29l8T*f5fs zxy>8typDw0ob}{#DW%d9jCL&_is9Op&lol{5-lH*Hh+o**e%rZp@glp#&9T79^H;ONfM+ksy9)p zz^ZT-+C!uIX=-}I(exBF9&F52jH#FQAp1?L?9+682tO;9KseqR7E2&xp5Ql6r{=3} zc7XT5P36QZ3WEGcccg_|PSz{ALY}qV9Q6D z2)0Nf_#ag@@vNJzE?YJ62ru;k?qf^l>sK-l^OH-se~@_c5I=d!)cqEw{D`hs@-YnI zxhTCMGA=p>bX8gV)pda{qDm&4Jy$X)3ktLA#;ITylLt$;=*;Ig4-<%URR|Jo}1r_+8>u$7>~Konu+^j(RgmI+pZ{oGOsG z1|u;JHFQ4%a628`h0rUY_cH5u>d(f45Z+)wMTA%o0(?G-`=>M^Tz{vMPArt2UYPM? zVC{J2D(CnStbK!VlD{|c$I1fQ)3;KsOqpB|r#7U`+eN5<3v=hv(IiO`B364JWAq3Hl(B%!nZ_V7xV`s<>M5u@^Zs(R5q%;N?&9v-gsRsz?`=FW9QfWYs zN}D7tPE--tPas%8{Vo_Ty`wieCzIkks@24m&ak3t;> zA})!zrwBX}9Z~y{CTulZL-#N-Eg)jbk^J2wb2mR(qz|>UW>)Z%+xXfP8q=1!i=Qn2 zw))ndnLGK()$*7avdK<8z!ixZ&i+4E%l0&Q(L`m{vD7R{syld5kI6+@g4)Of;+#%L zR2Inp0;_L1zxE}W5=3IgL`~tC4I%~>5t|NGp-3X&G+2FP$Yb|d$*{mRzKhLJ+epat zk&@a#%Z_uLVM(&XxIHAvW^$)uC4Q+^Qx{OtZoCycD`=f4@bEE*f|vv7v?4b7cHWIn z>AQe(9sjYk?}9bRB8YEWvZFD(XDQiX#}-+3!22nPE#l2Wk!yF(2Arw$HU|8OZz(4H zYUWmc^3M0vllDvxKY2v-$^q+sEprP$Ig=XJWNzl)mr@fPXksj#O|3Q$wG}@Cd0853 zj;-s(lHXXOWI2;#p->Yh!OPCDxB>}8;qXli$P6-p>186ATp{XLC7x(jUOrw{b#X$~ z^(UESyq=p(b(BL>$u(sNPLS0?`CbEYAM<(Xs!u!+B^y2>HlvEMlojW(LaM}OR54}; zAFR_taW-Q`vy@S?nGAhFYfup2654H9rlHL>Bh>igLURoSC}WGoHovq%0j!qo*HCLE zKT!0x<2%PmA1fC)E3SWTWSrersDHqmNHsZEIK{&%yrE9<<<%c!CfmSs-IQBC#K$Zc zrJa5Q&wd}NeG!~cju_8=OUc<~pu`C?KBKf5QP+oDq%L9@JQzm19q?GM1{1B_=~lFh z$i!Q^HHxkJQ1QgJzr#gb!b4euNmNi*cI!))-GyXJf-^8d;u#6lbO1j=E;KfU!YcE@ z^^Db7+6Df4<~n|Ij!gZQlEQ0YqKlW&?(#NV=7`r=T#ndBNMXmc%ox)$se!U>+ah0` zY}-n~eJ#Vj(ezAUvrlV~&@^ly*j2G5#i@Zu(lK%b?eYo)@=Vi^HZO8UkWjfFk!)e0 z>Ghv+rP4w+6+m(qp#qWpsDujYAOMPCy%vu`lnqki=k&ywTX6=ceCZ__ASmTb$&l7H zOcv{6O?KjBL7Ohf!g!s6s?T>)ibbhv`xj9lU{gP{Eb)*aq7F3^ zF)Gy{0)$afP(oXBCjp>viyb1ams`xL2jOTVB$eaEA)>39eoiH`RjVFlEC{4%W8wb0 zlmIAhEP&3gD`KEmo%}DzMUYmzigOXlHEHt(IfgXR`&<&?mJ$}aY=uL}NiGl*@>*wD zQoh+$>9*&|%I7M^>+|Hd3nR=qJ-JC+(gKyVBIl@zV9t3uP34N*+KX+gHn^ptgHcG; zz{zz)+d{!NfIHu@o07Jg_Yj5nhBur;mRIr~E+hj2dnh}OD&`P-P%q|4(o^YpR}f|b{rt1!M&w#GKRbZeo}=Wod0$&>6?Hd z#Bx@*JAHUYb^sWMA#FnjK$|uxgnk%V^*0Xy|^2k&IdyaofZ)ay!28V z2Sr1H4?DvOn(wrFBCe-fv_5QtLmbd=d7%M8#0_~AGRG%MLxY8BXOFhla; zImV2Vcr8IYPkhfPYvT6oS8JcRB^YTYCP7MP6>a}>wDt)XCmz`vT?hAibS>`n7!6== zVlHw_9RM6t3xH!;@Fd2YMC05mSn?b%&)y>(>O?iJ*u&cMbUld82}#hNU(9_cjjk^W&tDQiK2(PTm!jrMlyU1|2+?&fsu$_F5QX-6aIV=G z!4UjFsiO{tco=*)4d#&|oq9PF`R#_t5vEZ@9Er8c)15bQMdCo?!tx!8o zMpmpkO4?m`jT@|uyJDiC#KpjSc7*3-w>G^*9V|2UWxVD)DD({*2$G0Wpa4$`=VyW3eA?t^ zJ5^B+>oZ_LreEd#21qn9pzLdh0$(G{}%Uac_d(2 zq{MVQZ+dYro4N5q2IrwM+RJvN(`9xfqKutnhhjNZSftEA0DiM=?l)#fLZTNn_bYp| zuD6tRA|!hjfGbrAL6(Hi1-#rxWIfLYoLu1`Fi4)oqZ2<$o6vKR;Dl5LmD;F_zv1lD z@S4}F&;MIRGz%5I^!ix*v0QrD%hx3kDOeetmGt?%H59{MsjgGdzNQRw_t2OtQT-F< zd(;@^Y(mzJ3c6{)h486D`%VUt;pPEdG~f(0%?k4s13g|b~Z?N&R>8b;FueEa}1UZFY_LZ6S+!g67vi#D!G4ULGrw!e)%~(xteu%#f^ix<&n0?jFC2uoW5g!(5v3HFlG_tBR!&U331>nburi@qtk4P% z)BwJnm_$3U4gell3xEe{0N+f^1Rqof01v7bKtWfB#_4LMQ;vLSjIN;7_DD_ME0qJi z9E);IbG z$uJ@t{V4sBytFw{yKF24Ewu{T5su?a4anf^{-(J-v)8EXT!%vofSx1to$Werj z;897C+QOln~U!#_S2#EE1mBoCyFq6nIoAx=3td?&%%Xo zstS=qRA=+DXV68aP+xW*4|B9(9On9vk2+Z%0u~C9!;N@JFj;3t+xJJ zW{W3di!VX6%Bplx<#{hUl_JS^zv0`{wAW3WlT>$NW}ATVA9HyHxJg;&R>27ghJ`OV zMr%vZV!ls;;bI65W3k3NSCDMDhA*KsvcYX!L9*cvaDGb51{JiEhBKKho|JO0=xt07u-KEZu{J1{x+6HR=j5fZp?NT*pk2$ZQ+EV4 zrS5dfAubUK=yTE0LrF6}ptP7_{y<+kJt}hsKiNdgoudrMw=$>mljro4(V5fu$sDcf z_R5^fPqykO-_D%EPv)6}XfQvE$OtzU5=$LRX(=s{#}jQir6Fs{gjHXX%~|!>wk%T_ zRiefl5!jE+={ixCdA3trpH!;{UFhXc`lb~x8qL}+a`^`hM->%1-MXrFY zE+Ssi9Aq5{K5z4KLIFqSVDN?L5oWs;LK0}R?LqQ7l$2=E2J_lPDrl*LJ=#)>J=&@P z+??2!sI?9Nw$=h53g{#stxR+|+Uo#ddo2K(B*~qLE=NU4k}@tw^+}RQ9O_)elI>b4 z=TQ(rDM`*3Q7Oc>&{$=mF7+bmSyZ-c^Nm%mNn|5c9_vVZF1F#q87iYGdJIdItd%Ud zD%t*9o{+WW58Z(!;S5u9CJog*$HgL(;~dL@V((!g z19TnrNXn6cF(z{YKY5ByNi*tL@m<_*DZX^JrB?N%Fdp+Y+%?C1jm+^3*2Ru)4Xq3=@xsHmX?TcwbQ&W zSBE!q{oe?;gQf1fM|K$X-BbNpcrZ*QTT#tceY!|WJ&gmgs#p-%5HVf?`Asr$;00f@gD?8oRS@frt84hv|}Qga?$rJT4>CEw;r@$A`QuG0JFb* z475n$XPs;Ck`MY-6y`1iU~M&c%%={`52*vqYYE_#fYs#)q3+mioga2njYuD{9){6p zDhr)MhVz*R9-^ibGKJ@84y#c2Mdc|@0Pn5lMoJR9M6eAX&VrSQTwhLuH(B zTpc#c)`!iYZ2+_C;>#imwVPx`C3o>1htbr;H;oowq-IgojM2rK_|m(niEmm2lT8m_ zmTIK2S*pp}iCV=5dsw^#+~jUI6)r83sfOS39ZHF0p+=JVJy%8`Ric-36`b@bs+UC; z)X|=0THjWxJ>majs~kyEruA*5Z!V$ZHgL>;9<%dJy0OCdGRN_gJ52jNm7-@LuO4ox zqB2UZvcqvo$vFm3V`+n@vN!8GTv;|iHURYwH{nkzMWq|u5|3}OO+S~hal333j_P;^ z8*br$Qm&biR{y0be<=}gt}i~80sm0;y93}(IdxyQu~J$Swn|^tTIrjGZwSd_bds{v zc&*2XP5P41Nr+oGoAhyF)ldI74*G;hBTn@>Q2k;)%xl7x@`Sy`7x60%M2R+M4Lqqv zR8D|Tjm%+`FOevRDeRC}F_f1!DJzlSmGo*VD#1S~3e_mL8bcDw?Z%J-p^4rG3!2%C z(76(!_SH^ICpS7l^-ovQFaXMg;Xp=4m@tS+nWV73eS&nExQ9UACm}2tr>l{^e1dEg zaSZ`S6^sSLq(`*NNm?0dFJ-}0suSdiDU0?6cX0HID}cm_sYKBVqYU}5qj|4Z(_ZB$ z(DVJwEPiqyUHc-A);SXBqum^(`Tg3Lp_JwaqES0Rfk)Zz)&6Ep%S92S8+6DKBp+CO za5^J}tpbW>GD4P0gv8ZPUl3BMk`T-tLrBfRH3|;O?&;QP9%gP{F0nY4JA;>d)?mH= zR1kwLNi*-frK=(MSz$~H;Zh9b`VcZwE=MRrW;;bmnj0IP8t=F~ooDZnvjf>qT%s>W z%=>_BnQvK|c%(wbe}MsW_!@FKgLPHfP^|jArS=tPJ8Ay-`C1GUj^90Y!Z4d1U5bk; z#gK6P&iIza`9rebsmGf|d~luJEMjPORLyVZJP&U97BXENp-ygdPwmD)^V68>UfY?Z zpeFTCme`UzAy-6fWpZbAAhs8D#SWpPD6u&tk*yC&2x4d2ko#Fi|1-$uyYF)#VpHEY8_&h4heoLQmKz6sQR|BOb3(Tl3||) z2}1LB^r*T;;^CxI%&gF_aMIAptS$-RiNs9r|5-u^5~8#f$)cm0usu(1M|40Y_t?yz z>A~eg@IYAHsKOF$Kv1bEf|F!wv;-^c6c8maRnHKU_LXHjWXRqRw@ugOh=6l_oB7|9 zSmA@1FlAdPFl_9lc;>%|U{INVBreIoBJa1b%|^-0KS&)$1qhbLf3cGwBwu#+!vQGPJ7ms~$*ly%jxOn#EIUxjRd%5Jhx^IwGMk9M`GooQWY{XX<+tJFY3=_Dy5~z;v3IkB6&VW$Qp$OT~1aeSG=bWV#A(sM1?|(XY%br9Ae~%itzg% z*xllStl*$?q``UpA^ zg=M?u&pFBTn0n3X@(v?K-m-1grV*Y^e5lR)TtRKx7E~Xra(EH5{3C6}HB^Zv)Aoo^ zDM22qmYeCEs49>l@oKpVc<~Hw;VaVneBQ_{mm7y6C(>yunbqbY10ASo-`BlFLqx++ z3cNKrBWNF|Q_Y=j1)xK75;r-FShAT$6r?&V>^;P@sBmwaH`tlQ!#iH57FrzM3#bnY zVjX`V>`l)I>>MV-P?+DJvcN8d5IX6NH=};ZLe;O!B>FwaKwUl?8b?aAqO^Cygm4vgCV335a zjrEduG(kc2o!B;50c@xh5jI6n7`i+kuT4%Fo`<#v$qAkhaA7Ce8pQMZ6kYsQa-uEb zc_#xmh48A{6`Ee${TLFNd0uz_x(5DQcEq8GOCp7O?m+^rhIyhXeM zRU}q*1+>?3LNVh*t4(q#Zf=9pN9NwlDyA$E3B zGheq}NL~b-(f4mA-axH1okRb91h8t1TFDOUB+KQHhW1Go=uSx#OLShtX5nolwy|M1 zOSum*$~{PkKvZO{MTUcMWvAv~9~?{!N*ru=7@bVixh6~OsEKk*VuP%0fhYm%Nw#_0 zn9W0I)N~*#b2wq(8mTnn)v}*Zq5w0xsq*9)o+RLziI;(FV~z@`hv(=H7t!mMZ6|r) z+j3=ISGT+fS+4?0TGp?1jvfywJb)o0K->*DkxDCSicqHBwhm1Z+$>A{NG`Sgfem#S zQQjRoSop)tZ}`EW;;PVfC}K8m=1}_j`<&?_UAuSY5PER0w5GcQQE?;~y*ZuV&iFM8 z)veN9gxO`Nf=%VSf)WQPT;n@-Y{L@JGWp&~uO+KEmG9)&GI_Z5JsmWL>|&hfHDjdN zE8nxh#~3ovaadY)NNn@A6Q;2o(@SHXz(HHI<}qX3dWw}aW&`fMLvJ24Mv|+1PY;dx z7+NJ|`Z+4c=_aRpOYE`^LE0)5sY&~3=Q{+*) z2C%(a00jq)jC(jw++jNcBVFYnzB4-horj#Z=%d~55V?(U$ZayH?M@+IxUgON$YbNL z{n&Z!*!XK(g1zBhdinF5^MrfH0xTfpeR!D-CzQ6oCfgJL;%Ot0l;z91K8&6?@-1BZ0Aze7*_n~ADkiMFywrp zR0Q$Rohtumgf>ycoh;N<@Tk@MC-ZSTK0by&RuRBf@8{;@96sK}SHY;TQA_X(jl(k% z3!HvY2OR#QdK|U{6EuLmiB~$Jfo08NWahJ5FmhZVc$AZPKxzuPh+5oM|m3e8FE4a&MM#YEc_o1i3Sv4zn>IkSrS6 zCBWKBlR$*tH5g7N#r};e$g0hWgpLac9o1o>P8?Sz##%MUWe%kEy+W?PC<`i)<|@72 zSg6VFkOq7EW6CT^4JJBP5vvi=QD&49KV*H0)Z+cx1>|Qj`!o=w`AdRzz7FBBC%~-_&|8dIFYr-uOpP?=)v*K4_xbsc=~7^ zzt8Rs!m1?}E$Fhqg>`wRz=drI#%P_HEYT~vn4yfQtNLPw%)b-5UK?r)2ciU#|5|FB zz3JN19|DC1BE&^u0bS}0y|wL*&NRuSWDHki6_+vJs;`)qto?6<=o<*p+ZulB#P?-L z6s932sv_f=`2}I_VMC(MvADjFXeGg!8cEbLBJE^5J1qZ7>-g|l{tV*VyOn%un+{9`v?cvPh$$ZGijR*PyKEy|W2Ow5Os>xcy6 zD0-8o%JSE#Uw5*Qs3l1w{kx1%u*ym5(Y&Ac-IO$cG*}u zc3DXRy9goOt?O{uj41T63KjRss4f$V8^D5cWLzWJudIlA%1H29sfUQ&sd6sb@%LPv z^&o5%rWbju|CzRW3njJ%P76X){j|fpfn~O%A}6#AuT-rM2teT@XW9uEvjJkn4_B~SLnzk11FoUb%z<1UnaAT{9;(Dat4Xp)7q+I8p-@p2<6Ohv^YcBzo;5N|nPR0^Wi zcRM4Z_p933M#p%=rPZF>1O%dR`X5OwT~1=Dh^lnONK7(|?-YohPAArtEP5pWovic3 zwt(0clwj==tc;ef+U?E!18v$OsY^;GgG%lmC21So))jA|utrtZvnjPdO*KPKh13Vv z@M^7PRiTpBQdOu$$l^jr$(JOH%Mx>@+YnhS)ge=xZYxr3pA=b;h&0CjMqPAe16Yw_ zD+6E+#=cf;)`{L(kaprkuRH_!_e659%Cd1`H6}JW@3np9x#-DAGP4NjEp)0@N|Ii( z3tJKCl~E+so8>aj^>>7sJ6+6R(?vjWzU_|IA)rX)1V>kj!DOuTv(*i?Y^)#;xS<+FW{-< zG&GFQJu5!P>z zScm$@>2ku2kT`w8dL;p{%CKJgfKa{8pV0}Vg7arYs&2C}g;sM6U3XtAb?)}B39WM^ zkK(>2iUo*!JSbyL{v6%KC;hoX1|g4b)7#`msO^R%WIy5f#6wFeI9&^WLjjT(M0n|Y z_X?3kqV5&R{nji8p5VRLU`^_KX;0mtd58 z?DlM#>{sjYW|J#joY-KYU%i9OU(x1YW@`GJ)0h`&k9}LC0%?EVmFRC(WPg@%XR0n` z0?80L#cSf+Pad4O%dchd_q;t1&xYJZCi;Uc5-?nhtnEgRLm^$WRbbh4lQn8bgJa1o;gzt(N zzKGUPiP@^7L_}(aAl^;9cfKNmC<9;(;Q)1)PM6IKLk%xf>jSZ21bz1tqNP=o2Q>OF zS&;Orz7v9^Ad2b=l9&UT*_YOKo9TGri1Ys?i?r-*D`504?mrbG!(qW>kyjB5meCN^ zv!Ik|Kc>BUMtV`!^{i~N&qzE2RJ{E?UHb)(p~O{lVLm;H3BJ_vkQ6mSNO8?jp`XKr zvRtT6zQ}RMP`e*KnuDLZH4Z!in4BeB#7!5ft%gwDn}B)W zB=u=KgnYGup(p~qqz}Nv&K5kXQveCThy^IOQ5Q@vcZx{jh0GNDzyf|q3%J`90vE49 ze^dKL%ueyr8?4S$pwqrBMngK0Jt6clci*TD1F?!6hE1Ipv7OSyWjt39*Gkyd@MnJovg{)Q1UwW7qtUWY%dt!PB}xFqO3|HfokzF;#^d! zx~~XvzUky3;>3wPFxJ{#Ma=iwBaW5ad{{)PsV1ZW_Uy$(08yhy=Yr__RX2yi)m7k~ z(hVYu0w|i05`fA1ieYsCa9Aw>iVL*d9vQj9vIbN?NXO!##DLz2I;;cNHdcpdLEbHK zzju|RJX#8cWh=XI9Ix)B-UcUgz*={zKwX0wz-=m?d79$Yx=lq(fOGL+a(+V(yU8I3q|&aJIm*<$mOh@GycK3b4TE zwk44G-zSNGs*FOZdIHD`7T(Fx>wfjkNZFVy=(5D-(ES>PVzWYvi{y))DoS3Lae}H( zUIT+BGMa3!_p6sC{;COE7|x+QYT*F-gFl;_cPz6S&lZbUlmj<$#u17JZi`ZE6-uRb51k1E-OA@mCqHV zj>pjI*Y2Pl$f7k&w;-ox@1HEZwf2vzoLHa1=tWyE0}qMlDVu3`MdgDi&n4$2 z?w0g$lwH~XW1WH|j((U9@n1y$gdY8q3WKmI|L|0ND}!HVOru}YP5CF!4e?8= zDS!HAdJ;6{&z(=d_$ZJW9yAHFkIas{5RS6?CWv&(JIho6o+eK^uTZ?72@B$H6QUoI zLc*y!v%?xxl46AJrQiJo@(o&-FS$}J$3I~?*Y0{3AGtT0sdM}T66Wk2+D2DIn=vb zJ>G0ixnG``aH@!Ui;#oLh*eF!nNft_t<-RtEC-yt`SGA{<{HGw8=y5$8`2>9n`gdB zV;7kc9XHHLE>suGArThm4dZ}05yy)tMokIgpp6ufKqoR)=Aca_f|uSbWS<-AjmbVi z?*-QF6Z&8dy(ebfith}Kd-!iUA-H%SM=Pd{!zXYBOE%EX75IwwnO=_jkE9)#CgZel z72O>mP4E!onPcj-3PIKmp6d_+G&|_xIr&y8K=q!~u(UtJDHip(iAvK2LfK)ZIIXg+ zPwK4mk=22mRoXWQfzQiB(c3%%1<@6R^w&F))`F;M5+ZC$VnlqM5OKcDzd^UVl;q(< zrX)wV_d6LCyZoZ+q_|9fe2tKC6|ogjwoo!N?81q3eF`T`)Fjyo?^h2g)6Tr%-kg|x z<3Yb#FjB0+0;bx;Vu-B3Q!k=Zm5GJTpkQ#{t2;AaB}85z^(0Izr$X3aqB3>al~f1| z8BtIv@nB^~UEQ#IOn!5`o$u2@Fe=|b9il1I-V%IdXU*Q5Mpx``)h(G2LxdKyt`)xk zCWI*lRs}A}rhK`!2$f{1D@m8ot`_F_0lvJs#;R1N_=dV6h%c)rpGH=+Gxrv=ti>~HQD-6rj;IaSr7K02V11C2AVVSyg8j8V48cMzCMBr z)if#~ql_x5Eu%~r3&l99_B>YArTqeDC<~xenrXFn);-D_WP>CL&jq^k1_#e&btjor zm!eI*IU_*#AL)z==}Erqon4lc$l!j3w&HD9j(+I2HfqL->fy35hkE(b6MLZauQvHI zVc~hEP_0w9d2O;e@x-(eu8RYA|Eu@ zLXwCqi_zMpUb?oVvcj1zd^y!=_Y%_-MI>dX^PN~>iug`}q@3y$8&xDJ*RQuFWt+ES zfk(UEI!(oX$d_nS-jd}mR&6tA_M~)8auhJ-C8GjYTGS z-3buICm2p&Kbg+eR`Yd9ns|kC`n9nRr(bgf*sZ1!95S8NL8xmu6Elktr6$ywOmP*3 zI?GU8)uB#Qz;mtR7YH45-H5V-^K>0>{&||@BsUxIDS3YG#TYUDAO(!H8Ga#*s04r<1l6sS{*CGq@hY{Xy z-UH%G_W~qh5y7x}lP*g;cB7E)5e42`aoK`6-R=mI?nH!EM53RxAla2Lw$(j4>ZivveXgO!d+yWv9R5Gmzpu%-M+hQ4PjoA^+Ks2`-`51G%>uOB(rV91jYFs``NT^Ls@ zZR6^O>9YGfVGHluiC(f;*2~Mhh~E6<0=0fVPy!5_I1HJ;mv`tI2rl20>1V5zL%}@@ zJJPBP9y;4!7WRWdV_Dc2V*`!su1L1t0 zxw6ACTb|c}O1o^OUyFFfW+;uLeW*^Svu@0IEV6;;Io~O{fsg5-HXC0I8h`^6XJ;?^7!ZCEP%?iu$J4N zkiN{+gXz`XUZ05ejh}@%ylAF#sw+Xr%izA_)MI*7sr}$F3xK%qx@mXQl_8J=;0vw zPnfT8A{9uX^Qbr!j$_A|pfF(^nxo%PrA~nt2{byiEJK*gQyE&{Vva$Ae}!vZ!?MZ{ zMfJxO@x8d-1ZY^=ybVl6exM)Y-}HsZZ#O%?7+#O&bH{S4Qj;<83(XTASlISnOSIW<+Iu=1pFJj45 z;&YjY(Q4klMVRL?;b*mI1K( z9FIwiTF%^QNJ~4;TtxfzwA?R|bne&vDk23`aH9YBs|6(SA`_h0_xpxEkW- zi7!-=gN&?;(6z(P6Nj|9*HR^1kv(F=nOIro79Z~zkpDUBT1!P!jwF|&=VAU-{n?|B2cE5xcW5t&}MKjGs8VS0h~*o*38 zh~{W9RTJKWP8TD*rYC(reUu>N0z>0=?Nre!3h<`f8N(=O!L&jMEQk$JAIXi9H%CI8#Q})XDf+oJi#TY^<_Y z23pV87n2Yn$4)EKBS9Ziodeymo8@SjxpX?2r^}tL;9yyq{iy!ZNdRb?QJt6=5*}8` z-Be`&L_@18qj>-j&8Vaq_x6oRW?Zfg0M>d5m;~_6#Ix`t>Hr{GX;qKG7LCE4#4esK zbpWuX764l{fNvxM*jfhwTWbNZT?2SuB7p660IN$1*#NCQQw55B=r?h`qDFFjXeWep5w`U71ByU8KMw zUq(Wl{-rZ;5;GUzI3Ll>$tdcQaT9@sf_4SdoPL|}b_Ku!6f|CRwSDelShlT7HhAhO zp+dPFD_0OnrgAw|w?xiY(_JY+!yQyEA*&Bfi;>9y?2$E;P}JQ5VS$>@C*bpIo~6%w zJrO#B`{ni^8HXV^ze+=_R)KC45?X!-)$xg*7u0A6%@vtIaFEi9Uf=f;FrNbE+wqMq zB>Gf4XkZaOHt>j~p^!1Jy+H3%VRt$}s6VD{JNMoPeA>v3f!N4iFKHub7gj&x>;f^YekX0g*}RdaTcca*NhrUZ z_px2>bOFxSFjD_d;2h)*oOel_ue5N^%)IgoLJKkxb4E1X9Enpm_<=mk!dF1aAt;#; zzZm^PB<&Lc6NiO@>_Z;hMT66l?BC*s$-D>b)|oxb;Z;l*lI)cPfkxgBXLvzjIHD{o zqHI?d9FxXj@xrPUke$Wr#5T8}VBBV#SaHEsQ?U?eb;{t2aLHu>!X+Z6pri{U=qAVe zDq6FBw==Au?H)+D5Z!<`8GP((agd>4&VSexiLGRg8hS5z@hE^=l&4NPc zICAarEn^b!f)%cl!b^6I7*_ycLkcQ@L?`N|^L-tIA$&>tN#`5QY4YwDr4XdGtVeJ_ zia7#L1P4ksVYH4WSn<2H$Wq!HE3$8e>%^dTqWt50Kae2|wXcQ{NmOj$##BaBScF7y zuOUjY#Iq%e2?xx`{@$haj9ERmk$DHk=A$KF@8|J%s z2=|l|#`OD6)7)W&G?p_o)=BT_Kv`Uv?^N$;^F}yxb7_Au@EF~2yv^I)8MBhcJi&A6p5tv^i!-K&#@v7&8NjBQ>&woVZW?p% zMjB&v9{-9nri;d`AfF&_bspct8PiE)*718f&0MX{m<}4V>?OvJ8RK3lKN&-=<*BqU z(dO;xyk-K1T!Z68p>ZeBj$KDS&eXeV^Ls_1nKHakr_jvl+SRiGtSB^72EbZFGjMK* zgjXi^;2m9wVk`sT=vrb&B3v`ozCCwLb`ND!1qrDb+omdZ_JwrGSWP@1CJNHAby)h? zT9&@I5k%v#K_{{t(w=flurDi<+w^Uqw5WXx<=K9Eov$aZbH6&QbH8fW$;8LvejLQT zZOM>hL*kwk=A$g_+5MzN?#~NfC><%zj_sdqt(7M5eZ2eU@vcVem#V}Af1K3S=oj(t zJmGxj7w&iHH52rn%u5tp6Y8)h6RO=40`Nc$;HKNv`fb5=U>yKFuzCR7yn`I=KyJkx z93_?a5wp5KR4-w5VrAT+by&io)i0qXn9O86%{j3$xsZRS=yhC^xD`|Cu#PFUtmBUw zz(*1R{9_#e{9`Qu{z(IPM$rz1ZHveeG@&ob;Thjs=JVrj+2_Ey&BoU9fUS-f|-*4pL zF*CccixG`s1)xiFpLVMKVwHOWB$C*Pabiv{-WQpylyiJL`MR2NA=*k>(N@y?k7B@y z2aFIvmue;X9tnjZM|@c^AZ!t0GO#jwiE>r!Vjd? zrGX8+D<>q3$f%7g7*#{Vsf9m2+u=~ zAT_WVxzDsH!{prhuFi-YMx21)mTbz*cg5uRbUw=KL~=<4?>U97iU%l#ExR-mnsO}G z@GX;EQb+T9Ip26!T5uB>9LWK}vjtViCC>~iK96YOn0P)BK;+eGHlgZtb?}Bn0JnY9_Ps*W))1u!qPdr@ zt7R9>VZvheOzj&|i9JL9UZTMza>D29#0g1`SU(VE0hqUM%9Ts=mc$fG!&?%23Kw@Y zNfA#X6Q`&~3iIhnECx#%LaCA!TSqjQiMuAa-LM5uSBb2yrz>NpyfumEEu? zA-8VpbF}ZqKof-_{BaH+pT?mvQ_?!Z=vtzhS5Q)G8)z-&W0F%h(#Ncdaeur=g6cM^ zhcxVwT=rfr3c}7*nG;!HF-V_k`YQp2#&l1<$h%w=q!IwDt|V)^-bd}B!Qpjwzofc0 z0zB>OqKcQ3&yCsLl|o1=@~ouIThkJP9M!OK3+7RWU1DKL#fh=doa^Q%aiS^6BvQQ{ zKA>%Ul&J7zVKvkDeGAKv#4aW!=5SQB(4kk2bWnx@jH-@Z>r)I(m&o%8uz{TT;UxpD ziPG6IYNDWqViB z$av8xiikFqqK~*2UA}&LjFZRYYOiLcWPOf3; z=i}GLdRB;OGHMLiTqbWQX^`y8d@}f zZ|eA@9V2e31Ar~H0NAPlOfC^=tpk9qwE)=8l;Bo~v=>ssNFL_ahm3TGvD3-Td{EqJ zyTJw3A=W`$QHJ@DCPaJl#?%2fV`{+-DmlR=>ugy)Hp`WRP%?DLn9eu_eeL>e@U*v^ zr&*z@XvlWD6je0xU@&Ev_7$lgtJ~TAXu2wn27`C^V@Tinnx$3t%Z{ywfijNY{EGeN zapuj{nx$A8AEKEibG782vaJ>G`b-;eIRe^gZrTE(kqDomWzK@Vzks?2kSOcmMni0S9_>7 z5A4)z4n(pP?V6mjn$VodTu(wz9ZaVddGcU7=ociUc0rfbl=t0P;^44uJ~?fJB^Sw~ zK^9k-+$dS)kt&niaL5S!3vd}80j$9DRI_0f|9 zb&}fQ#ZTm7EG^=1OROVTTL@djlr2IYXRu~McqMdNb;QeMq{WGe%YJ4grNO)HGd$Vs z$eIN>*hhGRr+?2<4MVcusK=W{(ZvEgfH<^1H;LdFq7=-@R~l_YO}CCqB>0L>n3nPX zt3P3iT{rG-a*(`V-Cf>WcCT7ox54QRGYh?8q}w1AL2LXBQJ2#hvDH08B)-!g|Bl;L zr``PyxhEqF+!MNhO{p{v?tVaN2=V@c`mqn3^Vuc4SiX^1dcO_H%4E{%S6SIK8gca^ zsNYnofoRFrqb0A&WgA2bq-31*>!vlG@215*Aq@{B!;L4F4DK)6_VjGi&Xkk!^4}oK z)8pPSkD@tq&TndZ@|2X{AahF%Be*sc7NV-@`^(S2U?2$tBpEztF#nLjt5V^BflZk~ z^Mk?LWw-y#4nua_>9a$3-euQepZok5a>JXyIAXUi?cVa`uk6v{PeH(`|HM^{mr<){ky;4{~!MGpML(&|MIWD z__u!_KjDD?_~n5UfA#Bw4xV(#p}#ro@X5bD;>an#`~4sO_@Dpv|Nivfe?F?ipXyKZ zr~5Pfnf@&QXn(dp$3MnD)}QMi=g;%!`)=lbXQ=ld7<7y1|ZOZU-Dn}*ZQyculld~>-_cp z>;4=5oBjs>Eq|l`w!g`L$KUL~>%Zr}?|~Hb6`W?a4U|KLem=VkjW(7wF zvx7OoF~PCH+~BxiUNHYJ|J#Nz;Gs=+dVUZ!%tuXhHv4kWoXT#*<(tGy=~3_qz5LNA zlfqBxMVHN3!#43SgjL0`Irgx5=524gZ<}ooJI)My#~pTzJ#4NSw%HwatUc^l3>zYr zfR58xLUuoZKi3{|j2ZI28FHLGWR4l~o*6RF9x@w4hKY$j;2~%eNJwC;A&j3TiwMu4 zvS1vk|1nDQ52X$n9D06`N=Fjm0U?}wV>RL>c^_99h@A+sz@7LY`x?!k4>BqJ8PJc< zQ2j+8q|iQIeF>O!zLd`R`ZJ)<`7CT2?u!cWp#=S?fNy@CZ!h*}ym_ct?1us$e+{f+ zsHTZo7||j|d?ZHv3?uA!%*2R~JTc^BG30MB1QexTG6O?KiV<7Hh;bMpXiJdZbc`4+ zMr`E~OrcqVdru!&7$WeGo#3^=i60dV6VHaAy_B$0WkXApL}j~hT69z}0wXBufftVo zaQQSki-7cp=8vK-t_Y8y&KKQY5gcj3u+)@Ex%8#qN^x#xk{pT~C&kd8QNvd;;jmFb zD{85@i#;_^jr}P-b*q`W z)l5AsdFmExYHXi7b-O+FNSeC6^wcBG)FaK*x#X$at*KF;=T1G^o_Y*TJ-YPNW6acJ z%+w>2rygxhjoLqVYVZJWB=gDMH1*ihQ}1o2-rG#wl05ZTo|=e((%LM<10o&FIV#v! z$gI}vPno;gy!KJSe)tH&?`xxiarE=+h`l0MOws{g*k4G-ucI#^0lGhRDD)*~jvN*I zJns*84hW4NJWw4B3Vbj~Fgzf6n!*o=&ZCB-1tbIV3z`(Ymq!H?#BXCq1qX`X_8t`+ z1XgRXSgphG^R!TKkPJ^4GA6#$(gy+zLaQ`ZhZw95F<3>w7S)jj9F(;-RNiA@rY0e& zr-qz_&?`OlFf;WqGj(I~)I-IFGQJ>(a{^0{!z7SMW#zCnWKe7chL=l$G`)`kNtV-^ zHPJMBO(SScRSBda$!ihR>*99UAQpx}aAp%-2jqrAZ@OFdnA|k8R zLU@jp3-iZ_Q31&eaL8_>0tgHOu|;$!8enb07HmRJsMZ-p_kfL@q4WkixfSElVPg4N z;!!U@(0cdBc(*i`W)^)n5Kd~_%cFggCXJ8q%`pP1S>?W|2n~cx5GE;nsX0IvW*eYJ zpo&UwLyOsl7PAdQlWAmx#d7^a0a!iK&++{kDfTBv`-2e_kB;r&Xfa}h*g>{uC5wKD zeUOIN(Yz1Yzr{`svUchNLqD?-zyYQU-=7ulPfG}N=L$A$VRrJq#f&#EKiHb(eazA> z=wXh4~+cGigZ%!p&m2*@8zQ}3D)$C?q_TO&4OgtTVo@(8R(T3)yjQ(IoJt%eq1 zbfQ5mg&>k(zLci0oT0Fsp|B#1KFnowlBb`sz<&qeOIAJ(;K!^;HbL1v;nSM{i(r+U zK?byj8|ndUR2uG~2JWE-?jjmthy^#cnNCIRV8Oi!aJP!homU8VW8C@$jZsx0GR3`;Z2euiQ8GYr$3jL&^7RU-3dX6kYF z)ce!a<4RAxznOY}Gj)6N)Z;X-?vWb3SL)}qF?*!O?vBPa79t z?PP)V7Qh-Igvo+R^bwX?X59%Zgi^v08 zQ9%WhqJqTJqV7$Dy%Si^X8#@|cD6>mVRmt01^6W*EsTu_1qeMLVlW&=v5Z7axr;UB z>zGn%p%W{avaBQ)K*h`&29!)xrJoU%vcMw?6)%QtB=vx>kH*=0fG3svNtJ-d?-9`= zfd`O)H4*6pOoYuLZH)Q!MC&k-G}=!Vo3lSge9jv2n!(f}9%0NRxe0jl{}vVfd28XX z8q}Op$sY8DM7;bLteIXhGo6}@V%|O`E*!(NzPT3P94X}AX=T1CL_`1BNdTWsYDw^H z5Al*>W`UOnk1hwFLV`f($q$py7${+>91`$INq}f8= zOF*9Vsm}mq#N2}cY-a!8R8&QFt4`s9BD-aW3ksrHbqW|2iDrp_kyy3Kibz+G3~=oV z!Uk^%MwT`&M;r5Uv@tJ>1W85;^U}+I(W1;3L7CEKTbwAf1gHf@3@I@UDl~hQam*q{ zOo3D5<>8-bJ-NonqB9eL78+LQ|9oH>BR@jRHNF*Biiv{VualT4vir7}kbWq=tO39%5*c5!Mr+R+b-RUc@Z2e(HO>ArUKTzh{cf(i_au1&J*G9J_2~& z+l}}%MwlP=Qa^WKk)4n)zkSwrDArc-XlOl5(rT+Kd&8l&D#;_KtECdB#e|kZhd@sid_Dy?^k>5v(Isq*nIX^Nn}l z5WF}rNiB+;ptoL*Qp?I`l-eVNUu#mY#;=lk1zhehEbuE1%EL;BtHb2iVJr?W*6}NU ztKrvS$FFE}fDQrQ0%__H`IImnZz>WFNW(YO4wk&Hfve8ilW=dl3+^>tEqnFjsv8TF zco-~#shuQjAL-&KQ2s&|23e&n$=o-tnbe>KU`AMhoA@iBWY_%wLCu;ZK|<$LrXWJ| zLAsH-Rk0M7WyToNJ#7sP=-*%igUIJ&=c)qFd3l{SH=+%gi5xp8yw~$Ozw=$_# zeqRUbqX1><_SFjmC9PZ0nOR01CV)g)vCMrx_xS7Zc*{Ay209jt`$&uci^REp1S2fb z{8}BsRO#=z5g$&}xKKtwb4Axh)>PK1GR?K_86Qf|c-?Jz#?kH>*WwvQs@MBxK(B(t^EFO{09=ui)4J4a&(LvaZMWW#?lj|e{vxl-^!15 zPrMpWv^9Ivf>UX(36?R1TCxq|^I> zgK391r&;0W`~hy%`!LE}(2FrjT@D^GAuWlAs(A%4Aw;)9^i2%=c!XAYrAOEhy9}t< z&=9+%%BwT(=vTF-oQFZKpyl8ug8tmjSkgq+y>o=QylkK_2O&J8*R^L%+Ik`ApHU4!hno&=8ANAHwOJ}3Zqs-^&9HRuXYkawpwzO+dT)r2v^ zfbA|gN2Ft<`{ybh>H}bkx>)b=pxy;grr6)59QPMkp7;78mnLl9U0t4G)ihk%g8C}~ zz0yDNop@qM8eOJPHv{Tbe#|>CW{lF3buS;rkMFY|(V*TPdwW9Z3b}uc?p7ccRVCnK zBaEntU%Vc~+0-77OA@H}D5`%6Y_9f0-i9IOvb^^o5lLaUidS%r$NH@a>noMX3hOs! z`u<=QIhmn3bszBadP`cct8~Hs2n+T>KjdNzF@O4f3z08VNg#!D`H??TO%>yOiD_4; zrm7U)29(Zj$S(SHwmI$B`We3&Gd6GG{YsR-0#QEXhrB7#?dnCzRLQW81;Z*^Pd@BH zy%C^H;a}rHVNKVxBodTQ*xz8(tT5q#sM({GhgYQlY+6TXe>!?V3-F~i9TyG$OoGn@ zpGZ)-&^&Q5e6uI?=Ia+t|v;Ymz<@uEFxEX$coY+eOy%<=hn z^V(L|(MfoNac7!6>S3%Z*0jGetlz`Z&<&(za|K;dBm+utHYgI`O>JJor#(qunb`Dt zaqPQ)4IcQ6AMy$eF}?Z;9m010&-x+fV~A<Qk~T@8lj(44a;>mHN6^nGx>4f&B{!<)w&c+=1nU{adMa+MnJ#-4b9_{A zYEaQ!b zcX4)yaM}9q9}^Gkc{e;al=0l|@jQ`uZtsuhi3!gW6P_FD@!YO>0=ta`2VjRe>YLWK zcLD)O;O4dMU8=9Qlu_I*C!YlN-h*!w?cG^_EcdV}#k#C;M?At}OFf>uGsojw%Lwc( zAaI5tuy-E_oZ%3_9T9=8^$6_s2y81OaApC4vjl-N_kqA!4guT|5!hCbz?q5w8EJcA zsm|5|8IJ0lc>m71nJ&@JGJ@w95WGMTJbxbuUf>YK9TCBu^$4DC2nx6CTHC&mAi+3~ zTid?K(AtfIV!#&UXe%dOT)^uR!Rz9E;B|?^3wK1kc7rr^MWu@kF&y*fZQ4s|(=0pi zX|dv|Y-TlF;D2PNdvwQ~T9_6){3dNk?|b;o5eq;31_wd-!*6sM(}^htX3{Hzsc^W<0KnftmJTkR;IadB&??kWZ)ugEMJ77&u2?@T5Nvq@UHo>}R4k zQHnu*xee=}g-j(&B@y+%+*j3ES9+KSl=W^%%K8lzm7urCht&6rI)S4h==B>aDw0;u zn>CWw#G55a18?5sdGjUUO^Z_DErRplDz@@3`XMjI5DTbpEco_NOzm8nlr#V==xK|o z3)c|jfwOBW*;eb8zF^U!;t03$FL^v(1U#&&_PLS*Q*j~s(23SFm10R8!yZ$XNM80Z z!7uvVRDCm;Qh-Ee7W|d&FM|#IH7;{)OgvxUdFY^Spl5 zw2Cr^M8IGYHv5z`useu{Y*dqto>V7RveB|8Jv)0qb}~>>aUbF)36PL1w%rYDTIlO! zNQ7SzG$9_MpD@kysqn%8zn(8hjCfOl!!-;mW^llIrI=Fd!}@rMDO>qh{o|jX9{)vo zeD`mG!Poqdb1=kY{YyIJ?=a*RKje8BVq*AZ9kLZezV3%SH$4R}%E5HIe~%&G@I#)1 zArhK*x?j;D|9~Oi^h4n3q3or06GwN0ddNDt2Dqi|AgCq&Z787$mD^p=MSkmV~NmQCssS>b*|g znx~+VE-1RavqU@uOppW|h1Ne@noH5rT=IAu&byd(vC>o-G^H(qMsi@HJ>MVnx&(S% z0zFkf>v;#dk_AEbA%RA6V3DPrhAfDdb|5pidYO4PWX3ul@Fo&U9(#hn<%c{ALnM9B z>E41N{W7`*anppE+1FP7ZU4+?;+f_}d|kml24KJAhn$tb;-yD5!c1&aAhM=~bH>>E z_g(*xXW${CwmaQ#Dx7T?@;yJ~>1hbwv_d#3U4q?KB1%Kpa3#WKsk=gVJm%TTzwaOU zG(6J$_ivG6F}W!Yko4y_J3v+FV*&a?+#!{yiZeW*oNy5wb5PY`VGqyE4!Wft7Tb&9nhTUav90T^UG`+6p61bd{c|a2bkKFN?V~s}Ea0 z1Gf2rXPYy@HYOC`j+|I>I(*oN8N$Ll16PnZNQY<lo(?n5P2Fv|7pUL@<^gY+`sY zrLCD_CNJfopa^6)EWHJqB|q8k3G2l^xcHMi;q5$Ha&{XT(4 zZ|i3s)Dsh^A4X97*7$}@!~7zspLX2V0bcKd_$PfN4;No0uI#d{zdwR=UU%Igvrw{blz zkvR!~U`f7{{Zvj(4EIwN@8dDsQ~Z!8V2G%oPWNYVw!)-n=8GQw@#>_e;=IuVO2fqa zA9X}oyw|j(7q*o@-UHnOpeEiwzYRc3QaKV_{{qlfzQ==ld;;|gB>^`WJi!k+1w$;% z+bu6(qlRnlg;4VZ=du`9adA-YLKA^iio;nszK|KZtB;X(C4_@4ktn;oZ0Ly?$vY;Ub>jUnOva zGpON}39eC&Bl@>QHV}~IOKi5-br!-!y>q9n38x&(mx8iQVShW8MdJo z>dUaH7HZ+tfXc89XPo#lY$cK#Q1ZMXlGEflnC(fP*>=Tk`lm*LE}2oEKEfNT{N4W@ z4cTdWcOkX3#I+OAEpEqA=o5q7nejhC4L59*`0#KQ>BB$S&+xyZ3%|E^hC#)d4~D(P zmKe}%SIACUj-!8iOT36BO=^)2QqrdP{}fM$$3{Aw9{J?p^aV|0qV%jem1*wnmTsds zv#0u*?TlXT6RYa>-L1Ym!|#(xUJ^Q(NvH}BbXVitwiw7559s-BlH$};Zs4Yu4h&2A zrjjVy;b(eEe<-R*_9(W=BYVU(L_&^A6rXS|GCj~U{ha?_ob!|FxmxZN`y!vDOd_A~ z@)V;bUWOvEuf)R!6+w+b#j7z0^=TgJf5xQB8Gwr2?o30+_acd!!A0BsG?sQh6%Q5y zxmx+t{d4~#KKIFLQnzEoGyI4h(QSFkf+4GETDo|qph}e^YMNU7t8HSL4W=9~rVeL# z+S*7HcPl^3)8*fztMOE&+&_VG&-5eyEmH1G9r4c?@hm^$Ut`SrG#&9UjCi&mabn!n z`}Ac>Rn*vvQQ{bQHM(;M8Q~T7cjp#y*hj;HuJEA2+l$GW}ovo;;Vh(%Zri#h`q=c|vN?0y~y5(l#vpoy^OJtH~ zEF}vBYdyH)<>R*M?T*VIes+1*mmxmjUlBFt=rdSNGX2H0g73L zxwKWm8>38NW2MZPVx=ZzrK(|^wTs2WBMWOeg=z|1fr6Qpz0A01W_CK5SvU%XacK1v z@1eA;PLV*dyl71Z)D+Xug``a} z3cAvTw9(Ih6X(CE{mum^ZXJtv?A5|E6wvBw0jXc|p+*BBOj*Z-8BhRss zDiWK^L^-!Wl=Flr=k9|j=Q*O_j!2Zv^+Y*WiJ}N>DI;)x0Re2g0aGk?qfWzKDz{N* zqP;b2)R|~+<3=5rj~96J@sBZbN!um4*D7h87sNmV6FV1XXO+gN z!C$K6r6j{!cQnOPAg)SOyG=1Y?g@4^hazqAvT*3 zYsdu7NE(I@{Qvb;lklBpY;@j>IQy(A_|U zr>Yz_6*z1o3lOjOjQohGtX{1l$G>C58~likF?fDWt@IK$y0DxGNj(A=O@z8pgf8;W z{j*rMd##tCirfSjcu4|NWxiiwfo$b(^o#bVQI%haMJrV%YQ-=Lak2bS(Fe#FD0uDU2rqhw3nX{!gvN{DJM6-8V5Tm7^i7Q^Z{9{kg)Y)@(B zZ}XE`9}C)VswxQSl`Vw28?Z>Hf2tJk4f`g)6@=j0bbr#phU6)EUk9U`OR394k=GzWB zRK*LSXQ+$6B=HP1;=4S(j*IlVWJ&2|Q4E&1P~MBJhf?>8-L9-RAmFWdbno_4dq|8i z-oCU`lh~YR&@|2l@1^sY&qsNCN2B{jS%8`=<^Nn0qB#16^Jt{;@p2F7_alkkd3yo* zijjH+-2!k_He2}>9{7XfEH71$yI_`3gTNYNl6(yxjaGHC{!IN={vQAAJoW>=%bs27 z2Yjy|KNr3KcUK8v=kfrZ>GsIc9Yv>rY$)4W$?;16=m(8ri#6S+PWQ6

Ezf~b8Z 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 dGmS+u-~&o2cK( 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

jDY;GT1nT8~Lt7;7 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

aeo`wyU!VnPA>^=OUfeP3WuMY&V=Je%=mMd- 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%0DZw-pCk^0fJh<7LGA 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 z%s2lerror ? r->err 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; diff --git a/internal/schema/schema.go b/internal/schema/schema.go index 72460b0..6b89660 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -2130,17 +2130,17 @@ func (rel *Relation) applyRule(r *pgparse.RuleStmt) { 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 *pgparse.Node_UpdateStmt: dml = true - if len(act.UpdateStmt.ReturningList) == 0 { + if len(act.UpdateStmt.GetReturningClause().GetExprs()) == 0 { set(&rel.RuleNoReturning) } case *pgparse.Node_DeleteStmt: dml = true - if len(act.DeleteStmt.ReturningList) == 0 { + if len(act.DeleteStmt.GetReturningClause().GetExprs()) == 0 { set(&rel.RuleNoReturning) } } From 40c1b590828fa010132c8d53a3006b357797ca53 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Tue, 8 Sep 2026 18:39:26 +0900 Subject: [PATCH 04/27] =?UTF-8?q?CI:=20the=20generated=20protobuf=20node?= =?UTF-8?q?=20types=20(internal/pgparse/pg=5Fquery.pb.go)=20are=20dropped?= =?UTF-8?q?=20from=20the=20coverage=20profile=20=E2=80=94=2040k=20lines=20?= =?UTF-8?q?of=20accessors=20pulled=20the=20total=20from=2093%=20to=2069%?= =?UTF-8?q?=20and=20tripped=20the=2090%=20gate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 4 +++- internal/pgparse/pgparse.go | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 590defe..3a62349 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -49,11 +49,13 @@ 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 - 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 + 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 diff --git a/internal/pgparse/pgparse.go b/internal/pgparse/pgparse.go index 56c4da1..44984eb 100644 --- a/internal/pgparse/pgparse.go +++ b/internal/pgparse/pgparse.go @@ -85,9 +85,6 @@ var modules = map[Version]*module{ PG18: {wasm: wasm18}, } -// Supported lists the versions with an embedded parser, oldest first. -func Supported() []Version { return []Version{PG17, PG18} } - func (v Version) module() *module { m := modules[v] if m == nil { From 936d17d941baf5d35134179ea070990e33db5517 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Tue, 8 Sep 2026 18:52:07 +0900 Subject: [PATCH 05/27] =?UTF-8?q?schema.sql=20declares=20its=20PostgreSQL?= =?UTF-8?q?=20version=20=E2=80=94=20`--=20sqlshape:=20postgres=2018`,=20an?= =?UTF-8?q?ywhere=20in=20the=20file=20=E2=80=94=20and=20every=20statement,?= =?UTF-8?q?=20the=20schema's=20own=20DDL=20and=20the=20application's=20SQL?= =?UTF-8?q?,=20is=20parsed=20with=20that=20version's=20grammar=20(Schema.V?= =?UTF-8?q?ersion;=20pgparse.Default=20when=20undeclared)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The declaration belongs to the file, not to the statement below it: directives() skips it so it is never a stray directive, and it is read before the first parse. Two declarations that disagree, a version without an embedded parser, and a declaration inside DDL applied later (Schema.Apply) are errors — nothing is judged until they are fixed. The analyzer does not yet know 18's constructs (RETURNING OLD/NEW resolves as a missing table); this commit only routes the grammar. --- internal/analyze/analyze.go | 2 +- internal/analyze/facts.go | 2 +- internal/analyze/function.go | 8 ++--- internal/analyze/literal.go | 3 +- internal/analyze/plpgsql.go | 7 ++-- internal/cli/check.go | 8 ++--- internal/pgparse/pgparse.go | 16 +++++++-- internal/schema/schema.go | 61 ++++++++++++++++++++++++++++++--- internal/schema/version_test.go | 59 +++++++++++++++++++++++++++++++ internal/vet/hazards.go | 4 +-- internal/vet/vet.go | 2 +- 11 files changed, 146 insertions(+), 26 deletions(-) create mode 100644 internal/schema/version_test.go diff --git a/internal/analyze/analyze.go b/internal/analyze/analyze.go index 1ff9fde..5be50c2 100644 --- a/internal/analyze/analyze.go +++ b/internal/analyze/analyze.go @@ -227,7 +227,7 @@ func refreezeDependentNullability(s *schema.Schema, rel *schema.Relation) { } func Analyze(s *schema.Schema, sql string) (*Result, error) { - tree, err := pgparse.Parse(sql) + tree, err := s.Version.Parse(sql) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } diff --git a/internal/analyze/facts.go b/internal/analyze/facts.go index 79fdf07..a228f68 100644 --- a/internal/analyze/facts.go +++ b/internal/analyze/facts.go @@ -588,7 +588,7 @@ func (a *analyzer) buildFacts(stmt *pgparse.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 := pgparse.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 ae40799..b8515f8 100644 --- a/internal/analyze/function.go +++ b/internal/analyze/function.go @@ -54,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 } @@ -127,12 +127,12 @@ 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) ([]*pgparse.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 := pgparse.Parse(fn.Body) + tree, err := v.Parse(fn.Body) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } @@ -181,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 } diff --git a/internal/analyze/literal.go b/internal/analyze/literal.go index 776c9d7..97a6bb2 100644 --- a/internal/analyze/literal.go +++ b/internal/analyze/literal.go @@ -13,7 +13,6 @@ import ( "unicode/utf8" "github.com/kr9ly/sqlshape/internal/catalog" - "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -542,7 +541,7 @@ func (a *analyzer) validateRegtypeLiteral(s string, loc int32) *Error { if _, err := parsePGInt(v, 64); err == nil { return nil } - res, err := pgparse.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/plpgsql.go b/internal/analyze/plpgsql.go index 604b3aa..6bc1752 100644 --- a/internal/analyze/plpgsql.go +++ b/internal/analyze/plpgsql.go @@ -8,7 +8,6 @@ import ( "sync" "github.com/kr9ly/sqlshape/internal/catalog" - "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -198,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 := pgparse.ParsePlPgSqlToJSON(text) + js, err := b.s.Version.ParsePlPgSqlToJSON(text) if err != nil { return nil, &Error{Code: codeSyntaxError, Message: strings.TrimPrefix(err.Error(), "syntax error ")} } @@ -442,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 := pgparse.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) } @@ -967,7 +966,7 @@ func (b *plBody) sql(query string, line int) (*Result, error) { if strings.TrimSpace(query) == "" { return nil, nil } - tree, err := pgparse.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/cli/check.go b/internal/cli/check.go index 23eeff4..2d2b818 100644 --- a/internal/cli/check.go +++ b/internal/cli/check.go @@ -132,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 := pgparse.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 { @@ -146,7 +146,7 @@ func statementSpans(text string) ([][2]int, error) { } return spans, nil } - parts, err := pgparse.SplitWithScanner(text, false) + parts, err := v.SplitWithScanner(text, false) if err != nil { return nil, fmt.Errorf("%s", strings.TrimPrefix(err.Error(), "syntax error ")) } @@ -165,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/pgparse/pgparse.go b/internal/pgparse/pgparse.go index 44984eb..cb45dd7 100644 --- a/internal/pgparse/pgparse.go +++ b/internal/pgparse/pgparse.go @@ -63,7 +63,8 @@ type module struct { pool sync.Pool // *instance } -// Version is a PostgreSQL major version with an embedded parser. +// Version is a PostgreSQL major version with an embedded parser. The zero Version stands +// for Default. type Version int const ( @@ -85,8 +86,19 @@ var modules = map[Version]*module{ 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] + m := modules[v.Or()] if m == nil { panic(fmt.Sprintf("pgparse: no parser for PostgreSQL %d", int(v))) } diff --git a/internal/schema/schema.go b/internal/schema/schema.go index 6b89660..9484174 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -28,6 +28,10 @@ type Expr = *pgparse.Node 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 @@ -469,7 +473,11 @@ 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 := pgparse.Parse(schemaSQL) + version, err := declaredVersion(schemaSQL) + if err != nil { + return nil, err + } + tree, err := version.Parse(schemaSQL) if err != nil { return nil, fmt.Errorf("parse schema: %w", err) } @@ -497,6 +505,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{}, @@ -539,7 +548,10 @@ func (s *Schema) applyAll(tree *pgparse.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 := pgparse.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 +582,42 @@ 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. +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 `

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 z Afs9^;~_}vjJTSji0#M{?sX1>)*J`?N+iS}Rc(hQ<lA$D|Mha>HA8 z=VX8MEuuQVG(wchw@PESqKHV*$2W=Fr{&m!YLLPJbcW5ij-EEe1J7f>&(Z_2^vHF~qCQO5$zfxivL|3~~C|dc-pkL4~l4 zdJxDme4h!3@+{Gy=7z3^NLu~~rdf*tShf^A`>PmyiL99OCEyIB%Pw`b#?>>=Zu|PP z+qQMb-Q_i|>Q6Vz)xuPGkC+OjFC?-A&OZ5R+(o6U&Jfq0Wm%RFhs8{epRCOCxeQgV zhP@IG^Rky`dDeqVyoY94G0d13&)!+z5m%d zuRmys)>TAFG!o7usLt70&X;J*;bSr`uPvc*#-iH`-Mmwj8J#Y0>}8|FZK1xo(ZRM# z-`r?}dhZeO^9$Jwv>Y88nf4L``wTNAsNl9NH_e&^5YFY+n|cNra^pE}3Ki*hsA%n8 zOAPX`WIkE9*6Jm@TXFf+#ETBIFjDjE7FnQO!bk?@NTIw$N_eX;61-EqSi3Y!ynva? zU(7(06)up^7BRsNP8%A|XvPSZEagIR-PnoWX2DQBfa>(q?V?ZHnp}!bo&mkP=Gz(W z%p!(~d8PE`6^IhWC*~RG&da^LH3ltVa>1x`=GFDPcod9r(q*npHP0!hx&9jxaYDP# zoZ0lWOhF5t@(=-$xJ3A^K)S8FS+4mY#1vkbyV(6C%_a#nCJI@g!CG9kQ_Xlg75xF$ zPNk3(2Z2Cx#zPX#)len7H3_#}GmrkJ1QDh%N20sL z-Dk*Ce+gIDdu(*mOOT$gNu;gd8T!SWciiUVq$~syZ=U%&1w?{s;7~mx$cdLex84O9 z4a~{+bEL>tn|S99eMipnz)}o`W;LwrtB-LgS=rJ6=S^@LL)a6N!Ild;-j#ejhHMq) zCPa32ZOE2ToL3$%&2c|KULTGTu0kB64KMoWYILtI{g~I>xo?=y`A+BKnFg#W+X(Q! z{k6%W$q7JQr>bw^cFXsm^sNOvz? zwGLo^<6p;>k2Vl)U@j3-*kZO@-Lag6*mnusBnx*{CLn66FYx`1_@K|l^C-IZLxJcyzeJ5t`=1?s1NH>*41730|dbibAMlE zfeSMYDn9P42)75c;*T}?!}|8`0U=lwe%2X&44;~e|DV(dSFx)AUg2CNG;wblq3NYX zdqpZ>1Wg{1K$GbHf=av#DnC0!O0@|k4Q6NYXf7+g|W!=TtFTSF~|jSGq1;1qcb59-^C$$`?Uc3 zN#c$mMZ;|!l$zY+6JU4O-N-IMXb5Ms-Zt9WH)lynEtv6L1nCAs z$vtj}Wgo$NQNK%C!w_VoTXQi?VidhN06f)=bF9h%=E_q!&&Vc_=-_#|W+}*FiDqvb z0)3T>QFc}96;I_Ws0&RKTN0;mpZ|{d&z~&8mmxbpE+kLnaNZQ8D zrPzW4(|ow&`jP$E7Mmaj>{@(vEhGScIAl+vh}WroHvlY@a+I3Eff(&5yaaXD?jqFr zcY-<)f%DNDVaf?OtXI zTn$Zz)bPe82_aJRIW3ISMITgng|f@G5zYlP1ogc{!sArZb)yT}rA%{Sy~Jb1SJk4SibUUxQhwp2~N4 znZ27~rP=bZXN)X94{C^j3PrO1y%U~T>iVhQ zW!^n+J||3I)?BMeHb`S7R>{q-n9!`bQ0lGenOiG+h$GcRl6dZT5Nz*m8i|eZL*tb& zH1=uq8pI#>a{U_24xuRbCUpieqx~v@T8}?V2Fxg}EKpz#&qq4t=_7%`3 z+62(rKux!{`u4&uhJP-Sutmmt1UEPMoVJ~;Vw#FN{q+yLr?va)AfZeYZ-_Gc{+_&z;tK$o3|z&>`Bghyli+(svkkpP)E z7(0#=ZGWtBAO3upZP$x1gkYV6%;zub!QB4D#S%I&pY3LjznBkx{%wsI!h>_}lorp} zcXq?K-_#JI+&pkcZ_rMO4Q8;!EaSTDt6SD(=Yd}f4W|KEaas1YRR>vOGO?4bx&OE< z`ySQ)>(8mN{SQAFBV6LFI3*g9A61)fqPaEqf6RW$9-e0 zIz@@o-Vy2z^NIJj3iXCEC@Bj6CQxr0BqTq&DjfX8UQZ+JDz5C6Xdin7mSzCv8QQ64 zyx3B&RH7BsMJFR9x)vz#$i}i&qU|Qhg_LZk85eHA-|{+B38G>c_)CP883edUF^m~R zGf6Rw8E|STFdWswoU(vMV7h(eHZOIlmT)G{Tr{HwfiPWui#-wT4}>O@5N?DvpNN3p z-^1mx@*{W0+Ry%%UMq{6WD!wOn7a^Ck>mIG5Te-~7s7`v!2}Wzxe)y=1oK}tp7Ad#Z3p*!kFwk82yP3+3Z`;jz-Ss?2;k{Y z>~_qP6CY2}H9)+l>zg7tukVUMV$U6adaGlr7IiNa- z%Z0XtuLToa^8{bD3uJ2*qZ-<4mc|qeckee~xFu^OhiYMW?l2ev;S95~cL88&_)A#z+f%nHklw^9pNoo+gh-MqaZkKD zN!%071dbx!jz(AP63;bn18KsLqzaLkwNoJ)c79tV2DgbaQ(#QD4@LKUw&!sT^K3J& z^$Fq-i6^O{$1|e8o_CmCZp#8%Fy~G}>y67Vx^B?CPCzy!i!k z6a>IOVm4ynO9?sTr`6DpzNhV;U{y2=m7W}-O!O&`Z)l?oNVytRjh#0xfXhgRhT&h3 zNHwM9ll%{KTuz7x$uzEIlxK&SBYvsQ;k&PAF|8D%8(n%0c_evmkeGy%2yg@UC7nma zg)ox}++#7memcIMmgRVOeS+gvIt;QPIW060urES&c^R(;AYW=t3|dTA^o}Z{O$joJ=1M?k_^d=?Jx;HR04A*m`95@t}a$5_W>cKi#3NhqS1D zdljeuLW_R_Y8GFbUW;{-#AFB+i?A`RNwl^?wd~t6oi(SM+oUYK# zu<2Mj3mp|^6AB&4Eyxh;X3WpNKACltn8%wMn`l$pwD#kSt&SO6F%z$A9Y{uuVJ^0G zSeiKZVgg@+!8b2wMAw|yC`-ny6G&T z5}lx71US7S+y^dRk9DGPd7hN$Q@OHo+)q;|bp*4%&om~NUd^_cTv|1o7pr*`PR!!^ z9W8HzyTvHr{JbN#uKD2-Tq4N8RpFchM zH~uG!|FECC$nr67yGD;Vi2Q=58Z+J1?uSbd1(%A&Bg~4%CLN0sMC+1LjH~a$>TrlXUUrZr}lGVnU9)A%>l7fp7-Ph3PZrXBIG%0;E<-!nY7@8}`x)_b_Jz*#S0hkt7Hq&6P3# zspseBMe+M_RhV~%h&Pj~9LUact=AztB6hmQ>Mu-T86#y)Vj_*4NVkXth0_Vpn$q!N zTtSA!$shpD$LB0{RknhNNT9iH6X5=l`ZJ4Qmk44$Iu`4VWvz)Gn8eq(t13WF?}$(k z7fiVbgFQBTwVpgk88d_v#AAUzK+lD7I#@l8MQ2?>F`#*|HkU<^F_hS3H6-9Gx(9I4 zE2tP#-Y^!6tYe=X2vS{v|$HsMPmvej3a>2=nW- zs5?(dZm;436+L+oq#GfDSyxFg7S<_ety+Z!>WIjQ_*UNbQX)+`!2A%J=LSifAFJ4t z834l6?RjVWxJwW*R1&h43zd|Q1)kW(OQnr&#Hn(lB!G3&#va>_ySp#(p7)04!Yu=M z>KT=mFm~f6R%cOHg+u_#3yJPMfVRdnsFk@pifHsLmm?L8MsxnZw(aS2fCC9jID#K1rL z_&6S*e@E@J~oMj4)Vx;j@E6;ssk|)-l-Szj^HXDCpKl zLATB@%kT@1OZ;TBS#Ow?bD&PMDCjnvMW!Q)xMf3>M!?UE6m-MO;6NXlpA+4Ln1t}b zMVg?6IXDwEc3x_QO6@2=Q=BYof_95YV2CZqiWgy{X2__wQTv*3CCil{c$X7W%KY}0 ze1l{ZhHm7)MtltlB7$ZGIkkiy))>Fy0UCHGI#oNID~9KRvTMt)X}LW+STh)W{F|<- z4Ip-)2pwDimM8&NfJTD6U^oaz2SkaypoNQFL0(}u;vx~hIl(Q+EALd$H1=gyz6ka! zXK;n62HGm4QAlD*3^xa{EXW*+eg!*c;UN2A{f>FdEuBSU~t8 zp@psRz420oG6<4Zl0TkXp-s$<;#gmz+usuZTOgRieXic9U`A#RI;@hg(_9oq>K=lIf}Gw5Mz zsFhn-0^uC5vOXGs$ogp9dx>R9Gz1_rz1b4po(!77ql(Hgqd_xH87|_J zdHDu#NtTJB9}$knPrin!u%ALvthS4>wab+44^yoi_({n zbQ0ZuPu%kCwqg7erCuw6CgZd4+=U$9 z7M?3$`f&Rwt2cO zQvOXKE=fPRpUf0ai6!m34rPgcS5aYGXZSnlfvEzs5dtKR)isyEr0|X2cvcZW-lJL$ zTVyCT3O^h`b&!FR%RGOvE67FL)Y2>q#4)lSH`baB=jBK=vk#uRK>vWShkL39OpvpD zw0B370K;Hh#4e0t)L|%gbG@tYi;=~d8cCNi>2$z7eTsye;W&+ z7#Wt`<79Wit*L(DEJ@4Kw7LhXLiA(1MgkO$MPR3~1G;5Vv=%Q*cLOJS2+mWv77Mfl zGZZC(!ZAQu+4TshpzRs;U&M^M?RNX`A8`Nqhui-Uuv*Vs#I!HW3Aq3;KD)Um=)j>@ zYt6_$5jQZTm0!ZO{oAWZSc!;90Qv|qS&8RymPAMY9cf_ynbf6 zIP1c_XF)L}+?y%HZB7z;pKy{SX16k30v8z3ehge+hdawumjIsIh*S^<>Js2}qD%ZX zXp-kaiJg4J2JvI%jT*h0E8X%F9qPddFoq>--9nM&5p_wtxk+MGbYEa~QjfS(SZl3L zn$NWJ?M^t04XZpstELGKEsK13JLlRsQx~h-u%H)g1sa?OF`#<@)Ju}BQNj0<*z{vH zTN{8Bo*Swy?eMrnq!koqS&^2$hjM#lMeMGhAW-gxPt$eP2eon;<|Q!B8`?v%geLwT z9RPCY+QtEnlN5K#q#OdlrthwX=heg1{8V&k$JMJ&8raLkYJ===8XzT7O^=;~Z22A` zhx>?Qz0I#)XmTYn@gmH<5YIGjOG{!p`1xL|Hcw&mSX$roDY7=SzTHC`nk2j*W+wJ; zCDO=v>dL{PluJm)d67=6WUS@0cmt=XgZ z1dXazSwHvSQgDOS?_w3lsI1U5E7wspLPX>KUH^XQDk5r0K_^M@H&2{oK26-YfU~2D zCuV`q_Ra-<(mNOUN$*_XCn}QfLPO8A6YD!;dz^5N0VMj=Bw3M?DoQt3hTL)-*B~eH z5xE4D!bDD@QoQW?ZZ}{(Ay5bD@SX8;6X3ovTJFeSB!z^tI99TLSpYu|^woNxJpxiX zmz_C9q7Y>BcpD4v!D?qA#Rci_XfgFKOHr;EQ+DLD&~?gFf0XUH=hB|7=l9%mX5l@nR=?x7-}%lx_S|jpcYkNRwC9>VgQ$>zGvblR zabS~iTbF2vXdyO)$)=&97A1voq^aQ-g%DATZs_q+q3Tq!8yafGw;^QUhK8u}#l?W7 zH#F2RQF8o-h8mARfuNz`%ThjtEWV-PF%n5b3810j!`krOjSW%XjH?FQXz1}F$sr_H zX=r%yR_PH;r=g+N*d(EAXsCggBoPe_w}?Z82eP3d$}V%&BWr%L^uWAx-NI7-F8p-( zPvs}`e-)fC3pbCBDrHXQ8U4&*%~==8^ASIvsGnCgPG_@tP=*VQ4cR;9J>S@nL!%*Y zW1B9!ph`6x;-4qM;Vy6l>$S zRiw7{l}zVA5sz6|m|vIyE-j#Z`P{vj`y> z4i|dFWOgtb!JXXz;v1A+5U2H(sE|Tp#YbF1(6IGtGU||FonroM-7pO*6>?r=5-2*f$Px`u3f6YcUha3!-mAH<62oTK*flgc*9xc z5b!{?I=(WdTdi0%rGtQ_iAEYoPE*_JDo!QZpCqPGk@L9)Yo(?RB_D}pT`1s@;PK?! z;Nhd2#I4@|n-JWgH`TR>X1ggwv#q67D-_X;eV>&t!nx3jpuAb25?L5vRc~3**w9FR zOf-A&5eX+5LQe^2q#lRN-Qv$DBwJK)w}GE*yi+MkSa@QVuHeXY2{-;$sSzzIqc!-+ z)~xBRS+i=*3_j=YSkr%JmrvKcYj(|=xz%e1#c<7<&b&NYv#_RY)`?$miK#*bkPFhR z9jm^joI@_tZq}1kjf`Gt)|gchj$UcjomB^oUZJi#owcYo8oko2600FdsOCyU$QC-Z zYLhGPxmoEBg(aBb(;DSlXz6NvS^1os)q0!rOuSstoSW?c_6n61_uOnaP&3cUq0ww< zPy@osd!}|V{RmWV%D^4&%|;3}ak^83SDMWgYPof<9H&=2PoJ2YJ>4sx*X!}7zjD!K zqJE1|+c!gA!QO1nP(x!hPQ;iJWLzzY;gv=p$JeTlw(nYXSS~12N{}EB#R9f$-QKSUjo3bxVhlF8z*Ch^K6QCXHgUx`pS@yf~KTeJew{_}{l zw3~?u*9qO%s3ASV;6%skee5$Nul?tHEjy0zJkjyyi=8!RBHXUNy}HArvrym6JZd9| zt@M%m`PR4BZX-iqeKTXh;Gmjlb<6gwDbmpr-F{wdf_frGbnHjxF7e70_lLtOuSDlA z@ycxzuQ1Tht+!r=+>ZSHAwv?11_!vgLpD+E^W{X{?K)?%YAO;5ZH`IWELN()ps-dJDAz&cnL&6kC%@|6Z1cyOH2vUCn zA-?HDC~yr(d62kAyXM5tBA_%Jt9s1PV+G;}s!Crs&4P@IosUMX+-n-toq#1i?<80(OX}TI%&MD=6Ss~n^DoH-pN?VM>o3i;%3V=e6Z|lE$VM()!JJE?ZKCRJ^KrWC=(;q#HtoCsM3k%jU`(BD?EVP&nvf_QE4H3E!0m;4$WDXIDd)NDc(*OcTI)q1-+}aDo5K)kA~|&r6gy zxiMHbq#R?_y1~+uHO7k!Jmu98X_Qz#kyf%VRsh$yLTaMhyMOhe3It&dHkXLGO8^TV zylQlMv75R22OV?u z6PY>W)O@tDK;lkdMm0!^*Ue+qB7!@`vqbi7&VAkA`b#;Ve5!A5#HG#e%*(PU{ZFSX zGgQ&J|Ge%Z{kZ0+lkpzo!tZ*m_5Hwu@jFcSuX&2cBbL=DyE zhxhlKb|R-02*U~kFJs2AYGPvNpw15jM7P8B@Wd&EC?Xe8TUCdh4b8jPExaoWmsQ(O z>=xFXw%rnj@2G}ECh*2p4-?ARA6*paV&VmnxZKhbZS$#3x`_u{Q&cD%=rJiMZq7 zG9*cDCzfnKiuh$D0A#I?+qdH?rZo-0J<#3kFD<*WD;L%zlXDehMyCZds>gn#+e(QB zk}NhtBq@wBeRH*_3Isw*k(q%+BY0ccvwRFv=L2&Gudc~^Vb2nRwsk={_HMB@-0~QN zvAaYhA50Q~>DyaBs!{;I;>7k^OEI?hk5_)6+ix!q67O4a@K4ODa>} zumGXJytB07rSD3-qkvamDqFmC&g4k_7BAg5`O>(>OK*t@A)4N(#Y=~&VJ86MhOEU~ zcggi)(NODg=W8HkiETSVD|d4&?9;%kFAn5YqfdVWMuTu%>tAkFG>dLjn1o1!QPYGp zSZ-Yf4R$rrP~A%lTWL)+N%l1xVY>v)ru}1dwCE*TaX2Yo!;FHY0ZGbKH9H&kAhPj- zCH4qc4z{|ieHKzxgVJV$l;^HR(AW!7<)Nh;1x8NY$bEd37A+6^0 z_+G2hl1onm6j#d~D4F@`o7hzp0WgOiS~@`&)QWy8^L-FG{J1C2<$_Oj;OMI`qd)A|aak_9DVQ z&GQJC3+}@`Zgt#&kv#G5#U%~=y%#|Rmf9j2jf{7%;*$se8)r0rfAb83C-eR7XBcfZ zq=}@iQs`!bFw(xPx(Wo(%t$doppM8Ty4izQ=kso07K!}{p;y@1_zJN^dlz~IX_O@~ zn!)ioi5LzDRx9jlJ;75l-hi{jD|6XhURMW@^FPdYTk0%yvQ7bdbtUTZ zl5l~E-M}i9sD9pB!FCcFf3w>?fKugwQbWe{4+K{#%;-Q=3@Oa`!1=C}IGKJ@PPC3I z?W#|n-E?s7l$7B{*gj+f8__e#Gbgt5I=|98`^G88nAq}IlNiT$9wpjaGO>5I2SB>> z7NCxCEHWTlH(46p@6_3+*C9HvbqjT zWQ`ooeCnc}x$Zt&-)4+=W}DxEx@p#5V=a;rk59Np$WJA1OmS%89ySpzPFih zZnlPUVO>>WBGJDWCZ-dbg8?;Vy1OVsFsR-1z)Nd&{r>yyL6Beq$Vm< zBr`82gIo zPVB~gH#<7f*O#CjH*)!JgqN7|4+hmdyJz%f;U>EExN4g?W_^(5=5DXDx5c=fOf1tz zuzGTPcsV$(qz9Zr&tlivXejKnC%EH89uhkYC=_fou{$n&w*q$@Z8Y4R)k|U(gvfDq zD?Jgc#C-P|h*MHVZTeY^san~ZstL+)<>uUnbR6X~HMUt+LQ&-cLJr;KJfFO-PP|(c z;Hwruk0G=_*tkSJXeHz;XV$$M(Zeg6IVT99eO0QgPv34;WjZR|Vsu&*FgK_&LApge zMI_y#>n`0l*A*=c@;}<*&P@BmUJucx(-3IoT2+DeS3VlW+TZIQpmX5kjJ5eOAGB(kdD&ps3qgfse_ z=vcRKpMf&7>lWTOGaB_rqfyZrm801?e8Nwc|MW(K9KW(5{}_$tnRf%B>}#cD7a018 zj-quz9x>L^FhAcuLcwN+T$;zAP=rUwVa^PrRPCedN@go(h5@DF5hIKY14hFmgc@ar zapa*d1~?eT)!IkbYkY}ebkKCS>=3KE0rK#y(!6szBOs@r#`Cr87!d-y z&nZoBe`BRR=R3Xqldcky^v}giZ~uCwePl&UoY3Pc^T{K~0AU0+zY9pXi?|g^C83q+ z=U%57MrWTUcic7u=cF%6!)B;#_>wei2FK|-bTb^jdb;%3OskGOl?@yBL3Ffs48av{ z^bCPnUUj-_&7EU%bd(FiFe}v*qw+S8;KU3x{VG|9QByS1!MJDdHAKP~*(?58X7a3j z5qN-BMs$ND8r7<_z(7KfT6}Bnc#o7}Q{}Lg`WYfq!9m6?EDTW#>(KZ*KWzGC&-PfV&;UGhP#$M_ODEfEJ>Q%Pwh{5>zY~E?qc!FK?gRP+X*zFV% z!=e&YM~ilFS3lgU+vq}(kFQigNH7Tg-onl zsRB0I>RU29?mJm*g>jl-p_inBCb4oQQ=iU3g6!Q|wEX%m5G@;VNX;~Q^46}&n{5WG2j>@04!u*G|G~XCB6KU(#SJNVBB=}oK zJNc+!96K`7ID@N*%ZfLaB zSo}1v-|qcGf_N}KEEG8kp_`+(tiTz>cM%z&ATk9i-8W5_7}7$;d_rPCL@pSKZ#y&B zoM6F9F=?qI7avltSs^X4^itleliF|+C!{n|5|O9mor+gIR*NcM1bND3PgqKVz9)>j ziG6jHgsjgZx-7Py{XC;?G&Zi1gL?Y50``M0fs&j-sIUM7*LIPE`lW7<8EiUF6f$J4 zye;53jiUj_zk&-;BT5 z#cG{YDy()T0^l;IfBkaJE{wo_bdb*+q{g8xZu$^+!19pI*d4&YpI!vrED*l2R{JN23yjnf!|3U^`yp#MBmV+>htc5KG&*O5DLseu2cXL^C&P_8-56} zv`La6rI#kfz`UTjkC;D$4LdQ1Nzih7IB++rtFwbiMEs(jwwcSs9|gE!oKcmQC*Ba6 z>cN|6^s-Fe8E>t@5<_75>lS*DFUpd4%eW0l^kQQ|@ZRd?m00L|fn>h#&yPNrobwvZ+ux>fW4W#X&B1>@woMBi`|vhN7W ziG~kIrJy*aOJe={OzAr6_6~euE~V?S-#0%x-DY$F&{leM8h{0rbsj@jI_3tt_ z9z%MO(l|Qcz1iUCyoERKj0;xo%@e8^9iapqR73?a5F&a^IT&o%J)cEN0sn)jhqK!U zL*@^vSK$%by`K`e3QgI+=Oxp4wht|Tdli4Izdl&gVqg90!}A$7RnCpXX1^kl)Qs!_ zBIBlP$KQsd?-i(w`E&6}!<9jr*rPj?4se`15Ef!@Pcsk*&tgAhl_Cs#1_u7yC5Or3 zKmvV9K1{wycMi$(tSXnC@vH?KPp=<{`Q5l{GfIO9-*wxkLBOL6Q3sIPS3pE(M5J9N zCMxt-w?uc~!@R01M)YX{2DT zh<*o=v~=JC=m^Dv?G>HK1p(4!hVHNwZivt)UKM2hypjX%*M;(N6XD$yprt-q)uv|g z5--Bf3wH#h2}m?m^5uK2zDhqYt|r$|dw_-mupb?nb_06+?R9hn3O)XUlV-~o6lw}q z6xXMbS>Dy`D?+o3f=?=atM)))w(r?OO#?#a86liH%4Det0V5iTecOBuF;PbW#*1Co zx~jMe;DrSUWG5Z$o;g6Cm;iiYY8LQ3jN)Kdm!1VY6A>_-x9Ru-*h9`?baRlx60=qb z1url^DKi_b8Aejp5LYh5jNcMISJtL>xAq z=ugjtrD&5qlG=30ktSfX1PMDc&t=j-^v7Go-wh#LmcU8?AOn8DnELD}+{Oa6?>^|% z93scKJ>b~$5>9VP*$$GTMkt;m?V_pKJqWEvH+94jJ~FZ@_Oei2JyAQcxNWR+f8uJtd>EG&fB zz>N8d?mT{&vNt0^kmLU2J4*Az>%p-0&OW+3<-Vu!;7h2Ctq%~qz7-Fi+h8A{#0S{h z+eC?E34bF?&=Ik`Dq{(d(32%^yx+`?ZsVc>fIkL34-5YjQ97`2bZ3q_R*@*Sje4A| z^0vpt?tw#MJ5_prJ3{$ElThoX8kUsk1QkdqgR9{7Cy<+n${=Z*?cwPFw4ZAviG~a1 z%Fsg`3zZo3Q&*_F5idyWv$--D(fF+W(b1)Ua7nV01nbG1K_PlLDRLBg1lkfR=43o6 zkn(vIQ%AC2pa)T7esbHN%9$g%;bB@vpRLs*u^0{HkKZMM3X+0wWqCJ{aW!tF36kDm zHT8JO0NX|B&CibY1t-KR;qlL0`6bkr2v{woM(7V<=&>5u0bel|?8r$yV1&IcmFnFA zQin^Vy58z%FOjmh@s0;pP=m^_Tu@V(RKD<2GS5O5p#!@|lGBr1J(8S;DGJ)|ij@F3 zb4Z54FRL|W@*{OdaMkIn9oD>+4^1=FK*d{sNx{F{;OKRBS)6PGc;a{iEv*yX-gk!QfkXcVc@eDogp=_2Pms6vZzEnVQ9mJLyYw;6*>Jn^Dz8i3W*#wa9Wn#7JQme|TvA=- zP>CVG9F?vbj<%Gm*jr&9Jc?DcDji`6TQ`BSd838(8NK?kFk6o*d68{NZQ;vE*gFbi zV1$c~43AH7k1=tKBGZ6lsFH(OPnue}*e=qk#GO0hnt;l#+z75v@S-YjJaRNe1u3D7 zb?2UP)z1*VAs~udMWV~QU6-z1eP6sodVA1LkdB+QQzrWi@IltU3nz;ca@{o^?WVg+ zzNkexEz;bsNP7kXA}uaYfBOY3@mhWR_#^l>HIeBrU!-nkeOXQ&ZEz?XM!q)v)vN4Q zvVCP|(8G`xwh6_BXcYCDK%|F6j2#TFZC}UAQlMBHO<Tq$gP}n*mLkv^crv)4<9*2;Ni>+8sd8;+#-(+I zCSP*#<2L2(sLZxwoO)S|epoDZ!IdffFZIfOp%=jpJ^FqJ4*xOkmCa$q;2hDU2hlyC zK|LyJ{fh4B`w_y_w=|TvuokL=kOoVz`RPaEJHnNq6N_q%PBpKhL|M8Vqp7DZWL9)+ zW`#6m3;shD zbE5F{u96o;SQ18KusP*+gu({`-nS8huWiQTaBK;00arzeRO*dPsseZd%+a)^H7&Ss zU{qz*K2*Q=k_|0ZG;B4eEuJ>yC7Nzr`Xoi@G3mXEA8RZHFQ1Io-$Xvd7AEccqXz?7 zPfYW6@lg{NAWqgWWyw=LITy@DS(f#-EQ{z-G5qQQZywSZf56?5zxuVWoN=Y~nlOd70MO4)BCiUwst1p; z5fRP0@~!dot23Y8b#unmm%q4EAVX%(Yo{CbVWSr3(0yoG^iU5BEwb2ywlLK*3YxHj zb8w-EZ2>D*;f<`eW!d8feiKeYsy87) zm;ov(MJKbqwcGh(^iU(8Ir}v++mq4Qv<|!Ncu>QqSJL&xXS5=mQc|7tb(}*A*jg#k z-Q&EZMECJqn5*pKxgPGBAAjFf=!P(|86-mUhzDo?j!IwSbxX*T=KJFBpUOLp*5i`K zB3ydppW^E9ZKiC3s0t~OFNjLz!YETqtK8f(oL^YQO!et=zD~-QNFw|6hDT^a%5c*g z9v+39fF@D+F3p<#fp4YRoayiP?N2ihTx8kk?h-eai@yoY%8#Q`7`)Q|Xx^h`sH6$R zMHp$&6G)Rd03muqa1?P;oQX`ZpFXM2NH>#qVp?O*s{-Td_km>=5F=-53W(@1}W4;w(yYp==vfgwi}N)_y6I zFnxY6Mb({FGCz^Tr+2+c;v-{`G=Tt`^U4+f4*d{~aax+8$D6Pkfd7h=(jtx7*PMEC z2ZoYnLLSma_uaX4scEuAW))@LzdU(eonis8eZYy_S&DQh2Z@AW@&%QA5KsahLw0;s z2rGF%I}6c%v3;cSMey-DO?;(i#-a9J#fLwFd&%6K6KL@%$uT99Li-gQ9qKc9|@nEA9m<4 zsbbM0bY;CXv@+mWq+*lXpa}$K(P(5@fR@<=h8CtLfh~ebQZXSj4|Mnl=u(;&o}@d_ zWcx2#CBhURV>oidZWH}6GVD-{zry~FVQ@lt5n?R)NFtV4!UKD|cLt#_RwEP8+F~nB zFgCeibaC!CH6ov|kP_qqPqv&YXda2F2&W=alB043e`{9&?)(iG;3KPRn5Z@TE1~#k zEVCy@zF8uC^b~!x8Um1b!%6vnGod3jfyb@!Z`>OHhd^47o{ z97Gl;w)|)F48)cZ6J6{N?s8$yi}}Jm5Mdb7cFfKE09?DPy-;IbxYYYjbVvWr4wR!N zwf^u^fx6U(VIV2*+OW6Ri!f*)6UK7a-yl4xu33uyQEahcM@wtrp7 zEsZK_qW$}NE;PY|Z~&McV7I59`>5gy;vl5_@2l)aX%;12*U8RhI^IbIFf5PApN>{q z^Y?nJ^@r==gPKbVgwAiD88LJqS`gx>Lg_@XN@9f1 z%1IDaj_WE-ciloa%k!LfwSz1yM7Ewp7nZTH^{VP5(P5pMeUlc1#9?-bSl>`{Xc5^6 z)(H5)Iw5F1kwYstzd&V^9NL~4Gpp#8oLNP=`8Hx?V@Wh&biFkrzwxt4wEBHCf&&lB z%$AB9lyHDW|NefMU4fzG_k7-_o5;CeKNt|Jc}CI*tAzhBA7+DW@CjxP!>2J*b@|mp z*Zfe(5T;U~7Pj7xm1{UdPI){mq~3CifnYh_R7hza!JQUYmIcupE>*rXT*^NYyC)NK z{R4o5GFA@%X}=Z`)eo}Y1dX#c!x54;lj^e9=t%!%H8K;JOOhg)opI(X?0O$4 z#-MquV%P;u1KaTS=uu5^WywEaVp2zqE8Kc@r6bwOPMe~T#MbaT8a(1^$E?NXl9#%6kc%Erg)G88;GygrcD&w2xj!1fs!blDC=N!cftTAEjRFJr{ZGxYE^dlFs#WPOfpkWvl0~8f?Alxb$Zw;m!uZK6H%E z3UiMZvG(*X>}xD9CP#Pa z; zfD^&Dr_aN_?fYCGK7R6>Zk}#!^*dyq(<)*@uNkPmN%JY5xZLe^!~3tIZaV^HCf~mo zW|yiCm>B=iIHdxV+@?7_bAct_1c_+!<}`bgWM_1Q&heHT9NaQ<3tX@wpR+v))A1D4 z2ZOhGEsWqAnvb4RMQti$F)E8P zgkhQ;tR8Gy<$ub@rgwFR@g$-wLd!G*3N6wy4{3Rb{rAh}+Nv zw!GMGmd=9JF=D}5`7ASY+0!KrP_oUZZE3m9=gW<9V|x~${K)HveX8YI*iuO>cCViR ztA%CQ<_z#;&rC-b+5rxg7C5Tha#3{6;TzoaGjsaHOQefp!uWCy7Hn|A;9|jzkN*Rr zzjNKfQZ|#%%#<_nPk}#r_Ca^1Gcz#Humi+_7*ylO2bkV)yA3|Tc!#_}e1N0&MEL;U zGRisd7L_>gbjsnyR0sc0ura9L9_{16$^@!db%>2|p|rTm+C|+zt^&s32VFW(@IGwx zz|5VOTP-Zr5?-P_yAFJK%5p^LS=)R{o)?cvf+Eg%u(pd8_4L_=fgM&brf@A^2 zJv#JSPl}CTEO-umSL{#KK`eD2KedZnU*3ixBgZTtUvbQW`LR}D#}={wd?&Ve)I-zN z+N;_-oQGol`&Pt+&442_6d*t) zm^gT2kAPd|j@beYIa~aioNaDrn+xWL+2)h8MWDBxEfRO(29jEugWEgxsm?91nzAB66Oy%N)r-b&OBT>Rj-uiF0+Xt%L(K+q0><+6?pU1+wl{WT2(u{o0dFC?X2wu zgQfahODiLwkcXer1PB!x`6i;x5frorUcRxVyt(yW!D&vqm4oDt+eLDx8pP8BV}FMM zYlXQD`l7~LwCYEkn4;XF5H1L^p%c?-cDkc9UyJa3s88${V#lMWj?cq32R%tzKK^y5 z`MBLnoRYI8DFD02g`+<|){AdA(;B~7sTuW-vmA5^bGv?)d7ZLM^#oCyir*lY-Z*=l zS3L`JOr(0gdbV4wovRJ*GACXul0P;nGbiY01>{d1R!qEbAKB`?TW+!}2OFmEDM4?V=PkH3)ER#Dy^U zqL_IIYpD)VjvfR1Fq_?dseVH;{o;LyArkX=8o})JUq|)&YTudN8}pz9^NfWoRnf%U zw(Kj12`DPyhkoScaGYY?R_nZZ9x2+1p`%Xjzofns3!87HJKB z5#y7iTPLCoNu8FSXgJTy&!yW5%ek6QStzVWvBZTt-TEot7*qnZbLU=>EG9k5}5;|RTJ-iQ3S3F@WWkg0&h^v=1&@$smiiOoqM z)Mlyd;ieZ9d5a)`jc7J)r?gcf#Vy_Y(iQQ!4uO=GZai5-H(19PfM+#=$&+orQo4ji zZ+z4C-Tr@Te`H-N*9Iw(Rn?$Mhhe3(m?=8L zSR=~d-q~6LNQ^eORg7izU5E()nv59BpoO8vf2Q|JIql8ZImO<)aJB87kL ztlXTcbw%r^Vvdb+km>N3;@obp>)+W`(-#e|#cfSr#ijC2)NFTKQzbX3QmmwYh33es zWe5-_DGUH(QzPe;yF0((AwBw`t4Auu6%FC&6b@e#;e)Y;z;6z zD&3LRNZ5Ba)Gp7V-eDrOP*9!@ev)wylb|UQ&48O`TYg|%qK*txO4N1Ql&BL>qQo6c zVv+*QSvw3%%vH~rNJS(V!9j~4Hm3Cds#0#94!}AkwswEH|iiQjqSQ589C-zqW zAo=FFr1-)WAQ&as=_vSV=s4Ek>6R=SWCbsRLat*U4V$2mDIHB8;A^hp+lCU}v5F0- zMWCy-<7hd-*f^?X1-nQwD;S>0ffj?YqFyr5!-fh`U|r3v%^8m&q3K63aO@7k!JKd% zL}vk99-ul6hR1V4vi0ED1)6ah&$`YQSj%B~unP0E)E6nt&tSxYg?9SM{aL1FT)vLo zXcuLPBp9*%MlXS9t^tWZt=LWRKq}2VcNfiIuF}lrM>F&AQ^jZ_i?l1UsO2k)5TI%x zc9G|E>ngxS1F-);Tga6>;NBn|Jmffi6QrsBJSs!6O|imIBY(!zLR%vrx$TnG2P-@e zKbbbfcOVIZbkqeAjQVPQAqAx?6}zey4V)T0!)9RP)dhid!laLV#}WPjV&kQA+;Ypy zK`@4x`?JAMa_l!dB04$exZOAaxy~2y%Hy=o(Y!(QYxmA^KhSqb3b^_gB`gLXbMqtj zv4{?DVrX3O?uOpx0}36UCEmH(1q@=Lqhk>+_kZg-A3;DN!{L9#VLh>WV$=c~2ytO^ zLeQ-FV9LQ@mTRJ>~9+c>k?1-k%lKU8BF<%=HV)UhT4d4{)cyM8!L|$|y#F{N4eJTF zwXdzx+xmG4miRuo4T>T$cQf1~!pIF>&o|Oimqeq9O2aGP-FFDcZRjFGtmUGpIemXd(AlZ&3+QgfhZlJ)n z*Krk2ZUpVLm77^oU za!gT`%o4bywJisOgBdMsZod%%u@XN=0Egh;>lW6qn1$4{;J+FFDNEklbe9W2y2%9~ zK|5Zgufy(t{gkb1)1g|M*1k<*2jx__t#23aLx{ynSfb}=CD2s6RwZngoWAq>TAf?V z+ZA9x6`hB|vHr(t!>}M&3A>n-#-S+D($jvMCi?UQ@syiAdY%?%;3M!Ly~hS0N#C$l zCy1{QpNOVcMKWLlV7e9Ps|9eM)7wqu7>syiIfwZ6-^3UsIDiowOT>y1+ot0cIJz=j zSV;s-IDr|1z*Mgw__&rOYd;BL-HDTGRUf{Cq(};dIAERX0ZYtNJjo5XOP!C|A5d+n zfkG&hP!2>CQG}+Eq@Zd_QVmuJp-`NO(+TX&*QqXQcbSo|vdbFz`Wpshr(Zhs6|DVy zBceudM_f!D-17;z!&l%4TVlU$Y@pyXSU%=ZRkw+bvBfUYjbfa?sFZ|KEp|QCN1p5= zAV!a`bRh;|653hyiW z|EiM#m0mmnp@X}JlwmgRDlHb|5p zr9C#BVP&_V!}bhI)Ry0@_zKoGHy-L4hV5$w3|DzUOVRE)7tn`AP1x7{q^n5dSdF84 z^^`=FuY$mVp@p0U#2G+=)L=O}f=Siw0k#j0PQwZ5Zl%msVhTT&_$two_s*Or5b1}ic2x>Tl}HO?M6{*W8yWTuh@2;t;szn5s5A7 zi7qssvT->9aVHB9LBgOOF9uo&{mYR>CI|G{uEMl9+0|r%hRv=j1C6AE^u303Fn~uq zrrS+AnvnA0Q=Ct*g$8$-G_K!gfL?Z1U2keG2ZqNxUoWe&Iwg#{Zeeo;POERtM*baw$4cdPp(xkF}sQjWwAv4P0r*=7KcW!q^^P zJ-8MODx9rGQY&u$Q`zkyNo zRi$j$_ZBxrOT3_KMTPuusaDA@Th-l8!8|gV&@mdu*%Xo6@!7%Ww8sSxs zYI3MNoD=h9P?z+pL#bJmPG^pVj86`>h_hjLt6oOXxQ)Rv!@O_fz-VvJ%tPM<#*NMg zte5eo`YD^OQd`3YHaCr;nN1q;=`w3xZs7+q0MYk&JC7jkK|P1V6IgS1Th-S z@8XhrYK98z&8yRSbjg=z3 zY(1)!D=xKMF$o0LHEJP=941>6=4r9H-8?g$rw@l**(5#IBsS<_MPn>vb=3${-yUI^ zH1;@GDV*U%c>J?WzpQ+*oGDr}D(R~DO94!W-}UreE%mUZv6=_m4D`LDCA471g=>NW zz7U1Q1!SrV_N-i@rFfFemgm6Azzr}Qm`i5@6Zgx5`~8D^o?++*{Du8LT)`GB&JD3P|Vy;u|RP2Gl3l?5KhE`mM0DlOP)C7;jdc)>dT2s1}6T0L3mU= z_fAKdNeIvb<343FjE*+{SgfuGlWY)%`%YIhM$@ymNUox$i#toR!r|gOs9({v30JZ zI3_x-5QNd_a?22w8!!NFTUrqSIJ-v>ozG|=h-vO+ z^k(Q~9D4Z)zX{~J{^ZNH?~-@UnOoy&yo-}ED^C1UdQZaJlYblbGQxIfr_b-JJ2xghhJ#D@W*ZC=X`V+ za#Rj4qzYG&Iu3$L5(^>nGkxwj)Jj=zRV>0uy~joKS}78XZDC8E@Tvxls~%QL5ugTD z0@~%gYC!v$Djz{>axj!|+EremGC#htzyWnS)OjQG#>1*ZUB<$ZRREW`wyo5pI=6@Q z;=XwS1wtfG$+b%$*~UoV?blwp#Z4rM2}DS3i&Z|nQx8O9O_aNcH`969SH&t$5H-|ax4$Dn9a#2u;C39n*#gi1n?5D zqA=qYuifQ~1{G$#oKO5NTfF!~sa;K-125^^ zf_tP*rgMbLq`-`T0DFLLL76bQqQz=%5&NE9O~1tpmE|j-Ik58u8?I1`E@1`$tYAx} zgbpICjV--YctZBRE}YLOE^5S-U=F3QvkudD5Oq2U8U1H=Jp5W&uqd4K#%t%912%jq}#kSjaOgyIMc0 zH&MaX3=Yl1F=3`m;FmCy!RC3rfE6k3aA5}ddHE;yoSC_G3;*1o3qM`|vBamDxmo=9 zN6SBC#axc3XwvCbzn%7$ZON|jKT(vZund99bew?yaB|*pl2gAZ>^+aTkc1$qmPk#2 zL`tOM1*w0K!8|VaJTjwc4upXJXD|AJ;-i^$S zd^pRbhWG9_ufh_T;^)dCKToIF-?`H5uVO9Ihh$k=^ek z=}$pebG>H)K}+bCXifkLoHP3l6y4&$^>5Tkkp-n^tdT;8xX2vstV;^=`A5}Ik& zf8P(lX9BkXa6AeJGx(JVILxTmf{Op(Ee5j6CL(Cy-f}n-dQWW2>o3s+;c%^L;{vHB zpakDz1xEKft)?iaNf1mMbHihjw7MitjNI)x>}m9b5G`}wTf9-Xah2XS#bJL96i-~W z(R2=9l5(uS9vesLLSq@2B(}B9wS~^?U8OAv#E||Y6LA99U7yR&cA~uqMT-7vo%5N2 z8+e-nVLxFLc2pZWY!GZfXrO|cM>o2fG^9Lu7HOji8R{!q#=0s2Vg z6y{TxyN8D!>>r+Wi+gzAM*r|+xu0*oFxS6~0zQyxF!jP*w^<7%n={@31;!&gFH~nL zaE;4N&uCk;yyRGR3RUQfuj5&zWsdlRllZg=VXZ%Pxd;+F#u6LhGL$s6LD-^NIv-_m zjcRSIs*&DF7JSD^n=mhkw3(r(IWBR|PYt47XA#~WS&`R1H7 z0L@AP4ywy!xsFB`oY=ESPRO_tQ<+(Vf>GvwL2=g)9lU=1`V*o4jLQo@dCnr}GBoBm z>L9@ZPKgRhPcYfU8`knGj0oQN;02yS546m$97y!a&>0kZC`RoPX;7^bN zMs$1+XtzqU+L7KaKa4-bce&K5WyPzbXoi<3ImTf5lN3Y3!2Bd6mbM7jR4$B zbMxc2&^r1X5hi=cbu?Cdlmkb0TSdCtQNS5Cj}Ap?tc-(uQCcMm6{WFyP6YOsKv>W= zMC1ekDJJWcjFv=u;TG%`;xF4b4)CQ-)&)h}VL^o-ypvv#gNy)I1AuqK9~e)LM^}!= zZsB}%aXto8`v5(ReBM&jxY`zHNw=#0Um<`C3mLr)-QG-Jv>D!oC{i^_vO4nFXnFql+87bBhoH+J~E#rrWBSisxDzFRnQZmZ-}Q0 zw7JFltrRX8@U2E@y{OrXf*&iK+^(3;(-Fm8$#e?H1S{N%U4%^+YWDcAAYz;lUEvV0 z$`Zi@=AIfQH?#v-oT;#q9VC%!jo+3%5XV7jMM?nUC&&7r4TdJ&&cP!Zhy{vxS?d|w zn}16_g-?a>%v})!*n* zqU)IT5bh{xU;YhPjf2^?e#%y+j>yakDH;y=#BQ4npY1XJubKQ_C|3~btPhu$WP8uU zW6{Wk;tTHW@T7o(*u_O&8c+({5V_b25zmn@YMCPuF$Os#r8Dtum?{GnEZ*yh;or0s z%$-Nrgw<%=MdT`Ha(qBKqsVvF#m=xhoK7^eaSn8L3IFZZIF zH3D&0V~&VRQ3_6EOBP_PA_?Q)kQ0R{KP^C zvDW%uYoN&jmvEZE10!mffaiI*ftPv>a)e=8kE|hyGOnFm6&t6V9GSL+xy}}91aHN zs8cJ^q9YsGe>@*IEgVPW;0|?lOn&vRgE5#Zw_BOOzPm)A)FttvKae^su9Qes$V$Ib zR(v6q@I7IQ*onK<=LC1fBW>IjpN=GFSW~#hN>Fs-7@aQB))*3Rtl%}P^bzPx!lnPO zRSkf%B;#HjhNzkmo5T|P_mC!L5++y@{x^D*q1n@SJ?#Q6Auws)P)+C!dQTBZjUC6p zoCO>8o9|?Z?*}0>tL{f)y*iK#149-PVMmIz(-$0F6oT1BG#S&ak;deltDQ7o*&QK> z?LbVyQZD=$<&`WrrOF-SkP0ncyB-6IjqndV+0Lj`8)yRD=ZSaxBmxD z0Z9O>34>&~d}i0;6x{rEIECoritJEfF!;_hhR(mUusS-Q@m> zUrzAj+ePpDRbpRH%y~g6KeRZtdQC;8(#@|-;-1?-1iimp~rMbnujU%b!!-fQl zcJ-#Ade}f%E&g$@;^*u2rlA(11W}Eo!mboZ5jm9;aNKef;}r*kM{>z34B=E((1AEh zX&vTcQk4U6;n_j3urb~iPyZ@X0P7cF-n>@`7^O=Pb0h#!8w`I%0a#Non=#LAt02I* z?82hm^?k?Y$YNK}^iga@w-s_ZkBL|su~r0$U@?W+3hxk<&gnX(yKoj$o+!yQWf69B zFhArQ4<1CwQE|BCGpJ$^IqkO7!~$I1;OQ7d$HJx2ZU29?cjQjb2bEo`e7sS7HZs2v{E5+!8(fDIq2fWVP>u zvS<$tOP45Q#=7CCD~L4~@%N+_Pg9D(;85IWVy{h+du83$EdMPiu7rZi?3iuu{)=*7 z^W#GbIRMb`*DcHxs}@$xtm^RoNcfJ|EzEWn^k)Y0EnfLUyuz>6;;T9PRbQ?%SpO${ zG_OB>*wkO%f{tlizyA)HjFE+4UVb#k2gwsyKiYqO*8JirHbIgAdK~XR-!})J-NA#I zfq7nD?hVWf@=kYPz9(%FM)uHIY||N-SL6w#^=IXY`n&f5$uqCKZ zIwTJDwcf;sd#MbBxp*P$j@wwZIq5<^Thz}%7wEz-#P+CuYeoZF7dAc?h#J`N28w@L zmz{k<0|=mfnnP;7^v-?rbHwaUzN%h)zWcM~-|ljF{F8tqYzQq44Y0rYTCbqcB9fZ| zVX6M5dP->}o6A+Q8GNy0cVY7U$+j)bf+2RwKBDaCv9L6;epij&xf_YxiFRK(!(JBJ z(BG!ln3~btpTGCCp+9%mY12B6`$fBPZ#ZdU9f=d-YmNgR>KA4h%K?28*3FNS6Xbv z3R63ONgM!;8i?YG8dbSm0@<$llmOE2dHtav-J&FZ01iW&yDB$IGBCIr7fSkK0YZbKw(G5EhMHKLGIAb3RN^Ud}i>G$zEJhX*mb~j^t z2nDn%KMq!wkBfga?_uDwZE>e-!3d&^4@Y-tKu|u~Tn?U|)P0P%tjd-Wk@a>N@!F}J z4cv?irqrJSW3h&ftHlrM+bdg|$R)tCB;Kd-Tm*v)^18swI}-OJ^(h8hQ5a=H-zfGa z)FgJ`PdmsvZn$!)n3>6zHxa9xY{NMYq7T~-NHM%aK2Dco8yx2v85QjVU}=pTF1|ywM|VvSwwS8%!Z5Xmv)(Rl=<;}jtsSi%Ha zPZ1jxR&c>q{1+bL30faT-^3+}1s^y(kB0Ya$<=*>!8MfcoiHId4vxiSi!#qUa?d*? zO_9lOfwm9535z-&nCkWu%8LZsf-O0IUcW9=kvx6lDU(x5Wd%i&ys2jc^HS+U4%j9h zCazhpaHMo?zIm9Wg@L9`7mR-NBP%GB=F}(t_2_lIxt>7^qIp3Og`uZd%&|!w^HjFZ zY|9TcyL}8}K!L%>Cy=hp&->^%vmc)aqJz>N0P2mHjC`qs$TcQGA&CVEF?(m1Jn^r2 zD_zsXpcB{?^6F!~fSvn+RYFqXZOHg2H_+PkCD6puSvDq}4S=m@wgT9};HVj-S9#DS z_V@u`UxF+B#+q+pzUOFVT!55@n5V(L`Du)@?Gh<#ml13LQ`m){ ze_|*yemx8vLaxEU;SH#rcoQ~-7v1X}=G#4h78wEi$E)xPZ=#lk`PKMM^;JBWPb z^RGX4{;h&Z_zO1<(0XjHIkRhCe6eHh?3$+@Mop=i3}P!`hfNyKnSK5NMj@cc0Swya z!_@~6CG8Qw->|>ST`)ihMDmuS@1p)cHF#+BW7HjjAe@1KV2$#22|-gPg*S(0LCT!4 z#whj?wDTiiAIR>&$or8ZM%~Ffppc4?h0i8qup5q(vb5?$+wimM@2DM*SAA%G{ni;zi0g4wn0BUuuo>q9G+$W1*n8wCor)X;H+#27gGwfFzFt#R41Kpz&n3_ z#Noe!^GCQDuQ(0!*Fz{fJ}02p9bdv32lvRPly3|#(?0Nn5X(|^ZDKMFqjQTW;Z!BON-9Ywao@jAa9*mU3#j=NA52#m|9 z3KVfmRj|?}SYxuKnJ_j!`my;r8e9Iq-7U&uW_!VDZg;$-x*C&lDPi`f|OAWsP6a$tKNAtrFZ*}>8MqM#hZ zJ(l4M-#Gx_Iwveb=K>k&+>5h;d4*5xZ@BP|Jew~&-D1A%&h&dZ>SGOQMFYgRl#B?S z2|{N8>|Zl_T%d~W;C9pQi@$Y$z}N6V@IoGPbHI9m7;IOGW4UPCll{9z z&y`-?1h&5)Qo8a(pme2By3$i>JOJ&KNlWke)BP>8m2n*SehgM;)f`Ce*fBl? z{Q`I}5O*&3J;{f?xey4c~F8fuwo>j ztHJ{%NV=n_C7+=5P0kbQBi1@*1s;MMe1Wfksd8ONE`^-IavDtPmIW2SXud(81!+J| ze;U;cZ0jtL{r{)#ZJ_MBt~$^A@m{@G_3Gp4!?NsBI`=&skQ=*E_hd}k@(^7mu^pSl znQ0cQr`N32z|5>+Rk>M6F(R|tvC47b6hVLp3RKb}R2)G>C=o#fQG$|G;!2Q-5=5g8 zf>c0(ic^px6dg5F-6-+={`>6v?tS|3H|d!uuD9>KXYaGmKKtyw&pzj#OMeHqkqweW znTq$a318Z@uS0SYAUKcmq3*TxFww)ypX%mDJ@r`JJWq+NyEo`@t<`0`)k0nIga&YO zY}F?Je+Io62bF7@)sq4| zu(J{_G-SoM{1Ps96d6H=InH12_)Fdy~R zODOGrU`E%W-1sGCs%zSL17&LH?|3EL)!sgg`c>Nd|M5m@4q9pCwOWQ5FTCWtTKNau#o_%mX0w3@EK!P$&5}z)5hE(e zT1cmrjhg%CidSyb-&$=@03eg`jMk)E*IG|K8>LsY+N0DnR%s%GeyD~wN^MFph^Yx1 zTq#0cCMc9yrosTDQ1n$prs?4 zQ;@i^8Iv-4t^5mr7~+_@N)Hviwl<8kwPz3ez~_*OKkR8OI!7X87K#z#X1*28f8vV>Cz}f z>4_|KViwv)tZc7oeq|s`HOh(acy3ghw{2n@Va6%cwJ*SG(ceKb#+yGU0wCO zE^^n**(B4GM1_!wO7qN;(a5xrgmkpeuvnSUMinwi^a>T`B@`-46$^NQR8*=R zOjQ;Pm});l>uQ}BWZvr+3l(}2|CV)LOmJ`7Cr|3#sUe)#ZTw0vO&@Qg%Nbgszpa4l zp%sA0cUu8X)Qy}Wd0?nPVz&)1gubTmt~6TcKv(pdEOn?XW-!*g*ZN!5Lu(ZpXP5Uo zX*BP7i5SDv*W)B9i$3pr?0sEls7q~%(58p(z0A2mvUv1zy|8#vG%+h{M$Ltj<*F*0 zvWeYDO)&=nXBvb5J)3f^hG2G|MO%7f{A%5$Tmm*cZa=9BS<%$gdX2#l`r#QPjjM|H z@;=A&RQlZ9o$KON!iOuy_Z5BaM#B5t?7NL@i>Rq-q8Qx0$m{Q#`QsjWWg0)-0Y#(( zAtFT)!cc1cbz&YYi{59`yl8he)2+XO19`&a)XjpmrQrV>maNxC6;_B;Xf^uOvt+$O zPix6~rM$gn(+e+F;YDC+o{N(M1)k*E7q03}fm4)^r<2{$o1%n4s@Y?2`J1b4%)jIO?57^b?u_gBTsy03vz8Sja>8Au)0r)g z=4%mO<>8oP?T2Vgbhn6So^&=qbxS@YHMX@#SSWBe6t{@O8BQCL$hNf8K^t4@Sj-I$vsIap@KqU8~kxxLxm0O2yLsVoKb02`(x<|uhCofs@0>2)IWfzXDw2fl+k z7L8!72+=X_CKFCtVa2>2dVmDS{k={Yp#Lh&b!+#HG-0k%F^5L5AbO|u0C0OEkfg-c z4iiyFwjk8j`e7NG8+efJo4_psH1_Nx6;;+WaNmehB9%(KPplH)zDktd3gR1(?6i>T z9cRKd*;x*(QmB>bJy27uX0}=5tkAmnHguSmNG!?MHZ8d>kFz$8`T>qnYu`EE)qBjN zYz^mTSc2+|pmPIOc7%+#T!U6>u`hiDm|d@Qt6_Yi_}6GfKCDt-s`d5qw~ZC zxds(x((a>)yX=o4qhmU%3@EloMB1o0lT*3#LT3jHCAs>qQ5dbIQ5>O@Bo)IhlYox8 zY^KUCIx#ASqwc2d$@We{D?>h(%bU9FZNDMbHWvnx8I^tAF`PI{f7+O^QE04v>ARw1 zo#I?_Tcqobsf0Y_&_qVLT6g2*-6IW}g1M^a``;+*G^SKLLX&~gY13O31ZlPw5@ZS@ z?ism0v*C(R)E-tHCnsKSH?yvh@&?t{uxFQDN@F?Z< zf>@$yxrPt>9b^|J7fzeDTa2jD$vl1S9!@K^!DXUnpYN?votisnvU)=6h@=VY*&q_= z$NGs(p--hriRC1n(I5eLnAk+w{qme!)$0Ak!qU-3ad>i=`I?dYWU?(@o_D= zFi3!@ydd&T^FeoOv)4~K;TvL+Zpg1&uhwW{4O z4JA=1BBq|~s3?%Wz9s*NBk{QGp-mDytC^G8MzlbQ$O5A>&8KB197OS4gtN(oGqS-% zfhxJ=h>X8l`);CkZ>Bf8Y^@mstCFqI&!x(ZMU{+DiEyaw1nG@QUt-7a;M3W&s_w`e z4`k_HZVzEs{Q((y9*p_}=Ib^A0s}A3gX?-2wE}}&pl*6E4)yiokoTf3VOYD8=hm(b zMZ3l>Ygca3`M0KJ49IxTq*Qm`8-uQ1y_L2z%~}~hw^p``R*qiQO3gsNHEn#lc9m8l zdT#9+E7~=3wSmyRes?^xJIeTZ?!31n{7ylW9vQVJI>f2yFP8_5d@WHjL(FDs9iEvRB5oT{KkdsPdO3L*!wys3qq zRqIBqQTTlOj)7KOhGlYF3N2)U+xKC`*>iq1N#sXP*KCvN`)|m<@q2D@uVNmNKocJF z7{kprGr2T=_Fyxc+C~^*KIKF#guzweQHk5wH%hrO;E-hCQF0;f3=dej;@Td7CyRpg zwI-s|s|jY2A9-;_Mn+ad?R8wEYJq(~R={ryU1U|f#pjFm9dOeynD9g+OLKg2uQUgqTSo#aD zIvX*81)6q`N(YOwt!$W(xYI6nk7i@is4+xuJJhmG9!@DHL(jwo|9q>d)X`$IS`nLR zu{Pe<O%8I2Yli_LVC*lb`@p=z9sOcDaNh>ayM?S>d47{^U+CIo?~jYZ~U zNRR3m`5m@QL=-|6O~uw5xXmnrQ8Yl8=F-Q;o(Gg>gTKzEY%EL%$BZ&J@~G9}oP%uR zWQSldIqbw@uK{Y7v|*N!#0x_jL*Di94>z?=-8L*s zjL56k#k~FA6iVK_kFClCNSfMdZ)a7R=*EJ0pHlU-sJ<5(Fd)^smNG%RmW^mGCe_lM zG=zwLB^y|u(0X|BSiLyWWwTlxd85$ck|~~~ujZQw7pPb=W_1CiN zY(_=GLKy^Fpjl8Y8xB*X!P_H3&8)2zXvPQV4Dcbw3-2?*4xJ#V-5KIG^EHg2MzvVe z;2yp;$}GUAjNSzH0G~)u!AA$Q7M zrw}0w7wzw4S^(+*tq5<#nrZJPXfj*{a*e66-wo)kR4aO=%^tYiW}Bm^+HCr2>PT4s zTf4sJ`KaM|I&l+zxAp7Iq)w_zuk2!zWj5MqGCvr%VpL!LtH(`kbX7KocllX2N^6{P z(}=WsB=1c3Gt<-C$gI7ENS(^^#3FBQ^*b@+bhS5KYI*y6KE)$~U zlckv|gfTkg?#T)mH46vH3|KlPf+9M{jGag@qCkW;w-Hdiq(20}D}tms0#dNkTb6V!)!k0o(1xYbLlPF~hbOX9grxI>hq! zh?etxw;oG&3@gO&f5AOVP-PMd)d|V02=gfknOX03TrkUGgC%f%O$=}=c7{rnONl0_ zygt$Xt6HbZJpq=uCrgR+#Gt&WIVgnK{#%WFNkbV3+?a*pv8Q}lHOmI}bjS=gTJKGQ zu_z{R9XuXkK$O>Tj3R3zyl*m|kbu{H^%`is@$L7OG|~Ou@Ya1qdQ2;H$FlgJNAd2b zqDOW&9-Y=jVi%*~BDIU_9-T%K+msTb9@`s&1}I{Wh}iRiNed1l6jE86Zp|s;tQ!-@ z9?iIpM2FfQ%^K6t%9w72&0V9~%ELaUyDQ#4K&7L<7=7KF;3B&Fv;OZ?zN^#jzwz7D@8_%OW7MiD9aE=MVdG}jRu>@ zXahyJUOd2Z6b}*!OSEl;d-(_huMUgO&kX9t^MBQEiE3ni2JC5G1~P6KS;0-mp+?SGZ2FdJ61~gy(pEk28NE)CyuGMWuL`_x!`+lj*MHx5Z0t*|oVBO#A&UvKU zrdX{8aQpE__+4zYKHrE(eBoN0V!X^=Ypis}6!HfF7xTD;w0YLDF~mkI!e;g{$F`A_ zhBJn`n$4-B3Gw9bxW|Im1Vf(zPB;iYj>)I?gYawHwLEW)zzIW(%n6ysCL6TwSBIFx z(cCJJuwJSlOYiRrpMj;T!Qgk4F({vSIg9CgMQ9ma24<*DKPDNYbJYipjBlZ0tCV)Y z(DTRgLKq5Mgr3+3aTEk-B4R67HT%(2$3(#Qh}boU2>2mOAB>OOlukFm-4F4DA%wN< z_Kqf0!t_tKZtA9^Nu!uHOF&GUiO&(D*^p6?37Bh|HjjiiB$?-6=omL6#k6^FBBNZb zJIb_~DGS&X(6pJTU#D$k)naG1^eT@L7=PK@t)Xm=538cXe{{&oRiypxSc?42TXx=@ zMBl9y?tIZ{wGj zQ9fGle{`nuXwhNEntimyI_R)-yZUI!?Q*5qQh%{iZ!L?Rcxy>*-eIS9V5TfKJyRCD z)GPKc)b?dBwiS5Ei%F{IDkx_hcFHGyGEh^od50y{BMwKc?-AwMw}oOE@Ii-F%Z$T9 zpK@5}>pk=_p)b8{XMQO}-QTb4#RH)|JAh9e2&A_IpKw^!%sZ@VjySAp4m+%B4mljP zjO>Y@4x~hO-eHkF;;_gbc35N&IV`dV92VJWhl|GlOr`M-TjL!T`jo>$U+alY_A5dPQVm}{h*`Z<%ZwEf*u*7`AVO25ju&OxX zu&Oxhu=n2Lp_1$=heh^;!=@Ati|i4HMfR}6B74YTZ|vMVO8Lw>ER=%|3uVUPsCADT zd*BxWifW&BShZiOkh)kQwOS#y+)rw~LTar-YQb%3^>a4@g)$%WvTrD{) zuFg3uQfC|%sYQoH>XgH-(WhqvDWNYoEcBBO3;npmLO<%Ti}c7lOOYOSSSW`a7RmvK zo%w_B3i`91M>Fp#YoBshwXau5tyM^^^hntNIQy=h`AQf7<`||A2Xf-z(tilBIJoGr zw|V7o;6QD@;3%r~dAiOgZ4A9dK#=ignTA8}adhaEQY zIV|)84mOzIod56WxS%daP8J1CN!Wn|4^FE>%cf ztdLsmkuqbq>ZF9S?C7d}$zj!g&S7VG@x3L(r`}sKe8OR&%sX7To+ANehaMdXDBFRL zI4o%&c37Moa#)-ka9Cug9dO-`u}8`*_@Q47q+X#K ze>IR2x6=-b+e?)yE>@~otyHn>u((}v*tPVcSE0tPI$0CD!{TtsVWFRM*c-d_zOu3B z-d8sEjKdGfI&AHA*xKuG(ca%KQDz+$%0Y*%y$(CdrQa?^bg_c6 zT0vRvp;&*N`JGadiw=wODTkf%(GQiB=RQ=T%sMQTgAO~&)X5TMy@IkaL8h3v&1S(D_&O0iXkRr|8TUi-@Lh8k7-1&3Apd52Z|S%+2oX@^z&g2N(v z(qSLr^QU&^>#=3AY{GT$<7G874y&3ehiw>qER<0-YYwZL6^B*L1&7^OE<3u4Ejg@W z=N$H8Cl`WC?>`ZIxNO!92Ti5hec|=N6MtXRw=ep zDR#kOSIRS=ER}Nclc7dYKIO0|pK#dQa`^GG*dd2i?101G0T&+cIjNBCSPV6(=!L~V zqL9v~N{YuFR=NC+8gY9y$Nn zvLR<3R_&)97W#t2LO;Z>eacBQ9khPw0SST|N3uVe-N4fZip;LvjT0vQ^pe*&HocWJs zEsGATmQxO^mJ<%Ul#l;WKvBDnI;70xj;%NmntY1dnh(k zE_tyX6uao~cHmWq#mTb6;$+ETkv-?II633650$h3sjU69!z#AmuopY>`LftyhgIy5 z!>&CmpWm4;1g~T>ow+~RsW(8=S5S1;VKv~O!)m~c!!}$TRs+`02V6B^&0$r!;;^T~ z4*zKorK&jer-4gValm0!G3~IbxI`7oajS}p4y%e)hgHS0!-YzD6+&5cQbJjFSSU*l zJIa|al(j56ER<6Y3+05vg-R`jhL}n%mFRO03w_pMp&xYEYn=IFsZvv44Cq2xub`~; zP%M3O`indBGnM@1%Ab`aF8o%yOxC@25CL^wq6D6<#JwjFd> zjLtYLlqrV`FLR+3&BY4(Y6X3{g1*#4H;;MlOJ$8`99E5s4y(pf4!b=&{TBgc2agsU z-VS`yVRh1Rhou%r9TwR+hedYQVILm{{&Hu2E=b%0;Kk+8Fp)mB9I6!Q6Ap{?yu%`W z#9@&>?68l}LthT)Dt5qO6`OY0rN8#&vcpy?C>JUy=X)p?YArljQa9l&QC-VVIzuq1ZMVM*+S!{TJ# zVR3TAVHd@TzbZvB|5s%jk2oxp!wwfyiN6jg;^gpO2NZE~$YF7Ez+rJR?XWnxR3Uq@ zN7fp9_^V}O4}G<4>;Z>W#k9k!;!>rGi&#+PB<)-d54RB|C_Sd0f$v=+F>uYQYm(!QtW)Mm_7f{t%WEZ*OBM8U4y(p94y(pR zhrPyAe^(0m#NUv1x}@>{5TR3zcH$E5*(_?9u9(uLlOUi?^=_ z$~K4`wn5~u+A{C3G3KzF=J|`ID2`k#C3)Ck6TZVjKj5%)a_GO5oE-QsB`4Dki<3(g zQWqKu$>{Ef%4&c)cZwFp*SnWOOu&Oxju&Oxf zu&S7I*j44^)EySk3jMglLO<%T(B~W$`mDo+WqCNDtJt)|Dt4(?EUa7kBQd<@uxea! zST$a7SftK7EK+A3_8QN;rL1w$VHG>&u>0DDNA9p)COdd^@{xd|+K)S|+K)P{+UFcr z?XwPx>_LZJTyxW^ryTY%yIOg)+dofX7^G8Bisi0iwp_pEu ze_Nm|DV}{>$=GR!g}&ghYCP$%*LeJ=0=jBE`cna2D02=AW!7PD%hZ9g*m|YdTCbQ% zY3V>o`CJ9%jKiY5=&&<$;-^dg=N%R^M;sQ)VTT>%;LnsOGY$)7%3-0b_fUd=@kf%_ zY6X3{g1%HiKj*O5c=l(@8c#cHLUvd+o^;qz<`0&lIC8L*-eHG@a>!vvnf|%5mP-|s zixrgBev}J8SJrag(Z$$VhgHjIhrKJ0zrAGUsKY8Y=dc^~!#^J=Zx^3GA5bK{0}e}h zrX5y|mnx(#_LG`ERFb+>A$74rYPCXY*wk4p~a##_jc33qoIP7g+d}rC_Q|~O>e8OR&%scET zhu>AA9C}xYa=>AsOgrrDTCEgYt`uA9FShU>N@^z^7PaFJdp93BTnhQ{;eethA97et zKH#u1;IK$dJ1kO{dZfbQS*6%&rP#8=-uCnFDcgSbJ!RWZJFHq399AtS9d`7S zkCo`hA1l$1IxO@#hlM`tu5RkPr*syXSfx9!xg1#zg@iC+s< zsMx&2-he~zFQsXGJn)zq0Bk#VwpKsie>6pDVFtKF^iZkcrh_^ z-iwKuvlW!n4j0V)MunN*s4(NOG2^fYzEdBlFwlEso@Vs}f!cN|UG`!U?2^MKC5KH) z6;g{1J7bH-LoGr%<*-mrI4s8I9d?wt-z-sP9Tv(#hlMiZu%lf1&9eCyD=4cKl;s|Z z4eT?&RZ3~mVNpKiuv0$z!IJXa2TPP$hlO&`VYjLWPn6P|IT27Ky(xz!iuDSqwF;?~ z9;sk`oRpe>-qBU#S%afEib;x0nI^eKKO*>o&yz*$Z_sDwl^zW9ka~d34TUr*`t=CAH%pFR2}MSk&emc9eq)p_s%wU6yqNeoQ$bmDxEPY3DqDKQVNpKpu(x#P(`8Gi92VvE z3d&j!#cai@7n2=ZuAnbf(9b!n8qYZFHJ<*xvc?66RpUvAO)?HU%8}D0%3+6va>!w! z9B|lCrk*Gzwq8M5tDvm(P;8`}eWH}uX@^C5!C@Edk>4+i9d=m74ms?_)+@!~SN|afLg>ukgPqEE@HlXa#qt6DE?Z7h*n;UXigKoV- zcCA8orAO9Oam~pJWyR6e7Z)5BC+8h5di--G^9!FVnLp{UP>wt7HvH%x1Qanj_Xhz* zHO@M$8V@=w^cja8edcUHu{JtvZLFZLRnS-Z(O1uwwJ%rDmmF5@=Nwk;XB_t0&-`Io z`=Z0D{glH(KjE;@=N)#P5kfJfq>zp={ z?q&-_)ZW7Dr5t9>ISlQ6_G)H_N1P>*G{0M~)^-NK$oMh@7)d_=w*yKvr)}U94s+f? ze#BwDhkWFlL$@WHd22V)n~Djwq+4~m0Wa_C#ZL~l(FqAUSF8PG(&bdYZT29KzSmyn zrVxjnWE{jqi7qGX#`#tik)ffAX0W|8>C+0 z<=XH_FI~f9iKgMz+VJ#hciXLdIr1g+cT6>L7O9$)^H2oos1UsvIvieH zZ*wduSGD#cCzK#9{YG|SoU|URagIW%Ov6&9dbqCLBrVc$1+GQv5owXm??Lv~IJ$+> zXE}Src*%E7w!dMAL`X^EpfvEq{roT-w!dj7@Z0q#U&%MFi!wVxnJ2%A9^^YFC>L&g z_yhG&3Ibn<_!PDTQ_FQ~Yj{O|m?IF3+&|b;-p571I5r63>H{5mtJfa?-8?VX7G&*J z?{*fRJp3~Q_9UG4&}|4qs^*VBU@T=~$w~ylayWn~o*MSBloxTT1mgoSzq*^4-lG*U zV@$Vp@yVlGqbR?{&f*aEt9d6_=ik#oqVf&nf6#=j7pm1x$k3SA@;O2)0;dv&o^XIj zajw8U_S(M{_@dD;@I;fM*7v*UGY-Otq?1wmH)xrDSNNa_y2{rybl={swganxZcb_y zU9G!rHm|Ci{dcdTn>Io((@nm$hL982&7h97>2lrt+E~0*x`~+@ghx&rl8xaL6WEr# zDNWU(aDz7|ThV^XA>tb8g`zvBMyPnHHy|rDo^%zqHs`xj$p&ohax&O1WSv& zhbP)k@O3}EA)ek8x4tdb@h5gZNPhZ>KyHlPumRGkteH-M1?zOfZgcdO%5^wnoI_mF zU1*$+YvWCE6{T}aUa+M%1dEXKo_;&#NWg1y{7l?(R6vDWUVJaB$#t9<>K|@hRUXfo zI;|R!_&8~e|M*gK7!ARh zr$YVaiFKd>M{r!n`67f6oMvFYD$2G>>KRc1*TF1vD#2FK4z!H6j+DR(>fn}oIG|*- zb6r)`_;Zve+lWm{uh!IOkoA_=aE5$O)>|ZNMH%YdN`K0WaVGm;|M5V(cC|{-C`Row zX=$ZX8L@OKM}dZu7=n6Q#8Ii$jzMqJhxO-Q=N02F+oS^qO}B@$wuHYS8{;RR`rPAD zwpmcA$3vK@7f?B0wJEgN8myQNvukI4WPR$&DcZDi==rzvimHgjOtm;^qxmhVs;Mx! z{f}OiM&IVpI8G^1o%mfpKjjUIDK=?f1}zQ7sMUTkyO6_M`_!gXmf>u3`vur=&Q|JE z76O|ZUX<`6OcT=f?>D&DB-p{N;<|56F^6)n7CFZrXYgIwz8Ls>;`H)p7yqu){|L?% z;n_(&se%cvESRVUxC^`DamU}lY{|lgO}KZ0iUw?K5S0=0?gYCx5Rz>UQzlH<*3OMG zVViN#BLcQ{N9h>M#3&Z9kuTGcTl0e{6BHZ@v7Dwnjf^szar7e8{&6F)P40Ol|N7U{ z5PeA;Bl(~I*#MW_K@HfbGn(uoo>gtxXyMG7+*foxbra|9!E1vkpt~_dA{y*6*yEV< z3o*y*nO2nl0SDSgy8p5ccQZ;gebD~#Xr6&fyq?hVFUD^#V+| zLy2L10YgTOzOgD2Rbip}u({reyf#S*`QfUNK#|~3X<+xHiG;WO3gGvVS4f*eKjJKM1^aV5zAr{T!s|r0MgTtif z)V$IUSA<6M(x(@k0%=CN)27pDo*mv)){zh7vx;`haH7A4XCc6n`yjwUeHq5|dJVmm zeqZQHNBO^wc`~W${_W9|=&^pkf*z}ceaVB4mloSu;|6hjZcm@l?M}+z*GD@-7%OrW z2LKDd|5PlQm9b!dixiMPjk4)nN>0)*WM%>B5GVt+{iW2XWiiz9A}gMB{>jb+5pe#M z&IAFI&3S|V`Qh><7xdkwh`xJKwL`tsiL<6o->uGDHZehpF`X~TH)V+|>BTO_KVP%I ztM+%r{w~|!3-))({+_qL=eiT^GUn;;ljo(!Vlmhxbn0A}B-xW2_;8iQ>`i04Av@}QNp{m5C zSkFs)uOO;fsf{9e-hsQuIrMZ5V-%Sw81L8tjKiHaU%apMQP6`IV1O#77Atq>NU#uc z8d1J2zb*`wYxVxKFdI)tpF#4ahqG&sk>^7`<4{5-CKVBF&Ch;bVIoPNYpU_{si{&$ zP~*=(jT&Q=p2p`@J>Kw8wSQlXE~wZ^>*B!*=dx3?q>o-e4?i9GmjtDLVLtMT3PK-e zm1bBW~$A6UM5C6h7OqF`LUJapjlB|c&BQ^UJmyK{8>mPO6 z3~lp}l{#LG-o7H3cnl5;zVOCNnMlR-V)mZl* zZSHn1?N9P;$fw>O=4CT+e&KJT7hzszaXa(B>ICUUnW0_js-D*j?Pp&=L;E_e)aVyw zhQ?QEirI$QN0PjK;pz*Yp_SZ+8CsLTxNJoJPqHyAIN`o)wROr7LW`&$- zpOAFUF`>Q131x8o()_6>So3>97T}7SDlG{X;6JDNlF1^YImV`dxX~jls*V+@1^-X+OH+-5{^;v`|S5(DvsjZ!8`@y%Q zDiRz@O;=<1f2>xqmbX3GL8`($YO3!nm3}T_X1RyCAK~m@bhFTj0YvQ+g)yieGW=fuxo}-&XZ(kO^!u2W;Dv+ z^_RbV0V*TGk>)qH2d|kEcoyn^1)G>DdSbO(h>PSR{?Wc`0`tpVR%Q8J>DpT3dRNKm z8GQ{qOTQ~_lfLcgQ??~*wclPYIrMkpvzT$SMW>LU8EK@Uk-7YB{0{GoFYufHJ;}H) z>c-IR(Ruyy8N)qYKF786Z6zn9oz7?h>sq}@VDog74Shzu!V5VrzFC7`igw1Q^t=DI zHpA*1OmK0n$u@AvaR+2CHvvtgZJ2j>+Qkyw_JlRErN4m7gKKcqh_>c0B zAO%vtLBuAHCjqy6uf}`xSNZNRfgk**wxdiRX}yq!&wNNUJ3_(#b_vfAcA%L*SgsVwLXp{T zs7SFROeCNBpzTt#ntHp`)`R)RFeQw@{WR?QP*nx!aBMe56+Ukl2s6INv8E+H zr$`6BS_7w~_=&d^o8_jp3D9c!h3~YTes-Zsrfcn&JY5Y8mi`*BK4lH?Y~*^)z8aHH zPvWiGrDx6Q@Z+2G(oTZXM5uDu;tPi?8m*^YcIWu2(WTVBkXvJTge9Xc`FTFfr4OPp zjgS<3-+&7V$9E?;YX7fy;Kx6U(pd+7ZYj;5tmo68is(Q_E0GS?k$ssa9cCVOW10v= zVPORQsQm?kHoLup4zc}%gY6IK>na~;Oyqq2OFL*gtXFH7Bb$LTt#Q)`g)CqB65r@; ze~m%KMq?gIBRTLDtXxZBj0g53(N+Im8*?p+xD~v8ZqN(lQp?S&Y|aBG%I8*Wb7o28ur z*0N2lC&%K=zJq}6g<-$-u$JY!wgKDr4`SW4?XYixqb-7)EW|+QeX;v~eMe3I`eO>l zA|gVhVT&MR4p(1T(GL^Ecx(1C zG{#bAD6PiWFQevD9W~)3e;Y)x*9sM{n0Z_#N@gC+BZ``B=8?i|lD`90`C7`T$=SSw zW_Y(G`S!`t1T(D9IO%(`_Q@ag2nh9IXZ>sT&{;-eCm-E|bzA~>oQ!QlFI$E7N?F;1 z+CPE$b{ci9COto4QZcg<#?oc`!2YqjQ3BvUebi3N*&F_U(T{Xr(UYjc&b#u6RbYnT zX2w2N)%FU7mjc+VBs0U<+@755bO-o+l`Pu^>Ba{8zE;`UQjj`SM3EoEP&vs)dm+(; z%Dm&nR)GrXK?V*c;%Rap&r`<~%&C=_V@YK!8_`cY+t_b9l;FA6YU;D7nSiDku!+qC zLV~BE%{y72ISpBfYXz;(rz(7wg{s;~^ew51kF;Gq!Smv_O1^z_Xq^1Awn2qgYJe=q z(zJJMDoS+i9Lw{O>t#Aqsb@Ib^g>J_A!VPkU~N+zbZ_EN3loRotm!+i4YHlr&EV&U zTbm+F_pD$99^r zOp^CfJlgNA{nmO70*%*>Y38K*q@&)9U^1cyA>L}$qV}fN8{*jc(0d9@`7EiRxs2vo z77-C3GAKhNsV#&Qqfma~Q;$da*9gUG?T_UQto zS(J-fm`Xj&>-$L0v_2o}v(~l|)Ugm+f&Yt*4l@%c!To~RFH-SdJt{bg#H7e>)}L+S zJ8BoDbn6w}$OO!Xe{lxAg8GbZMAnMGd~|U`jgMpN8SZ^QUk(JM-}J+KEJjm8nViq< z-u4Z{(Tx<+P~#0aZIR@SKgEW%JZk+^joqyD?o{nQn9*A>CeiT8N`00PzroiJ#Y`5z zk*~26m+2xv8EPZLn=3m?=V$Sh^wq%2YyU}ghmia(lBhjPjf!quDlu{UBoS( z)b!d+oi9EHDs+K*IcTSRoI$)~N9I=DYWBh)l1NM$b&ps>J6?fE8QDvK2wSbUdzs#( zGU%q;lA8jw{kCL#fNr@hxg|h5Yzi(aFTX8$dARoqWv>kPj@yzuXxpwyYuhfpR8_a{ zvh%ohpFZmw${F|mp?SW@Xy1!f+a)$$T+{rh5MtjI&-fCwp7lwSy7`X!?U7^%l-wRA z0ZMO=G&Qmh+86Z{{3xF6qte$WnQgkHr(3T>$LR}R1&U0+^d~53pYC0zai*MCYFz6< z8!@7BH^VlbWGs;8dj`V&S{g>YeGFNOltI8%USw|3pB+e4%7BVUJK}u&f&8UE)_N>9 zz1B?j?ry5uQ>&d^lJ2obTR+Wi?M~ihtJguty=SSi0|e&088Y6jwP!I!`ao}uIS5^$ zuf&pR&T5k_CdcGvGq${?8V*VOUG}-m#OOdcV~k>N6nR0^h7qGcl_*_cL%i1dUon>; zTtz^#bIm;&__^tB5h#h5(R>Ph9<&fXy-$+G?Fasv2VK@9TThQAV|hI zN=o}XMtyVm8fgg3$r?%0vCCNeWXdn|mrCrDq^+&iDzVo7rA9YVu2dgHPsnCh-Z%Am zUPKp2ZP9=+CfJgOIzd@f?%f)Vb(lNprAVAk(z>3K`3`2~ujMz}n|~>q%m-e(w{;g? zlI&7b$x43iRYeX~*^7M2oS*tKzko}k5}7yUJEXK1{@_*l3EQiVj<#MFCD6#9im+o9 zTA{eQjN+}Pdm!6t*ZIS5nQq=MqWKh%F6$|Rpo zt7S%jfx@?mi_c*jQL80y?zLZ8vOBvemMtfw%mA2GD7Q04&4{tqQNkJlhnIl5`o1_L zJkraHdZzCL=ez?VIx?Znd%J_`_!CCuTR∋@$w26+s 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[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

[]`, where the obligation is the body as declared // (`pinned(tenant_id)`, `via view`, a predicate) and its absence waives every obligation @@ -618,6 +666,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 @@ -1061,7 +1112,7 @@ func (s *Schema) createTable(st *pgparse.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 @@ -1988,8 +2039,8 @@ func (s *Schema) Function(schema, name string) *Function { } // parseExpr parses a standalone SQL expression. -func parseExpr(text string) (Expr, error) { - tree, err := pgparse.Parse("SELECT " + text) +func parseExpr(v pgparse.Version, text string) (Expr, error) { + tree, err := v.Parse("SELECT " + text) if err != nil { return nil, err } diff --git a/internal/schema/version_test.go b/internal/schema/version_test.go new file mode 100644 index 0000000..3cc35d5 --- /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/hazards.go b/internal/vet/hazards.go index 6f313f3..60562e9 100644 --- a/internal/vet/hazards.go +++ b/internal/vet/hazards.go @@ -147,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 := pgparse.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 } 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) { From 5b138b1188164a5134ed57a88abda728bb867193 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:15:13 +0900 Subject: [PATCH 06/27] =?UTF-8?q?CI:=20go=20test=20-count=3D1=20for=20the?= =?UTF-8?q?=20coverage=20profile=20=E2=80=94=20a=20cached=20test=20result?= =?UTF-8?q?=20replays=20a=20profile=20with=20block=20positions=20from=20an?= =?UTF-8?q?=20earlier=20build=20of=20the=20packages=20it=20covers=20but=20?= =?UTF-8?q?does=20not=20depend=20on,=20and=20the=20merged=20total=20fell?= =?UTF-8?q?=20from=2093%=20to=2082%=20after=20an=20edit=20that=20moved=20l?= =?UTF-8?q?ines=20in=20analyze=20and=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3a62349..5da154e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,11 +50,14 @@ jobs: # coverage counts every package except the catalog generator (a manual tool run # 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 + # (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 From bd69f6551dd210a33bc109015213a3e1d8a1bda1 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:31:33 +0900 Subject: [PATCH 07/27] =?UTF-8?q?one=20catalog,=20one=20oracle,=20one=20re?= =?UTF-8?q?gress=20probe=20per=20PostgreSQL=20major=20version=20=E2=80=94?= =?UTF-8?q?=20internal/catalog/data//=20(catalog.Load(major);=2018?= =?UTF-8?q?=20generated=20from=2018.3=20with=20all=2016=20extension=20dump?= =?UTF-8?q?s),=20oracle.StartVersion=20(18.3.0=20beside=2017.5.0),=20and?= =?UTF-8?q?=20the=20probe=20follows=20$SQLSHAPE=5FPG=20with=20a=20baseline?= =?UTF-8?q?=20per=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit schema.Load / analyze.Load read the declaration first and load that version's catalog; a catalog of another version handed to LoadWithHooks is an error. pgtest starts the PostgreSQL the schema declares. The probe writes the declaration above the corpus DDL so the analyzer judges with the probed version's grammar and catalog. gen takes -pg and -all-ext. CI gains a pg18 job (catalog, oracle, the 18 probe over REL_18_3; nothing asserted until 18 has a baseline). First 18 probe: 23380 statements, 420 hits — 321 of them 42P01 after the loader dropped 18 DDL (WITHOUT OVERLAPS, virtual generated columns, NOT ENFORCED). That is the work that follows. --- .github/workflows/test.yml | 27 + docs/design.md | 2 +- internal/analyze/analyze.go | 6 +- internal/analyze/regress_test.go | 79 +- ...s_baseline.txt => regress_baseline_17.txt} | 0 internal/catalog/README.md | 11 +- internal/catalog/catalog.go | 62 +- internal/catalog/catalog_test.go | 35 +- internal/catalog/data/{ => 17}/VERSION | 0 .../catalog/data/{ => 17}/ext/btree_gin/META | 0 .../{ => 17}/ext/btree_gin/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/btree_gin/pg_cast.tsv | 0 .../{ => 17}/ext/btree_gin/pg_operator.tsv | 0 .../data/{ => 17}/ext/btree_gin/pg_proc.tsv | 0 .../data/{ => 17}/ext/btree_gin/pg_range.tsv | 0 .../data/{ => 17}/ext/btree_gin/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/btree_gist/META | 0 .../{ => 17}/ext/btree_gist/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/btree_gist/pg_cast.tsv | 0 .../{ => 17}/ext/btree_gist/pg_operator.tsv | 0 .../data/{ => 17}/ext/btree_gist/pg_proc.tsv | 0 .../data/{ => 17}/ext/btree_gist/pg_range.tsv | 0 .../data/{ => 17}/ext/btree_gist/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/citext/META | 0 .../data/{ => 17}/ext/citext/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/citext/pg_cast.tsv | 0 .../data/{ => 17}/ext/citext/pg_operator.tsv | 0 .../data/{ => 17}/ext/citext/pg_proc.tsv | 0 .../data/{ => 17}/ext/citext/pg_range.tsv | 0 .../data/{ => 17}/ext/citext/pg_type.tsv | 0 internal/catalog/data/{ => 17}/ext/cube/META | 0 .../data/{ => 17}/ext/cube/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/cube/pg_cast.tsv | 0 .../data/{ => 17}/ext/cube/pg_operator.tsv | 0 .../data/{ => 17}/ext/cube/pg_proc.tsv | 0 .../data/{ => 17}/ext/cube/pg_range.tsv | 0 .../data/{ => 17}/ext/cube/pg_type.tsv | 0 .../data/{ => 17}/ext/earthdistance/META | 0 .../ext/earthdistance/pg_aggregate.tsv | 0 .../{ => 17}/ext/earthdistance/pg_cast.tsv | 0 .../ext/earthdistance/pg_operator.tsv | 0 .../{ => 17}/ext/earthdistance/pg_proc.tsv | 0 .../{ => 17}/ext/earthdistance/pg_range.tsv | 0 .../{ => 17}/ext/earthdistance/pg_type.tsv | 0 .../data/{ => 17}/ext/fuzzystrmatch/META | 0 .../ext/fuzzystrmatch/pg_aggregate.tsv | 0 .../{ => 17}/ext/fuzzystrmatch/pg_cast.tsv | 0 .../ext/fuzzystrmatch/pg_operator.tsv | 0 .../{ => 17}/ext/fuzzystrmatch/pg_proc.tsv | 0 .../{ => 17}/ext/fuzzystrmatch/pg_range.tsv | 0 .../{ => 17}/ext/fuzzystrmatch/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/hstore/META | 0 .../data/{ => 17}/ext/hstore/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/hstore/pg_cast.tsv | 0 .../data/{ => 17}/ext/hstore/pg_operator.tsv | 0 .../data/{ => 17}/ext/hstore/pg_proc.tsv | 0 .../data/{ => 17}/ext/hstore/pg_range.tsv | 0 .../data/{ => 17}/ext/hstore/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/intarray/META | 0 .../{ => 17}/ext/intarray/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/intarray/pg_cast.tsv | 0 .../{ => 17}/ext/intarray/pg_operator.tsv | 0 .../data/{ => 17}/ext/intarray/pg_proc.tsv | 0 .../data/{ => 17}/ext/intarray/pg_range.tsv | 0 .../data/{ => 17}/ext/intarray/pg_type.tsv | 0 internal/catalog/data/{ => 17}/ext/isn/META | 0 .../data/{ => 17}/ext/isn/pg_aggregate.tsv | 0 .../catalog/data/{ => 17}/ext/isn/pg_cast.tsv | 0 .../data/{ => 17}/ext/isn/pg_operator.tsv | 0 .../catalog/data/{ => 17}/ext/isn/pg_proc.tsv | 0 .../data/{ => 17}/ext/isn/pg_range.tsv | 0 .../catalog/data/{ => 17}/ext/isn/pg_type.tsv | 0 internal/catalog/data/{ => 17}/ext/ltree/META | 0 .../data/{ => 17}/ext/ltree/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/ltree/pg_cast.tsv | 0 .../data/{ => 17}/ext/ltree/pg_operator.tsv | 0 .../data/{ => 17}/ext/ltree/pg_proc.tsv | 0 .../data/{ => 17}/ext/ltree/pg_range.tsv | 0 .../data/{ => 17}/ext/ltree/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/pg_trgm/META | 0 .../{ => 17}/ext/pg_trgm/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/pg_trgm/pg_cast.tsv | 0 .../data/{ => 17}/ext/pg_trgm/pg_operator.tsv | 0 .../data/{ => 17}/ext/pg_trgm/pg_proc.tsv | 0 .../data/{ => 17}/ext/pg_trgm/pg_range.tsv | 0 .../data/{ => 17}/ext/pg_trgm/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/pgcrypto/META | 0 .../{ => 17}/ext/pgcrypto/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/pgcrypto/pg_cast.tsv | 0 .../{ => 17}/ext/pgcrypto/pg_operator.tsv | 0 .../data/{ => 17}/ext/pgcrypto/pg_proc.tsv | 0 .../data/{ => 17}/ext/pgcrypto/pg_range.tsv | 0 .../data/{ => 17}/ext/pgcrypto/pg_type.tsv | 0 internal/catalog/data/{ => 17}/ext/seg/META | 0 .../data/{ => 17}/ext/seg/pg_aggregate.tsv | 0 .../catalog/data/{ => 17}/ext/seg/pg_cast.tsv | 0 .../data/{ => 17}/ext/seg/pg_operator.tsv | 0 .../catalog/data/{ => 17}/ext/seg/pg_proc.tsv | 0 .../data/{ => 17}/ext/seg/pg_range.tsv | 0 .../catalog/data/{ => 17}/ext/seg/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/tablefunc/META | 0 .../{ => 17}/ext/tablefunc/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/tablefunc/pg_cast.tsv | 0 .../{ => 17}/ext/tablefunc/pg_operator.tsv | 0 .../data/{ => 17}/ext/tablefunc/pg_proc.tsv | 0 .../data/{ => 17}/ext/tablefunc/pg_range.tsv | 0 .../data/{ => 17}/ext/tablefunc/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/unaccent/META | 0 .../{ => 17}/ext/unaccent/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/unaccent/pg_cast.tsv | 0 .../{ => 17}/ext/unaccent/pg_operator.tsv | 0 .../data/{ => 17}/ext/unaccent/pg_proc.tsv | 0 .../data/{ => 17}/ext/unaccent/pg_range.tsv | 0 .../data/{ => 17}/ext/unaccent/pg_type.tsv | 0 .../catalog/data/{ => 17}/ext/uuid-ossp/META | 0 .../{ => 17}/ext/uuid-ossp/pg_aggregate.tsv | 0 .../data/{ => 17}/ext/uuid-ossp/pg_cast.tsv | 0 .../{ => 17}/ext/uuid-ossp/pg_operator.tsv | 0 .../data/{ => 17}/ext/uuid-ossp/pg_proc.tsv | 0 .../data/{ => 17}/ext/uuid-ossp/pg_range.tsv | 0 .../data/{ => 17}/ext/uuid-ossp/pg_type.tsv | 0 .../catalog/data/{ => 17}/pg_aggregate.tsv | 0 internal/catalog/data/{ => 17}/pg_cast.tsv | 0 internal/catalog/data/{ => 17}/pg_class.tsv | 0 .../catalog/data/{ => 17}/pg_operator.tsv | 0 internal/catalog/data/{ => 17}/pg_proc.tsv | 0 internal/catalog/data/{ => 17}/pg_range.tsv | 0 internal/catalog/data/{ => 17}/pg_type.tsv | 0 internal/catalog/data/18/VERSION | 1 + internal/catalog/data/18/ext/btree_gin/META | 4 + .../data/18/ext/btree_gin/pg_aggregate.tsv | 0 .../catalog/data/18/ext/btree_gin/pg_cast.tsv | 0 .../data/18/ext/btree_gin/pg_class.tsv | 0 .../data/18/ext/btree_gin/pg_operator.tsv | 0 .../catalog/data/18/ext/btree_gin/pg_proc.tsv | 90 + .../data/18/ext/btree_gin/pg_range.tsv | 0 .../catalog/data/18/ext/btree_gin/pg_type.tsv | 0 internal/catalog/data/18/ext/btree_gist/META | 4 + .../data/18/ext/btree_gist/pg_aggregate.tsv | 0 .../data/18/ext/btree_gist/pg_cast.tsv | 0 .../data/18/ext/btree_gist/pg_class.tsv | 0 .../data/18/ext/btree_gist/pg_operator.tsv | 12 + .../data/18/ext/btree_gist/pg_proc.tsv | 215 ++ .../data/18/ext/btree_gist/pg_range.tsv | 0 .../data/18/ext/btree_gist/pg_type.tsv | 12 + internal/catalog/data/18/ext/citext/META | 4 + .../data/18/ext/citext/pg_aggregate.tsv | 2 + .../catalog/data/18/ext/citext/pg_cast.tsv | 8 + .../catalog/data/18/ext/citext/pg_class.tsv | 0 .../data/18/ext/citext/pg_operator.tsv | 26 + .../catalog/data/18/ext/citext/pg_proc.tsv | 50 + .../catalog/data/18/ext/citext/pg_range.tsv | 0 .../catalog/data/18/ext/citext/pg_type.tsv | 2 + internal/catalog/data/18/ext/cube/META | 4 + .../catalog/data/18/ext/cube/pg_aggregate.tsv | 0 internal/catalog/data/18/ext/cube/pg_cast.tsv | 0 .../catalog/data/18/ext/cube/pg_class.tsv | 0 .../catalog/data/18/ext/cube/pg_operator.tsv | 14 + internal/catalog/data/18/ext/cube/pg_proc.tsv | 43 + .../catalog/data/18/ext/cube/pg_range.tsv | 0 internal/catalog/data/18/ext/cube/pg_type.tsv | 2 + .../catalog/data/18/ext/earthdistance/META | 4 + .../18/ext/earthdistance/pg_aggregate.tsv | 0 .../data/18/ext/earthdistance/pg_cast.tsv | 0 .../data/18/ext/earthdistance/pg_class.tsv | 0 .../data/18/ext/earthdistance/pg_operator.tsv | 15 + .../data/18/ext/earthdistance/pg_proc.tsv | 52 + .../data/18/ext/earthdistance/pg_range.tsv | 0 .../data/18/ext/earthdistance/pg_type.tsv | 4 + .../catalog/data/18/ext/fuzzystrmatch/META | 4 + .../18/ext/fuzzystrmatch/pg_aggregate.tsv | 0 .../data/18/ext/fuzzystrmatch/pg_cast.tsv | 0 .../data/18/ext/fuzzystrmatch/pg_class.tsv | 0 .../data/18/ext/fuzzystrmatch/pg_operator.tsv | 0 .../data/18/ext/fuzzystrmatch/pg_proc.tsv | 14 + .../data/18/ext/fuzzystrmatch/pg_range.tsv | 0 .../data/18/ext/fuzzystrmatch/pg_type.tsv | 0 internal/catalog/data/18/ext/hstore/META | 4 + .../data/18/ext/hstore/pg_aggregate.tsv | 0 .../catalog/data/18/ext/hstore/pg_cast.tsv | 3 + .../catalog/data/18/ext/hstore/pg_class.tsv | 0 .../data/18/ext/hstore/pg_operator.tsv | 20 + .../catalog/data/18/ext/hstore/pg_proc.tsv | 63 + .../catalog/data/18/ext/hstore/pg_range.tsv | 0 .../catalog/data/18/ext/hstore/pg_type.tsv | 4 + internal/catalog/data/18/ext/intarray/META | 4 + .../data/18/ext/intarray/pg_aggregate.tsv | 0 .../catalog/data/18/ext/intarray/pg_cast.tsv | 0 .../catalog/data/18/ext/intarray/pg_class.tsv | 0 .../data/18/ext/intarray/pg_operator.tsv | 14 + .../catalog/data/18/ext/intarray/pg_proc.tsv | 57 + .../catalog/data/18/ext/intarray/pg_range.tsv | 0 .../catalog/data/18/ext/intarray/pg_type.tsv | 4 + internal/catalog/data/18/ext/isn/META | 4 + .../catalog/data/18/ext/isn/pg_aggregate.tsv | 0 internal/catalog/data/18/ext/isn/pg_cast.tsv | 20 + internal/catalog/data/18/ext/isn/pg_class.tsv | 0 .../catalog/data/18/ext/isn/pg_operator.tsv | 168 + internal/catalog/data/18/ext/isn/pg_proc.tsv | 248 ++ internal/catalog/data/18/ext/isn/pg_range.tsv | 0 internal/catalog/data/18/ext/isn/pg_type.tsv | 16 + internal/catalog/data/18/ext/ltree/META | 4 + .../data/18/ext/ltree/pg_aggregate.tsv | 0 .../catalog/data/18/ext/ltree/pg_cast.tsv | 0 .../catalog/data/18/ext/ltree/pg_class.tsv | 0 .../catalog/data/18/ext/ltree/pg_operator.tsv | 49 + .../catalog/data/18/ext/ltree/pg_proc.tsv | 83 + .../catalog/data/18/ext/ltree/pg_range.tsv | 0 .../catalog/data/18/ext/ltree/pg_type.tsv | 8 + internal/catalog/data/18/ext/pg_trgm/META | 4 + .../data/18/ext/pg_trgm/pg_aggregate.tsv | 0 .../catalog/data/18/ext/pg_trgm/pg_cast.tsv | 0 .../catalog/data/18/ext/pg_trgm/pg_class.tsv | 0 .../data/18/ext/pg_trgm/pg_operator.tsv | 10 + .../catalog/data/18/ext/pg_trgm/pg_proc.tsv | 34 + .../catalog/data/18/ext/pg_trgm/pg_range.tsv | 0 .../catalog/data/18/ext/pg_trgm/pg_type.tsv | 2 + internal/catalog/data/18/ext/pgcrypto/META | 4 + .../data/18/ext/pgcrypto/pg_aggregate.tsv | 0 .../catalog/data/18/ext/pgcrypto/pg_cast.tsv | 0 .../catalog/data/18/ext/pgcrypto/pg_class.tsv | 0 .../data/18/ext/pgcrypto/pg_operator.tsv | 0 .../catalog/data/18/ext/pgcrypto/pg_proc.tsv | 40 + .../catalog/data/18/ext/pgcrypto/pg_range.tsv | 0 .../catalog/data/18/ext/pgcrypto/pg_type.tsv | 0 internal/catalog/data/18/ext/seg/META | 4 + .../catalog/data/18/ext/seg/pg_aggregate.tsv | 0 internal/catalog/data/18/ext/seg/pg_cast.tsv | 0 internal/catalog/data/18/ext/seg/pg_class.tsv | 0 .../catalog/data/18/ext/seg/pg_operator.tsv | 13 + internal/catalog/data/18/ext/seg/pg_proc.tsv | 30 + internal/catalog/data/18/ext/seg/pg_range.tsv | 0 internal/catalog/data/18/ext/seg/pg_type.tsv | 2 + internal/catalog/data/18/ext/tablefunc/META | 4 + .../data/18/ext/tablefunc/pg_aggregate.tsv | 0 .../catalog/data/18/ext/tablefunc/pg_cast.tsv | 0 .../data/18/ext/tablefunc/pg_class.tsv | 0 .../data/18/ext/tablefunc/pg_operator.tsv | 0 .../catalog/data/18/ext/tablefunc/pg_proc.tsv | 14 + .../data/18/ext/tablefunc/pg_range.tsv | 0 .../catalog/data/18/ext/tablefunc/pg_type.tsv | 6 + internal/catalog/data/18/ext/unaccent/META | 4 + .../data/18/ext/unaccent/pg_aggregate.tsv | 0 .../catalog/data/18/ext/unaccent/pg_cast.tsv | 0 .../catalog/data/18/ext/unaccent/pg_class.tsv | 0 .../data/18/ext/unaccent/pg_operator.tsv | 0 .../catalog/data/18/ext/unaccent/pg_proc.tsv | 7 + .../catalog/data/18/ext/unaccent/pg_range.tsv | 0 .../catalog/data/18/ext/unaccent/pg_type.tsv | 0 internal/catalog/data/18/ext/uuid-ossp/META | 4 + .../data/18/ext/uuid-ossp/pg_aggregate.tsv | 0 .../catalog/data/18/ext/uuid-ossp/pg_cast.tsv | 0 .../data/18/ext/uuid-ossp/pg_class.tsv | 0 .../data/18/ext/uuid-ossp/pg_operator.tsv | 0 .../catalog/data/18/ext/uuid-ossp/pg_proc.tsv | 13 + .../data/18/ext/uuid-ossp/pg_range.tsv | 0 .../catalog/data/18/ext/uuid-ossp/pg_type.tsv | 0 internal/catalog/data/18/pg_aggregate.tsv | 161 + internal/catalog/data/18/pg_cast.tsv | 235 ++ internal/catalog/data/18/pg_class.tsv | 2119 ++++++++++ internal/catalog/data/18/pg_operator.tsv | 799 ++++ internal/catalog/data/18/pg_proc.tsv | 3402 +++++++++++++++++ internal/catalog/data/18/pg_range.tsv | 6 + internal/catalog/data/18/pg_type.tsv | 621 +++ internal/catalog/extension.go | 21 +- internal/catalog/gen/main.go | 40 +- internal/oracle/oracle.go | 58 +- internal/schema/schema.go | 18 +- internal/schema/version_test.go | 4 +- pgtest/pgtest.go | 7 +- 270 files changed, 9169 insertions(+), 98 deletions(-) rename internal/analyze/testdata/{regress_baseline.txt => regress_baseline_17.txt} (100%) rename internal/catalog/data/{ => 17}/VERSION (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/META (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gin/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/META (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/btree_gist/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/citext/META (100%) rename internal/catalog/data/{ => 17}/ext/citext/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/citext/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/citext/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/citext/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/citext/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/citext/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/cube/META (100%) rename internal/catalog/data/{ => 17}/ext/cube/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/cube/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/cube/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/cube/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/cube/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/cube/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/META (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/earthdistance/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/META (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/fuzzystrmatch/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/hstore/META (100%) rename internal/catalog/data/{ => 17}/ext/hstore/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/hstore/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/hstore/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/hstore/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/hstore/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/hstore/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/intarray/META (100%) rename internal/catalog/data/{ => 17}/ext/intarray/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/intarray/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/intarray/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/intarray/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/intarray/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/intarray/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/isn/META (100%) rename internal/catalog/data/{ => 17}/ext/isn/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/isn/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/isn/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/isn/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/isn/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/isn/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/ltree/META (100%) rename internal/catalog/data/{ => 17}/ext/ltree/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/ltree/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/ltree/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/ltree/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/ltree/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/ltree/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/META (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pg_trgm/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/META (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/pgcrypto/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/seg/META (100%) rename internal/catalog/data/{ => 17}/ext/seg/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/seg/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/seg/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/seg/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/seg/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/seg/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/META (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/tablefunc/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/META (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/unaccent/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/META (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/ext/uuid-ossp/pg_type.tsv (100%) rename internal/catalog/data/{ => 17}/pg_aggregate.tsv (100%) rename internal/catalog/data/{ => 17}/pg_cast.tsv (100%) rename internal/catalog/data/{ => 17}/pg_class.tsv (100%) rename internal/catalog/data/{ => 17}/pg_operator.tsv (100%) rename internal/catalog/data/{ => 17}/pg_proc.tsv (100%) rename internal/catalog/data/{ => 17}/pg_range.tsv (100%) rename internal/catalog/data/{ => 17}/pg_type.tsv (100%) create mode 100644 internal/catalog/data/18/VERSION create mode 100644 internal/catalog/data/18/ext/btree_gin/META create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/btree_gin/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/META create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/btree_gist/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/citext/META create mode 100644 internal/catalog/data/18/ext/citext/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/citext/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/citext/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/citext/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/citext/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/citext/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/citext/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/cube/META create mode 100644 internal/catalog/data/18/ext/cube/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/cube/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/cube/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/cube/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/cube/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/cube/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/cube/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/META create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/earthdistance/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/META create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/fuzzystrmatch/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/hstore/META create mode 100644 internal/catalog/data/18/ext/hstore/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/hstore/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/hstore/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/hstore/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/hstore/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/hstore/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/hstore/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/intarray/META create mode 100644 internal/catalog/data/18/ext/intarray/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/intarray/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/intarray/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/intarray/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/intarray/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/intarray/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/intarray/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/isn/META create mode 100644 internal/catalog/data/18/ext/isn/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/isn/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/isn/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/isn/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/isn/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/isn/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/isn/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/ltree/META create mode 100644 internal/catalog/data/18/ext/ltree/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/ltree/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/ltree/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/ltree/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/ltree/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/ltree/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/ltree/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/META create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/pg_trgm/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/META create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/pgcrypto/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/seg/META create mode 100644 internal/catalog/data/18/ext/seg/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/seg/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/seg/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/seg/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/seg/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/seg/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/seg/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/META create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/tablefunc/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/META create mode 100644 internal/catalog/data/18/ext/unaccent/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/unaccent/pg_type.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/META create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_cast.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_class.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_operator.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_proc.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_range.tsv create mode 100644 internal/catalog/data/18/ext/uuid-ossp/pg_type.tsv create mode 100644 internal/catalog/data/18/pg_aggregate.tsv create mode 100644 internal/catalog/data/18/pg_cast.tsv create mode 100644 internal/catalog/data/18/pg_class.tsv create mode 100644 internal/catalog/data/18/pg_operator.tsv create mode 100644 internal/catalog/data/18/pg_proc.tsv create mode 100644 internal/catalog/data/18/pg_range.tsv create mode 100644 internal/catalog/data/18/pg_type.tsv diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5da154e..231de79 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,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/docs/design.md b/docs/design.md index 918fdf7..86d96e6 100644 --- a/docs/design.md +++ b/docs/design.md @@ -117,7 +117,7 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em | `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`にも依存しない | diff --git a/internal/analyze/analyze.go b/internal/analyze/analyze.go index 5be50c2..47622cc 100644 --- a/internal/analyze/analyze.go +++ b/internal/analyze/analyze.go @@ -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 } diff --git a/internal/analyze/regress_test.go b/internal/analyze/regress_test.go index 3a4e007..dae2b3c 100644 --- a/internal/analyze/regress_test.go +++ b/internal/analyze/regress_test.go @@ -11,6 +11,7 @@ import ( "regexp" "runtime" "sort" + "strconv" "strings" "sync" "testing" @@ -28,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). // @@ -39,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 } @@ -57,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 "" } @@ -80,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 @@ -102,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 { @@ -117,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) } } @@ -137,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 { @@ -174,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. @@ -300,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{} @@ -350,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 @@ -459,7 +484,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q 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 @@ -488,7 +513,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q 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) @@ -505,7 +530,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q 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 == pgparse.DiscardMode_DISCARD_ALL { @@ -559,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) @@ -575,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 } @@ -645,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 } 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/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..7eb2ef0 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. @@ -213,6 +217,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 +246,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 +311,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/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/schema/schema.go b/internal/schema/schema.go index 9484174..f4e16fd 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -453,7 +453,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 } @@ -473,10 +477,13 @@ 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) { - version, err := declaredVersion(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) @@ -490,7 +497,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 } @@ -586,10 +593,11 @@ var directiveLine = regexp.MustCompile(`(?m)^[ \t]*--[ \t]*sqlshape:[ \t]*(.+?)[ // 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 +// 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. -func declaredVersion(schemaSQL string) (pgparse.Version, error) { +// 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]) diff --git a/internal/schema/version_test.go b/internal/schema/version_test.go index 3cc35d5..4dbbc7e 100644 --- a/internal/schema/version_test.go +++ b/internal/schema/version_test.go @@ -45,8 +45,8 @@ func TestPostgresVersionDeclaration(t *testing.T) { } 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 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) { 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 } From 3f9dcb5f75837b8822f48e0ec3c932332666920d Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:37:24 +0900 Subject: [PATCH 08/27] =?UTF-8?q?design:=20MySQL=20=E2=80=94=20the=20parse?= =?UTF-8?q?r=20is=20generated=20from=20MySQL's=20own=20sql=5Fyacc.yy=20wit?= =?UTF-8?q?h=20the=20C++=20actions=20stripped=20(one=20grammar=20per=20ver?= =?UTF-8?q?sion,=20as=20with=20libpg=5Fquery),=20the=20lexer=20is=20rewrit?= =?UTF-8?q?ten,=20the=20catalog=20of=20built-in=20functions=20is=20measure?= =?UTF-8?q?d=20from=20a=20real=20mysqld=20rather=20than=20transcribed,=20m?= =?UTF-8?q?ysql-test=20is=20the=20corpus;=20goyacc=20vs=20bison-to-wasm=20?= =?UTF-8?q?is=20decided=20by=20a=20spike=20on=20the=20corpus's=20acceptanc?= =?UTF-8?q?e=20rate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/design.md b/docs/design.md index 86d96e6..7754221 100644 --- a/docs/design.md +++ b/docs/design.md @@ -128,6 +128,11 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em ## 検討中 - MySQLを、PostgreSQLとは別の実装としてサポートする。初期リリースの範囲外。方言をまたぐ共通DSLは作らない(作った瞬間にSQLをDSLに翻訳させる形に戻る)。代わりにプラットフォームごとに、そのDBの構文と型規則を実装したアナライザーと、そのDBのdumpを使うマイグレーション支援を持つ。共有するのはテンプレートの展開、`go/analysis`のフロントエンド、Go側の型照合の枠組み + - パーサ(裁定 2026-09-09): MySQLサーバのソースにある文法定義`sql/sql_yacc.yy`(bison)から、C++のアクションを剥がして文法だけを抽出し、そこからパーサを生成する。文法は版ごとに本物を使う(PGでlibpg_queryの版を積むのと同じ形。`-- sqlshape: mysql 8.4`)。生成したパーサは規則名と子要素だけの素の構文木(CST)を作り、sqlshape用のASTへの変換は手で書く。字句解析器はMySQLの`sql_lex.cc`がサーバ内部(THD・文字集合)と絡んで切り出せないので書き直す(バージョンコメント`/*!80000 ... */`、文字集合導入子`_utf8mb4'...'`、区切り文字が要点)。予約語表は`sql/lex.h`から取る + - パーサの生成手段は未決。候補は2つ: ①抽出した文法をgoyaccに通してpure Goで持つ(ツールチェーン不要、LALR(1)と`%prec`の解決はbisonと同じアルゴリズムだが、`%union`・中間アクション・`%destructor`等のbison拡張の変換が要る)、②bisonでCのパーサを生成しlibpg_queryと同じくwasmにする(bisonの解決をそのまま使えるが、字句解析器もCで書くことになる)。スパイクで決める: 文法抽出 → 生成 → MySQLのテストスイート(`mysql-test/t/*.test`)の文をどれだけ受理するか + - カタログ: MySQLには`pg_proc`に当たるものがない(組み込み関数のシグネチャは`item_create.cc`とItemクラスのC++にしかない)。型規則も暗黙変換だらけで仕様文書はPGの§10ほど機械的でない。方針は「オラクルから測ってカタログを作る」: 本物のmysqld(配布tarballを`--initialize`で起こす。PGのembedded-postgresの役)に対して、関数名一覧×引数型の組み合わせをプリペアドステートメントのメタデータで問い、結果型の表を生成して埋め込む。PGの`.dat`由来カタログの経験則版。手で写す型規則は、測った表で差分検査する + - 回帰コーパスは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]`に起こす From ef99e9ccdb302facd48bb19da61b7c382fd00e5e Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:42:04 +0900 Subject: [PATCH 09/27] =?UTF-8?q?design:=20MySQL=20=E2=80=94=20the=20lexer?= =?UTF-8?q?=20is=20extracted=20too,=20not=20rewritten:=20lex=5Fone=5Ftoken?= =?UTF-8?q?=20reads=20five=20pieces=20of=20server=20state=20(sql=5Fmode,?= =?UTF-8?q?=20default=5Fcollation=5Ffor=5Futf8mb4,=20the=20connection=20ch?= =?UTF-8?q?arset,=20comment=20collection,=20a=20deprecation=20warning),=20?= =?UTF-8?q?so=20a=20THD=20shim=20of=20that=20size=20lets=20sql=5Flex.cc,?= =?UTF-8?q?=20gen=5Flex=5Fhash's=20keyword=20table=20and=20strings/=20comp?= =?UTF-8?q?ile=20with=20the=20stripped=20sql=5Fyacc.yy=20=E2=80=94=20bison?= =?UTF-8?q?=20+=20emcc=20to=20wasm,=20as=20libpg=5Fquery;=20sql=5Fmode=20b?= =?UTF-8?q?ecomes=20a=20schema=20declaration;=20hints=20(sql=5Fhints.yy)?= =?UTF-8?q?=20come=20later?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/design.md b/docs/design.md index 7754221..401958f 100644 --- a/docs/design.md +++ b/docs/design.md @@ -128,8 +128,9 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em ## 検討中 - MySQLを、PostgreSQLとは別の実装としてサポートする。初期リリースの範囲外。方言をまたぐ共通DSLは作らない(作った瞬間にSQLをDSLに翻訳させる形に戻る)。代わりにプラットフォームごとに、そのDBの構文と型規則を実装したアナライザーと、そのDBのdumpを使うマイグレーション支援を持つ。共有するのはテンプレートの展開、`go/analysis`のフロントエンド、Go側の型照合の枠組み - - パーサ(裁定 2026-09-09): MySQLサーバのソースにある文法定義`sql/sql_yacc.yy`(bison)から、C++のアクションを剥がして文法だけを抽出し、そこからパーサを生成する。文法は版ごとに本物を使う(PGでlibpg_queryの版を積むのと同じ形。`-- sqlshape: mysql 8.4`)。生成したパーサは規則名と子要素だけの素の構文木(CST)を作り、sqlshape用のASTへの変換は手で書く。字句解析器はMySQLの`sql_lex.cc`がサーバ内部(THD・文字集合)と絡んで切り出せないので書き直す(バージョンコメント`/*!80000 ... */`、文字集合導入子`_utf8mb4'...'`、区切り文字が要点)。予約語表は`sql/lex.h`から取る - - パーサの生成手段は未決。候補は2つ: ①抽出した文法をgoyaccに通してpure Goで持つ(ツールチェーン不要、LALR(1)と`%prec`の解決はbisonと同じアルゴリズムだが、`%union`・中間アクション・`%destructor`等のbison拡張の変換が要る)、②bisonでCのパーサを生成しlibpg_queryと同じくwasmにする(bisonの解決をそのまま使えるが、字句解析器もCで書くことになる)。スパイクで決める: 文法抽出 → 生成 → MySQLのテストスイート(`mysql-test/t/*.test`)の文をどれだけ受理するか + - パーサと字句解析器(裁定 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の判定には効かないので初期は読み飛ばす - カタログ: MySQLには`pg_proc`に当たるものがない(組み込み関数のシグネチャは`item_create.cc`とItemクラスのC++にしかない)。型規則も暗黙変換だらけで仕様文書はPGの§10ほど機械的でない。方針は「オラクルから測ってカタログを作る」: 本物のmysqld(配布tarballを`--initialize`で起こす。PGのembedded-postgresの役)に対して、関数名一覧×引数型の組み合わせをプリペアドステートメントのメタデータで問い、結果型の表を生成して埋め込む。PGの`.dat`由来カタログの経験則版。手で写す型規則は、測った表で差分検査する - 回帰コーパスはMySQL自身の`mysql-test/t/*.test`。パーサの受理率と、オラクルとの差分probeの両方に使う - 順序: パーサのスパイク(受理率で手段を裁定)→ 字句解析器 → CST→AST → スキーマローダー(CREATE TABLEの部分集合、`mysqldump`の正準形)→ アナライザーの型規則(mysqldをオラクルに差分テスト)→ テンプレート・vet・義務の結線(ここは共有部分なので薄い)。1.2の後 From 83f1cd9324a74dcfbd3239af574dbb1d4ca257ef Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:44:09 +0900 Subject: [PATCH 10/27] =?UTF-8?q?design:=20MySQL=20=E2=80=94=20the=20built?= =?UTF-8?q?-in=20function=20catalog=20is=20extracted=20too:=20item=5Fcreat?= =?UTF-8?q?e.cc's=20func=5Farray=20(347=20names=20with=20arities),=20the?= =?UTF-8?q?=2081=20keyword=20functions=20in=20sql=5Fyacc.yy's=20actions,?= =?UTF-8?q?=20the=20Item=20class=20hierarchy=20for=20the=20result=20catego?= =?UTF-8?q?ry,=20and=20the=20declarative=20resolve=5Ftype=20calls=20for=20?= =?UTF-8?q?parameter=20types=20and=20nullability;=20a=20real=20mysqld=20pr?= =?UTF-8?q?obes=20what=20is=20left=20and=20checks=20the=20rest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design.md b/docs/design.md index 401958f..de42830 100644 --- a/docs/design.md +++ b/docs/design.md @@ -131,7 +131,7 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em - パーサと字句解析器(裁定 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の判定には効かないので初期は読み飛ばす - - カタログ: MySQLには`pg_proc`に当たるものがない(組み込み関数のシグネチャは`item_create.cc`とItemクラスのC++にしかない)。型規則も暗黙変換だらけで仕様文書はPGの§10ほど機械的でない。方針は「オラクルから測ってカタログを作る」: 本物のmysqld(配布tarballを`--initialize`で起こす。PGのembedded-postgresの役)に対して、関数名一覧×引数型の組み合わせをプリペアドステートメントのメタデータで問い、結果型の表を生成して埋め込む。PGの`.dat`由来カタログの経験則版。手で写す型規則は、測った表で差分検査する + - カタログ(裁定 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`の型照合は静的型がある言語で足す層(動的型の言語では実行時の行マッピング検査か、型ヒントがあれば静的に) From 6f08f1a8180d4cfa04575174a91183fafca7f681 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:47:20 +0900 Subject: [PATCH 11/27] =?UTF-8?q?design:=20MySQL=20support=20ships=20as=20?= =?UTF-8?q?a=20separate=20GPLv2=20module,=20sqlshape-mysql=20=E2=80=94=20t?= =?UTF-8?q?he=20MySQL=20server=20is=20GPLv2=20and=20cannot=20be=20combined?= =?UTF-8?q?=20with=20the=20Apache=202.0=20sqlshape;=20the=20runtime=20user?= =?UTF-8?q?s=20link=20stays=20Apache,=20the=20parser=20is=20only=20needed?= =?UTF-8?q?=20by=20the=20tool,=20shared=20parts=20are=20imported=20Apache-?= =?UTF-8?q?to-GPL;=20a=20parser=20subprocess=20(gray),=20an=20Apache-licen?= =?UTF-8?q?sed=20compatible=20parser=20(drops=20the=20principle)=20and=20h?= =?UTF-8?q?and-written=20grammar=20(drops=20it=20where=20it=20matters=20mo?= =?UTF-8?q?st)=20were=20set=20aside?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/design.md b/docs/design.md index de42830..48b4d7c 100644 --- a/docs/design.md +++ b/docs/design.md @@ -128,6 +128,7 @@ 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の判定には効かないので初期は読み飛ばす From 556ca57abf50d2653258014d3e3dcd9c5d4d647f Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 09:58:24 +0900 Subject: [PATCH 12/27] =?UTF-8?q?PostgreSQL=2018=20DDL=20loads:=20named=20?= =?UTF-8?q?NOT=20NULL=20constraints=20(CONSTRAINT=20nn=20NOT=20NULL=20col,?= =?UTF-8?q?=20dropped=20by=20DROP=20CONSTRAINT),=20ENFORCED=20/=20NOT=20EN?= =?UTF-8?q?FORCED=20on=20CHECK=20and=20FOREIGN=20KEY=20(Constraint.NotEnfo?= =?UTF-8?q?rced=20=E2=80=94=20a=20NOT=20ENFORCED=20constraint=20is=20no=20?= =?UTF-8?q?failure=20mode),=20ALTER=20CONSTRAINT=20...=20ENFORCED=20/=20DE?= =?UTF-8?q?FERRABLE,=20WITHOUT=20OVERLAPS=20keys=20and=20PERIOD=20foreign?= =?UTF-8?q?=20keys=20(rendered=20back=20as=20such),=20VIRTUAL=20generated?= =?UTF-8?q?=20columns=20(Column.GeneratedVirtual;=2018's=20default=20when?= =?UTF-8?q?=20neither=20word=20is=20written)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A 17 tree is read into 18's shape with 18's new fields set to what 17 meant: constraints enforced, generated columns stored. The regress probe parsed every statement with the default (17) grammar to classify it, so 18-only DDL was "unparsed" and never reached the analyzer's schema — 321 of 18's 420 hits were downstream of that; the probe now parses with the probed version. 18 probe: 102 hits, 45 of them RETURNING OLD / NEW. --- internal/analyze/regress_test.go | 12 ++--- internal/analyze/violation.go | 10 ++-- internal/analyze/violation_test.go | 46 ++++++++++++++++ internal/diff/diff.go | 12 +++++ internal/migrate/migrate_test.go | 7 +++ internal/migrate/render.go | 38 +++++++++++-- internal/pgparse/upgrade.go | 15 +++++- internal/pgparse/version_test.go | 14 +++++ internal/schema/pg18_test.go | 86 ++++++++++++++++++++++++++++++ internal/schema/schema.go | 81 ++++++++++++++++++++++++---- 10 files changed, 293 insertions(+), 28 deletions(-) create mode 100644 internal/schema/pg18_test.go diff --git a/internal/analyze/regress_test.go b/internal/analyze/regress_test.go index dae2b3c..c10962e 100644 --- a/internal/analyze/regress_test.go +++ b/internal/analyze/regress_test.go @@ -471,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 := pgparse.Parse(sql) + tree, err := p.version.Parse(sql) if err != nil || len(tree.Stmts) == 0 { p.count("unparsed") exec(sql) @@ -532,7 +532,7 @@ func (p *regressProbe) runFile(o *oracle.Oracle, dbName, name string, promote, q if s == nil { s = loadRegressSchema(p.version, &ddl) } - drops := dropTemps(stmts[:i]) + drops := dropTemps(p.version, stmts[:i]) if st.DiscardStmt.Target == pgparse.DiscardMode_DISCARD_ALL { drops = append(drops, sessionResets...) } @@ -616,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 } @@ -628,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 := pgparse.Parse(sql) + tree, err := v.Parse(sql) if err != nil || len(tree.Stmts) != 1 { continue } @@ -758,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 := pgparse.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/violation.go b/internal/analyze/violation.go index b07ffd6..57f33a8 100644 --- a/internal/analyze/violation.go +++ b/internal/analyze/violation.go @@ -196,11 +196,11 @@ func (a *analyzer) insertViolations(ins *pgparse.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: @@ -272,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: @@ -346,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/diff/diff.go b/internal/diff/diff.go index 772bd53..a6ac4b7 100644 --- a/internal/diff/diff.go +++ b/internal/diff/diff.go @@ -337,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 } @@ -373,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 } diff --git a/internal/migrate/migrate_test.go b/internal/migrate/migrate_test.go index 654da0e..cbfa1fb 100644 --- a/internal/migrate/migrate_test.go +++ b/internal/migrate/migrate_test.go @@ -361,6 +361,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 f1af23d..c4dd8e8 100644 --- a/internal/migrate/render.go +++ b/internal/migrate/render.go @@ -28,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") @@ -91,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 } @@ -109,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 { @@ -130,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': diff --git a/internal/pgparse/upgrade.go b/internal/pgparse/upgrade.go index 91e9b2b..85a8cec 100644 --- a/internal/pgparse/upgrade.go +++ b/internal/pgparse/upgrade.go @@ -52,8 +52,21 @@ func (r rewrite) walk(node any) { var upgrades = map[Version]rewrite{ // 17 -> 18 PG17: { - keys: []string{`"returningList"`, `"inhcount"`, `"rctype"`, `"SinglePartitionSpec"`}, + 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") diff --git a/internal/pgparse/version_test.go b/internal/pgparse/version_test.go index 9573b73..5fb5484 100644 --- a/internal/pgparse/version_test.go +++ b/internal/pgparse/version_test.go @@ -35,6 +35,20 @@ func TestUpgrade17(t *testing.T) { 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) { 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/schema.go b/internal/schema/schema.go index f4e16fd..36a7afd 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -118,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). @@ -242,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. @@ -279,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. @@ -1253,17 +1267,23 @@ func (s *Schema) addColumn(rel *Relation, cd *pgparse.ColumnDef) { s.createOwnedSequence(rel, cd.Colname, cd.GetLocation()) case pgparse.ConstrType_CONSTR_GENERATED: col.Generated = c.RawExpr + 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 pgparse.ConstrType_CONSTR_UNIQUE: s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Unique, Columns: []string{col.Name}, NullsNotDistinct: c.NullsNotDistinct, Deferrable: c.Deferrable}) case pgparse.ConstrType_CONSTR_CHECK: - s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Check, Columns: []string{col.Name}, Expr: c.RawExpr}) + 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 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: @@ -1274,7 +1294,7 @@ func (s *Schema) addColumn(rel *Relation, cd *pgparse.ColumnDef) { 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] } @@ -1307,16 +1327,34 @@ func (s *Schema) addTableConstraint(rel *Relation, c *pgparse.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 pgparse.ConstrType_CONSTR_UNIQUE: - s.addConstraint(rel, &Constraint{Name: c.Conname, Kind: Unique, Columns: strs(c.Keys), NullsNotDistinct: c.NullsNotDistinct, Deferrable: c.Deferrable}) + 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}) + 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) @@ -1541,9 +1579,30 @@ func (s *Schema) alterTable(st *pgparse.AlterTableStmt, loc int32) { 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 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 @@ -1665,7 +1724,7 @@ func (s *Schema) alterTable(st *pgparse.AlterTableStmt, loc int32) { 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_AlterConstraint, pgparse.AlterTableType_AT_ResetRelOptions, + 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, From 89e9527ad589283d012aacbf6283679008450597 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 10:07:36 +0900 Subject: [PATCH 13/27] =?UTF-8?q?RETURNING=20old=20/=20new=20(PostgreSQL?= =?UTF-8?q?=2018):=20the=20row=20before=20and=20after=20the=20write,=20and?= =?UTF-8?q?=20the=20aliases=20of=20RETURNING=20WITH=20(OLD=20AS=20o,=20NEW?= =?UTF-8?q?=20AS=20n),=20resolve=20as=20row=20variables=20=E2=80=94=20reac?= =?UTF-8?q?hed=20only=20by=20a=20qualified=20reference=20(old.col,=20old.*?= =?UTF-8?q?,=20old,=20old.ctid),=20never=20by=20a=20bare=20column=20name?= =?UTF-8?q?=20or=20a=20bare=20*;=20old=20does=20not=20exist=20for=20an=20i?= =?UTF-8?q?nserted=20row=20and=20new=20not=20for=20a=20deleted=20one,=20so?= =?UTF-8?q?=20those=20columns=20and=20whole=20rows=20are=20nullable=20(the?= =?UTF-8?q?=20oracle=20reports=20the=20column's=20own=20NOT=20NULL=20there?= =?UTF-8?q?,=20which=20is=20all=20its=20Describe=20knows)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A FROM item named old or new hides the default alias; an alias the clause chooses may not clash with a FROM item or with the other alias (42712); OLD or NEW written twice is 42601, as is a RETURNING that expands to no column. A 17 schema has no row variables. 18 probe: 67 → 62 hits, 10 of them the nullability the oracle cannot see. --- internal/analyze/expr.go | 4 +- internal/analyze/returning18_test.go | 100 +++++++++++++++++++++++++++ internal/analyze/scope.go | 29 +++++++- internal/analyze/stmt.go | 74 ++++++++++++++++++-- 4 files changed, 198 insertions(+), 9 deletions(-) create mode 100644 internal/analyze/returning18_test.go diff --git a/internal/analyze/expr.go b/internal/analyze/expr.go index 679964a..098bc0e 100644 --- a/internal/analyze/expr.go +++ b/internal/analyze/expr.go @@ -601,7 +601,7 @@ func (a *analyzer) columnRef(c *pgparse.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) @@ -638,7 +638,7 @@ func (a *analyzer) columnRef(c *pgparse.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 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 3038027..3e54aae 100644 --- a/internal/analyze/scope.go +++ b/internal/analyze/scope.go @@ -42,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 @@ -185,6 +188,10 @@ 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]*pgparse.WindowDef // agg: this level's target list / HAVING has an aggregate (one row without GROUP BY) @@ -261,6 +268,11 @@ func (sc *scope) byAlias(alias string) *rte { } } } + for _, v := range sc.retVars { + if v.alias == alias { + return v + } + } return nil } @@ -281,6 +293,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 } @@ -648,8 +667,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 32d564c..8962bff 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -1271,10 +1271,66 @@ func (a *analyzer) assign(e *expr, col *schema.Column, relName string, at int32) return nil } -func (a *analyzer) returning(list []*pgparse.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") @@ -1284,7 +1340,12 @@ func (a *analyzer) returning(list []*pgparse.Node, sc *scope) ([]rteCol, *Error) 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 *pgparse.InsertStmt, sc *scope) ([]rteCol, *Error) { @@ -1459,7 +1520,8 @@ func (a *analyzer) insertStmt(ins *pgparse.InsertStmt, sc *scope) ([]rteCol, *Er } } } - return a.returning(ins.GetReturningClause().GetExprs(), 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 []*pgparse.Node, rel *schema.Relation, sc *scope) *Error { @@ -1610,7 +1672,7 @@ func (a *analyzer) updateStmt(upd *pgparse.UpdateStmt, sc *scope) ([]rteCol, *Er return nil, err } a.recordFixed(sc, upd.WhereClause) - return a.returning(upd.GetReturningClause().GetExprs(), sc) + return a.returning(upd.ReturningClause, sc, target, false, false) } func (a *analyzer) deleteStmt(del *pgparse.DeleteStmt, sc *scope) ([]rteCol, *Error) { @@ -1647,7 +1709,7 @@ func (a *analyzer) deleteStmt(del *pgparse.DeleteStmt, sc *scope) ([]rteCol, *Er return nil, err } a.recordFixed(sc, del.WhereClause) - return a.returning(del.GetReturningClause().GetExprs(), sc) + return a.returning(del.ReturningClause, sc, target, false, true) } // figureColname implements PG's FigureColname for unaliased target entries. @@ -2008,7 +2070,7 @@ func (a *analyzer) mergeStmt(m *pgparse.MergeStmt, sc *scope) ([]rteCol, *Error) } ret := newScope(sc) ret.items = []*rte{source, target} // RETURNING * expands the source first (transformMergeStmt's rtable order) - return a.returning(m.GetReturningClause().GetExprs(), ret) + return a.returning(m.ReturningClause, ret, target, a.mergeActions&mergeInsert != 0, a.mergeActions&mergeDelete != 0) } const ( From 0cb48a006aa1e23eb24b8412aab7b42d2e7096c9 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 10:12:49 +0900 Subject: [PATCH 14/27] =?UTF-8?q?PostgreSQL=2018:=20an=20abbreviation=20th?= =?UTF-8?q?e=20session=20time=20zone=20itself=20uses=20(LMT=20before=20the?= =?UTF-8?q?=20zone's=20first=20transition)=20is=20a=20valid=20zone=20in=20?= =?UTF-8?q?a=20datetime=20literal,=20as=2018=20accepts=20it;=20and=20the?= =?UTF-8?q?=2018=20regress=20probe=20has=20its=20baseline=20=E2=80=94=2058?= =?UTF-8?q?=20hits=20over=2023,384=20statements,=2010=20of=20them=20the=20?= =?UTF-8?q?RETURNING=20old=20/=20new=20nullability=20the=20oracle=20cannot?= =?UTF-8?q?=20see,=20the=20rest=2017's=20known=20set=20plus=20a=20handful?= =?UTF-8?q?=20of=2018=20checks=20not=20yet=20ported=20(JSON=5FVALUE=20coll?= =?UTF-8?q?ation=2042P21,=20jsonpath=20argument=20type=2042804,=20DISTINCT?= =?UTF-8?q?=20ON=20with=20grouping=20sets,=20aclitem=20input,=20an=20outer?= =?UTF-8?q?=20aggregate=20over=20a=20nested=20CTE,=20one=20horology=20inpu?= =?UTF-8?q?t=20form)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pg18 CI job now asserts that baseline. --- internal/analyze/datetime.go | 29 ++++++++++-- .../analyze/testdata/regress_baseline_18.txt | 44 +++++++++++++++++++ 2 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 internal/analyze/testdata/regress_baseline_18.txt diff --git a/internal/analyze/datetime.go b/internal/analyze/datetime.go index 6af3308..2b41f16 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,6 +83,9 @@ 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 } type dtExtra struct { @@ -600,13 +605,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 +628,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) { @@ -1316,7 +1338,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 } @@ -1589,7 +1611,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 } @@ -2344,6 +2366,7 @@ func (a *analyzer) dtSession() *dtSession { } s := &dtSession{dateOrder: "mdy", tz: time.Local} if a.s != nil { + s.sessionAbbrevs = a.s.Version.Or() >= pgparse.PG18 order, style, zone := a.s.DateTimeSettings() if order != "" { s.dateOrder = order diff --git a/internal/analyze/testdata/regress_baseline_18.txt b/internal/analyze/testdata/regress_baseline_18.txt new file mode 100644 index 0000000..2c7bb0e --- /dev/null +++ b/internal/analyze/testdata/regress_baseline_18.txt @@ -0,0 +1,44 @@ +# 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 +collate.icu.utf8 LENIENT 42P21 0eb6040c1d50 -- error +collate.icu.utf8 LENIENT 42P21 1d75c34f31b8 -- error +collate.icu.utf8 LENIENT 42P21 36e6cd433b6c -- true +collate.icu.utf8 LENIENT 42P21 8e4044a9ec64 -- true +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 +groupingsets STRICT 42P10 8387a629e5de select distinct on (a, b+1) a, b+1 +horology LENIENT 22007 390bda323cf4 SELECT timestamp with time zone 'J2452271 T X03456.001e6-08' +horology LENIENT 22007 a6e27d4f5d0f -- More examples we used to accept and should not +merge DIFF nullability 3f3fcfc3ff38 MERGE INTO sq_target t +privileges LENIENT 22P02 17316bfd0c38 SELECT '""=r*/""'::aclitem +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) +sqljson_queryfuncs LENIENT 42804 5396694006d2 SELECT JSON_QUERY(jsonb '{"a": 123}', ('$' || '.' || 'a' || NULL)::date WITH WRAPPER) +sqljson_queryfuncs LENIENT 42804 6008ea307fa0 SELECT json_value('"aaa"', jsonpaths RETURNING json) FROM jsonpaths +stats_import STRICT 42P01 47102b2ef2b6 SELECT relname, relpages, reltuples, relallvisible, relallfrozen +tablesample LENIENT 42704 4d952dc0cc51 -- errors +temp STRICT 42P01 aecdb79a778f SELECT * FROM temptest +with CODE 0A000->42803 cb57c38e3e5e -- From 19cb5568739c6d027912caab653520b34f299e86 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 10:30:15 +0900 Subject: [PATCH 15/27] =?UTF-8?q?schema.sql=20must=20declare=20its=20Postg?= =?UTF-8?q?reSQL=20version:=20ReadSource=20refuses=20a=20file=20without=20?= =?UTF-8?q?`--=20sqlshape:=20postgres=20N`=20(schema=20text=20built=20in?= =?UTF-8?q?=20code=20keeps=20pgparse.Default),=20and=20the=20migration=20s?= =?UTF-8?q?ide=20follows=20the=20declaration=20=E2=80=94=20the=20canonical?= =?UTF-8?q?=20server,=20pg=5Fdump's=20text=20(which=20carries=20no=20decla?= =?UTF-8?q?ration)=20and=20the=20consumer=20index=20are=20all=20judged=20w?= =?UTF-8?q?ith=20the=20declared=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The regress probe's crash skip was a PG 17 workaround applied to 18 as well; 18 takes those MERGE statements, so it is 17-only and the "4 skipped (oracle crash)" are gone. Every schema.sql in the repository opens with the declaration; README, checks.md / checks.ja.md (Part 3) and the CHANGELOG say so. --- CHANGELOG.md | 10 ++++ README.md | 4 ++ docs/checks.ja.md | 22 +++++++++ docs/checks.md | 28 +++++++++++ examples/1-tables/schema.sql | 1 + examples/2-views/schema.sql | 1 + examples/3-database-api/schema.sql | 1 + examples/4-everything/schema.sql | 1 + internal/analyze/regress_test.go | 8 ++-- internal/analyze/testdata/schema.sql | 1 + internal/cli/adv_check_test.go | 8 ++-- internal/cli/apply.go | 10 ++-- internal/cli/check_test.go | 6 +-- internal/cli/cli.go | 22 +++++++-- internal/cli/cli_extra_test.go | 48 ++++++++++--------- internal/cli/cli_test.go | 12 +++-- internal/cli/consumers.go | 7 ++- internal/cli/diff.go | 10 ++-- internal/cli/verify.go | 8 +++- internal/dump/dump.go | 29 +++++++++-- internal/dump/dump_test.go | 9 ++-- internal/migrate/migrate_test.go | 3 +- internal/oracle/testdata/schema.sql | 1 + internal/schema/source.go | 16 +++++++ internal/schema/source_test.go | 7 ++- internal/schema/testdata/schema.sql | 1 + internal/vet/testdata/adv_context_schema.sql | 1 + .../vet/testdata/adv_obligation_schema.sql | 1 + internal/vet/testdata/adv_param_schema.sql | 1 + internal/vet/testdata/ctx_schema.sql | 1 + internal/vet/testdata/loaderrors_schema.sql | 1 + internal/vet/testdata/otherschema_schema.sql | 1 + internal/vet/testdata/plpgsql_schema.sql | 1 + internal/vet/testdata/rls_schema.sql | 1 + internal/vet/testdata/schema.sql | 1 + 35 files changed, 221 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1de452b..405804b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,18 @@ release it is a candidate for. ## [Unreleased] +### 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. + `pgtest` and the migration commands run the declared version's PostgreSQL. + ### 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. diff --git a/README.md b/README.md index f78330f..fdaaea8 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,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, @@ -64,6 +65,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 { diff --git a/docs/checks.ja.md b/docs/checks.ja.md index d72014a..a827d94 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) - [スキーマ自体の問題](#スキーマ自体の問題) @@ -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..0c589e0 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) @@ -1240,6 +1241,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/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/internal/analyze/regress_test.go b/internal/analyze/regress_test.go index c10962e..0fade63 100644 --- a/internal/analyze/regress_test.go +++ b/internal/analyze/regress_test.go @@ -393,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`) ) @@ -479,7 +479,7 @@ 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 } 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/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..6ae3470 100644 --- a/internal/cli/apply.go +++ b/internal/cli/apply.go @@ -48,12 +48,16 @@ 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 } @@ -77,7 +81,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_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..f175180 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 } @@ -76,7 +80,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/verify.go b/internal/cli/verify.go index f4a96fb..651bca8 100644 --- a/internal/cli/verify.go +++ b/internal/cli/verify.go @@ -32,12 +32,16 @@ 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 } diff --git a/internal/dump/dump.go b/internal/dump/dump.go index 5116cba..c7773fe 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,24 @@ func Load(ctx context.Context, connString string, seeds *schema.Schema) (*schema return s, text, 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 +215,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 +231,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 +281,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 cbfa1fb..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) 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/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/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 ~ '@'); From b01ebbd722bd737f693e85e47bb29bca526c2c86 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 10:49:09 +0900 Subject: [PATCH 16/27] PostgreSQL 18's new checks, judged as 18 does and as 17 did: a JSON_VALUE DEFAULT whose collation is not the RETURNING type's (42P21; a domain now carries its COLLATE, and a cast to it takes it), a JSON path that is not a jsonpath or a string (42804), datetime number fields of anything but digits and decimal points and fractions with anything but digits (22007), aclitem's getid where "" opens and closes a name so `/""` is a missing grantor (22P02; the aclitem input syntax is checked at all now), and an outer-level aggregate over a CTE of the subquery it is written in (0A000) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DISTINCT ON is matched against ORDER BY by expression rather than by the expression's position in the text — an analyzer bug 18's corpus found, in effect for 17 too. The 18 baseline is down to 47: 17's known set, the RETURNING old / new nullability the oracle cannot see, and one rule-rewritten DELETE RETURNING where the oracle's Describe returns nothing while the analyzer raises 0A000 as PostgreSQL does. --- internal/analyze/datetime.go | 79 ++++++++++------- internal/analyze/expr.go | 37 ++++++++ internal/analyze/json.go | 18 ++++ internal/analyze/literal.go | 5 ++ internal/analyze/literal_acl.go | 75 ++++++++++++++++ internal/analyze/nodeeq.go | 38 ++++++++ internal/analyze/pg18_checks_test.go | 88 +++++++++++++++++++ internal/analyze/scope.go | 10 ++- internal/analyze/stmt.go | 6 +- .../analyze/testdata/regress_baseline_18.txt | 11 --- internal/analyze/zz_pg18_probe_test.go | 55 ++++++++++++ internal/catalog/catalog.go | 1 + internal/schema/schema.go | 4 + internal/schema/types.go | 2 + 14 files changed, 381 insertions(+), 48 deletions(-) create mode 100644 internal/analyze/literal_acl.go create mode 100644 internal/analyze/nodeeq.go create mode 100644 internal/analyze/pg18_checks_test.go create mode 100644 internal/analyze/zz_pg18_probe_test.go diff --git a/internal/analyze/datetime.go b/internal/analyze/datetime.go index 2b41f16..570d9f9 100644 --- a/internal/analyze/datetime.go +++ b/internal/analyze/datetime.go @@ -86,8 +86,14 @@ type dtSession struct { // 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 } @@ -424,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 @@ -435,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 } @@ -958,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 @@ -988,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 { @@ -1006,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 != "" { @@ -1023,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 { @@ -1035,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 @@ -1061,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 } @@ -1130,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 @@ -1144,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)) } @@ -1242,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) @@ -1264,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) { @@ -1296,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 } @@ -1304,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 { @@ -1324,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: @@ -1509,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 } @@ -1531,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: @@ -1560,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 } @@ -1568,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 } @@ -1590,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 } @@ -1599,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 } @@ -1786,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 { @@ -1805,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 { @@ -1857,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] == '-' { @@ -2367,6 +2381,7 @@ 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 098bc0e..93d5044 100644 --- a/internal/analyze/expr.go +++ b/internal/analyze/expr.go @@ -678,6 +678,18 @@ func (a *analyzer) columnRef(c *pgparse.ColumnRef, 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) @@ -2016,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 { @@ -2069,6 +2097,15 @@ func (a *analyzer) settleAggFrame(fr *aggFrame, f *pgparse.FuncCall) (*scope, *E 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 { diff --git a/internal/analyze/json.go b/internal/analyze/json.go index b451a28..711b91c 100644 --- a/internal/analyze/json.go +++ b/internal/analyze/json.go @@ -151,6 +151,17 @@ func (a *analyzer) jsonBehavior(b *pgparse.JsonBehavior, sc *scope, want catalog 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 } @@ -163,6 +174,13 @@ func (a *analyzer) jsonPathspec(n *pgparse.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)) } diff --git a/internal/analyze/literal.go b/internal/analyze/literal.go index 97a6bb2..b63824c 100644 --- a/internal/analyze/literal.go +++ b/internal/analyze/literal.go @@ -13,6 +13,7 @@ import ( "unicode/utf8" "github.com/kr9ly/sqlshape/internal/catalog" + "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -118,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 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/scope.go b/internal/analyze/scope.go index 3e54aae..2521844 100644 --- a/internal/analyze/scope.go +++ b/internal/analyze/scope.go @@ -251,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. diff --git a/internal/analyze/stmt.go b/internal/analyze/stmt.go index 8962bff..5eb040e 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -4,7 +4,6 @@ import ( "strconv" "strings" - "google.golang.org/protobuf/proto" "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/pgparse" @@ -169,7 +168,7 @@ func (a *analyzer) selectStmt(sel *pgparse.SelectStmt, sc *scope) ([]rteCol, *Er 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 } @@ -778,7 +777,8 @@ func (a *analyzer) fromItem(n *pgparse.Node, sc *scope) (*rte, *Error) { 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) } diff --git a/internal/analyze/testdata/regress_baseline_18.txt b/internal/analyze/testdata/regress_baseline_18.txt index 2c7bb0e..4e7eee8 100644 --- a/internal/analyze/testdata/regress_baseline_18.txt +++ b/internal/analyze/testdata/regress_baseline_18.txt @@ -1,20 +1,12 @@ # 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 -collate.icu.utf8 LENIENT 42P21 0eb6040c1d50 -- error -collate.icu.utf8 LENIENT 42P21 1d75c34f31b8 -- error -collate.icu.utf8 LENIENT 42P21 36e6cd433b6c -- true -collate.icu.utf8 LENIENT 42P21 8e4044a9ec64 -- true 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 -groupingsets STRICT 42P10 8387a629e5de select distinct on (a, b+1) a, b+1 -horology LENIENT 22007 390bda323cf4 SELECT timestamp with time zone 'J2452271 T X03456.001e6-08' -horology LENIENT 22007 a6e27d4f5d0f -- More examples we used to accept and should not merge DIFF nullability 3f3fcfc3ff38 MERGE INTO sq_target t -privileges LENIENT 22P02 17316bfd0c38 SELECT '""=r*/""'::aclitem regproc LENIENT 42704 855ab3d3e15a SELECT regrole('"Nonexistent"') regproc LENIENT 42704 8c8130752d2d SELECT regrole('Nonexistent') regproc LENIENT 42704 c50d8cbb5179 -- schemaname not applicable @@ -36,9 +28,6 @@ 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) -sqljson_queryfuncs LENIENT 42804 5396694006d2 SELECT JSON_QUERY(jsonb '{"a": 123}', ('$' || '.' || 'a' || NULL)::date WITH WRAPPER) -sqljson_queryfuncs LENIENT 42804 6008ea307fa0 SELECT json_value('"aaa"', jsonpaths RETURNING json) FROM jsonpaths stats_import STRICT 42P01 47102b2ef2b6 SELECT relname, relpages, reltuples, relallvisible, relallfrozen tablesample LENIENT 42704 4d952dc0cc51 -- errors temp STRICT 42P01 aecdb79a778f SELECT * FROM temptest -with CODE 0A000->42803 cb57c38e3e5e -- 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/catalog.go b/internal/catalog/catalog.go index 7eb2ef0..420296d 100644 --- a/internal/catalog/catalog.go +++ b/internal/catalog/catalog.go @@ -41,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 diff --git a/internal/schema/schema.go b/internal/schema/schema.go index 36a7afd..d2f62f5 100644 --- a/internal/schema/schema.go +++ b/internal/schema/schema.go @@ -1020,6 +1020,10 @@ func (s *Schema) createDomain(st *pgparse.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() { 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 { From 2162eea3c17050600c0a274feb7cd6a32026bafb Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 10:49:48 +0900 Subject: [PATCH 17/27] gofmt --- internal/analyze/stmt.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/analyze/stmt.go b/internal/analyze/stmt.go index 5eb040e..1747f8b 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -4,7 +4,6 @@ import ( "strconv" "strings" - "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" From 90ea8f41aa594d0bbdfa7d2cdee3777d3eecaee8 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 10:56:50 +0900 Subject: [PATCH 18/27] =?UTF-8?q?release:=20one=20job=20cross-compiles=20e?= =?UTF-8?q?very=20target=20=E2=80=94=20linux,=20darwin=20and=20windows,=20?= =?UTF-8?q?amd64=20and=20arm64=20each=20(Windows=20and=20Intel=20macOS=20a?= =?UTF-8?q?re=20new;=20a=20plain=20Go=20build=20needs=20no=20per-platform?= =?UTF-8?q?=20runner)=20=E2=80=94=20packs=20tar.gz=20/=20zip,=20smoke-test?= =?UTF-8?q?s=20the=20runner's=20own=20binary=20and=20publishes=20with=20ch?= =?UTF-8?q?ecksums?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 69 ++++++++++++++--------------------- CHANGELOG.md | 2 + README.md | 4 +- 3 files changed, 31 insertions(+), 44 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b8bb3c9..8b4dd84 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,11 +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 is a plain Go build (libpg_query runs as WebAssembly, no cgo), so it could be -# cross-compiled from one runner; each platform still builds on its own runner so the smoke -# test runs on the platform it ships for. +# 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. @@ -19,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,40 +30,31 @@ jobs: - name: Build env: CGO_ENABLED: "0" - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} 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/CHANGELOG.md b/CHANGELOG.md index 405804b..0187490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,8 @@ release it is a candidate for. - 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 diff --git a/README.md b/README.md index fdaaea8..80e61a5 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,8 @@ $ sqlshape version ``` It is a plain Go build: PostgreSQL's parser (libpg_query) is embedded as WebAssembly and runs on -wazero, so `go install` needs no C compiler. Prebuilt binaries for Linux (amd64, arm64) and macOS -(Apple Silicon) are on the [releases page](https://github.com/kr9ly/sqlshape/releases). +wazero, so `go install` needs no C compiler. Prebuilt binaries for Linux, macOS and Windows (amd64 +and arm64 each) are on the [releases page](https://github.com/kr9ly/sqlshape/releases). The runtime is an ordinary Go module: From 29cc70838667250bc5b3f3ba6484324d83bb44b7 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:03:03 +0900 Subject: [PATCH 19/27] a temporal key (WITHOUT OVERLAPS, PostgreSQL 18) proves a single row when its scalar columns are fixed by equality and its range column equals a known value or contains a known point of the element type (valid_at @> $1::date, also through a join on another single row's column): no two rows with the same scalar values have overlapping ranges; a range on the known side (possibly empty) or an overlap does not do Tests for 18's DML: a PERIOD foreign key raises 23503 like any other, a VIRTUAL generated column reads like a column and is never assigned; an UPDATE of a generated column says "can only be updated to DEFAULT" as PostgreSQL does. --- docs/checks.ja.md | 2 +- docs/checks.md | 7 ++- internal/analyze/card.go | 91 ++++++++++++++++++++++++++++++++-- internal/analyze/pg18_test.go | 93 +++++++++++++++++++++++++++++++++++ internal/analyze/stmt.go | 3 ++ 5 files changed, 189 insertions(+), 7 deletions(-) create mode 100644 internal/analyze/pg18_test.go diff --git a/docs/checks.ja.md b/docs/checks.ja.md index a827d94..e3c6bad 100644 --- a/docs/checks.ja.md +++ b/docs/checks.ja.md @@ -696,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つである。既知側が範囲だと足りない(空の範囲はどの範囲にも含まれる)。重なり(`&&`)でも足りない。 #### すべての分岐で証明できなければならない diff --git a/docs/checks.md b/docs/checks.md index 0c589e0..6a4857e 100644 --- a/docs/checks.md +++ b/docs/checks.md @@ -815,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 diff --git a/internal/analyze/card.go b/internal/analyze/card.go index 03897ad..c720971 100644 --- a/internal/analyze/card.go +++ b/internal/analyze/card.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" + "github.com/kr9ly/sqlshape/internal/catalog" "github.com/kr9ly/sqlshape/internal/pgparse" "github.com/kr9ly/sqlshape/internal/schema" ) @@ -51,10 +52,16 @@ 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. @@ -215,6 +222,68 @@ func (p *prover) addQuals(n *pgparse.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) { @@ -515,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 @@ -579,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 } } 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/stmt.go b/internal/analyze/stmt.go index 1747f8b..b37c0bd 100644 --- a/internal/analyze/stmt.go +++ b/internal/analyze/stmt.go @@ -1228,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 { From 714aedaa92b9824d7e3d661270c6a32dfe73ba44 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:09:43 +0900 Subject: [PATCH 20/27] =?UTF-8?q?diff=20/=20apply=20/=20verify-schema=20wa?= =?UTF-8?q?rn=20on=20stderr=20when=20the=20database=20runs=20another=20Pos?= =?UTF-8?q?tgreSQL=20major=20version=20than=20schema.sql=20declares=20?= =?UTF-8?q?=E2=80=94=20the=20DDL=20is=20still=20derived=20and=20judged=20b?= =?UTF-8?q?y=20the=20declared=20version's=20rules,=20and=20the=20message?= =?UTF-8?q?=20says=20which=20line=20to=20change=20if=20the=20database=20is?= =?UTF-8?q?=20the=20one=20meant;=20a=20database=20that=20cannot=20be=20ask?= =?UTF-8?q?ed=20leaves=20the=20report=20to=20the=20step=20that=20follows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- docs/migrations.ja.md | 2 +- docs/migrations.md | 10 +++++--- internal/cli/apply.go | 1 + internal/cli/diff.go | 1 + internal/cli/serverversion.go | 41 ++++++++++++++++++++++++++++++ internal/cli/serverversion_test.go | 29 +++++++++++++++++++++ internal/cli/verify.go | 1 + internal/dump/dump.go | 14 ++++++++++ 9 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 internal/cli/serverversion.go create mode 100644 internal/cli/serverversion_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 0187490..7a7ceea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,8 @@ release it is a candidate for. 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. - `pgtest` and the migration commands run the declared version's PostgreSQL. + `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. ### Changed 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/internal/cli/apply.go b/internal/cli/apply.go index 6ae3470..1bf99c0 100644 --- a/internal/cli/apply.go +++ b/internal/cli/apply.go @@ -64,6 +64,7 @@ func runApply(ctx context.Context, args []string, stdout, stderr io.Writer) erro 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 diff --git a/internal/cli/diff.go b/internal/cli/diff.go index f175180..c8d3c5e 100644 --- a/internal/cli/diff.go +++ b/internal/cli/diff.go @@ -57,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 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 651bca8..542f932 100644 --- a/internal/cli/verify.go +++ b/internal/cli/verify.go @@ -48,6 +48,7 @@ func runVerify(ctx context.Context, args []string, stdout, stderr io.Writer) 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/dump/dump.go b/internal/dump/dump.go index c7773fe..a0e7330 100644 --- a/internal/dump/dump.go +++ b/internal/dump/dump.go @@ -109,6 +109,20 @@ 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 { From e4e55e83c6e4e5c5767f28dc91bc936f9dc33997 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:14:55 +0900 Subject: [PATCH 21/27] =?UTF-8?q?design:=20PostgreSQL=20version=20support?= =?UTF-8?q?=20is=20a=20decision,=20not=20an=20open=20item=20=E2=80=94=20sc?= =?UTF-8?q?hema.sql=20declares=20the=20version=20(required),=20one=20parse?= =?UTF-8?q?r=20/=20catalog=20/=20oracle=20/=20corpus=20per=20major=20versi?= =?UTF-8?q?on,=20one=20set=20of=20node=20types=20read=20from=20JSON=20with?= =?UTF-8?q?=20per-version=20rewrites,=20version=20branches=20in=20the=20an?= =?UTF-8?q?alyzer,=20the=20fidelity=20numbers=20and=20the=20rejected=20alt?= =?UTF-8?q?ernatives;=20internal/pgparse/README.md=20holds=20the=20runbook?= =?UTF-8?q?=20for=20adding=20a=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/design.md | 14 +++++++++-- internal/pgparse/README.md | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 internal/pgparse/README.md diff --git a/docs/design.md b/docs/design.md index 48b4d7c..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参照)。 @@ -138,5 +150,3 @@ FETCH(カーソルの列は静的に決まらない)。EXPLAINの実行(em - 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差分の表は要らない)。ノードのGo型は最新版のpg_query.protoから生成した1組だけを持つ。protobufのフィールド番号はlibpg_queryが版ごとに振り直すので(17→18で267フィールド、enum値434が変わった)版をまたいでは読めず、木はどの版もパーサのJSON出力(フィールド名・ノード名で書かれる)をprotojsonで読む。JSON経路のほうがprotobuf経路より速い(1文215µs対273µs)。古い版で名前が違うフィールドは読む前にJSON上で最新版の形に書き換える(17→18は`returningList`→`returningClause.exprs`と、生の木には現れない3フィールドの削除だけ)。書き換え漏れはprotojsonが未知フィールドとして拒否するので黙って消えない。regressコーパス43,226文で、17の木は全文が書き換え経由で読め、18のJSON経路はprotobuf経路と全一致。カタログは版ごとの生成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/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. From 1f347fcdec8daefc3e11c900135dc62457f30945 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:15:52 +0900 Subject: [PATCH 22/27] READMEs: the oracle runs one release per major version (StartVersion, per-release cache), the regress probe follows SQLSHAPE_PG with a baseline per version, the PG 17 MERGE crash skip is 17-only --- internal/analyze/README.md | 7 +++++-- internal/oracle/README.md | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) 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/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` From 594178320067e1fb5cb1c8dd1d45cbda0b28db87 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:23:43 +0900 Subject: [PATCH 23/27] =?UTF-8?q?CHANGELOG:=201.2.0=20=E2=80=94=20PostgreS?= =?UTF-8?q?QL=2018=20and=20the=20version=20declaration,=20the=20parser=20a?= =?UTF-8?q?s=20WebAssembly,=20prebuilt=20binaries=20for=20six=20platforms,?= =?UTF-8?q?=20the=20temporal=20One=20proof;=20fixed:=20DISTINCT=20ON=20mat?= =?UTF-8?q?ched=20by=20expression,=20the=20generated-column=20UPDATE=20mes?= =?UTF-8?q?sage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a7ceea..e899e00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,14 +8,27 @@ 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. - `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. + 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 @@ -83,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 From 1639f2428ae1d4576ec370e89099bb10f2f980bc Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:26:54 +0900 Subject: [PATCH 24/27] =?UTF-8?q?README:=20install=20=E2=80=94=20Go=201.26?= =?UTF-8?q?+,=20the=20prebuilt=20binaries=20by=20name,=20what=20the=20firs?= =?UTF-8?q?t=20run=20downloads=20and=20caches=20(the=20wasm=20module=20for?= =?UTF-8?q?=20the=20checker;=20a=20PostgreSQL=20only=20for=20pgtest=20and?= =?UTF-8?q?=20the=20migration=20commands)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 80e61a5..9275421 100644 --- a/README.md +++ b/README.md @@ -31,16 +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 is a plain Go build: PostgreSQL's parser (libpg_query) is embedded as WebAssembly and runs on -wazero, so `go install` needs no C compiler. Prebuilt binaries for Linux, macOS and Windows (amd64 -and arm64 each) are on the [releases page](https://github.com/kr9ly/sqlshape/releases). +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: From 444f472ad24323a8dc4ce87fdc0c2f6612f4e6c1 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:28:30 +0900 Subject: [PATCH 25/27] =?UTF-8?q?README.ja:=20install=20=E2=80=94=20no=20c?= =?UTF-8?q?go,=20the=20prebuilt=20binaries=20by=20name,=20what=20the=20fir?= =?UTF-8?q?st=20run=20caches;=20the=20quickstart=20schema=20declares=20its?= =?UTF-8?q?=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.ja.md b/README.ja.md index 030ecb0..1cf0824 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 { From 09fc6ec8d1c8ced0c2af019350e3e57b19aa0d90 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:30:00 +0900 Subject: [PATCH 26/27] =?UTF-8?q?README=20/=20README.ja:=20compatibility?= =?UTF-8?q?=20=E2=80=94=2017=20and=2018,=20the=20parser=20is=20PostgreSQL'?= =?UTF-8?q?s=20own=20so=20the=20syntax=20is,=20and=20the=20regress=20numbe?= =?UTF-8?q?rs=20per=20version=20(19=20of=2022,103=20on=2017,=2031=20of=202?= =?UTF-8?q?3,384=20on=2018,=20every=20one=20listed)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ja.md | 4 ++-- README.md | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/README.ja.md b/README.ja.md index 1cf0824..a796960 100644 --- a/README.ja.md +++ b/README.ja.md @@ -157,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 9275421..a104004 100644 --- a/README.md +++ b/README.md @@ -205,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 From 0e7ee90a723754c894fafa505da247f9b9c37df0 Mon Sep 17 00:00:00 2001 From: kr9ly Date: Wed, 9 Sep 2026 11:32:13 +0900 Subject: [PATCH 27/27] checks.md / checks.ja.md: RETURNING old after an INSERT and new after a DELETE may be NULL whatever the column declares; a NOT ENFORCED constraint is no failure mode --- docs/checks.ja.md | 4 ++-- docs/checks.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/checks.ja.md b/docs/checks.ja.md index e3c6bad..5010b04 100644 --- a/docs/checks.ja.md +++ b/docs/checks.ja.md @@ -116,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を受けられる型で受ける @@ -594,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`が連鎖する外部キーは、何段も先のテーブルで失敗することがある。 diff --git a/docs/checks.md b/docs/checks.md index 6a4857e..2b1976c 100644 --- a/docs/checks.md +++ b/docs/checks.md @@ -143,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 @@ -674,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