diff --git a/pkg/BUILD.bazel b/pkg/BUILD.bazel index 5c8117630d80..b44808bc5222 100644 --- a/pkg/BUILD.bazel +++ b/pkg/BUILD.bazel @@ -38,6 +38,7 @@ ALL_TESTS = [ "//pkg/ccl/spanconfigccl/spanconfigcomparedccl:spanconfigcomparedccl_test", "//pkg/ccl/spanconfigccl/spanconfigreconcilerccl:spanconfigreconcilerccl_test", "//pkg/ccl/spanconfigccl/spanconfigsqltranslatorccl:spanconfigsqltranslatorccl_test", + "//pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl:spanconfigsqlwatcherccl_test", "//pkg/ccl/sqlproxyccl/denylist:denylist_test", "//pkg/ccl/sqlproxyccl/idle:idle_test", "//pkg/ccl/sqlproxyccl/tenant:tenant_test", diff --git a/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/BUILD.bazel b/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/BUILD.bazel new file mode 100644 index 000000000000..fa0ba0d20d85 --- /dev/null +++ b/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/BUILD.bazel @@ -0,0 +1,38 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "spanconfigsqlwatcherccl_test", + srcs = [ + "main_test.go", + "sqlwatcher_test.go", + ], + deps = [ + "//pkg/base", + "//pkg/ccl/backupccl", + "//pkg/ccl/kvccl/kvtenantccl", + "//pkg/ccl/storageccl", + "//pkg/ccl/utilccl", + "//pkg/cloud/impl:cloudimpl", + "//pkg/jobs", + "//pkg/keys", + "//pkg/kv/kvclient/rangefeed:with-mocks", + "//pkg/kv/kvserver/protectedts", + "//pkg/roachpb:with-mocks", + "//pkg/security", + "//pkg/security/securitytest", + "//pkg/server", + "//pkg/spanconfig", + "//pkg/spanconfig/spanconfigsqlwatcher", + "//pkg/sql/catalog/descpb", + "//pkg/testutils", + "//pkg/testutils/serverutils", + "//pkg/testutils/sqlutils", + "//pkg/testutils/testcluster", + "//pkg/util/hlc", + "//pkg/util/leaktest", + "//pkg/util/randutil", + "//pkg/util/syncutil", + "@com_github_cockroachdb_errors//:errors", + "@com_github_stretchr_testify//require", + ], +) diff --git a/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/main_test.go b/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/main_test.go new file mode 100644 index 000000000000..bba65736f02f --- /dev/null +++ b/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/main_test.go @@ -0,0 +1,34 @@ +// Copyright 2016 The Cockroach Authors. +// +// Licensed as a CockroachDB Enterprise file under the Cockroach Community +// License (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// https://github.com/cockroachdb/cockroach/blob/master/licenses/CCL.txt + +package spanconfigsqlwatcherccl + +import ( + "os" + "testing" + + _ "github.com/cockroachdb/cockroach/pkg/ccl/storageccl" + "github.com/cockroachdb/cockroach/pkg/ccl/utilccl" + "github.com/cockroachdb/cockroach/pkg/security" + "github.com/cockroachdb/cockroach/pkg/security/securitytest" + "github.com/cockroachdb/cockroach/pkg/server" + "github.com/cockroachdb/cockroach/pkg/testutils/serverutils" + "github.com/cockroachdb/cockroach/pkg/testutils/testcluster" + "github.com/cockroachdb/cockroach/pkg/util/randutil" +) + +func TestMain(m *testing.M) { + defer utilccl.TestingEnableEnterprise()() + security.SetAssetLoader(securitytest.EmbeddedAssets) + randutil.SeedForTests() + serverutils.InitTestServerFactory(server.TestServerFactory) + serverutils.InitTestClusterFactory(testcluster.TestClusterFactory) + os.Exit(m.Run()) +} + +//go:generate ../../../util/leaktest/add-leaktest.sh *_test.go diff --git a/pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher_test.go b/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/sqlwatcher_test.go similarity index 81% rename from pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher_test.go rename to pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/sqlwatcher_test.go index d315862398f3..cf53354b4ef3 100644 --- a/pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher_test.go +++ b/pkg/ccl/spanconfigccl/spanconfigsqlwatcherccl/sqlwatcher_test.go @@ -1,14 +1,12 @@ // Copyright 2021 The Cockroach Authors. // -// Use of this software is governed by the Business Source License -// included in the file licenses/BSL.txt. +// Licensed as a CockroachDB Enterprise file under the Cockroach Community +// License (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at // -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0, included in the file -// licenses/APL.txt. +// https://github.com/cockroachdb/cockroach/blob/master/licenses/CCL.txt -package spanconfigsqlwatcher_test +package spanconfigsqlwatcherccl import ( "context" @@ -18,9 +16,14 @@ import ( "time" "github.com/cockroachdb/cockroach/pkg/base" + _ "github.com/cockroachdb/cockroach/pkg/ccl/backupccl" + _ "github.com/cockroachdb/cockroach/pkg/ccl/kvccl/kvtenantccl" + _ "github.com/cockroachdb/cockroach/pkg/cloud/impl" // register cloud storage providers "github.com/cockroachdb/cockroach/pkg/jobs" "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/kv/kvclient/rangefeed" + "github.com/cockroachdb/cockroach/pkg/kv/kvserver/protectedts" + "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/spanconfig" "github.com/cockroachdb/cockroach/pkg/spanconfig/spanconfigsqlwatcher" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" @@ -42,8 +45,9 @@ func TestSQLWatcherReactsToUpdates(t *testing.T) { defer leaktest.AfterTest(t)() testCases := []struct { - stmt string - expectedIDs descpb.IDs + stmt string + expectedIDs descpb.IDs + expectedPTSUpdates []spanconfig.ProtectedTimestampUpdate }{ { stmt: "CREATE TABLE t()", @@ -101,15 +105,46 @@ func TestSQLWatcherReactsToUpdates(t *testing.T) { // One ID each for the enum and the array type. expectedIDs: descpb.IDs{66, 67}, }, + // Test that pts updates are seen. + { + stmt: "BACKUP TABLE t,t2 INTO 'nodelocal://1/foo'", + expectedIDs: descpb.IDs{54, 55}, + }, + { + stmt: "BACKUP DATABASE d INTO 'nodelocal://1/foo'", + expectedIDs: descpb.IDs{56}, + }, + { + stmt: "BACKUP TABLE d.* INTO 'nodelocal://1/foo'", + expectedIDs: descpb.IDs{56}, + }, + { + stmt: "BACKUP INTO 'nodelocal://1/foo'", + expectedPTSUpdates: []spanconfig.ProtectedTimestampUpdate{{ClusterTarget: true, + TenantTarget: roachpb.TenantID{}}}, + }, + { + stmt: ` +SELECT crdb_internal.create_tenant(2); +BACKUP TENANT 2 INTO 'nodelocal://1/foo'`, + expectedPTSUpdates: []spanconfig.ProtectedTimestampUpdate{{ClusterTarget: false, + TenantTarget: roachpb.MakeTenantID(2)}}, + }, } + dir, dirCleanupFn := testutils.TempDir(t) + defer dirCleanupFn() tc := testcluster.StartTestCluster(t, 1, base.TestClusterArgs{ ServerArgs: base.TestServerArgs{ + ExternalIODir: dir, Knobs: base.TestingKnobs{ SpanConfig: &spanconfig.TestingKnobs{ ManagerDisableJobCreation: true, // disable the automatic job creation. }, JobsTestingKnobs: jobs.NewTestingKnobsWithShortIntervals(), // speed up schema changes. + ProtectedTS: &protectedts.TestingKnobs{ + EnableProtectedTimestampForMultiTenant: true, + }, }, }, }) @@ -134,10 +169,12 @@ func TestSQLWatcherReactsToUpdates(t *testing.T) { var mu struct { syncutil.Mutex - receivedIDs map[descpb.ID]struct{} - lastCheckpoint hlc.Timestamp + receivedIDs map[descpb.ID]struct{} + receivedTargets map[spanconfig.ProtectedTimestampUpdate]struct{} + lastCheckpoint hlc.Timestamp } mu.receivedIDs = make(map[descpb.ID]struct{}) + mu.receivedTargets = make(map[spanconfig.ProtectedTimestampUpdate]struct{}) var wg sync.WaitGroup watcherStartTS := ts.Clock().Now() @@ -148,7 +185,7 @@ func TestSQLWatcherReactsToUpdates(t *testing.T) { defer wg.Done() _ = sqlWatcher.WatchForSQLUpdates(watcherCtx, watcherStartTS, - func(ctx context.Context, updates []spanconfig.DescriptorUpdate, checkpointTS hlc.Timestamp) error { + func(ctx context.Context, updates []spanconfig.SQLUpdate, checkpointTS hlc.Timestamp) error { mu.Lock() defer mu.Unlock() @@ -156,7 +193,12 @@ func TestSQLWatcherReactsToUpdates(t *testing.T) { mu.lastCheckpoint = checkpointTS for _, update := range updates { - mu.receivedIDs[update.ID] = struct{}{} + if update.IsDescriptorUpdate() { + mu.receivedIDs[update.GetDescriptorUpdate().ID] = struct{}{} + } else if update.IsProtectedTimestampUpdate() { + ptsUpdate := update.GetProtectedTimestampUpdate() + mu.receivedTargets[ptsUpdate] = struct{}{} + } } return nil }) @@ -179,12 +221,18 @@ func TestSQLWatcherReactsToUpdates(t *testing.T) { // Rangefeed events aren't guaranteed to be in any particular order for // different keys. mu.Lock() + require.Equal(t, len(tc.expectedPTSUpdates), len(mu.receivedTargets)) require.Equal(t, len(tc.expectedIDs), len(mu.receivedIDs)) for _, id := range tc.expectedIDs { _, seen := mu.receivedIDs[id] require.True(t, seen) delete(mu.receivedIDs, id) } + for _, ptsUpdate := range tc.expectedPTSUpdates { + _, seen := mu.receivedTargets[ptsUpdate] + require.True(t, seen) + delete(mu.receivedTargets, ptsUpdate) + } mu.Unlock() } @@ -244,11 +292,11 @@ func TestSQLWatcherMultiple(t *testing.T) { receivedIDs := make(map[descpb.ID]struct{}) err := sqlWatcher.WatchForSQLUpdates(ctx, beforeStmtTS, - func(_ context.Context, updates []spanconfig.DescriptorUpdate, checkpointTS hlc.Timestamp) error { + func(_ context.Context, updates []spanconfig.SQLUpdate, checkpointTS hlc.Timestamp) error { onCheckpoint(checkpointTS) for _, update := range updates { - receivedIDs[update.ID] = struct{}{} + receivedIDs[update.GetDescriptorUpdate().ID] = struct{}{} } return nil }) @@ -363,10 +411,11 @@ func TestSQLWatcherOnEventError(t *testing.T) { startTS := ts.Clock().Now() tdb.Exec(t, "CREATE TABLE t()") - err := sqlWatcher.WatchForSQLUpdates(ctx, startTS, func(context.Context, []spanconfig.DescriptorUpdate, hlc.Timestamp) error { - t.Fatal("handler should never run") - return nil - }) + err := sqlWatcher.WatchForSQLUpdates(ctx, startTS, + func(context.Context, []spanconfig.SQLUpdate, hlc.Timestamp) error { + t.Fatal("handler should never run") + return nil + }) require.Error(t, err) require.True(t, testutils.IsError(err, "boom")) } @@ -431,10 +480,11 @@ func TestSQLWatcherHandlerError(t *testing.T) { // Wrap the call to WatchForSQLUpdates in a SucceedsSoon to ensure it // evaluates within 45 seconds. testutils.SucceedsSoon(t, func() error { - err := sqlWatcher.WatchForSQLUpdates(ctx, startTS, func(context.Context, []spanconfig.DescriptorUpdate, hlc.Timestamp) error { - atomic.AddInt32(&numCalled, 1) - return errors.New("handler error") - }) + err := sqlWatcher.WatchForSQLUpdates(ctx, startTS, + func(context.Context, []spanconfig.SQLUpdate, hlc.Timestamp) error { + atomic.AddInt32(&numCalled, 1) + return errors.New("handler error") + }) require.Error(t, err) require.True(t, testutils.IsError(err, "handler error")) return nil @@ -498,11 +548,11 @@ func TestWatcherReceivesNoopCheckpoints(t *testing.T) { receivedIDs := make(map[descpb.ID]struct{}) err := sqlWatcher.WatchForSQLUpdates(ctx, beforeStmtTS, - func(_ context.Context, updates []spanconfig.DescriptorUpdate, checkpointTS hlc.Timestamp) error { + func(_ context.Context, updates []spanconfig.SQLUpdate, checkpointTS hlc.Timestamp) error { onCheckpoint(checkpointTS) for _, update := range updates { - receivedIDs[update.ID] = struct{}{} + receivedIDs[update.GetDescriptorUpdate().ID] = struct{}{} } return nil }) diff --git a/pkg/ccl/storageccl/engineccl/BUILD.bazel b/pkg/ccl/storageccl/engineccl/BUILD.bazel index ef1078c335f7..b117f66e9b9a 100644 --- a/pkg/ccl/storageccl/engineccl/BUILD.bazel +++ b/pkg/ccl/storageccl/engineccl/BUILD.bazel @@ -15,7 +15,6 @@ go_library( "//pkg/ccl/storageccl/engineccl/enginepbccl", "//pkg/storage", "//pkg/storage/enginepb", - "//pkg/storage/fs", "//pkg/util/log", "//pkg/util/protoutil", "//pkg/util/syncutil", @@ -60,6 +59,7 @@ go_test( "@com_github_cockroachdb_errors//oserror", "@com_github_cockroachdb_pebble//:pebble", "@com_github_cockroachdb_pebble//vfs", + "@com_github_cockroachdb_pebble//vfs/atomicfs", "@com_github_gogo_protobuf//proto", "@com_github_kr_pretty//:pretty", "@com_github_stretchr_testify//require", diff --git a/pkg/ccl/storageccl/engineccl/encrypted_fs.go b/pkg/ccl/storageccl/engineccl/encrypted_fs.go index c90977a5e676..dfd4a0f91558 100644 --- a/pkg/ccl/storageccl/engineccl/encrypted_fs.go +++ b/pkg/ccl/storageccl/engineccl/encrypted_fs.go @@ -364,7 +364,6 @@ func newEncryptedEnv( storeKM: storeKeyManager, dataKM: dataKeyManager, }, - UpgradeVersion: dataKeyManager.UseMarker, }, nil } diff --git a/pkg/ccl/storageccl/engineccl/pebble_key_manager.go b/pkg/ccl/storageccl/engineccl/pebble_key_manager.go index 5340f09e20c5..68dbbb26ad37 100644 --- a/pkg/ccl/storageccl/engineccl/pebble_key_manager.go +++ b/pkg/ccl/storageccl/engineccl/pebble_key_manager.go @@ -17,7 +17,6 @@ import ( "time" "github.com/cockroachdb/cockroach/pkg/ccl/storageccl/engineccl/enginepbccl" - "github.com/cockroachdb/cockroach/pkg/storage/fs" "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/cockroach/pkg/util/protoutil" "github.com/cockroachdb/cockroach/pkg/util/syncutil" @@ -178,12 +177,6 @@ type DataKeyManager struct { // Transitions to true when SetActiveStoreKeyInfo() is called for the // first time. rotationEnabled bool - // useMarker indicates whether or not the data key registry - // should write new files and use an atomic marker to mark the - // active file. This is set to true once the 21.2 version is - // finalized. - // TODO(jackson): Remove after v21.2. - useMarker bool // marker is an atomic file marker used to denote which of the // data keys registry files is the current one. When we rotate // files, the marker is atomically moved to the new file. It's @@ -214,23 +207,10 @@ func (m *DataKeyManager) Load(ctx context.Context) error { if err != nil { return err } - useMarker := filename != "" - - // If the marker doesn't exist, filename is the empty string. In - // this case, we fall back to looking for the file at the fixed - // `DATA_KEYS_REGISTRY` path. - if filename == "" { - filename = keyRegistryFilename - _, err = m.fs.Stat(m.fs.PathJoin(m.dbDir, filename)) - if err != nil && !oserror.IsNotExist(err) { - return err - } - } m.mu.Lock() defer m.mu.Unlock() m.mu.marker = marker - m.mu.useMarker = useMarker if oserror.IsNotExist(err) { // First run. m.mu.keyRegistry = makeRegistryProto() @@ -239,22 +219,26 @@ func (m *DataKeyManager) Load(ctx context.Context) error { // Load the existing state from the file named by `filename`. m.mu.filename = filename - f, err := m.fs.Open(m.fs.PathJoin(m.dbDir, filename)) - if err != nil { - return err - } - defer f.Close() - b, err := ioutil.ReadAll(f) - if err != nil { - return err - } m.mu.keyRegistry = makeRegistryProto() - if err = protoutil.Unmarshal(b, m.mu.keyRegistry); err != nil { - return err - } - if err = validateRegistry(m.mu.keyRegistry); err != nil { - return err + if filename != "" { + f, err := m.fs.Open(m.fs.PathJoin(m.dbDir, filename)) + if err != nil { + return err + } + defer f.Close() + b, err := ioutil.ReadAll(f) + if err != nil { + return err + } + if err = protoutil.Unmarshal(b, m.mu.keyRegistry); err != nil { + return err + } + if err = validateRegistry(m.mu.keyRegistry); err != nil { + return err + } } + // Else there is no DataKeysRegistry file yet. + if m.mu.keyRegistry.ActiveDataKeyId != "" { key, found := m.mu.keyRegistry.DataKeys[m.mu.keyRegistry.ActiveDataKeyId] if !found { @@ -269,31 +253,6 @@ func (m *DataKeyManager) Load(ctx context.Context) error { return nil } -// UseMarker informs the data key manager that it should begin using the -// marker file to denote which file is active. -// -// TODO(jackson): Remove this in 22.1. In 22.1 we can unconditionally -// use the marker file. -func (m *DataKeyManager) UseMarker() error { - if m.readOnly { - return nil - } - - m.mu.Lock() - defer m.mu.Unlock() - m.mu.useMarker = true - - // If there is no filename, the data keys registry has never been - // written. There's no file to mark yet. The first rotation will set - // the marker. - if m.mu.filename == "" { - return nil - } - // NB: This may move the marker to mark the file with the previous - // static filename "COCKROACHDB_DATA_KEYS". - return m.mu.marker.Move(m.mu.filename) -} - // ActiveKey implements PebbleKeyManager.ActiveKey. // // TODO(sbhola): do rotation via a background activity instead of in this function so that we don't @@ -473,26 +432,6 @@ func (m *DataKeyManager) rotateDataKeyAndWrite( return err } - if !m.mu.useMarker { - // If the v21.2 version hasn't been finalized yet, write the - // registry to the static filename `COCKROACHDB_DATA_KEYS`. If - // there's a crash mid-Rename, it's possible that we'll be left - // with a corrupt data key registry. - // TODO(jackson): Remove this for 22.1. - path := m.fs.PathJoin(m.dbDir, keyRegistryFilename) - if err = fs.SafeWriteToFile(m.fs, m.dbDir, path, bytes); err != nil { - return - } - m.mu.filename = keyRegistryFilename - m.mu.keyRegistry = keyRegistry - m.mu.activeKey = newKey - return err - } - - // The v21.2 version has been finalized. Write a new file - // containing the updated state, and move the atomic marker to - // point to the new file. - // Write the current registry state to a new file and sync it. // The new file's filename incorporates the marker's iteration // number to ensure we're not overwriting the existing registry. diff --git a/pkg/ccl/storageccl/engineccl/pebble_key_manager_test.go b/pkg/ccl/storageccl/engineccl/pebble_key_manager_test.go index 24472902c612..4a6fb5849271 100644 --- a/pkg/ccl/storageccl/engineccl/pebble_key_manager_test.go +++ b/pkg/ccl/storageccl/engineccl/pebble_key_manager_test.go @@ -27,6 +27,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/util/timeutil" "github.com/cockroachdb/datadriven" "github.com/cockroachdb/pebble/vfs" + "github.com/cockroachdb/pebble/vfs/atomicfs" "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/require" ) @@ -291,6 +292,10 @@ func TestDataKeyManager(t *testing.T) { return err.Error() } writeToFile(t, memFS, memFS.PathJoin(data[0], keyRegistryFilename), b) + marker, _, err := atomicfs.LocateMarker(memFS, data[0], keysRegistryMarkerName) + require.NoError(t, err) + require.NoError(t, marker.Move(keyRegistryFilename)) + require.NoError(t, marker.Close()) } return "" case "load": @@ -447,9 +452,6 @@ func TestDataKeyManagerIO(t *testing.T) { d.ScanArgs(t, "id", &id) fmt.Fprintf(&buf, "%s", setActiveStoreKey(dkm, id, enginepbccl.EncryptionType_AES128_CTR)) return buf.String() - case "use-marker": - appendError(dkm.UseMarker()) - return buf.String() default: return fmt.Sprintf("unknown command: %s\n", d.Cmd) } diff --git a/pkg/ccl/storageccl/engineccl/testdata/data_key_manager_io b/pkg/ccl/storageccl/engineccl/testdata/data_key_manager_io index acc2bdc7f657..9e64db9b77e5 100644 --- a/pkg/ccl/storageccl/engineccl/testdata/data_key_manager_io +++ b/pkg/ccl/storageccl/engineccl/testdata/data_key_manager_io @@ -10,19 +10,10 @@ OK load dir=data-dir ---- open-dir("data-dir") -stat("data-dir/COCKROACHDB_DATA_KEYS") -OK - -# Since there's no data keys registry file yet, use-marker should be a -# noop. - -use-marker ----- OK # Setting the active store key should trigger initializing the registry -# on disk. Since use-marker has already been called, the registry should -# be initialized with a marker file. +# on disk. set-active-store-key id=foo ---- @@ -98,32 +89,17 @@ OK load dir=data-dir ---- open-dir("data-dir") -stat("data-dir/COCKROACHDB_DATA_KEYS") OK -# Since use-marker has not yet been called, the registry shouldn't use -# it. Instead, it should replace the static COCKROACHDB_DATA_KEYS file. - set-active-store-key id=foo ---- -create("data-dir/COCKROACHDB_DATA_KEYS.crdbtmp") -write("data-dir/COCKROACHDB_DATA_KEYS.crdbtmp", <...280 bytes...>) -sync("data-dir/COCKROACHDB_DATA_KEYS.crdbtmp") -close("data-dir/COCKROACHDB_DATA_KEYS.crdbtmp") -rename("data-dir/COCKROACHDB_DATA_KEYS.crdbtmp", "data-dir/COCKROACHDB_DATA_KEYS") -open-dir("data-dir") -sync("data-dir") -close("data-dir") - -# Calling use-marker should lay down a marker pointing to the existing -# file. - -use-marker ----- -create("data-dir/marker.datakeys.000001.COCKROACHDB_DATA_KEYS") -close("data-dir/marker.datakeys.000001.COCKROACHDB_DATA_KEYS") +create("data-dir/COCKROACHDB_DATA_KEYS_000001_monolith") +write("data-dir/COCKROACHDB_DATA_KEYS_000001_monolith", <...280 bytes...>) +sync("data-dir/COCKROACHDB_DATA_KEYS_000001_monolith") +create("data-dir/marker.datakeys.000001.COCKROACHDB_DATA_KEYS_000001_monolith") +close("data-dir/marker.datakeys.000001.COCKROACHDB_DATA_KEYS_000001_monolith") sync("data-dir") -OK +close("data-dir/COCKROACHDB_DATA_KEYS_000001_monolith") set-active-store-key id=bar ---- @@ -132,9 +108,9 @@ write("data-dir/COCKROACHDB_DATA_KEYS_000002_monolith", <...489 bytes...>) sync("data-dir/COCKROACHDB_DATA_KEYS_000002_monolith") create("data-dir/marker.datakeys.000002.COCKROACHDB_DATA_KEYS_000002_monolith") close("data-dir/marker.datakeys.000002.COCKROACHDB_DATA_KEYS_000002_monolith") -remove("data-dir/marker.datakeys.000001.COCKROACHDB_DATA_KEYS") +remove("data-dir/marker.datakeys.000001.COCKROACHDB_DATA_KEYS_000001_monolith") sync("data-dir") -remove("data-dir/COCKROACHDB_DATA_KEYS") +remove("data-dir/COCKROACHDB_DATA_KEYS_000001_monolith") close("data-dir/COCKROACHDB_DATA_KEYS_000002_monolith") close diff --git a/pkg/cmd/generate-metadata-tables/rdbms/mysql.go b/pkg/cmd/generate-metadata-tables/rdbms/mysql.go index dc6d85c560e0..b03ee7d2ac53 100644 --- a/pkg/cmd/generate-metadata-tables/rdbms/mysql.go +++ b/pkg/cmd/generate-metadata-tables/rdbms/mysql.go @@ -31,7 +31,7 @@ const mysqlDescribeSchema = ` data_type FROM information_schema.columns WHERE table_schema = ? - ORDER BY table_name, column_name + ORDER BY table_name ` var mysqlExclusions = []*excludePattern{ diff --git a/pkg/cmd/generate-metadata-tables/rdbms/postgres.go b/pkg/cmd/generate-metadata-tables/rdbms/postgres.go index 83b727792f82..33e57e1dc96f 100644 --- a/pkg/cmd/generate-metadata-tables/rdbms/postgres.go +++ b/pkg/cmd/generate-metadata-tables/rdbms/postgres.go @@ -32,11 +32,11 @@ const getServerVersion = `SELECT current_setting('server_version');` var unimplementedEquivalencies = map[oid.Oid]oid.Oid{ // These types only exists in information_schema. // cardinal_number in postgres is an INT4 but we already implemented columns as INT8. - oid.Oid(13438): oid.T_int8, // cardinal_number - oid.Oid(13450): oid.T_text, // yes_or_no - oid.Oid(13441): oid.T_text, // character_data - oid.Oid(13443): oid.T_text, // sql_identifier - oid.Oid(13448): oid.T_timestamptz, // time_stamp + oid.Oid(12653): oid.T_int8, // cardinal_number + oid.Oid(12665): oid.T_text, // yes_or_no + oid.Oid(12656): oid.T_text, // character_data + oid.Oid(12658): oid.T_text, // sql_identifier + oid.Oid(12663): oid.T_timestamptz, // time_stamp // pg_catalog oid.Oid(2277): oid.T__text, // anyarray diff --git a/pkg/cmd/roachtest/tests/decommission.go b/pkg/cmd/roachtest/tests/decommission.go index 47aedd54c6ab..f240a7e772ac 100644 --- a/pkg/cmd/roachtest/tests/decommission.go +++ b/pkg/cmd/roachtest/tests/decommission.go @@ -17,6 +17,7 @@ import ( "math/rand" "reflect" "strconv" + "strings" "time" "github.com/cockroachdb/cockroach/pkg/cli" @@ -1082,14 +1083,15 @@ func runDecommissionDrains(ctx context.Context, t test.Test, c cluster.Cluster) } // Check to see if the node has been drained. - // If not, send a query and verify that the query does not fail. - if decommNodeDB.Ping() != nil { // not drained - err = run(decommNodeDB, `SHOW DATABASES`) - require.NoError(t, err) - return errors.New("not drained") + // If not, queries should not fail. + if err = run(decommNodeDB, `SHOW DATABASES`); err != nil { + if strings.Contains(err.Error(), "not accepting clients") { // drained + return nil + } + t.Fatal(err) } - return nil + return errors.New("not drained") }) require.NoError(t, e) diff --git a/pkg/spanconfig/spanconfig.go b/pkg/spanconfig/spanconfig.go index 60d430115d99..e64738cf10aa 100644 --- a/pkg/spanconfig/spanconfig.go +++ b/pkg/spanconfig/spanconfig.go @@ -140,6 +140,10 @@ func FullTranslate( return s.Translate(ctx, descpb.IDs{keys.RootNamespaceID}) } +// SQLWatcherHandler is the signature of a handler that can be passed into +// SQLWatcher.WatchForSQLUpdates as described below. +type SQLWatcherHandler func(context.Context, []SQLUpdate, hlc.Timestamp) error + // SQLWatcher watches for events on system.zones and system.descriptors. type SQLWatcher interface { // WatchForSQLUpdates watches for updates to zones and descriptors starting @@ -161,7 +165,7 @@ type SQLWatcher interface { WatchForSQLUpdates( ctx context.Context, startTS hlc.Timestamp, - handler func(ctx context.Context, updates []DescriptorUpdate, checkpointTS hlc.Timestamp) error, + handler SQLWatcherHandler, ) error } @@ -247,15 +251,87 @@ type StoreReader interface { GetSpanConfigForKey(ctx context.Context, key roachpb.RKey) (roachpb.SpanConfig, error) } +// SQLUpdate captures either a descriptor or a protected timestamp update. +// It is the unit emitted by the SQLWatcher. +type SQLUpdate struct { + descriptorUpdate DescriptorUpdate + protectedTimestampUpdate ProtectedTimestampUpdate +} + +// MakeDescriptorSQLUpdate returns a SQLUpdate that represents an update to a +// descriptor. +func MakeDescriptorSQLUpdate(id descpb.ID, descType catalog.DescriptorType) SQLUpdate { + return SQLUpdate{descriptorUpdate: DescriptorUpdate{ + ID: id, + Type: descType, + }} +} + +// GetDescriptorUpdate returns a DescriptorUpdate. +func (d *SQLUpdate) GetDescriptorUpdate() DescriptorUpdate { + return d.descriptorUpdate +} + +// IsDescriptorUpdate returns true if the SQLUpdate represents an update to a +// descriptor. +func (d *SQLUpdate) IsDescriptorUpdate() bool { + return d.descriptorUpdate != DescriptorUpdate{} +} + +// MakeTenantProtectedTimestampSQLUpdate returns a SQLUpdate that represents an update +// to a protected timestamp record with a tenant target. +func MakeTenantProtectedTimestampSQLUpdate(tenantID roachpb.TenantID) SQLUpdate { + return SQLUpdate{protectedTimestampUpdate: ProtectedTimestampUpdate{TenantTarget: tenantID}} +} + +// MakeClusterProtectedTimestampSQLUpdate returns a SQLUpdate that represents an update +// to a protected timestamp record with a cluster target. +func MakeClusterProtectedTimestampSQLUpdate() SQLUpdate { + return SQLUpdate{protectedTimestampUpdate: ProtectedTimestampUpdate{ClusterTarget: true}} +} + +// GetProtectedTimestampUpdate returns the target of the updated protected +// timestamp record. +func (d *SQLUpdate) GetProtectedTimestampUpdate() ProtectedTimestampUpdate { + return d.protectedTimestampUpdate +} + +// IsProtectedTimestampUpdate returns true if the SQLUpdate represents an update +// to a protected timestamp record. +func (d *SQLUpdate) IsProtectedTimestampUpdate() bool { + return d.protectedTimestampUpdate != ProtectedTimestampUpdate{} +} + // DescriptorUpdate captures the ID and the type of descriptor or zone that been -// updated. It's the unit of what the SQLWatcher emits. +// updated. type DescriptorUpdate struct { // ID of the descriptor/zone that has been updated. ID descpb.ID - // DescriptorType of the descriptor/zone that has been updated. Could be either + // Type of the descriptor/zone that has been updated. Could be either // the specific type or catalog.Any if no information is available. - DescriptorType catalog.DescriptorType + Type catalog.DescriptorType +} + +// ProtectedTimestampUpdate captures a protected timestamp record with a cluster +// or tenant target that been updated. +type ProtectedTimestampUpdate struct { + // ClusterTarget is set if the pts record targets a cluster. + ClusterTarget bool + // TenantsTarget is set if the pts record targets a tenant. + TenantTarget roachpb.TenantID +} + +// IsClusterUpdate returns true if the ProtectedTimestampUpdate has a cluster +// target. +func (p *ProtectedTimestampUpdate) IsClusterUpdate() bool { + return p.ClusterTarget +} + +// IsTenantsUpdate returns true if the ProtectedTimestampUpdate has a tenants +// target. +func (p *ProtectedTimestampUpdate) IsTenantsUpdate() bool { + return !p.ClusterTarget } // Update captures a span and the corresponding config change. It's the unit of diff --git a/pkg/spanconfig/spanconfigreconciler/reconciler.go b/pkg/spanconfig/spanconfigreconciler/reconciler.go index 1db604eae484..bea2f5a3724d 100644 --- a/pkg/spanconfig/spanconfigreconciler/reconciler.go +++ b/pkg/spanconfig/spanconfigreconciler/reconciler.go @@ -357,14 +357,20 @@ func (r *incrementalReconciler) reconcile( ) error { // Watch for incremental updates, applying KV as things change. return r.sqlWatcher.WatchForSQLUpdates(ctx, startTS, - func(ctx context.Context, descriptorUpdates []spanconfig.DescriptorUpdate, checkpoint hlc.Timestamp) error { - if len(descriptorUpdates) == 0 { + func(ctx context.Context, sqlUpdates []spanconfig.SQLUpdate, checkpoint hlc.Timestamp) error { + if len(sqlUpdates) == 0 { return callback(checkpoint) // nothing to do; propagate the checkpoint } + // Process the DescriptorUpdates and identify all descriptor IDs that + // require translation. var allIDs descpb.IDs - for _, update := range descriptorUpdates { - allIDs = append(allIDs, update.ID) + for _, update := range sqlUpdates { + if update.IsDescriptorUpdate() { + allIDs = append(allIDs, update.GetDescriptorUpdate().ID) + } + // TODO(adityamaru): Set the bool that tells the translator to emit + // SystemSpanConfigs. } // TODO(irfansharif): Would it be easier to just have the translator @@ -372,7 +378,7 @@ func (r *incrementalReconciler) reconcile( // here, somewhat wastefully. An alternative would be to have a // txn-scoped translator. - missingTableIDs, err := r.filterForMissingTableIDs(ctx, descriptorUpdates) + missingTableIDs, err := r.filterForMissingTableIDs(ctx, sqlUpdates) if err != nil { return err } @@ -415,7 +421,7 @@ func (r *incrementalReconciler) reconcile( // [1]: Or if the ExcludeDroppedDescriptorsFromLookup testing knob is used, // this includes dropped descriptors. func (r *incrementalReconciler) filterForMissingTableIDs( - ctx context.Context, updates []spanconfig.DescriptorUpdate, + ctx context.Context, updates []spanconfig.SQLUpdate, ) (descpb.IDs, error) { seen := make(map[descpb.ID]struct{}) var missingIDs descpb.IDs @@ -423,11 +429,15 @@ func (r *incrementalReconciler) filterForMissingTableIDs( if err := sql.DescsTxn(ctx, r.execCfg, func(ctx context.Context, txn *kv.Txn, descsCol *descs.Collection) error { for _, update := range updates { - if update.DescriptorType != catalog.Table { + if update.IsProtectedTimestampUpdate() { + continue // nothing to do + } + descriptorUpdate := update.GetDescriptorUpdate() + if descriptorUpdate.Type != catalog.Table { continue // nothing to do } - desc, err := descsCol.GetImmutableDescriptorByID(ctx, txn, update.ID, tree.CommonLookupFlags{ + desc, err := descsCol.GetImmutableDescriptorByID(ctx, txn, descriptorUpdate.ID, tree.CommonLookupFlags{ Required: true, // we want to error out for missing descriptors IncludeDropped: true, IncludeOffline: true, @@ -444,9 +454,9 @@ func (r *incrementalReconciler) filterForMissingTableIDs( } if considerAsMissing { - if _, found := seen[update.ID]; !found { - seen[update.ID] = struct{}{} - missingIDs = append(missingIDs, update.ID) // accumulate the set of missing table IDs + if _, found := seen[descriptorUpdate.ID]; !found { + seen[descriptorUpdate.ID] = struct{}{} + missingIDs = append(missingIDs, descriptorUpdate.ID) // accumulate the set of missing table IDs } } } diff --git a/pkg/spanconfig/spanconfigsqlwatcher/BUILD.bazel b/pkg/spanconfig/spanconfigsqlwatcher/BUILD.bazel index 80d9c75bdf78..4bbaab0eb887 100644 --- a/pkg/spanconfig/spanconfigsqlwatcher/BUILD.bazel +++ b/pkg/spanconfig/spanconfigsqlwatcher/BUILD.bazel @@ -43,7 +43,6 @@ go_test( "buffer_test.go", "main_test.go", "protectedtsdecoder_test.go", - "sqlwatcher_test.go", "zonesdecoder_test.go", ], embed = [":spanconfigsqlwatcher"], @@ -54,7 +53,6 @@ go_test( "//pkg/jobs/jobsprotectedts", "//pkg/keys", "//pkg/kv", - "//pkg/kv/kvclient/rangefeed:with-mocks", "//pkg/kv/kvserver/protectedts", "//pkg/kv/kvserver/protectedts/ptpb", "//pkg/roachpb:with-mocks", @@ -65,16 +63,13 @@ go_test( "//pkg/sql/catalog", "//pkg/sql/catalog/descpb", "//pkg/sql/distsql", - "//pkg/testutils", "//pkg/testutils/serverutils", "//pkg/testutils/sqlutils", "//pkg/testutils/testcluster", "//pkg/util/hlc", "//pkg/util/leaktest", "//pkg/util/protoutil", - "//pkg/util/syncutil", "//pkg/util/uuid", - "@com_github_cockroachdb_errors//:errors", "@com_github_gogo_protobuf//proto", "@com_github_stretchr_testify//require", ], diff --git a/pkg/spanconfig/spanconfigsqlwatcher/buffer.go b/pkg/spanconfig/spanconfigsqlwatcher/buffer.go index c6d64f2356dc..7def45a2da37 100644 --- a/pkg/spanconfig/spanconfigsqlwatcher/buffer.go +++ b/pkg/spanconfig/spanconfigsqlwatcher/buffer.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/spanconfig" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/util/hlc" + "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/cockroach/pkg/util/syncutil" "github.com/cockroachdb/errors" ) @@ -43,15 +44,15 @@ type buffer struct { } // event is the unit produced by the rangefeeds the SQLWatcher establishes over -// system.zones and system.descriptors. It implements the rangefeedbuffer.Event -// interface. +// system.protected_ts_records, system.zones and system.descriptors. It +// implements the rangefeedbuffer.Event interface. type event struct { // timestamp at which the event was generated by the rangefeed. timestamp hlc.Timestamp - // update captures information about the descriptor or zone that the - // SQLWatcher has observed change. - update spanconfig.DescriptorUpdate + // update captures information about the descriptor or zone or protected + // timestamp record that the SQLWatcher has observed change. + update spanconfig.SQLUpdate } // Timestamp implements the rangefeedbuffer.Event interface. @@ -60,12 +61,13 @@ func (e event) Timestamp() hlc.Timestamp { } // rangefeedKind is used to identify the distinct rangefeeds {descriptors, -// zones} established by the SQLWatcher. +// zones, protected_ts_records} established by the SQLWatcher. type rangefeedKind int const ( zonesRangefeed rangefeedKind = iota descriptorsRangefeed + protectedTimestampRangefeed // numRangefeeds should be listed last. numRangefeeds int = iota @@ -97,6 +99,71 @@ func (b *buffer) add(ev event) error { return b.mu.buffer.Add(ev) } +type events []event + +// Len implements the sort.Interface methods. +func (s events) Len() int { + return len(s) +} + +// Less implements the sort.Interface methods. +func (s events) Less(i, j int) bool { + ei, ej := s[i], s[j] + if ei.update.IsDescriptorUpdate() && ej.update.IsDescriptorUpdate() { + descUpdatei := ei.update.GetDescriptorUpdate() + descUpdatej := ej.update.GetDescriptorUpdate() + if descUpdatei.ID == descUpdatej.ID { + return ei.timestamp.Less(ej.timestamp) + } + return descUpdatei.ID < descUpdatej.ID + } + + // If the LHS is a descriptor update, sort it before the RHS which is a + // protected timestamp update. + if ei.update.IsDescriptorUpdate() { + return true + } + + // If the RHS is a descriptor update, sort it before the LHS which is a + // protected timestamp update. + if ej.update.IsDescriptorUpdate() { + return false + } + + // At this point, both ei and ej represent ProtectedTimestampUpdates. + lhsUpdate := ei.update.GetProtectedTimestampUpdate() + rhsUpdate := ej.update.GetProtectedTimestampUpdate() + if lhsUpdate.IsTenantsUpdate() && rhsUpdate.IsTenantsUpdate() { + if lhsUpdate.TenantTarget == rhsUpdate.TenantTarget { + return ei.timestamp.Less(ej.timestamp) + } + return lhsUpdate.TenantTarget.ToUint64() < rhsUpdate.TenantTarget.ToUint64() + } + + // If the LHS is a tenant target ProtectedTimestampUpdate, sort it before the + // RHS which is a cluster target ProtectedTimestampUpdate. + if lhsUpdate.IsTenantsUpdate() { + return true + } + + // If the RHS is a tenant target ProtectedTimestampUpdate, sort it before the + // LHS which is a cluster target ProtectedTimestampUpdate. + if rhsUpdate.IsTenantsUpdate() { + return false + } + + // Finally, if both LHS and RHS are cluster target ProtectedTimestampUpdates, + // sort on timestamp. + return ei.timestamp.Less(ej.timestamp) +} + +// Swap implements the sort.Interface methods. +func (s events) Swap(i, j int) { + s[i], s[j] = s[j], s[i] +} + +var _ sort.Interface = &events{} + // flushEvents computes the combined frontier timestamp of the buffer and // returns a list of relevant events which were buffered up to that timestamp. func (b *buffer) flushEvents( @@ -119,27 +186,99 @@ func (b *buffer) flushEvents( // combined frontier timestamp is also returned. func (b *buffer) flush( ctx context.Context, -) (updates []spanconfig.DescriptorUpdate, _ hlc.Timestamp, _ error) { - events, combinedFrontierTS := b.flushEvents(ctx) - sort.Slice(events, func(i, j int) bool { - ei, ej := events[i].(event), events[j].(event) - if ei.update.ID == ej.update.ID { - return ei.timestamp.Less(ej.timestamp) +) (sqlUpdates []spanconfig.SQLUpdate, _ hlc.Timestamp, _ error) { + bufferedEvents, combinedFrontierTS := b.flushEvents(ctx) + evs := make(events, 0, len(bufferedEvents)) + for i, ev := range bufferedEvents { + if i != 0 { + prevEv := bufferedEvents[i-1] + if !prevEv.Timestamp().LessEq(ev.Timestamp()) { + log.Fatalf(ctx, "expected events to be sorted by timestamp but found %+v after %+v", + ev, prevEv) + } } - return ei.update.ID < ej.update.ID + evs = append(evs, ev.(event)) + } + // Nil out the underlying slice since we have copied over the events. + bufferedEvents = nil + + // The events slice can contain a SQLUpdate that applies to a descriptor, or a + // SQLUpdate that applies to a protected timestamp record. We sort the + // protected timestamp SQLUpdates to the end of the slice, so that we can + // perform the subsequent deduplication of SQLUpdates. We do this instead of + // pre-processing events to separate the two kinds of updates, to save on the + // allocation of an additional `events` slices. + sort.Sort(evs) + + // Find the index before which all events are SQLUpdates on descriptors. + descriptorUpdatesIdx := sort.Search(len(evs), func(i int) bool { + update := evs[i].update + return update.IsProtectedTimestampUpdate() }) - for i, ev := range events { - if i == 0 || events[i-1].(event).update.ID != ev.(event).update.ID { - updates = append(updates, ev.(event).update) + + // Deduplicate the SQLUpdates emitted by the buffer that apply to descriptors. + for i, ev := range evs[:descriptorUpdatesIdx] { + update := ev.update + descriptorUpdate := update.GetDescriptorUpdate() + if i == 0 { + sqlUpdates = append(sqlUpdates, update) continue } - descType, err := combine(updates[len(updates)-1].DescriptorType, ev.(event).update.DescriptorType) + + prevUpdate := evs[i-1].update + if prevUpdate.GetDescriptorUpdate().ID != descriptorUpdate.ID { + sqlUpdates = append(sqlUpdates, update) + continue + } + + prevDescriptorSQLUpdate := sqlUpdates[len(sqlUpdates)-1].GetDescriptorUpdate() + descType, err := combine(prevDescriptorSQLUpdate.Type, + descriptorUpdate.Type) if err != nil { return nil, hlc.Timestamp{}, err } - updates[len(updates)-1].DescriptorType = descType + sqlUpdates[len(sqlUpdates)-1] = spanconfig.MakeDescriptorSQLUpdate( + prevDescriptorSQLUpdate.ID, descType) + } + + // Truncate the slice to only include ProtectedTimestampUpdates now that we + // have copied over all de-duped DescriptorUpdates. + evs = evs[descriptorUpdatesIdx:] + + // Deduplicate the SQLUpdates emitted by the buffer that apply to protected + // timestamps. + for i, ev := range evs { + update := ev.update + curUpdate := update.GetProtectedTimestampUpdate() + if i == 0 { + sqlUpdates = append(sqlUpdates, update) + continue + } + + prevUpdate := evs[i-1].update.GetProtectedTimestampUpdate() + // If the previous buffered event, and the current event are both tenant + // target ProtectedTimestampUpdates, compare tenantIDs and ignore + // duplicates. + if prevUpdate.IsTenantsUpdate() && curUpdate.IsTenantsUpdate() { + if prevUpdate.TenantTarget == curUpdate.TenantTarget { + continue + } else { + sqlUpdates = append(sqlUpdates, update) + } + } + + // If the previous buffered event, and the current event are both cluster + // target ProtectedTimestampUpdates we can ignore duplicates. + if prevUpdate.IsClusterUpdate() && curUpdate.IsClusterUpdate() { + continue + } + + // The previous buffered event and the current event are different + // target ProtectedTimestampUpdates, there is no deduplication possible. + sqlUpdates = append(sqlUpdates, update) } - return updates, combinedFrontierTS, nil + + return sqlUpdates, combinedFrontierTS, nil } // combine takes two catalog.DescriptorTypes and combines them according to the diff --git a/pkg/spanconfig/spanconfigsqlwatcher/buffer_test.go b/pkg/spanconfig/spanconfigsqlwatcher/buffer_test.go index 986340bcbccf..47d5f29eecf5 100644 --- a/pkg/spanconfig/spanconfigsqlwatcher/buffer_test.go +++ b/pkg/spanconfig/spanconfigsqlwatcher/buffer_test.go @@ -12,8 +12,12 @@ package spanconfigsqlwatcher import ( "context" + "math/rand" + "sort" "testing" + "github.com/cockroachdb/cockroach/pkg/kv/kvserver/protectedts/ptpb" + "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/spanconfig" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" @@ -31,22 +35,36 @@ func TestBuffer(t *testing.T) { WallTime: int64(nanos), } } - makeEvent := func(descID int, timestamp hlc.Timestamp) event { + makePTSEvent := func(isClusterTarget bool, tenantID roachpb.TenantID, timestamp hlc.Timestamp) event { + if isClusterTarget { + return event{update: spanconfig.MakeClusterProtectedTimestampSQLUpdate(), timestamp: timestamp} + } + return event{update: spanconfig.MakeTenantProtectedTimestampSQLUpdate(tenantID), timestamp: timestamp} + } + makePTSUpdates := func(targets ...ptpb.Target) []spanconfig.SQLUpdate { + updates := make([]spanconfig.SQLUpdate, 0, len(targets)) + for _, target := range targets { + switch t := target.GetUnion().(type) { + case *ptpb.Target_Cluster: + updates = append(updates, spanconfig.MakeClusterProtectedTimestampSQLUpdate()) + case *ptpb.Target_Tenants: + for _, tenID := range t.Tenants.IDs { + updates = append(updates, spanconfig.MakeTenantProtectedTimestampSQLUpdate(tenID)) + } + } + } + return updates + } + makeDescriptorEvent := func(descID int, timestamp hlc.Timestamp) event { return event{ - update: spanconfig.DescriptorUpdate{ - ID: descpb.ID(descID), - DescriptorType: catalog.Any, - }, + update: spanconfig.MakeDescriptorSQLUpdate(descpb.ID(descID), catalog.Any), timestamp: timestamp, } } - makeUpdates := func(descIDs ...int) []spanconfig.DescriptorUpdate { - updates := make([]spanconfig.DescriptorUpdate, 0, len(descIDs)) + makeDescriptorUpdates := func(descIDs ...int) []spanconfig.SQLUpdate { + updates := make([]spanconfig.SQLUpdate, 0, len(descIDs)) for _, descID := range descIDs { - updates = append(updates, spanconfig.DescriptorUpdate{ - ID: descpb.ID(descID), - DescriptorType: catalog.Any, - }) + updates = append(updates, spanconfig.MakeDescriptorSQLUpdate(descpb.ID(descID), catalog.Any)) } return updates } @@ -62,10 +80,13 @@ func TestBuffer(t *testing.T) { // Add a few events without advancing any of the frontiers. We don't expect // anything to be returned by the call to flush yet. - err = buffer.add(makeEvent(1, ts(10))) + require.NoError(t, buffer.add(makeDescriptorEvent(1, ts(10)))) + require.NoError(t, err) + + require.NoError(t, buffer.add(makeDescriptorEvent(2, ts(11)))) require.NoError(t, err) - err = buffer.add(makeEvent(2, ts(11))) + err = buffer.add(makePTSEvent(true, roachpb.TenantID{}, ts(12))) require.NoError(t, err) updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) @@ -80,30 +101,50 @@ func TestBuffer(t *testing.T) { require.Equal(t, ts(1), combinedFrontierTS) require.True(t, len(updates) == 0) - // Advance the descriptors frontier to a lower timestamp than the zones - // frontier above. Flush should now return the lower timestamp as the + // Advance the descriptors frontier to a higher timestamp than the zones + // frontier above. We expect flush to still not return any results as the pts + // frontier hasn't been advanced yet. + buffer.advance(descriptorsRangefeed, ts(13)) + require.NoError(t, err) + updates, combinedFrontierTS, err = buffer.flush(ctx) + require.NoError(t, err) + require.Equal(t, ts(1), combinedFrontierTS) + require.True(t, len(updates) == 0) + + // Advance the pts frontier to a lower timestamp than the zones frontier + // above. Flush should now return the lower timestamp as the // combinedFrontierTS. Furthermore, we only expect one id to be returned. - buffer.advance(descriptorsRangefeed, ts(10)) + buffer.advance(protectedTimestampRangefeed, ts(10)) require.NoError(t, err) updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) require.Equal(t, ts(10), combinedFrontierTS) - require.Equal(t, makeUpdates(1), updates) + require.Equal(t, makeDescriptorUpdates(1), updates) - // Bump the descriptors frontier past the zones frontier. This should bump the - // combinedFrontierTS of the buffer to 11, resulting in flush returning the - // last ID in the buffer. + // Bump the descriptors and protected timestamp frontier past the zones + // frontier. This should bump the combinedFrontierTS of the buffer to 11, + // resulting in flush returning the last descriptor SQLUpdate in the buffer. buffer.advance(descriptorsRangefeed, ts(20)) + buffer.advance(protectedTimestampRangefeed, ts(21)) updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) require.Equal(t, ts(11), combinedFrontierTS) - require.Equal(t, makeUpdates(2), updates) + require.Equal(t, makeDescriptorUpdates(2), updates) + + // Bump the zones frontier to a timestamp past the last SQLUpdate. This should + // bump the combinedFrontierTS of the buffer to 13, resulting in flush + // returning the last, and only PTS SQLUpdate in the buffer. + buffer.advance(zonesRangefeed, ts(13)) + updates, combinedFrontierTS, err = buffer.flush(ctx) + require.NoError(t, err) + require.Equal(t, ts(13), combinedFrontierTS) + require.Equal(t, makePTSUpdates(*ptpb.MakeClusterTarget()), updates) // No updates are left in the buffer below the combined frontier (which hasn't // changed from above). updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) - require.Equal(t, ts(11), combinedFrontierTS) + require.Equal(t, ts(13), combinedFrontierTS) require.True(t, len(updates) == 0) // Try regressing the zones frontier by advancing it to a timestamp below what @@ -112,31 +153,45 @@ func TestBuffer(t *testing.T) { buffer.advance(zonesRangefeed, ts(5)) updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) - require.Equal(t, ts(11), combinedFrontierTS) + require.Equal(t, ts(13), combinedFrontierTS) require.True(t, len(updates) == 0) - // Try adding an event at a TS below the combinedFrontierTS. This should no-op + // Try adding events at a TS below the combinedFrontierTS. This should no-op // as well and the ID should not be returned when flushing. - err = buffer.add(makeEvent(1, ts(5))) - require.NoError(t, err) + require.NoError(t, buffer.add(makeDescriptorEvent(1, ts(5)))) + require.NoError(t, buffer.add(makePTSEvent(true, roachpb.TenantID{}, ts(5)))) updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) - require.Equal(t, ts(11), combinedFrontierTS) + require.Equal(t, ts(13), combinedFrontierTS) require.True(t, len(updates) == 0) - // Lastly, ensure that flushing doesn't return duplicate IDs even when more - // than one updates have been added for a given ID. - err = buffer.add(makeEvent(1, ts(12))) - require.NoError(t, err) - err = buffer.add(makeEvent(1, ts(13))) - require.NoError(t, err) - err = buffer.add(makeEvent(2, ts(14))) - require.NoError(t, err) - buffer.advance(zonesRangefeed, ts(14)) + // Ensure that flushing doesn't return duplicate IDs even when more than one + // descriptor SQLUpdates have been added for a given ID. + require.NoError(t, buffer.add(makeDescriptorEvent(1, ts(14)))) + require.NoError(t, buffer.add(makeDescriptorEvent(1, ts(15)))) + + // Interleave some PTS SQLUpdates to make sure they are de-duped correctly, + // and interact as expected with descriptor SQLUpdates. + require.NoError(t, buffer.add(makePTSEvent(true, roachpb.TenantID{}, ts(16)))) + require.NoError(t, buffer.add( + makePTSEvent(false, roachpb.MakeTenantID(1), ts(17)))) + require.NoError(t, buffer.add( + makePTSEvent(false, roachpb.MakeTenantID(1), ts(18)))) + require.NoError(t, buffer.add(makePTSEvent(true, roachpb.TenantID{}, ts(19)))) + + require.NoError(t, buffer.add(makeDescriptorEvent(2, ts(20)))) + + buffer.advance(zonesRangefeed, ts(20)) updates, combinedFrontierTS, err = buffer.flush(ctx) require.NoError(t, err) - require.Equal(t, ts(14), combinedFrontierTS) - require.Equal(t, makeUpdates(1, 2), updates) + require.Equal(t, ts(20), combinedFrontierTS) + expectedUpdates := makeDescriptorUpdates(1, 2) + expectedUpdates = append(expectedUpdates, + makePTSUpdates( + *ptpb.MakeTenantsTarget([]roachpb.TenantID{roachpb.MakeTenantID(1)}), + *ptpb.MakeClusterTarget())..., + ) + require.Equal(t, expectedUpdates, updates) } // TestBufferCombinesDescriptorTypes ensures that the descriptor type of the @@ -159,26 +214,21 @@ func TestBufferCombinesDescriptorTypes(t *testing.T) { } buffer := newBuffer(10 /* limit */, ts(0)) - makeEvent := func(descID int, descType catalog.DescriptorType, timestamp hlc.Timestamp) event { + makeDescriptorEvent := func(descID int, descType catalog.DescriptorType, + timestamp hlc.Timestamp) event { return event{ - update: spanconfig.DescriptorUpdate{ - ID: descpb.ID(descID), - DescriptorType: descType, - }, + update: spanconfig.MakeDescriptorSQLUpdate(descpb.ID(descID), descType), timestamp: timestamp, } } advanceRangefeeds := func(timestamp hlc.Timestamp) { buffer.advance(descriptorsRangefeed, timestamp) buffer.advance(zonesRangefeed, timestamp) + buffer.advance(protectedTimestampRangefeed, timestamp) } - makeUpdates := func(descID int, descType catalog.DescriptorType) []spanconfig.DescriptorUpdate { - return []spanconfig.DescriptorUpdate{ - { - ID: descpb.ID(descID), - DescriptorType: descType, - }, - } + makeDescriptorSQLUpdate := func(descID int, + descType catalog.DescriptorType) spanconfig.SQLUpdate { + return spanconfig.MakeDescriptorSQLUpdate(descpb.ID(descID), descType) } concreteDescriptorTypes := []catalog.DescriptorType{ @@ -194,13 +244,13 @@ func TestBufferCombinesDescriptorTypes(t *testing.T) { // should all combine to the concrete descriptor type. { for _, descType := range concreteDescriptorTypes { - err := buffer.add(makeEvent(1, catalog.Any, ts(nanos))) + err := buffer.add(makeDescriptorEvent(1, catalog.Any, ts(nanos))) require.NoError(t, err) nanos++ - err = buffer.add(makeEvent(1, descType, ts(nanos))) + err = buffer.add(makeDescriptorEvent(1, descType, ts(nanos))) require.NoError(t, err) nanos++ - err = buffer.add(makeEvent(1, catalog.Any, ts(nanos))) + err = buffer.add(makeDescriptorEvent(1, catalog.Any, ts(nanos))) require.NoError(t, err) nanos++ advanceRangefeeds(ts(nanos)) @@ -208,7 +258,7 @@ func TestBufferCombinesDescriptorTypes(t *testing.T) { updates, combinedFrontierTS, err := buffer.flush(ctx) require.NoError(t, err) require.Equal(t, ts(nanos), combinedFrontierTS) - require.Equal(t, updates, makeUpdates(1, descType)) + require.Equal(t, []spanconfig.SQLUpdate{makeDescriptorSQLUpdate(1, descType)}, updates) } } @@ -216,13 +266,13 @@ func TestBufferCombinesDescriptorTypes(t *testing.T) { // other. { for _, descType := range append(concreteDescriptorTypes, catalog.Any) { - err := buffer.add(makeEvent(1, descType, ts(nanos))) + err := buffer.add(makeDescriptorEvent(1, descType, ts(nanos))) require.NoError(t, err) nanos++ - err = buffer.add(makeEvent(1, descType, ts(nanos))) + err = buffer.add(makeDescriptorEvent(1, descType, ts(nanos))) require.NoError(t, err) nanos++ - err = buffer.add(makeEvent(1, catalog.Any, ts(nanos))) + err = buffer.add(makeDescriptorEvent(1, catalog.Any, ts(nanos))) require.NoError(t, err) nanos++ advanceRangefeeds(ts(nanos)) @@ -230,7 +280,75 @@ func TestBufferCombinesDescriptorTypes(t *testing.T) { updates, combinedFrontierTS, err := buffer.flush(ctx) require.NoError(t, err) require.Equal(t, ts(nanos), combinedFrontierTS) - require.Equal(t, updates, makeUpdates(1, descType)) + require.Equal(t, []spanconfig.SQLUpdate{makeDescriptorSQLUpdate(1, descType)}, updates) } } } + +func TestBufferedEventsSort(t *testing.T) { + defer leaktest.AfterTest(t)() + makePTSEvent := func(isClusterTarget bool, tenantID roachpb.TenantID, timestamp hlc.Timestamp) event { + if isClusterTarget { + return event{ + update: spanconfig.MakeClusterProtectedTimestampSQLUpdate(), + timestamp: timestamp, + } + } + return event{ + update: spanconfig.MakeTenantProtectedTimestampSQLUpdate(tenantID), + timestamp: timestamp, + } + } + makeDescriptorEvent := func(descID int, timestamp hlc.Timestamp) event { + return event{ + update: spanconfig.MakeDescriptorSQLUpdate(descpb.ID(descID), catalog.Any), + timestamp: timestamp, + } + } + ts := func(nanos int) hlc.Timestamp { + return hlc.Timestamp{ + WallTime: int64(nanos), + } + } + + evs := make(events, 0) + + // Insert a few descriptor updates. + evs = append(evs, makeDescriptorEvent(1, ts(10))) + evs = append(evs, makeDescriptorEvent(2, ts(5))) + evs = append(evs, makeDescriptorEvent(2, ts(6))) + + // Insert a few cluster updates. + evs = append(evs, makePTSEvent(true, roachpb.TenantID{}, ts(3))) + evs = append(evs, makePTSEvent(true, roachpb.TenantID{}, ts(2))) + + // Insert a few tenant updates that should sort before the cluster updates. + evs = append(evs, makePTSEvent(false, roachpb.MakeTenantID(2), ts(3))) + evs = append(evs, makePTSEvent(false, roachpb.MakeTenantID(1), ts(7))) + evs = append(evs, makePTSEvent(false, roachpb.MakeTenantID(2), ts(2))) + + // Insert a few more descriptor updates to interleave the updates. + evs = append(evs, makeDescriptorEvent(4, ts(12))) + evs = append(evs, makeDescriptorEvent(5, ts(11))) + + // Shuffle the slice for fun. + rand.Shuffle(len(evs), func(i, j int) { + evs[i], evs[j] = evs[j], evs[i] + }) + + sort.Sort(evs) + + require.Equal(t, events{ + makeDescriptorEvent(1, ts(10)), + makeDescriptorEvent(2, ts(5)), + makeDescriptorEvent(2, ts(6)), + makeDescriptorEvent(4, ts(12)), + makeDescriptorEvent(5, ts(11)), + makePTSEvent(false, roachpb.MakeTenantID(1), ts(7)), + makePTSEvent(false, roachpb.MakeTenantID(2), ts(2)), + makePTSEvent(false, roachpb.MakeTenantID(2), ts(3)), + makePTSEvent(true, roachpb.TenantID{}, ts(2)), + makePTSEvent(true, roachpb.TenantID{}, ts(3)), + }, evs) + +} diff --git a/pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher.go b/pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher.go index ba0828fb1800..3a60a697f165 100644 --- a/pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher.go +++ b/pkg/spanconfig/spanconfigsqlwatcher/sqlwatcher.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/kv/kvclient/rangefeed" "github.com/cockroachdb/cockroach/pkg/kv/kvclient/rangefeed/rangefeedbuffer" + "github.com/cockroachdb/cockroach/pkg/kv/kvserver/protectedts/ptpb" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/spanconfig" @@ -83,17 +84,13 @@ const sqlWatcherBufferEntrySize = int64(unsafe.Sizeof(event{}) + unsafe.Sizeof(r // WatchForSQLUpdates is part of the spanconfig.SQLWatcher interface. func (s *SQLWatcher) WatchForSQLUpdates( - ctx context.Context, - startTS hlc.Timestamp, - handler func(context.Context, []spanconfig.DescriptorUpdate, hlc.Timestamp) error, + ctx context.Context, startTS hlc.Timestamp, handler spanconfig.SQLWatcherHandler, ) error { return s.watch(ctx, startTS, handler) } func (s *SQLWatcher) watch( - ctx context.Context, - startTS hlc.Timestamp, - handler func(context.Context, []spanconfig.DescriptorUpdate, hlc.Timestamp) error, + ctx context.Context, startTS hlc.Timestamp, handler spanconfig.SQLWatcherHandler, ) error { // The callbacks below are invoked by both the rangefeeds we establish, both // of which run on separate goroutines. We serialize calls to the handler @@ -151,6 +148,11 @@ func (s *SQLWatcher) watch( return errors.Wrapf(err, "error establishing rangefeed over system.zones") } defer zonesRF.Close() + ptsRF, err := s.watchForProtectedTimestampUpdates(ctx, startTS, onEvent, onFrontierAdvance) + if err != nil { + return errors.Wrapf(err, "error establishing rangefeed over system.protected_ts_records") + } + defer ptsRF.Close() checkpointNoops := util.Every(s.checkpointNoopsEvery) for { @@ -162,14 +164,14 @@ func (s *SQLWatcher) watch( case err := <-errCh: return err case <-frontierAdvanced: - events, combinedFrontierTS, err := buf.flush(ctx) + sqlUpdates, combinedFrontierTS, err := buf.flush(ctx) if err != nil { return err } - if len(events) == 0 && !checkpointNoops.ShouldProcess(timeutil.Now()) { + if len(sqlUpdates) == 0 && !checkpointNoops.ShouldProcess(timeutil.Now()) { continue } - if err := handler(ctx, events, combinedFrontierTS); err != nil { + if err := handler(ctx, sqlUpdates, combinedFrontierTS); err != nil { return err } } @@ -239,10 +241,7 @@ func (s *SQLWatcher) watchForDescriptorUpdates( rangefeedEvent := event{ timestamp: ev.Value.Timestamp, - update: spanconfig.DescriptorUpdate{ - ID: id, - DescriptorType: descType, - }, + update: spanconfig.MakeDescriptorSQLUpdate(id, descType), } onEvent(ctx, rangefeedEvent) } @@ -296,10 +295,7 @@ func (s *SQLWatcher) watchForZoneConfigUpdates( rangefeedEvent := event{ timestamp: ev.Value.Timestamp, - update: spanconfig.DescriptorUpdate{ - ID: descID, - DescriptorType: catalog.Any, - }, + update: spanconfig.MakeDescriptorSQLUpdate(descID, catalog.Any), } onEvent(ctx, rangefeedEvent) } @@ -320,3 +316,98 @@ func (s *SQLWatcher) watchForZoneConfigUpdates( log.Infof(ctx, "established range feed over system.zones starting at time %s", startTS) return rf, nil } + +// watchForProtectedTimestampUpdates establishes a rangefeed over +// system.protected_ts_records and invokes the onEvent callback whenever an +// event is observed. The onFrontierAdvance callback is also invoked whenever +// the rangefeed frontier is advanced. +func (s *SQLWatcher) watchForProtectedTimestampUpdates( + ctx context.Context, + startTS hlc.Timestamp, + onEvent func(context.Context, event), + onFrontierAdvance func(context.Context, rangefeedKind, hlc.Timestamp), +) (*rangefeed.RangeFeed, error) { + ptsRecordsTableStart := s.codec.TablePrefix(keys.ProtectedTimestampsRecordsTableID) + ptsRecordsTableSpan := roachpb.Span{ + Key: ptsRecordsTableStart, + EndKey: ptsRecordsTableStart.PrefixEnd(), + } + + decoder := newProtectedTimestampDecoder() + handleEvent := func(ctx context.Context, ev *roachpb.RangeFeedValue) { + if !ev.Value.IsPresent() && !ev.PrevValue.IsPresent() { + // Event for a tombstone on a tombstone -- nothing for us to do here. + return + } + value := ev.Value + if !ev.Value.IsPresent() { + // The protected timestamp record was deleted (released). Use the previous + // value to find the record's target. + value = ev.PrevValue + } + target, err := decoder.decode(roachpb.KeyValue{Value: value}) + if err != nil { + logcrash.ReportOrPanic( + ctx, + &s.settings.SV, + "sql watcher protected timestamp range feed error: %v", + err, + ) + return + } + if target.Union == nil { + return + } + + ts := ev.Value.Timestamp + switch t := target.Union.(type) { + case *ptpb.Target_Cluster: + rangefeedEvent := event{ + timestamp: ts, + update: spanconfig.MakeClusterProtectedTimestampSQLUpdate(), + } + onEvent(ctx, rangefeedEvent) + case *ptpb.Target_Tenants: + // For PTS records with tenant targets, unwrap the tenant IDs, and emit + // them as individual SQLUpdates. This allows for the deduplication with + // other descriptor SQLUpdates on the same tenant ID. + for _, tenID := range t.Tenants.IDs { + rangefeedEvent := event{ + timestamp: ts, + update: spanconfig.MakeTenantProtectedTimestampSQLUpdate(tenID), + } + onEvent(ctx, rangefeedEvent) + } + case *ptpb.Target_SchemaObjects: + // For PTS records with schema object targets, unwrap the descriptor IDs, + // and emit them as descriptor SQLUpdates. This allows for the deduplication + // with other descriptor SQLUpdates on the same ID. + for _, id := range t.SchemaObjects.IDs { + rangefeedEvent := event{ + timestamp: ts, + update: spanconfig.MakeDescriptorSQLUpdate(id, catalog.Any), + } + onEvent(ctx, rangefeedEvent) + } + default: + logcrash.ReportOrPanic(ctx, &s.settings.SV, + "unknown protected timestamp target %v", target) + } + } + rf, err := s.rangeFeedFactory.RangeFeed( + ctx, + "sql-watcher-protected-ts-records-rangefeed", + []roachpb.Span{ptsRecordsTableSpan}, + startTS, + handleEvent, + rangefeed.WithOnFrontierAdvance(func(ctx context.Context, resolvedTS hlc.Timestamp) { + onFrontierAdvance(ctx, protectedTimestampRangefeed, resolvedTS) + }), + rangefeed.WithDiff(true)) + if err != nil { + return nil, err + } + + log.Infof(ctx, "established range feed over system.protected_ts_records starting at time %s", startTS) + return rf, nil +} diff --git a/pkg/sql/information_schema.go b/pkg/sql/information_schema.go index 1ef308f7f3e0..6b62679fc4a2 100755 --- a/pkg/sql/information_schema.go +++ b/pkg/sql/information_schema.go @@ -1554,504 +1554,495 @@ var informationSchemaSessionVariables = virtualSchemaTable{ }, } -var informationSchemaDomainConstraintsTable = virtualSchemaTable{ - comment: "domain_constraints was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaDomainConstraints, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var informationSchemaUdtPrivilegesTable = virtualSchemaTable{ - comment: "udt_privileges was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaUdtPrivileges, +var informationSchemaRoutinePrivilegesTable = virtualSchemaTable{ + comment: "routine_privileges was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaRoutinePrivileges, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaCheckConstraintRoutineUsageTable = virtualSchemaTable{ - comment: "check_constraint_routine_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaCheckConstraintRoutineUsage, +var informationSchemaRoleRoutineGrantsTable = virtualSchemaTable{ + comment: "role_routine_grants was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaRoleRoutineGrants, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaRoleColumnGrantsTable = virtualSchemaTable{ - comment: "role_column_grants was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaRoleColumnGrants, +var informationSchemaElementTypesTable = virtualSchemaTable{ + comment: "element_types was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaElementTypes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaTriggeredUpdateColumnsTable = virtualSchemaTable{ - comment: "triggered_update_columns was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaTriggeredUpdateColumns, +var informationSchemaRoleUdtGrantsTable = virtualSchemaTable{ + comment: "role_udt_grants was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaRoleUdtGrants, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaForeignTablesTable = virtualSchemaTable{ - comment: "foreign_tables was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaForeignTables, +var informationSchemaColumnOptionsTable = virtualSchemaTable{ + comment: "column_options was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaColumnOptions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaUsagePrivilegesTable = virtualSchemaTable{ - comment: "usage_privileges was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaUsagePrivileges, +var informationSchemaForeignDataWrapperOptionsTable = virtualSchemaTable{ + comment: "foreign_data_wrapper_options was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaForeignDataWrapperOptions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaUserMappingsTable = virtualSchemaTable{ - comment: "user_mappings was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaUserMappings, +var informationSchemaTransformsTable = virtualSchemaTable{ + comment: "transforms was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaTransforms, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaRoleUdtGrantsTable = virtualSchemaTable{ - comment: "role_udt_grants was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaRoleUdtGrants, +var informationSchemaViewColumnUsageTable = virtualSchemaTable{ + comment: "view_column_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaViewColumnUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaViewColumnUsageTable = virtualSchemaTable{ - comment: "view_column_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaViewColumnUsage, +var informationSchemaInformationSchemaCatalogNameTable = virtualSchemaTable{ + comment: "information_schema_catalog_name was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaInformationSchemaCatalogName, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaForeignDataWrapperOptionsTable = virtualSchemaTable{ - comment: "foreign_data_wrapper_options was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaForeignDataWrapperOptions, +var informationSchemaForeignTablesTable = virtualSchemaTable{ + comment: "foreign_tables was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaForeignTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaViewTableUsageTable = virtualSchemaTable{ - comment: "view_table_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaViewTableUsage, +var informationSchemaViewRoutineUsageTable = virtualSchemaTable{ + comment: "view_routine_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaViewRoutineUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaSQLPartsTable = virtualSchemaTable{ - comment: "sql_parts was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaSQLParts, +var informationSchemaRoleColumnGrantsTable = virtualSchemaTable{ + comment: "role_column_grants was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaRoleColumnGrants, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaRoleUsageGrantsTable = virtualSchemaTable{ - comment: "role_usage_grants was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaRoleUsageGrants, +var informationSchemaAttributesTable = virtualSchemaTable{ + comment: "attributes was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaAttributes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaDataTypePrivilegesTable = virtualSchemaTable{ - comment: "data_type_privileges was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaDataTypePrivileges, +var informationSchemaDomainConstraintsTable = virtualSchemaTable{ + comment: "domain_constraints was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaDomainConstraints, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaSQLImplementationInfoTable = virtualSchemaTable{ - comment: "sql_implementation_info was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaSQLImplementationInfo, +var informationSchemaUserMappingsTable = virtualSchemaTable{ + comment: "user_mappings was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaUserMappings, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaForeignTableOptionsTable = virtualSchemaTable{ - comment: "foreign_table_options was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaForeignTableOptions, +var informationSchemaCheckConstraintRoutineUsageTable = virtualSchemaTable{ + comment: "check_constraint_routine_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaCheckConstraintRoutineUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaRoleRoutineGrantsTable = virtualSchemaTable{ - comment: "role_routine_grants was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaRoleRoutineGrants, +var informationSchemaColumnDomainUsageTable = virtualSchemaTable{ + comment: "column_domain_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaColumnDomainUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaInformationSchemaCatalogNameTable = virtualSchemaTable{ - comment: "information_schema_catalog_name was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaInformationSchemaCatalogName, +var informationSchemaForeignDataWrappersTable = virtualSchemaTable{ + comment: "foreign_data_wrappers was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaForeignDataWrappers, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaUserDefinedTypesTable = virtualSchemaTable{ - comment: "user_defined_types was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaUserDefinedTypes, +var informationSchemaColumnColumnUsageTable = virtualSchemaTable{ + comment: "column_column_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaColumnColumnUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaForeignServerOptionsTable = virtualSchemaTable{ - comment: "foreign_server_options was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaForeignServerOptions, +var informationSchemaSQLSizingTable = virtualSchemaTable{ + comment: "sql_sizing was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaSQLSizing, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaAttributesTable = virtualSchemaTable{ - comment: "attributes was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaAttributes, +var informationSchemaUsagePrivilegesTable = virtualSchemaTable{ + comment: "usage_privileges was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaUsagePrivileges, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaUserMappingOptionsTable = virtualSchemaTable{ - comment: "user_mapping_options was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaUserMappingOptions, +var informationSchemaDomainsTable = virtualSchemaTable{ + comment: "domains was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaDomains, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaColumnColumnUsageTable = virtualSchemaTable{ - comment: "column_column_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaColumnColumnUsage, +var informationSchemaSQLImplementationInfoTable = virtualSchemaTable{ + comment: "sql_implementation_info was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaSQLImplementationInfo, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaDomainUdtUsageTable = virtualSchemaTable{ - comment: "domain_udt_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaDomainUdtUsage, +var informationSchemaUdtPrivilegesTable = virtualSchemaTable{ + comment: "udt_privileges was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaUdtPrivileges, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaDomainsTable = virtualSchemaTable{ - comment: "domains was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaDomains, +var informationSchemaPartitionsTable = virtualSchemaTable{ + comment: "partitions was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaPartitions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaViewRoutineUsageTable = virtualSchemaTable{ - comment: "view_routine_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaViewRoutineUsage, +var informationSchemaTablespacesExtensionsTable = virtualSchemaTable{ + comment: "tablespaces_extensions was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaTablespacesExtensions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaColumnDomainUsageTable = virtualSchemaTable{ - comment: "column_domain_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaColumnDomainUsage, +var informationSchemaResourceGroupsTable = virtualSchemaTable{ + comment: "resource_groups was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaResourceGroups, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaForeignDataWrappersTable = virtualSchemaTable{ - comment: "foreign_data_wrappers was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaForeignDataWrappers, +var informationSchemaForeignServerOptionsTable = virtualSchemaTable{ + comment: "foreign_server_options was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaForeignServerOptions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaSQLFeaturesTable = virtualSchemaTable{ - comment: "sql_features was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaSQLFeatures, +var informationSchemaStUnitsOfMeasureTable = virtualSchemaTable{ + comment: "st_units_of_measure was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaStUnitsOfMeasure, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaTransformsTable = virtualSchemaTable{ - comment: "transforms was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaTransforms, +var informationSchemaSchemataExtensionsTable = virtualSchemaTable{ + comment: "schemata_extensions was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaSchemataExtensions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaSQLSizingTable = virtualSchemaTable{ - comment: "sql_sizing was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaSQLSizing, +var informationSchemaColumnStatisticsTable = virtualSchemaTable{ + comment: "column_statistics was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaColumnStatistics, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaElementTypesTable = virtualSchemaTable{ - comment: "element_types was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaElementTypes, +var informationSchemaConstraintTableUsageTable = virtualSchemaTable{ + comment: "constraint_table_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaConstraintTableUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaRoutinePrivilegesTable = virtualSchemaTable{ - comment: "routine_privileges was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaRoutinePrivileges, +var informationSchemaDataTypePrivilegesTable = virtualSchemaTable{ + comment: "data_type_privileges was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaDataTypePrivileges, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaConstraintTableUsageTable = virtualSchemaTable{ - comment: "constraint_table_usage was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaConstraintTableUsage, +var informationSchemaRoleUsageGrantsTable = virtualSchemaTable{ + comment: "role_usage_grants was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaRoleUsageGrants, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaColumnOptionsTable = virtualSchemaTable{ - comment: "column_options was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaColumnOptions, +var informationSchemaFilesTable = virtualSchemaTable{ + comment: "files was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaFiles, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaForeignServersTable = virtualSchemaTable{ - comment: "foreign_servers was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaForeignServers, +var informationSchemaEnginesTable = virtualSchemaTable{ + comment: "engines was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaEngines, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaTriggersTable = virtualSchemaTable{ - comment: "triggers was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaTriggers, +var informationSchemaForeignTableOptionsTable = virtualSchemaTable{ + comment: "foreign_table_options was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaForeignTableOptions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaResourceGroupsTable = virtualSchemaTable{ - comment: "resource_groups was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaResourceGroups, +var informationSchemaEventsTable = virtualSchemaTable{ + comment: "events was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaEvents, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaPartitionsTable = virtualSchemaTable{ - comment: "partitions was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaPartitions, +var informationSchemaDomainUdtUsageTable = virtualSchemaTable{ + comment: "domain_udt_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaDomainUdtUsage, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaTablespacesExtensionsTable = virtualSchemaTable{ - comment: "tablespaces_extensions was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaTablespacesExtensions, +var informationSchemaUserAttributesTable = virtualSchemaTable{ + comment: "user_attributes was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaUserAttributes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaSchemataExtensionsTable = virtualSchemaTable{ - comment: "schemata_extensions was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaSchemataExtensions, +var informationSchemaKeywordsTable = virtualSchemaTable{ + comment: "keywords was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaKeywords, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaColumnStatisticsTable = virtualSchemaTable{ - comment: "column_statistics was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaColumnStatistics, +var informationSchemaUserMappingOptionsTable = virtualSchemaTable{ + comment: "user_mapping_options was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaUserMappingOptions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaStUnitsOfMeasureTable = virtualSchemaTable{ - comment: "st_units_of_measure was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaStUnitsOfMeasure, +var informationSchemaOptimizerTraceTable = virtualSchemaTable{ + comment: "optimizer_trace was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaOptimizerTrace, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaFilesTable = virtualSchemaTable{ - comment: "files was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaFiles, +var informationSchemaTableConstraintsExtensionsTable = virtualSchemaTable{ + comment: "table_constraints_extensions was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaTableConstraintsExtensions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaEnginesTable = virtualSchemaTable{ - comment: "engines was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaEngines, +var informationSchemaColumnsExtensionsTable = virtualSchemaTable{ + comment: "columns_extensions was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaColumnsExtensions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaEventsTable = virtualSchemaTable{ - comment: "events was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaEvents, +var informationSchemaUserDefinedTypesTable = virtualSchemaTable{ + comment: "user_defined_types was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaUserDefinedTypes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaUserAttributesTable = virtualSchemaTable{ - comment: "user_attributes was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaUserAttributes, +var informationSchemaSQLFeaturesTable = virtualSchemaTable{ + comment: "sql_features was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaSQLFeatures, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaKeywordsTable = virtualSchemaTable{ - comment: "keywords was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaKeywords, +var informationSchemaStGeometryColumnsTable = virtualSchemaTable{ + comment: "st_geometry_columns was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaStGeometryColumns, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaOptimizerTraceTable = virtualSchemaTable{ - comment: "optimizer_trace was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaOptimizerTrace, +var informationSchemaSQLPartsTable = virtualSchemaTable{ + comment: "sql_parts was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaSQLParts, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaTableConstraintsExtensionsTable = virtualSchemaTable{ - comment: "table_constraints_extensions was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaTableConstraintsExtensions, +var informationSchemaPluginsTable = virtualSchemaTable{ + comment: "plugins was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaPlugins, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaColumnsExtensionsTable = virtualSchemaTable{ - comment: "columns_extensions was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaColumnsExtensions, +var informationSchemaStSpatialReferenceSystemsTable = virtualSchemaTable{ + comment: "st_spatial_reference_systems was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaStSpatialReferenceSystems, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaStGeometryColumnsTable = virtualSchemaTable{ - comment: "st_geometry_columns was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaStGeometryColumns, +var informationSchemaProcesslistTable = virtualSchemaTable{ + comment: "processlist was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaProcesslist, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaPluginsTable = virtualSchemaTable{ - comment: "plugins was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaPlugins, +var informationSchemaForeignServersTable = virtualSchemaTable{ + comment: "foreign_servers was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaForeignServers, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaStSpatialReferenceSystemsTable = virtualSchemaTable{ - comment: "st_spatial_reference_systems was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaStSpatialReferenceSystems, +var informationSchemaTriggeredUpdateColumnsTable = virtualSchemaTable{ + comment: "triggered_update_columns was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaTriggeredUpdateColumns, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var informationSchemaProcesslistTable = virtualSchemaTable{ - comment: "processlist was created for compatibility and is currently unimplemented", - schema: vtable.InformationSchemaProcesslist, +var informationSchemaTriggersTable = virtualSchemaTable{ + comment: "triggers was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaTriggers, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, @@ -2085,6 +2076,15 @@ var informationSchemaTablespacesTable = virtualSchemaTable{ unimplemented: true, } +var informationSchemaViewTableUsageTable = virtualSchemaTable{ + comment: "view_table_usage was created for compatibility and is currently unimplemented", + schema: vtable.InformationSchemaViewTableUsage, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + // forEachSchema iterates over the physical and virtual schemas. func forEachSchema( ctx context.Context, diff --git a/pkg/sql/logictest/testdata/logic_test/create_statements b/pkg/sql/logictest/testdata/logic_test/create_statements index afb15e8b3657..b277a53a02d3 100644 --- a/pkg/sql/logictest/testdata/logic_test/create_statements +++ b/pkg/sql/logictest/testdata/logic_test/create_statements @@ -1661,69 +1661,69 @@ CREATE TABLE information_schema.applicable_roles ( is_grantable STRING NOT NULL ) {} {} CREATE TABLE information_schema.attributes ( - dtd_identifier STRING NULL, - interval_precision INT8 NULL, - maximum_cardinality INT8 NULL, - numeric_precision_radix INT8 NULL, - character_set_catalog STRING NULL, - character_set_name STRING NULL, - data_type STRING NULL, - scope_schema STRING NULL, udt_catalog STRING NULL, - attribute_udt_schema STRING NULL, - character_set_schema STRING NULL, - scope_catalog STRING NULL, - attribute_udt_catalog STRING NULL, - character_maximum_length INT8 NULL, - is_derived_reference_attribute STRING NULL, udt_schema STRING NULL, + udt_name STRING NULL, + attribute_name STRING NULL, ordinal_position INT8 NULL, - scope_name STRING NULL, - character_octet_length INT8 NULL, - datetime_precision INT8 NULL, - numeric_precision INT8 NULL, - interval_type STRING NULL, attribute_default STRING NULL, - attribute_name STRING NULL, - attribute_udt_name STRING NULL, is_nullable STRING NULL, - numeric_scale INT8 NULL, - udt_name STRING NULL, + data_type STRING NULL, + character_maximum_length INT8 NULL, + character_octet_length INT8 NULL, + character_set_catalog STRING NULL, + character_set_schema STRING NULL, + character_set_name STRING NULL, collation_catalog STRING NULL, + collation_schema STRING NULL, collation_name STRING NULL, - collation_schema STRING NULL -) CREATE TABLE information_schema.attributes ( - dtd_identifier STRING NULL, - interval_precision INT8 NULL, - maximum_cardinality INT8 NULL, + numeric_precision INT8 NULL, numeric_precision_radix INT8 NULL, - character_set_catalog STRING NULL, - character_set_name STRING NULL, - data_type STRING NULL, - scope_schema STRING NULL, - udt_catalog STRING NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, + interval_type STRING NULL, + interval_precision INT8 NULL, + attribute_udt_catalog STRING NULL, attribute_udt_schema STRING NULL, - character_set_schema STRING NULL, + attribute_udt_name STRING NULL, scope_catalog STRING NULL, - attribute_udt_catalog STRING NULL, - character_maximum_length INT8 NULL, - is_derived_reference_attribute STRING NULL, + scope_schema STRING NULL, + scope_name STRING NULL, + maximum_cardinality INT8 NULL, + dtd_identifier STRING NULL, + is_derived_reference_attribute STRING NULL +) CREATE TABLE information_schema.attributes ( + udt_catalog STRING NULL, udt_schema STRING NULL, + udt_name STRING NULL, + attribute_name STRING NULL, ordinal_position INT8 NULL, - scope_name STRING NULL, - character_octet_length INT8 NULL, - datetime_precision INT8 NULL, - numeric_precision INT8 NULL, - interval_type STRING NULL, attribute_default STRING NULL, - attribute_name STRING NULL, - attribute_udt_name STRING NULL, is_nullable STRING NULL, - numeric_scale INT8 NULL, - udt_name STRING NULL, + data_type STRING NULL, + character_maximum_length INT8 NULL, + character_octet_length INT8 NULL, + character_set_catalog STRING NULL, + character_set_schema STRING NULL, + character_set_name STRING NULL, collation_catalog STRING NULL, + collation_schema STRING NULL, collation_name STRING NULL, - collation_schema STRING NULL + numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, + interval_type STRING NULL, + interval_precision INT8 NULL, + attribute_udt_catalog STRING NULL, + attribute_udt_schema STRING NULL, + attribute_udt_name STRING NULL, + scope_catalog STRING NULL, + scope_schema STRING NULL, + scope_name STRING NULL, + maximum_cardinality INT8 NULL, + dtd_identifier STRING NULL, + is_derived_reference_attribute STRING NULL ) {} {} CREATE TABLE information_schema.character_sets ( character_set_catalog STRING NULL, @@ -1746,18 +1746,18 @@ CREATE TABLE information_schema.character_sets ( ) {} {} CREATE TABLE information_schema.check_constraint_routine_usage ( constraint_catalog STRING NULL, - constraint_name STRING NULL, constraint_schema STRING NULL, + constraint_name STRING NULL, specific_catalog STRING NULL, - specific_name STRING NULL, - specific_schema STRING NULL + specific_schema STRING NULL, + specific_name STRING NULL ) CREATE TABLE information_schema.check_constraint_routine_usage ( constraint_catalog STRING NULL, - constraint_name STRING NULL, constraint_schema STRING NULL, + constraint_name STRING NULL, specific_catalog STRING NULL, - specific_name STRING NULL, - specific_schema STRING NULL + specific_schema STRING NULL, + specific_name STRING NULL ) {} {} CREATE TABLE information_schema.check_constraints ( constraint_catalog STRING NOT NULL, @@ -1797,49 +1797,49 @@ CREATE TABLE information_schema.collations ( pad_attribute STRING NOT NULL ) {} {} CREATE TABLE information_schema.column_column_usage ( - column_name STRING NULL, - dependent_column STRING NULL, table_catalog STRING NULL, + table_schema STRING NULL, table_name STRING NULL, - table_schema STRING NULL -) CREATE TABLE information_schema.column_column_usage ( column_name STRING NULL, - dependent_column STRING NULL, + dependent_column STRING NULL +) CREATE TABLE information_schema.column_column_usage ( table_catalog STRING NULL, + table_schema STRING NULL, table_name STRING NULL, - table_schema STRING NULL + column_name STRING NULL, + dependent_column STRING NULL ) {} {} CREATE TABLE information_schema.column_domain_usage ( - domain_name STRING NULL, + domain_catalog STRING NULL, domain_schema STRING NULL, + domain_name STRING NULL, table_catalog STRING NULL, - table_name STRING NULL, table_schema STRING NULL, - column_name STRING NULL, - domain_catalog STRING NULL + table_name STRING NULL, + column_name STRING NULL ) CREATE TABLE information_schema.column_domain_usage ( - domain_name STRING NULL, + domain_catalog STRING NULL, domain_schema STRING NULL, + domain_name STRING NULL, table_catalog STRING NULL, - table_name STRING NULL, table_schema STRING NULL, - column_name STRING NULL, - domain_catalog STRING NULL + table_name STRING NULL, + column_name STRING NULL ) {} {} CREATE TABLE information_schema.column_options ( - column_name STRING NULL, - option_name STRING NULL, - option_value STRING NULL, table_catalog STRING NULL, + table_schema STRING NULL, table_name STRING NULL, - table_schema STRING NULL -) CREATE TABLE information_schema.column_options ( column_name STRING NULL, option_name STRING NULL, - option_value STRING NULL, + option_value STRING NULL +) CREATE TABLE information_schema.column_options ( table_catalog STRING NULL, + table_schema STRING NULL, table_name STRING NULL, - table_schema STRING NULL + column_name STRING NULL, + option_name STRING NULL, + option_value STRING NULL ) {} {} CREATE TABLE information_schema.column_privileges ( grantor STRING NULL, @@ -2018,184 +2018,184 @@ CREATE TABLE information_schema.constraint_column_usage ( constraint_name STRING NOT NULL ) {} {} CREATE TABLE information_schema.constraint_table_usage ( - table_name STRING NULL, + table_catalog STRING NULL, table_schema STRING NULL, + table_name STRING NULL, constraint_catalog STRING NULL, - constraint_name STRING NULL, constraint_schema STRING NULL, - table_catalog STRING NULL + constraint_name STRING NULL ) CREATE TABLE information_schema.constraint_table_usage ( - table_name STRING NULL, + table_catalog STRING NULL, table_schema STRING NULL, + table_name STRING NULL, constraint_catalog STRING NULL, - constraint_name STRING NULL, constraint_schema STRING NULL, - table_catalog STRING NULL + constraint_name STRING NULL ) {} {} CREATE TABLE information_schema.data_type_privileges ( + object_catalog STRING NULL, object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, - dtd_identifier STRING NULL, - object_catalog STRING NULL, - object_name STRING NULL + dtd_identifier STRING NULL ) CREATE TABLE information_schema.data_type_privileges ( + object_catalog STRING NULL, object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, - dtd_identifier STRING NULL, - object_catalog STRING NULL, - object_name STRING NULL + dtd_identifier STRING NULL ) {} {} CREATE TABLE information_schema.domain_constraints ( - initially_deferred STRING NULL, - is_deferrable STRING NULL, constraint_catalog STRING NULL, - constraint_name STRING NULL, constraint_schema STRING NULL, + constraint_name STRING NULL, domain_catalog STRING NULL, + domain_schema STRING NULL, domain_name STRING NULL, - domain_schema STRING NULL -) CREATE TABLE information_schema.domain_constraints ( - initially_deferred STRING NULL, is_deferrable STRING NULL, + initially_deferred STRING NULL +) CREATE TABLE information_schema.domain_constraints ( constraint_catalog STRING NULL, - constraint_name STRING NULL, constraint_schema STRING NULL, + constraint_name STRING NULL, domain_catalog STRING NULL, + domain_schema STRING NULL, domain_name STRING NULL, - domain_schema STRING NULL + is_deferrable STRING NULL, + initially_deferred STRING NULL ) {} {} CREATE TABLE information_schema.domain_udt_usage ( udt_catalog STRING NULL, - udt_name STRING NULL, udt_schema STRING NULL, + udt_name STRING NULL, domain_catalog STRING NULL, - domain_name STRING NULL, - domain_schema STRING NULL + domain_schema STRING NULL, + domain_name STRING NULL ) CREATE TABLE information_schema.domain_udt_usage ( udt_catalog STRING NULL, - udt_name STRING NULL, udt_schema STRING NULL, + udt_name STRING NULL, domain_catalog STRING NULL, - domain_name STRING NULL, - domain_schema STRING NULL + domain_schema STRING NULL, + domain_name STRING NULL ) {} {} CREATE TABLE information_schema.domains ( - scope_catalog STRING NULL, - data_type STRING NULL, - numeric_precision_radix INT8 NULL, - udt_catalog STRING NULL, - character_set_name STRING NULL, - maximum_cardinality INT8 NULL, - numeric_precision INT8 NULL, - scope_schema STRING NULL, + domain_catalog STRING NULL, + domain_schema STRING NULL, domain_name STRING NULL, - dtd_identifier STRING NULL, - interval_precision INT8 NULL, - udt_schema STRING NULL, + data_type STRING NULL, + character_maximum_length INT8 NULL, character_octet_length INT8 NULL, - domain_schema STRING NULL, - numeric_scale INT8 NULL, + character_set_catalog STRING NULL, + character_set_schema STRING NULL, + character_set_name STRING NULL, + collation_catalog STRING NULL, collation_schema STRING NULL, collation_name STRING NULL, - domain_default STRING NULL, + numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, interval_type STRING NULL, - scope_name STRING NULL, - character_maximum_length INT8 NULL, - character_set_schema STRING NULL, - domain_catalog STRING NULL, + interval_precision INT8 NULL, + domain_default STRING NULL, + udt_catalog STRING NULL, + udt_schema STRING NULL, udt_name STRING NULL, - character_set_catalog STRING NULL, - datetime_precision INT8 NULL, - collation_catalog STRING NULL -) CREATE TABLE information_schema.domains ( scope_catalog STRING NULL, - data_type STRING NULL, - numeric_precision_radix INT8 NULL, - udt_catalog STRING NULL, - character_set_name STRING NULL, - maximum_cardinality INT8 NULL, - numeric_precision INT8 NULL, scope_schema STRING NULL, + scope_name STRING NULL, + maximum_cardinality INT8 NULL, + dtd_identifier STRING NULL +) CREATE TABLE information_schema.domains ( + domain_catalog STRING NULL, + domain_schema STRING NULL, domain_name STRING NULL, - dtd_identifier STRING NULL, - interval_precision INT8 NULL, - udt_schema STRING NULL, + data_type STRING NULL, + character_maximum_length INT8 NULL, character_octet_length INT8 NULL, - domain_schema STRING NULL, - numeric_scale INT8 NULL, + character_set_catalog STRING NULL, + character_set_schema STRING NULL, + character_set_name STRING NULL, + collation_catalog STRING NULL, collation_schema STRING NULL, collation_name STRING NULL, - domain_default STRING NULL, + numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, interval_type STRING NULL, - scope_name STRING NULL, - character_maximum_length INT8 NULL, - character_set_schema STRING NULL, - domain_catalog STRING NULL, + interval_precision INT8 NULL, + domain_default STRING NULL, + udt_catalog STRING NULL, + udt_schema STRING NULL, udt_name STRING NULL, - character_set_catalog STRING NULL, - datetime_precision INT8 NULL, - collation_catalog STRING NULL + scope_catalog STRING NULL, + scope_schema STRING NULL, + scope_name STRING NULL, + maximum_cardinality INT8 NULL, + dtd_identifier STRING NULL ) {} {} CREATE TABLE information_schema.element_types ( - udt_name STRING NULL, + object_catalog STRING NULL, + object_schema STRING NULL, + object_name STRING NULL, + object_type STRING NULL, + collection_type_identifier STRING NULL, + data_type STRING NULL, character_maximum_length INT8 NULL, - collation_schema STRING NULL, - numeric_precision_radix INT8 NULL, - scope_name STRING NULL, - scope_schema STRING NULL, character_octet_length INT8 NULL, character_set_catalog STRING NULL, - collation_name STRING NULL, - object_schema STRING NULL, + character_set_schema STRING NULL, character_set_name STRING NULL, - dtd_identifier STRING NULL, - interval_type STRING NULL, - udt_catalog STRING NULL, collation_catalog STRING NULL, - maximum_cardinality INT8 NULL, - character_set_schema STRING NULL, + collation_schema STRING NULL, + collation_name STRING NULL, + numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, + interval_type STRING NULL, interval_precision INT8 NULL, + domain_default STRING NULL, + udt_catalog STRING NULL, udt_schema STRING NULL, - datetime_precision INT8 NULL, - numeric_scale INT8 NULL, + udt_name STRING NULL, + scope_catalog STRING NULL, + scope_schema STRING NULL, + scope_name STRING NULL, + maximum_cardinality INT8 NULL, + dtd_identifier STRING NULL +) CREATE TABLE information_schema.element_types ( + object_catalog STRING NULL, + object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, collection_type_identifier STRING NULL, data_type STRING NULL, - numeric_precision INT8 NULL, - domain_default STRING NULL, - object_catalog STRING NULL, - object_name STRING NULL, - scope_catalog STRING NULL -) CREATE TABLE information_schema.element_types ( - udt_name STRING NULL, character_maximum_length INT8 NULL, - collation_schema STRING NULL, - numeric_precision_radix INT8 NULL, - scope_name STRING NULL, - scope_schema STRING NULL, character_octet_length INT8 NULL, character_set_catalog STRING NULL, - collation_name STRING NULL, - object_schema STRING NULL, + character_set_schema STRING NULL, character_set_name STRING NULL, - dtd_identifier STRING NULL, - interval_type STRING NULL, - udt_catalog STRING NULL, collation_catalog STRING NULL, - maximum_cardinality INT8 NULL, - character_set_schema STRING NULL, - interval_precision INT8 NULL, - udt_schema STRING NULL, - datetime_precision INT8 NULL, - numeric_scale INT8 NULL, - object_type STRING NULL, - collection_type_identifier STRING NULL, - data_type STRING NULL, + collation_schema STRING NULL, + collation_name STRING NULL, numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, + interval_type STRING NULL, + interval_precision INT8 NULL, domain_default STRING NULL, - object_catalog STRING NULL, - object_name STRING NULL, - scope_catalog STRING NULL + udt_catalog STRING NULL, + udt_schema STRING NULL, + udt_name STRING NULL, + scope_catalog STRING NULL, + scope_schema STRING NULL, + scope_name STRING NULL, + maximum_cardinality INT8 NULL, + dtd_identifier STRING NULL ) {} {} CREATE TABLE information_schema.enabled_roles ( role_name STRING NOT NULL @@ -2348,82 +2348,82 @@ CREATE TABLE information_schema.files ( deleted_rows BYTES NULL ) {} {} CREATE TABLE information_schema.foreign_data_wrapper_options ( - option_name STRING NULL, - option_value STRING NULL, foreign_data_wrapper_catalog STRING NULL, - foreign_data_wrapper_name STRING NULL -) CREATE TABLE information_schema.foreign_data_wrapper_options ( + foreign_data_wrapper_name STRING NULL, option_name STRING NULL, - option_value STRING NULL, + option_value STRING NULL +) CREATE TABLE information_schema.foreign_data_wrapper_options ( foreign_data_wrapper_catalog STRING NULL, - foreign_data_wrapper_name STRING NULL + foreign_data_wrapper_name STRING NULL, + option_name STRING NULL, + option_value STRING NULL ) {} {} CREATE TABLE information_schema.foreign_data_wrappers ( - authorization_identifier STRING NULL, foreign_data_wrapper_catalog STRING NULL, - foreign_data_wrapper_language STRING NULL, foreign_data_wrapper_name STRING NULL, - library_name STRING NULL -) CREATE TABLE information_schema.foreign_data_wrappers ( authorization_identifier STRING NULL, + library_name STRING NULL, + foreign_data_wrapper_language STRING NULL +) CREATE TABLE information_schema.foreign_data_wrappers ( foreign_data_wrapper_catalog STRING NULL, - foreign_data_wrapper_language STRING NULL, foreign_data_wrapper_name STRING NULL, - library_name STRING NULL + authorization_identifier STRING NULL, + library_name STRING NULL, + foreign_data_wrapper_language STRING NULL ) {} {} CREATE TABLE information_schema.foreign_server_options ( - option_value STRING NULL, foreign_server_catalog STRING NULL, foreign_server_name STRING NULL, - option_name STRING NULL + option_name STRING NULL, + option_value STRING NULL ) CREATE TABLE information_schema.foreign_server_options ( - option_value STRING NULL, foreign_server_catalog STRING NULL, foreign_server_name STRING NULL, - option_name STRING NULL + option_name STRING NULL, + option_value STRING NULL ) {} {} CREATE TABLE information_schema.foreign_servers ( - authorization_identifier STRING NULL, - foreign_data_wrapper_catalog STRING NULL, - foreign_data_wrapper_name STRING NULL, foreign_server_catalog STRING NULL, foreign_server_name STRING NULL, - foreign_server_type STRING NULL, - foreign_server_version STRING NULL -) CREATE TABLE information_schema.foreign_servers ( - authorization_identifier STRING NULL, foreign_data_wrapper_catalog STRING NULL, foreign_data_wrapper_name STRING NULL, + foreign_server_type STRING NULL, + foreign_server_version STRING NULL, + authorization_identifier STRING NULL +) CREATE TABLE information_schema.foreign_servers ( foreign_server_catalog STRING NULL, foreign_server_name STRING NULL, + foreign_data_wrapper_catalog STRING NULL, + foreign_data_wrapper_name STRING NULL, foreign_server_type STRING NULL, - foreign_server_version STRING NULL + foreign_server_version STRING NULL, + authorization_identifier STRING NULL ) {} {} CREATE TABLE information_schema.foreign_table_options ( foreign_table_catalog STRING NULL, - foreign_table_name STRING NULL, foreign_table_schema STRING NULL, + foreign_table_name STRING NULL, option_name STRING NULL, option_value STRING NULL ) CREATE TABLE information_schema.foreign_table_options ( foreign_table_catalog STRING NULL, - foreign_table_name STRING NULL, foreign_table_schema STRING NULL, + foreign_table_name STRING NULL, option_name STRING NULL, option_value STRING NULL ) {} {} CREATE TABLE information_schema.foreign_tables ( - foreign_server_catalog STRING NULL, - foreign_server_name STRING NULL, foreign_table_catalog STRING NULL, + foreign_table_schema STRING NULL, foreign_table_name STRING NULL, - foreign_table_schema STRING NULL -) CREATE TABLE information_schema.foreign_tables ( foreign_server_catalog STRING NULL, - foreign_server_name STRING NULL, + foreign_server_name STRING NULL +) CREATE TABLE information_schema.foreign_tables ( foreign_table_catalog STRING NULL, + foreign_table_schema STRING NULL, foreign_table_name STRING NULL, - foreign_table_schema STRING NULL + foreign_server_catalog STRING NULL, + foreign_server_name STRING NULL ) {} {} CREATE TABLE information_schema.information_schema_catalog_name ( catalog_name STRING NULL @@ -2711,46 +2711,46 @@ CREATE TABLE information_schema.resource_groups ( vcpu_ids BYTES NULL ) {} {} CREATE TABLE information_schema.role_column_grants ( + grantor STRING NULL, + grantee STRING NULL, + table_catalog STRING NULL, table_schema STRING NULL, + table_name STRING NULL, column_name STRING NULL, - grantee STRING NULL, - grantor STRING NULL, - is_grantable STRING NULL, privilege_type STRING NULL, - table_catalog STRING NULL, - table_name STRING NULL + is_grantable STRING NULL ) CREATE TABLE information_schema.role_column_grants ( + grantor STRING NULL, + grantee STRING NULL, + table_catalog STRING NULL, table_schema STRING NULL, + table_name STRING NULL, column_name STRING NULL, - grantee STRING NULL, - grantor STRING NULL, - is_grantable STRING NULL, privilege_type STRING NULL, - table_catalog STRING NULL, - table_name STRING NULL + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.role_routine_grants ( - privilege_type STRING NULL, - routine_catalog STRING NULL, - specific_name STRING NULL, - specific_schema STRING NULL, - grantee STRING NULL, grantor STRING NULL, - routine_schema STRING NULL, + grantee STRING NULL, specific_catalog STRING NULL, - is_grantable STRING NULL, - routine_name STRING NULL -) CREATE TABLE information_schema.role_routine_grants ( - privilege_type STRING NULL, - routine_catalog STRING NULL, - specific_name STRING NULL, specific_schema STRING NULL, - grantee STRING NULL, - grantor STRING NULL, + specific_name STRING NULL, + routine_catalog STRING NULL, routine_schema STRING NULL, + routine_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL +) CREATE TABLE information_schema.role_routine_grants ( + grantor STRING NULL, + grantee STRING NULL, specific_catalog STRING NULL, - is_grantable STRING NULL, - routine_name STRING NULL + specific_schema STRING NULL, + specific_name STRING NULL, + routine_catalog STRING NULL, + routine_schema STRING NULL, + routine_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.role_table_grants ( grantor STRING NULL, @@ -2772,63 +2772,63 @@ CREATE TABLE information_schema.role_table_grants ( with_hierarchy STRING NULL ) {} {} CREATE TABLE information_schema.role_udt_grants ( - udt_schema STRING NULL, - grantee STRING NULL, grantor STRING NULL, - is_grantable STRING NULL, - privilege_type STRING NULL, + grantee STRING NULL, udt_catalog STRING NULL, - udt_name STRING NULL -) CREATE TABLE information_schema.role_udt_grants ( udt_schema STRING NULL, - grantee STRING NULL, - grantor STRING NULL, - is_grantable STRING NULL, + udt_name STRING NULL, privilege_type STRING NULL, + is_grantable STRING NULL +) CREATE TABLE information_schema.role_udt_grants ( + grantor STRING NULL, + grantee STRING NULL, udt_catalog STRING NULL, - udt_name STRING NULL + udt_schema STRING NULL, + udt_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.role_usage_grants ( - object_name STRING NULL, + grantor STRING NULL, + grantee STRING NULL, + object_catalog STRING NULL, object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, privilege_type STRING NULL, - grantee STRING NULL, - grantor STRING NULL, - is_grantable STRING NULL, - object_catalog STRING NULL + is_grantable STRING NULL ) CREATE TABLE information_schema.role_usage_grants ( - object_name STRING NULL, + grantor STRING NULL, + grantee STRING NULL, + object_catalog STRING NULL, object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, privilege_type STRING NULL, - grantee STRING NULL, - grantor STRING NULL, - is_grantable STRING NULL, - object_catalog STRING NULL + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.routine_privileges ( grantor STRING NULL, - routine_name STRING NULL, + grantee STRING NULL, specific_catalog STRING NULL, - specific_name STRING NULL, specific_schema STRING NULL, - grantee STRING NULL, - is_grantable STRING NULL, - privilege_type STRING NULL, + specific_name STRING NULL, routine_catalog STRING NULL, - routine_schema STRING NULL + routine_schema STRING NULL, + routine_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL ) CREATE TABLE information_schema.routine_privileges ( grantor STRING NULL, - routine_name STRING NULL, + grantee STRING NULL, specific_catalog STRING NULL, - specific_name STRING NULL, specific_schema STRING NULL, - grantee STRING NULL, - is_grantable STRING NULL, - privilege_type STRING NULL, + specific_name STRING NULL, routine_catalog STRING NULL, - routine_schema STRING NULL + routine_schema STRING NULL, + routine_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.routines ( specific_catalog STRING NULL, @@ -3065,58 +3065,58 @@ CREATE TABLE information_schema.session_variables ( value STRING NOT NULL ) {} {} CREATE TABLE information_schema.sql_features ( - is_verified_by STRING NULL, - sub_feature_id STRING NULL, - sub_feature_name STRING NULL, - comments STRING NULL, feature_id STRING NULL, feature_name STRING NULL, - is_supported STRING NULL -) CREATE TABLE information_schema.sql_features ( - is_verified_by STRING NULL, sub_feature_id STRING NULL, sub_feature_name STRING NULL, - comments STRING NULL, + is_supported STRING NULL, + is_verified_by STRING NULL, + comments STRING NULL +) CREATE TABLE information_schema.sql_features ( feature_id STRING NULL, feature_name STRING NULL, - is_supported STRING NULL + sub_feature_id STRING NULL, + sub_feature_name STRING NULL, + is_supported STRING NULL, + is_verified_by STRING NULL, + comments STRING NULL ) {} {} CREATE TABLE information_schema.sql_implementation_info ( - character_value STRING NULL, - comments STRING NULL, implementation_info_id STRING NULL, implementation_info_name STRING NULL, - integer_value INT8 NULL -) CREATE TABLE information_schema.sql_implementation_info ( + integer_value INT8 NULL, character_value STRING NULL, - comments STRING NULL, + comments STRING NULL +) CREATE TABLE information_schema.sql_implementation_info ( implementation_info_id STRING NULL, implementation_info_name STRING NULL, - integer_value INT8 NULL + integer_value INT8 NULL, + character_value STRING NULL, + comments STRING NULL ) {} {} CREATE TABLE information_schema.sql_parts ( - comments STRING NULL, feature_id STRING NULL, feature_name STRING NULL, is_supported STRING NULL, - is_verified_by STRING NULL + is_verified_by STRING NULL, + comments STRING NULL ) CREATE TABLE information_schema.sql_parts ( - comments STRING NULL, feature_id STRING NULL, feature_name STRING NULL, is_supported STRING NULL, - is_verified_by STRING NULL + is_verified_by STRING NULL, + comments STRING NULL ) {} {} CREATE TABLE information_schema.sql_sizing ( - comments STRING NULL, sizing_id INT8 NULL, sizing_name STRING NULL, - supported_value INT8 NULL + supported_value INT8 NULL, + comments STRING NULL ) CREATE TABLE information_schema.sql_sizing ( - comments STRING NULL, sizing_id INT8 NULL, sizing_name STRING NULL, - supported_value INT8 NULL + supported_value INT8 NULL, + comments STRING NULL ) {} {} CREATE TABLE information_schema.st_geometry_columns ( srs_id INT8 NULL, @@ -3302,77 +3302,77 @@ CREATE TABLE information_schema.tablespaces_extensions ( tablespace_name STRING NULL ) {} {} CREATE TABLE information_schema.transforms ( - specific_catalog STRING NULL, - specific_name STRING NULL, - specific_schema STRING NULL, - transform_type STRING NULL, udt_catalog STRING NULL, - udt_name STRING NULL, udt_schema STRING NULL, - group_name STRING NULL -) CREATE TABLE information_schema.transforms ( + udt_name STRING NULL, specific_catalog STRING NULL, - specific_name STRING NULL, specific_schema STRING NULL, - transform_type STRING NULL, + specific_name STRING NULL, + group_name STRING NULL, + transform_type STRING NULL +) CREATE TABLE information_schema.transforms ( udt_catalog STRING NULL, - udt_name STRING NULL, udt_schema STRING NULL, - group_name STRING NULL + udt_name STRING NULL, + specific_catalog STRING NULL, + specific_schema STRING NULL, + specific_name STRING NULL, + group_name STRING NULL, + transform_type STRING NULL ) {} {} CREATE TABLE information_schema.triggered_update_columns ( + trigger_catalog STRING NULL, + trigger_schema STRING NULL, + trigger_name STRING NULL, event_object_catalog STRING NULL, - event_object_column STRING NULL, event_object_schema STRING NULL, event_object_table STRING NULL, + event_object_column STRING NULL +) CREATE TABLE information_schema.triggered_update_columns ( trigger_catalog STRING NULL, + trigger_schema STRING NULL, trigger_name STRING NULL, - trigger_schema STRING NULL -) CREATE TABLE information_schema.triggered_update_columns ( event_object_catalog STRING NULL, - event_object_column STRING NULL, event_object_schema STRING NULL, event_object_table STRING NULL, - trigger_catalog STRING NULL, - trigger_name STRING NULL, - trigger_schema STRING NULL + event_object_column STRING NULL ) {} {} CREATE TABLE information_schema.triggers ( - action_timing STRING NULL, - event_manipulation STRING NULL, trigger_catalog STRING NULL, trigger_schema STRING NULL, - event_object_table STRING NULL, trigger_name STRING NULL, - action_condition STRING NULL, - action_reference_old_row STRING NULL, - action_statement STRING NULL, - created TIMESTAMPTZ NULL, + event_manipulation STRING NULL, event_object_catalog STRING NULL, event_object_schema STRING NULL, + event_object_table STRING NULL, action_order INT8 NULL, + action_condition STRING NULL, + action_statement STRING NULL, action_orientation STRING NULL, - action_reference_new_row STRING NULL, + action_timing STRING NULL, + action_reference_old_table STRING NULL, action_reference_new_table STRING NULL, - action_reference_old_table STRING NULL + action_reference_old_row STRING NULL, + action_reference_new_row STRING NULL, + created TIMESTAMPTZ NULL ) CREATE TABLE information_schema.triggers ( - action_timing STRING NULL, - event_manipulation STRING NULL, trigger_catalog STRING NULL, trigger_schema STRING NULL, - event_object_table STRING NULL, trigger_name STRING NULL, - action_condition STRING NULL, - action_reference_old_row STRING NULL, - action_statement STRING NULL, - created TIMESTAMPTZ NULL, + event_manipulation STRING NULL, event_object_catalog STRING NULL, event_object_schema STRING NULL, + event_object_table STRING NULL, action_order INT8 NULL, + action_condition STRING NULL, + action_statement STRING NULL, action_orientation STRING NULL, - action_reference_new_row STRING NULL, + action_timing STRING NULL, + action_reference_old_table STRING NULL, action_reference_new_table STRING NULL, - action_reference_old_table STRING NULL + action_reference_old_row STRING NULL, + action_reference_new_row STRING NULL, + created TIMESTAMPTZ NULL ) {} {} CREATE TABLE information_schema.type_privileges ( grantee STRING NOT NULL, @@ -3389,39 +3389,39 @@ CREATE TABLE information_schema.type_privileges ( ) {} {} CREATE TABLE information_schema.udt_privileges ( grantor STRING NULL, - is_grantable STRING NULL, - privilege_type STRING NULL, + grantee STRING NULL, udt_catalog STRING NULL, - udt_name STRING NULL, udt_schema STRING NULL, - grantee STRING NULL + udt_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL ) CREATE TABLE information_schema.udt_privileges ( grantor STRING NULL, - is_grantable STRING NULL, - privilege_type STRING NULL, + grantee STRING NULL, udt_catalog STRING NULL, - udt_name STRING NULL, udt_schema STRING NULL, - grantee STRING NULL + udt_name STRING NULL, + privilege_type STRING NULL, + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.usage_privileges ( - is_grantable STRING NULL, + grantor STRING NULL, + grantee STRING NULL, object_catalog STRING NULL, - object_name STRING NULL, object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, privilege_type STRING NULL, - grantee STRING NULL, - grantor STRING NULL + is_grantable STRING NULL ) CREATE TABLE information_schema.usage_privileges ( - is_grantable STRING NULL, + grantor STRING NULL, + grantee STRING NULL, object_catalog STRING NULL, - object_name STRING NULL, object_schema STRING NULL, + object_name STRING NULL, object_type STRING NULL, privilege_type STRING NULL, - grantee STRING NULL, - grantor STRING NULL + is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.user_attributes ( attribute STRING NULL, @@ -3433,65 +3433,65 @@ CREATE TABLE information_schema.user_attributes ( "user" STRING NULL ) {} {} CREATE TABLE information_schema.user_defined_types ( - character_maximum_length INT8 NULL, - character_set_name STRING NULL, - interval_type STRING NULL, - ordering_routine_catalog STRING NULL, - reference_type STRING NULL, - source_dtd_identifier STRING NULL, - data_type STRING NULL, - numeric_precision_radix INT8 NULL, - ordering_routine_name STRING NULL, user_defined_type_catalog STRING NULL, - collation_catalog STRING NULL, user_defined_type_schema STRING NULL, - character_set_schema STRING NULL, - collation_name STRING NULL, - datetime_precision INT8 NULL, + user_defined_type_name STRING NULL, + user_defined_type_category STRING NULL, is_instantiable STRING NULL, + is_final STRING NULL, + ordering_form STRING NULL, ordering_category STRING NULL, + ordering_routine_catalog STRING NULL, ordering_routine_schema STRING NULL, - ref_dtd_identifier STRING NULL, - numeric_precision INT8 NULL, - numeric_scale INT8 NULL, - ordering_form STRING NULL, - user_defined_type_category STRING NULL, - collation_schema STRING NULL, - is_final STRING NULL, + ordering_routine_name STRING NULL, + reference_type STRING NULL, + data_type STRING NULL, + character_maximum_length INT8 NULL, character_octet_length INT8 NULL, character_set_catalog STRING NULL, - interval_precision INT8 NULL, - user_defined_type_name STRING NULL -) CREATE TABLE information_schema.user_defined_types ( - character_maximum_length INT8 NULL, + character_set_schema STRING NULL, character_set_name STRING NULL, + collation_catalog STRING NULL, + collation_schema STRING NULL, + collation_name STRING NULL, + numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, interval_type STRING NULL, - ordering_routine_catalog STRING NULL, - reference_type STRING NULL, + interval_precision INT8 NULL, source_dtd_identifier STRING NULL, - data_type STRING NULL, - numeric_precision_radix INT8 NULL, - ordering_routine_name STRING NULL, + ref_dtd_identifier STRING NULL +) CREATE TABLE information_schema.user_defined_types ( user_defined_type_catalog STRING NULL, - collation_catalog STRING NULL, user_defined_type_schema STRING NULL, - character_set_schema STRING NULL, - collation_name STRING NULL, - datetime_precision INT8 NULL, + user_defined_type_name STRING NULL, + user_defined_type_category STRING NULL, is_instantiable STRING NULL, + is_final STRING NULL, + ordering_form STRING NULL, ordering_category STRING NULL, + ordering_routine_catalog STRING NULL, ordering_routine_schema STRING NULL, - ref_dtd_identifier STRING NULL, - numeric_precision INT8 NULL, - numeric_scale INT8 NULL, - ordering_form STRING NULL, - user_defined_type_category STRING NULL, - collation_schema STRING NULL, - is_final STRING NULL, + ordering_routine_name STRING NULL, + reference_type STRING NULL, + data_type STRING NULL, + character_maximum_length INT8 NULL, character_octet_length INT8 NULL, character_set_catalog STRING NULL, + character_set_schema STRING NULL, + character_set_name STRING NULL, + collation_catalog STRING NULL, + collation_schema STRING NULL, + collation_name STRING NULL, + numeric_precision INT8 NULL, + numeric_precision_radix INT8 NULL, + numeric_scale INT8 NULL, + datetime_precision INT8 NULL, + interval_type STRING NULL, interval_precision INT8 NULL, - user_defined_type_name STRING NULL + source_dtd_identifier STRING NULL, + ref_dtd_identifier STRING NULL ) {} {} CREATE TABLE information_schema.user_mapping_options ( authorization_identifier STRING NULL, @@ -3527,51 +3527,51 @@ CREATE TABLE information_schema.user_privileges ( is_grantable STRING NULL ) {} {} CREATE TABLE information_schema.view_column_usage ( - column_name STRING NULL, - table_catalog STRING NULL, - table_name STRING NULL, - table_schema STRING NULL, view_catalog STRING NULL, + view_schema STRING NULL, view_name STRING NULL, - view_schema STRING NULL -) CREATE TABLE information_schema.view_column_usage ( - column_name STRING NULL, table_catalog STRING NULL, - table_name STRING NULL, table_schema STRING NULL, + table_name STRING NULL, + column_name STRING NULL +) CREATE TABLE information_schema.view_column_usage ( view_catalog STRING NULL, + view_schema STRING NULL, view_name STRING NULL, - view_schema STRING NULL + table_catalog STRING NULL, + table_schema STRING NULL, + table_name STRING NULL, + column_name STRING NULL ) {} {} CREATE TABLE information_schema.view_routine_usage ( - specific_catalog STRING NULL, - specific_name STRING NULL, - specific_schema STRING NULL, table_catalog STRING NULL, + table_schema STRING NULL, table_name STRING NULL, - table_schema STRING NULL -) CREATE TABLE information_schema.view_routine_usage ( specific_catalog STRING NULL, - specific_name STRING NULL, specific_schema STRING NULL, + specific_name STRING NULL +) CREATE TABLE information_schema.view_routine_usage ( table_catalog STRING NULL, + table_schema STRING NULL, table_name STRING NULL, - table_schema STRING NULL + specific_catalog STRING NULL, + specific_schema STRING NULL, + specific_name STRING NULL ) {} {} CREATE TABLE information_schema.view_table_usage ( view_catalog STRING NULL, - view_name STRING NULL, view_schema STRING NULL, + view_name STRING NULL, table_catalog STRING NULL, - table_name STRING NULL, - table_schema STRING NULL + table_schema STRING NULL, + table_name STRING NULL ) CREATE TABLE information_schema.view_table_usage ( view_catalog STRING NULL, - view_name STRING NULL, view_schema STRING NULL, + view_name STRING NULL, table_catalog STRING NULL, - table_name STRING NULL, - table_schema STRING NULL + table_schema STRING NULL, + table_name STRING NULL ) {} {} CREATE TABLE information_schema.views ( table_catalog STRING NOT NULL, @@ -3713,40 +3713,40 @@ CREATE TABLE pg_catalog.pg_am ( amtype "char" NULL ) {} {} CREATE TABLE pg_catalog.pg_amop ( - amoplefttype OID NULL, - amopmethod OID NULL, - amopopr OID NULL, - amoppurpose "char" NULL, - amoprighttype OID NULL, oid OID NULL, amopfamily OID NULL, - amopsortfamily OID NULL, - amopstrategy INT2 NULL -) CREATE TABLE pg_catalog.pg_amop ( amoplefttype OID NULL, - amopmethod OID NULL, - amopopr OID NULL, - amoppurpose "char" NULL, amoprighttype OID NULL, + amopstrategy INT2 NULL, + amoppurpose "char" NULL, + amopopr OID NULL, + amopmethod OID NULL, + amopsortfamily OID NULL +) CREATE TABLE pg_catalog.pg_amop ( oid OID NULL, amopfamily OID NULL, - amopsortfamily OID NULL, - amopstrategy INT2 NULL + amoplefttype OID NULL, + amoprighttype OID NULL, + amopstrategy INT2 NULL, + amoppurpose "char" NULL, + amopopr OID NULL, + amopmethod OID NULL, + amopsortfamily OID NULL ) {} {} CREATE TABLE pg_catalog.pg_amproc ( - amproc REGPROC NULL, + oid OID NULL, amprocfamily OID NULL, amproclefttype OID NULL, - amprocnum INT2 NULL, amprocrighttype OID NULL, - oid OID NULL + amprocnum INT2 NULL, + amproc REGPROC NULL ) CREATE TABLE pg_catalog.pg_amproc ( - amproc REGPROC NULL, + oid OID NULL, amprocfamily OID NULL, amproclefttype OID NULL, - amprocnum INT2 NULL, amprocrighttype OID NULL, - oid OID NULL + amprocnum INT2 NULL, + amproc REGPROC NULL ) {} {} CREATE TABLE pg_catalog.pg_attrdef ( oid OID NULL, @@ -3857,25 +3857,25 @@ CREATE TABLE pg_catalog.pg_authid ( rolvaliduntil TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_available_extension_versions ( + name NAME NULL, + version STRING NULL, + installed BOOL NULL, + superuser BOOL NULL, trusted BOOL NULL, - comment STRING NULL, relocatable BOOL NULL, - requires NAME[] NULL, schema NAME NULL, - installed BOOL NULL, + requires NAME[] NULL, + comment STRING NULL +) CREATE TABLE pg_catalog.pg_available_extension_versions ( name NAME NULL, + version STRING NULL, + installed BOOL NULL, superuser BOOL NULL, - version STRING NULL -) CREATE TABLE pg_catalog.pg_available_extension_versions ( trusted BOOL NULL, - comment STRING NULL, relocatable BOOL NULL, - requires NAME[] NULL, schema NAME NULL, - installed BOOL NULL, - name NAME NULL, - superuser BOOL NULL, - version STRING NULL + requires NAME[] NULL, + comment STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_available_extensions ( name NAME NULL, @@ -4089,19 +4089,19 @@ CREATE TABLE pg_catalog.pg_conversion ( condefault BOOL NULL ) {} {} CREATE TABLE pg_catalog.pg_cursors ( - is_scrollable BOOL NULL, name STRING NULL, statement STRING NULL, - creation_time TIMESTAMPTZ NULL, + is_holdable BOOL NULL, is_binary BOOL NULL, - is_holdable BOOL NULL -) CREATE TABLE pg_catalog.pg_cursors ( is_scrollable BOOL NULL, + creation_time TIMESTAMPTZ NULL +) CREATE TABLE pg_catalog.pg_cursors ( name STRING NULL, statement STRING NULL, - creation_time TIMESTAMPTZ NULL, + is_holdable BOOL NULL, is_binary BOOL NULL, - is_holdable BOOL NULL + is_scrollable BOOL NULL, + creation_time TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_database ( oid OID NULL, @@ -4232,21 +4232,21 @@ CREATE TABLE pg_catalog.pg_extension ( extcondition STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_file_settings ( - error STRING NULL, - name STRING NULL, - seqno INT4 NULL, - setting STRING NULL, sourcefile STRING NULL, sourceline INT4 NULL, - applied BOOL NULL -) CREATE TABLE pg_catalog.pg_file_settings ( - error STRING NULL, - name STRING NULL, seqno INT4 NULL, + name STRING NULL, setting STRING NULL, + applied BOOL NULL, + error STRING NULL +) CREATE TABLE pg_catalog.pg_file_settings ( sourcefile STRING NULL, sourceline INT4 NULL, - applied BOOL NULL + seqno INT4 NULL, + name STRING NULL, + setting STRING NULL, + applied BOOL NULL, + error STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_foreign_data_wrapper ( oid OID NULL, @@ -4294,34 +4294,34 @@ CREATE TABLE pg_catalog.pg_foreign_table ( ftoptions STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_group ( - grolist OID[] NULL, groname NAME NULL, - grosysid OID NULL + grosysid OID NULL, + grolist OID[] NULL ) CREATE TABLE pg_catalog.pg_group ( - grolist OID[] NULL, groname NAME NULL, - grosysid OID NULL + grosysid OID NULL, + grolist OID[] NULL ) {} {} CREATE TABLE pg_catalog.pg_hba_file_rules ( - address STRING NULL, - database STRING[] NULL, line_number INT4 NULL, - netmask STRING NULL, type STRING NULL, + database STRING[] NULL, user_name STRING[] NULL, + address STRING NULL, + netmask STRING NULL, auth_method STRING NULL, - error STRING NULL, - options STRING[] NULL + options STRING[] NULL, + error STRING NULL ) CREATE TABLE pg_catalog.pg_hba_file_rules ( - address STRING NULL, - database STRING[] NULL, line_number INT4 NULL, - netmask STRING NULL, type STRING NULL, + database STRING[] NULL, user_name STRING[] NULL, + address STRING NULL, + netmask STRING NULL, auth_method STRING NULL, - error STRING NULL, - options STRING[] NULL + options STRING[] NULL, + error STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_index ( indexrelid OID NULL, @@ -4391,17 +4391,17 @@ CREATE TABLE pg_catalog.pg_inherits ( inhseqno INT4 NULL ) {} {} CREATE TABLE pg_catalog.pg_init_privs ( - classoid OID NULL, - initprivs STRING[] NULL, objoid OID NULL, + classoid OID NULL, objsubid INT4 NULL, - privtype "char" NULL + privtype "char" NULL, + initprivs STRING[] NULL ) CREATE TABLE pg_catalog.pg_init_privs ( - classoid OID NULL, - initprivs STRING[] NULL, objoid OID NULL, + classoid OID NULL, objsubid INT4 NULL, - privtype "char" NULL + privtype "char" NULL, + initprivs STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_language ( oid OID NULL, @@ -4425,22 +4425,22 @@ CREATE TABLE pg_catalog.pg_language ( lanacl STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_largeobject ( - data BYTES NULL, loid OID NULL, - pageno INT4 NULL + pageno INT4 NULL, + data BYTES NULL ) CREATE TABLE pg_catalog.pg_largeobject ( - data BYTES NULL, loid OID NULL, - pageno INT4 NULL + pageno INT4 NULL, + data BYTES NULL ) {} {} CREATE TABLE pg_catalog.pg_largeobject_metadata ( oid OID NULL, - lomacl STRING[] NULL, - lomowner OID NULL + lomowner OID NULL, + lomacl STRING[] NULL ) CREATE TABLE pg_catalog.pg_largeobject_metadata ( oid OID NULL, - lomacl STRING[] NULL, - lomowner OID NULL + lomowner OID NULL, + lomacl STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_locks ( locktype STRING NULL, @@ -4558,74 +4558,74 @@ CREATE TABLE pg_catalog.pg_operator ( oprjoin OID NULL ) {} {} CREATE TABLE pg_catalog.pg_opfamily ( + oid OID NULL, + opfmethod OID NULL, opfname NAME NULL, opfnamespace OID NULL, - opfowner OID NULL, - oid OID NULL, - opfmethod OID NULL + opfowner OID NULL ) CREATE TABLE pg_catalog.pg_opfamily ( + oid OID NULL, + opfmethod OID NULL, opfname NAME NULL, opfnamespace OID NULL, - opfowner OID NULL, - oid OID NULL, - opfmethod OID NULL + opfowner OID NULL ) {} {} CREATE TABLE pg_catalog.pg_partitioned_table ( partrelid OID NULL, partstrat "char" NULL, + partnatts INT2 NULL, + partdefid OID NULL, partattrs INT2VECTOR NULL, partclass OIDVECTOR NULL, partcollation OIDVECTOR NULL, - partdefid OID NULL, - partexprs STRING NULL, - partnatts INT2 NULL + partexprs STRING NULL ) CREATE TABLE pg_catalog.pg_partitioned_table ( partrelid OID NULL, partstrat "char" NULL, + partnatts INT2 NULL, + partdefid OID NULL, partattrs INT2VECTOR NULL, partclass OIDVECTOR NULL, partcollation OIDVECTOR NULL, - partdefid OID NULL, - partexprs STRING NULL, - partnatts INT2 NULL + partexprs STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_policies ( - with_check STRING NULL, - cmd STRING NULL, - permissive STRING NULL, + schemaname NAME NULL, + tablename NAME NULL, policyname NAME NULL, - qual STRING NULL, + permissive STRING NULL, roles NAME[] NULL, - schemaname NAME NULL, - tablename NAME NULL -) CREATE TABLE pg_catalog.pg_policies ( - with_check STRING NULL, cmd STRING NULL, - permissive STRING NULL, - policyname NAME NULL, qual STRING NULL, - roles NAME[] NULL, + with_check STRING NULL +) CREATE TABLE pg_catalog.pg_policies ( schemaname NAME NULL, - tablename NAME NULL + tablename NAME NULL, + policyname NAME NULL, + permissive STRING NULL, + roles NAME[] NULL, + cmd STRING NULL, + qual STRING NULL, + with_check STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_policy ( - polrelid OID NULL, - polroles OID[] NULL, - polwithcheck STRING NULL, oid OID NULL, - polcmd "char" NULL, polname NAME NULL, - polpermissive BOOL NULL, - polqual STRING NULL -) CREATE TABLE pg_catalog.pg_policy ( polrelid OID NULL, + polcmd "char" NULL, + polpermissive BOOL NULL, polroles OID[] NULL, - polwithcheck STRING NULL, + polqual STRING NULL, + polwithcheck STRING NULL +) CREATE TABLE pg_catalog.pg_policy ( oid OID NULL, - polcmd "char" NULL, polname NAME NULL, + polrelid OID NULL, + polcmd "char" NULL, polpermissive BOOL NULL, - polqual STRING NULL + polroles OID[] NULL, + polqual STRING NULL, + polwithcheck STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_prepared_statements ( name STRING NULL, @@ -4721,23 +4721,23 @@ CREATE TABLE pg_catalog.pg_proc ( prosupport REGPROC NULL ) {} {} CREATE TABLE pg_catalog.pg_publication ( - pubupdate BOOL NULL, oid OID NULL, - puballtables BOOL NULL, - pubdelete BOOL NULL, - pubinsert BOOL NULL, pubname NAME NULL, pubowner OID NULL, + puballtables BOOL NULL, + pubinsert BOOL NULL, + pubupdate BOOL NULL, + pubdelete BOOL NULL, pubtruncate BOOL NULL, pubviaroot BOOL NULL ) CREATE TABLE pg_catalog.pg_publication ( - pubupdate BOOL NULL, oid OID NULL, - puballtables BOOL NULL, - pubdelete BOOL NULL, - pubinsert BOOL NULL, pubname NAME NULL, pubowner OID NULL, + puballtables BOOL NULL, + pubinsert BOOL NULL, + pubupdate BOOL NULL, + pubdelete BOOL NULL, pubtruncate BOOL NULL, pubviaroot BOOL NULL ) {} {} @@ -4782,46 +4782,46 @@ CREATE TABLE pg_catalog.pg_replication_origin ( roname STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_replication_origin_status ( - local_lsn STRING NULL, - remote_lsn STRING NULL, + local_id OID NULL, external_id STRING NULL, - local_id OID NULL -) CREATE TABLE pg_catalog.pg_replication_origin_status ( - local_lsn STRING NULL, remote_lsn STRING NULL, + local_lsn STRING NULL +) CREATE TABLE pg_catalog.pg_replication_origin_status ( + local_id OID NULL, external_id STRING NULL, - local_id OID NULL + remote_lsn STRING NULL, + local_lsn STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_replication_slots ( - safe_wal_size INT8 NULL, - wal_status STRING NULL, + slot_name NAME NULL, plugin NAME NULL, - restart_lsn STRING NULL, - xmin INT8 NULL, - confirmed_flush_lsn STRING NULL, - database NAME NULL, + slot_type STRING NULL, datoid OID NULL, + database NAME NULL, + temporary BOOL NULL, active BOOL NULL, - catalog_xmin INT8 NULL, - slot_name NAME NULL, active_pid INT4 NULL, - slot_type STRING NULL, - temporary BOOL NULL -) CREATE TABLE pg_catalog.pg_replication_slots ( - safe_wal_size INT8 NULL, - wal_status STRING NULL, - plugin NAME NULL, - restart_lsn STRING NULL, xmin INT8 NULL, + catalog_xmin INT8 NULL, + restart_lsn STRING NULL, confirmed_flush_lsn STRING NULL, - database NAME NULL, + wal_status STRING NULL, + safe_wal_size INT8 NULL +) CREATE TABLE pg_catalog.pg_replication_slots ( + slot_name NAME NULL, + plugin NAME NULL, + slot_type STRING NULL, datoid OID NULL, + database NAME NULL, + temporary BOOL NULL, active BOOL NULL, - catalog_xmin INT8 NULL, - slot_name NAME NULL, active_pid INT4 NULL, - slot_type STRING NULL, - temporary BOOL NULL + xmin INT8 NULL, + catalog_xmin INT8 NULL, + restart_lsn STRING NULL, + confirmed_flush_lsn STRING NULL, + wal_status STRING NULL, + safe_wal_size INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_rewrite ( oid OID NULL, @@ -4874,15 +4874,15 @@ CREATE TABLE pg_catalog.pg_roles ( rolconfig STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_rules ( - definition STRING NULL, - rulename NAME NULL, schemaname NAME NULL, - tablename NAME NULL -) CREATE TABLE pg_catalog.pg_rules ( - definition STRING NULL, + tablename NAME NULL, rulename NAME NULL, + definition STRING NULL +) CREATE TABLE pg_catalog.pg_rules ( schemaname NAME NULL, - tablename NAME NULL + tablename NAME NULL, + rulename NAME NULL, + definition STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_seclabel ( objoid OID NULL, @@ -5112,114 +5112,114 @@ CREATE TABLE pg_catalog.pg_stat_activity ( leader_pid INT4 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_all_indexes ( + relid OID NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, idx_scan INT8 NULL, - idx_tup_fetch INT8 NULL, idx_tup_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, - relid OID NULL, - relname NAME NULL + idx_tup_fetch INT8 NULL ) CREATE TABLE pg_catalog.pg_stat_all_indexes ( + relid OID NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, idx_scan INT8 NULL, - idx_tup_fetch INT8 NULL, idx_tup_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, - relid OID NULL, - relname NAME NULL + idx_tup_fetch INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_all_tables ( - n_ins_since_vacuum INT8 NULL, - seq_scan INT8 NULL, - analyze_count INT8 NULL, - autovacuum_count INT8 NULL, - last_vacuum TIMESTAMPTZ NULL, - n_dead_tup INT8 NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - autoanalyze_count INT8 NULL, + seq_scan INT8 NULL, + seq_tup_read INT8 NULL, idx_scan INT8 NULL, - last_autoanalyze TIMESTAMPTZ NULL, - n_mod_since_analyze INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, n_tup_upd INT8 NULL, - vacuum_count INT8 NULL, - last_analyze TIMESTAMPTZ NULL, - last_autovacuum TIMESTAMPTZ NULL, - n_live_tup INT8 NULL, n_tup_del INT8 NULL, - idx_tup_fetch INT8 NULL, - schemaname NAME NULL, - seq_tup_read INT8 NULL -) CREATE TABLE pg_catalog.pg_stat_all_tables ( + n_tup_hot_upd INT8 NULL, + n_live_tup INT8 NULL, + n_dead_tup INT8 NULL, + n_mod_since_analyze INT8 NULL, n_ins_since_vacuum INT8 NULL, - seq_scan INT8 NULL, - analyze_count INT8 NULL, - autovacuum_count INT8 NULL, last_vacuum TIMESTAMPTZ NULL, - n_dead_tup INT8 NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, + last_autovacuum TIMESTAMPTZ NULL, + last_analyze TIMESTAMPTZ NULL, + last_autoanalyze TIMESTAMPTZ NULL, + vacuum_count INT8 NULL, + autovacuum_count INT8 NULL, + analyze_count INT8 NULL, + autoanalyze_count INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_all_tables ( relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - autoanalyze_count INT8 NULL, + seq_scan INT8 NULL, + seq_tup_read INT8 NULL, idx_scan INT8 NULL, - last_autoanalyze TIMESTAMPTZ NULL, - n_mod_since_analyze INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, n_tup_upd INT8 NULL, - vacuum_count INT8 NULL, - last_analyze TIMESTAMPTZ NULL, - last_autovacuum TIMESTAMPTZ NULL, - n_live_tup INT8 NULL, n_tup_del INT8 NULL, - idx_tup_fetch INT8 NULL, - schemaname NAME NULL, - seq_tup_read INT8 NULL + n_tup_hot_upd INT8 NULL, + n_live_tup INT8 NULL, + n_dead_tup INT8 NULL, + n_mod_since_analyze INT8 NULL, + n_ins_since_vacuum INT8 NULL, + last_vacuum TIMESTAMPTZ NULL, + last_autovacuum TIMESTAMPTZ NULL, + last_analyze TIMESTAMPTZ NULL, + last_autoanalyze TIMESTAMPTZ NULL, + vacuum_count INT8 NULL, + autovacuum_count INT8 NULL, + analyze_count INT8 NULL, + autoanalyze_count INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_archiver ( - stats_reset TIMESTAMPTZ NULL, archived_count INT8 NULL, - failed_count INT8 NULL, - last_archived_time TIMESTAMPTZ NULL, last_archived_wal STRING NULL, + last_archived_time TIMESTAMPTZ NULL, + failed_count INT8 NULL, + last_failed_wal STRING NULL, last_failed_time TIMESTAMPTZ NULL, - last_failed_wal STRING NULL + stats_reset TIMESTAMPTZ NULL ) CREATE TABLE pg_catalog.pg_stat_archiver ( - stats_reset TIMESTAMPTZ NULL, archived_count INT8 NULL, - failed_count INT8 NULL, - last_archived_time TIMESTAMPTZ NULL, last_archived_wal STRING NULL, + last_archived_time TIMESTAMPTZ NULL, + failed_count INT8 NULL, + last_failed_wal STRING NULL, last_failed_time TIMESTAMPTZ NULL, - last_failed_wal STRING NULL + stats_reset TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_bgwriter ( - buffers_backend INT8 NULL, - buffers_clean INT8 NULL, - checkpoint_sync_time FLOAT8 NULL, - checkpoints_req INT8 NULL, checkpoints_timed INT8 NULL, + checkpoints_req INT8 NULL, + checkpoint_write_time FLOAT8 NULL, + checkpoint_sync_time FLOAT8 NULL, + buffers_checkpoint INT8 NULL, + buffers_clean INT8 NULL, maxwritten_clean INT8 NULL, - stats_reset TIMESTAMPTZ NULL, - buffers_alloc INT8 NULL, + buffers_backend INT8 NULL, buffers_backend_fsync INT8 NULL, - buffers_checkpoint INT8 NULL, - checkpoint_write_time FLOAT8 NULL + buffers_alloc INT8 NULL, + stats_reset TIMESTAMPTZ NULL ) CREATE TABLE pg_catalog.pg_stat_bgwriter ( - buffers_backend INT8 NULL, - buffers_clean INT8 NULL, - checkpoint_sync_time FLOAT8 NULL, - checkpoints_req INT8 NULL, checkpoints_timed INT8 NULL, + checkpoints_req INT8 NULL, + checkpoint_write_time FLOAT8 NULL, + checkpoint_sync_time FLOAT8 NULL, + buffers_checkpoint INT8 NULL, + buffers_clean INT8 NULL, maxwritten_clean INT8 NULL, - stats_reset TIMESTAMPTZ NULL, - buffers_alloc INT8 NULL, + buffers_backend INT8 NULL, buffers_backend_fsync INT8 NULL, - buffers_checkpoint INT8 NULL, - checkpoint_write_time FLOAT8 NULL + buffers_alloc INT8 NULL, + stats_reset TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_database ( datid OID NULL, @@ -5284,754 +5284,754 @@ CREATE TABLE pg_catalog.pg_stat_database_conflicts ( confl_deadlock INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_gssapi ( - encrypted BOOL NULL, - gss_authenticated BOOL NULL, pid INT4 NULL, - principal STRING NULL -) CREATE TABLE pg_catalog.pg_stat_gssapi ( - encrypted BOOL NULL, gss_authenticated BOOL NULL, + principal STRING NULL, + encrypted BOOL NULL +) CREATE TABLE pg_catalog.pg_stat_gssapi ( pid INT4 NULL, - principal STRING NULL + gss_authenticated BOOL NULL, + principal STRING NULL, + encrypted BOOL NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_progress_analyze ( - child_tables_total INT8 NULL, - current_child_table_relid OID NULL, - datid OID NULL, - ext_stats_computed INT8 NULL, pid INT4 NULL, - sample_blks_total INT8 NULL, - child_tables_done INT8 NULL, - ext_stats_total INT8 NULL, - phase STRING NULL, + datid OID NULL, + datname NAME NULL, relid OID NULL, + phase STRING NULL, + sample_blks_total INT8 NULL, sample_blks_scanned INT8 NULL, - datname NAME NULL -) CREATE TABLE pg_catalog.pg_stat_progress_analyze ( - child_tables_total INT8 NULL, - current_child_table_relid OID NULL, - datid OID NULL, + ext_stats_total INT8 NULL, ext_stats_computed INT8 NULL, - pid INT4 NULL, - sample_blks_total INT8 NULL, + child_tables_total INT8 NULL, child_tables_done INT8 NULL, - ext_stats_total INT8 NULL, - phase STRING NULL, + current_child_table_relid OID NULL +) CREATE TABLE pg_catalog.pg_stat_progress_analyze ( + pid INT4 NULL, + datid OID NULL, + datname NAME NULL, relid OID NULL, + phase STRING NULL, + sample_blks_total INT8 NULL, sample_blks_scanned INT8 NULL, - datname NAME NULL -) {} {} -CREATE TABLE pg_catalog.pg_stat_progress_basebackup ( - backup_streamed INT8 NULL, - backup_total INT8 NULL, - phase STRING NULL, + ext_stats_total INT8 NULL, + ext_stats_computed INT8 NULL, + child_tables_total INT8 NULL, + child_tables_done INT8 NULL, + current_child_table_relid OID NULL +) {} {} +CREATE TABLE pg_catalog.pg_stat_progress_basebackup ( pid INT4 NULL, - tablespaces_streamed INT8 NULL, - tablespaces_total INT8 NULL -) CREATE TABLE pg_catalog.pg_stat_progress_basebackup ( - backup_streamed INT8 NULL, - backup_total INT8 NULL, phase STRING NULL, + backup_total INT8 NULL, + backup_streamed INT8 NULL, + tablespaces_total INT8 NULL, + tablespaces_streamed INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_progress_basebackup ( pid INT4 NULL, - tablespaces_streamed INT8 NULL, - tablespaces_total INT8 NULL + phase STRING NULL, + backup_total INT8 NULL, + backup_streamed INT8 NULL, + tablespaces_total INT8 NULL, + tablespaces_streamed INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_progress_cluster ( - cluster_index_relid OID NULL, - command STRING NULL, + pid INT4 NULL, datid OID NULL, - heap_tuples_scanned INT8 NULL, - phase STRING NULL, datname NAME NULL, - heap_blks_scanned INT8 NULL, - heap_blks_total INT8 NULL, + relid OID NULL, + command STRING NULL, + phase STRING NULL, + cluster_index_relid OID NULL, + heap_tuples_scanned INT8 NULL, heap_tuples_written INT8 NULL, - index_rebuild_count INT8 NULL, - pid INT4 NULL, - relid OID NULL + heap_blks_total INT8 NULL, + heap_blks_scanned INT8 NULL, + index_rebuild_count INT8 NULL ) CREATE TABLE pg_catalog.pg_stat_progress_cluster ( - cluster_index_relid OID NULL, - command STRING NULL, + pid INT4 NULL, datid OID NULL, - heap_tuples_scanned INT8 NULL, - phase STRING NULL, datname NAME NULL, - heap_blks_scanned INT8 NULL, - heap_blks_total INT8 NULL, + relid OID NULL, + command STRING NULL, + phase STRING NULL, + cluster_index_relid OID NULL, + heap_tuples_scanned INT8 NULL, heap_tuples_written INT8 NULL, - index_rebuild_count INT8 NULL, - pid INT4 NULL, - relid OID NULL + heap_blks_total INT8 NULL, + heap_blks_scanned INT8 NULL, + index_rebuild_count INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_progress_create_index ( - blocks_done INT8 NULL, - index_relid OID NULL, - lockers_total INT8 NULL, - partitions_done INT8 NULL, - partitions_total INT8 NULL, - blocks_total INT8 NULL, - command STRING NULL, - current_locker_pid INT8 NULL, - datid OID NULL, pid INT4 NULL, + datid OID NULL, datname NAME NULL, - lockers_done INT8 NULL, relid OID NULL, - tuples_done INT8 NULL, - phase STRING NULL, - tuples_total INT8 NULL -) CREATE TABLE pg_catalog.pg_stat_progress_create_index ( - blocks_done INT8 NULL, index_relid OID NULL, - lockers_total INT8 NULL, - partitions_done INT8 NULL, - partitions_total INT8 NULL, - blocks_total INT8 NULL, command STRING NULL, + phase STRING NULL, + lockers_total INT8 NULL, + lockers_done INT8 NULL, current_locker_pid INT8 NULL, - datid OID NULL, + blocks_total INT8 NULL, + blocks_done INT8 NULL, + tuples_total INT8 NULL, + tuples_done INT8 NULL, + partitions_total INT8 NULL, + partitions_done INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_progress_create_index ( pid INT4 NULL, + datid OID NULL, datname NAME NULL, - lockers_done INT8 NULL, relid OID NULL, - tuples_done INT8 NULL, + index_relid OID NULL, + command STRING NULL, phase STRING NULL, - tuples_total INT8 NULL + lockers_total INT8 NULL, + lockers_done INT8 NULL, + current_locker_pid INT8 NULL, + blocks_total INT8 NULL, + blocks_done INT8 NULL, + tuples_total INT8 NULL, + tuples_done INT8 NULL, + partitions_total INT8 NULL, + partitions_done INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_progress_vacuum ( - datname NAME NULL, - heap_blks_scanned INT8 NULL, - heap_blks_total INT8 NULL, - index_vacuum_count INT8 NULL, pid INT4 NULL, - relid OID NULL, datid OID NULL, - heap_blks_vacuumed INT8 NULL, - max_dead_tuples INT8 NULL, - num_dead_tuples INT8 NULL, - phase STRING NULL -) CREATE TABLE pg_catalog.pg_stat_progress_vacuum ( datname NAME NULL, - heap_blks_scanned INT8 NULL, + relid OID NULL, + phase STRING NULL, heap_blks_total INT8 NULL, + heap_blks_scanned INT8 NULL, + heap_blks_vacuumed INT8 NULL, index_vacuum_count INT8 NULL, + max_dead_tuples INT8 NULL, + num_dead_tuples INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_progress_vacuum ( pid INT4 NULL, - relid OID NULL, datid OID NULL, + datname NAME NULL, + relid OID NULL, + phase STRING NULL, + heap_blks_total INT8 NULL, + heap_blks_scanned INT8 NULL, heap_blks_vacuumed INT8 NULL, + index_vacuum_count INT8 NULL, max_dead_tuples INT8 NULL, - num_dead_tuples INT8 NULL, - phase STRING NULL + num_dead_tuples INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_replication ( - application_name STRING NULL, - backend_xmin INT8 NULL, - replay_lsn STRING NULL, + pid INT4 NULL, usesysid OID NULL, - sent_lsn STRING NULL, - sync_priority INT4 NULL, - sync_state STRING NULL, usename NAME NULL, - backend_start TIMESTAMPTZ NULL, + application_name STRING NULL, client_addr INET NULL, - flush_lag INTERVAL NULL, - pid INT4 NULL, - write_lag INTERVAL NULL, client_hostname STRING NULL, - flush_lsn STRING NULL, - write_lsn STRING NULL, client_port INT4 NULL, - replay_lag INTERVAL NULL, - reply_time TIMESTAMPTZ NULL, - state STRING NULL -) CREATE TABLE pg_catalog.pg_stat_replication ( - application_name STRING NULL, + backend_start TIMESTAMPTZ NULL, backend_xmin INT8 NULL, - replay_lsn STRING NULL, - usesysid OID NULL, + state STRING NULL, sent_lsn STRING NULL, + write_lsn STRING NULL, + flush_lsn STRING NULL, + replay_lsn STRING NULL, + write_lag INTERVAL NULL, + flush_lag INTERVAL NULL, + replay_lag INTERVAL NULL, sync_priority INT4 NULL, sync_state STRING NULL, + reply_time TIMESTAMPTZ NULL +) CREATE TABLE pg_catalog.pg_stat_replication ( + pid INT4 NULL, + usesysid OID NULL, usename NAME NULL, - backend_start TIMESTAMPTZ NULL, + application_name STRING NULL, client_addr INET NULL, - flush_lag INTERVAL NULL, - pid INT4 NULL, - write_lag INTERVAL NULL, client_hostname STRING NULL, - flush_lsn STRING NULL, - write_lsn STRING NULL, client_port INT4 NULL, + backend_start TIMESTAMPTZ NULL, + backend_xmin INT8 NULL, + state STRING NULL, + sent_lsn STRING NULL, + write_lsn STRING NULL, + flush_lsn STRING NULL, + replay_lsn STRING NULL, + write_lag INTERVAL NULL, + flush_lag INTERVAL NULL, replay_lag INTERVAL NULL, - reply_time TIMESTAMPTZ NULL, - state STRING NULL + sync_priority INT4 NULL, + sync_state STRING NULL, + reply_time TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_slru ( - blks_exists INT8 NULL, name STRING NULL, - truncates INT8 NULL, - flushes INT8 NULL, - stats_reset TIMESTAMPTZ NULL, + blks_zeroed INT8 NULL, blks_hit INT8 NULL, blks_read INT8 NULL, blks_written INT8 NULL, - blks_zeroed INT8 NULL -) CREATE TABLE pg_catalog.pg_stat_slru ( blks_exists INT8 NULL, - name STRING NULL, - truncates INT8 NULL, flushes INT8 NULL, - stats_reset TIMESTAMPTZ NULL, + truncates INT8 NULL, + stats_reset TIMESTAMPTZ NULL +) CREATE TABLE pg_catalog.pg_stat_slru ( + name STRING NULL, + blks_zeroed INT8 NULL, blks_hit INT8 NULL, blks_read INT8 NULL, blks_written INT8 NULL, - blks_zeroed INT8 NULL + blks_exists INT8 NULL, + flushes INT8 NULL, + truncates INT8 NULL, + stats_reset TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_ssl ( - issuer_dn STRING NULL, - version STRING NULL, - client_serial DECIMAL NULL, - compression BOOL NULL, pid INT4 NULL, ssl BOOL NULL, - bits INT4 NULL, - cipher STRING NULL, - client_dn STRING NULL -) CREATE TABLE pg_catalog.pg_stat_ssl ( - issuer_dn STRING NULL, version STRING NULL, - client_serial DECIMAL NULL, + cipher STRING NULL, + bits INT4 NULL, compression BOOL NULL, + client_dn STRING NULL, + client_serial DECIMAL NULL, + issuer_dn STRING NULL +) CREATE TABLE pg_catalog.pg_stat_ssl ( pid INT4 NULL, ssl BOOL NULL, - bits INT4 NULL, + version STRING NULL, cipher STRING NULL, - client_dn STRING NULL + bits INT4 NULL, + compression BOOL NULL, + client_dn STRING NULL, + client_serial DECIMAL NULL, + issuer_dn STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_subscription ( - last_msg_receipt_time TIMESTAMPTZ NULL, - last_msg_send_time TIMESTAMPTZ NULL, - latest_end_lsn STRING NULL, - latest_end_time TIMESTAMPTZ NULL, - relid OID NULL, + subid OID NULL, + subname NAME NULL, pid INT4 NULL, + relid OID NULL, received_lsn STRING NULL, - subid OID NULL, - subname NAME NULL -) CREATE TABLE pg_catalog.pg_stat_subscription ( - last_msg_receipt_time TIMESTAMPTZ NULL, last_msg_send_time TIMESTAMPTZ NULL, + last_msg_receipt_time TIMESTAMPTZ NULL, latest_end_lsn STRING NULL, - latest_end_time TIMESTAMPTZ NULL, - relid OID NULL, + latest_end_time TIMESTAMPTZ NULL +) CREATE TABLE pg_catalog.pg_stat_subscription ( + subid OID NULL, + subname NAME NULL, pid INT4 NULL, + relid OID NULL, received_lsn STRING NULL, - subid OID NULL, - subname NAME NULL + last_msg_send_time TIMESTAMPTZ NULL, + last_msg_receipt_time TIMESTAMPTZ NULL, + latest_end_lsn STRING NULL, + latest_end_time TIMESTAMPTZ NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_sys_indexes ( - idx_tup_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, idx_scan INT8 NULL, + idx_tup_read INT8 NULL, idx_tup_fetch INT8 NULL ) CREATE TABLE pg_catalog.pg_stat_sys_indexes ( - idx_tup_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, idx_scan INT8 NULL, + idx_tup_read INT8 NULL, idx_tup_fetch INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_sys_tables ( + relid OID NULL, + schemaname NAME NULL, relname NAME NULL, + seq_scan INT8 NULL, + seq_tup_read INT8 NULL, idx_scan INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL, + n_live_tup INT8 NULL, n_dead_tup INT8 NULL, + n_mod_since_analyze INT8 NULL, n_ins_since_vacuum INT8 NULL, - analyze_count INT8 NULL, - last_autovacuum TIMESTAMPTZ NULL, last_vacuum TIMESTAMPTZ NULL, - n_tup_upd INT8 NULL, - seq_tup_read INT8 NULL, - n_tup_del INT8 NULL, - autoanalyze_count INT8 NULL, - autovacuum_count INT8 NULL, - idx_tup_fetch INT8 NULL, + last_autovacuum TIMESTAMPTZ NULL, last_analyze TIMESTAMPTZ NULL, last_autoanalyze TIMESTAMPTZ NULL, - n_live_tup INT8 NULL, - n_mod_since_analyze INT8 NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, + vacuum_count INT8 NULL, + autovacuum_count INT8 NULL, + analyze_count INT8 NULL, + autoanalyze_count INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_sys_tables ( relid OID NULL, schemaname NAME NULL, - seq_scan INT8 NULL, - vacuum_count INT8 NULL -) CREATE TABLE pg_catalog.pg_stat_sys_tables ( relname NAME NULL, + seq_scan INT8 NULL, + seq_tup_read INT8 NULL, idx_scan INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL, + n_live_tup INT8 NULL, n_dead_tup INT8 NULL, + n_mod_since_analyze INT8 NULL, n_ins_since_vacuum INT8 NULL, - analyze_count INT8 NULL, - last_autovacuum TIMESTAMPTZ NULL, last_vacuum TIMESTAMPTZ NULL, - n_tup_upd INT8 NULL, - seq_tup_read INT8 NULL, - n_tup_del INT8 NULL, - autoanalyze_count INT8 NULL, - autovacuum_count INT8 NULL, - idx_tup_fetch INT8 NULL, + last_autovacuum TIMESTAMPTZ NULL, last_analyze TIMESTAMPTZ NULL, last_autoanalyze TIMESTAMPTZ NULL, - n_live_tup INT8 NULL, - n_mod_since_analyze INT8 NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, - relid OID NULL, - schemaname NAME NULL, - seq_scan INT8 NULL, - vacuum_count INT8 NULL + vacuum_count INT8 NULL, + autovacuum_count INT8 NULL, + analyze_count INT8 NULL, + autoanalyze_count INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_user_functions ( - calls INT8 NULL, funcid OID NULL, - funcname NAME NULL, schemaname NAME NULL, - self_time FLOAT8 NULL, - total_time FLOAT8 NULL -) CREATE TABLE pg_catalog.pg_stat_user_functions ( + funcname NAME NULL, calls INT8 NULL, + total_time FLOAT8 NULL, + self_time FLOAT8 NULL +) CREATE TABLE pg_catalog.pg_stat_user_functions ( funcid OID NULL, - funcname NAME NULL, schemaname NAME NULL, - self_time FLOAT8 NULL, - total_time FLOAT8 NULL + funcname NAME NULL, + calls INT8 NULL, + total_time FLOAT8 NULL, + self_time FLOAT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_user_indexes ( - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, - idx_scan INT8 NULL, - idx_tup_fetch INT8 NULL, - idx_tup_read INT8 NULL, - indexrelid OID NULL -) CREATE TABLE pg_catalog.pg_stat_user_indexes ( - indexrelname NAME NULL, - relid OID NULL, relname NAME NULL, - schemaname NAME NULL, + indexrelname NAME NULL, idx_scan INT8 NULL, - idx_tup_fetch INT8 NULL, idx_tup_read INT8 NULL, - indexrelid OID NULL -) {} {} -CREATE TABLE pg_catalog.pg_stat_user_tables ( - n_ins_since_vacuum INT8 NULL, - n_tup_hot_upd INT8 NULL, - schemaname NAME NULL, - analyze_count INT8 NULL, - autovacuum_count INT8 NULL, - last_autoanalyze TIMESTAMPTZ NULL, - n_dead_tup INT8 NULL, - n_live_tup INT8 NULL, - n_tup_del INT8 NULL, - n_tup_ins INT8 NULL, - seq_tup_read INT8 NULL, - autoanalyze_count INT8 NULL, - last_analyze TIMESTAMPTZ NULL, - n_mod_since_analyze INT8 NULL, + idx_tup_fetch INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_user_indexes ( relid OID NULL, + indexrelid OID NULL, + schemaname NAME NULL, relname NAME NULL, - vacuum_count INT8 NULL, + indexrelname NAME NULL, idx_scan INT8 NULL, - last_autovacuum TIMESTAMPTZ NULL, - n_tup_upd INT8 NULL, + idx_tup_read INT8 NULL, + idx_tup_fetch INT8 NULL +) {} {} +CREATE TABLE pg_catalog.pg_stat_user_tables ( + relid OID NULL, + schemaname NAME NULL, + relname NAME NULL, seq_scan INT8 NULL, + seq_tup_read INT8 NULL, + idx_scan INT8 NULL, idx_tup_fetch INT8 NULL, - last_vacuum TIMESTAMPTZ NULL -) CREATE TABLE pg_catalog.pg_stat_user_tables ( - n_ins_since_vacuum INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, n_tup_hot_upd INT8 NULL, - schemaname NAME NULL, - analyze_count INT8 NULL, - autovacuum_count INT8 NULL, - last_autoanalyze TIMESTAMPTZ NULL, - n_dead_tup INT8 NULL, n_live_tup INT8 NULL, - n_tup_del INT8 NULL, - n_tup_ins INT8 NULL, - seq_tup_read INT8 NULL, - autoanalyze_count INT8 NULL, - last_analyze TIMESTAMPTZ NULL, + n_dead_tup INT8 NULL, n_mod_since_analyze INT8 NULL, + n_ins_since_vacuum INT8 NULL, + last_vacuum TIMESTAMPTZ NULL, + last_autovacuum TIMESTAMPTZ NULL, + last_analyze TIMESTAMPTZ NULL, + last_autoanalyze TIMESTAMPTZ NULL, + vacuum_count INT8 NULL, + autovacuum_count INT8 NULL, + analyze_count INT8 NULL, + autoanalyze_count INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_user_tables ( relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - vacuum_count INT8 NULL, - idx_scan INT8 NULL, - last_autovacuum TIMESTAMPTZ NULL, - n_tup_upd INT8 NULL, seq_scan INT8 NULL, + seq_tup_read INT8 NULL, + idx_scan INT8 NULL, idx_tup_fetch INT8 NULL, - last_vacuum TIMESTAMPTZ NULL + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL, + n_live_tup INT8 NULL, + n_dead_tup INT8 NULL, + n_mod_since_analyze INT8 NULL, + n_ins_since_vacuum INT8 NULL, + last_vacuum TIMESTAMPTZ NULL, + last_autovacuum TIMESTAMPTZ NULL, + last_analyze TIMESTAMPTZ NULL, + last_autoanalyze TIMESTAMPTZ NULL, + vacuum_count INT8 NULL, + autovacuum_count INT8 NULL, + analyze_count INT8 NULL, + autoanalyze_count INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_wal_receiver ( - latest_end_time TIMESTAMPTZ NULL, pid INT4 NULL, - sender_port INT4 NULL, - slot_name STRING NULL, - last_msg_receipt_time TIMESTAMPTZ NULL, + status STRING NULL, receive_start_lsn STRING NULL, - conninfo STRING NULL, - received_tli INT4 NULL, - sender_host STRING NULL, + receive_start_tli INT4 NULL, + written_lsn STRING NULL, flushed_lsn STRING NULL, + received_tli INT4 NULL, last_msg_send_time TIMESTAMPTZ NULL, + last_msg_receipt_time TIMESTAMPTZ NULL, latest_end_lsn STRING NULL, - receive_start_tli INT4 NULL, - status STRING NULL, - written_lsn STRING NULL -) CREATE TABLE pg_catalog.pg_stat_wal_receiver ( latest_end_time TIMESTAMPTZ NULL, - pid INT4 NULL, - sender_port INT4 NULL, slot_name STRING NULL, - last_msg_receipt_time TIMESTAMPTZ NULL, - receive_start_lsn STRING NULL, - conninfo STRING NULL, - received_tli INT4 NULL, sender_host STRING NULL, + sender_port INT4 NULL, + conninfo STRING NULL +) CREATE TABLE pg_catalog.pg_stat_wal_receiver ( + pid INT4 NULL, + status STRING NULL, + receive_start_lsn STRING NULL, + receive_start_tli INT4 NULL, + written_lsn STRING NULL, flushed_lsn STRING NULL, + received_tli INT4 NULL, last_msg_send_time TIMESTAMPTZ NULL, + last_msg_receipt_time TIMESTAMPTZ NULL, latest_end_lsn STRING NULL, - receive_start_tli INT4 NULL, - status STRING NULL, - written_lsn STRING NULL + latest_end_time TIMESTAMPTZ NULL, + slot_name STRING NULL, + sender_host STRING NULL, + sender_port INT4 NULL, + conninfo STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_xact_all_tables ( - relname NAME NULL, + relid OID NULL, schemaname NAME NULL, + relname NAME NULL, seq_scan INT8 NULL, + seq_tup_read INT8 NULL, idx_scan INT8 NULL, idx_tup_fetch INT8 NULL, - n_tup_del INT8 NULL, - n_tup_hot_upd INT8 NULL, n_tup_ins INT8 NULL, - seq_tup_read INT8 NULL, n_tup_upd INT8 NULL, - relid OID NULL + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL ) CREATE TABLE pg_catalog.pg_stat_xact_all_tables ( - relname NAME NULL, + relid OID NULL, schemaname NAME NULL, + relname NAME NULL, seq_scan INT8 NULL, + seq_tup_read INT8 NULL, idx_scan INT8 NULL, idx_tup_fetch INT8 NULL, - n_tup_del INT8 NULL, - n_tup_hot_upd INT8 NULL, n_tup_ins INT8 NULL, - seq_tup_read INT8 NULL, n_tup_upd INT8 NULL, - relid OID NULL + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_xact_sys_tables ( - idx_scan INT8 NULL, - idx_tup_fetch INT8 NULL, - n_tup_del INT8 NULL, relid OID NULL, schemaname NAME NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, - n_tup_upd INT8 NULL, relname NAME NULL, seq_scan INT8 NULL, - seq_tup_read INT8 NULL -) CREATE TABLE pg_catalog.pg_stat_xact_sys_tables ( + seq_tup_read INT8 NULL, idx_scan INT8 NULL, idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL +) CREATE TABLE pg_catalog.pg_stat_xact_sys_tables ( relid OID NULL, schemaname NAME NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, - n_tup_upd INT8 NULL, relname NAME NULL, seq_scan INT8 NULL, - seq_tup_read INT8 NULL + seq_tup_read INT8 NULL, + idx_scan INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_xact_user_functions ( - calls INT8 NULL, funcid OID NULL, - funcname NAME NULL, schemaname NAME NULL, - self_time FLOAT8 NULL, - total_time FLOAT8 NULL -) CREATE TABLE pg_catalog.pg_stat_xact_user_functions ( + funcname NAME NULL, calls INT8 NULL, + total_time FLOAT8 NULL, + self_time FLOAT8 NULL +) CREATE TABLE pg_catalog.pg_stat_xact_user_functions ( funcid OID NULL, - funcname NAME NULL, schemaname NAME NULL, - self_time FLOAT8 NULL, - total_time FLOAT8 NULL + funcname NAME NULL, + calls INT8 NULL, + total_time FLOAT8 NULL, + self_time FLOAT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_stat_xact_user_tables ( relid OID NULL, - relname NAME NULL, schemaname NAME NULL, - n_tup_upd INT8 NULL, - idx_tup_fetch INT8 NULL, - n_tup_del INT8 NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, + relname NAME NULL, seq_scan INT8 NULL, seq_tup_read INT8 NULL, - idx_scan INT8 NULL + idx_scan INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL ) CREATE TABLE pg_catalog.pg_stat_xact_user_tables ( relid OID NULL, - relname NAME NULL, schemaname NAME NULL, - n_tup_upd INT8 NULL, - idx_tup_fetch INT8 NULL, - n_tup_del INT8 NULL, - n_tup_hot_upd INT8 NULL, - n_tup_ins INT8 NULL, + relname NAME NULL, seq_scan INT8 NULL, seq_tup_read INT8 NULL, - idx_scan INT8 NULL + idx_scan INT8 NULL, + idx_tup_fetch INT8 NULL, + n_tup_ins INT8 NULL, + n_tup_upd INT8 NULL, + n_tup_del INT8 NULL, + n_tup_hot_upd INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_all_indexes ( - idx_blks_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, + idx_blks_read INT8 NULL, idx_blks_hit INT8 NULL ) CREATE TABLE pg_catalog.pg_statio_all_indexes ( - idx_blks_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, + idx_blks_read INT8 NULL, idx_blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_all_sequences ( - blks_hit INT8 NULL, - blks_read INT8 NULL, relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - schemaname NAME NULL -) CREATE TABLE pg_catalog.pg_statio_all_sequences ( - blks_hit INT8 NULL, blks_read INT8 NULL, + blks_hit INT8 NULL +) CREATE TABLE pg_catalog.pg_statio_all_sequences ( relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - schemaname NAME NULL + blks_read INT8 NULL, + blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_all_tables ( - idx_blks_hit INT8 NULL, - idx_blks_read INT8 NULL, relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - tidx_blks_hit INT8 NULL, - toast_blks_hit INT8 NULL, - heap_blks_hit INT8 NULL, heap_blks_read INT8 NULL, + heap_blks_hit INT8 NULL, + idx_blks_read INT8 NULL, + idx_blks_hit INT8 NULL, toast_blks_read INT8 NULL, - schemaname NAME NULL, - tidx_blks_read INT8 NULL + toast_blks_hit INT8 NULL, + tidx_blks_read INT8 NULL, + tidx_blks_hit INT8 NULL ) CREATE TABLE pg_catalog.pg_statio_all_tables ( - idx_blks_hit INT8 NULL, - idx_blks_read INT8 NULL, relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - tidx_blks_hit INT8 NULL, - toast_blks_hit INT8 NULL, - heap_blks_hit INT8 NULL, heap_blks_read INT8 NULL, + heap_blks_hit INT8 NULL, + idx_blks_read INT8 NULL, + idx_blks_hit INT8 NULL, toast_blks_read INT8 NULL, - schemaname NAME NULL, - tidx_blks_read INT8 NULL + toast_blks_hit INT8 NULL, + tidx_blks_read INT8 NULL, + tidx_blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_sys_indexes ( - idx_blks_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, + idx_blks_read INT8 NULL, idx_blks_hit INT8 NULL ) CREATE TABLE pg_catalog.pg_statio_sys_indexes ( - idx_blks_read INT8 NULL, - indexrelid OID NULL, - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, + relname NAME NULL, + indexrelname NAME NULL, + idx_blks_read INT8 NULL, idx_blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_sys_sequences ( + relid OID NULL, schemaname NAME NULL, - blks_hit INT8 NULL, + relname NAME NULL, blks_read INT8 NULL, - relid OID NULL, - relname NAME NULL + blks_hit INT8 NULL ) CREATE TABLE pg_catalog.pg_statio_sys_sequences ( + relid OID NULL, schemaname NAME NULL, - blks_hit INT8 NULL, + relname NAME NULL, blks_read INT8 NULL, - relid OID NULL, - relname NAME NULL + blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_sys_tables ( - toast_blks_hit INT8 NULL, - heap_blks_hit INT8 NULL, - idx_blks_hit INT8 NULL, + relid OID NULL, + schemaname NAME NULL, relname NAME NULL, - tidx_blks_hit INT8 NULL, - tidx_blks_read INT8 NULL, heap_blks_read INT8 NULL, + heap_blks_hit INT8 NULL, idx_blks_read INT8 NULL, + idx_blks_hit INT8 NULL, + toast_blks_read INT8 NULL, + toast_blks_hit INT8 NULL, + tidx_blks_read INT8 NULL, + tidx_blks_hit INT8 NULL +) CREATE TABLE pg_catalog.pg_statio_sys_tables ( relid OID NULL, schemaname NAME NULL, - toast_blks_read INT8 NULL -) CREATE TABLE pg_catalog.pg_statio_sys_tables ( - toast_blks_hit INT8 NULL, + relname NAME NULL, + heap_blks_read INT8 NULL, heap_blks_hit INT8 NULL, + idx_blks_read INT8 NULL, idx_blks_hit INT8 NULL, - relname NAME NULL, - tidx_blks_hit INT8 NULL, + toast_blks_read INT8 NULL, + toast_blks_hit INT8 NULL, tidx_blks_read INT8 NULL, - heap_blks_read INT8 NULL, - idx_blks_read INT8 NULL, - relid OID NULL, - schemaname NAME NULL, - toast_blks_read INT8 NULL + tidx_blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_user_indexes ( - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, - idx_blks_hit INT8 NULL, + relname NAME NULL, + indexrelname NAME NULL, idx_blks_read INT8 NULL, - indexrelid OID NULL + idx_blks_hit INT8 NULL ) CREATE TABLE pg_catalog.pg_statio_user_indexes ( - indexrelname NAME NULL, relid OID NULL, - relname NAME NULL, + indexrelid OID NULL, schemaname NAME NULL, - idx_blks_hit INT8 NULL, + relname NAME NULL, + indexrelname NAME NULL, idx_blks_read INT8 NULL, - indexrelid OID NULL + idx_blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_user_sequences ( - blks_read INT8 NULL, relid OID NULL, - relname NAME NULL, schemaname NAME NULL, + relname NAME NULL, + blks_read INT8 NULL, blks_hit INT8 NULL ) CREATE TABLE pg_catalog.pg_statio_user_sequences ( - blks_read INT8 NULL, relid OID NULL, - relname NAME NULL, schemaname NAME NULL, + relname NAME NULL, + blks_read INT8 NULL, blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statio_user_tables ( - heap_blks_hit INT8 NULL, - heap_blks_read INT8 NULL, - tidx_blks_read INT8 NULL, - toast_blks_hit INT8 NULL, - toast_blks_read INT8 NULL, - idx_blks_hit INT8 NULL, - idx_blks_read INT8 NULL, relid OID NULL, - relname NAME NULL, schemaname NAME NULL, - tidx_blks_hit INT8 NULL -) CREATE TABLE pg_catalog.pg_statio_user_tables ( - heap_blks_hit INT8 NULL, + relname NAME NULL, heap_blks_read INT8 NULL, - tidx_blks_read INT8 NULL, - toast_blks_hit INT8 NULL, - toast_blks_read INT8 NULL, - idx_blks_hit INT8 NULL, + heap_blks_hit INT8 NULL, idx_blks_read INT8 NULL, + idx_blks_hit INT8 NULL, + toast_blks_read INT8 NULL, + toast_blks_hit INT8 NULL, + tidx_blks_read INT8 NULL, + tidx_blks_hit INT8 NULL +) CREATE TABLE pg_catalog.pg_statio_user_tables ( relid OID NULL, - relname NAME NULL, schemaname NAME NULL, + relname NAME NULL, + heap_blks_read INT8 NULL, + heap_blks_hit INT8 NULL, + idx_blks_read INT8 NULL, + idx_blks_hit INT8 NULL, + toast_blks_read INT8 NULL, + toast_blks_hit INT8 NULL, + tidx_blks_read INT8 NULL, tidx_blks_hit INT8 NULL ) {} {} CREATE TABLE pg_catalog.pg_statistic ( - stakind2 INT2 NULL, - stanumbers2 FLOAT4[] NULL, - stanumbers3 FLOAT4[] NULL, - staop5 OID NULL, - stacoll3 OID NULL, - stainherit BOOL NULL, - stakind3 INT2 NULL, - stavalues5 STRING[] NULL, + starelid OID NULL, staattnum INT2 NULL, - stacoll1 OID NULL, - stacoll4 OID NULL, + stainherit BOOL NULL, stanullfrac FLOAT4 NULL, - stavalues1 STRING[] NULL, stawidth INT4 NULL, - stacoll2 OID NULL, - stanumbers4 FLOAT4[] NULL, - stanumbers5 FLOAT4[] NULL, - staop2 OID NULL, - stavalues3 STRING[] NULL, + stadistinct FLOAT4 NULL, + stakind1 INT2 NULL, + stakind2 INT2 NULL, + stakind3 INT2 NULL, stakind4 INT2 NULL, + stakind5 INT2 NULL, staop1 OID NULL, + staop2 OID NULL, + staop3 OID NULL, staop4 OID NULL, + staop5 OID NULL, + stacoll1 OID NULL, + stacoll2 OID NULL, + stacoll3 OID NULL, + stacoll4 OID NULL, stacoll5 OID NULL, - stakind5 INT2 NULL, - staop3 OID NULL, - stavalues2 STRING[] NULL, - stavalues4 STRING[] NULL, - stakind1 INT2 NULL, stanumbers1 FLOAT4[] NULL, - starelid OID NULL, - stadistinct FLOAT4 NULL -) CREATE TABLE pg_catalog.pg_statistic ( - stakind2 INT2 NULL, stanumbers2 FLOAT4[] NULL, stanumbers3 FLOAT4[] NULL, - staop5 OID NULL, - stacoll3 OID NULL, - stainherit BOOL NULL, - stakind3 INT2 NULL, - stavalues5 STRING[] NULL, - staattnum INT2 NULL, - stacoll1 OID NULL, - stacoll4 OID NULL, - stanullfrac FLOAT4 NULL, - stavalues1 STRING[] NULL, - stawidth INT4 NULL, - stacoll2 OID NULL, stanumbers4 FLOAT4[] NULL, stanumbers5 FLOAT4[] NULL, - staop2 OID NULL, + stavalues1 STRING[] NULL, + stavalues2 STRING[] NULL, stavalues3 STRING[] NULL, + stavalues4 STRING[] NULL, + stavalues5 STRING[] NULL +) CREATE TABLE pg_catalog.pg_statistic ( + starelid OID NULL, + staattnum INT2 NULL, + stainherit BOOL NULL, + stanullfrac FLOAT4 NULL, + stawidth INT4 NULL, + stadistinct FLOAT4 NULL, + stakind1 INT2 NULL, + stakind2 INT2 NULL, + stakind3 INT2 NULL, stakind4 INT2 NULL, + stakind5 INT2 NULL, staop1 OID NULL, + staop2 OID NULL, + staop3 OID NULL, staop4 OID NULL, + staop5 OID NULL, + stacoll1 OID NULL, + stacoll2 OID NULL, + stacoll3 OID NULL, + stacoll4 OID NULL, stacoll5 OID NULL, - stakind5 INT2 NULL, - staop3 OID NULL, + stanumbers1 FLOAT4[] NULL, + stanumbers2 FLOAT4[] NULL, + stanumbers3 FLOAT4[] NULL, + stanumbers4 FLOAT4[] NULL, + stanumbers5 FLOAT4[] NULL, + stavalues1 STRING[] NULL, stavalues2 STRING[] NULL, + stavalues3 STRING[] NULL, stavalues4 STRING[] NULL, - stakind1 INT2 NULL, - stanumbers1 FLOAT4[] NULL, - starelid OID NULL, - stadistinct FLOAT4 NULL + stavalues5 STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_statistic_ext ( oid OID NULL, @@ -6053,107 +6053,107 @@ CREATE TABLE pg_catalog.pg_statistic_ext ( stxkind "char"[] NULL ) {} {} CREATE TABLE pg_catalog.pg_statistic_ext_data ( - stxddependencies BYTES NULL, - stxdmcv BYTES NULL, + stxoid OID NULL, stxdndistinct BYTES NULL, - stxoid OID NULL -) CREATE TABLE pg_catalog.pg_statistic_ext_data ( stxddependencies BYTES NULL, - stxdmcv BYTES NULL, + stxdmcv BYTES NULL +) CREATE TABLE pg_catalog.pg_statistic_ext_data ( + stxoid OID NULL, stxdndistinct BYTES NULL, - stxoid OID NULL + stxddependencies BYTES NULL, + stxdmcv BYTES NULL ) {} {} CREATE TABLE pg_catalog.pg_stats ( - histogram_bounds STRING[] NULL, - most_common_elem_freqs FLOAT4[] NULL, - most_common_elems STRING[] NULL, - most_common_vals STRING[] NULL, + schemaname NAME NULL, + tablename NAME NULL, attname NAME NULL, inherited BOOL NULL, - n_distinct FLOAT4 NULL, - schemaname NAME NULL, - correlation FLOAT4 NULL, null_frac FLOAT4 NULL, - elem_count_histogram FLOAT4[] NULL, + avg_width INT4 NULL, + n_distinct FLOAT4 NULL, + most_common_vals STRING[] NULL, most_common_freqs FLOAT4[] NULL, - tablename NAME NULL, - avg_width INT4 NULL -) CREATE TABLE pg_catalog.pg_stats ( histogram_bounds STRING[] NULL, - most_common_elem_freqs FLOAT4[] NULL, + correlation FLOAT4 NULL, most_common_elems STRING[] NULL, - most_common_vals STRING[] NULL, + most_common_elem_freqs FLOAT4[] NULL, + elem_count_histogram FLOAT4[] NULL +) CREATE TABLE pg_catalog.pg_stats ( + schemaname NAME NULL, + tablename NAME NULL, attname NAME NULL, inherited BOOL NULL, - n_distinct FLOAT4 NULL, - schemaname NAME NULL, - correlation FLOAT4 NULL, null_frac FLOAT4 NULL, - elem_count_histogram FLOAT4[] NULL, + avg_width INT4 NULL, + n_distinct FLOAT4 NULL, + most_common_vals STRING[] NULL, most_common_freqs FLOAT4[] NULL, - tablename NAME NULL, - avg_width INT4 NULL + histogram_bounds STRING[] NULL, + correlation FLOAT4 NULL, + most_common_elems STRING[] NULL, + most_common_elem_freqs FLOAT4[] NULL, + elem_count_histogram FLOAT4[] NULL ) {} {} CREATE TABLE pg_catalog.pg_stats_ext ( - kinds "char"[] NULL, - most_common_base_freqs FLOAT8[] NULL, - most_common_freqs FLOAT8[] NULL, - n_distinct BYTES NULL, schemaname NAME NULL, + tablename NAME NULL, statistics_schemaname NAME NULL, - dependencies BYTES NULL, - most_common_val_nulls BOOL[] NULL, - most_common_vals STRING[] NULL, statistics_name NAME NULL, statistics_owner NAME NULL, - tablename NAME NULL, - attnames NAME[] NULL -) CREATE TABLE pg_catalog.pg_stats_ext ( + attnames NAME[] NULL, kinds "char"[] NULL, - most_common_base_freqs FLOAT8[] NULL, - most_common_freqs FLOAT8[] NULL, n_distinct BYTES NULL, - schemaname NAME NULL, - statistics_schemaname NAME NULL, dependencies BYTES NULL, - most_common_val_nulls BOOL[] NULL, most_common_vals STRING[] NULL, + most_common_val_nulls BOOL[] NULL, + most_common_freqs FLOAT8[] NULL, + most_common_base_freqs FLOAT8[] NULL +) CREATE TABLE pg_catalog.pg_stats_ext ( + schemaname NAME NULL, + tablename NAME NULL, + statistics_schemaname NAME NULL, statistics_name NAME NULL, statistics_owner NAME NULL, - tablename NAME NULL, - attnames NAME[] NULL + attnames NAME[] NULL, + kinds "char"[] NULL, + n_distinct BYTES NULL, + dependencies BYTES NULL, + most_common_vals STRING[] NULL, + most_common_val_nulls BOOL[] NULL, + most_common_freqs FLOAT8[] NULL, + most_common_base_freqs FLOAT8[] NULL ) {} {} CREATE TABLE pg_catalog.pg_subscription ( - subname NAME NULL, - subpublications STRING[] NULL, - subslotname NAME NULL, - subsynccommit STRING NULL, oid OID NULL, - subconninfo STRING NULL, subdbid OID NULL, - subenabled BOOL NULL, - subowner OID NULL -) CREATE TABLE pg_catalog.pg_subscription ( subname NAME NULL, - subpublications STRING[] NULL, + subowner OID NULL, + subenabled BOOL NULL, + subconninfo STRING NULL, subslotname NAME NULL, subsynccommit STRING NULL, + subpublications STRING[] NULL +) CREATE TABLE pg_catalog.pg_subscription ( oid OID NULL, - subconninfo STRING NULL, subdbid OID NULL, + subname NAME NULL, + subowner OID NULL, subenabled BOOL NULL, - subowner OID NULL + subconninfo STRING NULL, + subslotname NAME NULL, + subsynccommit STRING NULL, + subpublications STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_subscription_rel ( - srrelid OID NULL, srsubid OID NULL, - srsublsn STRING NULL, - srsubstate "char" NULL -) CREATE TABLE pg_catalog.pg_subscription_rel ( srrelid OID NULL, + srsubstate "char" NULL, + srsublsn STRING NULL +) CREATE TABLE pg_catalog.pg_subscription_rel ( srsubid OID NULL, - srsublsn STRING NULL, - srsubstate "char" NULL + srrelid OID NULL, + srsubstate "char" NULL, + srsublsn STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_tables ( schemaname NAME NULL, @@ -6191,36 +6191,36 @@ CREATE TABLE pg_catalog.pg_tablespace ( ) {} {} CREATE TABLE pg_catalog.pg_timezone_abbrevs ( abbrev STRING NULL, - is_dst BOOL NULL, - utc_offset INTERVAL NULL + utc_offset INTERVAL NULL, + is_dst BOOL NULL ) CREATE TABLE pg_catalog.pg_timezone_abbrevs ( abbrev STRING NULL, - is_dst BOOL NULL, - utc_offset INTERVAL NULL + utc_offset INTERVAL NULL, + is_dst BOOL NULL ) {} {} CREATE TABLE pg_catalog.pg_timezone_names ( - abbrev STRING NULL, - is_dst BOOL NULL, name STRING NULL, - utc_offset INTERVAL NULL -) CREATE TABLE pg_catalog.pg_timezone_names ( abbrev STRING NULL, - is_dst BOOL NULL, + utc_offset INTERVAL NULL, + is_dst BOOL NULL +) CREATE TABLE pg_catalog.pg_timezone_names ( name STRING NULL, - utc_offset INTERVAL NULL + abbrev STRING NULL, + utc_offset INTERVAL NULL, + is_dst BOOL NULL ) {} {} CREATE TABLE pg_catalog.pg_transform ( - trffromsql REGPROC NULL, - trflang OID NULL, - trftosql REGPROC NULL, + oid OID NULL, trftype OID NULL, - oid OID NULL -) CREATE TABLE pg_catalog.pg_transform ( - trffromsql REGPROC NULL, trflang OID NULL, - trftosql REGPROC NULL, + trffromsql REGPROC NULL, + trftosql REGPROC NULL +) CREATE TABLE pg_catalog.pg_transform ( + oid OID NULL, trftype OID NULL, - oid OID NULL + trflang OID NULL, + trffromsql REGPROC NULL, + trftosql REGPROC NULL ) {} {} CREATE TABLE pg_catalog.pg_trigger ( oid OID NULL, @@ -6264,75 +6264,75 @@ CREATE TABLE pg_catalog.pg_trigger ( tgparentid OID NULL ) {} {} CREATE TABLE pg_catalog.pg_ts_config ( + oid OID NULL, cfgname NAME NULL, cfgnamespace OID NULL, cfgowner OID NULL, - cfgparser OID NULL, - oid OID NULL + cfgparser OID NULL ) CREATE TABLE pg_catalog.pg_ts_config ( + oid OID NULL, cfgname NAME NULL, cfgnamespace OID NULL, cfgowner OID NULL, - cfgparser OID NULL, - oid OID NULL + cfgparser OID NULL ) {} {} CREATE TABLE pg_catalog.pg_ts_config_map ( mapcfg OID NULL, - mapdict OID NULL, + maptokentype INT4 NULL, mapseqno INT4 NULL, - maptokentype INT4 NULL + mapdict OID NULL ) CREATE TABLE pg_catalog.pg_ts_config_map ( mapcfg OID NULL, - mapdict OID NULL, + maptokentype INT4 NULL, mapseqno INT4 NULL, - maptokentype INT4 NULL + mapdict OID NULL ) {} {} CREATE TABLE pg_catalog.pg_ts_dict ( - dictinitoption STRING NULL, + oid OID NULL, dictname NAME NULL, dictnamespace OID NULL, dictowner OID NULL, dicttemplate OID NULL, - oid OID NULL + dictinitoption STRING NULL ) CREATE TABLE pg_catalog.pg_ts_dict ( - dictinitoption STRING NULL, + oid OID NULL, dictname NAME NULL, dictnamespace OID NULL, dictowner OID NULL, dicttemplate OID NULL, - oid OID NULL + dictinitoption STRING NULL ) {} {} CREATE TABLE pg_catalog.pg_ts_parser ( - prslextype REGPROC NULL, + oid OID NULL, prsname NAME NULL, prsnamespace OID NULL, prsstart REGPROC NULL, prstoken REGPROC NULL, - oid OID NULL, prsend REGPROC NULL, - prsheadline REGPROC NULL + prsheadline REGPROC NULL, + prslextype REGPROC NULL ) CREATE TABLE pg_catalog.pg_ts_parser ( - prslextype REGPROC NULL, + oid OID NULL, prsname NAME NULL, prsnamespace OID NULL, prsstart REGPROC NULL, prstoken REGPROC NULL, - oid OID NULL, prsend REGPROC NULL, - prsheadline REGPROC NULL + prsheadline REGPROC NULL, + prslextype REGPROC NULL ) {} {} CREATE TABLE pg_catalog.pg_ts_template ( oid OID NULL, - tmplinit REGPROC NULL, - tmpllexize REGPROC NULL, tmplname NAME NULL, - tmplnamespace OID NULL + tmplnamespace OID NULL, + tmplinit REGPROC NULL, + tmpllexize REGPROC NULL ) CREATE TABLE pg_catalog.pg_ts_template ( oid OID NULL, - tmplinit REGPROC NULL, - tmpllexize REGPROC NULL, tmplname NAME NULL, - tmplnamespace OID NULL + tmplnamespace OID NULL, + tmplinit REGPROC NULL, + tmpllexize REGPROC NULL ) {} {} CREATE TABLE pg_catalog.pg_type ( oid OID NOT NULL, @@ -6434,19 +6434,19 @@ CREATE TABLE pg_catalog.pg_user_mapping ( umoptions STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_user_mappings ( - srvname NAME NULL, umid OID NULL, - umoptions STRING[] NULL, + srvid OID NULL, + srvname NAME NULL, umuser OID NULL, usename NAME NULL, - srvid OID NULL + umoptions STRING[] NULL ) CREATE TABLE pg_catalog.pg_user_mappings ( - srvname NAME NULL, umid OID NULL, - umoptions STRING[] NULL, + srvid OID NULL, + srvname NAME NULL, umuser OID NULL, usename NAME NULL, - srvid OID NULL + umoptions STRING[] NULL ) {} {} CREATE TABLE pg_catalog.pg_views ( schemaname NAME NULL, diff --git a/pkg/sql/pg_catalog.go b/pkg/sql/pg_catalog.go index 01b87eac1508..28473cfd268b 100644 --- a/pkg/sql/pg_catalog.go +++ b/pkg/sql/pg_catalog.go @@ -3076,51 +3076,6 @@ https://www.postgresql.org/docs/9.5/catalog-pg-shseclabel.html`, unimplemented: true, } -var pgCatalogPublicationRelTable = virtualSchemaTable{ - comment: "pg_publication_rel was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogPublicationRel, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogConfigTable = virtualSchemaTable{ - comment: "pg_config was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogConfig, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogAvailableExtensionVersionsTable = virtualSchemaTable{ - comment: "pg_available_extension_versions was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogAvailableExtensionVersions, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogOpfamilyTable = virtualSchemaTable{ - comment: "pg_opfamily was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogOpfamily, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogShmemAllocationsTable = virtualSchemaTable{ - comment: "pg_shmem_allocations was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogShmemAllocations, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - var pgCatalogDbRoleSettingTable = virtualSchemaTable{ comment: `contains the default values that have been configured for session variables https://www.postgresql.org/docs/13/catalog-pg-db-role-setting.html`, @@ -3157,51 +3112,6 @@ https://www.postgresql.org/docs/13/catalog-pg-db-role-setting.html`, }, } -var pgCatalogTimezoneNamesTable = virtualSchemaTable{ - comment: "pg_timezone_names was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTimezoneNames, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogPublicationTablesTable = virtualSchemaTable{ - comment: "pg_publication_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogPublicationTables, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogUserMappingsTable = virtualSchemaTable{ - comment: "pg_user_mappings was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogUserMappings, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogTsTemplateTable = virtualSchemaTable{ - comment: "pg_ts_template was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTsTemplate, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - -var pgCatalogRulesTable = virtualSchemaTable{ - comment: "pg_rules was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogRules, - populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return nil - }, - unimplemented: true, -} - var pgCatalogShadowTable = virtualSchemaTable{ comment: `pg_shadow lists properties for roles that are marked as rolcanlogin in pg_authid https://www.postgresql.org/docs/13/view-pg-shadow.html`, @@ -3246,207 +3156,264 @@ https://www.postgresql.org/docs/13/view-pg-shadow.html`, }, } -var pgCatalogPublicationTable = virtualSchemaTable{ - comment: "pg_publication was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogPublication, +var pgCatalogStatisticExtTable = virtualSchemaTable{ + comment: `pg_statistic_ext has the statistics objects created with CREATE STATISTICS +https://www.postgresql.org/docs/13/catalog-pg-statistic-ext.html`, + schema: vtable.PgCatalogStatisticExt, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + query := `SELECT "statisticID", name, "tableID", "columnIDs" FROM system.table_statistics;` + rows, err := p.ExtendedEvalContext().ExecCfg.InternalExecutor.QueryBuffered( + ctx, "read-statistics-objects", p.txn, query, + ) + if err != nil { + return err + } + + for _, row := range rows { + statisticsID := tree.MustBeDInt(row[0]) + name := tree.MustBeDString(row[1]) + tableID := tree.MustBeDInt(row[2]) + columnIDs := tree.MustBeDArray(row[3]) + + if err := addRow( + tree.NewDOid(statisticsID), // oid + tree.NewDOid(tableID), // stxrelid + &name, // stxname + tree.DNull, // stxnamespace + tree.DNull, // stxowner + tree.DNull, // stxstattarget + columnIDs, // stxkeys + tree.DNull, // stxkind + ); err != nil { + return err + } + } return nil }, - unimplemented: true, } -var pgCatalogGroupTable = virtualSchemaTable{ - comment: "pg_group was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogGroup, +var pgCatalogSequencesTable = virtualSchemaTable{ + comment: `pg_sequences is very similar as pg_sequence. +https://www.postgresql.org/docs/13/view-pg-sequences.html +`, + schema: vtable.PgCatalogSequences, + populate: func(ctx context.Context, p *planner, dbContext catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return forEachTableDesc(ctx, p, dbContext, hideVirtual, /* virtual schemas do not have indexes */ + func(db catalog.DatabaseDescriptor, scName string, table catalog.TableDescriptor) error { + if !table.IsSequence() { + return nil + } + opts := table.GetSequenceOpts() + lastValue := tree.DNull + sequenceValue, err := p.GetSequenceValue(ctx, p.execCfg.Codec, table) + if err != nil { + return err + } + + // Before using for the first time, sequenceValue will be: + // opts.Start - opts.Increment. + if sequenceValue != opts.Start-opts.Increment { + lastValue = tree.NewDInt(tree.DInt(sequenceValue)) + } + + // sequenceowner refers to the username that owns the sequence which is + // available in the table descriptor that can be changed by ALTER + // SEQUENCE sequencename OWNER TO username. Sequence opts have a + // table.column owner which is the value that can be modifyied by ALTER + // SEQUENE sequencename OWNED BY table.column, This is not the expected + // value on sequenceowner. + return addRow( + tree.NewDString(scName), // schemaname + tree.NewDString(table.GetName()), // sequencename + getOwnerName(table), // sequenceowner + tree.NewDOid(tree.DInt(oid.T_int8)), // data_type + tree.NewDInt(tree.DInt(opts.Start)), // start_value + tree.NewDInt(tree.DInt(opts.MinValue)), // min_value + tree.NewDInt(tree.DInt(opts.MaxValue)), // max_value + tree.NewDInt(tree.DInt(opts.Increment)), // increment_by + tree.DBoolFalse, // cycle + tree.NewDInt(tree.DInt(opts.CacheSize)), // cache_size + lastValue, // last_value + ) + }, + ) + }, +} + +var pgCatalogInitPrivsTable = virtualSchemaTable{ + comment: "pg_init_privs was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogInitPrivs, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogCursorsTable = virtualSchemaTable{ - comment: "pg_cursors was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogCursors, +var pgCatalogStatProgressCreateIndexTable = virtualSchemaTable{ + comment: "pg_stat_progress_create_index was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatProgressCreateIndex, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogTsParserTable = virtualSchemaTable{ - comment: "pg_ts_parser was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTsParser, +var pgCatalogOpfamilyTable = virtualSchemaTable{ + comment: "pg_opfamily was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogOpfamily, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogSubscriptionTable = virtualSchemaTable{ - comment: "pg_subscription was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogSubscription, +var pgCatalogStatioAllSequencesTable = virtualSchemaTable{ + comment: "pg_statio_all_sequences was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioAllSequences, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogAmprocTable = virtualSchemaTable{ - comment: "pg_amproc was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogAmproc, +var pgCatalogPoliciesTable = virtualSchemaTable{ + comment: "pg_policies was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogPolicies, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogTsDictTable = virtualSchemaTable{ - comment: "pg_ts_dict was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTsDict, +var pgCatalogStatsExtTable = virtualSchemaTable{ + comment: "pg_stats_ext was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatsExt, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogTimezoneAbbrevsTable = virtualSchemaTable{ - comment: "pg_timezone_abbrevs was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTimezoneAbbrevs, +var pgCatalogUserMappingsTable = virtualSchemaTable{ + comment: "pg_user_mappings was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogUserMappings, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogTransformTable = virtualSchemaTable{ - comment: "pg_transform was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTransform, +var pgCatalogStatGssapiTable = virtualSchemaTable{ + comment: "pg_stat_gssapi was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatGssapi, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogTsConfigMapTable = virtualSchemaTable{ - comment: "pg_ts_config_map was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTsConfigMap, +var pgCatalogStatDatabaseTable = virtualSchemaTable{ + comment: "pg_stat_database was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatDatabase, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogFileSettingsTable = virtualSchemaTable{ - comment: "pg_file_settings was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogFileSettings, +var pgCatalogStatioUserIndexesTable = virtualSchemaTable{ + comment: "pg_statio_user_indexes was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioUserIndexes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogPoliciesTable = virtualSchemaTable{ - comment: "pg_policies was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogPolicies, +var pgCatalogStatSslTable = virtualSchemaTable{ + comment: "pg_stat_ssl was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatSsl, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogTsConfigTable = virtualSchemaTable{ - comment: "pg_ts_config was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogTsConfig, +var pgCatalogStatioAllIndexesTable = virtualSchemaTable{ + comment: "pg_statio_all_indexes was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioAllIndexes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogHbaFileRulesTable = virtualSchemaTable{ - comment: "pg_hba_file_rules was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogHbaFileRules, +var pgCatalogTimezoneAbbrevsTable = virtualSchemaTable{ + comment: "pg_timezone_abbrevs was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTimezoneAbbrevs, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatisticExtTable = virtualSchemaTable{ - comment: `pg_statistic_ext has the statistics objects created with CREATE STATISTICS -https://www.postgresql.org/docs/13/catalog-pg-statistic-ext.html`, - schema: vtable.PgCatalogStatisticExt, +var pgCatalogStatSysTablesTable = virtualSchemaTable{ + comment: "pg_stat_sys_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatSysTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - query := `SELECT "statisticID", name, "tableID", "columnIDs" FROM system.table_statistics;` - rows, err := p.ExtendedEvalContext().ExecCfg.InternalExecutor.QueryBuffered( - ctx, "read-statistics-objects", p.txn, query, - ) - if err != nil { - return err - } - - for _, row := range rows { - statisticsID := tree.MustBeDInt(row[0]) - name := tree.MustBeDString(row[1]) - tableID := tree.MustBeDInt(row[2]) - columnIDs := tree.MustBeDArray(row[3]) + return nil + }, + unimplemented: true, +} - if err := addRow( - tree.NewDOid(statisticsID), // oid - tree.NewDOid(tableID), // stxrelid - &name, // stxname - tree.DNull, // stxnamespace - tree.DNull, // stxowner - tree.DNull, // stxstattarget - columnIDs, // stxkeys - tree.DNull, // stxkind - ); err != nil { - return err - } - } +var pgCatalogStatioSysSequencesTable = virtualSchemaTable{ + comment: "pg_statio_sys_sequences was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioSysSequences, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, + unimplemented: true, } -var pgCatalogReplicationOriginTable = virtualSchemaTable{ - comment: "pg_replication_origin was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogReplicationOrigin, +var pgCatalogStatAllTablesTable = virtualSchemaTable{ + comment: "pg_stat_all_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatAllTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogAmopTable = virtualSchemaTable{ - comment: "pg_amop was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogAmop, +var pgCatalogStatioSysTablesTable = virtualSchemaTable{ + comment: "pg_statio_sys_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioSysTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogLargeobjectTable = virtualSchemaTable{ - comment: "pg_largeobject was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogLargeobject, +var pgCatalogTsConfigTable = virtualSchemaTable{ + comment: "pg_ts_config was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTsConfig, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogReplicationSlotsTable = virtualSchemaTable{ - comment: "pg_replication_slots was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogReplicationSlots, +var pgCatalogStatsTable = virtualSchemaTable{ + comment: "pg_stats was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStats, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogInitPrivsTable = virtualSchemaTable{ - comment: "pg_init_privs was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogInitPrivs, +var pgCatalogStatProgressBasebackupTable = virtualSchemaTable{ + comment: "pg_stat_progress_basebackup was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatProgressBasebackup, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, @@ -3462,381 +3429,387 @@ var pgCatalogPolicyTable = virtualSchemaTable{ unimplemented: true, } -var pgCatalogSubscriptionRelTable = virtualSchemaTable{ - comment: "pg_subscription_rel was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogSubscriptionRel, +var pgCatalogStatArchiverTable = virtualSchemaTable{ + comment: "pg_stat_archiver was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatArchiver, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogLargeobjectMetadataTable = virtualSchemaTable{ - comment: "pg_largeobject_metadata was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogLargeobjectMetadata, +var pgCatalogStatXactUserFunctionsTable = virtualSchemaTable{ + comment: "pg_stat_xact_user_functions was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatXactUserFunctions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogPartitionedTableTable = virtualSchemaTable{ - comment: "pg_partitioned_table was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogPartitionedTable, +var pgCatalogStatUserFunctionsTable = virtualSchemaTable{ + comment: "pg_stat_user_functions was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatUserFunctions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogReplicationOriginStatusTable = virtualSchemaTable{ - comment: "pg_replication_origin_status was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogReplicationOriginStatus, +var pgCatalogPublicationTable = virtualSchemaTable{ + comment: "pg_publication was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogPublication, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogSequencesTable = virtualSchemaTable{ - comment: `pg_sequences is very similar as pg_sequence. -https://www.postgresql.org/docs/13/view-pg-sequences.html -`, - schema: vtable.PgCatalogSequences, - populate: func(ctx context.Context, p *planner, dbContext catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { - return forEachTableDesc(ctx, p, dbContext, hideVirtual, /* virtual schemas do not have indexes */ - func(db catalog.DatabaseDescriptor, scName string, table catalog.TableDescriptor) error { - if !table.IsSequence() { - return nil - } - opts := table.GetSequenceOpts() - lastValue := tree.DNull - sequenceValue, err := p.GetSequenceValue(ctx, p.execCfg.Codec, table) - if err != nil { - return err - } +var pgCatalogAmprocTable = virtualSchemaTable{ + comment: "pg_amproc was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogAmproc, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} - // Before using for the first time, sequenceValue will be: - // opts.Start - opts.Increment. - if sequenceValue != opts.Start-opts.Increment { - lastValue = tree.NewDInt(tree.DInt(sequenceValue)) - } +var pgCatalogStatProgressAnalyzeTable = virtualSchemaTable{ + comment: "pg_stat_progress_analyze was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatProgressAnalyze, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} - // sequenceowner refers to the username that owns the sequence which is - // available in the table descriptor that can be changed by ALTER - // SEQUENCE sequencename OWNER TO username. Sequence opts have a - // table.column owner which is the value that can be modifyied by ALTER - // SEQUENE sequencename OWNED BY table.column, This is not the expected - // value on sequenceowner. - return addRow( - tree.NewDString(scName), // schemaname - tree.NewDString(table.GetName()), // sequencename - getOwnerName(table), // sequenceowner - tree.NewDOid(tree.DInt(oid.T_int8)), // data_type - tree.NewDInt(tree.DInt(opts.Start)), // start_value - tree.NewDInt(tree.DInt(opts.MinValue)), // min_value - tree.NewDInt(tree.DInt(opts.MaxValue)), // max_value - tree.NewDInt(tree.DInt(opts.Increment)), // increment_by - tree.DBoolFalse, // cycle - tree.NewDInt(tree.DInt(opts.CacheSize)), // cache_size - lastValue, // last_value - ) - }, - ) +var pgCatalogStatXactAllTablesTable = virtualSchemaTable{ + comment: "pg_stat_xact_all_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatXactAllTables, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + +var pgCatalogHbaFileRulesTable = virtualSchemaTable{ + comment: "pg_hba_file_rules was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogHbaFileRules, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + +var pgCatalogCursorsTable = virtualSchemaTable{ + comment: "pg_cursors was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogCursors, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + +var pgCatalogStatSlruTable = virtualSchemaTable{ + comment: "pg_stat_slru was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatSlru, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil }, + unimplemented: true, } -var pgCatalogStatDatabaseTable = virtualSchemaTable{ - comment: "pg_stat_database was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatDatabase, +var pgCatalogFileSettingsTable = virtualSchemaTable{ + comment: "pg_file_settings was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogFileSettings, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatDatabaseConflictsTable = virtualSchemaTable{ - comment: "pg_stat_database_conflicts was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatDatabaseConflicts, +var pgCatalogStatUserIndexesTable = virtualSchemaTable{ + comment: "pg_stat_user_indexes was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatUserIndexes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioUserSequencesTable = virtualSchemaTable{ - comment: "pg_statio_user_sequences was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioUserSequences, +var pgCatalogRulesTable = virtualSchemaTable{ + comment: "pg_rules was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogRules, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatReplicationTable = virtualSchemaTable{ - comment: "pg_stat_replication was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatReplication, +var pgCatalogStatioUserSequencesTable = virtualSchemaTable{ + comment: "pg_statio_user_sequences was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioUserSequences, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatSysIndexesTable = virtualSchemaTable{ - comment: "pg_stat_sys_indexes was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatSysIndexes, +var pgCatalogStatAllIndexesTable = virtualSchemaTable{ + comment: "pg_stat_all_indexes was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatAllIndexes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatXactUserTablesTable = virtualSchemaTable{ - comment: "pg_stat_xact_user_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatXactUserTables, +var pgCatalogTsConfigMapTable = virtualSchemaTable{ + comment: "pg_ts_config_map was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTsConfigMap, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatUserTablesTable = virtualSchemaTable{ - comment: "pg_stat_user_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatUserTables, +var pgCatalogStatBgwriterTable = virtualSchemaTable{ + comment: "pg_stat_bgwriter was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatBgwriter, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatAllTablesTable = virtualSchemaTable{ - comment: "pg_stat_all_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatAllTables, +var pgCatalogTransformTable = virtualSchemaTable{ + comment: "pg_transform was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTransform, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioUserTablesTable = virtualSchemaTable{ - comment: "pg_statio_user_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioUserTables, +var pgCatalogStatXactUserTablesTable = virtualSchemaTable{ + comment: "pg_stat_xact_user_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatXactUserTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatUserIndexesTable = virtualSchemaTable{ - comment: "pg_stat_user_indexes was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatUserIndexes, +var pgCatalogPublicationTablesTable = virtualSchemaTable{ + comment: "pg_publication_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogPublicationTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatXactSysTablesTable = virtualSchemaTable{ - comment: "pg_stat_xact_sys_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatXactSysTables, +var pgCatalogStatProgressClusterTable = virtualSchemaTable{ + comment: "pg_stat_progress_cluster was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatProgressCluster, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioSysTablesTable = virtualSchemaTable{ - comment: "pg_statio_sys_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioSysTables, +var pgCatalogGroupTable = virtualSchemaTable{ + comment: "pg_group was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogGroup, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatGssapiTable = virtualSchemaTable{ - comment: "pg_stat_gssapi was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatGssapi, +var pgCatalogLargeobjectMetadataTable = virtualSchemaTable{ + comment: "pg_largeobject_metadata was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogLargeobjectMetadata, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatSlruTable = virtualSchemaTable{ - comment: "pg_stat_slru was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatSlru, +var pgCatalogReplicationSlotsTable = virtualSchemaTable{ + comment: "pg_replication_slots was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogReplicationSlots, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatXactAllTablesTable = virtualSchemaTable{ - comment: "pg_stat_xact_all_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatXactAllTables, +var pgCatalogSubscriptionRelTable = virtualSchemaTable{ + comment: "pg_subscription_rel was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogSubscriptionRel, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioUserIndexesTable = virtualSchemaTable{ - comment: "pg_statio_user_indexes was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioUserIndexes, +var pgCatalogTsParserTable = virtualSchemaTable{ + comment: "pg_ts_parser was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTsParser, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioSysSequencesTable = virtualSchemaTable{ - comment: "pg_statio_sys_sequences was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioSysSequences, +var pgCatalogStatisticExtDataTable = virtualSchemaTable{ + comment: "pg_statistic_ext_data was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatisticExtData, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatSubscriptionTable = virtualSchemaTable{ - comment: "pg_stat_subscription was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatSubscription, +var pgCatalogPartitionedTableTable = virtualSchemaTable{ + comment: "pg_partitioned_table was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogPartitionedTable, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatProgressBasebackupTable = virtualSchemaTable{ - comment: "pg_stat_progress_basebackup was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatProgressBasebackup, +var pgCatalogStatioSysIndexesTable = virtualSchemaTable{ + comment: "pg_statio_sys_indexes was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioSysIndexes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatWalReceiverTable = virtualSchemaTable{ - comment: "pg_stat_wal_receiver was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatWalReceiver, +var pgCatalogConfigTable = virtualSchemaTable{ + comment: "pg_config was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogConfig, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatSysTablesTable = virtualSchemaTable{ - comment: "pg_stat_sys_tables was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatSysTables, +var pgCatalogStatioUserTablesTable = virtualSchemaTable{ + comment: "pg_statio_user_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatioUserTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatSslTable = virtualSchemaTable{ - comment: "pg_stat_ssl was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatSsl, +var pgCatalogTimezoneNamesTable = virtualSchemaTable{ + comment: "pg_timezone_names was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTimezoneNames, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioAllSequencesTable = virtualSchemaTable{ - comment: "pg_statio_all_sequences was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioAllSequences, +var pgCatalogTsDictTable = virtualSchemaTable{ + comment: "pg_ts_dict was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTsDict, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatProgressVacuumTable = virtualSchemaTable{ - comment: "pg_stat_progress_vacuum was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatProgressVacuum, +var pgCatalogStatUserTablesTable = virtualSchemaTable{ + comment: "pg_stat_user_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatUserTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatAllIndexesTable = virtualSchemaTable{ - comment: "pg_stat_all_indexes was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatAllIndexes, +var pgCatalogSubscriptionTable = virtualSchemaTable{ + comment: "pg_subscription was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogSubscription, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioSysIndexesTable = virtualSchemaTable{ - comment: "pg_statio_sys_indexes was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioSysIndexes, +var pgCatalogShmemAllocationsTable = virtualSchemaTable{ + comment: "pg_shmem_allocations was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogShmemAllocations, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatUserFunctionsTable = virtualSchemaTable{ - comment: "pg_stat_user_functions was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatUserFunctions, +var pgCatalogStatWalReceiverTable = virtualSchemaTable{ + comment: "pg_stat_wal_receiver was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatWalReceiver, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatArchiverTable = virtualSchemaTable{ - comment: "pg_stat_archiver was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatArchiver, +var pgCatalogStatSubscriptionTable = virtualSchemaTable{ + comment: "pg_stat_subscription was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatSubscription, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatProgressClusterTable = virtualSchemaTable{ - comment: "pg_stat_progress_cluster was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatProgressCluster, +var pgCatalogLargeobjectTable = virtualSchemaTable{ + comment: "pg_largeobject was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogLargeobject, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatBgwriterTable = virtualSchemaTable{ - comment: "pg_stat_bgwriter was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatBgwriter, +var pgCatalogReplicationOriginStatusTable = virtualSchemaTable{ + comment: "pg_replication_origin_status was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogReplicationOriginStatus, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatProgressAnalyzeTable = virtualSchemaTable{ - comment: "pg_stat_progress_analyze was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatProgressAnalyze, +var pgCatalogAmopTable = virtualSchemaTable{ + comment: "pg_amop was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogAmop, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatioAllIndexesTable = virtualSchemaTable{ - comment: "pg_statio_all_indexes was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatioAllIndexes, +var pgCatalogStatProgressVacuumTable = virtualSchemaTable{ + comment: "pg_stat_progress_vacuum was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatProgressVacuum, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatXactUserFunctionsTable = virtualSchemaTable{ - comment: "pg_stat_xact_user_functions was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatXactUserFunctions, +var pgCatalogStatSysIndexesTable = virtualSchemaTable{ + comment: "pg_stat_sys_indexes was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatSysIndexes, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, @@ -3852,9 +3825,18 @@ var pgCatalogStatioAllTablesTable = virtualSchemaTable{ unimplemented: true, } -var pgCatalogStatProgressCreateIndexTable = virtualSchemaTable{ - comment: "pg_stat_progress_create_index was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatProgressCreateIndex, +var pgCatalogStatDatabaseConflictsTable = virtualSchemaTable{ + comment: "pg_stat_database_conflicts was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatDatabaseConflicts, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + +var pgCatalogReplicationOriginTable = virtualSchemaTable{ + comment: "pg_replication_origin was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogReplicationOrigin, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, @@ -3870,27 +3852,45 @@ var pgCatalogStatisticTable = virtualSchemaTable{ unimplemented: true, } -var pgCatalogStatsTable = virtualSchemaTable{ - comment: "pg_stats was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStats, +var pgCatalogStatXactSysTablesTable = virtualSchemaTable{ + comment: "pg_stat_xact_sys_tables was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatXactSysTables, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatsExtTable = virtualSchemaTable{ - comment: "pg_stats_ext was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatsExt, +var pgCatalogTsTemplateTable = virtualSchemaTable{ + comment: "pg_ts_template was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogTsTemplate, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, unimplemented: true, } -var pgCatalogStatisticExtDataTable = virtualSchemaTable{ - comment: "pg_statistic_ext_data was created for compatibility and is currently unimplemented", - schema: vtable.PgCatalogStatisticExtData, +var pgCatalogStatReplicationTable = virtualSchemaTable{ + comment: "pg_stat_replication was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogStatReplication, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + +var pgCatalogPublicationRelTable = virtualSchemaTable{ + comment: "pg_publication_rel was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogPublicationRel, + populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { + return nil + }, + unimplemented: true, +} + +var pgCatalogAvailableExtensionVersionsTable = virtualSchemaTable{ + comment: "pg_available_extension_versions was created for compatibility and is currently unimplemented", + schema: vtable.PgCatalogAvailableExtensionVersions, populate: func(ctx context.Context, p *planner, _ catalog.DatabaseDescriptor, addRow func(...tree.Datum) error) error { return nil }, diff --git a/pkg/sql/pg_metadata_diff.go b/pkg/sql/pg_metadata_diff.go index 23d1c91953dc..f28bc5dd252c 100644 --- a/pkg/sql/pg_metadata_diff.go +++ b/pkg/sql/pg_metadata_diff.go @@ -44,8 +44,7 @@ const GetPGMetadataSQL = ` JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = $1 AND a.attnum > 0 - AND c.relkind != 'i' - ORDER BY 1, 2; + AND c.relkind != 'i'; ` // Summary will keep accountability for any unexpected difference and report it in the log. @@ -86,8 +85,14 @@ type PGMetadataColumnType struct { // PGMetadataColumns maps columns names to datatypes. type PGMetadataColumns map[string]*PGMetadataColumnType +// PGMetadataTableInfo represents a table with column mapping and column names in insertion order. +type PGMetadataTableInfo struct { + ColumnNames []string `json:"columnNames"` + Columns PGMetadataColumns `json:"columns"` +} + // PGMetadataTables maps tables with columns. -type PGMetadataTables map[string]PGMetadataColumns +type PGMetadataTables map[string]PGMetadataTableInfo // PGMetadataFile stores the schema gotten from postgres/mysql. type PGMetadataFile struct { @@ -116,15 +121,22 @@ func (d PGMetadataTableDiffs) addColumn( columns[columnName] = column } -func (p PGMetadataTables) addColumn(tableName, columnName string, column *PGMetadataColumnType) { - columns, ok := p[tableName] +func (p PGMetadataTables) addColumn( + tableName string, columnName string, column *PGMetadataColumnType, +) { + tableInfo, ok := p[tableName] if !ok { - columns = make(PGMetadataColumns) - p[tableName] = columns + tableInfo = PGMetadataTableInfo{ + ColumnNames: []string{}, + Columns: make(PGMetadataColumns), + } + p[tableName] = tableInfo } - columns[columnName] = column + tableInfo.ColumnNames = append(tableInfo.ColumnNames, columnName) + tableInfo.Columns[columnName] = column + p[tableName] = tableInfo } // AddColumnMetadata is used to load data from postgres or cockroach pg_catalog schema @@ -278,7 +290,7 @@ func Save(writer io.Writer, file interface{}) { func (d PGMetadataTableDiffs) getUnimplementedTables(source PGMetadataTables) PGMetadataTables { unimplementedTables := make(PGMetadataTables) for tableName := range d { - if len(d[tableName]) == 0 && len(source[tableName].getUnimplementedTypes()) == 0 { + if len(d[tableName]) == 0 && len(source[tableName].Columns.getUnimplementedTypes()) == 0 { unimplementedTables[tableName] = source[tableName] } } @@ -295,7 +307,7 @@ func (d PGMetadataTableDiffs) getUnimplementedColumns(target PGMetadataTables) P // dataType mismatch (Not a new column). continue } - sourceType, ok := target[tableName][columnName] + sourceType, ok := target[tableName].Columns[columnName] if !ok { continue } @@ -313,12 +325,12 @@ func (d PGMetadataTableDiffs) getUnimplementedColumns(target PGMetadataTables) P // removeImplementedColumns removes diff columns that are marked as expected // diff (or unimplemented column) but is already implemented in CRDB. func (d PGMetadataTableDiffs) removeImplementedColumns(source PGMetadataTables) { - for tableName, columns := range source { + for tableName, tableInfo := range source { pColumns, exists := d[tableName] if !exists { continue } - for columnName := range columns { + for _, columnName := range tableInfo.ColumnNames { columnType, exists := pColumns[columnName] if !exists { continue @@ -347,8 +359,8 @@ func (c PGMetadataColumns) getUnimplementedTypes() map[oid.Oid]string { func (p PGMetadataTables) getUnimplementedTypes() map[oid.Oid]string { unimplemented := make(map[oid.Oid]string) - for _, column := range p { - for typeOid, dataType := range column.getUnimplementedTypes() { + for _, tableInfo := range p { + for typeOid, dataType := range tableInfo.Columns.getUnimplementedTypes() { unimplemented[typeOid] = dataType } } diff --git a/pkg/sql/pg_metadata_test.go b/pkg/sql/pg_metadata_test.go index 14a1a7c3aecb..4888aef80ece 100644 --- a/pkg/sql/pg_metadata_test.go +++ b/pkg/sql/pg_metadata_test.go @@ -463,12 +463,12 @@ func (scf schemaCodeFixer) fixVtable( } first := true - for tableName, columns := range unimplementedTables { + for tableName, tableInfo := range unimplementedTables { if _, ok := existingTables[tableName]; ok { // Table already implemented. continue } - createTable, err := scf.createTableConstant(tableName, columns) + createTable, err := scf.createTableConstant(tableName, tableInfo) if err != nil { // We can not implement this table as this uses types not implemented. t.Log(err) @@ -503,7 +503,7 @@ func getMissingColumnsText( if _, fixable := nilPopulateTables[constName]; !fixable { return "" } - columns, found := unimplementedColumns[tableName] + tableInfo, found := unimplementedColumns[tableName] if !found { return "" } @@ -513,8 +513,8 @@ func getMissingColumnsText( // Previous line already had comma. prefix = "\n" } - for columnName, columnType := range columns { - formatColumn(&sb, prefix, columnName, columnType) + for _, columnName := range tableInfo.ColumnNames { + formatColumn(&sb, prefix, columnName, tableInfo.Columns[columnName]) pgCode.addRowPositions.addMissingColumn(constName, columnName) prefix = ",\n" } @@ -769,17 +769,17 @@ func (scf schemaCodeFixer) constantName(tableName string, suffix string) string // createTableConstant formats the text for vtable constants. func (scf schemaCodeFixer) createTableConstant( - tableName string, columns PGMetadataColumns, + tableName string, tableInfo PGMetadataTableInfo, ) (string, error) { var sb strings.Builder constName := scf.constantName(tableName, "") - if notImplementedTypes := columns.getUnimplementedTypes(); len(notImplementedTypes) > 0 { + if notImplementedTypes := tableInfo.Columns.getUnimplementedTypes(); len(notImplementedTypes) > 0 { return "", fmt.Errorf("not all types are implemented %s: %v", tableName, notImplementedTypes) } sb.WriteString("\n//") sb.WriteString(constName) - sb.WriteString(" is an empty table in the pg_catalog that is not implemented yet\n") + sb.WriteString(fmt.Sprintf(" is an empty table in the %s that is not implemented yet\n", scf.schema.name)) sb.WriteString("const ") sb.WriteString(constName) sb.WriteString(" = `\n") @@ -789,8 +789,8 @@ func (scf schemaCodeFixer) createTableConstant( sb.WriteString(tableName) sb.WriteString(" (\n") prefix := "" - for columnName, columnType := range columns { - formatColumn(&sb, prefix, columnName, columnType) + for _, columnName := range tableInfo.ColumnNames { + formatColumn(&sb, prefix, columnName, tableInfo.Columns[columnName]) prefix = ",\n" } sb.WriteString("\n)`\n") @@ -1435,10 +1435,10 @@ func (d *VirtualSchemaDiffTool) Run() { diffs = make(PGMetadataTableDiffs) } - for pgTable, pgColumns := range pgTables { + for pgTable, pgTableInfo := range pgTables { sum.TotalTables++ d.TestTable(pgTable, func(t *testing.T) { - crdbColumns, ok := crdbTables[pgTable] + crdbTableInfo, ok := crdbTables[pgTable] expectedMissingTable := diffs.isExpectedMissingTable(pgTable) if !ok { if !expectedMissingTable { @@ -1452,9 +1452,10 @@ func (d *VirtualSchemaDiffTool) Run() { return } - for expColumnName, expColumn := range pgColumns { + for _, expColumnName := range pgTableInfo.ColumnNames { + expColumn := pgTableInfo.Columns[expColumnName] sum.TotalColumns++ - gotColumn, ok := crdbColumns[expColumnName] + gotColumn, ok := crdbTableInfo.Columns[expColumnName] expectedMissingColumn := diffs.isExpectedMissingColumn(pgTable, expColumnName) if !ok { if !expectedMissingColumn { diff --git a/pkg/sql/testdata/information_schema_tables_from_mysql.json b/pkg/sql/testdata/information_schema_tables_from_mysql.json index ff68bd7404de..6fbefd04e09d 100644 --- a/pkg/sql/testdata/information_schema_tables_from_mysql.json +++ b/pkg/sql/testdata/information_schema_tables_from_mysql.json @@ -1,2004 +1,2672 @@ { - "version": "8.0.25", + "version": "8.0.27", "tables": { "administrable_role_authorizations": { - "grantee": { - "oid": 0, - "dataType": "varchar" - }, - "grantee_host": { - "oid": 0, - "dataType": "varchar" - }, - "host": { - "oid": 0, - "dataType": "varchar" - }, - "is_default": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "is_mandatory": { - "oid": 0, - "dataType": "varchar" - }, - "role_host": { - "oid": 0, - "dataType": "varchar" - }, - "role_name": { - "oid": 0, - "dataType": "varchar" - }, - "user": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "user", + "host", + "grantee", + "grantee_host", + "role_name", + "role_host", + "is_grantable", + "is_default", + "is_mandatory" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "varchar" + }, + "grantee_host": { + "oid": 0, + "dataType": "varchar" + }, + "host": { + "oid": 0, + "dataType": "varchar" + }, + "is_default": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "is_mandatory": { + "oid": 0, + "dataType": "varchar" + }, + "role_host": { + "oid": 0, + "dataType": "varchar" + }, + "role_name": { + "oid": 0, + "dataType": "varchar" + }, + "user": { + "oid": 0, + "dataType": "varchar" + } } }, "applicable_roles": { - "grantee": { - "oid": 0, - "dataType": "varchar" - }, - "grantee_host": { - "oid": 0, - "dataType": "varchar" - }, - "host": { - "oid": 0, - "dataType": "varchar" - }, - "is_default": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "is_mandatory": { - "oid": 0, - "dataType": "varchar" - }, - "role_host": { - "oid": 0, - "dataType": "varchar" - }, - "role_name": { - "oid": 0, - "dataType": "varchar" - }, - "user": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "user", + "host", + "grantee", + "grantee_host", + "role_name", + "role_host", + "is_grantable", + "is_default", + "is_mandatory" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "varchar" + }, + "grantee_host": { + "oid": 0, + "dataType": "varchar" + }, + "host": { + "oid": 0, + "dataType": "varchar" + }, + "is_default": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "is_mandatory": { + "oid": 0, + "dataType": "varchar" + }, + "role_host": { + "oid": 0, + "dataType": "varchar" + }, + "role_name": { + "oid": 0, + "dataType": "varchar" + }, + "user": { + "oid": 0, + "dataType": "varchar" + } } }, "character_sets": { - "character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "default_collate_name": { - "oid": 0, - "dataType": "varchar" - }, - "description": { - "oid": 0, - "dataType": "varchar" - }, - "maxlen": { - "oid": 0, - "dataType": "int" + "columnNames": [ + "character_set_name", + "default_collate_name", + "description", + "maxlen" + ], + "columns": { + "character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "default_collate_name": { + "oid": 0, + "dataType": "varchar" + }, + "description": { + "oid": 0, + "dataType": "varchar" + }, + "maxlen": { + "oid": 0, + "dataType": "int" + } } }, "check_constraints": { - "check_clause": { - "oid": 0, - "dataType": "longtext" - }, - "constraint_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_name": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "check_clause" + ], + "columns": { + "check_clause": { + "oid": 0, + "dataType": "longtext" + }, + "constraint_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_name": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "collation_character_set_applicability": { - "character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "collation_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "collation_name", + "character_set_name" + ], + "columns": { + "character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "collation_name": { + "oid": 0, + "dataType": "varchar" + } } }, "collations": { - "character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "collation_name": { - "oid": 0, - "dataType": "varchar" - }, - "id": { - "oid": 0, - "dataType": "bigint" - }, - "is_compiled": { - "oid": 0, - "dataType": "varchar" - }, - "is_default": { - "oid": 0, - "dataType": "varchar" - }, - "pad_attribute": { - "oid": 0, - "dataType": "enum" - }, - "sortlen": { - "oid": 0, - "dataType": "int" + "columnNames": [ + "collation_name", + "character_set_name", + "id", + "is_default", + "is_compiled", + "sortlen", + "pad_attribute" + ], + "columns": { + "character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "collation_name": { + "oid": 0, + "dataType": "varchar" + }, + "id": { + "oid": 0, + "dataType": "bigint" + }, + "is_compiled": { + "oid": 0, + "dataType": "varchar" + }, + "is_default": { + "oid": 0, + "dataType": "varchar" + }, + "pad_attribute": { + "oid": 0, + "dataType": "enum" + }, + "sortlen": { + "oid": 0, + "dataType": "int" + } } }, "column_privileges": { - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "grantee": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "grantee", + "table_catalog", + "table_schema", + "table_name", + "column_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "grantee": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "column_statistics": { - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "histogram": { - "oid": 0, - "dataType": "json" - }, - "schema_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "schema_name", + "table_name", + "column_name", + "histogram" + ], + "columns": { + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "histogram": { + "oid": 0, + "dataType": "json" + }, + "schema_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + } } }, "columns": { - "character_maximum_length": { - "oid": 0, - "dataType": "bigint" - }, - "character_octet_length": { - "oid": 0, - "dataType": "bigint" - }, - "character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "collation_name": { - "oid": 0, - "dataType": "varchar" - }, - "column_comment": { - "oid": 0, - "dataType": "text" - }, - "column_default": { - "oid": 0, - "dataType": "text" - }, - "column_key": { - "oid": 0, - "dataType": "enum" - }, - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "column_type": { - "oid": 0, - "dataType": "mediumtext" - }, - "data_type": { - "oid": 0, - "dataType": "longtext" - }, - "datetime_precision": { - "oid": 0, - "dataType": "int" - }, - "extra": { - "oid": 0, - "dataType": "varchar" - }, - "generation_expression": { - "oid": 0, - "dataType": "longtext" - }, - "is_nullable": { - "oid": 0, - "dataType": "varchar" - }, - "numeric_precision": { - "oid": 0, - "dataType": "bigint" - }, - "numeric_scale": { - "oid": 0, - "dataType": "bigint" - }, - "ordinal_position": { - "oid": 0, - "dataType": "int" - }, - "privileges": { - "oid": 0, - "dataType": "varchar" - }, - "srs_id": { - "oid": 0, - "dataType": "int" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "ordinal_position", + "column_default", + "is_nullable", + "data_type", + "character_maximum_length", + "character_octet_length", + "numeric_precision", + "numeric_scale", + "datetime_precision", + "character_set_name", + "collation_name", + "column_type", + "column_key", + "extra", + "privileges", + "column_comment", + "generation_expression", + "srs_id" + ], + "columns": { + "character_maximum_length": { + "oid": 0, + "dataType": "bigint" + }, + "character_octet_length": { + "oid": 0, + "dataType": "bigint" + }, + "character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "collation_name": { + "oid": 0, + "dataType": "varchar" + }, + "column_comment": { + "oid": 0, + "dataType": "text" + }, + "column_default": { + "oid": 0, + "dataType": "text" + }, + "column_key": { + "oid": 0, + "dataType": "enum" + }, + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "column_type": { + "oid": 0, + "dataType": "mediumtext" + }, + "data_type": { + "oid": 0, + "dataType": "longtext" + }, + "datetime_precision": { + "oid": 0, + "dataType": "int" + }, + "extra": { + "oid": 0, + "dataType": "varchar" + }, + "generation_expression": { + "oid": 0, + "dataType": "longtext" + }, + "is_nullable": { + "oid": 0, + "dataType": "varchar" + }, + "numeric_precision": { + "oid": 0, + "dataType": "bigint" + }, + "numeric_scale": { + "oid": 0, + "dataType": "bigint" + }, + "ordinal_position": { + "oid": 0, + "dataType": "int" + }, + "privileges": { + "oid": 0, + "dataType": "varchar" + }, + "srs_id": { + "oid": 0, + "dataType": "int" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "columns_extensions": { - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "secondary_engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "engine_attribute", + "secondary_engine_attribute" + ], + "columns": { + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "secondary_engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "enabled_roles": { - "is_default": { - "oid": 0, - "dataType": "varchar" - }, - "is_mandatory": { - "oid": 0, - "dataType": "varchar" - }, - "role_host": { - "oid": 0, - "dataType": "varchar" - }, - "role_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "role_name", + "role_host", + "is_default", + "is_mandatory" + ], + "columns": { + "is_default": { + "oid": 0, + "dataType": "varchar" + }, + "is_mandatory": { + "oid": 0, + "dataType": "varchar" + }, + "role_host": { + "oid": 0, + "dataType": "varchar" + }, + "role_name": { + "oid": 0, + "dataType": "varchar" + } } }, "engines": { - "comment": { - "oid": 0, - "dataType": "varchar" - }, - "engine": { - "oid": 0, - "dataType": "varchar" - }, - "savepoints": { - "oid": 0, - "dataType": "varchar" - }, - "support": { - "oid": 0, - "dataType": "varchar" - }, - "transactions": { - "oid": 0, - "dataType": "varchar" - }, - "xa": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "engine", + "support", + "comment", + "transactions", + "xa", + "savepoints" + ], + "columns": { + "comment": { + "oid": 0, + "dataType": "varchar" + }, + "engine": { + "oid": 0, + "dataType": "varchar" + }, + "savepoints": { + "oid": 0, + "dataType": "varchar" + }, + "support": { + "oid": 0, + "dataType": "varchar" + }, + "transactions": { + "oid": 0, + "dataType": "varchar" + }, + "xa": { + "oid": 0, + "dataType": "varchar" + } } }, "events": { - "character_set_client": { - "oid": 0, - "dataType": "varchar" - }, - "collation_connection": { - "oid": 0, - "dataType": "varchar" - }, - "created": { - "oid": 0, - "dataType": "timestamp" - }, - "database_collation": { - "oid": 0, - "dataType": "varchar" - }, - "definer": { - "oid": 0, - "dataType": "varchar" - }, - "ends": { - "oid": 0, - "dataType": "datetime" - }, - "event_body": { - "oid": 0, - "dataType": "varchar" - }, - "event_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "event_comment": { - "oid": 0, - "dataType": "varchar" - }, - "event_definition": { - "oid": 0, - "dataType": "longtext" - }, - "event_name": { - "oid": 0, - "dataType": "varchar" - }, - "event_schema": { - "oid": 0, - "dataType": "varchar" - }, - "event_type": { - "oid": 0, - "dataType": "varchar" - }, - "execute_at": { - "oid": 0, - "dataType": "datetime" - }, - "interval_field": { - "oid": 0, - "dataType": "enum" - }, - "interval_value": { - "oid": 0, - "dataType": "varchar" - }, - "last_altered": { - "oid": 0, - "dataType": "timestamp" - }, - "last_executed": { - "oid": 0, - "dataType": "datetime" - }, - "on_completion": { - "oid": 0, - "dataType": "varchar" - }, - "originator": { - "oid": 0, - "dataType": "int" - }, - "sql_mode": { - "oid": 0, - "dataType": "set" - }, - "starts": { - "oid": 0, - "dataType": "datetime" - }, - "status": { - "oid": 0, - "dataType": "enum" - }, - "time_zone": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "event_catalog", + "event_schema", + "event_name", + "definer", + "time_zone", + "event_body", + "event_definition", + "event_type", + "execute_at", + "interval_value", + "interval_field", + "sql_mode", + "starts", + "ends", + "status", + "on_completion", + "created", + "last_altered", + "last_executed", + "event_comment", + "originator", + "character_set_client", + "collation_connection", + "database_collation" + ], + "columns": { + "character_set_client": { + "oid": 0, + "dataType": "varchar" + }, + "collation_connection": { + "oid": 0, + "dataType": "varchar" + }, + "created": { + "oid": 0, + "dataType": "timestamp" + }, + "database_collation": { + "oid": 0, + "dataType": "varchar" + }, + "definer": { + "oid": 0, + "dataType": "varchar" + }, + "ends": { + "oid": 0, + "dataType": "datetime" + }, + "event_body": { + "oid": 0, + "dataType": "varchar" + }, + "event_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "event_comment": { + "oid": 0, + "dataType": "varchar" + }, + "event_definition": { + "oid": 0, + "dataType": "longtext" + }, + "event_name": { + "oid": 0, + "dataType": "varchar" + }, + "event_schema": { + "oid": 0, + "dataType": "varchar" + }, + "event_type": { + "oid": 0, + "dataType": "varchar" + }, + "execute_at": { + "oid": 0, + "dataType": "datetime" + }, + "interval_field": { + "oid": 0, + "dataType": "enum" + }, + "interval_value": { + "oid": 0, + "dataType": "varchar" + }, + "last_altered": { + "oid": 0, + "dataType": "timestamp" + }, + "last_executed": { + "oid": 0, + "dataType": "datetime" + }, + "on_completion": { + "oid": 0, + "dataType": "varchar" + }, + "originator": { + "oid": 0, + "dataType": "int" + }, + "sql_mode": { + "oid": 0, + "dataType": "set" + }, + "starts": { + "oid": 0, + "dataType": "datetime" + }, + "status": { + "oid": 0, + "dataType": "enum" + }, + "time_zone": { + "oid": 0, + "dataType": "varchar" + } } }, "files": { - "autoextend_size": { - "oid": 0, - "dataType": "bigint" - }, - "avg_row_length": { - "oid": 0, - "dataType": "binary" - }, - "check_time": { - "oid": 0, - "dataType": "binary" - }, - "checksum": { - "oid": 0, - "dataType": "binary" - }, - "create_time": { - "oid": 0, - "dataType": "binary" - }, - "creation_time": { - "oid": 0, - "dataType": "binary" - }, - "data_free": { - "oid": 0, - "dataType": "bigint" - }, - "data_length": { - "oid": 0, - "dataType": "binary" - }, - "deleted_rows": { - "oid": 0, - "dataType": "binary" - }, - "engine": { - "oid": 0, - "dataType": "varchar" - }, - "extent_size": { - "oid": 0, - "dataType": "bigint" - }, - "extra": { - "oid": 0, - "dataType": "varchar" - }, - "file_id": { - "oid": 0, - "dataType": "bigint" - }, - "file_name": { - "oid": 0, - "dataType": "text" - }, - "file_type": { - "oid": 0, - "dataType": "varchar" - }, - "free_extents": { - "oid": 0, - "dataType": "bigint" - }, - "fulltext_keys": { - "oid": 0, - "dataType": "binary" - }, - "index_length": { - "oid": 0, - "dataType": "binary" - }, - "initial_size": { - "oid": 0, - "dataType": "bigint" - }, - "last_access_time": { - "oid": 0, - "dataType": "binary" - }, - "last_update_time": { - "oid": 0, - "dataType": "binary" - }, - "logfile_group_name": { - "oid": 0, - "dataType": "varchar" - }, - "logfile_group_number": { - "oid": 0, - "dataType": "bigint" - }, - "max_data_length": { - "oid": 0, - "dataType": "binary" - }, - "maximum_size": { - "oid": 0, - "dataType": "bigint" - }, - "recover_time": { - "oid": 0, - "dataType": "binary" - }, - "row_format": { - "oid": 0, - "dataType": "varchar" - }, - "status": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "char" - }, - "table_name": { - "oid": 0, - "dataType": "binary" - }, - "table_rows": { - "oid": 0, - "dataType": "binary" - }, - "table_schema": { - "oid": 0, - "dataType": "binary" - }, - "tablespace_name": { - "oid": 0, - "dataType": "varchar" - }, - "total_extents": { - "oid": 0, - "dataType": "bigint" - }, - "transaction_counter": { - "oid": 0, - "dataType": "binary" - }, - "update_count": { - "oid": 0, - "dataType": "binary" - }, - "update_time": { - "oid": 0, - "dataType": "binary" - }, - "version": { - "oid": 0, - "dataType": "bigint" + "columnNames": [ + "file_id", + "file_name", + "file_type", + "tablespace_name", + "table_catalog", + "table_schema", + "table_name", + "logfile_group_name", + "logfile_group_number", + "engine", + "fulltext_keys", + "deleted_rows", + "update_count", + "free_extents", + "total_extents", + "extent_size", + "initial_size", + "maximum_size", + "autoextend_size", + "creation_time", + "last_update_time", + "last_access_time", + "recover_time", + "transaction_counter", + "version", + "row_format", + "table_rows", + "avg_row_length", + "data_length", + "max_data_length", + "index_length", + "data_free", + "create_time", + "update_time", + "check_time", + "checksum", + "status", + "extra" + ], + "columns": { + "autoextend_size": { + "oid": 0, + "dataType": "bigint" + }, + "avg_row_length": { + "oid": 0, + "dataType": "binary" + }, + "check_time": { + "oid": 0, + "dataType": "binary" + }, + "checksum": { + "oid": 0, + "dataType": "binary" + }, + "create_time": { + "oid": 0, + "dataType": "binary" + }, + "creation_time": { + "oid": 0, + "dataType": "binary" + }, + "data_free": { + "oid": 0, + "dataType": "bigint" + }, + "data_length": { + "oid": 0, + "dataType": "binary" + }, + "deleted_rows": { + "oid": 0, + "dataType": "binary" + }, + "engine": { + "oid": 0, + "dataType": "varchar" + }, + "extent_size": { + "oid": 0, + "dataType": "bigint" + }, + "extra": { + "oid": 0, + "dataType": "varchar" + }, + "file_id": { + "oid": 0, + "dataType": "bigint" + }, + "file_name": { + "oid": 0, + "dataType": "text" + }, + "file_type": { + "oid": 0, + "dataType": "varchar" + }, + "free_extents": { + "oid": 0, + "dataType": "bigint" + }, + "fulltext_keys": { + "oid": 0, + "dataType": "binary" + }, + "index_length": { + "oid": 0, + "dataType": "binary" + }, + "initial_size": { + "oid": 0, + "dataType": "bigint" + }, + "last_access_time": { + "oid": 0, + "dataType": "binary" + }, + "last_update_time": { + "oid": 0, + "dataType": "binary" + }, + "logfile_group_name": { + "oid": 0, + "dataType": "varchar" + }, + "logfile_group_number": { + "oid": 0, + "dataType": "bigint" + }, + "max_data_length": { + "oid": 0, + "dataType": "binary" + }, + "maximum_size": { + "oid": 0, + "dataType": "bigint" + }, + "recover_time": { + "oid": 0, + "dataType": "binary" + }, + "row_format": { + "oid": 0, + "dataType": "varchar" + }, + "status": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "char" + }, + "table_name": { + "oid": 0, + "dataType": "binary" + }, + "table_rows": { + "oid": 0, + "dataType": "binary" + }, + "table_schema": { + "oid": 0, + "dataType": "binary" + }, + "tablespace_name": { + "oid": 0, + "dataType": "varchar" + }, + "total_extents": { + "oid": 0, + "dataType": "bigint" + }, + "transaction_counter": { + "oid": 0, + "dataType": "binary" + }, + "update_count": { + "oid": 0, + "dataType": "binary" + }, + "update_time": { + "oid": 0, + "dataType": "binary" + }, + "version": { + "oid": 0, + "dataType": "bigint" + } } }, "key_column_usage": { - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_name": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_schema": { - "oid": 0, - "dataType": "varchar" - }, - "ordinal_position": { - "oid": 0, - "dataType": "int" - }, - "position_in_unique_constraint": { - "oid": 0, - "dataType": "int" - }, - "referenced_column_name": { - "oid": 0, - "dataType": "varchar" - }, - "referenced_table_name": { - "oid": 0, - "dataType": "varchar" - }, - "referenced_table_schema": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "table_catalog", + "table_schema", + "table_name", + "column_name", + "ordinal_position", + "position_in_unique_constraint", + "referenced_table_schema", + "referenced_table_name", + "referenced_column_name" + ], + "columns": { + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_name": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_schema": { + "oid": 0, + "dataType": "varchar" + }, + "ordinal_position": { + "oid": 0, + "dataType": "int" + }, + "position_in_unique_constraint": { + "oid": 0, + "dataType": "int" + }, + "referenced_column_name": { + "oid": 0, + "dataType": "varchar" + }, + "referenced_table_name": { + "oid": 0, + "dataType": "varchar" + }, + "referenced_table_schema": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "keywords": { - "reserved": { - "oid": 0, - "dataType": "int" - }, - "word": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "word", + "reserved" + ], + "columns": { + "reserved": { + "oid": 0, + "dataType": "int" + }, + "word": { + "oid": 0, + "dataType": "varchar" + } } }, "optimizer_trace": { - "insufficient_privileges": { - "oid": 0, - "dataType": "tinyint" - }, - "missing_bytes_beyond_max_mem_size": { - "oid": 0, - "dataType": "int" - }, - "query": { - "oid": 0, - "dataType": "varchar" - }, - "trace": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "query", + "trace", + "missing_bytes_beyond_max_mem_size", + "insufficient_privileges" + ], + "columns": { + "insufficient_privileges": { + "oid": 0, + "dataType": "tinyint" + }, + "missing_bytes_beyond_max_mem_size": { + "oid": 0, + "dataType": "int" + }, + "query": { + "oid": 0, + "dataType": "varchar" + }, + "trace": { + "oid": 0, + "dataType": "varchar" + } } }, "parameters": { - "character_maximum_length": { - "oid": 0, - "dataType": "bigint" - }, - "character_octet_length": { - "oid": 0, - "dataType": "bigint" - }, - "character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "collation_name": { - "oid": 0, - "dataType": "varchar" - }, - "data_type": { - "oid": 0, - "dataType": "longtext" - }, - "datetime_precision": { - "oid": 0, - "dataType": "int" - }, - "dtd_identifier": { - "oid": 0, - "dataType": "mediumtext" - }, - "numeric_precision": { - "oid": 0, - "dataType": "int" - }, - "numeric_scale": { - "oid": 0, - "dataType": "bigint" - }, - "ordinal_position": { - "oid": 0, - "dataType": "bigint" - }, - "parameter_mode": { - "oid": 0, - "dataType": "varchar" - }, - "parameter_name": { - "oid": 0, - "dataType": "varchar" - }, - "routine_type": { - "oid": 0, - "dataType": "enum" - }, - "specific_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "specific_name": { - "oid": 0, - "dataType": "varchar" - }, - "specific_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "specific_catalog", + "specific_schema", + "specific_name", + "ordinal_position", + "parameter_mode", + "parameter_name", + "data_type", + "character_maximum_length", + "character_octet_length", + "numeric_precision", + "numeric_scale", + "datetime_precision", + "character_set_name", + "collation_name", + "dtd_identifier", + "routine_type" + ], + "columns": { + "character_maximum_length": { + "oid": 0, + "dataType": "bigint" + }, + "character_octet_length": { + "oid": 0, + "dataType": "bigint" + }, + "character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "collation_name": { + "oid": 0, + "dataType": "varchar" + }, + "data_type": { + "oid": 0, + "dataType": "longtext" + }, + "datetime_precision": { + "oid": 0, + "dataType": "int" + }, + "dtd_identifier": { + "oid": 0, + "dataType": "mediumtext" + }, + "numeric_precision": { + "oid": 0, + "dataType": "int" + }, + "numeric_scale": { + "oid": 0, + "dataType": "bigint" + }, + "ordinal_position": { + "oid": 0, + "dataType": "bigint" + }, + "parameter_mode": { + "oid": 0, + "dataType": "varchar" + }, + "parameter_name": { + "oid": 0, + "dataType": "varchar" + }, + "routine_type": { + "oid": 0, + "dataType": "enum" + }, + "specific_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "specific_name": { + "oid": 0, + "dataType": "varchar" + }, + "specific_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "partitions": { - "avg_row_length": { - "oid": 0, - "dataType": "bigint" - }, - "check_time": { - "oid": 0, - "dataType": "datetime" - }, - "checksum": { - "oid": 0, - "dataType": "bigint" - }, - "create_time": { - "oid": 0, - "dataType": "timestamp" - }, - "data_free": { - "oid": 0, - "dataType": "bigint" - }, - "data_length": { - "oid": 0, - "dataType": "bigint" - }, - "index_length": { - "oid": 0, - "dataType": "bigint" - }, - "max_data_length": { - "oid": 0, - "dataType": "bigint" - }, - "nodegroup": { - "oid": 0, - "dataType": "varchar" - }, - "partition_comment": { - "oid": 0, - "dataType": "text" - }, - "partition_description": { - "oid": 0, - "dataType": "text" - }, - "partition_expression": { - "oid": 0, - "dataType": "varchar" - }, - "partition_method": { - "oid": 0, - "dataType": "varchar" - }, - "partition_name": { - "oid": 0, - "dataType": "varchar" - }, - "partition_ordinal_position": { - "oid": 0, - "dataType": "int" - }, - "subpartition_expression": { - "oid": 0, - "dataType": "varchar" - }, - "subpartition_method": { - "oid": 0, - "dataType": "varchar" - }, - "subpartition_name": { - "oid": 0, - "dataType": "varchar" - }, - "subpartition_ordinal_position": { - "oid": 0, - "dataType": "int" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_rows": { - "oid": 0, - "dataType": "bigint" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" - }, - "tablespace_name": { - "oid": 0, - "dataType": "varchar" - }, - "update_time": { - "oid": 0, - "dataType": "datetime" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "partition_name", + "subpartition_name", + "partition_ordinal_position", + "subpartition_ordinal_position", + "partition_method", + "subpartition_method", + "partition_expression", + "subpartition_expression", + "partition_description", + "table_rows", + "avg_row_length", + "data_length", + "max_data_length", + "index_length", + "data_free", + "create_time", + "update_time", + "check_time", + "checksum", + "partition_comment", + "nodegroup", + "tablespace_name" + ], + "columns": { + "avg_row_length": { + "oid": 0, + "dataType": "bigint" + }, + "check_time": { + "oid": 0, + "dataType": "datetime" + }, + "checksum": { + "oid": 0, + "dataType": "bigint" + }, + "create_time": { + "oid": 0, + "dataType": "timestamp" + }, + "data_free": { + "oid": 0, + "dataType": "bigint" + }, + "data_length": { + "oid": 0, + "dataType": "bigint" + }, + "index_length": { + "oid": 0, + "dataType": "bigint" + }, + "max_data_length": { + "oid": 0, + "dataType": "bigint" + }, + "nodegroup": { + "oid": 0, + "dataType": "varchar" + }, + "partition_comment": { + "oid": 0, + "dataType": "text" + }, + "partition_description": { + "oid": 0, + "dataType": "text" + }, + "partition_expression": { + "oid": 0, + "dataType": "varchar" + }, + "partition_method": { + "oid": 0, + "dataType": "varchar" + }, + "partition_name": { + "oid": 0, + "dataType": "varchar" + }, + "partition_ordinal_position": { + "oid": 0, + "dataType": "int" + }, + "subpartition_expression": { + "oid": 0, + "dataType": "varchar" + }, + "subpartition_method": { + "oid": 0, + "dataType": "varchar" + }, + "subpartition_name": { + "oid": 0, + "dataType": "varchar" + }, + "subpartition_ordinal_position": { + "oid": 0, + "dataType": "int" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_rows": { + "oid": 0, + "dataType": "bigint" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + }, + "tablespace_name": { + "oid": 0, + "dataType": "varchar" + }, + "update_time": { + "oid": 0, + "dataType": "datetime" + } } }, "plugins": { - "load_option": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_author": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_description": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_library": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_library_version": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_license": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_name": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_status": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_type": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_type_version": { - "oid": 0, - "dataType": "varchar" - }, - "plugin_version": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "plugin_name", + "plugin_version", + "plugin_status", + "plugin_type", + "plugin_type_version", + "plugin_library", + "plugin_library_version", + "plugin_author", + "plugin_description", + "plugin_license", + "load_option" + ], + "columns": { + "load_option": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_author": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_description": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_library": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_library_version": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_license": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_name": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_status": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_type": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_type_version": { + "oid": 0, + "dataType": "varchar" + }, + "plugin_version": { + "oid": 0, + "dataType": "varchar" + } } }, "processlist": { - "command": { - "oid": 0, - "dataType": "varchar" - }, - "db": { - "oid": 0, - "dataType": "varchar" - }, - "host": { - "oid": 0, - "dataType": "varchar" - }, - "id": { - "oid": 0, - "dataType": "bigint" - }, - "info": { - "oid": 0, - "dataType": "varchar" - }, - "state": { - "oid": 0, - "dataType": "varchar" - }, - "time": { - "oid": 0, - "dataType": "int" - }, - "user": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "id", + "user", + "host", + "db", + "command", + "time", + "state", + "info" + ], + "columns": { + "command": { + "oid": 0, + "dataType": "varchar" + }, + "db": { + "oid": 0, + "dataType": "varchar" + }, + "host": { + "oid": 0, + "dataType": "varchar" + }, + "id": { + "oid": 0, + "dataType": "bigint" + }, + "info": { + "oid": 0, + "dataType": "varchar" + }, + "state": { + "oid": 0, + "dataType": "varchar" + }, + "time": { + "oid": 0, + "dataType": "int" + }, + "user": { + "oid": 0, + "dataType": "varchar" + } } }, "profiling": { - "block_ops_in": { - "oid": 0, - "dataType": "int" - }, - "block_ops_out": { - "oid": 0, - "dataType": "int" - }, - "context_involuntary": { - "oid": 0, - "dataType": "int" - }, - "context_voluntary": { - "oid": 0, - "dataType": "int" - }, - "cpu_system": { - "oid": 0, - "dataType": "decimal" - }, - "cpu_user": { - "oid": 0, - "dataType": "decimal" - }, - "duration": { - "oid": 0, - "dataType": "decimal" - }, - "messages_received": { - "oid": 0, - "dataType": "int" - }, - "messages_sent": { - "oid": 0, - "dataType": "int" - }, - "page_faults_major": { - "oid": 0, - "dataType": "int" - }, - "page_faults_minor": { - "oid": 0, - "dataType": "int" - }, - "query_id": { - "oid": 0, - "dataType": "int" - }, - "seq": { - "oid": 0, - "dataType": "int" - }, - "source_file": { - "oid": 0, - "dataType": "varchar" - }, - "source_function": { - "oid": 0, - "dataType": "varchar" - }, - "source_line": { - "oid": 0, - "dataType": "int" - }, - "state": { - "oid": 0, - "dataType": "varchar" - }, - "swaps": { - "oid": 0, - "dataType": "int" + "columnNames": [ + "query_id", + "seq", + "state", + "duration", + "cpu_user", + "cpu_system", + "context_voluntary", + "context_involuntary", + "block_ops_in", + "block_ops_out", + "messages_sent", + "messages_received", + "page_faults_major", + "page_faults_minor", + "swaps", + "source_function", + "source_file", + "source_line" + ], + "columns": { + "block_ops_in": { + "oid": 0, + "dataType": "int" + }, + "block_ops_out": { + "oid": 0, + "dataType": "int" + }, + "context_involuntary": { + "oid": 0, + "dataType": "int" + }, + "context_voluntary": { + "oid": 0, + "dataType": "int" + }, + "cpu_system": { + "oid": 0, + "dataType": "decimal" + }, + "cpu_user": { + "oid": 0, + "dataType": "decimal" + }, + "duration": { + "oid": 0, + "dataType": "decimal" + }, + "messages_received": { + "oid": 0, + "dataType": "int" + }, + "messages_sent": { + "oid": 0, + "dataType": "int" + }, + "page_faults_major": { + "oid": 0, + "dataType": "int" + }, + "page_faults_minor": { + "oid": 0, + "dataType": "int" + }, + "query_id": { + "oid": 0, + "dataType": "int" + }, + "seq": { + "oid": 0, + "dataType": "int" + }, + "source_file": { + "oid": 0, + "dataType": "varchar" + }, + "source_function": { + "oid": 0, + "dataType": "varchar" + }, + "source_line": { + "oid": 0, + "dataType": "int" + }, + "state": { + "oid": 0, + "dataType": "varchar" + }, + "swaps": { + "oid": 0, + "dataType": "int" + } } }, "referential_constraints": { - "constraint_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_name": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_schema": { - "oid": 0, - "dataType": "varchar" - }, - "delete_rule": { - "oid": 0, - "dataType": "enum" - }, - "match_option": { - "oid": 0, - "dataType": "enum" - }, - "referenced_table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "unique_constraint_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "unique_constraint_name": { - "oid": 0, - "dataType": "varchar" - }, - "unique_constraint_schema": { - "oid": 0, - "dataType": "varchar" - }, - "update_rule": { - "oid": 0, - "dataType": "enum" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "unique_constraint_catalog", + "unique_constraint_schema", + "unique_constraint_name", + "match_option", + "update_rule", + "delete_rule", + "table_name", + "referenced_table_name" + ], + "columns": { + "constraint_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_name": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_schema": { + "oid": 0, + "dataType": "varchar" + }, + "delete_rule": { + "oid": 0, + "dataType": "enum" + }, + "match_option": { + "oid": 0, + "dataType": "enum" + }, + "referenced_table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "unique_constraint_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "unique_constraint_name": { + "oid": 0, + "dataType": "varchar" + }, + "unique_constraint_schema": { + "oid": 0, + "dataType": "varchar" + }, + "update_rule": { + "oid": 0, + "dataType": "enum" + } } }, "resource_groups": { - "resource_group_enabled": { - "oid": 0, - "dataType": "tinyint" - }, - "resource_group_name": { - "oid": 0, - "dataType": "varchar" - }, - "resource_group_type": { - "oid": 0, - "dataType": "enum" - }, - "thread_priority": { - "oid": 0, - "dataType": "int" - }, - "vcpu_ids": { - "oid": 0, - "dataType": "blob" + "columnNames": [ + "resource_group_name", + "resource_group_type", + "resource_group_enabled", + "vcpu_ids", + "thread_priority" + ], + "columns": { + "resource_group_enabled": { + "oid": 0, + "dataType": "tinyint" + }, + "resource_group_name": { + "oid": 0, + "dataType": "varchar" + }, + "resource_group_type": { + "oid": 0, + "dataType": "enum" + }, + "thread_priority": { + "oid": 0, + "dataType": "int" + }, + "vcpu_ids": { + "oid": 0, + "dataType": "blob" + } } }, "role_column_grants": { - "column_name": { - "oid": 0, - "dataType": "char" - }, - "grantee": { - "oid": 0, - "dataType": "char" - }, - "grantee_host": { - "oid": 0, - "dataType": "char" - }, - "grantor": { - "oid": 0, - "dataType": "varchar" - }, - "grantor_host": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "set" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "char" - }, - "table_schema": { - "oid": 0, - "dataType": "char" + "columnNames": [ + "grantor", + "grantor_host", + "grantee", + "grantee_host", + "table_catalog", + "table_schema", + "table_name", + "column_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "column_name": { + "oid": 0, + "dataType": "char" + }, + "grantee": { + "oid": 0, + "dataType": "char" + }, + "grantee_host": { + "oid": 0, + "dataType": "char" + }, + "grantor": { + "oid": 0, + "dataType": "varchar" + }, + "grantor_host": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "set" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "char" + }, + "table_schema": { + "oid": 0, + "dataType": "char" + } } }, "role_routine_grants": { - "grantee": { - "oid": 0, - "dataType": "char" - }, - "grantee_host": { - "oid": 0, - "dataType": "char" - }, - "grantor": { - "oid": 0, - "dataType": "varchar" - }, - "grantor_host": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "set" - }, - "routine_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "routine_name": { - "oid": 0, - "dataType": "char" - }, - "routine_schema": { - "oid": 0, - "dataType": "char" - }, - "specific_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "specific_name": { - "oid": 0, - "dataType": "char" - }, - "specific_schema": { - "oid": 0, - "dataType": "char" + "columnNames": [ + "grantor", + "grantor_host", + "grantee", + "grantee_host", + "specific_catalog", + "specific_schema", + "specific_name", + "routine_catalog", + "routine_schema", + "routine_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "char" + }, + "grantee_host": { + "oid": 0, + "dataType": "char" + }, + "grantor": { + "oid": 0, + "dataType": "varchar" + }, + "grantor_host": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "set" + }, + "routine_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "routine_name": { + "oid": 0, + "dataType": "char" + }, + "routine_schema": { + "oid": 0, + "dataType": "char" + }, + "specific_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "specific_name": { + "oid": 0, + "dataType": "char" + }, + "specific_schema": { + "oid": 0, + "dataType": "char" + } } }, "role_table_grants": { - "grantee": { - "oid": 0, - "dataType": "char" - }, - "grantee_host": { - "oid": 0, - "dataType": "char" - }, - "grantor": { - "oid": 0, - "dataType": "varchar" - }, - "grantor_host": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "set" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "char" - }, - "table_schema": { - "oid": 0, - "dataType": "char" + "columnNames": [ + "grantor", + "grantor_host", + "grantee", + "grantee_host", + "table_catalog", + "table_schema", + "table_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "char" + }, + "grantee_host": { + "oid": 0, + "dataType": "char" + }, + "grantor": { + "oid": 0, + "dataType": "varchar" + }, + "grantor_host": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "set" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "char" + }, + "table_schema": { + "oid": 0, + "dataType": "char" + } } }, "routines": { - "character_maximum_length": { - "oid": 0, - "dataType": "bigint" - }, - "character_octet_length": { - "oid": 0, - "dataType": "bigint" - }, - "character_set_client": { - "oid": 0, - "dataType": "varchar" - }, - "character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "collation_connection": { - "oid": 0, - "dataType": "varchar" - }, - "collation_name": { - "oid": 0, - "dataType": "varchar" - }, - "created": { - "oid": 0, - "dataType": "timestamp" - }, - "data_type": { - "oid": 0, - "dataType": "longtext" - }, - "database_collation": { - "oid": 0, - "dataType": "varchar" - }, - "datetime_precision": { - "oid": 0, - "dataType": "int" - }, - "definer": { - "oid": 0, - "dataType": "varchar" - }, - "dtd_identifier": { - "oid": 0, - "dataType": "longtext" - }, - "external_language": { - "oid": 0, - "dataType": "varchar" - }, - "external_name": { - "oid": 0, - "dataType": "binary" - }, - "is_deterministic": { - "oid": 0, - "dataType": "varchar" - }, - "last_altered": { - "oid": 0, - "dataType": "timestamp" - }, - "numeric_precision": { - "oid": 0, - "dataType": "int" - }, - "numeric_scale": { - "oid": 0, - "dataType": "int" - }, - "parameter_style": { - "oid": 0, - "dataType": "varchar" - }, - "routine_body": { - "oid": 0, - "dataType": "varchar" - }, - "routine_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "routine_comment": { - "oid": 0, - "dataType": "text" - }, - "routine_definition": { - "oid": 0, - "dataType": "longtext" - }, - "routine_name": { - "oid": 0, - "dataType": "varchar" - }, - "routine_schema": { - "oid": 0, - "dataType": "varchar" - }, - "routine_type": { - "oid": 0, - "dataType": "enum" - }, - "security_type": { - "oid": 0, - "dataType": "enum" - }, - "specific_name": { - "oid": 0, - "dataType": "varchar" - }, - "sql_data_access": { - "oid": 0, - "dataType": "enum" - }, - "sql_mode": { - "oid": 0, - "dataType": "set" - }, - "sql_path": { - "oid": 0, - "dataType": "binary" + "columnNames": [ + "specific_name", + "routine_catalog", + "routine_schema", + "routine_name", + "routine_type", + "data_type", + "character_maximum_length", + "character_octet_length", + "numeric_precision", + "numeric_scale", + "datetime_precision", + "character_set_name", + "collation_name", + "dtd_identifier", + "routine_body", + "routine_definition", + "external_name", + "external_language", + "parameter_style", + "is_deterministic", + "sql_data_access", + "sql_path", + "security_type", + "created", + "last_altered", + "sql_mode", + "routine_comment", + "definer", + "character_set_client", + "collation_connection", + "database_collation" + ], + "columns": { + "character_maximum_length": { + "oid": 0, + "dataType": "bigint" + }, + "character_octet_length": { + "oid": 0, + "dataType": "bigint" + }, + "character_set_client": { + "oid": 0, + "dataType": "varchar" + }, + "character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "collation_connection": { + "oid": 0, + "dataType": "varchar" + }, + "collation_name": { + "oid": 0, + "dataType": "varchar" + }, + "created": { + "oid": 0, + "dataType": "timestamp" + }, + "data_type": { + "oid": 0, + "dataType": "longtext" + }, + "database_collation": { + "oid": 0, + "dataType": "varchar" + }, + "datetime_precision": { + "oid": 0, + "dataType": "int" + }, + "definer": { + "oid": 0, + "dataType": "varchar" + }, + "dtd_identifier": { + "oid": 0, + "dataType": "longtext" + }, + "external_language": { + "oid": 0, + "dataType": "varchar" + }, + "external_name": { + "oid": 0, + "dataType": "binary" + }, + "is_deterministic": { + "oid": 0, + "dataType": "varchar" + }, + "last_altered": { + "oid": 0, + "dataType": "timestamp" + }, + "numeric_precision": { + "oid": 0, + "dataType": "int" + }, + "numeric_scale": { + "oid": 0, + "dataType": "int" + }, + "parameter_style": { + "oid": 0, + "dataType": "varchar" + }, + "routine_body": { + "oid": 0, + "dataType": "varchar" + }, + "routine_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "routine_comment": { + "oid": 0, + "dataType": "text" + }, + "routine_definition": { + "oid": 0, + "dataType": "longtext" + }, + "routine_name": { + "oid": 0, + "dataType": "varchar" + }, + "routine_schema": { + "oid": 0, + "dataType": "varchar" + }, + "routine_type": { + "oid": 0, + "dataType": "enum" + }, + "security_type": { + "oid": 0, + "dataType": "enum" + }, + "specific_name": { + "oid": 0, + "dataType": "varchar" + }, + "sql_data_access": { + "oid": 0, + "dataType": "enum" + }, + "sql_mode": { + "oid": 0, + "dataType": "set" + }, + "sql_path": { + "oid": 0, + "dataType": "binary" + } } }, "schema_privileges": { - "grantee": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "grantee", + "table_catalog", + "table_schema", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "schemata": { - "catalog_name": { - "oid": 0, - "dataType": "varchar" - }, - "default_character_set_name": { - "oid": 0, - "dataType": "varchar" - }, - "default_collation_name": { - "oid": 0, - "dataType": "varchar" - }, - "default_encryption": { - "oid": 0, - "dataType": "enum" - }, - "schema_name": { - "oid": 0, - "dataType": "varchar" - }, - "sql_path": { - "oid": 0, - "dataType": "binary" + "columnNames": [ + "catalog_name", + "schema_name", + "default_character_set_name", + "default_collation_name", + "sql_path", + "default_encryption" + ], + "columns": { + "catalog_name": { + "oid": 0, + "dataType": "varchar" + }, + "default_character_set_name": { + "oid": 0, + "dataType": "varchar" + }, + "default_collation_name": { + "oid": 0, + "dataType": "varchar" + }, + "default_encryption": { + "oid": 0, + "dataType": "enum" + }, + "schema_name": { + "oid": 0, + "dataType": "varchar" + }, + "sql_path": { + "oid": 0, + "dataType": "binary" + } } }, "schemata_extensions": { - "catalog_name": { - "oid": 0, - "dataType": "varchar" - }, - "options": { - "oid": 0, - "dataType": "varchar" - }, - "schema_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "catalog_name", + "schema_name", + "options" + ], + "columns": { + "catalog_name": { + "oid": 0, + "dataType": "varchar" + }, + "options": { + "oid": 0, + "dataType": "varchar" + }, + "schema_name": { + "oid": 0, + "dataType": "varchar" + } } }, "st_geometry_columns": { - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "geometry_type_name": { - "oid": 0, - "dataType": "longtext" - }, - "srs_id": { - "oid": 0, - "dataType": "int" - }, - "srs_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "srs_name", + "srs_id", + "geometry_type_name" + ], + "columns": { + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "geometry_type_name": { + "oid": 0, + "dataType": "longtext" + }, + "srs_id": { + "oid": 0, + "dataType": "int" + }, + "srs_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "st_spatial_reference_systems": { - "definition": { - "oid": 0, - "dataType": "varchar" - }, - "description": { - "oid": 0, - "dataType": "varchar" - }, - "organization": { - "oid": 0, - "dataType": "varchar" - }, - "organization_coordsys_id": { - "oid": 0, - "dataType": "int" - }, - "srs_id": { - "oid": 0, - "dataType": "int" - }, - "srs_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "srs_name", + "srs_id", + "organization", + "organization_coordsys_id", + "definition", + "description" + ], + "columns": { + "definition": { + "oid": 0, + "dataType": "varchar" + }, + "description": { + "oid": 0, + "dataType": "varchar" + }, + "organization": { + "oid": 0, + "dataType": "varchar" + }, + "organization_coordsys_id": { + "oid": 0, + "dataType": "int" + }, + "srs_id": { + "oid": 0, + "dataType": "int" + }, + "srs_name": { + "oid": 0, + "dataType": "varchar" + } } }, "st_units_of_measure": { - "conversion_factor": { - "oid": 0, - "dataType": "double" - }, - "description": { - "oid": 0, - "dataType": "varchar" - }, - "unit_name": { - "oid": 0, - "dataType": "varchar" - }, - "unit_type": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "unit_name", + "unit_type", + "conversion_factor", + "description" + ], + "columns": { + "conversion_factor": { + "oid": 0, + "dataType": "double" + }, + "description": { + "oid": 0, + "dataType": "varchar" + }, + "unit_name": { + "oid": 0, + "dataType": "varchar" + }, + "unit_type": { + "oid": 0, + "dataType": "varchar" + } } }, "statistics": { - "cardinality": { - "oid": 0, - "dataType": "bigint" - }, - "collation": { - "oid": 0, - "dataType": "varchar" - }, - "column_name": { - "oid": 0, - "dataType": "varchar" - }, - "comment": { - "oid": 0, - "dataType": "varchar" - }, - "expression": { - "oid": 0, - "dataType": "longtext" - }, - "index_comment": { - "oid": 0, - "dataType": "varchar" - }, - "index_name": { - "oid": 0, - "dataType": "varchar" - }, - "index_schema": { - "oid": 0, - "dataType": "varchar" - }, - "index_type": { - "oid": 0, - "dataType": "varchar" - }, - "is_visible": { - "oid": 0, - "dataType": "varchar" - }, - "non_unique": { - "oid": 0, - "dataType": "int" - }, - "nullable": { - "oid": 0, - "dataType": "varchar" - }, - "packed": { - "oid": 0, - "dataType": "binary" - }, - "seq_in_index": { - "oid": 0, - "dataType": "int" - }, - "sub_part": { - "oid": 0, - "dataType": "bigint" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "non_unique", + "index_schema", + "index_name", + "seq_in_index", + "column_name", + "collation", + "cardinality", + "sub_part", + "packed", + "nullable", + "index_type", + "comment", + "index_comment", + "is_visible", + "expression" + ], + "columns": { + "cardinality": { + "oid": 0, + "dataType": "bigint" + }, + "collation": { + "oid": 0, + "dataType": "varchar" + }, + "column_name": { + "oid": 0, + "dataType": "varchar" + }, + "comment": { + "oid": 0, + "dataType": "varchar" + }, + "expression": { + "oid": 0, + "dataType": "longtext" + }, + "index_comment": { + "oid": 0, + "dataType": "varchar" + }, + "index_name": { + "oid": 0, + "dataType": "varchar" + }, + "index_schema": { + "oid": 0, + "dataType": "varchar" + }, + "index_type": { + "oid": 0, + "dataType": "varchar" + }, + "is_visible": { + "oid": 0, + "dataType": "varchar" + }, + "non_unique": { + "oid": 0, + "dataType": "int" + }, + "nullable": { + "oid": 0, + "dataType": "varchar" + }, + "packed": { + "oid": 0, + "dataType": "binary" + }, + "seq_in_index": { + "oid": 0, + "dataType": "int" + }, + "sub_part": { + "oid": 0, + "dataType": "bigint" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "table_constraints": { - "constraint_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_name": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_schema": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_type": { - "oid": 0, - "dataType": "varchar" - }, - "enforced": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "table_schema", + "table_name", + "constraint_type", + "enforced" + ], + "columns": { + "constraint_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_name": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_schema": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_type": { + "oid": 0, + "dataType": "varchar" + }, + "enforced": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "table_constraints_extensions": { - "constraint_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_name": { - "oid": 0, - "dataType": "varchar" - }, - "constraint_schema": { - "oid": 0, - "dataType": "varchar" - }, - "engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "secondary_engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "table_name", + "engine_attribute", + "secondary_engine_attribute" + ], + "columns": { + "constraint_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_name": { + "oid": 0, + "dataType": "varchar" + }, + "constraint_schema": { + "oid": 0, + "dataType": "varchar" + }, + "engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "secondary_engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + } } }, "table_privileges": { - "grantee": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "grantee", + "table_catalog", + "table_schema", + "table_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "tables": { - "auto_increment": { - "oid": 0, - "dataType": "bigint" - }, - "avg_row_length": { - "oid": 0, - "dataType": "bigint" - }, - "check_time": { - "oid": 0, - "dataType": "datetime" - }, - "checksum": { - "oid": 0, - "dataType": "bigint" - }, - "create_options": { - "oid": 0, - "dataType": "varchar" - }, - "create_time": { - "oid": 0, - "dataType": "timestamp" - }, - "data_free": { - "oid": 0, - "dataType": "bigint" - }, - "data_length": { - "oid": 0, - "dataType": "bigint" - }, - "engine": { - "oid": 0, - "dataType": "varchar" - }, - "index_length": { - "oid": 0, - "dataType": "bigint" - }, - "max_data_length": { - "oid": 0, - "dataType": "bigint" - }, - "row_format": { - "oid": 0, - "dataType": "enum" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_collation": { - "oid": 0, - "dataType": "varchar" - }, - "table_comment": { - "oid": 0, - "dataType": "text" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_rows": { - "oid": 0, - "dataType": "bigint" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" - }, - "table_type": { - "oid": 0, - "dataType": "enum" - }, - "update_time": { - "oid": 0, - "dataType": "datetime" - }, - "version": { - "oid": 0, - "dataType": "int" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "table_type", + "engine", + "version", + "row_format", + "table_rows", + "avg_row_length", + "data_length", + "max_data_length", + "index_length", + "data_free", + "auto_increment", + "create_time", + "update_time", + "check_time", + "table_collation", + "checksum", + "create_options", + "table_comment" + ], + "columns": { + "auto_increment": { + "oid": 0, + "dataType": "bigint" + }, + "avg_row_length": { + "oid": 0, + "dataType": "bigint" + }, + "check_time": { + "oid": 0, + "dataType": "datetime" + }, + "checksum": { + "oid": 0, + "dataType": "bigint" + }, + "create_options": { + "oid": 0, + "dataType": "varchar" + }, + "create_time": { + "oid": 0, + "dataType": "timestamp" + }, + "data_free": { + "oid": 0, + "dataType": "bigint" + }, + "data_length": { + "oid": 0, + "dataType": "bigint" + }, + "engine": { + "oid": 0, + "dataType": "varchar" + }, + "index_length": { + "oid": 0, + "dataType": "bigint" + }, + "max_data_length": { + "oid": 0, + "dataType": "bigint" + }, + "row_format": { + "oid": 0, + "dataType": "enum" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_collation": { + "oid": 0, + "dataType": "varchar" + }, + "table_comment": { + "oid": 0, + "dataType": "text" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_rows": { + "oid": 0, + "dataType": "bigint" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + }, + "table_type": { + "oid": 0, + "dataType": "enum" + }, + "update_time": { + "oid": 0, + "dataType": "datetime" + }, + "version": { + "oid": 0, + "dataType": "int" + } } }, "tables_extensions": { - "engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "secondary_engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "engine_attribute", + "secondary_engine_attribute" + ], + "columns": { + "engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "secondary_engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "tablespaces": { - "autoextend_size": { - "oid": 0, - "dataType": "bigint" - }, - "engine": { - "oid": 0, - "dataType": "varchar" - }, - "extent_size": { - "oid": 0, - "dataType": "bigint" - }, - "logfile_group_name": { - "oid": 0, - "dataType": "varchar" - }, - "maximum_size": { - "oid": 0, - "dataType": "bigint" - }, - "nodegroup_id": { - "oid": 0, - "dataType": "bigint" - }, - "tablespace_comment": { - "oid": 0, - "dataType": "varchar" - }, - "tablespace_name": { - "oid": 0, - "dataType": "varchar" - }, - "tablespace_type": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "tablespace_name", + "engine", + "tablespace_type", + "logfile_group_name", + "extent_size", + "autoextend_size", + "maximum_size", + "nodegroup_id", + "tablespace_comment" + ], + "columns": { + "autoextend_size": { + "oid": 0, + "dataType": "bigint" + }, + "engine": { + "oid": 0, + "dataType": "varchar" + }, + "extent_size": { + "oid": 0, + "dataType": "bigint" + }, + "logfile_group_name": { + "oid": 0, + "dataType": "varchar" + }, + "maximum_size": { + "oid": 0, + "dataType": "bigint" + }, + "nodegroup_id": { + "oid": 0, + "dataType": "bigint" + }, + "tablespace_comment": { + "oid": 0, + "dataType": "varchar" + }, + "tablespace_name": { + "oid": 0, + "dataType": "varchar" + }, + "tablespace_type": { + "oid": 0, + "dataType": "varchar" + } } }, "tablespaces_extensions": { - "engine_attribute": { - "oid": 0, - "dataType": "json" - }, - "tablespace_name": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "tablespace_name", + "engine_attribute" + ], + "columns": { + "engine_attribute": { + "oid": 0, + "dataType": "json" + }, + "tablespace_name": { + "oid": 0, + "dataType": "varchar" + } } }, "triggers": { - "action_condition": { - "oid": 0, - "dataType": "binary" - }, - "action_order": { - "oid": 0, - "dataType": "int" - }, - "action_orientation": { - "oid": 0, - "dataType": "varchar" - }, - "action_reference_new_row": { - "oid": 0, - "dataType": "varchar" - }, - "action_reference_new_table": { - "oid": 0, - "dataType": "binary" - }, - "action_reference_old_row": { - "oid": 0, - "dataType": "varchar" - }, - "action_reference_old_table": { - "oid": 0, - "dataType": "binary" - }, - "action_statement": { - "oid": 0, - "dataType": "longtext" - }, - "action_timing": { - "oid": 0, - "dataType": "enum" - }, - "character_set_client": { - "oid": 0, - "dataType": "varchar" - }, - "collation_connection": { - "oid": 0, - "dataType": "varchar" - }, - "created": { - "oid": 0, - "dataType": "timestamp" - }, - "database_collation": { - "oid": 0, - "dataType": "varchar" - }, - "definer": { - "oid": 0, - "dataType": "varchar" - }, - "event_manipulation": { - "oid": 0, - "dataType": "enum" - }, - "event_object_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "event_object_schema": { - "oid": 0, - "dataType": "varchar" - }, - "event_object_table": { - "oid": 0, - "dataType": "varchar" - }, - "sql_mode": { - "oid": 0, - "dataType": "set" - }, - "trigger_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "trigger_name": { - "oid": 0, - "dataType": "varchar" - }, - "trigger_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "trigger_catalog", + "trigger_schema", + "trigger_name", + "event_manipulation", + "event_object_catalog", + "event_object_schema", + "event_object_table", + "action_order", + "action_condition", + "action_statement", + "action_orientation", + "action_timing", + "action_reference_old_table", + "action_reference_new_table", + "action_reference_old_row", + "action_reference_new_row", + "created", + "sql_mode", + "definer", + "character_set_client", + "collation_connection", + "database_collation" + ], + "columns": { + "action_condition": { + "oid": 0, + "dataType": "binary" + }, + "action_order": { + "oid": 0, + "dataType": "int" + }, + "action_orientation": { + "oid": 0, + "dataType": "varchar" + }, + "action_reference_new_row": { + "oid": 0, + "dataType": "varchar" + }, + "action_reference_new_table": { + "oid": 0, + "dataType": "binary" + }, + "action_reference_old_row": { + "oid": 0, + "dataType": "varchar" + }, + "action_reference_old_table": { + "oid": 0, + "dataType": "binary" + }, + "action_statement": { + "oid": 0, + "dataType": "longtext" + }, + "action_timing": { + "oid": 0, + "dataType": "enum" + }, + "character_set_client": { + "oid": 0, + "dataType": "varchar" + }, + "collation_connection": { + "oid": 0, + "dataType": "varchar" + }, + "created": { + "oid": 0, + "dataType": "timestamp" + }, + "database_collation": { + "oid": 0, + "dataType": "varchar" + }, + "definer": { + "oid": 0, + "dataType": "varchar" + }, + "event_manipulation": { + "oid": 0, + "dataType": "enum" + }, + "event_object_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "event_object_schema": { + "oid": 0, + "dataType": "varchar" + }, + "event_object_table": { + "oid": 0, + "dataType": "varchar" + }, + "sql_mode": { + "oid": 0, + "dataType": "set" + }, + "trigger_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "trigger_name": { + "oid": 0, + "dataType": "varchar" + }, + "trigger_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "user_attributes": { - "attribute": { - "oid": 0, - "dataType": "longtext" - }, - "host": { - "oid": 0, - "dataType": "char" - }, - "user": { - "oid": 0, - "dataType": "char" + "columnNames": [ + "user", + "host", + "attribute" + ], + "columns": { + "attribute": { + "oid": 0, + "dataType": "longtext" + }, + "host": { + "oid": 0, + "dataType": "char" + }, + "user": { + "oid": 0, + "dataType": "char" + } } }, "user_privileges": { - "grantee": { - "oid": 0, - "dataType": "varchar" - }, - "is_grantable": { - "oid": 0, - "dataType": "varchar" - }, - "privilege_type": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "grantee", + "table_catalog", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 0, + "dataType": "varchar" + }, + "is_grantable": { + "oid": 0, + "dataType": "varchar" + }, + "privilege_type": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + } } }, "view_routine_usage": { - "specific_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "specific_name": { - "oid": 0, - "dataType": "varchar" - }, - "specific_schema": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "specific_catalog", + "specific_schema", + "specific_name" + ], + "columns": { + "specific_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "specific_name": { + "oid": 0, + "dataType": "varchar" + }, + "specific_schema": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "view_table_usage": { - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" - }, - "view_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "view_name": { - "oid": 0, - "dataType": "varchar" - }, - "view_schema": { - "oid": 0, - "dataType": "varchar" + "columnNames": [ + "view_catalog", + "view_schema", + "view_name", + "table_catalog", + "table_schema", + "table_name" + ], + "columns": { + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + }, + "view_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "view_name": { + "oid": 0, + "dataType": "varchar" + }, + "view_schema": { + "oid": 0, + "dataType": "varchar" + } } }, "views": { - "character_set_client": { - "oid": 0, - "dataType": "varchar" - }, - "check_option": { - "oid": 0, - "dataType": "enum" - }, - "collation_connection": { - "oid": 0, - "dataType": "varchar" - }, - "definer": { - "oid": 0, - "dataType": "varchar" - }, - "is_updatable": { - "oid": 0, - "dataType": "enum" - }, - "security_type": { - "oid": 0, - "dataType": "varchar" - }, - "table_catalog": { - "oid": 0, - "dataType": "varchar" - }, - "table_name": { - "oid": 0, - "dataType": "varchar" - }, - "table_schema": { - "oid": 0, - "dataType": "varchar" - }, - "view_definition": { - "oid": 0, - "dataType": "longtext" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "view_definition", + "check_option", + "is_updatable", + "definer", + "security_type", + "character_set_client", + "collation_connection" + ], + "columns": { + "character_set_client": { + "oid": 0, + "dataType": "varchar" + }, + "check_option": { + "oid": 0, + "dataType": "enum" + }, + "collation_connection": { + "oid": 0, + "dataType": "varchar" + }, + "definer": { + "oid": 0, + "dataType": "varchar" + }, + "is_updatable": { + "oid": 0, + "dataType": "enum" + }, + "security_type": { + "oid": 0, + "dataType": "varchar" + }, + "table_catalog": { + "oid": 0, + "dataType": "varchar" + }, + "table_name": { + "oid": 0, + "dataType": "varchar" + }, + "table_schema": { + "oid": 0, + "dataType": "varchar" + }, + "view_definition": { + "oid": 0, + "dataType": "longtext" + } } } } diff --git a/pkg/sql/testdata/information_schema_tables_from_postgres.json b/pkg/sql/testdata/information_schema_tables_from_postgres.json index 8cecae2d78a1..cc50f97a367c 100644 --- a/pkg/sql/testdata/information_schema_tables_from_postgres.json +++ b/pkg/sql/testdata/information_schema_tables_from_postgres.json @@ -2,2635 +2,3503 @@ "version": "13.3", "tables": { "administrable_role_authorizations": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "role_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantee", + "role_name", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "role_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "applicable_roles": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "role_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantee", + "role_name", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "role_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "attributes": { - "attribute_default": { - "oid": 25, - "dataType": "TEXT" - }, - "attribute_name": { - "oid": 25, - "dataType": "TEXT" - }, - "attribute_udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "attribute_udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "attribute_udt_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "is_derived_reference_attribute": { - "oid": 25, - "dataType": "TEXT" - }, - "is_nullable": { - "oid": 25, - "dataType": "TEXT" - }, - "maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "ordinal_position": { - "oid": 20, - "dataType": "INT8" - }, - "scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "udt_catalog", + "udt_schema", + "udt_name", + "attribute_name", + "ordinal_position", + "attribute_default", + "is_nullable", + "data_type", + "character_maximum_length", + "character_octet_length", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "attribute_udt_catalog", + "attribute_udt_schema", + "attribute_udt_name", + "scope_catalog", + "scope_schema", + "scope_name", + "maximum_cardinality", + "dtd_identifier", + "is_derived_reference_attribute" + ], + "columns": { + "attribute_default": { + "oid": 25, + "dataType": "TEXT" + }, + "attribute_name": { + "oid": 25, + "dataType": "TEXT" + }, + "attribute_udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "attribute_udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "attribute_udt_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "is_derived_reference_attribute": { + "oid": 25, + "dataType": "TEXT" + }, + "is_nullable": { + "oid": 25, + "dataType": "TEXT" + }, + "maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "ordinal_position": { + "oid": 20, + "dataType": "INT8" + }, + "scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "character_sets": { - "character_repertoire": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "default_collate_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "default_collate_name": { - "oid": 25, - "dataType": "TEXT" - }, - "default_collate_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "form_of_use": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "character_set_catalog", + "character_set_schema", + "character_set_name", + "character_repertoire", + "form_of_use", + "default_collate_catalog", + "default_collate_schema", + "default_collate_name" + ], + "columns": { + "character_repertoire": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "default_collate_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "default_collate_name": { + "oid": 25, + "dataType": "TEXT" + }, + "default_collate_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "form_of_use": { + "oid": 25, + "dataType": "TEXT" + } } }, "check_constraint_routine_usage": { - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "specific_catalog", + "specific_schema", + "specific_name" + ], + "columns": { + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "check_constraints": { - "check_clause": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "check_clause" + ], + "columns": { + "check_clause": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "collation_character_set_applicability": { - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "collation_catalog", + "collation_schema", + "collation_name", + "character_set_catalog", + "character_set_schema", + "character_set_name" + ], + "columns": { + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "collations": { - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "pad_attribute": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "collation_catalog", + "collation_schema", + "collation_name", + "pad_attribute" + ], + "columns": { + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "pad_attribute": { + "oid": 25, + "dataType": "TEXT" + } } }, "column_column_usage": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "dependent_column": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "dependent_column" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "dependent_column": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "column_domain_usage": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_name": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "domain_catalog", + "domain_schema", + "domain_name", + "table_catalog", + "table_schema", + "table_name", + "column_name" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_name": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "column_options": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_value": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "option_name", + "option_value" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_value": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "column_privileges": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "table_catalog", + "table_schema", + "table_name", + "column_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "column_udt_usage": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "udt_catalog", + "udt_schema", + "udt_name", + "table_catalog", + "table_schema", + "table_name", + "column_name" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "columns": { - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "column_default": { - "oid": 25, - "dataType": "TEXT" - }, - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "domain_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_name": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "generation_expression": { - "oid": 25, - "dataType": "TEXT" - }, - "identity_cycle": { - "oid": 25, - "dataType": "TEXT" - }, - "identity_generation": { - "oid": 25, - "dataType": "TEXT" - }, - "identity_increment": { - "oid": 25, - "dataType": "TEXT" - }, - "identity_maximum": { - "oid": 25, - "dataType": "TEXT" - }, - "identity_minimum": { - "oid": 25, - "dataType": "TEXT" - }, - "identity_start": { - "oid": 25, - "dataType": "TEXT" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "is_generated": { - "oid": 25, - "dataType": "TEXT" - }, - "is_identity": { - "oid": 25, - "dataType": "TEXT" - }, - "is_nullable": { - "oid": 25, - "dataType": "TEXT" - }, - "is_self_referencing": { - "oid": 25, - "dataType": "TEXT" - }, - "is_updatable": { - "oid": 25, - "dataType": "TEXT" - }, - "maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "ordinal_position": { - "oid": 20, - "dataType": "INT8" - }, - "scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "ordinal_position", + "column_default", + "is_nullable", + "data_type", + "character_maximum_length", + "character_octet_length", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "domain_catalog", + "domain_schema", + "domain_name", + "udt_catalog", + "udt_schema", + "udt_name", + "scope_catalog", + "scope_schema", + "scope_name", + "maximum_cardinality", + "dtd_identifier", + "is_self_referencing", + "is_identity", + "identity_generation", + "identity_start", + "identity_increment", + "identity_maximum", + "identity_minimum", + "identity_cycle", + "is_generated", + "generation_expression", + "is_updatable" + ], + "columns": { + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "column_default": { + "oid": 25, + "dataType": "TEXT" + }, + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "domain_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_name": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "generation_expression": { + "oid": 25, + "dataType": "TEXT" + }, + "identity_cycle": { + "oid": 25, + "dataType": "TEXT" + }, + "identity_generation": { + "oid": 25, + "dataType": "TEXT" + }, + "identity_increment": { + "oid": 25, + "dataType": "TEXT" + }, + "identity_maximum": { + "oid": 25, + "dataType": "TEXT" + }, + "identity_minimum": { + "oid": 25, + "dataType": "TEXT" + }, + "identity_start": { + "oid": 25, + "dataType": "TEXT" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "is_generated": { + "oid": 25, + "dataType": "TEXT" + }, + "is_identity": { + "oid": 25, + "dataType": "TEXT" + }, + "is_nullable": { + "oid": 25, + "dataType": "TEXT" + }, + "is_self_referencing": { + "oid": 25, + "dataType": "TEXT" + }, + "is_updatable": { + "oid": 25, + "dataType": "TEXT" + }, + "maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "ordinal_position": { + "oid": 20, + "dataType": "INT8" + }, + "scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "constraint_column_usage": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "column_name", + "constraint_catalog", + "constraint_schema", + "constraint_name" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "constraint_table_usage": { - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "constraint_catalog", + "constraint_schema", + "constraint_name" + ], + "columns": { + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "data_type_privileges": { - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "object_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "object_name": { - "oid": 25, - "dataType": "TEXT" - }, - "object_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "object_type": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "object_catalog", + "object_schema", + "object_name", + "object_type", + "dtd_identifier" + ], + "columns": { + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "object_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "object_name": { + "oid": 25, + "dataType": "TEXT" + }, + "object_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "object_type": { + "oid": 25, + "dataType": "TEXT" + } } }, "domain_constraints": { - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_name": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "initially_deferred": { - "oid": 25, - "dataType": "TEXT" - }, - "is_deferrable": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "domain_catalog", + "domain_schema", + "domain_name", + "is_deferrable", + "initially_deferred" + ], + "columns": { + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_name": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "initially_deferred": { + "oid": 25, + "dataType": "TEXT" + }, + "is_deferrable": { + "oid": 25, + "dataType": "TEXT" + } } }, "domain_udt_usage": { - "domain_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_name": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "udt_catalog", + "udt_schema", + "udt_name", + "domain_catalog", + "domain_schema", + "domain_name" + ], + "columns": { + "domain_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_name": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "domains": { - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "domain_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_default": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_name": { - "oid": 25, - "dataType": "TEXT" - }, - "domain_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "domain_catalog", + "domain_schema", + "domain_name", + "data_type", + "character_maximum_length", + "character_octet_length", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "domain_default", + "udt_catalog", + "udt_schema", + "udt_name", + "scope_catalog", + "scope_schema", + "scope_name", + "maximum_cardinality", + "dtd_identifier" + ], + "columns": { + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "domain_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_default": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_name": { + "oid": 25, + "dataType": "TEXT" + }, + "domain_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "element_types": { - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collection_type_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "domain_default": { - "oid": 25, - "dataType": "TEXT" - }, - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "object_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "object_name": { - "oid": 25, - "dataType": "TEXT" - }, - "object_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "object_type": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "object_catalog", + "object_schema", + "object_name", + "object_type", + "collection_type_identifier", + "data_type", + "character_maximum_length", + "character_octet_length", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "domain_default", + "udt_catalog", + "udt_schema", + "udt_name", + "scope_catalog", + "scope_schema", + "scope_name", + "maximum_cardinality", + "dtd_identifier" + ], + "columns": { + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collection_type_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "domain_default": { + "oid": 25, + "dataType": "TEXT" + }, + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "object_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "object_name": { + "oid": 25, + "dataType": "TEXT" + }, + "object_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "object_type": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "enabled_roles": { - "role_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "role_name" + ], + "columns": { + "role_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "foreign_data_wrapper_options": { - "foreign_data_wrapper_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_data_wrapper_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_value": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "foreign_data_wrapper_catalog", + "foreign_data_wrapper_name", + "option_name", + "option_value" + ], + "columns": { + "foreign_data_wrapper_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_data_wrapper_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_value": { + "oid": 25, + "dataType": "TEXT" + } } }, "foreign_data_wrappers": { - "authorization_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_data_wrapper_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_data_wrapper_language": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_data_wrapper_name": { - "oid": 25, - "dataType": "TEXT" - }, - "library_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "foreign_data_wrapper_catalog", + "foreign_data_wrapper_name", + "authorization_identifier", + "library_name", + "foreign_data_wrapper_language" + ], + "columns": { + "authorization_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_data_wrapper_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_data_wrapper_language": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_data_wrapper_name": { + "oid": 25, + "dataType": "TEXT" + }, + "library_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "foreign_server_options": { - "foreign_server_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_value": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "foreign_server_catalog", + "foreign_server_name", + "option_name", + "option_value" + ], + "columns": { + "foreign_server_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_value": { + "oid": 25, + "dataType": "TEXT" + } } }, "foreign_servers": { - "authorization_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_data_wrapper_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_data_wrapper_name": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_name": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_type": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_version": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "foreign_server_catalog", + "foreign_server_name", + "foreign_data_wrapper_catalog", + "foreign_data_wrapper_name", + "foreign_server_type", + "foreign_server_version", + "authorization_identifier" + ], + "columns": { + "authorization_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_data_wrapper_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_data_wrapper_name": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_name": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_type": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_version": { + "oid": 25, + "dataType": "TEXT" + } } }, "foreign_table_options": { - "foreign_table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "option_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_value": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "foreign_table_catalog", + "foreign_table_schema", + "foreign_table_name", + "option_name", + "option_value" + ], + "columns": { + "foreign_table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "option_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_value": { + "oid": 25, + "dataType": "TEXT" + } } }, "foreign_tables": { - "foreign_server_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_name": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "foreign_table_catalog", + "foreign_table_schema", + "foreign_table_name", + "foreign_server_catalog", + "foreign_server_name" + ], + "columns": { + "foreign_server_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_name": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "information_schema_catalog_name": { - "catalog_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "catalog_name" + ], + "columns": { + "catalog_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "key_column_usage": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "ordinal_position": { - "oid": 20, - "dataType": "INT8" - }, - "position_in_unique_constraint": { - "oid": 20, - "dataType": "INT8" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "table_catalog", + "table_schema", + "table_name", + "column_name", + "ordinal_position", + "position_in_unique_constraint" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "ordinal_position": { + "oid": 20, + "dataType": "INT8" + }, + "position_in_unique_constraint": { + "oid": 20, + "dataType": "INT8" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "parameters": { - "as_locator": { - "oid": 25, - "dataType": "TEXT" - }, - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "is_result": { - "oid": 25, - "dataType": "TEXT" - }, - "maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "ordinal_position": { - "oid": 20, - "dataType": "INT8" - }, - "parameter_default": { - "oid": 25, - "dataType": "TEXT" - }, - "parameter_mode": { - "oid": 25, - "dataType": "TEXT" - }, - "parameter_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "specific_catalog", + "specific_schema", + "specific_name", + "ordinal_position", + "parameter_mode", + "is_result", + "as_locator", + "parameter_name", + "data_type", + "character_maximum_length", + "character_octet_length", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "udt_catalog", + "udt_schema", + "udt_name", + "scope_catalog", + "scope_schema", + "scope_name", + "maximum_cardinality", + "dtd_identifier", + "parameter_default" + ], + "columns": { + "as_locator": { + "oid": 25, + "dataType": "TEXT" + }, + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "is_result": { + "oid": 25, + "dataType": "TEXT" + }, + "maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "ordinal_position": { + "oid": 20, + "dataType": "INT8" + }, + "parameter_default": { + "oid": 25, + "dataType": "TEXT" + }, + "parameter_mode": { + "oid": 25, + "dataType": "TEXT" + }, + "parameter_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "referential_constraints": { - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "delete_rule": { - "oid": 25, - "dataType": "TEXT" - }, - "match_option": { - "oid": 25, - "dataType": "TEXT" - }, - "unique_constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "unique_constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "unique_constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "update_rule": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "unique_constraint_catalog", + "unique_constraint_schema", + "unique_constraint_name", + "match_option", + "update_rule", + "delete_rule" + ], + "columns": { + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "delete_rule": { + "oid": 25, + "dataType": "TEXT" + }, + "match_option": { + "oid": 25, + "dataType": "TEXT" + }, + "unique_constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "unique_constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "unique_constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "update_rule": { + "oid": 25, + "dataType": "TEXT" + } } }, "role_column_grants": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "table_catalog", + "table_schema", + "table_name", + "column_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "role_routine_grants": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_name": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "specific_catalog", + "specific_schema", + "specific_name", + "routine_catalog", + "routine_schema", + "routine_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_name": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "role_table_grants": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "with_hierarchy": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "table_catalog", + "table_schema", + "table_name", + "privilege_type", + "is_grantable", + "with_hierarchy" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "with_hierarchy": { + "oid": 25, + "dataType": "TEXT" + } } }, "role_udt_grants": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "udt_catalog", + "udt_schema", + "udt_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "role_usage_grants": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "object_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "object_name": { - "oid": 25, - "dataType": "TEXT" - }, - "object_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "object_type": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "object_catalog", + "object_schema", + "object_name", + "object_type", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "object_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "object_name": { + "oid": 25, + "dataType": "TEXT" + }, + "object_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "object_type": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + } } }, "routine_privileges": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_name": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "specific_catalog", + "specific_schema", + "specific_name", + "routine_catalog", + "routine_schema", + "routine_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_name": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "routines": { - "as_locator": { - "oid": 25, - "dataType": "TEXT" - }, - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "created": { - "oid": 1184, - "dataType": "TIMESTAMPTZ" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "external_language": { - "oid": 25, - "dataType": "TEXT" - }, - "external_name": { - "oid": 25, - "dataType": "TEXT" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "is_deterministic": { - "oid": 25, - "dataType": "TEXT" - }, - "is_implicitly_invocable": { - "oid": 25, - "dataType": "TEXT" - }, - "is_null_call": { - "oid": 25, - "dataType": "TEXT" - }, - "is_udt_dependent": { - "oid": 25, - "dataType": "TEXT" - }, - "is_user_defined_cast": { - "oid": 25, - "dataType": "TEXT" - }, - "last_altered": { - "oid": 1184, - "dataType": "TIMESTAMPTZ" - }, - "max_dynamic_result_sets": { - "oid": 20, - "dataType": "INT8" - }, - "maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "module_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "module_name": { - "oid": 25, - "dataType": "TEXT" - }, - "module_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "new_savepoint_level": { - "oid": 25, - "dataType": "TEXT" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "parameter_style": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_as_locator": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_char_max_length": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_char_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_char_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_char_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_char_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_from_data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_maximum_cardinality": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "result_cast_scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_type_udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_type_udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "result_cast_type_udt_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_body": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_definition": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_name": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "routine_type": { - "oid": 25, - "dataType": "TEXT" - }, - "schema_level_routine": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_name": { - "oid": 25, - "dataType": "TEXT" - }, - "scope_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "security_type": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "sql_data_access": { - "oid": 25, - "dataType": "TEXT" - }, - "sql_path": { - "oid": 25, - "dataType": "TEXT" - }, - "to_sql_specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "to_sql_specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "to_sql_specific_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "type_udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "type_udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "type_udt_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "specific_catalog", + "specific_schema", + "specific_name", + "routine_catalog", + "routine_schema", + "routine_name", + "routine_type", + "module_catalog", + "module_schema", + "module_name", + "udt_catalog", + "udt_schema", + "udt_name", + "data_type", + "character_maximum_length", + "character_octet_length", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "type_udt_catalog", + "type_udt_schema", + "type_udt_name", + "scope_catalog", + "scope_schema", + "scope_name", + "maximum_cardinality", + "dtd_identifier", + "routine_body", + "routine_definition", + "external_name", + "external_language", + "parameter_style", + "is_deterministic", + "sql_data_access", + "is_null_call", + "sql_path", + "schema_level_routine", + "max_dynamic_result_sets", + "is_user_defined_cast", + "is_implicitly_invocable", + "security_type", + "to_sql_specific_catalog", + "to_sql_specific_schema", + "to_sql_specific_name", + "as_locator", + "created", + "last_altered", + "new_savepoint_level", + "is_udt_dependent", + "result_cast_from_data_type", + "result_cast_as_locator", + "result_cast_char_max_length", + "result_cast_char_octet_length", + "result_cast_char_set_catalog", + "result_cast_char_set_schema", + "result_cast_char_set_name", + "result_cast_collation_catalog", + "result_cast_collation_schema", + "result_cast_collation_name", + "result_cast_numeric_precision", + "result_cast_numeric_precision_radix", + "result_cast_numeric_scale", + "result_cast_datetime_precision", + "result_cast_interval_type", + "result_cast_interval_precision", + "result_cast_type_udt_catalog", + "result_cast_type_udt_schema", + "result_cast_type_udt_name", + "result_cast_scope_catalog", + "result_cast_scope_schema", + "result_cast_scope_name", + "result_cast_maximum_cardinality", + "result_cast_dtd_identifier" + ], + "columns": { + "as_locator": { + "oid": 25, + "dataType": "TEXT" + }, + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "created": { + "oid": 1184, + "dataType": "TIMESTAMPTZ" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "external_language": { + "oid": 25, + "dataType": "TEXT" + }, + "external_name": { + "oid": 25, + "dataType": "TEXT" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "is_deterministic": { + "oid": 25, + "dataType": "TEXT" + }, + "is_implicitly_invocable": { + "oid": 25, + "dataType": "TEXT" + }, + "is_null_call": { + "oid": 25, + "dataType": "TEXT" + }, + "is_udt_dependent": { + "oid": 25, + "dataType": "TEXT" + }, + "is_user_defined_cast": { + "oid": 25, + "dataType": "TEXT" + }, + "last_altered": { + "oid": 1184, + "dataType": "TIMESTAMPTZ" + }, + "max_dynamic_result_sets": { + "oid": 20, + "dataType": "INT8" + }, + "maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "module_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "module_name": { + "oid": 25, + "dataType": "TEXT" + }, + "module_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "new_savepoint_level": { + "oid": 25, + "dataType": "TEXT" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "parameter_style": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_as_locator": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_char_max_length": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_char_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_char_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_char_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_char_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_from_data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_maximum_cardinality": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "result_cast_scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_type_udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_type_udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "result_cast_type_udt_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_body": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_definition": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_name": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "routine_type": { + "oid": 25, + "dataType": "TEXT" + }, + "schema_level_routine": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_name": { + "oid": 25, + "dataType": "TEXT" + }, + "scope_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "security_type": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "sql_data_access": { + "oid": 25, + "dataType": "TEXT" + }, + "sql_path": { + "oid": 25, + "dataType": "TEXT" + }, + "to_sql_specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "to_sql_specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "to_sql_specific_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "type_udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "type_udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "type_udt_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "schemata": { - "catalog_name": { - "oid": 25, - "dataType": "TEXT" - }, - "default_character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "default_character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "default_character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "schema_name": { - "oid": 25, - "dataType": "TEXT" - }, - "schema_owner": { - "oid": 25, - "dataType": "TEXT" - }, - "sql_path": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "catalog_name", + "schema_name", + "schema_owner", + "default_character_set_catalog", + "default_character_set_schema", + "default_character_set_name", + "sql_path" + ], + "columns": { + "catalog_name": { + "oid": 25, + "dataType": "TEXT" + }, + "default_character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "default_character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "default_character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "schema_name": { + "oid": 25, + "dataType": "TEXT" + }, + "schema_owner": { + "oid": 25, + "dataType": "TEXT" + }, + "sql_path": { + "oid": 25, + "dataType": "TEXT" + } } }, "sequences": { - "cycle_option": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "increment": { - "oid": 25, - "dataType": "TEXT" - }, - "maximum_value": { - "oid": 25, - "dataType": "TEXT" - }, - "minimum_value": { - "oid": 25, - "dataType": "TEXT" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "sequence_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "sequence_name": { - "oid": 25, - "dataType": "TEXT" - }, - "sequence_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "start_value": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "sequence_catalog", + "sequence_schema", + "sequence_name", + "data_type", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "start_value", + "minimum_value", + "maximum_value", + "increment", + "cycle_option" + ], + "columns": { + "cycle_option": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "increment": { + "oid": 25, + "dataType": "TEXT" + }, + "maximum_value": { + "oid": 25, + "dataType": "TEXT" + }, + "minimum_value": { + "oid": 25, + "dataType": "TEXT" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "sequence_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "sequence_name": { + "oid": 25, + "dataType": "TEXT" + }, + "sequence_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "start_value": { + "oid": 25, + "dataType": "TEXT" + } } }, "sql_features": { - "comments": { - "oid": 25, - "dataType": "TEXT" - }, - "feature_id": { - "oid": 25, - "dataType": "TEXT" - }, - "feature_name": { - "oid": 25, - "dataType": "TEXT" - }, - "is_supported": { - "oid": 25, - "dataType": "TEXT" - }, - "is_verified_by": { - "oid": 25, - "dataType": "TEXT" - }, - "sub_feature_id": { - "oid": 25, - "dataType": "TEXT" - }, - "sub_feature_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "feature_id", + "feature_name", + "sub_feature_id", + "sub_feature_name", + "is_supported", + "is_verified_by", + "comments" + ], + "columns": { + "comments": { + "oid": 25, + "dataType": "TEXT" + }, + "feature_id": { + "oid": 25, + "dataType": "TEXT" + }, + "feature_name": { + "oid": 25, + "dataType": "TEXT" + }, + "is_supported": { + "oid": 25, + "dataType": "TEXT" + }, + "is_verified_by": { + "oid": 25, + "dataType": "TEXT" + }, + "sub_feature_id": { + "oid": 25, + "dataType": "TEXT" + }, + "sub_feature_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "sql_implementation_info": { - "character_value": { - "oid": 25, - "dataType": "TEXT" - }, - "comments": { - "oid": 25, - "dataType": "TEXT" - }, - "implementation_info_id": { - "oid": 25, - "dataType": "TEXT" - }, - "implementation_info_name": { - "oid": 25, - "dataType": "TEXT" - }, - "integer_value": { - "oid": 20, - "dataType": "INT8" + "columnNames": [ + "implementation_info_id", + "implementation_info_name", + "integer_value", + "character_value", + "comments" + ], + "columns": { + "character_value": { + "oid": 25, + "dataType": "TEXT" + }, + "comments": { + "oid": 25, + "dataType": "TEXT" + }, + "implementation_info_id": { + "oid": 25, + "dataType": "TEXT" + }, + "implementation_info_name": { + "oid": 25, + "dataType": "TEXT" + }, + "integer_value": { + "oid": 20, + "dataType": "INT8" + } } }, "sql_parts": { - "comments": { - "oid": 25, - "dataType": "TEXT" - }, - "feature_id": { - "oid": 25, - "dataType": "TEXT" - }, - "feature_name": { - "oid": 25, - "dataType": "TEXT" - }, - "is_supported": { - "oid": 25, - "dataType": "TEXT" - }, - "is_verified_by": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "feature_id", + "feature_name", + "is_supported", + "is_verified_by", + "comments" + ], + "columns": { + "comments": { + "oid": 25, + "dataType": "TEXT" + }, + "feature_id": { + "oid": 25, + "dataType": "TEXT" + }, + "feature_name": { + "oid": 25, + "dataType": "TEXT" + }, + "is_supported": { + "oid": 25, + "dataType": "TEXT" + }, + "is_verified_by": { + "oid": 25, + "dataType": "TEXT" + } } }, "sql_sizing": { - "comments": { - "oid": 25, - "dataType": "TEXT" - }, - "sizing_id": { - "oid": 20, - "dataType": "INT8" - }, - "sizing_name": { - "oid": 25, - "dataType": "TEXT" - }, - "supported_value": { - "oid": 20, - "dataType": "INT8" + "columnNames": [ + "sizing_id", + "sizing_name", + "supported_value", + "comments" + ], + "columns": { + "comments": { + "oid": 25, + "dataType": "TEXT" + }, + "sizing_id": { + "oid": 20, + "dataType": "INT8" + }, + "sizing_name": { + "oid": 25, + "dataType": "TEXT" + }, + "supported_value": { + "oid": 20, + "dataType": "INT8" + } } }, "table_constraints": { - "constraint_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_name": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "constraint_type": { - "oid": 25, - "dataType": "TEXT" - }, - "enforced": { - "oid": 25, - "dataType": "TEXT" - }, - "initially_deferred": { - "oid": 25, - "dataType": "TEXT" - }, - "is_deferrable": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "constraint_catalog", + "constraint_schema", + "constraint_name", + "table_catalog", + "table_schema", + "table_name", + "constraint_type", + "is_deferrable", + "initially_deferred", + "enforced" + ], + "columns": { + "constraint_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_name": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "constraint_type": { + "oid": 25, + "dataType": "TEXT" + }, + "enforced": { + "oid": 25, + "dataType": "TEXT" + }, + "initially_deferred": { + "oid": 25, + "dataType": "TEXT" + }, + "is_deferrable": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "table_privileges": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "with_hierarchy": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "table_catalog", + "table_schema", + "table_name", + "privilege_type", + "is_grantable", + "with_hierarchy" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "with_hierarchy": { + "oid": 25, + "dataType": "TEXT" + } } }, "tables": { - "commit_action": { - "oid": 25, - "dataType": "TEXT" - }, - "is_insertable_into": { - "oid": 25, - "dataType": "TEXT" - }, - "is_typed": { - "oid": 25, - "dataType": "TEXT" - }, - "reference_generation": { - "oid": 25, - "dataType": "TEXT" - }, - "self_referencing_column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "table_type": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_name": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "table_type", + "self_referencing_column_name", + "reference_generation", + "user_defined_type_catalog", + "user_defined_type_schema", + "user_defined_type_name", + "is_insertable_into", + "is_typed", + "commit_action" + ], + "columns": { + "commit_action": { + "oid": 25, + "dataType": "TEXT" + }, + "is_insertable_into": { + "oid": 25, + "dataType": "TEXT" + }, + "is_typed": { + "oid": 25, + "dataType": "TEXT" + }, + "reference_generation": { + "oid": 25, + "dataType": "TEXT" + }, + "self_referencing_column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "table_type": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_name": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "transforms": { - "group_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "transform_type": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "udt_catalog", + "udt_schema", + "udt_name", + "specific_catalog", + "specific_schema", + "specific_name", + "group_name", + "transform_type" + ], + "columns": { + "group_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "transform_type": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "triggered_update_columns": { - "event_object_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "event_object_column": { - "oid": 25, - "dataType": "TEXT" - }, - "event_object_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "event_object_table": { - "oid": 25, - "dataType": "TEXT" - }, - "trigger_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "trigger_name": { - "oid": 25, - "dataType": "TEXT" - }, - "trigger_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "trigger_catalog", + "trigger_schema", + "trigger_name", + "event_object_catalog", + "event_object_schema", + "event_object_table", + "event_object_column" + ], + "columns": { + "event_object_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "event_object_column": { + "oid": 25, + "dataType": "TEXT" + }, + "event_object_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "event_object_table": { + "oid": 25, + "dataType": "TEXT" + }, + "trigger_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "trigger_name": { + "oid": 25, + "dataType": "TEXT" + }, + "trigger_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "triggers": { - "action_condition": { - "oid": 25, - "dataType": "TEXT" - }, - "action_order": { - "oid": 20, - "dataType": "INT8" - }, - "action_orientation": { - "oid": 25, - "dataType": "TEXT" - }, - "action_reference_new_row": { - "oid": 25, - "dataType": "TEXT" - }, - "action_reference_new_table": { - "oid": 25, - "dataType": "TEXT" - }, - "action_reference_old_row": { - "oid": 25, - "dataType": "TEXT" - }, - "action_reference_old_table": { - "oid": 25, - "dataType": "TEXT" - }, - "action_statement": { - "oid": 25, - "dataType": "TEXT" - }, - "action_timing": { - "oid": 25, - "dataType": "TEXT" - }, - "created": { - "oid": 1184, - "dataType": "TIMESTAMPTZ" - }, - "event_manipulation": { - "oid": 25, - "dataType": "TEXT" - }, - "event_object_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "event_object_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "event_object_table": { - "oid": 25, - "dataType": "TEXT" - }, - "trigger_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "trigger_name": { - "oid": 25, - "dataType": "TEXT" - }, - "trigger_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "trigger_catalog", + "trigger_schema", + "trigger_name", + "event_manipulation", + "event_object_catalog", + "event_object_schema", + "event_object_table", + "action_order", + "action_condition", + "action_statement", + "action_orientation", + "action_timing", + "action_reference_old_table", + "action_reference_new_table", + "action_reference_old_row", + "action_reference_new_row", + "created" + ], + "columns": { + "action_condition": { + "oid": 25, + "dataType": "TEXT" + }, + "action_order": { + "oid": 20, + "dataType": "INT8" + }, + "action_orientation": { + "oid": 25, + "dataType": "TEXT" + }, + "action_reference_new_row": { + "oid": 25, + "dataType": "TEXT" + }, + "action_reference_new_table": { + "oid": 25, + "dataType": "TEXT" + }, + "action_reference_old_row": { + "oid": 25, + "dataType": "TEXT" + }, + "action_reference_old_table": { + "oid": 25, + "dataType": "TEXT" + }, + "action_statement": { + "oid": 25, + "dataType": "TEXT" + }, + "action_timing": { + "oid": 25, + "dataType": "TEXT" + }, + "created": { + "oid": 1184, + "dataType": "TIMESTAMPTZ" + }, + "event_manipulation": { + "oid": 25, + "dataType": "TEXT" + }, + "event_object_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "event_object_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "event_object_table": { + "oid": 25, + "dataType": "TEXT" + }, + "trigger_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "trigger_name": { + "oid": 25, + "dataType": "TEXT" + }, + "trigger_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "udt_privileges": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_name": { - "oid": 25, - "dataType": "TEXT" - }, - "udt_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "udt_catalog", + "udt_schema", + "udt_name", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_name": { + "oid": 25, + "dataType": "TEXT" + }, + "udt_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "usage_privileges": { - "grantee": { - "oid": 25, - "dataType": "TEXT" - }, - "grantor": { - "oid": 25, - "dataType": "TEXT" - }, - "is_grantable": { - "oid": 25, - "dataType": "TEXT" - }, - "object_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "object_name": { - "oid": 25, - "dataType": "TEXT" - }, - "object_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "object_type": { - "oid": 25, - "dataType": "TEXT" - }, - "privilege_type": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "grantor", + "grantee", + "object_catalog", + "object_schema", + "object_name", + "object_type", + "privilege_type", + "is_grantable" + ], + "columns": { + "grantee": { + "oid": 25, + "dataType": "TEXT" + }, + "grantor": { + "oid": 25, + "dataType": "TEXT" + }, + "is_grantable": { + "oid": 25, + "dataType": "TEXT" + }, + "object_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "object_name": { + "oid": 25, + "dataType": "TEXT" + }, + "object_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "object_type": { + "oid": 25, + "dataType": "TEXT" + }, + "privilege_type": { + "oid": 25, + "dataType": "TEXT" + } } }, "user_defined_types": { - "character_maximum_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_octet_length": { - "oid": 20, - "dataType": "INT8" - }, - "character_set_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_name": { - "oid": 25, - "dataType": "TEXT" - }, - "character_set_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_name": { - "oid": 25, - "dataType": "TEXT" - }, - "collation_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "data_type": { - "oid": 25, - "dataType": "TEXT" - }, - "datetime_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_precision": { - "oid": 20, - "dataType": "INT8" - }, - "interval_type": { - "oid": 25, - "dataType": "TEXT" - }, - "is_final": { - "oid": 25, - "dataType": "TEXT" - }, - "is_instantiable": { - "oid": 25, - "dataType": "TEXT" - }, - "numeric_precision": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_precision_radix": { - "oid": 20, - "dataType": "INT8" - }, - "numeric_scale": { - "oid": 20, - "dataType": "INT8" - }, - "ordering_category": { - "oid": 25, - "dataType": "TEXT" - }, - "ordering_form": { - "oid": 25, - "dataType": "TEXT" - }, - "ordering_routine_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "ordering_routine_name": { - "oid": 25, - "dataType": "TEXT" - }, - "ordering_routine_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "ref_dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "reference_type": { - "oid": 25, - "dataType": "TEXT" - }, - "source_dtd_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_category": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_name": { - "oid": 25, - "dataType": "TEXT" - }, - "user_defined_type_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "user_defined_type_catalog", + "user_defined_type_schema", + "user_defined_type_name", + "user_defined_type_category", + "is_instantiable", + "is_final", + "ordering_form", + "ordering_category", + "ordering_routine_catalog", + "ordering_routine_schema", + "ordering_routine_name", + "reference_type", + "data_type", + "character_maximum_length", + "character_octet_length", + "character_set_catalog", + "character_set_schema", + "character_set_name", + "collation_catalog", + "collation_schema", + "collation_name", + "numeric_precision", + "numeric_precision_radix", + "numeric_scale", + "datetime_precision", + "interval_type", + "interval_precision", + "source_dtd_identifier", + "ref_dtd_identifier" + ], + "columns": { + "character_maximum_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_octet_length": { + "oid": 20, + "dataType": "INT8" + }, + "character_set_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_name": { + "oid": 25, + "dataType": "TEXT" + }, + "character_set_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_name": { + "oid": 25, + "dataType": "TEXT" + }, + "collation_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "data_type": { + "oid": 25, + "dataType": "TEXT" + }, + "datetime_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_precision": { + "oid": 20, + "dataType": "INT8" + }, + "interval_type": { + "oid": 25, + "dataType": "TEXT" + }, + "is_final": { + "oid": 25, + "dataType": "TEXT" + }, + "is_instantiable": { + "oid": 25, + "dataType": "TEXT" + }, + "numeric_precision": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_precision_radix": { + "oid": 20, + "dataType": "INT8" + }, + "numeric_scale": { + "oid": 20, + "dataType": "INT8" + }, + "ordering_category": { + "oid": 25, + "dataType": "TEXT" + }, + "ordering_form": { + "oid": 25, + "dataType": "TEXT" + }, + "ordering_routine_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "ordering_routine_name": { + "oid": 25, + "dataType": "TEXT" + }, + "ordering_routine_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "ref_dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "reference_type": { + "oid": 25, + "dataType": "TEXT" + }, + "source_dtd_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_category": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_name": { + "oid": 25, + "dataType": "TEXT" + }, + "user_defined_type_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "user_mapping_options": { - "authorization_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_name": { - "oid": 25, - "dataType": "TEXT" - }, - "option_value": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "authorization_identifier", + "foreign_server_catalog", + "foreign_server_name", + "option_name", + "option_value" + ], + "columns": { + "authorization_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_name": { + "oid": 25, + "dataType": "TEXT" + }, + "option_value": { + "oid": 25, + "dataType": "TEXT" + } } }, "user_mappings": { - "authorization_identifier": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "foreign_server_name": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "authorization_identifier", + "foreign_server_catalog", + "foreign_server_name" + ], + "columns": { + "authorization_identifier": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "foreign_server_name": { + "oid": 25, + "dataType": "TEXT" + } } }, "view_column_usage": { - "column_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "view_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "view_name": { - "oid": 25, - "dataType": "TEXT" - }, - "view_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "view_catalog", + "view_schema", + "view_name", + "table_catalog", + "table_schema", + "table_name", + "column_name" + ], + "columns": { + "column_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "view_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "view_name": { + "oid": 25, + "dataType": "TEXT" + }, + "view_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "view_routine_usage": { - "specific_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_name": { - "oid": 25, - "dataType": "TEXT" - }, - "specific_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "specific_catalog", + "specific_schema", + "specific_name" + ], + "columns": { + "specific_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_name": { + "oid": 25, + "dataType": "TEXT" + }, + "specific_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "view_table_usage": { - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "view_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "view_name": { - "oid": 25, - "dataType": "TEXT" - }, - "view_schema": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "view_catalog", + "view_schema", + "view_name", + "table_catalog", + "table_schema", + "table_name" + ], + "columns": { + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "view_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "view_name": { + "oid": 25, + "dataType": "TEXT" + }, + "view_schema": { + "oid": 25, + "dataType": "TEXT" + } } }, "views": { - "check_option": { - "oid": 25, - "dataType": "TEXT" - }, - "is_insertable_into": { - "oid": 25, - "dataType": "TEXT" - }, - "is_trigger_deletable": { - "oid": 25, - "dataType": "TEXT" - }, - "is_trigger_insertable_into": { - "oid": 25, - "dataType": "TEXT" - }, - "is_trigger_updatable": { - "oid": 25, - "dataType": "TEXT" - }, - "is_updatable": { - "oid": 25, - "dataType": "TEXT" - }, - "table_catalog": { - "oid": 25, - "dataType": "TEXT" - }, - "table_name": { - "oid": 25, - "dataType": "TEXT" - }, - "table_schema": { - "oid": 25, - "dataType": "TEXT" - }, - "view_definition": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "table_catalog", + "table_schema", + "table_name", + "view_definition", + "check_option", + "is_updatable", + "is_insertable_into", + "is_trigger_updatable", + "is_trigger_deletable", + "is_trigger_insertable_into" + ], + "columns": { + "check_option": { + "oid": 25, + "dataType": "TEXT" + }, + "is_insertable_into": { + "oid": 25, + "dataType": "TEXT" + }, + "is_trigger_deletable": { + "oid": 25, + "dataType": "TEXT" + }, + "is_trigger_insertable_into": { + "oid": 25, + "dataType": "TEXT" + }, + "is_trigger_updatable": { + "oid": 25, + "dataType": "TEXT" + }, + "is_updatable": { + "oid": 25, + "dataType": "TEXT" + }, + "table_catalog": { + "oid": 25, + "dataType": "TEXT" + }, + "table_name": { + "oid": 25, + "dataType": "TEXT" + }, + "table_schema": { + "oid": 25, + "dataType": "TEXT" + }, + "view_definition": { + "oid": 25, + "dataType": "TEXT" + } } } } diff --git a/pkg/sql/testdata/pg_catalog_tables_from_postgres.json b/pkg/sql/testdata/pg_catalog_tables_from_postgres.json index 2f9a9e64294d..e0d14e78dcdb 100644 --- a/pkg/sql/testdata/pg_catalog_tables_from_postgres.json +++ b/pkg/sql/testdata/pg_catalog_tables_from_postgres.json @@ -2,5029 +2,6737 @@ "version": "13.3", "tables": { "pg_aggregate": { - "aggcombinefn": { - "oid": 24, - "dataType": "regproc" - }, - "aggdeserialfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggfinalextra": { - "oid": 16, - "dataType": "bool" - }, - "aggfinalfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggfinalmodify": { - "oid": 18, - "dataType": "char" - }, - "aggfnoid": { - "oid": 24, - "dataType": "regproc" - }, - "agginitval": { - "oid": 25, - "dataType": "text" - }, - "aggkind": { - "oid": 18, - "dataType": "char" - }, - "aggmfinalextra": { - "oid": 16, - "dataType": "bool" - }, - "aggmfinalfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggmfinalmodify": { - "oid": 18, - "dataType": "char" - }, - "aggminitval": { - "oid": 25, - "dataType": "text" - }, - "aggminvtransfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggmtransfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggmtransspace": { - "oid": 23, - "dataType": "int4" - }, - "aggmtranstype": { - "oid": 26, - "dataType": "oid" - }, - "aggnumdirectargs": { - "oid": 21, - "dataType": "int2" - }, - "aggserialfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggsortop": { - "oid": 26, - "dataType": "oid" - }, - "aggtransfn": { - "oid": 24, - "dataType": "regproc" - }, - "aggtransspace": { - "oid": 23, - "dataType": "int4" - }, - "aggtranstype": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "aggfnoid", + "aggkind", + "aggnumdirectargs", + "aggtransfn", + "aggfinalfn", + "aggcombinefn", + "aggserialfn", + "aggdeserialfn", + "aggmtransfn", + "aggminvtransfn", + "aggmfinalfn", + "aggfinalextra", + "aggmfinalextra", + "aggfinalmodify", + "aggmfinalmodify", + "aggsortop", + "aggtranstype", + "aggtransspace", + "aggmtranstype", + "aggmtransspace", + "agginitval", + "aggminitval" + ], + "columns": { + "aggcombinefn": { + "oid": 24, + "dataType": "regproc" + }, + "aggdeserialfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggfinalextra": { + "oid": 16, + "dataType": "bool" + }, + "aggfinalfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggfinalmodify": { + "oid": 18, + "dataType": "char" + }, + "aggfnoid": { + "oid": 24, + "dataType": "regproc" + }, + "agginitval": { + "oid": 25, + "dataType": "text" + }, + "aggkind": { + "oid": 18, + "dataType": "char" + }, + "aggmfinalextra": { + "oid": 16, + "dataType": "bool" + }, + "aggmfinalfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggmfinalmodify": { + "oid": 18, + "dataType": "char" + }, + "aggminitval": { + "oid": 25, + "dataType": "text" + }, + "aggminvtransfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggmtransfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggmtransspace": { + "oid": 23, + "dataType": "int4" + }, + "aggmtranstype": { + "oid": 26, + "dataType": "oid" + }, + "aggnumdirectargs": { + "oid": 21, + "dataType": "int2" + }, + "aggserialfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggsortop": { + "oid": 26, + "dataType": "oid" + }, + "aggtransfn": { + "oid": 24, + "dataType": "regproc" + }, + "aggtransspace": { + "oid": 23, + "dataType": "int4" + }, + "aggtranstype": { + "oid": 26, + "dataType": "oid" + } } }, "pg_am": { - "amhandler": { - "oid": 24, - "dataType": "regproc" - }, - "amname": { - "oid": 19, - "dataType": "name" - }, - "amtype": { - "oid": 18, - "dataType": "char" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "amname", + "amhandler", + "amtype" + ], + "columns": { + "amhandler": { + "oid": 24, + "dataType": "regproc" + }, + "amname": { + "oid": 19, + "dataType": "name" + }, + "amtype": { + "oid": 18, + "dataType": "char" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_amop": { - "amopfamily": { - "oid": 26, - "dataType": "oid" - }, - "amoplefttype": { - "oid": 26, - "dataType": "oid" - }, - "amopmethod": { - "oid": 26, - "dataType": "oid" - }, - "amopopr": { - "oid": 26, - "dataType": "oid" - }, - "amoppurpose": { - "oid": 18, - "dataType": "char" - }, - "amoprighttype": { - "oid": 26, - "dataType": "oid" - }, - "amopsortfamily": { - "oid": 26, - "dataType": "oid" - }, - "amopstrategy": { - "oid": 21, - "dataType": "int2" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "amopfamily", + "amoplefttype", + "amoprighttype", + "amopstrategy", + "amoppurpose", + "amopopr", + "amopmethod", + "amopsortfamily" + ], + "columns": { + "amopfamily": { + "oid": 26, + "dataType": "oid" + }, + "amoplefttype": { + "oid": 26, + "dataType": "oid" + }, + "amopmethod": { + "oid": 26, + "dataType": "oid" + }, + "amopopr": { + "oid": 26, + "dataType": "oid" + }, + "amoppurpose": { + "oid": 18, + "dataType": "char" + }, + "amoprighttype": { + "oid": 26, + "dataType": "oid" + }, + "amopsortfamily": { + "oid": 26, + "dataType": "oid" + }, + "amopstrategy": { + "oid": 21, + "dataType": "int2" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_amproc": { - "amproc": { - "oid": 24, - "dataType": "regproc" - }, - "amprocfamily": { - "oid": 26, - "dataType": "oid" - }, - "amproclefttype": { - "oid": 26, - "dataType": "oid" - }, - "amprocnum": { - "oid": 21, - "dataType": "int2" - }, - "amprocrighttype": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "amprocfamily", + "amproclefttype", + "amprocrighttype", + "amprocnum", + "amproc" + ], + "columns": { + "amproc": { + "oid": 24, + "dataType": "regproc" + }, + "amprocfamily": { + "oid": 26, + "dataType": "oid" + }, + "amproclefttype": { + "oid": 26, + "dataType": "oid" + }, + "amprocnum": { + "oid": 21, + "dataType": "int2" + }, + "amprocrighttype": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_attrdef": { - "adbin": { - "oid": 25, - "dataType": "TEXT" - }, - "adnum": { - "oid": 21, - "dataType": "int2" - }, - "adrelid": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "adrelid", + "adnum", + "adbin" + ], + "columns": { + "adbin": { + "oid": 25, + "dataType": "TEXT" + }, + "adnum": { + "oid": 21, + "dataType": "int2" + }, + "adrelid": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_attribute": { - "attacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "attalign": { - "oid": 18, - "dataType": "char" - }, - "attbyval": { - "oid": 16, - "dataType": "bool" - }, - "attcacheoff": { - "oid": 23, - "dataType": "int4" - }, - "attcollation": { - "oid": 26, - "dataType": "oid" - }, - "attfdwoptions": { - "oid": 1009, - "dataType": "_text" - }, - "attgenerated": { - "oid": 18, - "dataType": "char" - }, - "atthasdef": { - "oid": 16, - "dataType": "bool" - }, - "atthasmissing": { - "oid": 16, - "dataType": "bool" - }, - "attidentity": { - "oid": 18, - "dataType": "char" - }, - "attinhcount": { - "oid": 23, - "dataType": "int4" - }, - "attisdropped": { - "oid": 16, - "dataType": "bool" - }, - "attislocal": { - "oid": 16, - "dataType": "bool" - }, - "attlen": { - "oid": 21, - "dataType": "int2" - }, - "attmissingval": { - "oid": 1009, - "dataType": "_TEXT" - }, - "attname": { - "oid": 19, - "dataType": "name" - }, - "attndims": { - "oid": 23, - "dataType": "int4" - }, - "attnotnull": { - "oid": 16, - "dataType": "bool" - }, - "attnum": { - "oid": 21, - "dataType": "int2" - }, - "attoptions": { - "oid": 1009, - "dataType": "_text" - }, - "attrelid": { - "oid": 26, - "dataType": "oid" - }, - "attstattarget": { - "oid": 23, - "dataType": "int4" - }, - "attstorage": { - "oid": 18, - "dataType": "char" - }, - "atttypid": { - "oid": 26, - "dataType": "oid" - }, - "atttypmod": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "attrelid", + "attname", + "atttypid", + "attstattarget", + "attlen", + "attnum", + "attndims", + "attcacheoff", + "atttypmod", + "attbyval", + "attstorage", + "attalign", + "attnotnull", + "atthasdef", + "atthasmissing", + "attidentity", + "attgenerated", + "attisdropped", + "attislocal", + "attinhcount", + "attcollation", + "attacl", + "attoptions", + "attfdwoptions", + "attmissingval" + ], + "columns": { + "attacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "attalign": { + "oid": 18, + "dataType": "char" + }, + "attbyval": { + "oid": 16, + "dataType": "bool" + }, + "attcacheoff": { + "oid": 23, + "dataType": "int4" + }, + "attcollation": { + "oid": 26, + "dataType": "oid" + }, + "attfdwoptions": { + "oid": 1009, + "dataType": "_text" + }, + "attgenerated": { + "oid": 18, + "dataType": "char" + }, + "atthasdef": { + "oid": 16, + "dataType": "bool" + }, + "atthasmissing": { + "oid": 16, + "dataType": "bool" + }, + "attidentity": { + "oid": 18, + "dataType": "char" + }, + "attinhcount": { + "oid": 23, + "dataType": "int4" + }, + "attisdropped": { + "oid": 16, + "dataType": "bool" + }, + "attislocal": { + "oid": 16, + "dataType": "bool" + }, + "attlen": { + "oid": 21, + "dataType": "int2" + }, + "attmissingval": { + "oid": 1009, + "dataType": "_TEXT" + }, + "attname": { + "oid": 19, + "dataType": "name" + }, + "attndims": { + "oid": 23, + "dataType": "int4" + }, + "attnotnull": { + "oid": 16, + "dataType": "bool" + }, + "attnum": { + "oid": 21, + "dataType": "int2" + }, + "attoptions": { + "oid": 1009, + "dataType": "_text" + }, + "attrelid": { + "oid": 26, + "dataType": "oid" + }, + "attstattarget": { + "oid": 23, + "dataType": "int4" + }, + "attstorage": { + "oid": 18, + "dataType": "char" + }, + "atttypid": { + "oid": 26, + "dataType": "oid" + }, + "atttypmod": { + "oid": 23, + "dataType": "int4" + } } }, "pg_auth_members": { - "admin_option": { - "oid": 16, - "dataType": "bool" - }, - "grantor": { - "oid": 26, - "dataType": "oid" - }, - "member": { - "oid": 26, - "dataType": "oid" - }, - "roleid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "roleid", + "member", + "grantor", + "admin_option" + ], + "columns": { + "admin_option": { + "oid": 16, + "dataType": "bool" + }, + "grantor": { + "oid": 26, + "dataType": "oid" + }, + "member": { + "oid": 26, + "dataType": "oid" + }, + "roleid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_authid": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "rolbypassrls": { - "oid": 16, - "dataType": "bool" - }, - "rolcanlogin": { - "oid": 16, - "dataType": "bool" - }, - "rolconnlimit": { - "oid": 23, - "dataType": "int4" - }, - "rolcreatedb": { - "oid": 16, - "dataType": "bool" - }, - "rolcreaterole": { - "oid": 16, - "dataType": "bool" - }, - "rolinherit": { - "oid": 16, - "dataType": "bool" - }, - "rolname": { - "oid": 19, - "dataType": "name" - }, - "rolpassword": { - "oid": 25, - "dataType": "text" - }, - "rolreplication": { - "oid": 16, - "dataType": "bool" - }, - "rolsuper": { - "oid": 16, - "dataType": "bool" - }, - "rolvaliduntil": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "oid", + "rolname", + "rolsuper", + "rolinherit", + "rolcreaterole", + "rolcreatedb", + "rolcanlogin", + "rolreplication", + "rolbypassrls", + "rolconnlimit", + "rolpassword", + "rolvaliduntil" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "rolbypassrls": { + "oid": 16, + "dataType": "bool" + }, + "rolcanlogin": { + "oid": 16, + "dataType": "bool" + }, + "rolconnlimit": { + "oid": 23, + "dataType": "int4" + }, + "rolcreatedb": { + "oid": 16, + "dataType": "bool" + }, + "rolcreaterole": { + "oid": 16, + "dataType": "bool" + }, + "rolinherit": { + "oid": 16, + "dataType": "bool" + }, + "rolname": { + "oid": 19, + "dataType": "name" + }, + "rolpassword": { + "oid": 25, + "dataType": "text" + }, + "rolreplication": { + "oid": 16, + "dataType": "bool" + }, + "rolsuper": { + "oid": 16, + "dataType": "bool" + }, + "rolvaliduntil": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_available_extension_versions": { - "comment": { - "oid": 25, - "dataType": "text" - }, - "installed": { - "oid": 16, - "dataType": "bool" - }, - "name": { - "oid": 19, - "dataType": "name" - }, - "relocatable": { - "oid": 16, - "dataType": "bool" - }, - "requires": { - "oid": 1003, - "dataType": "_name" - }, - "schema": { - "oid": 19, - "dataType": "name" - }, - "superuser": { - "oid": 16, - "dataType": "bool" - }, - "trusted": { - "oid": 16, - "dataType": "bool" - }, - "version": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "name", + "version", + "installed", + "superuser", + "trusted", + "relocatable", + "schema", + "requires", + "comment" + ], + "columns": { + "comment": { + "oid": 25, + "dataType": "text" + }, + "installed": { + "oid": 16, + "dataType": "bool" + }, + "name": { + "oid": 19, + "dataType": "name" + }, + "relocatable": { + "oid": 16, + "dataType": "bool" + }, + "requires": { + "oid": 1003, + "dataType": "_name" + }, + "schema": { + "oid": 19, + "dataType": "name" + }, + "superuser": { + "oid": 16, + "dataType": "bool" + }, + "trusted": { + "oid": 16, + "dataType": "bool" + }, + "version": { + "oid": 25, + "dataType": "text" + } } }, "pg_available_extensions": { - "comment": { - "oid": 25, - "dataType": "text" - }, - "default_version": { - "oid": 25, - "dataType": "text" - }, - "installed_version": { - "oid": 25, - "dataType": "text" - }, - "name": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "name", + "default_version", + "installed_version", + "comment" + ], + "columns": { + "comment": { + "oid": 25, + "dataType": "text" + }, + "default_version": { + "oid": 25, + "dataType": "text" + }, + "installed_version": { + "oid": 25, + "dataType": "text" + }, + "name": { + "oid": 19, + "dataType": "name" + } } }, "pg_cast": { - "castcontext": { - "oid": 18, - "dataType": "char" - }, - "castfunc": { - "oid": 26, - "dataType": "oid" - }, - "castmethod": { - "oid": 18, - "dataType": "char" - }, - "castsource": { - "oid": 26, - "dataType": "oid" - }, - "casttarget": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "castsource", + "casttarget", + "castfunc", + "castcontext", + "castmethod" + ], + "columns": { + "castcontext": { + "oid": 18, + "dataType": "char" + }, + "castfunc": { + "oid": 26, + "dataType": "oid" + }, + "castmethod": { + "oid": 18, + "dataType": "char" + }, + "castsource": { + "oid": 26, + "dataType": "oid" + }, + "casttarget": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_class": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "relacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "relallvisible": { - "oid": 23, - "dataType": "int4" - }, - "relam": { - "oid": 26, - "dataType": "oid" - }, - "relchecks": { - "oid": 21, - "dataType": "int2" - }, - "relfilenode": { - "oid": 26, - "dataType": "oid" - }, - "relforcerowsecurity": { - "oid": 16, - "dataType": "bool" - }, - "relfrozenxid": { - "oid": 20, - "dataType": "INT8" - }, - "relhasindex": { - "oid": 16, - "dataType": "bool" - }, - "relhasrules": { - "oid": 16, - "dataType": "bool" - }, - "relhassubclass": { - "oid": 16, - "dataType": "bool" - }, - "relhastriggers": { - "oid": 16, - "dataType": "bool" - }, - "relispartition": { - "oid": 16, - "dataType": "bool" - }, - "relispopulated": { - "oid": 16, - "dataType": "bool" - }, - "relisshared": { - "oid": 16, - "dataType": "bool" - }, - "relkind": { - "oid": 18, - "dataType": "char" - }, - "relminmxid": { - "oid": 20, - "dataType": "INT8" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "relnamespace": { - "oid": 26, - "dataType": "oid" - }, - "relnatts": { - "oid": 21, - "dataType": "int2" - }, - "reloftype": { - "oid": 26, - "dataType": "oid" - }, - "reloptions": { - "oid": 1009, - "dataType": "_text" - }, - "relowner": { - "oid": 26, - "dataType": "oid" - }, - "relpages": { - "oid": 23, - "dataType": "int4" - }, - "relpartbound": { - "oid": 25, - "dataType": "TEXT" - }, - "relpersistence": { - "oid": 18, - "dataType": "char" - }, - "relreplident": { - "oid": 18, - "dataType": "char" - }, - "relrewrite": { - "oid": 26, - "dataType": "oid" - }, - "relrowsecurity": { - "oid": 16, - "dataType": "bool" - }, - "reltablespace": { - "oid": 26, - "dataType": "oid" - }, - "reltoastrelid": { - "oid": 26, - "dataType": "oid" - }, - "reltuples": { - "oid": 700, - "dataType": "float4" - }, - "reltype": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "relname", + "relnamespace", + "reltype", + "reloftype", + "relowner", + "relam", + "relfilenode", + "reltablespace", + "relpages", + "reltuples", + "relallvisible", + "reltoastrelid", + "relhasindex", + "relisshared", + "relpersistence", + "relkind", + "relnatts", + "relchecks", + "relhasrules", + "relhastriggers", + "relhassubclass", + "relrowsecurity", + "relforcerowsecurity", + "relispopulated", + "relreplident", + "relispartition", + "relrewrite", + "relfrozenxid", + "relminmxid", + "relacl", + "reloptions", + "relpartbound" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "relacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "relallvisible": { + "oid": 23, + "dataType": "int4" + }, + "relam": { + "oid": 26, + "dataType": "oid" + }, + "relchecks": { + "oid": 21, + "dataType": "int2" + }, + "relfilenode": { + "oid": 26, + "dataType": "oid" + }, + "relforcerowsecurity": { + "oid": 16, + "dataType": "bool" + }, + "relfrozenxid": { + "oid": 20, + "dataType": "INT8" + }, + "relhasindex": { + "oid": 16, + "dataType": "bool" + }, + "relhasrules": { + "oid": 16, + "dataType": "bool" + }, + "relhassubclass": { + "oid": 16, + "dataType": "bool" + }, + "relhastriggers": { + "oid": 16, + "dataType": "bool" + }, + "relispartition": { + "oid": 16, + "dataType": "bool" + }, + "relispopulated": { + "oid": 16, + "dataType": "bool" + }, + "relisshared": { + "oid": 16, + "dataType": "bool" + }, + "relkind": { + "oid": 18, + "dataType": "char" + }, + "relminmxid": { + "oid": 20, + "dataType": "INT8" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "relnamespace": { + "oid": 26, + "dataType": "oid" + }, + "relnatts": { + "oid": 21, + "dataType": "int2" + }, + "reloftype": { + "oid": 26, + "dataType": "oid" + }, + "reloptions": { + "oid": 1009, + "dataType": "_text" + }, + "relowner": { + "oid": 26, + "dataType": "oid" + }, + "relpages": { + "oid": 23, + "dataType": "int4" + }, + "relpartbound": { + "oid": 25, + "dataType": "TEXT" + }, + "relpersistence": { + "oid": 18, + "dataType": "char" + }, + "relreplident": { + "oid": 18, + "dataType": "char" + }, + "relrewrite": { + "oid": 26, + "dataType": "oid" + }, + "relrowsecurity": { + "oid": 16, + "dataType": "bool" + }, + "reltablespace": { + "oid": 26, + "dataType": "oid" + }, + "reltoastrelid": { + "oid": 26, + "dataType": "oid" + }, + "reltuples": { + "oid": 700, + "dataType": "float4" + }, + "reltype": { + "oid": 26, + "dataType": "oid" + } } }, "pg_collation": { - "collcollate": { - "oid": 19, - "dataType": "name" - }, - "collctype": { - "oid": 19, - "dataType": "name" - }, - "collencoding": { - "oid": 23, - "dataType": "int4" - }, - "collisdeterministic": { - "oid": 16, - "dataType": "bool" - }, - "collname": { - "oid": 19, - "dataType": "name" - }, - "collnamespace": { - "oid": 26, - "dataType": "oid" - }, - "collowner": { - "oid": 26, - "dataType": "oid" - }, - "collprovider": { - "oid": 18, - "dataType": "char" - }, - "collversion": { - "oid": 25, - "dataType": "text" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "collname", + "collnamespace", + "collowner", + "collprovider", + "collisdeterministic", + "collencoding", + "collcollate", + "collctype", + "collversion" + ], + "columns": { + "collcollate": { + "oid": 19, + "dataType": "name" + }, + "collctype": { + "oid": 19, + "dataType": "name" + }, + "collencoding": { + "oid": 23, + "dataType": "int4" + }, + "collisdeterministic": { + "oid": 16, + "dataType": "bool" + }, + "collname": { + "oid": 19, + "dataType": "name" + }, + "collnamespace": { + "oid": 26, + "dataType": "oid" + }, + "collowner": { + "oid": 26, + "dataType": "oid" + }, + "collprovider": { + "oid": 18, + "dataType": "char" + }, + "collversion": { + "oid": 25, + "dataType": "text" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_config": { - "name": { - "oid": 25, - "dataType": "text" - }, - "setting": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "name", + "setting" + ], + "columns": { + "name": { + "oid": 25, + "dataType": "text" + }, + "setting": { + "oid": 25, + "dataType": "text" + } } }, "pg_constraint": { - "conbin": { - "oid": 25, - "dataType": "TEXT" - }, - "condeferrable": { - "oid": 16, - "dataType": "bool" - }, - "condeferred": { - "oid": 16, - "dataType": "bool" - }, - "conexclop": { - "oid": 1028, - "dataType": "_oid" - }, - "confdeltype": { - "oid": 18, - "dataType": "char" - }, - "conffeqop": { - "oid": 1028, - "dataType": "_oid" - }, - "confkey": { - "oid": 1005, - "dataType": "_int2" - }, - "confmatchtype": { - "oid": 18, - "dataType": "char" - }, - "confrelid": { - "oid": 26, - "dataType": "oid" - }, - "confupdtype": { - "oid": 18, - "dataType": "char" - }, - "conindid": { - "oid": 26, - "dataType": "oid" - }, - "coninhcount": { - "oid": 23, - "dataType": "int4" - }, - "conislocal": { - "oid": 16, - "dataType": "bool" - }, - "conkey": { - "oid": 1005, - "dataType": "_int2" - }, - "conname": { - "oid": 19, - "dataType": "name" - }, - "connamespace": { - "oid": 26, - "dataType": "oid" - }, - "connoinherit": { - "oid": 16, - "dataType": "bool" - }, - "conparentid": { - "oid": 26, - "dataType": "oid" - }, - "conpfeqop": { - "oid": 1028, - "dataType": "_oid" - }, - "conppeqop": { - "oid": 1028, - "dataType": "_oid" - }, - "conrelid": { - "oid": 26, - "dataType": "oid" - }, - "contype": { - "oid": 18, - "dataType": "char" - }, - "contypid": { - "oid": 26, - "dataType": "oid" - }, - "convalidated": { - "oid": 16, - "dataType": "bool" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "conname", + "connamespace", + "contype", + "condeferrable", + "condeferred", + "convalidated", + "conrelid", + "contypid", + "conindid", + "conparentid", + "confrelid", + "confupdtype", + "confdeltype", + "confmatchtype", + "conislocal", + "coninhcount", + "connoinherit", + "conkey", + "confkey", + "conpfeqop", + "conppeqop", + "conffeqop", + "conexclop", + "conbin" + ], + "columns": { + "conbin": { + "oid": 25, + "dataType": "TEXT" + }, + "condeferrable": { + "oid": 16, + "dataType": "bool" + }, + "condeferred": { + "oid": 16, + "dataType": "bool" + }, + "conexclop": { + "oid": 1028, + "dataType": "_oid" + }, + "confdeltype": { + "oid": 18, + "dataType": "char" + }, + "conffeqop": { + "oid": 1028, + "dataType": "_oid" + }, + "confkey": { + "oid": 1005, + "dataType": "_int2" + }, + "confmatchtype": { + "oid": 18, + "dataType": "char" + }, + "confrelid": { + "oid": 26, + "dataType": "oid" + }, + "confupdtype": { + "oid": 18, + "dataType": "char" + }, + "conindid": { + "oid": 26, + "dataType": "oid" + }, + "coninhcount": { + "oid": 23, + "dataType": "int4" + }, + "conislocal": { + "oid": 16, + "dataType": "bool" + }, + "conkey": { + "oid": 1005, + "dataType": "_int2" + }, + "conname": { + "oid": 19, + "dataType": "name" + }, + "connamespace": { + "oid": 26, + "dataType": "oid" + }, + "connoinherit": { + "oid": 16, + "dataType": "bool" + }, + "conparentid": { + "oid": 26, + "dataType": "oid" + }, + "conpfeqop": { + "oid": 1028, + "dataType": "_oid" + }, + "conppeqop": { + "oid": 1028, + "dataType": "_oid" + }, + "conrelid": { + "oid": 26, + "dataType": "oid" + }, + "contype": { + "oid": 18, + "dataType": "char" + }, + "contypid": { + "oid": 26, + "dataType": "oid" + }, + "convalidated": { + "oid": 16, + "dataType": "bool" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_conversion": { - "condefault": { - "oid": 16, - "dataType": "bool" - }, - "conforencoding": { - "oid": 23, - "dataType": "int4" - }, - "conname": { - "oid": 19, - "dataType": "name" - }, - "connamespace": { - "oid": 26, - "dataType": "oid" - }, - "conowner": { - "oid": 26, - "dataType": "oid" - }, - "conproc": { - "oid": 24, - "dataType": "regproc" - }, - "contoencoding": { - "oid": 23, - "dataType": "int4" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "conname", + "connamespace", + "conowner", + "conforencoding", + "contoencoding", + "conproc", + "condefault" + ], + "columns": { + "condefault": { + "oid": 16, + "dataType": "bool" + }, + "conforencoding": { + "oid": 23, + "dataType": "int4" + }, + "conname": { + "oid": 19, + "dataType": "name" + }, + "connamespace": { + "oid": 26, + "dataType": "oid" + }, + "conowner": { + "oid": 26, + "dataType": "oid" + }, + "conproc": { + "oid": 24, + "dataType": "regproc" + }, + "contoencoding": { + "oid": 23, + "dataType": "int4" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_cursors": { - "creation_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "is_binary": { - "oid": 16, - "dataType": "bool" - }, - "is_holdable": { - "oid": 16, - "dataType": "bool" - }, - "is_scrollable": { - "oid": 16, - "dataType": "bool" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "statement": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "name", + "statement", + "is_holdable", + "is_binary", + "is_scrollable", + "creation_time" + ], + "columns": { + "creation_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "is_binary": { + "oid": 16, + "dataType": "bool" + }, + "is_holdable": { + "oid": 16, + "dataType": "bool" + }, + "is_scrollable": { + "oid": 16, + "dataType": "bool" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "statement": { + "oid": 25, + "dataType": "text" + } } }, "pg_database": { - "datacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "datallowconn": { - "oid": 16, - "dataType": "bool" - }, - "datcollate": { - "oid": 19, - "dataType": "name" - }, - "datconnlimit": { - "oid": 23, - "dataType": "int4" - }, - "datctype": { - "oid": 19, - "dataType": "name" - }, - "datdba": { - "oid": 26, - "dataType": "oid" - }, - "datfrozenxid": { - "oid": 20, - "dataType": "INT8" - }, - "datistemplate": { - "oid": 16, - "dataType": "bool" - }, - "datlastsysoid": { - "oid": 26, - "dataType": "oid" - }, - "datminmxid": { - "oid": 20, - "dataType": "INT8" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "dattablespace": { - "oid": 26, - "dataType": "oid" - }, - "encoding": { - "oid": 23, - "dataType": "int4" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "datname", + "datdba", + "encoding", + "datcollate", + "datctype", + "datistemplate", + "datallowconn", + "datconnlimit", + "datlastsysoid", + "datfrozenxid", + "datminmxid", + "dattablespace", + "datacl" + ], + "columns": { + "datacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "datallowconn": { + "oid": 16, + "dataType": "bool" + }, + "datcollate": { + "oid": 19, + "dataType": "name" + }, + "datconnlimit": { + "oid": 23, + "dataType": "int4" + }, + "datctype": { + "oid": 19, + "dataType": "name" + }, + "datdba": { + "oid": 26, + "dataType": "oid" + }, + "datfrozenxid": { + "oid": 20, + "dataType": "INT8" + }, + "datistemplate": { + "oid": 16, + "dataType": "bool" + }, + "datlastsysoid": { + "oid": 26, + "dataType": "oid" + }, + "datminmxid": { + "oid": 20, + "dataType": "INT8" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "dattablespace": { + "oid": 26, + "dataType": "oid" + }, + "encoding": { + "oid": 23, + "dataType": "int4" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_db_role_setting": { - "setconfig": { - "oid": 1009, - "dataType": "_text" - }, - "setdatabase": { - "oid": 26, - "dataType": "oid" - }, - "setrole": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "setdatabase", + "setrole", + "setconfig" + ], + "columns": { + "setconfig": { + "oid": 1009, + "dataType": "_text" + }, + "setdatabase": { + "oid": 26, + "dataType": "oid" + }, + "setrole": { + "oid": 26, + "dataType": "oid" + } } }, "pg_default_acl": { - "defaclacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "defaclnamespace": { - "oid": 26, - "dataType": "oid" - }, - "defaclobjtype": { - "oid": 18, - "dataType": "char" - }, - "defaclrole": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "defaclrole", + "defaclnamespace", + "defaclobjtype", + "defaclacl" + ], + "columns": { + "defaclacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "defaclnamespace": { + "oid": 26, + "dataType": "oid" + }, + "defaclobjtype": { + "oid": 18, + "dataType": "char" + }, + "defaclrole": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_depend": { - "classid": { - "oid": 26, - "dataType": "oid" - }, - "deptype": { - "oid": 18, - "dataType": "char" - }, - "objid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 23, - "dataType": "int4" - }, - "refclassid": { - "oid": 26, - "dataType": "oid" - }, - "refobjid": { - "oid": 26, - "dataType": "oid" - }, - "refobjsubid": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "classid", + "objid", + "objsubid", + "refclassid", + "refobjid", + "refobjsubid", + "deptype" + ], + "columns": { + "classid": { + "oid": 26, + "dataType": "oid" + }, + "deptype": { + "oid": 18, + "dataType": "char" + }, + "objid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 23, + "dataType": "int4" + }, + "refclassid": { + "oid": 26, + "dataType": "oid" + }, + "refobjid": { + "oid": 26, + "dataType": "oid" + }, + "refobjsubid": { + "oid": 23, + "dataType": "int4" + } } }, "pg_description": { - "classoid": { - "oid": 26, - "dataType": "oid" - }, - "description": { - "oid": 25, - "dataType": "text" - }, - "objoid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "objoid", + "classoid", + "objsubid", + "description" + ], + "columns": { + "classoid": { + "oid": 26, + "dataType": "oid" + }, + "description": { + "oid": 25, + "dataType": "text" + }, + "objoid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 23, + "dataType": "int4" + } } }, "pg_enum": { - "enumlabel": { - "oid": 19, - "dataType": "name" - }, - "enumsortorder": { - "oid": 700, - "dataType": "float4" - }, - "enumtypid": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "enumtypid", + "enumsortorder", + "enumlabel" + ], + "columns": { + "enumlabel": { + "oid": 19, + "dataType": "name" + }, + "enumsortorder": { + "oid": 700, + "dataType": "float4" + }, + "enumtypid": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_event_trigger": { - "evtenabled": { - "oid": 18, - "dataType": "char" - }, - "evtevent": { - "oid": 19, - "dataType": "name" - }, - "evtfoid": { - "oid": 26, - "dataType": "oid" - }, - "evtname": { - "oid": 19, - "dataType": "name" - }, - "evtowner": { - "oid": 26, - "dataType": "oid" - }, - "evttags": { - "oid": 1009, - "dataType": "_text" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "evtname", + "evtevent", + "evtowner", + "evtfoid", + "evtenabled", + "evttags" + ], + "columns": { + "evtenabled": { + "oid": 18, + "dataType": "char" + }, + "evtevent": { + "oid": 19, + "dataType": "name" + }, + "evtfoid": { + "oid": 26, + "dataType": "oid" + }, + "evtname": { + "oid": 19, + "dataType": "name" + }, + "evtowner": { + "oid": 26, + "dataType": "oid" + }, + "evttags": { + "oid": 1009, + "dataType": "_text" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_extension": { - "extcondition": { - "oid": 1009, - "dataType": "_text" - }, - "extconfig": { - "oid": 1028, - "dataType": "_oid" - }, - "extname": { - "oid": 19, - "dataType": "name" - }, - "extnamespace": { - "oid": 26, - "dataType": "oid" - }, - "extowner": { - "oid": 26, - "dataType": "oid" - }, - "extrelocatable": { - "oid": 16, - "dataType": "bool" - }, - "extversion": { - "oid": 25, - "dataType": "text" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "extname", + "extowner", + "extnamespace", + "extrelocatable", + "extversion", + "extconfig", + "extcondition" + ], + "columns": { + "extcondition": { + "oid": 1009, + "dataType": "_text" + }, + "extconfig": { + "oid": 1028, + "dataType": "_oid" + }, + "extname": { + "oid": 19, + "dataType": "name" + }, + "extnamespace": { + "oid": 26, + "dataType": "oid" + }, + "extowner": { + "oid": 26, + "dataType": "oid" + }, + "extrelocatable": { + "oid": 16, + "dataType": "bool" + }, + "extversion": { + "oid": 25, + "dataType": "text" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_file_settings": { - "applied": { - "oid": 16, - "dataType": "bool" - }, - "error": { - "oid": 25, - "dataType": "text" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "seqno": { - "oid": 23, - "dataType": "int4" - }, - "setting": { - "oid": 25, - "dataType": "text" - }, - "sourcefile": { - "oid": 25, - "dataType": "text" - }, - "sourceline": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "sourcefile", + "sourceline", + "seqno", + "name", + "setting", + "applied", + "error" + ], + "columns": { + "applied": { + "oid": 16, + "dataType": "bool" + }, + "error": { + "oid": 25, + "dataType": "text" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "seqno": { + "oid": 23, + "dataType": "int4" + }, + "setting": { + "oid": 25, + "dataType": "text" + }, + "sourcefile": { + "oid": 25, + "dataType": "text" + }, + "sourceline": { + "oid": 23, + "dataType": "int4" + } } }, "pg_foreign_data_wrapper": { - "fdwacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "fdwhandler": { - "oid": 26, - "dataType": "oid" - }, - "fdwname": { - "oid": 19, - "dataType": "name" - }, - "fdwoptions": { - "oid": 1009, - "dataType": "_text" - }, - "fdwowner": { - "oid": 26, - "dataType": "oid" - }, - "fdwvalidator": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "fdwname", + "fdwowner", + "fdwhandler", + "fdwvalidator", + "fdwacl", + "fdwoptions" + ], + "columns": { + "fdwacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "fdwhandler": { + "oid": 26, + "dataType": "oid" + }, + "fdwname": { + "oid": 19, + "dataType": "name" + }, + "fdwoptions": { + "oid": 1009, + "dataType": "_text" + }, + "fdwowner": { + "oid": 26, + "dataType": "oid" + }, + "fdwvalidator": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_foreign_server": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "srvacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "srvfdw": { - "oid": 26, - "dataType": "oid" - }, - "srvname": { - "oid": 19, - "dataType": "name" - }, - "srvoptions": { - "oid": 1009, - "dataType": "_text" - }, - "srvowner": { - "oid": 26, - "dataType": "oid" - }, - "srvtype": { - "oid": 25, - "dataType": "text" - }, - "srvversion": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "oid", + "srvname", + "srvowner", + "srvfdw", + "srvtype", + "srvversion", + "srvacl", + "srvoptions" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "srvacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "srvfdw": { + "oid": 26, + "dataType": "oid" + }, + "srvname": { + "oid": 19, + "dataType": "name" + }, + "srvoptions": { + "oid": 1009, + "dataType": "_text" + }, + "srvowner": { + "oid": 26, + "dataType": "oid" + }, + "srvtype": { + "oid": 25, + "dataType": "text" + }, + "srvversion": { + "oid": 25, + "dataType": "text" + } } }, "pg_foreign_table": { - "ftoptions": { - "oid": 1009, - "dataType": "_text" - }, - "ftrelid": { - "oid": 26, - "dataType": "oid" - }, - "ftserver": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "ftrelid", + "ftserver", + "ftoptions" + ], + "columns": { + "ftoptions": { + "oid": 1009, + "dataType": "_text" + }, + "ftrelid": { + "oid": 26, + "dataType": "oid" + }, + "ftserver": { + "oid": 26, + "dataType": "oid" + } } }, "pg_group": { - "grolist": { - "oid": 1028, - "dataType": "_oid" - }, - "groname": { - "oid": 19, - "dataType": "name" - }, - "grosysid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "groname", + "grosysid", + "grolist" + ], + "columns": { + "grolist": { + "oid": 1028, + "dataType": "_oid" + }, + "groname": { + "oid": 19, + "dataType": "name" + }, + "grosysid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_hba_file_rules": { - "address": { - "oid": 25, - "dataType": "text" - }, - "auth_method": { - "oid": 25, - "dataType": "text" - }, - "database": { - "oid": 1009, - "dataType": "_text" - }, - "error": { - "oid": 25, - "dataType": "text" - }, - "line_number": { - "oid": 23, - "dataType": "int4" - }, - "netmask": { - "oid": 25, - "dataType": "text" - }, - "options": { - "oid": 1009, - "dataType": "_text" - }, - "type": { - "oid": 25, - "dataType": "text" - }, - "user_name": { - "oid": 1009, - "dataType": "_text" + "columnNames": [ + "line_number", + "type", + "database", + "user_name", + "address", + "netmask", + "auth_method", + "options", + "error" + ], + "columns": { + "address": { + "oid": 25, + "dataType": "text" + }, + "auth_method": { + "oid": 25, + "dataType": "text" + }, + "database": { + "oid": 1009, + "dataType": "_text" + }, + "error": { + "oid": 25, + "dataType": "text" + }, + "line_number": { + "oid": 23, + "dataType": "int4" + }, + "netmask": { + "oid": 25, + "dataType": "text" + }, + "options": { + "oid": 1009, + "dataType": "_text" + }, + "type": { + "oid": 25, + "dataType": "text" + }, + "user_name": { + "oid": 1009, + "dataType": "_text" + } } }, "pg_index": { - "indcheckxmin": { - "oid": 16, - "dataType": "bool" - }, - "indclass": { - "oid": 30, - "dataType": "oidvector" - }, - "indcollation": { - "oid": 30, - "dataType": "oidvector" - }, - "indexprs": { - "oid": 25, - "dataType": "TEXT" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indimmediate": { - "oid": 16, - "dataType": "bool" - }, - "indisclustered": { - "oid": 16, - "dataType": "bool" - }, - "indisexclusion": { - "oid": 16, - "dataType": "bool" - }, - "indislive": { - "oid": 16, - "dataType": "bool" - }, - "indisprimary": { - "oid": 16, - "dataType": "bool" - }, - "indisready": { - "oid": 16, - "dataType": "bool" - }, - "indisreplident": { - "oid": 16, - "dataType": "bool" - }, - "indisunique": { - "oid": 16, - "dataType": "bool" - }, - "indisvalid": { - "oid": 16, - "dataType": "bool" - }, - "indkey": { - "oid": 22, - "dataType": "int2vector" - }, - "indnatts": { - "oid": 21, - "dataType": "int2" - }, - "indnkeyatts": { - "oid": 21, - "dataType": "int2" - }, - "indoption": { - "oid": 22, - "dataType": "int2vector" - }, - "indpred": { - "oid": 25, - "dataType": "TEXT" - }, - "indrelid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "indexrelid", + "indrelid", + "indnatts", + "indnkeyatts", + "indisunique", + "indisprimary", + "indisexclusion", + "indimmediate", + "indisclustered", + "indisvalid", + "indcheckxmin", + "indisready", + "indislive", + "indisreplident", + "indkey", + "indcollation", + "indclass", + "indoption", + "indexprs", + "indpred" + ], + "columns": { + "indcheckxmin": { + "oid": 16, + "dataType": "bool" + }, + "indclass": { + "oid": 30, + "dataType": "oidvector" + }, + "indcollation": { + "oid": 30, + "dataType": "oidvector" + }, + "indexprs": { + "oid": 25, + "dataType": "TEXT" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indimmediate": { + "oid": 16, + "dataType": "bool" + }, + "indisclustered": { + "oid": 16, + "dataType": "bool" + }, + "indisexclusion": { + "oid": 16, + "dataType": "bool" + }, + "indislive": { + "oid": 16, + "dataType": "bool" + }, + "indisprimary": { + "oid": 16, + "dataType": "bool" + }, + "indisready": { + "oid": 16, + "dataType": "bool" + }, + "indisreplident": { + "oid": 16, + "dataType": "bool" + }, + "indisunique": { + "oid": 16, + "dataType": "bool" + }, + "indisvalid": { + "oid": 16, + "dataType": "bool" + }, + "indkey": { + "oid": 22, + "dataType": "int2vector" + }, + "indnatts": { + "oid": 21, + "dataType": "int2" + }, + "indnkeyatts": { + "oid": 21, + "dataType": "int2" + }, + "indoption": { + "oid": 22, + "dataType": "int2vector" + }, + "indpred": { + "oid": 25, + "dataType": "TEXT" + }, + "indrelid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_indexes": { - "indexdef": { - "oid": 25, - "dataType": "text" - }, - "indexname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" - }, - "tablespace": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "tablename", + "indexname", + "tablespace", + "indexdef" + ], + "columns": { + "indexdef": { + "oid": 25, + "dataType": "text" + }, + "indexname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + }, + "tablespace": { + "oid": 19, + "dataType": "name" + } } }, "pg_inherits": { - "inhparent": { - "oid": 26, - "dataType": "oid" - }, - "inhrelid": { - "oid": 26, - "dataType": "oid" - }, - "inhseqno": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "inhrelid", + "inhparent", + "inhseqno" + ], + "columns": { + "inhparent": { + "oid": 26, + "dataType": "oid" + }, + "inhrelid": { + "oid": 26, + "dataType": "oid" + }, + "inhseqno": { + "oid": 23, + "dataType": "int4" + } } }, "pg_init_privs": { - "classoid": { - "oid": 26, - "dataType": "oid" - }, - "initprivs": { - "oid": 1009, - "dataType": "_TEXT" - }, - "objoid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 23, - "dataType": "int4" - }, - "privtype": { - "oid": 18, - "dataType": "char" + "columnNames": [ + "objoid", + "classoid", + "objsubid", + "privtype", + "initprivs" + ], + "columns": { + "classoid": { + "oid": 26, + "dataType": "oid" + }, + "initprivs": { + "oid": 1009, + "dataType": "_TEXT" + }, + "objoid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 23, + "dataType": "int4" + }, + "privtype": { + "oid": 18, + "dataType": "char" + } } }, "pg_language": { - "lanacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "laninline": { - "oid": 26, - "dataType": "oid" - }, - "lanispl": { - "oid": 16, - "dataType": "bool" - }, - "lanname": { - "oid": 19, - "dataType": "name" - }, - "lanowner": { - "oid": 26, - "dataType": "oid" - }, - "lanplcallfoid": { - "oid": 26, - "dataType": "oid" - }, - "lanpltrusted": { - "oid": 16, - "dataType": "bool" - }, - "lanvalidator": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "lanname", + "lanowner", + "lanispl", + "lanpltrusted", + "lanplcallfoid", + "laninline", + "lanvalidator", + "lanacl" + ], + "columns": { + "lanacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "laninline": { + "oid": 26, + "dataType": "oid" + }, + "lanispl": { + "oid": 16, + "dataType": "bool" + }, + "lanname": { + "oid": 19, + "dataType": "name" + }, + "lanowner": { + "oid": 26, + "dataType": "oid" + }, + "lanplcallfoid": { + "oid": 26, + "dataType": "oid" + }, + "lanpltrusted": { + "oid": 16, + "dataType": "bool" + }, + "lanvalidator": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_largeobject": { - "data": { - "oid": 17, - "dataType": "bytea" - }, - "loid": { - "oid": 26, - "dataType": "oid" - }, - "pageno": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "loid", + "pageno", + "data" + ], + "columns": { + "data": { + "oid": 17, + "dataType": "bytea" + }, + "loid": { + "oid": 26, + "dataType": "oid" + }, + "pageno": { + "oid": 23, + "dataType": "int4" + } } }, "pg_largeobject_metadata": { - "lomacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "lomowner": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "lomowner", + "lomacl" + ], + "columns": { + "lomacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "lomowner": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_locks": { - "classid": { - "oid": 26, - "dataType": "oid" - }, - "database": { - "oid": 26, - "dataType": "oid" - }, - "fastpath": { - "oid": 16, - "dataType": "bool" - }, - "granted": { - "oid": 16, - "dataType": "bool" - }, - "locktype": { - "oid": 25, - "dataType": "text" - }, - "mode": { - "oid": 25, - "dataType": "text" - }, - "objid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 21, - "dataType": "int2" - }, - "page": { - "oid": 23, - "dataType": "int4" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "relation": { - "oid": 26, - "dataType": "oid" - }, - "transactionid": { - "oid": 20, - "dataType": "INT8" - }, - "tuple": { - "oid": 21, - "dataType": "int2" - }, - "virtualtransaction": { - "oid": 25, - "dataType": "text" - }, - "virtualxid": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "locktype", + "database", + "relation", + "page", + "tuple", + "virtualxid", + "transactionid", + "classid", + "objid", + "objsubid", + "virtualtransaction", + "pid", + "mode", + "granted", + "fastpath" + ], + "columns": { + "classid": { + "oid": 26, + "dataType": "oid" + }, + "database": { + "oid": 26, + "dataType": "oid" + }, + "fastpath": { + "oid": 16, + "dataType": "bool" + }, + "granted": { + "oid": 16, + "dataType": "bool" + }, + "locktype": { + "oid": 25, + "dataType": "text" + }, + "mode": { + "oid": 25, + "dataType": "text" + }, + "objid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 21, + "dataType": "int2" + }, + "page": { + "oid": 23, + "dataType": "int4" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "relation": { + "oid": 26, + "dataType": "oid" + }, + "transactionid": { + "oid": 20, + "dataType": "INT8" + }, + "tuple": { + "oid": 21, + "dataType": "int2" + }, + "virtualtransaction": { + "oid": 25, + "dataType": "text" + }, + "virtualxid": { + "oid": 25, + "dataType": "text" + } } }, "pg_matviews": { - "definition": { - "oid": 25, - "dataType": "text" - }, - "hasindexes": { - "oid": 16, - "dataType": "bool" - }, - "ispopulated": { - "oid": 16, - "dataType": "bool" - }, - "matviewname": { - "oid": 19, - "dataType": "name" - }, - "matviewowner": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablespace": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "matviewname", + "matviewowner", + "tablespace", + "hasindexes", + "ispopulated", + "definition" + ], + "columns": { + "definition": { + "oid": 25, + "dataType": "text" + }, + "hasindexes": { + "oid": 16, + "dataType": "bool" + }, + "ispopulated": { + "oid": 16, + "dataType": "bool" + }, + "matviewname": { + "oid": 19, + "dataType": "name" + }, + "matviewowner": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablespace": { + "oid": 19, + "dataType": "name" + } } }, "pg_namespace": { - "nspacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "nspname": { - "oid": 19, - "dataType": "name" - }, - "nspowner": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "nspname", + "nspowner", + "nspacl" + ], + "columns": { + "nspacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "nspname": { + "oid": 19, + "dataType": "name" + }, + "nspowner": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_opclass": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "opcdefault": { - "oid": 16, - "dataType": "bool" - }, - "opcfamily": { - "oid": 26, - "dataType": "oid" - }, - "opcintype": { - "oid": 26, - "dataType": "oid" - }, - "opckeytype": { - "oid": 26, - "dataType": "oid" - }, - "opcmethod": { - "oid": 26, - "dataType": "oid" - }, - "opcname": { - "oid": 19, - "dataType": "name" - }, - "opcnamespace": { - "oid": 26, - "dataType": "oid" - }, - "opcowner": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "opcmethod", + "opcname", + "opcnamespace", + "opcowner", + "opcfamily", + "opcintype", + "opcdefault", + "opckeytype" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "opcdefault": { + "oid": 16, + "dataType": "bool" + }, + "opcfamily": { + "oid": 26, + "dataType": "oid" + }, + "opcintype": { + "oid": 26, + "dataType": "oid" + }, + "opckeytype": { + "oid": 26, + "dataType": "oid" + }, + "opcmethod": { + "oid": 26, + "dataType": "oid" + }, + "opcname": { + "oid": 19, + "dataType": "name" + }, + "opcnamespace": { + "oid": 26, + "dataType": "oid" + }, + "opcowner": { + "oid": 26, + "dataType": "oid" + } } }, "pg_operator": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "oprcanhash": { - "oid": 16, - "dataType": "bool" - }, - "oprcanmerge": { - "oid": 16, - "dataType": "bool" - }, - "oprcode": { - "oid": 24, - "dataType": "regproc" - }, - "oprcom": { - "oid": 26, - "dataType": "oid" - }, - "oprjoin": { - "oid": 24, - "dataType": "regproc" - }, - "oprkind": { - "oid": 18, - "dataType": "char" - }, - "oprleft": { - "oid": 26, - "dataType": "oid" - }, - "oprname": { - "oid": 19, - "dataType": "name" - }, - "oprnamespace": { - "oid": 26, - "dataType": "oid" - }, - "oprnegate": { - "oid": 26, - "dataType": "oid" - }, - "oprowner": { - "oid": 26, - "dataType": "oid" - }, - "oprrest": { - "oid": 24, - "dataType": "regproc" - }, - "oprresult": { - "oid": 26, - "dataType": "oid" - }, - "oprright": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "oprname", + "oprnamespace", + "oprowner", + "oprkind", + "oprcanmerge", + "oprcanhash", + "oprleft", + "oprright", + "oprresult", + "oprcom", + "oprnegate", + "oprcode", + "oprrest", + "oprjoin" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "oprcanhash": { + "oid": 16, + "dataType": "bool" + }, + "oprcanmerge": { + "oid": 16, + "dataType": "bool" + }, + "oprcode": { + "oid": 24, + "dataType": "regproc" + }, + "oprcom": { + "oid": 26, + "dataType": "oid" + }, + "oprjoin": { + "oid": 24, + "dataType": "regproc" + }, + "oprkind": { + "oid": 18, + "dataType": "char" + }, + "oprleft": { + "oid": 26, + "dataType": "oid" + }, + "oprname": { + "oid": 19, + "dataType": "name" + }, + "oprnamespace": { + "oid": 26, + "dataType": "oid" + }, + "oprnegate": { + "oid": 26, + "dataType": "oid" + }, + "oprowner": { + "oid": 26, + "dataType": "oid" + }, + "oprrest": { + "oid": 24, + "dataType": "regproc" + }, + "oprresult": { + "oid": 26, + "dataType": "oid" + }, + "oprright": { + "oid": 26, + "dataType": "oid" + } } }, "pg_opfamily": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "opfmethod": { - "oid": 26, - "dataType": "oid" - }, - "opfname": { - "oid": 19, - "dataType": "name" - }, - "opfnamespace": { - "oid": 26, - "dataType": "oid" - }, - "opfowner": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "opfmethod", + "opfname", + "opfnamespace", + "opfowner" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "opfmethod": { + "oid": 26, + "dataType": "oid" + }, + "opfname": { + "oid": 19, + "dataType": "name" + }, + "opfnamespace": { + "oid": 26, + "dataType": "oid" + }, + "opfowner": { + "oid": 26, + "dataType": "oid" + } } }, "pg_partitioned_table": { - "partattrs": { - "oid": 22, - "dataType": "int2vector" - }, - "partclass": { - "oid": 30, - "dataType": "oidvector" - }, - "partcollation": { - "oid": 30, - "dataType": "oidvector" - }, - "partdefid": { - "oid": 26, - "dataType": "oid" - }, - "partexprs": { - "oid": 25, - "dataType": "TEXT" - }, - "partnatts": { - "oid": 21, - "dataType": "int2" - }, - "partrelid": { - "oid": 26, - "dataType": "oid" - }, - "partstrat": { - "oid": 18, - "dataType": "char" + "columnNames": [ + "partrelid", + "partstrat", + "partnatts", + "partdefid", + "partattrs", + "partclass", + "partcollation", + "partexprs" + ], + "columns": { + "partattrs": { + "oid": 22, + "dataType": "int2vector" + }, + "partclass": { + "oid": 30, + "dataType": "oidvector" + }, + "partcollation": { + "oid": 30, + "dataType": "oidvector" + }, + "partdefid": { + "oid": 26, + "dataType": "oid" + }, + "partexprs": { + "oid": 25, + "dataType": "TEXT" + }, + "partnatts": { + "oid": 21, + "dataType": "int2" + }, + "partrelid": { + "oid": 26, + "dataType": "oid" + }, + "partstrat": { + "oid": 18, + "dataType": "char" + } } }, "pg_policies": { - "cmd": { - "oid": 25, - "dataType": "text" - }, - "permissive": { - "oid": 25, - "dataType": "text" - }, - "policyname": { - "oid": 19, - "dataType": "name" - }, - "qual": { - "oid": 25, - "dataType": "text" - }, - "roles": { - "oid": 1003, - "dataType": "_name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" - }, - "with_check": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "schemaname", + "tablename", + "policyname", + "permissive", + "roles", + "cmd", + "qual", + "with_check" + ], + "columns": { + "cmd": { + "oid": 25, + "dataType": "text" + }, + "permissive": { + "oid": 25, + "dataType": "text" + }, + "policyname": { + "oid": 19, + "dataType": "name" + }, + "qual": { + "oid": 25, + "dataType": "text" + }, + "roles": { + "oid": 1003, + "dataType": "_name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + }, + "with_check": { + "oid": 25, + "dataType": "text" + } } }, "pg_policy": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "polcmd": { - "oid": 18, - "dataType": "char" - }, - "polname": { - "oid": 19, - "dataType": "name" - }, - "polpermissive": { - "oid": 16, - "dataType": "bool" - }, - "polqual": { - "oid": 25, - "dataType": "TEXT" - }, - "polrelid": { - "oid": 26, - "dataType": "oid" - }, - "polroles": { - "oid": 1028, - "dataType": "_oid" - }, - "polwithcheck": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "oid", + "polname", + "polrelid", + "polcmd", + "polpermissive", + "polroles", + "polqual", + "polwithcheck" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "polcmd": { + "oid": 18, + "dataType": "char" + }, + "polname": { + "oid": 19, + "dataType": "name" + }, + "polpermissive": { + "oid": 16, + "dataType": "bool" + }, + "polqual": { + "oid": 25, + "dataType": "TEXT" + }, + "polrelid": { + "oid": 26, + "dataType": "oid" + }, + "polroles": { + "oid": 1028, + "dataType": "_oid" + }, + "polwithcheck": { + "oid": 25, + "dataType": "TEXT" + } } }, "pg_prepared_statements": { - "from_sql": { - "oid": 16, - "dataType": "bool" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "parameter_types": { - "oid": 2211, - "dataType": "_regtype" - }, - "prepare_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "statement": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "name", + "statement", + "prepare_time", + "parameter_types", + "from_sql" + ], + "columns": { + "from_sql": { + "oid": 16, + "dataType": "bool" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "parameter_types": { + "oid": 2211, + "dataType": "_regtype" + }, + "prepare_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "statement": { + "oid": 25, + "dataType": "text" + } } }, "pg_prepared_xacts": { - "database": { - "oid": 19, - "dataType": "name" - }, - "gid": { - "oid": 25, - "dataType": "text" - }, - "owner": { - "oid": 19, - "dataType": "name" - }, - "prepared": { - "oid": 1184, - "dataType": "timestamptz" - }, - "transaction": { - "oid": 20, - "dataType": "INT8" + "columnNames": [ + "transaction", + "gid", + "prepared", + "owner", + "database" + ], + "columns": { + "database": { + "oid": 19, + "dataType": "name" + }, + "gid": { + "oid": 25, + "dataType": "text" + }, + "owner": { + "oid": 19, + "dataType": "name" + }, + "prepared": { + "oid": 1184, + "dataType": "timestamptz" + }, + "transaction": { + "oid": 20, + "dataType": "INT8" + } } }, "pg_proc": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "proacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "proallargtypes": { - "oid": 1028, - "dataType": "_oid" - }, - "proargdefaults": { - "oid": 25, - "dataType": "TEXT" - }, - "proargmodes": { - "oid": 1002, - "dataType": "_char" - }, - "proargnames": { - "oid": 1009, - "dataType": "_text" - }, - "proargtypes": { - "oid": 30, - "dataType": "oidvector" - }, - "probin": { - "oid": 25, - "dataType": "text" - }, - "proconfig": { - "oid": 1009, - "dataType": "_text" - }, - "procost": { - "oid": 700, - "dataType": "float4" - }, - "proisstrict": { - "oid": 16, - "dataType": "bool" - }, - "prokind": { - "oid": 18, - "dataType": "char" - }, - "prolang": { - "oid": 26, - "dataType": "oid" - }, - "proleakproof": { - "oid": 16, - "dataType": "bool" - }, - "proname": { - "oid": 19, - "dataType": "name" - }, - "pronamespace": { - "oid": 26, - "dataType": "oid" - }, - "pronargdefaults": { - "oid": 21, - "dataType": "int2" - }, - "pronargs": { - "oid": 21, - "dataType": "int2" - }, - "proowner": { - "oid": 26, - "dataType": "oid" - }, - "proparallel": { - "oid": 18, - "dataType": "char" - }, - "proretset": { - "oid": 16, - "dataType": "bool" - }, - "prorettype": { - "oid": 26, - "dataType": "oid" - }, - "prorows": { - "oid": 700, - "dataType": "float4" - }, - "prosecdef": { - "oid": 16, - "dataType": "bool" - }, - "prosrc": { - "oid": 25, - "dataType": "text" - }, - "prosupport": { - "oid": 24, - "dataType": "regproc" - }, - "protrftypes": { - "oid": 1028, - "dataType": "_oid" - }, - "provariadic": { - "oid": 26, - "dataType": "oid" - }, - "provolatile": { - "oid": 18, - "dataType": "char" + "columnNames": [ + "oid", + "proname", + "pronamespace", + "proowner", + "prolang", + "procost", + "prorows", + "provariadic", + "prosupport", + "prokind", + "prosecdef", + "proleakproof", + "proisstrict", + "proretset", + "provolatile", + "proparallel", + "pronargs", + "pronargdefaults", + "prorettype", + "proargtypes", + "proallargtypes", + "proargmodes", + "proargnames", + "proargdefaults", + "protrftypes", + "prosrc", + "probin", + "proconfig", + "proacl" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "proacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "proallargtypes": { + "oid": 1028, + "dataType": "_oid" + }, + "proargdefaults": { + "oid": 25, + "dataType": "TEXT" + }, + "proargmodes": { + "oid": 1002, + "dataType": "_char" + }, + "proargnames": { + "oid": 1009, + "dataType": "_text" + }, + "proargtypes": { + "oid": 30, + "dataType": "oidvector" + }, + "probin": { + "oid": 25, + "dataType": "text" + }, + "proconfig": { + "oid": 1009, + "dataType": "_text" + }, + "procost": { + "oid": 700, + "dataType": "float4" + }, + "proisstrict": { + "oid": 16, + "dataType": "bool" + }, + "prokind": { + "oid": 18, + "dataType": "char" + }, + "prolang": { + "oid": 26, + "dataType": "oid" + }, + "proleakproof": { + "oid": 16, + "dataType": "bool" + }, + "proname": { + "oid": 19, + "dataType": "name" + }, + "pronamespace": { + "oid": 26, + "dataType": "oid" + }, + "pronargdefaults": { + "oid": 21, + "dataType": "int2" + }, + "pronargs": { + "oid": 21, + "dataType": "int2" + }, + "proowner": { + "oid": 26, + "dataType": "oid" + }, + "proparallel": { + "oid": 18, + "dataType": "char" + }, + "proretset": { + "oid": 16, + "dataType": "bool" + }, + "prorettype": { + "oid": 26, + "dataType": "oid" + }, + "prorows": { + "oid": 700, + "dataType": "float4" + }, + "prosecdef": { + "oid": 16, + "dataType": "bool" + }, + "prosrc": { + "oid": 25, + "dataType": "text" + }, + "prosupport": { + "oid": 24, + "dataType": "regproc" + }, + "protrftypes": { + "oid": 1028, + "dataType": "_oid" + }, + "provariadic": { + "oid": 26, + "dataType": "oid" + }, + "provolatile": { + "oid": 18, + "dataType": "char" + } } }, "pg_publication": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "puballtables": { - "oid": 16, - "dataType": "bool" - }, - "pubdelete": { - "oid": 16, - "dataType": "bool" - }, - "pubinsert": { - "oid": 16, - "dataType": "bool" - }, - "pubname": { - "oid": 19, - "dataType": "name" - }, - "pubowner": { - "oid": 26, - "dataType": "oid" - }, - "pubtruncate": { - "oid": 16, - "dataType": "bool" - }, - "pubupdate": { - "oid": 16, - "dataType": "bool" - }, - "pubviaroot": { - "oid": 16, - "dataType": "bool" + "columnNames": [ + "oid", + "pubname", + "pubowner", + "puballtables", + "pubinsert", + "pubupdate", + "pubdelete", + "pubtruncate", + "pubviaroot" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "puballtables": { + "oid": 16, + "dataType": "bool" + }, + "pubdelete": { + "oid": 16, + "dataType": "bool" + }, + "pubinsert": { + "oid": 16, + "dataType": "bool" + }, + "pubname": { + "oid": 19, + "dataType": "name" + }, + "pubowner": { + "oid": 26, + "dataType": "oid" + }, + "pubtruncate": { + "oid": 16, + "dataType": "bool" + }, + "pubupdate": { + "oid": 16, + "dataType": "bool" + }, + "pubviaroot": { + "oid": 16, + "dataType": "bool" + } } }, "pg_publication_rel": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "prpubid": { - "oid": 26, - "dataType": "oid" - }, - "prrelid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "prpubid", + "prrelid" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "prpubid": { + "oid": 26, + "dataType": "oid" + }, + "prrelid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_publication_tables": { - "pubname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "pubname", + "schemaname", + "tablename" + ], + "columns": { + "pubname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + } } }, "pg_range": { - "rngcanonical": { - "oid": 24, - "dataType": "regproc" - }, - "rngcollation": { - "oid": 26, - "dataType": "oid" - }, - "rngsubdiff": { - "oid": 24, - "dataType": "regproc" - }, - "rngsubopc": { - "oid": 26, - "dataType": "oid" - }, - "rngsubtype": { - "oid": 26, - "dataType": "oid" - }, - "rngtypid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "rngtypid", + "rngsubtype", + "rngcollation", + "rngsubopc", + "rngcanonical", + "rngsubdiff" + ], + "columns": { + "rngcanonical": { + "oid": 24, + "dataType": "regproc" + }, + "rngcollation": { + "oid": 26, + "dataType": "oid" + }, + "rngsubdiff": { + "oid": 24, + "dataType": "regproc" + }, + "rngsubopc": { + "oid": 26, + "dataType": "oid" + }, + "rngsubtype": { + "oid": 26, + "dataType": "oid" + }, + "rngtypid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_replication_origin": { - "roident": { - "oid": 26, - "dataType": "oid" - }, - "roname": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "roident", + "roname" + ], + "columns": { + "roident": { + "oid": 26, + "dataType": "oid" + }, + "roname": { + "oid": 25, + "dataType": "text" + } } }, "pg_replication_origin_status": { - "external_id": { - "oid": 25, - "dataType": "text" - }, - "local_id": { - "oid": 26, - "dataType": "oid" - }, - "local_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "remote_lsn": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "local_id", + "external_id", + "remote_lsn", + "local_lsn" + ], + "columns": { + "external_id": { + "oid": 25, + "dataType": "text" + }, + "local_id": { + "oid": 26, + "dataType": "oid" + }, + "local_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "remote_lsn": { + "oid": 25, + "dataType": "TEXT" + } } }, "pg_replication_slots": { - "active": { - "oid": 16, - "dataType": "bool" - }, - "active_pid": { - "oid": 23, - "dataType": "int4" - }, - "catalog_xmin": { - "oid": 20, - "dataType": "INT8" - }, - "confirmed_flush_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "database": { - "oid": 19, - "dataType": "name" - }, - "datoid": { - "oid": 26, - "dataType": "oid" - }, - "plugin": { - "oid": 19, - "dataType": "name" - }, - "restart_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "safe_wal_size": { - "oid": 20, - "dataType": "int8" - }, - "slot_name": { - "oid": 19, - "dataType": "name" - }, - "slot_type": { - "oid": 25, - "dataType": "text" - }, - "temporary": { - "oid": 16, - "dataType": "bool" - }, - "wal_status": { - "oid": 25, - "dataType": "text" - }, - "xmin": { - "oid": 20, - "dataType": "INT8" + "columnNames": [ + "slot_name", + "plugin", + "slot_type", + "datoid", + "database", + "temporary", + "active", + "active_pid", + "xmin", + "catalog_xmin", + "restart_lsn", + "confirmed_flush_lsn", + "wal_status", + "safe_wal_size" + ], + "columns": { + "active": { + "oid": 16, + "dataType": "bool" + }, + "active_pid": { + "oid": 23, + "dataType": "int4" + }, + "catalog_xmin": { + "oid": 20, + "dataType": "INT8" + }, + "confirmed_flush_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "database": { + "oid": 19, + "dataType": "name" + }, + "datoid": { + "oid": 26, + "dataType": "oid" + }, + "plugin": { + "oid": 19, + "dataType": "name" + }, + "restart_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "safe_wal_size": { + "oid": 20, + "dataType": "int8" + }, + "slot_name": { + "oid": 19, + "dataType": "name" + }, + "slot_type": { + "oid": 25, + "dataType": "text" + }, + "temporary": { + "oid": 16, + "dataType": "bool" + }, + "wal_status": { + "oid": 25, + "dataType": "text" + }, + "xmin": { + "oid": 20, + "dataType": "INT8" + } } }, "pg_rewrite": { - "ev_action": { - "oid": 25, - "dataType": "TEXT" - }, - "ev_class": { - "oid": 26, - "dataType": "oid" - }, - "ev_enabled": { - "oid": 18, - "dataType": "char" - }, - "ev_qual": { - "oid": 25, - "dataType": "TEXT" - }, - "ev_type": { - "oid": 18, - "dataType": "char" - }, - "is_instead": { - "oid": 16, - "dataType": "bool" - }, - "oid": { - "oid": 26, - "dataType": "oid" - }, - "rulename": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "oid", + "rulename", + "ev_class", + "ev_type", + "ev_enabled", + "is_instead", + "ev_qual", + "ev_action" + ], + "columns": { + "ev_action": { + "oid": 25, + "dataType": "TEXT" + }, + "ev_class": { + "oid": 26, + "dataType": "oid" + }, + "ev_enabled": { + "oid": 18, + "dataType": "char" + }, + "ev_qual": { + "oid": 25, + "dataType": "TEXT" + }, + "ev_type": { + "oid": 18, + "dataType": "char" + }, + "is_instead": { + "oid": 16, + "dataType": "bool" + }, + "oid": { + "oid": 26, + "dataType": "oid" + }, + "rulename": { + "oid": 19, + "dataType": "name" + } } }, "pg_roles": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "rolbypassrls": { - "oid": 16, - "dataType": "bool" - }, - "rolcanlogin": { - "oid": 16, - "dataType": "bool" - }, - "rolconfig": { - "oid": 1009, - "dataType": "_text" - }, - "rolconnlimit": { - "oid": 23, - "dataType": "int4" - }, - "rolcreatedb": { - "oid": 16, - "dataType": "bool" - }, - "rolcreaterole": { - "oid": 16, - "dataType": "bool" - }, - "rolinherit": { - "oid": 16, - "dataType": "bool" - }, - "rolname": { - "oid": 19, - "dataType": "name" - }, - "rolpassword": { - "oid": 25, - "dataType": "text" - }, - "rolreplication": { - "oid": 16, - "dataType": "bool" - }, - "rolsuper": { - "oid": 16, - "dataType": "bool" - }, - "rolvaliduntil": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "rolname", + "rolsuper", + "rolinherit", + "rolcreaterole", + "rolcreatedb", + "rolcanlogin", + "rolreplication", + "rolconnlimit", + "rolpassword", + "rolvaliduntil", + "rolbypassrls", + "rolconfig", + "oid" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "rolbypassrls": { + "oid": 16, + "dataType": "bool" + }, + "rolcanlogin": { + "oid": 16, + "dataType": "bool" + }, + "rolconfig": { + "oid": 1009, + "dataType": "_text" + }, + "rolconnlimit": { + "oid": 23, + "dataType": "int4" + }, + "rolcreatedb": { + "oid": 16, + "dataType": "bool" + }, + "rolcreaterole": { + "oid": 16, + "dataType": "bool" + }, + "rolinherit": { + "oid": 16, + "dataType": "bool" + }, + "rolname": { + "oid": 19, + "dataType": "name" + }, + "rolpassword": { + "oid": 25, + "dataType": "text" + }, + "rolreplication": { + "oid": 16, + "dataType": "bool" + }, + "rolsuper": { + "oid": 16, + "dataType": "bool" + }, + "rolvaliduntil": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_rules": { - "definition": { - "oid": 25, - "dataType": "text" - }, - "rulename": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "tablename", + "rulename", + "definition" + ], + "columns": { + "definition": { + "oid": 25, + "dataType": "text" + }, + "rulename": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + } } }, "pg_seclabel": { - "classoid": { - "oid": 26, - "dataType": "oid" - }, - "label": { - "oid": 25, - "dataType": "text" - }, - "objoid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 23, - "dataType": "int4" - }, - "provider": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "objoid", + "classoid", + "objsubid", + "provider", + "label" + ], + "columns": { + "classoid": { + "oid": 26, + "dataType": "oid" + }, + "label": { + "oid": 25, + "dataType": "text" + }, + "objoid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 23, + "dataType": "int4" + }, + "provider": { + "oid": 25, + "dataType": "text" + } } }, "pg_seclabels": { - "classoid": { - "oid": 26, - "dataType": "oid" - }, - "label": { - "oid": 25, - "dataType": "text" - }, - "objname": { - "oid": 25, - "dataType": "text" - }, - "objnamespace": { - "oid": 26, - "dataType": "oid" - }, - "objoid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 23, - "dataType": "int4" - }, - "objtype": { - "oid": 25, - "dataType": "text" - }, - "provider": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "objoid", + "classoid", + "objsubid", + "objtype", + "objnamespace", + "objname", + "provider", + "label" + ], + "columns": { + "classoid": { + "oid": 26, + "dataType": "oid" + }, + "label": { + "oid": 25, + "dataType": "text" + }, + "objname": { + "oid": 25, + "dataType": "text" + }, + "objnamespace": { + "oid": 26, + "dataType": "oid" + }, + "objoid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 23, + "dataType": "int4" + }, + "objtype": { + "oid": 25, + "dataType": "text" + }, + "provider": { + "oid": 25, + "dataType": "text" + } } }, "pg_sequence": { - "seqcache": { - "oid": 20, - "dataType": "int8" - }, - "seqcycle": { - "oid": 16, - "dataType": "bool" - }, - "seqincrement": { - "oid": 20, - "dataType": "int8" - }, - "seqmax": { - "oid": 20, - "dataType": "int8" - }, - "seqmin": { - "oid": 20, - "dataType": "int8" - }, - "seqrelid": { - "oid": 26, - "dataType": "oid" - }, - "seqstart": { - "oid": 20, - "dataType": "int8" - }, - "seqtypid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "seqrelid", + "seqtypid", + "seqstart", + "seqincrement", + "seqmax", + "seqmin", + "seqcache", + "seqcycle" + ], + "columns": { + "seqcache": { + "oid": 20, + "dataType": "int8" + }, + "seqcycle": { + "oid": 16, + "dataType": "bool" + }, + "seqincrement": { + "oid": 20, + "dataType": "int8" + }, + "seqmax": { + "oid": 20, + "dataType": "int8" + }, + "seqmin": { + "oid": 20, + "dataType": "int8" + }, + "seqrelid": { + "oid": 26, + "dataType": "oid" + }, + "seqstart": { + "oid": 20, + "dataType": "int8" + }, + "seqtypid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_sequences": { - "cache_size": { - "oid": 20, - "dataType": "int8" - }, - "cycle": { - "oid": 16, - "dataType": "bool" - }, - "data_type": { - "oid": 2206, - "dataType": "regtype" - }, - "increment_by": { - "oid": 20, - "dataType": "int8" - }, - "last_value": { - "oid": 20, - "dataType": "int8" - }, - "max_value": { - "oid": 20, - "dataType": "int8" - }, - "min_value": { - "oid": 20, - "dataType": "int8" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "sequencename": { - "oid": 19, - "dataType": "name" - }, - "sequenceowner": { - "oid": 19, - "dataType": "name" - }, - "start_value": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "schemaname", + "sequencename", + "sequenceowner", + "data_type", + "start_value", + "min_value", + "max_value", + "increment_by", + "cycle", + "cache_size", + "last_value" + ], + "columns": { + "cache_size": { + "oid": 20, + "dataType": "int8" + }, + "cycle": { + "oid": 16, + "dataType": "bool" + }, + "data_type": { + "oid": 2206, + "dataType": "regtype" + }, + "increment_by": { + "oid": 20, + "dataType": "int8" + }, + "last_value": { + "oid": 20, + "dataType": "int8" + }, + "max_value": { + "oid": 20, + "dataType": "int8" + }, + "min_value": { + "oid": 20, + "dataType": "int8" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "sequencename": { + "oid": 19, + "dataType": "name" + }, + "sequenceowner": { + "oid": 19, + "dataType": "name" + }, + "start_value": { + "oid": 20, + "dataType": "int8" + } } }, "pg_settings": { - "boot_val": { - "oid": 25, - "dataType": "text" - }, - "category": { - "oid": 25, - "dataType": "text" - }, - "context": { - "oid": 25, - "dataType": "text" - }, - "enumvals": { - "oid": 1009, - "dataType": "_text" - }, - "extra_desc": { - "oid": 25, - "dataType": "text" - }, - "max_val": { - "oid": 25, - "dataType": "text" - }, - "min_val": { - "oid": 25, - "dataType": "text" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "pending_restart": { - "oid": 16, - "dataType": "bool" - }, - "reset_val": { - "oid": 25, - "dataType": "text" - }, - "setting": { - "oid": 25, - "dataType": "text" - }, - "short_desc": { - "oid": 25, - "dataType": "text" - }, - "source": { - "oid": 25, - "dataType": "text" - }, - "sourcefile": { - "oid": 25, - "dataType": "text" - }, - "sourceline": { - "oid": 23, - "dataType": "int4" - }, - "unit": { - "oid": 25, - "dataType": "text" - }, - "vartype": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "name", + "setting", + "unit", + "category", + "short_desc", + "extra_desc", + "context", + "vartype", + "source", + "min_val", + "max_val", + "enumvals", + "boot_val", + "reset_val", + "sourcefile", + "sourceline", + "pending_restart" + ], + "columns": { + "boot_val": { + "oid": 25, + "dataType": "text" + }, + "category": { + "oid": 25, + "dataType": "text" + }, + "context": { + "oid": 25, + "dataType": "text" + }, + "enumvals": { + "oid": 1009, + "dataType": "_text" + }, + "extra_desc": { + "oid": 25, + "dataType": "text" + }, + "max_val": { + "oid": 25, + "dataType": "text" + }, + "min_val": { + "oid": 25, + "dataType": "text" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "pending_restart": { + "oid": 16, + "dataType": "bool" + }, + "reset_val": { + "oid": 25, + "dataType": "text" + }, + "setting": { + "oid": 25, + "dataType": "text" + }, + "short_desc": { + "oid": 25, + "dataType": "text" + }, + "source": { + "oid": 25, + "dataType": "text" + }, + "sourcefile": { + "oid": 25, + "dataType": "text" + }, + "sourceline": { + "oid": 23, + "dataType": "int4" + }, + "unit": { + "oid": 25, + "dataType": "text" + }, + "vartype": { + "oid": 25, + "dataType": "text" + } } }, "pg_shadow": { - "passwd": { - "oid": 25, - "dataType": "text" - }, - "usebypassrls": { - "oid": 16, - "dataType": "bool" - }, - "useconfig": { - "oid": 1009, - "dataType": "_text" - }, - "usecreatedb": { - "oid": 16, - "dataType": "bool" - }, - "usename": { - "oid": 19, - "dataType": "name" - }, - "userepl": { - "oid": 16, - "dataType": "bool" - }, - "usesuper": { - "oid": 16, - "dataType": "bool" - }, - "usesysid": { - "oid": 26, - "dataType": "oid" - }, - "valuntil": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "usename", + "usesysid", + "usecreatedb", + "usesuper", + "userepl", + "usebypassrls", + "passwd", + "valuntil", + "useconfig" + ], + "columns": { + "passwd": { + "oid": 25, + "dataType": "text" + }, + "usebypassrls": { + "oid": 16, + "dataType": "bool" + }, + "useconfig": { + "oid": 1009, + "dataType": "_text" + }, + "usecreatedb": { + "oid": 16, + "dataType": "bool" + }, + "usename": { + "oid": 19, + "dataType": "name" + }, + "userepl": { + "oid": 16, + "dataType": "bool" + }, + "usesuper": { + "oid": 16, + "dataType": "bool" + }, + "usesysid": { + "oid": 26, + "dataType": "oid" + }, + "valuntil": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_shdepend": { - "classid": { - "oid": 26, - "dataType": "oid" - }, - "dbid": { - "oid": 26, - "dataType": "oid" - }, - "deptype": { - "oid": 18, - "dataType": "char" - }, - "objid": { - "oid": 26, - "dataType": "oid" - }, - "objsubid": { - "oid": 23, - "dataType": "int4" - }, - "refclassid": { - "oid": 26, - "dataType": "oid" - }, - "refobjid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "dbid", + "classid", + "objid", + "objsubid", + "refclassid", + "refobjid", + "deptype" + ], + "columns": { + "classid": { + "oid": 26, + "dataType": "oid" + }, + "dbid": { + "oid": 26, + "dataType": "oid" + }, + "deptype": { + "oid": 18, + "dataType": "char" + }, + "objid": { + "oid": 26, + "dataType": "oid" + }, + "objsubid": { + "oid": 23, + "dataType": "int4" + }, + "refclassid": { + "oid": 26, + "dataType": "oid" + }, + "refobjid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_shdescription": { - "classoid": { - "oid": 26, - "dataType": "oid" - }, - "description": { - "oid": 25, - "dataType": "text" - }, - "objoid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "objoid", + "classoid", + "description" + ], + "columns": { + "classoid": { + "oid": 26, + "dataType": "oid" + }, + "description": { + "oid": 25, + "dataType": "text" + }, + "objoid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_shmem_allocations": { - "allocated_size": { - "oid": 20, - "dataType": "int8" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "off": { - "oid": 20, - "dataType": "int8" - }, - "size": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "name", + "off", + "size", + "allocated_size" + ], + "columns": { + "allocated_size": { + "oid": 20, + "dataType": "int8" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "off": { + "oid": 20, + "dataType": "int8" + }, + "size": { + "oid": 20, + "dataType": "int8" + } } }, "pg_shseclabel": { - "classoid": { - "oid": 26, - "dataType": "oid" - }, - "label": { - "oid": 25, - "dataType": "text" - }, - "objoid": { - "oid": 26, - "dataType": "oid" - }, - "provider": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "objoid", + "classoid", + "provider", + "label" + ], + "columns": { + "classoid": { + "oid": 26, + "dataType": "oid" + }, + "label": { + "oid": 25, + "dataType": "text" + }, + "objoid": { + "oid": 26, + "dataType": "oid" + }, + "provider": { + "oid": 25, + "dataType": "text" + } } }, "pg_stat_activity": { - "application_name": { - "oid": 25, - "dataType": "text" - }, - "backend_start": { - "oid": 1184, - "dataType": "timestamptz" - }, - "backend_type": { - "oid": 25, - "dataType": "text" - }, - "backend_xid": { - "oid": 20, - "dataType": "INT8" - }, - "backend_xmin": { - "oid": 20, - "dataType": "INT8" - }, - "client_addr": { - "oid": 869, - "dataType": "inet" - }, - "client_hostname": { - "oid": 25, - "dataType": "text" - }, - "client_port": { - "oid": 23, - "dataType": "int4" - }, - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "leader_pid": { - "oid": 23, - "dataType": "int4" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "query": { - "oid": 25, - "dataType": "text" - }, - "query_start": { - "oid": 1184, - "dataType": "timestamptz" - }, - "state": { - "oid": 25, - "dataType": "text" - }, - "state_change": { - "oid": 1184, - "dataType": "timestamptz" - }, - "usename": { - "oid": 19, - "dataType": "name" - }, - "usesysid": { - "oid": 26, - "dataType": "oid" - }, - "wait_event": { - "oid": 25, - "dataType": "text" - }, - "wait_event_type": { - "oid": 25, - "dataType": "text" - }, - "xact_start": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "datid", + "datname", + "pid", + "leader_pid", + "usesysid", + "usename", + "application_name", + "client_addr", + "client_hostname", + "client_port", + "backend_start", + "xact_start", + "query_start", + "state_change", + "wait_event_type", + "wait_event", + "state", + "backend_xid", + "backend_xmin", + "query", + "backend_type" + ], + "columns": { + "application_name": { + "oid": 25, + "dataType": "text" + }, + "backend_start": { + "oid": 1184, + "dataType": "timestamptz" + }, + "backend_type": { + "oid": 25, + "dataType": "text" + }, + "backend_xid": { + "oid": 20, + "dataType": "INT8" + }, + "backend_xmin": { + "oid": 20, + "dataType": "INT8" + }, + "client_addr": { + "oid": 869, + "dataType": "inet" + }, + "client_hostname": { + "oid": 25, + "dataType": "text" + }, + "client_port": { + "oid": 23, + "dataType": "int4" + }, + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "leader_pid": { + "oid": 23, + "dataType": "int4" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "query": { + "oid": 25, + "dataType": "text" + }, + "query_start": { + "oid": 1184, + "dataType": "timestamptz" + }, + "state": { + "oid": 25, + "dataType": "text" + }, + "state_change": { + "oid": 1184, + "dataType": "timestamptz" + }, + "usename": { + "oid": 19, + "dataType": "name" + }, + "usesysid": { + "oid": 26, + "dataType": "oid" + }, + "wait_event": { + "oid": 25, + "dataType": "text" + }, + "wait_event_type": { + "oid": 25, + "dataType": "text" + }, + "xact_start": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_stat_all_indexes": { - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_read": { - "oid": 20, - "dataType": "int8" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indexrelname": { - "oid": 19, - "dataType": "name" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "indexrelid", + "schemaname", + "relname", + "indexrelname", + "idx_scan", + "idx_tup_read", + "idx_tup_fetch" + ], + "columns": { + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_read": { + "oid": 20, + "dataType": "int8" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indexrelname": { + "oid": 19, + "dataType": "name" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_stat_all_tables": { - "analyze_count": { - "oid": 20, - "dataType": "int8" - }, - "autoanalyze_count": { - "oid": 20, - "dataType": "int8" - }, - "autovacuum_count": { - "oid": 20, - "dataType": "int8" - }, - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "last_analyze": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_autoanalyze": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_autovacuum": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_vacuum": { - "oid": 1184, - "dataType": "timestamptz" - }, - "n_dead_tup": { - "oid": 20, - "dataType": "int8" - }, - "n_ins_since_vacuum": { - "oid": 20, - "dataType": "int8" - }, - "n_live_tup": { - "oid": 20, - "dataType": "int8" - }, - "n_mod_since_analyze": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_del": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_hot_upd": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_ins": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_upd": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "seq_scan": { - "oid": 20, - "dataType": "int8" - }, - "seq_tup_read": { - "oid": 20, - "dataType": "int8" - }, - "vacuum_count": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "seq_scan", + "seq_tup_read", + "idx_scan", + "idx_tup_fetch", + "n_tup_ins", + "n_tup_upd", + "n_tup_del", + "n_tup_hot_upd", + "n_live_tup", + "n_dead_tup", + "n_mod_since_analyze", + "n_ins_since_vacuum", + "last_vacuum", + "last_autovacuum", + "last_analyze", + "last_autoanalyze", + "vacuum_count", + "autovacuum_count", + "analyze_count", + "autoanalyze_count" + ], + "columns": { + "analyze_count": { + "oid": 20, + "dataType": "int8" + }, + "autoanalyze_count": { + "oid": 20, + "dataType": "int8" + }, + "autovacuum_count": { + "oid": 20, + "dataType": "int8" + }, + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "last_analyze": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_autoanalyze": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_autovacuum": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_vacuum": { + "oid": 1184, + "dataType": "timestamptz" + }, + "n_dead_tup": { + "oid": 20, + "dataType": "int8" + }, + "n_ins_since_vacuum": { + "oid": 20, + "dataType": "int8" + }, + "n_live_tup": { + "oid": 20, + "dataType": "int8" + }, + "n_mod_since_analyze": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_del": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_hot_upd": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_ins": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_upd": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "seq_scan": { + "oid": 20, + "dataType": "int8" + }, + "seq_tup_read": { + "oid": 20, + "dataType": "int8" + }, + "vacuum_count": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_archiver": { - "archived_count": { - "oid": 20, - "dataType": "int8" - }, - "failed_count": { - "oid": 20, - "dataType": "int8" - }, - "last_archived_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_archived_wal": { - "oid": 25, - "dataType": "text" - }, - "last_failed_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_failed_wal": { - "oid": 25, - "dataType": "text" - }, - "stats_reset": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "archived_count", + "last_archived_wal", + "last_archived_time", + "failed_count", + "last_failed_wal", + "last_failed_time", + "stats_reset" + ], + "columns": { + "archived_count": { + "oid": 20, + "dataType": "int8" + }, + "failed_count": { + "oid": 20, + "dataType": "int8" + }, + "last_archived_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_archived_wal": { + "oid": 25, + "dataType": "text" + }, + "last_failed_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_failed_wal": { + "oid": 25, + "dataType": "text" + }, + "stats_reset": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_stat_bgwriter": { - "buffers_alloc": { - "oid": 20, - "dataType": "int8" - }, - "buffers_backend": { - "oid": 20, - "dataType": "int8" - }, - "buffers_backend_fsync": { - "oid": 20, - "dataType": "int8" - }, - "buffers_checkpoint": { - "oid": 20, - "dataType": "int8" - }, - "buffers_clean": { - "oid": 20, - "dataType": "int8" - }, - "checkpoint_sync_time": { - "oid": 701, - "dataType": "float8" - }, - "checkpoint_write_time": { - "oid": 701, - "dataType": "float8" - }, - "checkpoints_req": { - "oid": 20, - "dataType": "int8" - }, - "checkpoints_timed": { - "oid": 20, - "dataType": "int8" - }, - "maxwritten_clean": { - "oid": 20, - "dataType": "int8" - }, - "stats_reset": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "checkpoints_timed", + "checkpoints_req", + "checkpoint_write_time", + "checkpoint_sync_time", + "buffers_checkpoint", + "buffers_clean", + "maxwritten_clean", + "buffers_backend", + "buffers_backend_fsync", + "buffers_alloc", + "stats_reset" + ], + "columns": { + "buffers_alloc": { + "oid": 20, + "dataType": "int8" + }, + "buffers_backend": { + "oid": 20, + "dataType": "int8" + }, + "buffers_backend_fsync": { + "oid": 20, + "dataType": "int8" + }, + "buffers_checkpoint": { + "oid": 20, + "dataType": "int8" + }, + "buffers_clean": { + "oid": 20, + "dataType": "int8" + }, + "checkpoint_sync_time": { + "oid": 701, + "dataType": "float8" + }, + "checkpoint_write_time": { + "oid": 701, + "dataType": "float8" + }, + "checkpoints_req": { + "oid": 20, + "dataType": "int8" + }, + "checkpoints_timed": { + "oid": 20, + "dataType": "int8" + }, + "maxwritten_clean": { + "oid": 20, + "dataType": "int8" + }, + "stats_reset": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_stat_database": { - "blk_read_time": { - "oid": 701, - "dataType": "float8" - }, - "blk_write_time": { - "oid": 701, - "dataType": "float8" - }, - "blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "blks_read": { - "oid": 20, - "dataType": "int8" - }, - "checksum_failures": { - "oid": 20, - "dataType": "int8" - }, - "checksum_last_failure": { - "oid": 1184, - "dataType": "timestamptz" - }, - "conflicts": { - "oid": 20, - "dataType": "int8" - }, - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "deadlocks": { - "oid": 20, - "dataType": "int8" - }, - "numbackends": { - "oid": 23, - "dataType": "int4" - }, - "stats_reset": { - "oid": 1184, - "dataType": "timestamptz" - }, - "temp_bytes": { - "oid": 20, - "dataType": "int8" - }, - "temp_files": { - "oid": 20, - "dataType": "int8" - }, - "tup_deleted": { - "oid": 20, - "dataType": "int8" - }, - "tup_fetched": { - "oid": 20, - "dataType": "int8" - }, - "tup_inserted": { - "oid": 20, - "dataType": "int8" - }, - "tup_returned": { - "oid": 20, - "dataType": "int8" - }, - "tup_updated": { - "oid": 20, - "dataType": "int8" - }, - "xact_commit": { - "oid": 20, - "dataType": "int8" - }, - "xact_rollback": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "datid", + "datname", + "numbackends", + "xact_commit", + "xact_rollback", + "blks_read", + "blks_hit", + "tup_returned", + "tup_fetched", + "tup_inserted", + "tup_updated", + "tup_deleted", + "conflicts", + "temp_files", + "temp_bytes", + "deadlocks", + "checksum_failures", + "checksum_last_failure", + "blk_read_time", + "blk_write_time", + "stats_reset" + ], + "columns": { + "blk_read_time": { + "oid": 701, + "dataType": "float8" + }, + "blk_write_time": { + "oid": 701, + "dataType": "float8" + }, + "blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "blks_read": { + "oid": 20, + "dataType": "int8" + }, + "checksum_failures": { + "oid": 20, + "dataType": "int8" + }, + "checksum_last_failure": { + "oid": 1184, + "dataType": "timestamptz" + }, + "conflicts": { + "oid": 20, + "dataType": "int8" + }, + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "deadlocks": { + "oid": 20, + "dataType": "int8" + }, + "numbackends": { + "oid": 23, + "dataType": "int4" + }, + "stats_reset": { + "oid": 1184, + "dataType": "timestamptz" + }, + "temp_bytes": { + "oid": 20, + "dataType": "int8" + }, + "temp_files": { + "oid": 20, + "dataType": "int8" + }, + "tup_deleted": { + "oid": 20, + "dataType": "int8" + }, + "tup_fetched": { + "oid": 20, + "dataType": "int8" + }, + "tup_inserted": { + "oid": 20, + "dataType": "int8" + }, + "tup_returned": { + "oid": 20, + "dataType": "int8" + }, + "tup_updated": { + "oid": 20, + "dataType": "int8" + }, + "xact_commit": { + "oid": 20, + "dataType": "int8" + }, + "xact_rollback": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_database_conflicts": { - "confl_bufferpin": { - "oid": 20, - "dataType": "int8" - }, - "confl_deadlock": { - "oid": 20, - "dataType": "int8" - }, - "confl_lock": { - "oid": 20, - "dataType": "int8" - }, - "confl_snapshot": { - "oid": 20, - "dataType": "int8" - }, - "confl_tablespace": { - "oid": 20, - "dataType": "int8" - }, - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "datid", + "datname", + "confl_tablespace", + "confl_lock", + "confl_snapshot", + "confl_bufferpin", + "confl_deadlock" + ], + "columns": { + "confl_bufferpin": { + "oid": 20, + "dataType": "int8" + }, + "confl_deadlock": { + "oid": 20, + "dataType": "int8" + }, + "confl_lock": { + "oid": 20, + "dataType": "int8" + }, + "confl_snapshot": { + "oid": 20, + "dataType": "int8" + }, + "confl_tablespace": { + "oid": 20, + "dataType": "int8" + }, + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + } } }, "pg_stat_gssapi": { - "encrypted": { - "oid": 16, - "dataType": "bool" - }, - "gss_authenticated": { - "oid": 16, - "dataType": "bool" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "principal": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "pid", + "gss_authenticated", + "principal", + "encrypted" + ], + "columns": { + "encrypted": { + "oid": 16, + "dataType": "bool" + }, + "gss_authenticated": { + "oid": 16, + "dataType": "bool" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "principal": { + "oid": 25, + "dataType": "text" + } } }, "pg_stat_progress_analyze": { - "child_tables_done": { - "oid": 20, - "dataType": "int8" - }, - "child_tables_total": { - "oid": 20, - "dataType": "int8" - }, - "current_child_table_relid": { - "oid": 26, - "dataType": "oid" - }, - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "ext_stats_computed": { - "oid": 20, - "dataType": "int8" - }, - "ext_stats_total": { - "oid": 20, - "dataType": "int8" - }, - "phase": { - "oid": 25, - "dataType": "text" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "sample_blks_scanned": { - "oid": 20, - "dataType": "int8" - }, - "sample_blks_total": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "pid", + "datid", + "datname", + "relid", + "phase", + "sample_blks_total", + "sample_blks_scanned", + "ext_stats_total", + "ext_stats_computed", + "child_tables_total", + "child_tables_done", + "current_child_table_relid" + ], + "columns": { + "child_tables_done": { + "oid": 20, + "dataType": "int8" + }, + "child_tables_total": { + "oid": 20, + "dataType": "int8" + }, + "current_child_table_relid": { + "oid": 26, + "dataType": "oid" + }, + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "ext_stats_computed": { + "oid": 20, + "dataType": "int8" + }, + "ext_stats_total": { + "oid": 20, + "dataType": "int8" + }, + "phase": { + "oid": 25, + "dataType": "text" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "sample_blks_scanned": { + "oid": 20, + "dataType": "int8" + }, + "sample_blks_total": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_progress_basebackup": { - "backup_streamed": { - "oid": 20, - "dataType": "int8" - }, - "backup_total": { - "oid": 20, - "dataType": "int8" - }, - "phase": { - "oid": 25, - "dataType": "text" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "tablespaces_streamed": { - "oid": 20, - "dataType": "int8" - }, - "tablespaces_total": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "pid", + "phase", + "backup_total", + "backup_streamed", + "tablespaces_total", + "tablespaces_streamed" + ], + "columns": { + "backup_streamed": { + "oid": 20, + "dataType": "int8" + }, + "backup_total": { + "oid": 20, + "dataType": "int8" + }, + "phase": { + "oid": 25, + "dataType": "text" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "tablespaces_streamed": { + "oid": 20, + "dataType": "int8" + }, + "tablespaces_total": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_progress_cluster": { - "cluster_index_relid": { - "oid": 26, - "dataType": "oid" - }, - "command": { - "oid": 25, - "dataType": "text" - }, - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "heap_blks_scanned": { - "oid": 20, - "dataType": "int8" - }, - "heap_blks_total": { - "oid": 20, - "dataType": "int8" - }, - "heap_tuples_scanned": { - "oid": 20, - "dataType": "int8" - }, - "heap_tuples_written": { - "oid": 20, - "dataType": "int8" - }, - "index_rebuild_count": { - "oid": 20, - "dataType": "int8" - }, - "phase": { - "oid": 25, - "dataType": "text" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "relid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "pid", + "datid", + "datname", + "relid", + "command", + "phase", + "cluster_index_relid", + "heap_tuples_scanned", + "heap_tuples_written", + "heap_blks_total", + "heap_blks_scanned", + "index_rebuild_count" + ], + "columns": { + "cluster_index_relid": { + "oid": 26, + "dataType": "oid" + }, + "command": { + "oid": 25, + "dataType": "text" + }, + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "heap_blks_scanned": { + "oid": 20, + "dataType": "int8" + }, + "heap_blks_total": { + "oid": 20, + "dataType": "int8" + }, + "heap_tuples_scanned": { + "oid": 20, + "dataType": "int8" + }, + "heap_tuples_written": { + "oid": 20, + "dataType": "int8" + }, + "index_rebuild_count": { + "oid": 20, + "dataType": "int8" + }, + "phase": { + "oid": 25, + "dataType": "text" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "relid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_stat_progress_create_index": { - "blocks_done": { - "oid": 20, - "dataType": "int8" - }, - "blocks_total": { - "oid": 20, - "dataType": "int8" - }, - "command": { - "oid": 25, - "dataType": "text" - }, - "current_locker_pid": { - "oid": 20, - "dataType": "int8" - }, - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "index_relid": { - "oid": 26, - "dataType": "oid" - }, - "lockers_done": { - "oid": 20, - "dataType": "int8" - }, - "lockers_total": { - "oid": 20, - "dataType": "int8" - }, - "partitions_done": { - "oid": 20, - "dataType": "int8" - }, - "partitions_total": { - "oid": 20, - "dataType": "int8" - }, - "phase": { - "oid": 25, - "dataType": "text" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "tuples_done": { - "oid": 20, - "dataType": "int8" - }, - "tuples_total": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "pid", + "datid", + "datname", + "relid", + "index_relid", + "command", + "phase", + "lockers_total", + "lockers_done", + "current_locker_pid", + "blocks_total", + "blocks_done", + "tuples_total", + "tuples_done", + "partitions_total", + "partitions_done" + ], + "columns": { + "blocks_done": { + "oid": 20, + "dataType": "int8" + }, + "blocks_total": { + "oid": 20, + "dataType": "int8" + }, + "command": { + "oid": 25, + "dataType": "text" + }, + "current_locker_pid": { + "oid": 20, + "dataType": "int8" + }, + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "index_relid": { + "oid": 26, + "dataType": "oid" + }, + "lockers_done": { + "oid": 20, + "dataType": "int8" + }, + "lockers_total": { + "oid": 20, + "dataType": "int8" + }, + "partitions_done": { + "oid": 20, + "dataType": "int8" + }, + "partitions_total": { + "oid": 20, + "dataType": "int8" + }, + "phase": { + "oid": 25, + "dataType": "text" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "tuples_done": { + "oid": 20, + "dataType": "int8" + }, + "tuples_total": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_progress_vacuum": { - "datid": { - "oid": 26, - "dataType": "oid" - }, - "datname": { - "oid": 19, - "dataType": "name" - }, - "heap_blks_scanned": { - "oid": 20, - "dataType": "int8" - }, - "heap_blks_total": { - "oid": 20, - "dataType": "int8" - }, - "heap_blks_vacuumed": { - "oid": 20, - "dataType": "int8" - }, - "index_vacuum_count": { - "oid": 20, - "dataType": "int8" - }, - "max_dead_tuples": { - "oid": 20, - "dataType": "int8" - }, - "num_dead_tuples": { - "oid": 20, - "dataType": "int8" - }, - "phase": { - "oid": 25, - "dataType": "text" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "relid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "pid", + "datid", + "datname", + "relid", + "phase", + "heap_blks_total", + "heap_blks_scanned", + "heap_blks_vacuumed", + "index_vacuum_count", + "max_dead_tuples", + "num_dead_tuples" + ], + "columns": { + "datid": { + "oid": 26, + "dataType": "oid" + }, + "datname": { + "oid": 19, + "dataType": "name" + }, + "heap_blks_scanned": { + "oid": 20, + "dataType": "int8" + }, + "heap_blks_total": { + "oid": 20, + "dataType": "int8" + }, + "heap_blks_vacuumed": { + "oid": 20, + "dataType": "int8" + }, + "index_vacuum_count": { + "oid": 20, + "dataType": "int8" + }, + "max_dead_tuples": { + "oid": 20, + "dataType": "int8" + }, + "num_dead_tuples": { + "oid": 20, + "dataType": "int8" + }, + "phase": { + "oid": 25, + "dataType": "text" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "relid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_stat_replication": { - "application_name": { - "oid": 25, - "dataType": "text" - }, - "backend_start": { - "oid": 1184, - "dataType": "timestamptz" - }, - "backend_xmin": { - "oid": 20, - "dataType": "INT8" - }, - "client_addr": { - "oid": 869, - "dataType": "inet" - }, - "client_hostname": { - "oid": 25, - "dataType": "text" - }, - "client_port": { - "oid": 23, - "dataType": "int4" - }, - "flush_lag": { - "oid": 1186, - "dataType": "interval" - }, - "flush_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "replay_lag": { - "oid": 1186, - "dataType": "interval" - }, - "replay_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "reply_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "sent_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "state": { - "oid": 25, - "dataType": "text" - }, - "sync_priority": { - "oid": 23, - "dataType": "int4" - }, - "sync_state": { - "oid": 25, - "dataType": "text" - }, - "usename": { - "oid": 19, - "dataType": "name" - }, - "usesysid": { - "oid": 26, - "dataType": "oid" - }, - "write_lag": { - "oid": 1186, - "dataType": "interval" - }, - "write_lsn": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "pid", + "usesysid", + "usename", + "application_name", + "client_addr", + "client_hostname", + "client_port", + "backend_start", + "backend_xmin", + "state", + "sent_lsn", + "write_lsn", + "flush_lsn", + "replay_lsn", + "write_lag", + "flush_lag", + "replay_lag", + "sync_priority", + "sync_state", + "reply_time" + ], + "columns": { + "application_name": { + "oid": 25, + "dataType": "text" + }, + "backend_start": { + "oid": 1184, + "dataType": "timestamptz" + }, + "backend_xmin": { + "oid": 20, + "dataType": "INT8" + }, + "client_addr": { + "oid": 869, + "dataType": "inet" + }, + "client_hostname": { + "oid": 25, + "dataType": "text" + }, + "client_port": { + "oid": 23, + "dataType": "int4" + }, + "flush_lag": { + "oid": 1186, + "dataType": "interval" + }, + "flush_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "replay_lag": { + "oid": 1186, + "dataType": "interval" + }, + "replay_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "reply_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "sent_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "state": { + "oid": 25, + "dataType": "text" + }, + "sync_priority": { + "oid": 23, + "dataType": "int4" + }, + "sync_state": { + "oid": 25, + "dataType": "text" + }, + "usename": { + "oid": 19, + "dataType": "name" + }, + "usesysid": { + "oid": 26, + "dataType": "oid" + }, + "write_lag": { + "oid": 1186, + "dataType": "interval" + }, + "write_lsn": { + "oid": 25, + "dataType": "TEXT" + } } }, "pg_stat_slru": { - "blks_exists": { - "oid": 20, - "dataType": "int8" - }, - "blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "blks_read": { - "oid": 20, - "dataType": "int8" - }, - "blks_written": { - "oid": 20, - "dataType": "int8" - }, - "blks_zeroed": { - "oid": 20, - "dataType": "int8" - }, - "flushes": { - "oid": 20, - "dataType": "int8" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "stats_reset": { - "oid": 1184, - "dataType": "timestamptz" - }, - "truncates": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "name", + "blks_zeroed", + "blks_hit", + "blks_read", + "blks_written", + "blks_exists", + "flushes", + "truncates", + "stats_reset" + ], + "columns": { + "blks_exists": { + "oid": 20, + "dataType": "int8" + }, + "blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "blks_read": { + "oid": 20, + "dataType": "int8" + }, + "blks_written": { + "oid": 20, + "dataType": "int8" + }, + "blks_zeroed": { + "oid": 20, + "dataType": "int8" + }, + "flushes": { + "oid": 20, + "dataType": "int8" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "stats_reset": { + "oid": 1184, + "dataType": "timestamptz" + }, + "truncates": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_ssl": { - "bits": { - "oid": 23, - "dataType": "int4" - }, - "cipher": { - "oid": 25, - "dataType": "text" - }, - "client_dn": { - "oid": 25, - "dataType": "text" - }, - "client_serial": { - "oid": 1700, - "dataType": "numeric" - }, - "compression": { - "oid": 16, - "dataType": "bool" - }, - "issuer_dn": { - "oid": 25, - "dataType": "text" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "ssl": { - "oid": 16, - "dataType": "bool" - }, - "version": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "pid", + "ssl", + "version", + "cipher", + "bits", + "compression", + "client_dn", + "client_serial", + "issuer_dn" + ], + "columns": { + "bits": { + "oid": 23, + "dataType": "int4" + }, + "cipher": { + "oid": 25, + "dataType": "text" + }, + "client_dn": { + "oid": 25, + "dataType": "text" + }, + "client_serial": { + "oid": 1700, + "dataType": "numeric" + }, + "compression": { + "oid": 16, + "dataType": "bool" + }, + "issuer_dn": { + "oid": 25, + "dataType": "text" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "ssl": { + "oid": 16, + "dataType": "bool" + }, + "version": { + "oid": 25, + "dataType": "text" + } } }, "pg_stat_subscription": { - "last_msg_receipt_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_msg_send_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "latest_end_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "latest_end_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "received_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "subid": { - "oid": 26, - "dataType": "oid" - }, - "subname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "subid", + "subname", + "pid", + "relid", + "received_lsn", + "last_msg_send_time", + "last_msg_receipt_time", + "latest_end_lsn", + "latest_end_time" + ], + "columns": { + "last_msg_receipt_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_msg_send_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "latest_end_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "latest_end_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "received_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "subid": { + "oid": 26, + "dataType": "oid" + }, + "subname": { + "oid": 19, + "dataType": "name" + } } }, "pg_stat_sys_indexes": { - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_read": { - "oid": 20, - "dataType": "int8" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indexrelname": { - "oid": 19, - "dataType": "name" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "indexrelid", + "schemaname", + "relname", + "indexrelname", + "idx_scan", + "idx_tup_read", + "idx_tup_fetch" + ], + "columns": { + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_read": { + "oid": 20, + "dataType": "int8" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indexrelname": { + "oid": 19, + "dataType": "name" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_stat_sys_tables": { - "analyze_count": { - "oid": 20, - "dataType": "int8" - }, - "autoanalyze_count": { - "oid": 20, - "dataType": "int8" - }, - "autovacuum_count": { - "oid": 20, - "dataType": "int8" - }, - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "last_analyze": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_autoanalyze": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_autovacuum": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_vacuum": { - "oid": 1184, - "dataType": "timestamptz" - }, - "n_dead_tup": { - "oid": 20, - "dataType": "int8" - }, - "n_ins_since_vacuum": { - "oid": 20, - "dataType": "int8" - }, - "n_live_tup": { - "oid": 20, - "dataType": "int8" - }, - "n_mod_since_analyze": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_del": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_hot_upd": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_ins": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_upd": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "seq_scan": { - "oid": 20, - "dataType": "int8" - }, - "seq_tup_read": { - "oid": 20, - "dataType": "int8" - }, - "vacuum_count": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "seq_scan", + "seq_tup_read", + "idx_scan", + "idx_tup_fetch", + "n_tup_ins", + "n_tup_upd", + "n_tup_del", + "n_tup_hot_upd", + "n_live_tup", + "n_dead_tup", + "n_mod_since_analyze", + "n_ins_since_vacuum", + "last_vacuum", + "last_autovacuum", + "last_analyze", + "last_autoanalyze", + "vacuum_count", + "autovacuum_count", + "analyze_count", + "autoanalyze_count" + ], + "columns": { + "analyze_count": { + "oid": 20, + "dataType": "int8" + }, + "autoanalyze_count": { + "oid": 20, + "dataType": "int8" + }, + "autovacuum_count": { + "oid": 20, + "dataType": "int8" + }, + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "last_analyze": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_autoanalyze": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_autovacuum": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_vacuum": { + "oid": 1184, + "dataType": "timestamptz" + }, + "n_dead_tup": { + "oid": 20, + "dataType": "int8" + }, + "n_ins_since_vacuum": { + "oid": 20, + "dataType": "int8" + }, + "n_live_tup": { + "oid": 20, + "dataType": "int8" + }, + "n_mod_since_analyze": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_del": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_hot_upd": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_ins": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_upd": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "seq_scan": { + "oid": 20, + "dataType": "int8" + }, + "seq_tup_read": { + "oid": 20, + "dataType": "int8" + }, + "vacuum_count": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_user_functions": { - "calls": { - "oid": 20, - "dataType": "int8" - }, - "funcid": { - "oid": 26, - "dataType": "oid" - }, - "funcname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "self_time": { - "oid": 701, - "dataType": "float8" - }, - "total_time": { - "oid": 701, - "dataType": "float8" + "columnNames": [ + "funcid", + "schemaname", + "funcname", + "calls", + "total_time", + "self_time" + ], + "columns": { + "calls": { + "oid": 20, + "dataType": "int8" + }, + "funcid": { + "oid": 26, + "dataType": "oid" + }, + "funcname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "self_time": { + "oid": 701, + "dataType": "float8" + }, + "total_time": { + "oid": 701, + "dataType": "float8" + } } }, "pg_stat_user_indexes": { - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_read": { - "oid": 20, - "dataType": "int8" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indexrelname": { - "oid": 19, - "dataType": "name" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "indexrelid", + "schemaname", + "relname", + "indexrelname", + "idx_scan", + "idx_tup_read", + "idx_tup_fetch" + ], + "columns": { + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_read": { + "oid": 20, + "dataType": "int8" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indexrelname": { + "oid": 19, + "dataType": "name" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_stat_user_tables": { - "analyze_count": { - "oid": 20, - "dataType": "int8" - }, - "autoanalyze_count": { - "oid": 20, - "dataType": "int8" - }, - "autovacuum_count": { - "oid": 20, - "dataType": "int8" - }, - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "last_analyze": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_autoanalyze": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_autovacuum": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_vacuum": { - "oid": 1184, - "dataType": "timestamptz" - }, - "n_dead_tup": { - "oid": 20, - "dataType": "int8" - }, - "n_ins_since_vacuum": { - "oid": 20, - "dataType": "int8" - }, - "n_live_tup": { - "oid": 20, - "dataType": "int8" - }, - "n_mod_since_analyze": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_del": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_hot_upd": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_ins": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_upd": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "seq_scan": { - "oid": 20, - "dataType": "int8" - }, - "seq_tup_read": { - "oid": 20, - "dataType": "int8" - }, - "vacuum_count": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "seq_scan", + "seq_tup_read", + "idx_scan", + "idx_tup_fetch", + "n_tup_ins", + "n_tup_upd", + "n_tup_del", + "n_tup_hot_upd", + "n_live_tup", + "n_dead_tup", + "n_mod_since_analyze", + "n_ins_since_vacuum", + "last_vacuum", + "last_autovacuum", + "last_analyze", + "last_autoanalyze", + "vacuum_count", + "autovacuum_count", + "analyze_count", + "autoanalyze_count" + ], + "columns": { + "analyze_count": { + "oid": 20, + "dataType": "int8" + }, + "autoanalyze_count": { + "oid": 20, + "dataType": "int8" + }, + "autovacuum_count": { + "oid": 20, + "dataType": "int8" + }, + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "last_analyze": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_autoanalyze": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_autovacuum": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_vacuum": { + "oid": 1184, + "dataType": "timestamptz" + }, + "n_dead_tup": { + "oid": 20, + "dataType": "int8" + }, + "n_ins_since_vacuum": { + "oid": 20, + "dataType": "int8" + }, + "n_live_tup": { + "oid": 20, + "dataType": "int8" + }, + "n_mod_since_analyze": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_del": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_hot_upd": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_ins": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_upd": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "seq_scan": { + "oid": 20, + "dataType": "int8" + }, + "seq_tup_read": { + "oid": 20, + "dataType": "int8" + }, + "vacuum_count": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_wal_receiver": { - "conninfo": { - "oid": 25, - "dataType": "text" - }, - "flushed_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "last_msg_receipt_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "last_msg_send_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "latest_end_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "latest_end_time": { - "oid": 1184, - "dataType": "timestamptz" - }, - "pid": { - "oid": 23, - "dataType": "int4" - }, - "receive_start_lsn": { - "oid": 25, - "dataType": "TEXT" - }, - "receive_start_tli": { - "oid": 23, - "dataType": "int4" - }, - "received_tli": { - "oid": 23, - "dataType": "int4" - }, - "sender_host": { - "oid": 25, - "dataType": "text" - }, - "sender_port": { - "oid": 23, - "dataType": "int4" - }, - "slot_name": { - "oid": 25, - "dataType": "text" - }, - "status": { - "oid": 25, - "dataType": "text" - }, - "written_lsn": { - "oid": 25, - "dataType": "TEXT" + "columnNames": [ + "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" + ], + "columns": { + "conninfo": { + "oid": 25, + "dataType": "text" + }, + "flushed_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "last_msg_receipt_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "last_msg_send_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "latest_end_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "latest_end_time": { + "oid": 1184, + "dataType": "timestamptz" + }, + "pid": { + "oid": 23, + "dataType": "int4" + }, + "receive_start_lsn": { + "oid": 25, + "dataType": "TEXT" + }, + "receive_start_tli": { + "oid": 23, + "dataType": "int4" + }, + "received_tli": { + "oid": 23, + "dataType": "int4" + }, + "sender_host": { + "oid": 25, + "dataType": "text" + }, + "sender_port": { + "oid": 23, + "dataType": "int4" + }, + "slot_name": { + "oid": 25, + "dataType": "text" + }, + "status": { + "oid": 25, + "dataType": "text" + }, + "written_lsn": { + "oid": 25, + "dataType": "TEXT" + } } }, "pg_stat_xact_all_tables": { - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_del": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_hot_upd": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_ins": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_upd": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "seq_scan": { - "oid": 20, - "dataType": "int8" - }, - "seq_tup_read": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "seq_scan", + "seq_tup_read", + "idx_scan", + "idx_tup_fetch", + "n_tup_ins", + "n_tup_upd", + "n_tup_del", + "n_tup_hot_upd" + ], + "columns": { + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_del": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_hot_upd": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_ins": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_upd": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "seq_scan": { + "oid": 20, + "dataType": "int8" + }, + "seq_tup_read": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_xact_sys_tables": { - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_del": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_hot_upd": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_ins": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_upd": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "seq_scan": { - "oid": 20, - "dataType": "int8" - }, - "seq_tup_read": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "seq_scan", + "seq_tup_read", + "idx_scan", + "idx_tup_fetch", + "n_tup_ins", + "n_tup_upd", + "n_tup_del", + "n_tup_hot_upd" + ], + "columns": { + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_del": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_hot_upd": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_ins": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_upd": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "seq_scan": { + "oid": 20, + "dataType": "int8" + }, + "seq_tup_read": { + "oid": 20, + "dataType": "int8" + } } }, "pg_stat_xact_user_functions": { - "calls": { - "oid": 20, - "dataType": "int8" - }, - "funcid": { - "oid": 26, - "dataType": "oid" - }, - "funcname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "self_time": { - "oid": 701, - "dataType": "float8" - }, - "total_time": { - "oid": 701, - "dataType": "float8" + "columnNames": [ + "funcid", + "schemaname", + "funcname", + "calls", + "total_time", + "self_time" + ], + "columns": { + "calls": { + "oid": 20, + "dataType": "int8" + }, + "funcid": { + "oid": 26, + "dataType": "oid" + }, + "funcname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "self_time": { + "oid": 701, + "dataType": "float8" + }, + "total_time": { + "oid": 701, + "dataType": "float8" + } } }, "pg_stat_xact_user_tables": { - "idx_scan": { - "oid": 20, - "dataType": "int8" - }, - "idx_tup_fetch": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_del": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_hot_upd": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_ins": { - "oid": 20, - "dataType": "int8" - }, - "n_tup_upd": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "seq_scan": { - "oid": 20, - "dataType": "int8" - }, - "seq_tup_read": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "seq_scan", + "seq_tup_read", + "idx_scan", + "idx_tup_fetch", + "n_tup_ins", + "n_tup_upd", + "n_tup_del", + "n_tup_hot_upd" + ], + "columns": { + "idx_scan": { + "oid": 20, + "dataType": "int8" + }, + "idx_tup_fetch": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_del": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_hot_upd": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_ins": { + "oid": 20, + "dataType": "int8" + }, + "n_tup_upd": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "seq_scan": { + "oid": 20, + "dataType": "int8" + }, + "seq_tup_read": { + "oid": 20, + "dataType": "int8" + } } }, "pg_statio_all_indexes": { - "idx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indexrelname": { - "oid": 19, - "dataType": "name" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "indexrelid", + "schemaname", + "relname", + "indexrelname", + "idx_blks_read", + "idx_blks_hit" + ], + "columns": { + "idx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indexrelname": { + "oid": 19, + "dataType": "name" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_statio_all_sequences": { - "blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "blks_read": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "schemaname", + "relname", + "blks_read", + "blks_hit" + ], + "columns": { + "blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "blks_read": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_statio_all_tables": { - "heap_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "heap_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tidx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "tidx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "toast_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "toast_blks_read": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "heap_blks_read", + "heap_blks_hit", + "idx_blks_read", + "idx_blks_hit", + "toast_blks_read", + "toast_blks_hit", + "tidx_blks_read", + "tidx_blks_hit" + ], + "columns": { + "heap_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "heap_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tidx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "tidx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "toast_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "toast_blks_read": { + "oid": 20, + "dataType": "int8" + } } }, "pg_statio_sys_indexes": { - "idx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indexrelname": { - "oid": 19, - "dataType": "name" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "indexrelid", + "schemaname", + "relname", + "indexrelname", + "idx_blks_read", + "idx_blks_hit" + ], + "columns": { + "idx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indexrelname": { + "oid": 19, + "dataType": "name" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_statio_sys_sequences": { - "blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "blks_read": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "schemaname", + "relname", + "blks_read", + "blks_hit" + ], + "columns": { + "blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "blks_read": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_statio_sys_tables": { - "heap_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "heap_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tidx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "tidx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "toast_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "toast_blks_read": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "heap_blks_read", + "heap_blks_hit", + "idx_blks_read", + "idx_blks_hit", + "toast_blks_read", + "toast_blks_hit", + "tidx_blks_read", + "tidx_blks_hit" + ], + "columns": { + "heap_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "heap_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tidx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "tidx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "toast_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "toast_blks_read": { + "oid": 20, + "dataType": "int8" + } } }, "pg_statio_user_indexes": { - "idx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "indexrelid": { - "oid": 26, - "dataType": "oid" - }, - "indexrelname": { - "oid": 19, - "dataType": "name" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "indexrelid", + "schemaname", + "relname", + "indexrelname", + "idx_blks_read", + "idx_blks_hit" + ], + "columns": { + "idx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "indexrelid": { + "oid": 26, + "dataType": "oid" + }, + "indexrelname": { + "oid": 19, + "dataType": "name" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_statio_user_sequences": { - "blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "blks_read": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "relid", + "schemaname", + "relname", + "blks_read", + "blks_hit" + ], + "columns": { + "blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "blks_read": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + } } }, "pg_statio_user_tables": { - "heap_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "heap_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "idx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "relid": { - "oid": 26, - "dataType": "oid" - }, - "relname": { - "oid": 19, - "dataType": "name" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tidx_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "tidx_blks_read": { - "oid": 20, - "dataType": "int8" - }, - "toast_blks_hit": { - "oid": 20, - "dataType": "int8" - }, - "toast_blks_read": { - "oid": 20, - "dataType": "int8" + "columnNames": [ + "relid", + "schemaname", + "relname", + "heap_blks_read", + "heap_blks_hit", + "idx_blks_read", + "idx_blks_hit", + "toast_blks_read", + "toast_blks_hit", + "tidx_blks_read", + "tidx_blks_hit" + ], + "columns": { + "heap_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "heap_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "idx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "relid": { + "oid": 26, + "dataType": "oid" + }, + "relname": { + "oid": 19, + "dataType": "name" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tidx_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "tidx_blks_read": { + "oid": 20, + "dataType": "int8" + }, + "toast_blks_hit": { + "oid": 20, + "dataType": "int8" + }, + "toast_blks_read": { + "oid": 20, + "dataType": "int8" + } } }, "pg_statistic": { - "staattnum": { - "oid": 21, - "dataType": "int2" - }, - "stacoll1": { - "oid": 26, - "dataType": "oid" - }, - "stacoll2": { - "oid": 26, - "dataType": "oid" - }, - "stacoll3": { - "oid": 26, - "dataType": "oid" - }, - "stacoll4": { - "oid": 26, - "dataType": "oid" - }, - "stacoll5": { - "oid": 26, - "dataType": "oid" - }, - "stadistinct": { - "oid": 700, - "dataType": "float4" - }, - "stainherit": { - "oid": 16, - "dataType": "bool" - }, - "stakind1": { - "oid": 21, - "dataType": "int2" - }, - "stakind2": { - "oid": 21, - "dataType": "int2" - }, - "stakind3": { - "oid": 21, - "dataType": "int2" - }, - "stakind4": { - "oid": 21, - "dataType": "int2" - }, - "stakind5": { - "oid": 21, - "dataType": "int2" - }, - "stanullfrac": { - "oid": 700, - "dataType": "float4" - }, - "stanumbers1": { - "oid": 1021, - "dataType": "_float4" - }, - "stanumbers2": { - "oid": 1021, - "dataType": "_float4" - }, - "stanumbers3": { - "oid": 1021, - "dataType": "_float4" - }, - "stanumbers4": { - "oid": 1021, - "dataType": "_float4" - }, - "stanumbers5": { - "oid": 1021, - "dataType": "_float4" - }, - "staop1": { - "oid": 26, - "dataType": "oid" - }, - "staop2": { - "oid": 26, - "dataType": "oid" - }, - "staop3": { - "oid": 26, - "dataType": "oid" - }, - "staop4": { - "oid": 26, - "dataType": "oid" - }, - "staop5": { - "oid": 26, - "dataType": "oid" - }, - "starelid": { - "oid": 26, - "dataType": "oid" - }, - "stavalues1": { - "oid": 1009, - "dataType": "_TEXT" - }, - "stavalues2": { - "oid": 1009, - "dataType": "_TEXT" - }, - "stavalues3": { - "oid": 1009, - "dataType": "_TEXT" - }, - "stavalues4": { - "oid": 1009, - "dataType": "_TEXT" - }, - "stavalues5": { - "oid": 1009, - "dataType": "_TEXT" - }, - "stawidth": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "starelid", + "staattnum", + "stainherit", + "stanullfrac", + "stawidth", + "stadistinct", + "stakind1", + "stakind2", + "stakind3", + "stakind4", + "stakind5", + "staop1", + "staop2", + "staop3", + "staop4", + "staop5", + "stacoll1", + "stacoll2", + "stacoll3", + "stacoll4", + "stacoll5", + "stanumbers1", + "stanumbers2", + "stanumbers3", + "stanumbers4", + "stanumbers5", + "stavalues1", + "stavalues2", + "stavalues3", + "stavalues4", + "stavalues5" + ], + "columns": { + "staattnum": { + "oid": 21, + "dataType": "int2" + }, + "stacoll1": { + "oid": 26, + "dataType": "oid" + }, + "stacoll2": { + "oid": 26, + "dataType": "oid" + }, + "stacoll3": { + "oid": 26, + "dataType": "oid" + }, + "stacoll4": { + "oid": 26, + "dataType": "oid" + }, + "stacoll5": { + "oid": 26, + "dataType": "oid" + }, + "stadistinct": { + "oid": 700, + "dataType": "float4" + }, + "stainherit": { + "oid": 16, + "dataType": "bool" + }, + "stakind1": { + "oid": 21, + "dataType": "int2" + }, + "stakind2": { + "oid": 21, + "dataType": "int2" + }, + "stakind3": { + "oid": 21, + "dataType": "int2" + }, + "stakind4": { + "oid": 21, + "dataType": "int2" + }, + "stakind5": { + "oid": 21, + "dataType": "int2" + }, + "stanullfrac": { + "oid": 700, + "dataType": "float4" + }, + "stanumbers1": { + "oid": 1021, + "dataType": "_float4" + }, + "stanumbers2": { + "oid": 1021, + "dataType": "_float4" + }, + "stanumbers3": { + "oid": 1021, + "dataType": "_float4" + }, + "stanumbers4": { + "oid": 1021, + "dataType": "_float4" + }, + "stanumbers5": { + "oid": 1021, + "dataType": "_float4" + }, + "staop1": { + "oid": 26, + "dataType": "oid" + }, + "staop2": { + "oid": 26, + "dataType": "oid" + }, + "staop3": { + "oid": 26, + "dataType": "oid" + }, + "staop4": { + "oid": 26, + "dataType": "oid" + }, + "staop5": { + "oid": 26, + "dataType": "oid" + }, + "starelid": { + "oid": 26, + "dataType": "oid" + }, + "stavalues1": { + "oid": 1009, + "dataType": "_TEXT" + }, + "stavalues2": { + "oid": 1009, + "dataType": "_TEXT" + }, + "stavalues3": { + "oid": 1009, + "dataType": "_TEXT" + }, + "stavalues4": { + "oid": 1009, + "dataType": "_TEXT" + }, + "stavalues5": { + "oid": 1009, + "dataType": "_TEXT" + }, + "stawidth": { + "oid": 23, + "dataType": "int4" + } } }, "pg_statistic_ext": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "stxkeys": { - "oid": 22, - "dataType": "int2vector" - }, - "stxkind": { - "oid": 1002, - "dataType": "_char" - }, - "stxname": { - "oid": 19, - "dataType": "name" - }, - "stxnamespace": { - "oid": 26, - "dataType": "oid" - }, - "stxowner": { - "oid": 26, - "dataType": "oid" - }, - "stxrelid": { - "oid": 26, - "dataType": "oid" - }, - "stxstattarget": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "oid", + "stxrelid", + "stxname", + "stxnamespace", + "stxowner", + "stxstattarget", + "stxkeys", + "stxkind" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "stxkeys": { + "oid": 22, + "dataType": "int2vector" + }, + "stxkind": { + "oid": 1002, + "dataType": "_char" + }, + "stxname": { + "oid": 19, + "dataType": "name" + }, + "stxnamespace": { + "oid": 26, + "dataType": "oid" + }, + "stxowner": { + "oid": 26, + "dataType": "oid" + }, + "stxrelid": { + "oid": 26, + "dataType": "oid" + }, + "stxstattarget": { + "oid": 23, + "dataType": "int4" + } } }, "pg_statistic_ext_data": { - "stxddependencies": { - "oid": 17, - "dataType": "BYTEA" - }, - "stxdmcv": { - "oid": 17, - "dataType": "BYTEA" - }, - "stxdndistinct": { - "oid": 17, - "dataType": "BYTEA" - }, - "stxoid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "stxoid", + "stxdndistinct", + "stxddependencies", + "stxdmcv" + ], + "columns": { + "stxddependencies": { + "oid": 17, + "dataType": "BYTEA" + }, + "stxdmcv": { + "oid": 17, + "dataType": "BYTEA" + }, + "stxdndistinct": { + "oid": 17, + "dataType": "BYTEA" + }, + "stxoid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_stats": { - "attname": { - "oid": 19, - "dataType": "name" - }, - "avg_width": { - "oid": 23, - "dataType": "int4" - }, - "correlation": { - "oid": 700, - "dataType": "float4" - }, - "elem_count_histogram": { - "oid": 1021, - "dataType": "_float4" - }, - "histogram_bounds": { - "oid": 1009, - "dataType": "_TEXT" - }, - "inherited": { - "oid": 16, - "dataType": "bool" - }, - "most_common_elem_freqs": { - "oid": 1021, - "dataType": "_float4" - }, - "most_common_elems": { - "oid": 1009, - "dataType": "_TEXT" - }, - "most_common_freqs": { - "oid": 1021, - "dataType": "_float4" - }, - "most_common_vals": { - "oid": 1009, - "dataType": "_TEXT" - }, - "n_distinct": { - "oid": 700, - "dataType": "float4" - }, - "null_frac": { - "oid": 700, - "dataType": "float4" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "tablename", + "attname", + "inherited", + "null_frac", + "avg_width", + "n_distinct", + "most_common_vals", + "most_common_freqs", + "histogram_bounds", + "correlation", + "most_common_elems", + "most_common_elem_freqs", + "elem_count_histogram" + ], + "columns": { + "attname": { + "oid": 19, + "dataType": "name" + }, + "avg_width": { + "oid": 23, + "dataType": "int4" + }, + "correlation": { + "oid": 700, + "dataType": "float4" + }, + "elem_count_histogram": { + "oid": 1021, + "dataType": "_float4" + }, + "histogram_bounds": { + "oid": 1009, + "dataType": "_TEXT" + }, + "inherited": { + "oid": 16, + "dataType": "bool" + }, + "most_common_elem_freqs": { + "oid": 1021, + "dataType": "_float4" + }, + "most_common_elems": { + "oid": 1009, + "dataType": "_TEXT" + }, + "most_common_freqs": { + "oid": 1021, + "dataType": "_float4" + }, + "most_common_vals": { + "oid": 1009, + "dataType": "_TEXT" + }, + "n_distinct": { + "oid": 700, + "dataType": "float4" + }, + "null_frac": { + "oid": 700, + "dataType": "float4" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + } } }, "pg_stats_ext": { - "attnames": { - "oid": 1003, - "dataType": "_name" - }, - "dependencies": { - "oid": 17, - "dataType": "BYTEA" - }, - "kinds": { - "oid": 1002, - "dataType": "_char" - }, - "most_common_base_freqs": { - "oid": 1022, - "dataType": "_float8" - }, - "most_common_freqs": { - "oid": 1022, - "dataType": "_float8" - }, - "most_common_val_nulls": { - "oid": 1000, - "dataType": "_bool" - }, - "most_common_vals": { - "oid": 1009, - "dataType": "_text" - }, - "n_distinct": { - "oid": 17, - "dataType": "BYTEA" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "statistics_name": { - "oid": 19, - "dataType": "name" - }, - "statistics_owner": { - "oid": 19, - "dataType": "name" - }, - "statistics_schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "tablename", + "statistics_schemaname", + "statistics_name", + "statistics_owner", + "attnames", + "kinds", + "n_distinct", + "dependencies", + "most_common_vals", + "most_common_val_nulls", + "most_common_freqs", + "most_common_base_freqs" + ], + "columns": { + "attnames": { + "oid": 1003, + "dataType": "_name" + }, + "dependencies": { + "oid": 17, + "dataType": "BYTEA" + }, + "kinds": { + "oid": 1002, + "dataType": "_char" + }, + "most_common_base_freqs": { + "oid": 1022, + "dataType": "_float8" + }, + "most_common_freqs": { + "oid": 1022, + "dataType": "_float8" + }, + "most_common_val_nulls": { + "oid": 1000, + "dataType": "_bool" + }, + "most_common_vals": { + "oid": 1009, + "dataType": "_text" + }, + "n_distinct": { + "oid": 17, + "dataType": "BYTEA" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "statistics_name": { + "oid": 19, + "dataType": "name" + }, + "statistics_owner": { + "oid": 19, + "dataType": "name" + }, + "statistics_schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + } } }, "pg_subscription": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "subconninfo": { - "oid": 25, - "dataType": "text" - }, - "subdbid": { - "oid": 26, - "dataType": "oid" - }, - "subenabled": { - "oid": 16, - "dataType": "bool" - }, - "subname": { - "oid": 19, - "dataType": "name" - }, - "subowner": { - "oid": 26, - "dataType": "oid" - }, - "subpublications": { - "oid": 1009, - "dataType": "_text" - }, - "subslotname": { - "oid": 19, - "dataType": "name" - }, - "subsynccommit": { - "oid": 25, - "dataType": "text" + "columnNames": [ + "oid", + "subdbid", + "subname", + "subowner", + "subenabled", + "subconninfo", + "subslotname", + "subsynccommit", + "subpublications" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "subconninfo": { + "oid": 25, + "dataType": "text" + }, + "subdbid": { + "oid": 26, + "dataType": "oid" + }, + "subenabled": { + "oid": 16, + "dataType": "bool" + }, + "subname": { + "oid": 19, + "dataType": "name" + }, + "subowner": { + "oid": 26, + "dataType": "oid" + }, + "subpublications": { + "oid": 1009, + "dataType": "_text" + }, + "subslotname": { + "oid": 19, + "dataType": "name" + }, + "subsynccommit": { + "oid": 25, + "dataType": "text" + } } }, "pg_subscription_rel": { - "srrelid": { - "oid": 26, - "dataType": "oid" - }, - "srsubid": { - "oid": 26, - "dataType": "oid" - }, - "srsublsn": { - "oid": 25, - "dataType": "TEXT" - }, - "srsubstate": { - "oid": 18, - "dataType": "char" + "columnNames": [ + "srsubid", + "srrelid", + "srsubstate", + "srsublsn" + ], + "columns": { + "srrelid": { + "oid": 26, + "dataType": "oid" + }, + "srsubid": { + "oid": 26, + "dataType": "oid" + }, + "srsublsn": { + "oid": 25, + "dataType": "TEXT" + }, + "srsubstate": { + "oid": 18, + "dataType": "char" + } } }, "pg_tables": { - "hasindexes": { - "oid": 16, - "dataType": "bool" - }, - "hasrules": { - "oid": 16, - "dataType": "bool" - }, - "hastriggers": { - "oid": 16, - "dataType": "bool" - }, - "rowsecurity": { - "oid": 16, - "dataType": "bool" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "tablename": { - "oid": 19, - "dataType": "name" - }, - "tableowner": { - "oid": 19, - "dataType": "name" - }, - "tablespace": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "tablename", + "tableowner", + "tablespace", + "hasindexes", + "hasrules", + "hastriggers", + "rowsecurity" + ], + "columns": { + "hasindexes": { + "oid": 16, + "dataType": "bool" + }, + "hasrules": { + "oid": 16, + "dataType": "bool" + }, + "hastriggers": { + "oid": 16, + "dataType": "bool" + }, + "rowsecurity": { + "oid": 16, + "dataType": "bool" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "tablename": { + "oid": 19, + "dataType": "name" + }, + "tableowner": { + "oid": 19, + "dataType": "name" + }, + "tablespace": { + "oid": 19, + "dataType": "name" + } } }, "pg_tablespace": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "spcacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "spcname": { - "oid": 19, - "dataType": "name" - }, - "spcoptions": { - "oid": 1009, - "dataType": "_text" - }, - "spcowner": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "spcname", + "spcowner", + "spcacl", + "spcoptions" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "spcacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "spcname": { + "oid": 19, + "dataType": "name" + }, + "spcoptions": { + "oid": 1009, + "dataType": "_text" + }, + "spcowner": { + "oid": 26, + "dataType": "oid" + } } }, "pg_timezone_abbrevs": { - "abbrev": { - "oid": 25, - "dataType": "text" - }, - "is_dst": { - "oid": 16, - "dataType": "bool" - }, - "utc_offset": { - "oid": 1186, - "dataType": "interval" + "columnNames": [ + "abbrev", + "utc_offset", + "is_dst" + ], + "columns": { + "abbrev": { + "oid": 25, + "dataType": "text" + }, + "is_dst": { + "oid": 16, + "dataType": "bool" + }, + "utc_offset": { + "oid": 1186, + "dataType": "interval" + } } }, "pg_timezone_names": { - "abbrev": { - "oid": 25, - "dataType": "text" - }, - "is_dst": { - "oid": 16, - "dataType": "bool" - }, - "name": { - "oid": 25, - "dataType": "text" - }, - "utc_offset": { - "oid": 1186, - "dataType": "interval" + "columnNames": [ + "name", + "abbrev", + "utc_offset", + "is_dst" + ], + "columns": { + "abbrev": { + "oid": 25, + "dataType": "text" + }, + "is_dst": { + "oid": 16, + "dataType": "bool" + }, + "name": { + "oid": 25, + "dataType": "text" + }, + "utc_offset": { + "oid": 1186, + "dataType": "interval" + } } }, "pg_transform": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "trffromsql": { - "oid": 24, - "dataType": "regproc" - }, - "trflang": { - "oid": 26, - "dataType": "oid" - }, - "trftosql": { - "oid": 24, - "dataType": "regproc" - }, - "trftype": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "trftype", + "trflang", + "trffromsql", + "trftosql" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "trffromsql": { + "oid": 24, + "dataType": "regproc" + }, + "trflang": { + "oid": 26, + "dataType": "oid" + }, + "trftosql": { + "oid": 24, + "dataType": "regproc" + }, + "trftype": { + "oid": 26, + "dataType": "oid" + } } }, "pg_trigger": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "tgargs": { - "oid": 17, - "dataType": "bytea" - }, - "tgattr": { - "oid": 22, - "dataType": "int2vector" - }, - "tgconstraint": { - "oid": 26, - "dataType": "oid" - }, - "tgconstrindid": { - "oid": 26, - "dataType": "oid" - }, - "tgconstrrelid": { - "oid": 26, - "dataType": "oid" - }, - "tgdeferrable": { - "oid": 16, - "dataType": "bool" - }, - "tgenabled": { - "oid": 18, - "dataType": "char" - }, - "tgfoid": { - "oid": 26, - "dataType": "oid" - }, - "tginitdeferred": { - "oid": 16, - "dataType": "bool" - }, - "tgisinternal": { - "oid": 16, - "dataType": "bool" - }, - "tgname": { - "oid": 19, - "dataType": "name" - }, - "tgnargs": { - "oid": 21, - "dataType": "int2" - }, - "tgnewtable": { - "oid": 19, - "dataType": "name" - }, - "tgoldtable": { - "oid": 19, - "dataType": "name" - }, - "tgparentid": { - "oid": 26, - "dataType": "oid" - }, - "tgqual": { - "oid": 25, - "dataType": "TEXT" - }, - "tgrelid": { - "oid": 26, - "dataType": "oid" - }, - "tgtype": { - "oid": 21, - "dataType": "int2" + "columnNames": [ + "oid", + "tgrelid", + "tgparentid", + "tgname", + "tgfoid", + "tgtype", + "tgenabled", + "tgisinternal", + "tgconstrrelid", + "tgconstrindid", + "tgconstraint", + "tgdeferrable", + "tginitdeferred", + "tgnargs", + "tgattr", + "tgargs", + "tgqual", + "tgoldtable", + "tgnewtable" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "tgargs": { + "oid": 17, + "dataType": "bytea" + }, + "tgattr": { + "oid": 22, + "dataType": "int2vector" + }, + "tgconstraint": { + "oid": 26, + "dataType": "oid" + }, + "tgconstrindid": { + "oid": 26, + "dataType": "oid" + }, + "tgconstrrelid": { + "oid": 26, + "dataType": "oid" + }, + "tgdeferrable": { + "oid": 16, + "dataType": "bool" + }, + "tgenabled": { + "oid": 18, + "dataType": "char" + }, + "tgfoid": { + "oid": 26, + "dataType": "oid" + }, + "tginitdeferred": { + "oid": 16, + "dataType": "bool" + }, + "tgisinternal": { + "oid": 16, + "dataType": "bool" + }, + "tgname": { + "oid": 19, + "dataType": "name" + }, + "tgnargs": { + "oid": 21, + "dataType": "int2" + }, + "tgnewtable": { + "oid": 19, + "dataType": "name" + }, + "tgoldtable": { + "oid": 19, + "dataType": "name" + }, + "tgparentid": { + "oid": 26, + "dataType": "oid" + }, + "tgqual": { + "oid": 25, + "dataType": "TEXT" + }, + "tgrelid": { + "oid": 26, + "dataType": "oid" + }, + "tgtype": { + "oid": 21, + "dataType": "int2" + } } }, "pg_ts_config": { - "cfgname": { - "oid": 19, - "dataType": "name" - }, - "cfgnamespace": { - "oid": 26, - "dataType": "oid" - }, - "cfgowner": { - "oid": 26, - "dataType": "oid" - }, - "cfgparser": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "cfgname", + "cfgnamespace", + "cfgowner", + "cfgparser" + ], + "columns": { + "cfgname": { + "oid": 19, + "dataType": "name" + }, + "cfgnamespace": { + "oid": 26, + "dataType": "oid" + }, + "cfgowner": { + "oid": 26, + "dataType": "oid" + }, + "cfgparser": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_ts_config_map": { - "mapcfg": { - "oid": 26, - "dataType": "oid" - }, - "mapdict": { - "oid": 26, - "dataType": "oid" - }, - "mapseqno": { - "oid": 23, - "dataType": "int4" - }, - "maptokentype": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "mapcfg", + "maptokentype", + "mapseqno", + "mapdict" + ], + "columns": { + "mapcfg": { + "oid": 26, + "dataType": "oid" + }, + "mapdict": { + "oid": 26, + "dataType": "oid" + }, + "mapseqno": { + "oid": 23, + "dataType": "int4" + }, + "maptokentype": { + "oid": 23, + "dataType": "int4" + } } }, "pg_ts_dict": { - "dictinitoption": { - "oid": 25, - "dataType": "text" - }, - "dictname": { - "oid": 19, - "dataType": "name" - }, - "dictnamespace": { - "oid": 26, - "dataType": "oid" - }, - "dictowner": { - "oid": 26, - "dataType": "oid" - }, - "dicttemplate": { - "oid": 26, - "dataType": "oid" - }, - "oid": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "dictname", + "dictnamespace", + "dictowner", + "dicttemplate", + "dictinitoption" + ], + "columns": { + "dictinitoption": { + "oid": 25, + "dataType": "text" + }, + "dictname": { + "oid": 19, + "dataType": "name" + }, + "dictnamespace": { + "oid": 26, + "dataType": "oid" + }, + "dictowner": { + "oid": 26, + "dataType": "oid" + }, + "dicttemplate": { + "oid": 26, + "dataType": "oid" + }, + "oid": { + "oid": 26, + "dataType": "oid" + } } }, "pg_ts_parser": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "prsend": { - "oid": 24, - "dataType": "regproc" - }, - "prsheadline": { - "oid": 24, - "dataType": "regproc" - }, - "prslextype": { - "oid": 24, - "dataType": "regproc" - }, - "prsname": { - "oid": 19, - "dataType": "name" - }, - "prsnamespace": { - "oid": 26, - "dataType": "oid" - }, - "prsstart": { - "oid": 24, - "dataType": "regproc" - }, - "prstoken": { - "oid": 24, - "dataType": "regproc" + "columnNames": [ + "oid", + "prsname", + "prsnamespace", + "prsstart", + "prstoken", + "prsend", + "prsheadline", + "prslextype" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "prsend": { + "oid": 24, + "dataType": "regproc" + }, + "prsheadline": { + "oid": 24, + "dataType": "regproc" + }, + "prslextype": { + "oid": 24, + "dataType": "regproc" + }, + "prsname": { + "oid": 19, + "dataType": "name" + }, + "prsnamespace": { + "oid": 26, + "dataType": "oid" + }, + "prsstart": { + "oid": 24, + "dataType": "regproc" + }, + "prstoken": { + "oid": 24, + "dataType": "regproc" + } } }, "pg_ts_template": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "tmplinit": { - "oid": 24, - "dataType": "regproc" - }, - "tmpllexize": { - "oid": 24, - "dataType": "regproc" - }, - "tmplname": { - "oid": 19, - "dataType": "name" - }, - "tmplnamespace": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "tmplname", + "tmplnamespace", + "tmplinit", + "tmpllexize" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "tmplinit": { + "oid": 24, + "dataType": "regproc" + }, + "tmpllexize": { + "oid": 24, + "dataType": "regproc" + }, + "tmplname": { + "oid": 19, + "dataType": "name" + }, + "tmplnamespace": { + "oid": 26, + "dataType": "oid" + } } }, "pg_type": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "typacl": { - "oid": 1009, - "dataType": "_TEXT" - }, - "typalign": { - "oid": 18, - "dataType": "char" - }, - "typanalyze": { - "oid": 24, - "dataType": "regproc" - }, - "typarray": { - "oid": 26, - "dataType": "oid" - }, - "typbasetype": { - "oid": 26, - "dataType": "oid" - }, - "typbyval": { - "oid": 16, - "dataType": "bool" - }, - "typcategory": { - "oid": 18, - "dataType": "char" - }, - "typcollation": { - "oid": 26, - "dataType": "oid" - }, - "typdefault": { - "oid": 25, - "dataType": "text" - }, - "typdefaultbin": { - "oid": 25, - "dataType": "TEXT" - }, - "typdelim": { - "oid": 18, - "dataType": "char" - }, - "typelem": { - "oid": 26, - "dataType": "oid" - }, - "typinput": { - "oid": 24, - "dataType": "regproc" - }, - "typisdefined": { - "oid": 16, - "dataType": "bool" - }, - "typispreferred": { - "oid": 16, - "dataType": "bool" - }, - "typlen": { - "oid": 21, - "dataType": "int2" - }, - "typmodin": { - "oid": 24, - "dataType": "regproc" - }, - "typmodout": { - "oid": 24, - "dataType": "regproc" - }, - "typname": { - "oid": 19, - "dataType": "name" - }, - "typnamespace": { - "oid": 26, - "dataType": "oid" - }, - "typndims": { - "oid": 23, - "dataType": "int4" - }, - "typnotnull": { - "oid": 16, - "dataType": "bool" - }, - "typoutput": { - "oid": 24, - "dataType": "regproc" - }, - "typowner": { - "oid": 26, - "dataType": "oid" - }, - "typreceive": { - "oid": 24, - "dataType": "regproc" - }, - "typrelid": { - "oid": 26, - "dataType": "oid" - }, - "typsend": { - "oid": 24, - "dataType": "regproc" - }, - "typstorage": { - "oid": 18, - "dataType": "char" - }, - "typtype": { - "oid": 18, - "dataType": "char" - }, - "typtypmod": { - "oid": 23, - "dataType": "int4" + "columnNames": [ + "oid", + "typname", + "typnamespace", + "typowner", + "typlen", + "typbyval", + "typtype", + "typcategory", + "typispreferred", + "typisdefined", + "typdelim", + "typrelid", + "typelem", + "typarray", + "typinput", + "typoutput", + "typreceive", + "typsend", + "typmodin", + "typmodout", + "typanalyze", + "typalign", + "typstorage", + "typnotnull", + "typbasetype", + "typtypmod", + "typndims", + "typcollation", + "typdefaultbin", + "typdefault", + "typacl" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "typacl": { + "oid": 1009, + "dataType": "_TEXT" + }, + "typalign": { + "oid": 18, + "dataType": "char" + }, + "typanalyze": { + "oid": 24, + "dataType": "regproc" + }, + "typarray": { + "oid": 26, + "dataType": "oid" + }, + "typbasetype": { + "oid": 26, + "dataType": "oid" + }, + "typbyval": { + "oid": 16, + "dataType": "bool" + }, + "typcategory": { + "oid": 18, + "dataType": "char" + }, + "typcollation": { + "oid": 26, + "dataType": "oid" + }, + "typdefault": { + "oid": 25, + "dataType": "text" + }, + "typdefaultbin": { + "oid": 25, + "dataType": "TEXT" + }, + "typdelim": { + "oid": 18, + "dataType": "char" + }, + "typelem": { + "oid": 26, + "dataType": "oid" + }, + "typinput": { + "oid": 24, + "dataType": "regproc" + }, + "typisdefined": { + "oid": 16, + "dataType": "bool" + }, + "typispreferred": { + "oid": 16, + "dataType": "bool" + }, + "typlen": { + "oid": 21, + "dataType": "int2" + }, + "typmodin": { + "oid": 24, + "dataType": "regproc" + }, + "typmodout": { + "oid": 24, + "dataType": "regproc" + }, + "typname": { + "oid": 19, + "dataType": "name" + }, + "typnamespace": { + "oid": 26, + "dataType": "oid" + }, + "typndims": { + "oid": 23, + "dataType": "int4" + }, + "typnotnull": { + "oid": 16, + "dataType": "bool" + }, + "typoutput": { + "oid": 24, + "dataType": "regproc" + }, + "typowner": { + "oid": 26, + "dataType": "oid" + }, + "typreceive": { + "oid": 24, + "dataType": "regproc" + }, + "typrelid": { + "oid": 26, + "dataType": "oid" + }, + "typsend": { + "oid": 24, + "dataType": "regproc" + }, + "typstorage": { + "oid": 18, + "dataType": "char" + }, + "typtype": { + "oid": 18, + "dataType": "char" + }, + "typtypmod": { + "oid": 23, + "dataType": "int4" + } } }, "pg_user": { - "passwd": { - "oid": 25, - "dataType": "text" - }, - "usebypassrls": { - "oid": 16, - "dataType": "bool" - }, - "useconfig": { - "oid": 1009, - "dataType": "_text" - }, - "usecreatedb": { - "oid": 16, - "dataType": "bool" - }, - "usename": { - "oid": 19, - "dataType": "name" - }, - "userepl": { - "oid": 16, - "dataType": "bool" - }, - "usesuper": { - "oid": 16, - "dataType": "bool" - }, - "usesysid": { - "oid": 26, - "dataType": "oid" - }, - "valuntil": { - "oid": 1184, - "dataType": "timestamptz" + "columnNames": [ + "usename", + "usesysid", + "usecreatedb", + "usesuper", + "userepl", + "usebypassrls", + "passwd", + "valuntil", + "useconfig" + ], + "columns": { + "passwd": { + "oid": 25, + "dataType": "text" + }, + "usebypassrls": { + "oid": 16, + "dataType": "bool" + }, + "useconfig": { + "oid": 1009, + "dataType": "_text" + }, + "usecreatedb": { + "oid": 16, + "dataType": "bool" + }, + "usename": { + "oid": 19, + "dataType": "name" + }, + "userepl": { + "oid": 16, + "dataType": "bool" + }, + "usesuper": { + "oid": 16, + "dataType": "bool" + }, + "usesysid": { + "oid": 26, + "dataType": "oid" + }, + "valuntil": { + "oid": 1184, + "dataType": "timestamptz" + } } }, "pg_user_mapping": { - "oid": { - "oid": 26, - "dataType": "oid" - }, - "umoptions": { - "oid": 1009, - "dataType": "_text" - }, - "umserver": { - "oid": 26, - "dataType": "oid" - }, - "umuser": { - "oid": 26, - "dataType": "oid" + "columnNames": [ + "oid", + "umuser", + "umserver", + "umoptions" + ], + "columns": { + "oid": { + "oid": 26, + "dataType": "oid" + }, + "umoptions": { + "oid": 1009, + "dataType": "_text" + }, + "umserver": { + "oid": 26, + "dataType": "oid" + }, + "umuser": { + "oid": 26, + "dataType": "oid" + } } }, "pg_user_mappings": { - "srvid": { - "oid": 26, - "dataType": "oid" - }, - "srvname": { - "oid": 19, - "dataType": "name" - }, - "umid": { - "oid": 26, - "dataType": "oid" - }, - "umoptions": { - "oid": 1009, - "dataType": "_text" - }, - "umuser": { - "oid": 26, - "dataType": "oid" - }, - "usename": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "umid", + "srvid", + "srvname", + "umuser", + "usename", + "umoptions" + ], + "columns": { + "srvid": { + "oid": 26, + "dataType": "oid" + }, + "srvname": { + "oid": 19, + "dataType": "name" + }, + "umid": { + "oid": 26, + "dataType": "oid" + }, + "umoptions": { + "oid": 1009, + "dataType": "_text" + }, + "umuser": { + "oid": 26, + "dataType": "oid" + }, + "usename": { + "oid": 19, + "dataType": "name" + } } }, "pg_views": { - "definition": { - "oid": 25, - "dataType": "text" - }, - "schemaname": { - "oid": 19, - "dataType": "name" - }, - "viewname": { - "oid": 19, - "dataType": "name" - }, - "viewowner": { - "oid": 19, - "dataType": "name" + "columnNames": [ + "schemaname", + "viewname", + "viewowner", + "definition" + ], + "columns": { + "definition": { + "oid": 25, + "dataType": "text" + }, + "schemaname": { + "oid": 19, + "dataType": "name" + }, + "viewname": { + "oid": 19, + "dataType": "name" + }, + "viewowner": { + "oid": 19, + "dataType": "name" + } } } } diff --git a/pkg/sql/vtable/information_schema.go b/pkg/sql/vtable/information_schema.go index b3c2559ca211..eb9ee8546b32 100755 --- a/pkg/sql/vtable/information_schema.go +++ b/pkg/sql/vtable/information_schema.go @@ -509,528 +509,437 @@ CREATE TABLE information_schema.enabled_roles ( ROLE_NAME STRING NOT NULL )` -//InformationSchemaDataTypePrivileges is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaDataTypePrivileges = ` -CREATE TABLE information_schema.data_type_privileges ( - object_schema STRING, - object_type STRING, - dtd_identifier STRING, - object_catalog STRING, - object_name STRING +//InformationSchemaForeignDataWrapperOptions is an empty table in the information_schema that is not implemented yet +const InformationSchemaForeignDataWrapperOptions = ` +CREATE TABLE information_schema.foreign_data_wrapper_options ( + foreign_data_wrapper_catalog STRING, + foreign_data_wrapper_name STRING, + option_name STRING, + option_value STRING )` -//InformationSchemaSQLImplementationInfo is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaSQLImplementationInfo = ` -CREATE TABLE information_schema.sql_implementation_info ( - character_value STRING, - comments STRING, - implementation_info_id STRING, - implementation_info_name STRING, - integer_value INT +//InformationSchemaTransforms is an empty table in the information_schema that is not implemented yet +const InformationSchemaTransforms = ` +CREATE TABLE information_schema.transforms ( + udt_catalog STRING, + udt_schema STRING, + udt_name STRING, + specific_catalog STRING, + specific_schema STRING, + specific_name STRING, + group_name STRING, + transform_type STRING )` -//InformationSchemaForeignTableOptions is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaForeignTableOptions = ` -CREATE TABLE information_schema.foreign_table_options ( - foreign_table_catalog STRING, - foreign_table_name STRING, - foreign_table_schema STRING, - option_name STRING, - option_value STRING +//InformationSchemaViewColumnUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaViewColumnUsage = ` +CREATE TABLE information_schema.view_column_usage ( + view_catalog STRING, + view_schema STRING, + view_name STRING, + table_catalog STRING, + table_schema STRING, + table_name STRING, + column_name STRING )` -//InformationSchemaRoleRoutineGrants is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaRoleRoutineGrants = ` -CREATE TABLE information_schema.role_routine_grants ( - privilege_type STRING, - routine_catalog STRING, - specific_name STRING, - specific_schema STRING, - grantee STRING, +//InformationSchemaRoutinePrivileges is an empty table in the information_schema that is not implemented yet +const InformationSchemaRoutinePrivileges = ` +CREATE TABLE information_schema.routine_privileges ( grantor STRING, - routine_schema STRING, + grantee STRING, specific_catalog STRING, - is_grantable STRING, - routine_name STRING + specific_schema STRING, + specific_name STRING, + routine_catalog STRING, + routine_schema STRING, + routine_name STRING, + privilege_type STRING, + is_grantable STRING )` -//InformationSchemaInformationSchemaCatalogName is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaInformationSchemaCatalogName = ` -CREATE TABLE information_schema.information_schema_catalog_name ( - catalog_name STRING +//InformationSchemaRoleRoutineGrants is an empty table in the information_schema that is not implemented yet +const InformationSchemaRoleRoutineGrants = ` +CREATE TABLE information_schema.role_routine_grants ( + grantor STRING, + grantee STRING, + specific_catalog STRING, + specific_schema STRING, + specific_name STRING, + routine_catalog STRING, + routine_schema STRING, + routine_name STRING, + privilege_type STRING, + is_grantable STRING )` -//InformationSchemaUserDefinedTypes is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaUserDefinedTypes = ` -CREATE TABLE information_schema.user_defined_types ( +//InformationSchemaElementTypes is an empty table in the information_schema that is not implemented yet +const InformationSchemaElementTypes = ` +CREATE TABLE information_schema.element_types ( + object_catalog STRING, + object_schema STRING, + object_name STRING, + object_type STRING, + collection_type_identifier STRING, + data_type STRING, character_maximum_length INT, + character_octet_length INT, + character_set_catalog STRING, + character_set_schema STRING, character_set_name STRING, - interval_type STRING, - ordering_routine_catalog STRING, - reference_type STRING, - source_dtd_identifier STRING, - data_type STRING, - numeric_precision_radix INT, - ordering_routine_name STRING, - user_defined_type_catalog STRING, collation_catalog STRING, - user_defined_type_schema STRING, - character_set_schema STRING, + collation_schema STRING, collation_name STRING, - datetime_precision INT, - is_instantiable STRING, - ordering_category STRING, - ordering_routine_schema STRING, - ref_dtd_identifier STRING, numeric_precision INT, + numeric_precision_radix INT, numeric_scale INT, - ordering_form STRING, - user_defined_type_category STRING, - collation_schema STRING, - is_final STRING, - character_octet_length INT, - character_set_catalog STRING, - interval_precision INT, - user_defined_type_name STRING -)` - -//InformationSchemaForeignServerOptions is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaForeignServerOptions = ` -CREATE TABLE information_schema.foreign_server_options ( - option_value STRING, - foreign_server_catalog STRING, - foreign_server_name STRING, - option_name STRING -)` - -//InformationSchemaAttributes is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaAttributes = ` -CREATE TABLE information_schema.attributes ( - dtd_identifier STRING, + datetime_precision INT, + interval_type STRING, interval_precision INT, - maximum_cardinality INT, - numeric_precision_radix INT, - character_set_catalog STRING, - character_set_name STRING, - data_type STRING, - scope_schema STRING, + domain_default STRING, udt_catalog STRING, - attribute_udt_schema STRING, - character_set_schema STRING, - scope_catalog STRING, - attribute_udt_catalog STRING, - character_maximum_length INT, - is_derived_reference_attribute STRING, udt_schema STRING, - ordinal_position INT, - scope_name STRING, - character_octet_length INT, - datetime_precision INT, - numeric_precision INT, - interval_type STRING, - attribute_default STRING, - attribute_name STRING, - attribute_udt_name STRING, - is_nullable STRING, - numeric_scale INT, udt_name STRING, - collation_catalog STRING, - collation_name STRING, - collation_schema STRING + scope_catalog STRING, + scope_schema STRING, + scope_name STRING, + maximum_cardinality INT, + dtd_identifier STRING )` -//InformationSchemaUserMappingOptions is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaUserMappingOptions = ` -CREATE TABLE information_schema.user_mapping_options ( - authorization_identifier STRING, - foreign_server_catalog STRING, - foreign_server_name STRING, - option_name STRING, - option_value STRING +//InformationSchemaRoleUdtGrants is an empty table in the information_schema that is not implemented yet +const InformationSchemaRoleUdtGrants = ` +CREATE TABLE information_schema.role_udt_grants ( + grantor STRING, + grantee STRING, + udt_catalog STRING, + udt_schema STRING, + udt_name STRING, + privilege_type STRING, + is_grantable STRING )` -//InformationSchemaColumnColumnUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaColumnColumnUsage = ` -CREATE TABLE information_schema.column_column_usage ( - column_name STRING, - dependent_column STRING, +//InformationSchemaColumnOptions is an empty table in the information_schema that is not implemented yet +const InformationSchemaColumnOptions = ` +CREATE TABLE information_schema.column_options ( table_catalog STRING, + table_schema STRING, table_name STRING, - table_schema STRING + column_name STRING, + option_name STRING, + option_value STRING )` -//InformationSchemaDomainUdtUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaDomainUdtUsage = ` -CREATE TABLE information_schema.domain_udt_usage ( - udt_catalog STRING, - udt_name STRING, - udt_schema STRING, - domain_catalog STRING, - domain_name STRING, - domain_schema STRING +//InformationSchemaForeignTables is an empty table in the information_schema that is not implemented yet +const InformationSchemaForeignTables = ` +CREATE TABLE information_schema.foreign_tables ( + foreign_table_catalog STRING, + foreign_table_schema STRING, + foreign_table_name STRING, + foreign_server_catalog STRING, + foreign_server_name STRING )` -//InformationSchemaDomains is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaDomains = ` -CREATE TABLE information_schema.domains ( - scope_catalog STRING, - data_type STRING, - numeric_precision_radix INT, - udt_catalog STRING, - character_set_name STRING, - maximum_cardinality INT, - numeric_precision INT, - scope_schema STRING, - domain_name STRING, - dtd_identifier STRING, - interval_precision INT, - udt_schema STRING, - character_octet_length INT, - domain_schema STRING, - numeric_scale INT, - collation_schema STRING, - collation_name STRING, - domain_default STRING, - interval_type STRING, - scope_name STRING, - character_maximum_length INT, - character_set_schema STRING, - domain_catalog STRING, - udt_name STRING, - character_set_catalog STRING, - datetime_precision INT, - collation_catalog STRING +//InformationSchemaInformationSchemaCatalogName is an empty table in the information_schema that is not implemented yet +const InformationSchemaInformationSchemaCatalogName = ` +CREATE TABLE information_schema.information_schema_catalog_name ( + catalog_name STRING )` -//InformationSchemaViewRoutineUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaViewRoutineUsage = ` -CREATE TABLE information_schema.view_routine_usage ( +//InformationSchemaCheckConstraintRoutineUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaCheckConstraintRoutineUsage = ` +CREATE TABLE information_schema.check_constraint_routine_usage ( + constraint_catalog STRING, + constraint_schema STRING, + constraint_name STRING, specific_catalog STRING, - specific_name STRING, specific_schema STRING, - table_catalog STRING, - table_name STRING, - table_schema STRING + specific_name STRING )` -//InformationSchemaColumnDomainUsage is an empty table in the pg_catalog that is not implemented yet +//InformationSchemaColumnDomainUsage is an empty table in the information_schema that is not implemented yet const InformationSchemaColumnDomainUsage = ` CREATE TABLE information_schema.column_domain_usage ( - domain_name STRING, + domain_catalog STRING, domain_schema STRING, + domain_name STRING, table_catalog STRING, - table_name STRING, table_schema STRING, - column_name STRING, - domain_catalog STRING + table_name STRING, + column_name STRING )` -//InformationSchemaForeignDataWrappers is an empty table in the pg_catalog that is not implemented yet +//InformationSchemaForeignDataWrappers is an empty table in the information_schema that is not implemented yet const InformationSchemaForeignDataWrappers = ` CREATE TABLE information_schema.foreign_data_wrappers ( - authorization_identifier STRING, foreign_data_wrapper_catalog STRING, - foreign_data_wrapper_language STRING, foreign_data_wrapper_name STRING, - library_name STRING -)` - -//InformationSchemaSQLFeatures is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaSQLFeatures = ` -CREATE TABLE information_schema.sql_features ( - is_verified_by STRING, - sub_feature_id STRING, - sub_feature_name STRING, - comments STRING, - feature_id STRING, - feature_name STRING, - is_supported STRING + authorization_identifier STRING, + library_name STRING, + foreign_data_wrapper_language STRING )` -//InformationSchemaTransforms is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaTransforms = ` -CREATE TABLE information_schema.transforms ( +//InformationSchemaViewRoutineUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaViewRoutineUsage = ` +CREATE TABLE information_schema.view_routine_usage ( + table_catalog STRING, + table_schema STRING, + table_name STRING, specific_catalog STRING, - specific_name STRING, specific_schema STRING, - transform_type STRING, - udt_catalog STRING, - udt_name STRING, - udt_schema STRING, - group_name STRING + specific_name STRING )` -//InformationSchemaSQLSizing is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaSQLSizing = ` -CREATE TABLE information_schema.sql_sizing ( - comments STRING, - sizing_id INT, - sizing_name STRING, - supported_value INT +//InformationSchemaRoleColumnGrants is an empty table in the information_schema that is not implemented yet +const InformationSchemaRoleColumnGrants = ` +CREATE TABLE information_schema.role_column_grants ( + grantor STRING, + grantee STRING, + table_catalog STRING, + table_schema STRING, + table_name STRING, + column_name STRING, + privilege_type STRING, + is_grantable STRING )` -//InformationSchemaElementTypes is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaElementTypes = ` -CREATE TABLE information_schema.element_types ( +//InformationSchemaAttributes is an empty table in the information_schema that is not implemented yet +const InformationSchemaAttributes = ` +CREATE TABLE information_schema.attributes ( + udt_catalog STRING, + udt_schema STRING, udt_name STRING, + attribute_name STRING, + ordinal_position INT, + attribute_default STRING, + is_nullable STRING, + data_type STRING, character_maximum_length INT, - collation_schema STRING, - numeric_precision_radix INT, - scope_name STRING, - scope_schema STRING, character_octet_length INT, character_set_catalog STRING, - collation_name STRING, - object_schema STRING, + character_set_schema STRING, character_set_name STRING, - dtd_identifier STRING, - interval_type STRING, - udt_catalog STRING, collation_catalog STRING, - maximum_cardinality INT, - character_set_schema STRING, - interval_precision INT, - udt_schema STRING, - datetime_precision INT, - numeric_scale INT, - object_type STRING, - collection_type_identifier STRING, - data_type STRING, + collation_schema STRING, + collation_name STRING, numeric_precision INT, - domain_default STRING, - object_catalog STRING, - object_name STRING, - scope_catalog STRING -)` - -//InformationSchemaRoutinePrivileges is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaRoutinePrivileges = ` -CREATE TABLE information_schema.routine_privileges ( - grantor STRING, - routine_name STRING, - specific_catalog STRING, - specific_name STRING, - specific_schema STRING, - grantee STRING, - is_grantable STRING, - privilege_type STRING, - routine_catalog STRING, - routine_schema STRING + numeric_precision_radix INT, + numeric_scale INT, + datetime_precision INT, + interval_type STRING, + interval_precision INT, + attribute_udt_catalog STRING, + attribute_udt_schema STRING, + attribute_udt_name STRING, + scope_catalog STRING, + scope_schema STRING, + scope_name STRING, + maximum_cardinality INT, + dtd_identifier STRING, + is_derived_reference_attribute STRING )` -//InformationSchemaConstraintTableUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaConstraintTableUsage = ` -CREATE TABLE information_schema.constraint_table_usage ( - table_name STRING, - table_schema STRING, +//InformationSchemaDomainConstraints is an empty table in the information_schema that is not implemented yet +const InformationSchemaDomainConstraints = ` +CREATE TABLE information_schema.domain_constraints ( constraint_catalog STRING, - constraint_name STRING, constraint_schema STRING, - table_catalog STRING -)` - -//InformationSchemaColumnOptions is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaColumnOptions = ` -CREATE TABLE information_schema.column_options ( - column_name STRING, - option_name STRING, - option_value STRING, - table_catalog STRING, - table_name STRING, - table_schema STRING + constraint_name STRING, + domain_catalog STRING, + domain_schema STRING, + domain_name STRING, + is_deferrable STRING, + initially_deferred STRING )` -//InformationSchemaForeignServers is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaForeignServers = ` -CREATE TABLE information_schema.foreign_servers ( +//InformationSchemaUserMappings is an empty table in the information_schema that is not implemented yet +const InformationSchemaUserMappings = ` +CREATE TABLE information_schema.user_mappings ( authorization_identifier STRING, - foreign_data_wrapper_catalog STRING, - foreign_data_wrapper_name STRING, foreign_server_catalog STRING, - foreign_server_name STRING, - foreign_server_type STRING, - foreign_server_version STRING + foreign_server_name STRING )` -//InformationSchemaTriggers is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaTriggers = ` -CREATE TABLE information_schema.triggers ( - action_timing STRING, - event_manipulation STRING, - trigger_catalog STRING, - trigger_schema STRING, - event_object_table STRING, - trigger_name STRING, - action_condition STRING, - action_reference_old_row STRING, - action_statement STRING, - created TIMESTAMPTZ, - event_object_catalog STRING, - event_object_schema STRING, - action_order INT, - action_orientation STRING, - action_reference_new_row STRING, - action_reference_new_table STRING, - action_reference_old_table STRING +//InformationSchemaSQLSizing is an empty table in the information_schema that is not implemented yet +const InformationSchemaSQLSizing = ` +CREATE TABLE information_schema.sql_sizing ( + sizing_id INT, + sizing_name STRING, + supported_value INT, + comments STRING )` -//InformationSchemaDomainConstraints is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaDomainConstraints = ` -CREATE TABLE information_schema.domain_constraints ( - initially_deferred STRING, - is_deferrable STRING, - constraint_catalog STRING, - constraint_name STRING, - constraint_schema STRING, - domain_catalog STRING, - domain_name STRING, - domain_schema STRING +//InformationSchemaColumnColumnUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaColumnColumnUsage = ` +CREATE TABLE information_schema.column_column_usage ( + table_catalog STRING, + table_schema STRING, + table_name STRING, + column_name STRING, + dependent_column STRING )` -//InformationSchemaUdtPrivileges is an empty table in the pg_catalog that is not implemented yet +//InformationSchemaUdtPrivileges is an empty table in the information_schema that is not implemented yet const InformationSchemaUdtPrivileges = ` CREATE TABLE information_schema.udt_privileges ( grantor STRING, - is_grantable STRING, - privilege_type STRING, + grantee STRING, udt_catalog STRING, - udt_name STRING, udt_schema STRING, - grantee STRING + udt_name STRING, + privilege_type STRING, + is_grantable STRING )` -//InformationSchemaCheckConstraintRoutineUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaCheckConstraintRoutineUsage = ` -CREATE TABLE information_schema.check_constraint_routine_usage ( +//InformationSchemaForeignServerOptions is an empty table in the information_schema that is not implemented yet +const InformationSchemaForeignServerOptions = ` +CREATE TABLE information_schema.foreign_server_options ( + foreign_server_catalog STRING, + foreign_server_name STRING, + option_name STRING, + option_value STRING +)` + +//InformationSchemaConstraintTableUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaConstraintTableUsage = ` +CREATE TABLE information_schema.constraint_table_usage ( + table_catalog STRING, + table_schema STRING, + table_name STRING, constraint_catalog STRING, - constraint_name STRING, constraint_schema STRING, - specific_catalog STRING, - specific_name STRING, - specific_schema STRING + constraint_name STRING )` -//InformationSchemaRoleColumnGrants is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaRoleColumnGrants = ` -CREATE TABLE information_schema.role_column_grants ( - table_schema STRING, - column_name STRING, - grantee STRING, +//InformationSchemaUsagePrivileges is an empty table in the information_schema that is not implemented yet +const InformationSchemaUsagePrivileges = ` +CREATE TABLE information_schema.usage_privileges ( grantor STRING, - is_grantable STRING, + grantee STRING, + object_catalog STRING, + object_schema STRING, + object_name STRING, + object_type STRING, privilege_type STRING, - table_catalog STRING, - table_name STRING + is_grantable STRING )` -//InformationSchemaTriggeredUpdateColumns is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaTriggeredUpdateColumns = ` -CREATE TABLE information_schema.triggered_update_columns ( - event_object_catalog STRING, - event_object_column STRING, - event_object_schema STRING, - event_object_table STRING, - trigger_catalog STRING, - trigger_name STRING, - trigger_schema STRING +//InformationSchemaDomains is an empty table in the information_schema that is not implemented yet +const InformationSchemaDomains = ` +CREATE TABLE information_schema.domains ( + domain_catalog STRING, + domain_schema STRING, + domain_name STRING, + data_type STRING, + character_maximum_length INT, + character_octet_length INT, + character_set_catalog STRING, + character_set_schema STRING, + character_set_name STRING, + collation_catalog STRING, + collation_schema STRING, + collation_name STRING, + numeric_precision INT, + numeric_precision_radix INT, + numeric_scale INT, + datetime_precision INT, + interval_type STRING, + interval_precision INT, + domain_default STRING, + udt_catalog STRING, + udt_schema STRING, + udt_name STRING, + scope_catalog STRING, + scope_schema STRING, + scope_name STRING, + maximum_cardinality INT, + dtd_identifier STRING )` -//InformationSchemaForeignTables is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaForeignTables = ` -CREATE TABLE information_schema.foreign_tables ( - foreign_server_catalog STRING, - foreign_server_name STRING, +//InformationSchemaSQLImplementationInfo is an empty table in the information_schema that is not implemented yet +const InformationSchemaSQLImplementationInfo = ` +CREATE TABLE information_schema.sql_implementation_info ( + implementation_info_id STRING, + implementation_info_name STRING, + integer_value INT, + character_value STRING, + comments STRING +)` + +//InformationSchemaForeignTableOptions is an empty table in the information_schema that is not implemented yet +const InformationSchemaForeignTableOptions = ` +CREATE TABLE information_schema.foreign_table_options ( foreign_table_catalog STRING, + foreign_table_schema STRING, foreign_table_name STRING, - foreign_table_schema STRING + option_name STRING, + option_value STRING )` -//InformationSchemaUsagePrivileges is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaUsagePrivileges = ` -CREATE TABLE information_schema.usage_privileges ( - is_grantable STRING, - object_catalog STRING, - object_name STRING, - object_schema STRING, - object_type STRING, - privilege_type STRING, - grantee STRING, - grantor STRING +//InformationSchemaDomainUdtUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaDomainUdtUsage = ` +CREATE TABLE information_schema.domain_udt_usage ( + udt_catalog STRING, + udt_schema STRING, + udt_name STRING, + domain_catalog STRING, + domain_schema STRING, + domain_name STRING )` -//InformationSchemaUserMappings is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaUserMappings = ` -CREATE TABLE information_schema.user_mappings ( +//InformationSchemaUserMappingOptions is an empty table in the information_schema that is not implemented yet +const InformationSchemaUserMappingOptions = ` +CREATE TABLE information_schema.user_mapping_options ( authorization_identifier STRING, foreign_server_catalog STRING, - foreign_server_name STRING -)` - -//InformationSchemaRoleUdtGrants is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaRoleUdtGrants = ` -CREATE TABLE information_schema.role_udt_grants ( - udt_schema STRING, - grantee STRING, - grantor STRING, - is_grantable STRING, - privilege_type STRING, - udt_catalog STRING, - udt_name STRING + foreign_server_name STRING, + option_name STRING, + option_value STRING )` -//InformationSchemaViewColumnUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaViewColumnUsage = ` -CREATE TABLE information_schema.view_column_usage ( - column_name STRING, - table_catalog STRING, - table_name STRING, - table_schema STRING, - view_catalog STRING, - view_name STRING, - view_schema STRING +//InformationSchemaDataTypePrivileges is an empty table in the information_schema that is not implemented yet +const InformationSchemaDataTypePrivileges = ` +CREATE TABLE information_schema.data_type_privileges ( + object_catalog STRING, + object_schema STRING, + object_name STRING, + object_type STRING, + dtd_identifier STRING )` -//InformationSchemaForeignDataWrapperOptions is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaForeignDataWrapperOptions = ` -CREATE TABLE information_schema.foreign_data_wrapper_options ( - option_name STRING, - option_value STRING, - foreign_data_wrapper_catalog STRING, - foreign_data_wrapper_name STRING +//InformationSchemaRoleUsageGrants is an empty table in the information_schema that is not implemented yet +const InformationSchemaRoleUsageGrants = ` +CREATE TABLE information_schema.role_usage_grants ( + grantor STRING, + grantee STRING, + object_catalog STRING, + object_schema STRING, + object_name STRING, + object_type STRING, + privilege_type STRING, + is_grantable STRING )` -//InformationSchemaViewTableUsage is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaViewTableUsage = ` -CREATE TABLE information_schema.view_table_usage ( - view_catalog STRING, - view_name STRING, - view_schema STRING, - table_catalog STRING, - table_name STRING, - table_schema STRING +//InformationSchemaSQLFeatures is an empty table in the information_schema that is not implemented yet +const InformationSchemaSQLFeatures = ` +CREATE TABLE information_schema.sql_features ( + feature_id STRING, + feature_name STRING, + sub_feature_id STRING, + sub_feature_name STRING, + is_supported STRING, + is_verified_by STRING, + comments STRING )` -//InformationSchemaSQLParts is an empty table in the pg_catalog that is not implemented yet +//InformationSchemaSQLParts is an empty table in the information_schema that is not implemented yet const InformationSchemaSQLParts = ` CREATE TABLE information_schema.sql_parts ( - comments STRING, feature_id STRING, feature_name STRING, is_supported STRING, - is_verified_by STRING -)` - -//InformationSchemaRoleUsageGrants is an empty table in the pg_catalog that is not implemented yet -const InformationSchemaRoleUsageGrants = ` -CREATE TABLE information_schema.role_usage_grants ( - object_name STRING, - object_schema STRING, - object_type STRING, - privilege_type STRING, - grantee STRING, - grantor STRING, - is_grantable STRING, - object_catalog STRING + is_verified_by STRING, + comments STRING )` //InformationSchemaTablespaces is an empty table in the pg_catalog that is not implemented yet @@ -1071,6 +980,74 @@ CREATE TABLE information_schema.processlist ( db STRING )` +//InformationSchemaUserDefinedTypes is an empty table in the information_schema that is not implemented yet +const InformationSchemaUserDefinedTypes = ` +CREATE TABLE information_schema.user_defined_types ( + user_defined_type_catalog STRING, + user_defined_type_schema STRING, + user_defined_type_name STRING, + user_defined_type_category STRING, + is_instantiable STRING, + is_final STRING, + ordering_form STRING, + ordering_category STRING, + ordering_routine_catalog STRING, + ordering_routine_schema STRING, + ordering_routine_name STRING, + reference_type STRING, + data_type STRING, + character_maximum_length INT, + character_octet_length INT, + character_set_catalog STRING, + character_set_schema STRING, + character_set_name STRING, + collation_catalog STRING, + collation_schema STRING, + collation_name STRING, + numeric_precision INT, + numeric_precision_radix INT, + numeric_scale INT, + datetime_precision INT, + interval_type STRING, + interval_precision INT, + source_dtd_identifier STRING, + ref_dtd_identifier STRING +)` + +//InformationSchemaTriggeredUpdateColumns is an empty table in the information_schema that is not implemented yet +const InformationSchemaTriggeredUpdateColumns = ` +CREATE TABLE information_schema.triggered_update_columns ( + trigger_catalog STRING, + trigger_schema STRING, + trigger_name STRING, + event_object_catalog STRING, + event_object_schema STRING, + event_object_table STRING, + event_object_column STRING +)` + +//InformationSchemaTriggers is an empty table in the information_schema that is not implemented yet +const InformationSchemaTriggers = ` +CREATE TABLE information_schema.triggers ( + trigger_catalog STRING, + trigger_schema STRING, + trigger_name STRING, + event_manipulation STRING, + event_object_catalog STRING, + event_object_schema STRING, + event_object_table STRING, + action_order INT, + action_condition STRING, + action_statement STRING, + action_orientation STRING, + action_timing STRING, + action_reference_old_table STRING, + action_reference_new_table STRING, + action_reference_old_row STRING, + action_reference_new_row STRING, + created TIMESTAMPTZ +)` + //InformationSchemaTablesExtensions is an empty table in the pg_catalog that is not implemented yet const InformationSchemaTablesExtensions = ` CREATE TABLE information_schema.tables_extensions ( @@ -1081,6 +1058,17 @@ CREATE TABLE information_schema.tables_extensions ( table_schema STRING )` +//InformationSchemaViewTableUsage is an empty table in the information_schema that is not implemented yet +const InformationSchemaViewTableUsage = ` +CREATE TABLE information_schema.view_table_usage ( + view_catalog STRING, + view_schema STRING, + view_name STRING, + table_catalog STRING, + table_schema STRING, + table_name STRING +)` + //InformationSchemaProfiling is an empty table in the pg_catalog that is not implemented yet const InformationSchemaProfiling = ` CREATE TABLE information_schema.profiling ( @@ -1323,6 +1311,18 @@ CREATE TABLE information_schema.optimizer_trace ( trace STRING )` +//InformationSchemaForeignServers is an empty table in the information_schema that is not implemented yet +const InformationSchemaForeignServers = ` +CREATE TABLE information_schema.foreign_servers ( + foreign_server_catalog STRING, + foreign_server_name STRING, + foreign_data_wrapper_catalog STRING, + foreign_data_wrapper_name STRING, + foreign_server_type STRING, + foreign_server_version STRING, + authorization_identifier STRING +)` + //InformationSchemaTableConstraintsExtensions is an empty table in the pg_catalog that is not implemented yet const InformationSchemaTableConstraintsExtensions = ` CREATE TABLE information_schema.table_constraints_extensions ( diff --git a/pkg/sql/vtable/pg_catalog.go b/pkg/sql/vtable/pg_catalog.go index 0a712c2602ab..09ebaa1293e7 100644 --- a/pkg/sql/vtable/pg_catalog.go +++ b/pkg/sql/vtable/pg_catalog.go @@ -928,68 +928,6 @@ CREATE TABLE pg_catalog.pg_aggregate ( aggmfinalmodify "char" )` -// PgCatalogLargeobject is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogLargeobject = ` -CREATE TABLE pg_catalog.pg_largeobject ( - data BYTES, - loid OID, - pageno INT4 -)` - -// PgCatalogConfig is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogConfig = ` -CREATE TABLE pg_catalog.pg_config ( - name STRING, - setting STRING -)` - -// PgCatalogAvailableExtensionVersions is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogAvailableExtensionVersions = ` -CREATE TABLE pg_catalog.pg_available_extension_versions ( - trusted BOOL, - comment STRING, - relocatable BOOL, - requires NAME[], - schema NAME, - installed BOOL, - name NAME, - superuser BOOL, - version STRING -)` - -// PgCatalogPublicationRel is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogPublicationRel = ` -CREATE TABLE pg_catalog.pg_publication_rel ( - oid OID, - prpubid OID, - prrelid OID -)` - -// PgCatalogOpfamily is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogOpfamily = ` -CREATE TABLE pg_catalog.pg_opfamily ( - opfname NAME, - opfnamespace OID, - opfowner OID, - oid OID, - opfmethod OID -)` - -// PgCatalogShmemAllocations is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogShmemAllocations = ` -CREATE TABLE pg_catalog.pg_shmem_allocations ( - name STRING, - off INT, - size INT, - allocated_size INT -)` - // PgCatalogDbRoleSetting contains the default values that have been configured // for session variables, for each role and database combination. This table // contains the same data no matter which database the current session is using. @@ -1000,58 +938,6 @@ CREATE TABLE pg_catalog.pg_db_role_setting ( setrole OID )` -// PgCatalogTimezoneNames is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTimezoneNames = ` -CREATE TABLE pg_catalog.pg_timezone_names ( - abbrev STRING, - is_dst BOOL, - name STRING, - utc_offset INTERVAL -)` - -// PgCatalogPublicationTables is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogPublicationTables = ` -CREATE TABLE pg_catalog.pg_publication_tables ( - pubname NAME, - schemaname NAME, - tablename NAME -)` - -// PgCatalogUserMappings is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogUserMappings = ` -CREATE TABLE pg_catalog.pg_user_mappings ( - srvname NAME, - umid OID, - umoptions STRING[], - umuser OID, - usename NAME, - srvid OID -)` - -// PgCatalogTsTemplate is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTsTemplate = ` -CREATE TABLE pg_catalog.pg_ts_template ( - oid OID, - tmplinit REGPROC, - tmpllexize REGPROC, - tmplname NAME, - tmplnamespace OID -)` - -// PgCatalogRules is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogRules = ` -CREATE TABLE pg_catalog.pg_rules ( - definition STRING, - rulename NAME, - schemaname NAME, - tablename NAME -)` - // PgCatalogShadow is the implementation of pg_catalog.pg_shadow // see https://www.postgresql.org/docs/13/view-pg-shadow.html const PgCatalogShadow = ` @@ -1067,178 +953,6 @@ CREATE TABLE pg_catalog.pg_shadow ( useconfig STRING[] )` -// PgCatalogPublication is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogPublication = ` -CREATE TABLE pg_catalog.pg_publication ( - pubupdate BOOL, - oid OID, - puballtables BOOL, - pubdelete BOOL, - pubinsert BOOL, - pubname NAME, - pubowner OID, - pubtruncate BOOL, - pubviaroot BOOL -)` - -// PgCatalogGroup is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogGroup = ` -CREATE TABLE pg_catalog.pg_group ( - grolist OID[], - groname NAME, - grosysid OID -)` - -// PgCatalogCursors is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogCursors = ` -CREATE TABLE pg_catalog.pg_cursors ( - is_scrollable BOOL, - name STRING, - statement STRING, - creation_time TIMESTAMPTZ, - is_binary BOOL, - is_holdable BOOL -)` - -// PgCatalogTsParser is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTsParser = ` -CREATE TABLE pg_catalog.pg_ts_parser ( - prslextype REGPROC, - prsname NAME, - prsnamespace OID, - prsstart REGPROC, - prstoken REGPROC, - oid OID, - prsend REGPROC, - prsheadline REGPROC -)` - -// PgCatalogSubscription is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogSubscription = ` -CREATE TABLE pg_catalog.pg_subscription ( - subname NAME, - subpublications STRING[], - subslotname NAME, - subsynccommit STRING, - oid OID, - subconninfo STRING, - subdbid OID, - subenabled BOOL, - subowner OID -)` - -// PgCatalogAmproc is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogAmproc = ` -CREATE TABLE pg_catalog.pg_amproc ( - amproc REGPROC, - amprocfamily OID, - amproclefttype OID, - amprocnum INT2, - amprocrighttype OID, - oid OID -)` - -// PgCatalogTsDict is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTsDict = ` -CREATE TABLE pg_catalog.pg_ts_dict ( - dictinitoption STRING, - dictname NAME, - dictnamespace OID, - dictowner OID, - dicttemplate OID, - oid OID -)` - -// PgCatalogTimezoneAbbrevs is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTimezoneAbbrevs = ` -CREATE TABLE pg_catalog.pg_timezone_abbrevs ( - abbrev STRING, - is_dst BOOL, - utc_offset INTERVAL -)` - -// PgCatalogTransform is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTransform = ` -CREATE TABLE pg_catalog.pg_transform ( - trffromsql REGPROC, - trflang OID, - trftosql REGPROC, - trftype OID, - oid OID -)` - -// PgCatalogTsConfigMap is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTsConfigMap = ` -CREATE TABLE pg_catalog.pg_ts_config_map ( - mapcfg OID, - mapdict OID, - mapseqno INT4, - maptokentype INT4 -)` - -// PgCatalogFileSettings is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogFileSettings = ` -CREATE TABLE pg_catalog.pg_file_settings ( - error STRING, - name STRING, - seqno INT4, - setting STRING, - sourcefile STRING, - sourceline INT4, - applied BOOL -)` - -// PgCatalogPolicies is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogPolicies = ` -CREATE TABLE pg_catalog.pg_policies ( - with_check STRING, - cmd STRING, - permissive STRING, - policyname NAME, - qual STRING, - roles NAME[], - schemaname NAME, - tablename NAME -)` - -// PgCatalogTsConfig is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogTsConfig = ` -CREATE TABLE pg_catalog.pg_ts_config ( - cfgname NAME, - cfgnamespace OID, - cfgowner OID, - cfgparser OID, - oid OID -)` - -// PgCatalogHbaFileRules is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogHbaFileRules = ` -CREATE TABLE pg_catalog.pg_hba_file_rules ( - address STRING, - database STRING[], - line_number INT4, - netmask STRING, - type STRING, - user_name STRING[], - auth_method STRING, - error STRING, - options STRING[] -)` - // PgCatalogStatisticExt describes the schema of pg_catalog.pg_statistic_ext // https://www.postgresql.org/docs/13/catalog-pg-statistic-ext.html const PgCatalogStatisticExt = ` @@ -1253,124 +967,355 @@ CREATE TABLE pg_catalog.pg_statistic_ext ( stxkind "char"[] )` -// PgCatalogReplicationOrigin is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogReplicationOrigin = ` -CREATE TABLE pg_catalog.pg_replication_origin ( - roident OID, - roname STRING -)` - -// PgCatalogAmop is an empty table created by pg_catalog_test -// and is currently unimplemented. -const PgCatalogAmop = ` -CREATE TABLE pg_catalog.pg_amop ( - amoplefttype OID, - amopmethod OID, - amopopr OID, - amoppurpose "char", - amoprighttype OID, - oid OID, - amopfamily OID, - amopsortfamily OID, - amopstrategy INT2 +//PgCatalogSequences is an empty table in the pg_catalog that is not implemented yet +const PgCatalogSequences = ` +CREATE TABLE pg_catalog.pg_sequences ( + schemaname NAME, + sequencename NAME, + sequenceowner NAME, + data_type REGTYPE, + start_value INT, + min_value INT, + max_value INT, + increment_by INT, + cycle BOOL, + cache_size INT, + last_value INT )` -//PgCatalogLargeobjectMetadata is an empty table in the pg_catalog that is not implemented yet -const PgCatalogLargeobjectMetadata = ` -CREATE TABLE pg_catalog.pg_largeobject_metadata ( - oid OID, - lomacl STRING[], - lomowner OID +//PgCatalogStatDatabaseConflicts is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatDatabaseConflicts = ` +CREATE TABLE pg_catalog.pg_stat_database_conflicts ( + datid OID, + datname NAME, + confl_tablespace INT, + confl_lock INT, + confl_snapshot INT, + confl_bufferpin INT, + confl_deadlock INT )` -//PgCatalogPartitionedTable is an empty table in the pg_catalog that is not implemented yet -const PgCatalogPartitionedTable = ` -CREATE TABLE pg_catalog.pg_partitioned_table ( - partrelid OID, - partstrat "char", - partattrs INT2VECTOR, - partclass OIDVECTOR, - partcollation OIDVECTOR, - partdefid OID, - partexprs STRING, - partnatts INT2 +//PgCatalogReplicationOrigin is an empty table in the pg_catalog that is not implemented yet +const PgCatalogReplicationOrigin = ` +CREATE TABLE pg_catalog.pg_replication_origin ( + roident OID, + roname STRING )` -//PgCatalogReplicationOriginStatus is an empty table in the pg_catalog that is not implemented yet -const PgCatalogReplicationOriginStatus = ` -CREATE TABLE pg_catalog.pg_replication_origin_status ( - local_lsn STRING, - remote_lsn STRING, - external_id STRING, - local_id OID +//PgCatalogStatistic is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatistic = ` +CREATE TABLE pg_catalog.pg_statistic ( + starelid OID, + staattnum INT2, + stainherit BOOL, + stanullfrac FLOAT4, + stawidth INT4, + stadistinct FLOAT4, + stakind1 INT2, + stakind2 INT2, + stakind3 INT2, + stakind4 INT2, + stakind5 INT2, + staop1 OID, + staop2 OID, + staop3 OID, + staop4 OID, + staop5 OID, + stacoll1 OID, + stacoll2 OID, + stacoll3 OID, + stacoll4 OID, + stacoll5 OID, + stanumbers1 FLOAT4[], + stanumbers2 FLOAT4[], + stanumbers3 FLOAT4[], + stanumbers4 FLOAT4[], + stanumbers5 FLOAT4[], + stavalues1 STRING[], + stavalues2 STRING[], + stavalues3 STRING[], + stavalues4 STRING[], + stavalues5 STRING[] )` -//PgCatalogReplicationSlots is an empty table in the pg_catalog that is not implemented yet -const PgCatalogReplicationSlots = ` -CREATE TABLE pg_catalog.pg_replication_slots ( - safe_wal_size INT, - wal_status STRING, - plugin NAME, - restart_lsn STRING, - xmin INT, - confirmed_flush_lsn STRING, - database NAME, - datoid OID, - active BOOL, - catalog_xmin INT, - slot_name NAME, - active_pid INT4, - slot_type STRING, - temporary BOOL +//PgCatalogStatXactSysTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatXactSysTables = ` +CREATE TABLE pg_catalog.pg_stat_xact_sys_tables ( + relid OID, + schemaname NAME, + relname NAME, + seq_scan INT, + seq_tup_read INT, + idx_scan INT, + idx_tup_fetch INT, + n_tup_ins INT, + n_tup_upd INT, + n_tup_del INT, + n_tup_hot_upd INT +)` + +//PgCatalogAmop is an empty table in the pg_catalog that is not implemented yet +const PgCatalogAmop = ` +CREATE TABLE pg_catalog.pg_amop ( + oid OID, + amopfamily OID, + amoplefttype OID, + amoprighttype OID, + amopstrategy INT2, + amoppurpose "char", + amopopr OID, + amopmethod OID, + amopsortfamily OID +)` + +//PgCatalogStatProgressVacuum is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatProgressVacuum = ` +CREATE TABLE pg_catalog.pg_stat_progress_vacuum ( + pid INT4, + datid OID, + datname NAME, + relid OID, + phase STRING, + heap_blks_total INT, + heap_blks_scanned INT, + heap_blks_vacuumed INT, + index_vacuum_count INT, + max_dead_tuples INT, + num_dead_tuples INT +)` + +//PgCatalogStatSysIndexes is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatSysIndexes = ` +CREATE TABLE pg_catalog.pg_stat_sys_indexes ( + relid OID, + indexrelid OID, + schemaname NAME, + relname NAME, + indexrelname NAME, + idx_scan INT, + idx_tup_read INT, + idx_tup_fetch INT +)` + +//PgCatalogStatioAllTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioAllTables = ` +CREATE TABLE pg_catalog.pg_statio_all_tables ( + relid OID, + schemaname NAME, + relname NAME, + heap_blks_read INT, + heap_blks_hit INT, + idx_blks_read INT, + idx_blks_hit INT, + toast_blks_read INT, + toast_blks_hit INT, + tidx_blks_read INT, + tidx_blks_hit INT +)` + +//PgCatalogTsTemplate is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTsTemplate = ` +CREATE TABLE pg_catalog.pg_ts_template ( + oid OID, + tmplname NAME, + tmplnamespace OID, + tmplinit REGPROC, + tmpllexize REGPROC +)` + +//PgCatalogPublicationRel is an empty table in the pg_catalog that is not implemented yet +const PgCatalogPublicationRel = ` +CREATE TABLE pg_catalog.pg_publication_rel ( + oid OID, + prpubid OID, + prrelid OID +)` + +//PgCatalogAvailableExtensionVersions is an empty table in the pg_catalog that is not implemented yet +const PgCatalogAvailableExtensionVersions = ` +CREATE TABLE pg_catalog.pg_available_extension_versions ( + name NAME, + version STRING, + installed BOOL, + superuser BOOL, + trusted BOOL, + relocatable BOOL, + schema NAME, + requires NAME[], + comment STRING +)` + +//PgCatalogStatReplication is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatReplication = ` +CREATE TABLE pg_catalog.pg_stat_replication ( + pid INT4, + usesysid OID, + usename NAME, + application_name STRING, + client_addr INET, + client_hostname STRING, + client_port INT4, + backend_start TIMESTAMPTZ, + backend_xmin INT, + state STRING, + sent_lsn STRING, + write_lsn STRING, + flush_lsn STRING, + replay_lsn STRING, + write_lag INTERVAL, + flush_lag INTERVAL, + replay_lag INTERVAL, + sync_priority INT4, + sync_state STRING, + reply_time TIMESTAMPTZ +)` + +//PgCatalogOpfamily is an empty table in the pg_catalog that is not implemented yet +const PgCatalogOpfamily = ` +CREATE TABLE pg_catalog.pg_opfamily ( + oid OID, + opfmethod OID, + opfname NAME, + opfnamespace OID, + opfowner OID +)` + +//PgCatalogStatioAllSequences is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioAllSequences = ` +CREATE TABLE pg_catalog.pg_statio_all_sequences ( + relid OID, + schemaname NAME, + relname NAME, + blks_read INT, + blks_hit INT )` //PgCatalogInitPrivs is an empty table in the pg_catalog that is not implemented yet const PgCatalogInitPrivs = ` CREATE TABLE pg_catalog.pg_init_privs ( - classoid OID, - initprivs STRING[], objoid OID, + classoid OID, objsubid INT4, - privtype "char" + privtype "char", + initprivs STRING[] )` -//PgCatalogPolicy is an empty table in the pg_catalog that is not implemented yet -const PgCatalogPolicy = ` -CREATE TABLE pg_catalog.pg_policy ( - polrelid OID, - polroles OID[], - polwithcheck STRING, - oid OID, - polcmd "char", - polname NAME, - polpermissive BOOL, - polqual STRING +//PgCatalogStatProgressCreateIndex is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatProgressCreateIndex = ` +CREATE TABLE pg_catalog.pg_stat_progress_create_index ( + pid INT4, + datid OID, + datname NAME, + relid OID, + index_relid OID, + command STRING, + phase STRING, + lockers_total INT, + lockers_done INT, + current_locker_pid INT, + blocks_total INT, + blocks_done INT, + tuples_total INT, + tuples_done INT, + partitions_total INT, + partitions_done INT )` -//PgCatalogSequences is an empty table in the pg_catalog that is not implemented yet -const PgCatalogSequences = ` -CREATE TABLE pg_catalog.pg_sequences ( +//PgCatalogUserMappings is an empty table in the pg_catalog that is not implemented yet +const PgCatalogUserMappings = ` +CREATE TABLE pg_catalog.pg_user_mappings ( + umid OID, + srvid OID, + srvname NAME, + umuser OID, + usename NAME, + umoptions STRING[] +)` + +//PgCatalogStatGssapi is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatGssapi = ` +CREATE TABLE pg_catalog.pg_stat_gssapi ( + pid INT4, + gss_authenticated BOOL, + principal STRING, + encrypted BOOL +)` + +//PgCatalogPolicies is an empty table in the pg_catalog that is not implemented yet +const PgCatalogPolicies = ` +CREATE TABLE pg_catalog.pg_policies ( schemaname NAME, - sequencename NAME, - sequenceowner NAME, - data_type REGTYPE, - start_value INT, - min_value INT, - max_value INT, - increment_by INT, - cycle BOOL, - cache_size INT, - last_value INT + tablename NAME, + policyname NAME, + permissive STRING, + roles NAME[], + cmd STRING, + qual STRING, + with_check STRING )` -//PgCatalogSubscriptionRel is an empty table in the pg_catalog that is not implemented yet -const PgCatalogSubscriptionRel = ` -CREATE TABLE pg_catalog.pg_subscription_rel ( - srrelid OID, - srsubid OID, - srsublsn STRING, - srsubstate "char" +//PgCatalogStatsExt is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatsExt = ` +CREATE TABLE pg_catalog.pg_stats_ext ( + schemaname NAME, + tablename NAME, + statistics_schemaname NAME, + statistics_name NAME, + statistics_owner NAME, + attnames NAME[], + kinds "char"[], + n_distinct BYTES, + dependencies BYTES, + most_common_vals STRING[], + most_common_val_nulls BOOL[], + most_common_freqs FLOAT[], + most_common_base_freqs FLOAT[] +)` + +//PgCatalogTimezoneAbbrevs is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTimezoneAbbrevs = ` +CREATE TABLE pg_catalog.pg_timezone_abbrevs ( + abbrev STRING, + utc_offset INTERVAL, + is_dst BOOL +)` + +//PgCatalogStatSysTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatSysTables = ` +CREATE TABLE pg_catalog.pg_stat_sys_tables ( + relid OID, + schemaname NAME, + relname NAME, + seq_scan INT, + seq_tup_read INT, + idx_scan INT, + idx_tup_fetch INT, + n_tup_ins INT, + n_tup_upd INT, + n_tup_del INT, + n_tup_hot_upd INT, + n_live_tup INT, + n_dead_tup INT, + n_mod_since_analyze INT, + n_ins_since_vacuum INT, + last_vacuum TIMESTAMPTZ, + last_autovacuum TIMESTAMPTZ, + last_analyze TIMESTAMPTZ, + last_autoanalyze TIMESTAMPTZ, + vacuum_count INT, + autovacuum_count INT, + analyze_count INT, + autoanalyze_count INT +)` + +//PgCatalogStatioSysSequences is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioSysSequences = ` +CREATE TABLE pg_catalog.pg_statio_sys_sequences ( + relid OID, + schemaname NAME, + relname NAME, + blks_read INT, + blks_hit INT )` //PgCatalogStatDatabase is an empty table in the pg_catalog that is not implemented yet @@ -1380,7 +1325,7 @@ CREATE TABLE pg_catalog.pg_stat_database ( datname NAME, numbackends INT4, xact_commit INT, - xact_rollback INT, + xact_rollback INT, blks_read INT, blks_hit INT, tup_returned INT, @@ -1399,221 +1344,313 @@ CREATE TABLE pg_catalog.pg_stat_database ( stats_reset TIMESTAMPTZ )` -//PgCatalogStatDatabaseConflicts is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatDatabaseConflicts = ` -CREATE TABLE pg_catalog.pg_stat_database_conflicts ( - datid OID, - datname NAME, - confl_tablespace INT, - confl_lock INT, - confl_snapshot INT, - confl_bufferpin INT, - confl_deadlock INT +//PgCatalogStatioUserIndexes is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioUserIndexes = ` +CREATE TABLE pg_catalog.pg_statio_user_indexes ( + relid OID, + indexrelid OID, + schemaname NAME, + relname NAME, + indexrelname NAME, + idx_blks_read INT, + idx_blks_hit INT +)` + +//PgCatalogStatSsl is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatSsl = ` +CREATE TABLE pg_catalog.pg_stat_ssl ( + pid INT4, + ssl BOOL, + version STRING, + cipher STRING, + bits INT4, + compression BOOL, + client_dn STRING, + client_serial DECIMAL, + issuer_dn STRING +)` + +//PgCatalogStatioAllIndexes is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioAllIndexes = ` +CREATE TABLE pg_catalog.pg_statio_all_indexes ( + relid OID, + indexrelid OID, + schemaname NAME, + relname NAME, + indexrelname NAME, + idx_blks_read INT, + idx_blks_hit INT +)` + +//PgCatalogTsConfig is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTsConfig = ` +CREATE TABLE pg_catalog.pg_ts_config ( + oid OID, + cfgname NAME, + cfgnamespace OID, + cfgowner OID, + cfgparser OID +)` + +//PgCatalogStats is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStats = ` +CREATE TABLE pg_catalog.pg_stats ( + schemaname NAME, + tablename NAME, + attname NAME, + inherited BOOL, + null_frac FLOAT4, + avg_width INT4, + n_distinct FLOAT4, + most_common_vals STRING[], + most_common_freqs FLOAT4[], + histogram_bounds STRING[], + correlation FLOAT4, + most_common_elems STRING[], + most_common_elem_freqs FLOAT4[], + elem_count_histogram FLOAT4[] +)` + +//PgCatalogStatAllTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatAllTables = ` +CREATE TABLE pg_catalog.pg_stat_all_tables ( + relid OID, + schemaname NAME, + relname NAME, + seq_scan INT, + seq_tup_read INT, + idx_scan INT, + idx_tup_fetch INT, + n_tup_ins INT, + n_tup_upd INT, + n_tup_del INT, + n_tup_hot_upd INT, + n_live_tup INT, + n_dead_tup INT, + n_mod_since_analyze INT, + n_ins_since_vacuum INT, + last_vacuum TIMESTAMPTZ, + last_autovacuum TIMESTAMPTZ, + last_analyze TIMESTAMPTZ, + last_autoanalyze TIMESTAMPTZ, + vacuum_count INT, + autovacuum_count INT, + analyze_count INT, + autoanalyze_count INT )` -//PgCatalogStatAllIndexes is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatAllIndexes = ` -CREATE TABLE pg_catalog.pg_stat_all_indexes ( - schemaname NAME, - idx_scan INT, - idx_tup_fetch INT, - idx_tup_read INT, - indexrelid OID, - indexrelname NAME, +//PgCatalogStatioSysTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioSysTables = ` +CREATE TABLE pg_catalog.pg_statio_sys_tables ( relid OID, - relname NAME + schemaname NAME, + relname NAME, + heap_blks_read INT, + heap_blks_hit INT, + idx_blks_read INT, + idx_blks_hit INT, + toast_blks_read INT, + toast_blks_hit INT, + tidx_blks_read INT, + tidx_blks_hit INT )` -//PgCatalogStatioSysIndexes is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioSysIndexes = ` -CREATE TABLE pg_catalog.pg_statio_sys_indexes ( - idx_blks_read INT, - indexrelid OID, - indexrelname NAME, - relid OID, - relname NAME, +//PgCatalogStatXactUserFunctions is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatXactUserFunctions = ` +CREATE TABLE pg_catalog.pg_stat_xact_user_functions ( + funcid OID, schemaname NAME, - idx_blks_hit INT + funcname NAME, + calls INT, + total_time FLOAT, + self_time FLOAT )` //PgCatalogStatUserFunctions is an empty table in the pg_catalog that is not implemented yet const PgCatalogStatUserFunctions = ` CREATE TABLE pg_catalog.pg_stat_user_functions ( - calls INT, funcid OID, - funcname NAME, schemaname NAME, - self_time FLOAT, - total_time FLOAT + funcname NAME, + calls INT, + total_time FLOAT, + self_time FLOAT +)` + +//PgCatalogStatProgressBasebackup is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatProgressBasebackup = ` +CREATE TABLE pg_catalog.pg_stat_progress_basebackup ( + pid INT4, + phase STRING, + backup_total INT, + backup_streamed INT, + tablespaces_total INT, + tablespaces_streamed INT +)` + +//PgCatalogPolicy is an empty table in the pg_catalog that is not implemented yet +const PgCatalogPolicy = ` +CREATE TABLE pg_catalog.pg_policy ( + oid OID, + polname NAME, + polrelid OID, + polcmd "char", + polpermissive BOOL, + polroles OID[], + polqual STRING, + polwithcheck STRING )` //PgCatalogStatArchiver is an empty table in the pg_catalog that is not implemented yet const PgCatalogStatArchiver = ` CREATE TABLE pg_catalog.pg_stat_archiver ( - stats_reset TIMESTAMPTZ, archived_count INT, - failed_count INT, - last_archived_time TIMESTAMPTZ, last_archived_wal STRING, + last_archived_time TIMESTAMPTZ, + failed_count INT, + last_failed_wal STRING, last_failed_time TIMESTAMPTZ, - last_failed_wal STRING + stats_reset TIMESTAMPTZ )` -//PgCatalogStatProgressCluster is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatProgressCluster = ` -CREATE TABLE pg_catalog.pg_stat_progress_cluster ( - cluster_index_relid OID, - command STRING, - datid OID, - heap_tuples_scanned INT, - phase STRING, - datname NAME, - heap_blks_scanned INT, - heap_blks_total INT, - heap_tuples_written INT, - index_rebuild_count INT, - pid INT4, - relid OID +//PgCatalogStatXactAllTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatXactAllTables = ` +CREATE TABLE pg_catalog.pg_stat_xact_all_tables ( + relid OID, + schemaname NAME, + relname NAME, + seq_scan INT, + seq_tup_read INT, + idx_scan INT, + idx_tup_fetch INT, + n_tup_ins INT, + n_tup_upd INT, + n_tup_del INT, + n_tup_hot_upd INT )` -//PgCatalogStatBgwriter is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatBgwriter = ` -CREATE TABLE pg_catalog.pg_stat_bgwriter ( - buffers_backend INT, - buffers_clean INT, - checkpoint_sync_time FLOAT, - checkpoints_req INT, - checkpoints_timed INT, - maxwritten_clean INT, - stats_reset TIMESTAMPTZ, - buffers_alloc INT, - buffers_backend_fsync INT, - buffers_checkpoint INT, - checkpoint_write_time FLOAT +//PgCatalogHbaFileRules is an empty table in the pg_catalog that is not implemented yet +const PgCatalogHbaFileRules = ` +CREATE TABLE pg_catalog.pg_hba_file_rules ( + line_number INT4, + type STRING, + database STRING[], + user_name STRING[], + address STRING, + netmask STRING, + auth_method STRING, + options STRING[], + error STRING +)` + +//PgCatalogPublication is an empty table in the pg_catalog that is not implemented yet +const PgCatalogPublication = ` +CREATE TABLE pg_catalog.pg_publication ( + oid OID, + pubname NAME, + pubowner OID, + puballtables BOOL, + pubinsert BOOL, + pubupdate BOOL, + pubdelete BOOL, + pubtruncate BOOL, + pubviaroot BOOL +)` + +//PgCatalogAmproc is an empty table in the pg_catalog that is not implemented yet +const PgCatalogAmproc = ` +CREATE TABLE pg_catalog.pg_amproc ( + oid OID, + amprocfamily OID, + amproclefttype OID, + amprocrighttype OID, + amprocnum INT2, + amproc REGPROC )` //PgCatalogStatProgressAnalyze is an empty table in the pg_catalog that is not implemented yet const PgCatalogStatProgressAnalyze = ` CREATE TABLE pg_catalog.pg_stat_progress_analyze ( - child_tables_total INT, - current_child_table_relid OID, - datid OID, - ext_stats_computed INT, pid INT4, - sample_blks_total INT, - child_tables_done INT, - ext_stats_total INT, - phase STRING, + datid OID, + datname NAME, relid OID, + phase STRING, + sample_blks_total INT, sample_blks_scanned INT, - datname NAME + ext_stats_total INT, + ext_stats_computed INT, + child_tables_total INT, + child_tables_done INT, + current_child_table_relid OID )` -//PgCatalogStatioAllIndexes is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioAllIndexes = ` -CREATE TABLE pg_catalog.pg_statio_all_indexes ( - idx_blks_read INT, - indexrelid OID, - indexrelname NAME, - relid OID, - relname NAME, - schemaname NAME, - idx_blks_hit INT +//PgCatalogStatSlru is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatSlru = ` +CREATE TABLE pg_catalog.pg_stat_slru ( + name STRING, + blks_zeroed INT, + blks_hit INT, + blks_read INT, + blks_written INT, + blks_exists INT, + flushes INT, + truncates INT, + stats_reset TIMESTAMPTZ )` -//PgCatalogStatXactUserFunctions is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatXactUserFunctions = ` -CREATE TABLE pg_catalog.pg_stat_xact_user_functions ( - calls INT, - funcid OID, - funcname NAME, - schemaname NAME, - self_time FLOAT, - total_time FLOAT +//PgCatalogFileSettings is an empty table in the pg_catalog that is not implemented yet +const PgCatalogFileSettings = ` +CREATE TABLE pg_catalog.pg_file_settings ( + sourcefile STRING, + sourceline INT4, + seqno INT4, + name STRING, + setting STRING, + applied BOOL, + error STRING )` -//PgCatalogStatioAllTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioAllTables = ` -CREATE TABLE pg_catalog.pg_statio_all_tables ( - idx_blks_hit INT, - idx_blks_read INT, - relid OID, - relname NAME, - tidx_blks_hit INT, - toast_blks_hit INT, - heap_blks_hit INT, - heap_blks_read INT, - toast_blks_read INT, - schemaname NAME, - tidx_blks_read INT +//PgCatalogCursors is an empty table in the pg_catalog that is not implemented yet +const PgCatalogCursors = ` +CREATE TABLE pg_catalog.pg_cursors ( + name STRING, + statement STRING, + is_holdable BOOL, + is_binary BOOL, + is_scrollable BOOL, + creation_time TIMESTAMPTZ )` -//PgCatalogStatProgressCreateIndex is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatProgressCreateIndex = ` -CREATE TABLE pg_catalog.pg_stat_progress_create_index ( - blocks_done INT, - index_relid OID, - lockers_total INT, - partitions_done INT, - partitions_total INT, - blocks_total INT, - command STRING, - current_locker_pid INT, - datid OID, - pid INT4, - datname NAME, - lockers_done INT, - relid OID, - tuples_done INT, - phase STRING, - tuples_total INT +//PgCatalogRules is an empty table in the pg_catalog that is not implemented yet +const PgCatalogRules = ` +CREATE TABLE pg_catalog.pg_rules ( + schemaname NAME, + tablename NAME, + rulename NAME, + definition STRING )` //PgCatalogStatioUserSequences is an empty table in the pg_catalog that is not implemented yet const PgCatalogStatioUserSequences = ` CREATE TABLE pg_catalog.pg_statio_user_sequences ( - blks_read INT, relid OID, - relname NAME, - schemaname NAME, - blks_hit INT -)` - -//PgCatalogStatReplication is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatReplication = ` -CREATE TABLE pg_catalog.pg_stat_replication ( - application_name STRING, - backend_xmin INT, - replay_lsn STRING, - usesysid OID, - sent_lsn STRING, - sync_priority INT4, - sync_state STRING, - usename NAME, - backend_start TIMESTAMPTZ, - client_addr INET, - flush_lag INTERVAL, - pid INT4, - write_lag INTERVAL, - client_hostname STRING, - flush_lsn STRING, - write_lsn STRING, - client_port INT4, - replay_lag INTERVAL, - reply_time TIMESTAMPTZ, - state STRING + schemaname NAME, + relname NAME, + blks_read INT, + blks_hit INT )` -//PgCatalogStatSysIndexes is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatSysIndexes = ` -CREATE TABLE pg_catalog.pg_stat_sys_indexes ( - idx_tup_read INT, - indexrelid OID, - indexrelname NAME, +//PgCatalogStatUserIndexes is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatUserIndexes = ` +CREATE TABLE pg_catalog.pg_stat_user_indexes ( relid OID, - relname NAME, + indexrelid OID, schemaname NAME, + relname NAME, + indexrelname NAME, idx_scan INT, + idx_tup_read INT, idx_tup_fetch INT )` @@ -1621,387 +1658,323 @@ CREATE TABLE pg_catalog.pg_stat_sys_indexes ( const PgCatalogStatXactUserTables = ` CREATE TABLE pg_catalog.pg_stat_xact_user_tables ( relid OID, - relname NAME, schemaname NAME, - n_tup_upd INT, - idx_tup_fetch INT, - n_tup_del INT, - n_tup_hot_upd INT, - n_tup_ins INT, + relname NAME, seq_scan INT, seq_tup_read INT, - idx_scan INT -)` - -//PgCatalogStatUserTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatUserTables = ` -CREATE TABLE pg_catalog.pg_stat_user_tables ( - n_ins_since_vacuum INT, - n_tup_hot_upd INT, - schemaname NAME, - analyze_count INT, - autovacuum_count INT, - last_autoanalyze TIMESTAMPTZ, - n_dead_tup INT, - n_live_tup INT, - n_tup_del INT, - n_tup_ins INT, - seq_tup_read INT, - autoanalyze_count INT, - last_analyze TIMESTAMPTZ, - n_mod_since_analyze INT, - relid OID, - relname NAME, - vacuum_count INT, idx_scan INT, - last_autovacuum TIMESTAMPTZ, - n_tup_upd INT, - seq_scan INT, idx_tup_fetch INT, - last_vacuum TIMESTAMPTZ -)` - -//PgCatalogStatAllTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatAllTables = ` -CREATE TABLE pg_catalog.pg_stat_all_tables ( - n_ins_since_vacuum INT, - seq_scan INT, - analyze_count INT, - autovacuum_count INT, - last_vacuum TIMESTAMPTZ, - n_dead_tup INT, - n_tup_hot_upd INT, n_tup_ins INT, - relid OID, - relname NAME, - autoanalyze_count INT, - idx_scan INT, - last_autoanalyze TIMESTAMPTZ, - n_mod_since_analyze INT, n_tup_upd INT, - vacuum_count INT, - last_analyze TIMESTAMPTZ, - last_autovacuum TIMESTAMPTZ, - n_live_tup INT, n_tup_del INT, - idx_tup_fetch INT, + n_tup_hot_upd INT +)` + +//PgCatalogPublicationTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogPublicationTables = ` +CREATE TABLE pg_catalog.pg_publication_tables ( + pubname NAME, schemaname NAME, - seq_tup_read INT + tablename NAME )` -//PgCatalogStatioUserTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioUserTables = ` -CREATE TABLE pg_catalog.pg_statio_user_tables ( - heap_blks_hit INT, - heap_blks_read INT, - tidx_blks_read INT, - toast_blks_hit INT, - toast_blks_read INT, - idx_blks_hit INT, - idx_blks_read INT, +//PgCatalogStatProgressCluster is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatProgressCluster = ` +CREATE TABLE pg_catalog.pg_stat_progress_cluster ( + pid INT4, + datid OID, + datname NAME, relid OID, - relname NAME, - schemaname NAME, - tidx_blks_hit INT + command STRING, + phase STRING, + cluster_index_relid OID, + heap_tuples_scanned INT, + heap_tuples_written INT, + heap_blks_total INT, + heap_blks_scanned INT, + index_rebuild_count INT )` -//PgCatalogStatUserIndexes is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatUserIndexes = ` -CREATE TABLE pg_catalog.pg_stat_user_indexes ( - indexrelname NAME, +//PgCatalogGroup is an empty table in the pg_catalog that is not implemented yet +const PgCatalogGroup = ` +CREATE TABLE pg_catalog.pg_group ( + groname NAME, + grosysid OID, + grolist OID[] +)` + +//PgCatalogStatAllIndexes is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatAllIndexes = ` +CREATE TABLE pg_catalog.pg_stat_all_indexes ( relid OID, - relname NAME, + indexrelid OID, schemaname NAME, + relname NAME, + indexrelname NAME, idx_scan INT, - idx_tup_fetch INT, idx_tup_read INT, - indexrelid OID + idx_tup_fetch INT )` -//PgCatalogStatXactSysTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatXactSysTables = ` -CREATE TABLE pg_catalog.pg_stat_xact_sys_tables ( - idx_scan INT, - idx_tup_fetch INT, - n_tup_del INT, - relid OID, - schemaname NAME, - n_tup_hot_upd INT, - n_tup_ins INT, - n_tup_upd INT, - relname NAME, - seq_scan INT, - seq_tup_read INT +//PgCatalogTsConfigMap is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTsConfigMap = ` +CREATE TABLE pg_catalog.pg_ts_config_map ( + mapcfg OID, + maptokentype INT4, + mapseqno INT4, + mapdict OID )` -//PgCatalogStatioSysTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioSysTables = ` -CREATE TABLE pg_catalog.pg_statio_sys_tables ( - toast_blks_hit INT, - heap_blks_hit INT, - idx_blks_hit INT, - relname NAME, - tidx_blks_hit INT, - tidx_blks_read INT, - heap_blks_read INT, - idx_blks_read INT, - relid OID, - schemaname NAME, - toast_blks_read INT +//PgCatalogStatBgwriter is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatBgwriter = ` +CREATE TABLE pg_catalog.pg_stat_bgwriter ( + checkpoints_timed INT, + checkpoints_req INT, + checkpoint_write_time FLOAT, + checkpoint_sync_time FLOAT, + buffers_checkpoint INT, + buffers_clean INT, + maxwritten_clean INT, + buffers_backend INT, + buffers_backend_fsync INT, + buffers_alloc INT, + stats_reset TIMESTAMPTZ )` -//PgCatalogStatGssapi is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatGssapi = ` -CREATE TABLE pg_catalog.pg_stat_gssapi ( - encrypted BOOL, - gss_authenticated BOOL, - pid INT4, - principal STRING +//PgCatalogTransform is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTransform = ` +CREATE TABLE pg_catalog.pg_transform ( + oid OID, + trftype OID, + trflang OID, + trffromsql REGPROC, + trftosql REGPROC )` -//PgCatalogStatSlru is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatSlru = ` -CREATE TABLE pg_catalog.pg_stat_slru ( - blks_exists INT, - name STRING, - truncates INT, - flushes INT, - stats_reset TIMESTAMPTZ, - blks_hit INT, - blks_read INT, - blks_written INT, - blks_zeroed INT +//PgCatalogTsParser is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTsParser = ` +CREATE TABLE pg_catalog.pg_ts_parser ( + oid OID, + prsname NAME, + prsnamespace OID, + prsstart REGPROC, + prstoken REGPROC, + prsend REGPROC, + prsheadline REGPROC, + prslextype REGPROC )` -//PgCatalogStatXactAllTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatXactAllTables = ` -CREATE TABLE pg_catalog.pg_stat_xact_all_tables ( - relname NAME, - schemaname NAME, - seq_scan INT, - idx_scan INT, - idx_tup_fetch INT, - n_tup_del INT, - n_tup_hot_upd INT, - n_tup_ins INT, - seq_tup_read INT, - n_tup_upd INT, - relid OID +//PgCatalogStatisticExtData is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatisticExtData = ` +CREATE TABLE pg_catalog.pg_statistic_ext_data ( + stxoid OID, + stxdndistinct BYTES, + stxddependencies BYTES, + stxdmcv BYTES )` -//PgCatalogStatioUserIndexes is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioUserIndexes = ` -CREATE TABLE pg_catalog.pg_statio_user_indexes ( - indexrelname NAME, +//PgCatalogLargeobjectMetadata is an empty table in the pg_catalog that is not implemented yet +const PgCatalogLargeobjectMetadata = ` +CREATE TABLE pg_catalog.pg_largeobject_metadata ( + oid OID, + lomowner OID, + lomacl STRING[] +)` + +//PgCatalogReplicationSlots is an empty table in the pg_catalog that is not implemented yet +const PgCatalogReplicationSlots = ` +CREATE TABLE pg_catalog.pg_replication_slots ( + slot_name NAME, + plugin NAME, + slot_type STRING, + datoid OID, + database NAME, + temporary BOOL, + active BOOL, + active_pid INT4, + xmin INT, + catalog_xmin INT, + restart_lsn STRING, + confirmed_flush_lsn STRING, + wal_status STRING, + safe_wal_size INT +)` + +//PgCatalogSubscriptionRel is an empty table in the pg_catalog that is not implemented yet +const PgCatalogSubscriptionRel = ` +CREATE TABLE pg_catalog.pg_subscription_rel ( + srsubid OID, + srrelid OID, + srsubstate "char", + srsublsn STRING +)` + +//PgCatalogStatioUserTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioUserTables = ` +CREATE TABLE pg_catalog.pg_statio_user_tables ( relid OID, - relname NAME, schemaname NAME, - idx_blks_hit INT, + relname NAME, + heap_blks_read INT, + heap_blks_hit INT, idx_blks_read INT, - indexrelid OID + idx_blks_hit INT, + toast_blks_read INT, + toast_blks_hit INT, + tidx_blks_read INT, + tidx_blks_hit INT )` -//PgCatalogStatioSysSequences is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioSysSequences = ` -CREATE TABLE pg_catalog.pg_statio_sys_sequences ( - schemaname NAME, - blks_hit INT, - blks_read INT, - relid OID, - relname NAME +//PgCatalogTimezoneNames is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTimezoneNames = ` +CREATE TABLE pg_catalog.pg_timezone_names ( + name STRING, + abbrev STRING, + utc_offset INTERVAL, + is_dst BOOL )` -//PgCatalogStatSubscription is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatSubscription = ` -CREATE TABLE pg_catalog.pg_stat_subscription ( - last_msg_receipt_time TIMESTAMPTZ, - last_msg_send_time TIMESTAMPTZ, - latest_end_lsn STRING, - latest_end_time TIMESTAMPTZ, - relid OID, - pid INT4, - received_lsn STRING, - subid OID, - subname NAME +//PgCatalogPartitionedTable is an empty table in the pg_catalog that is not implemented yet +const PgCatalogPartitionedTable = ` +CREATE TABLE pg_catalog.pg_partitioned_table ( + partrelid OID, + partstrat "char", + partnatts INT2, + partdefid OID, + partattrs INT2VECTOR, + partclass OIDVECTOR, + partcollation OIDVECTOR, + partexprs STRING )` -//PgCatalogStatProgressBasebackup is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatProgressBasebackup = ` -CREATE TABLE pg_catalog.pg_stat_progress_basebackup ( - backup_streamed INT, - backup_total INT, - phase STRING, - pid INT4, - tablespaces_streamed INT, - tablespaces_total INT +//PgCatalogStatioSysIndexes is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatioSysIndexes = ` +CREATE TABLE pg_catalog.pg_statio_sys_indexes ( + relid OID, + indexrelid OID, + schemaname NAME, + relname NAME, + indexrelname NAME, + idx_blks_read INT, + idx_blks_hit INT )` -//PgCatalogStatWalReceiver is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatWalReceiver = ` -CREATE TABLE pg_catalog.pg_stat_wal_receiver ( - latest_end_time TIMESTAMPTZ, - pid INT4, - sender_port INT4, - slot_name STRING, - last_msg_receipt_time TIMESTAMPTZ, - receive_start_lsn STRING, - conninfo STRING, - received_tli INT4, - sender_host STRING, - flushed_lsn STRING, - last_msg_send_time TIMESTAMPTZ, - latest_end_lsn STRING, - receive_start_tli INT4, - status STRING, - written_lsn STRING +//PgCatalogConfig is an empty table in the pg_catalog that is not implemented yet +const PgCatalogConfig = ` +CREATE TABLE pg_catalog.pg_config ( + name STRING, + setting STRING )` -//PgCatalogStatSysTables is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatSysTables = ` -CREATE TABLE pg_catalog.pg_stat_sys_tables ( +//PgCatalogStatUserTables is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatUserTables = ` +CREATE TABLE pg_catalog.pg_stat_user_tables ( + relid OID, + schemaname NAME, relname NAME, + seq_scan INT, + seq_tup_read INT, idx_scan INT, + idx_tup_fetch INT, + n_tup_ins INT, + n_tup_upd INT, + n_tup_del INT, + n_tup_hot_upd INT, + n_live_tup INT, n_dead_tup INT, + n_mod_since_analyze INT, n_ins_since_vacuum INT, - analyze_count INT, - last_autovacuum TIMESTAMPTZ, last_vacuum TIMESTAMPTZ, - n_tup_upd INT, - seq_tup_read INT, - n_tup_del INT, - autoanalyze_count INT, - autovacuum_count INT, - idx_tup_fetch INT, + last_autovacuum TIMESTAMPTZ, last_analyze TIMESTAMPTZ, last_autoanalyze TIMESTAMPTZ, - n_live_tup INT, - n_mod_since_analyze INT, - n_tup_hot_upd INT, - n_tup_ins INT, - relid OID, - schemaname NAME, - seq_scan INT, - vacuum_count INT + vacuum_count INT, + autovacuum_count INT, + analyze_count INT, + autoanalyze_count INT )` -//PgCatalogStatSsl is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatSsl = ` -CREATE TABLE pg_catalog.pg_stat_ssl ( - issuer_dn STRING, - version STRING, - client_serial DECIMAL, - compression BOOL, - pid INT4, - ssl BOOL, - bits INT4, - cipher STRING, - client_dn STRING +//PgCatalogSubscription is an empty table in the pg_catalog that is not implemented yet +const PgCatalogSubscription = ` +CREATE TABLE pg_catalog.pg_subscription ( + oid OID, + subdbid OID, + subname NAME, + subowner OID, + subenabled BOOL, + subconninfo STRING, + subslotname NAME, + subsynccommit STRING, + subpublications STRING[] )` -//PgCatalogStatioAllSequences is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatioAllSequences = ` -CREATE TABLE pg_catalog.pg_statio_all_sequences ( - blks_hit INT, - blks_read INT, - relid OID, - relname NAME, - schemaname NAME +//PgCatalogTsDict is an empty table in the pg_catalog that is not implemented yet +const PgCatalogTsDict = ` +CREATE TABLE pg_catalog.pg_ts_dict ( + oid OID, + dictname NAME, + dictnamespace OID, + dictowner OID, + dicttemplate OID, + dictinitoption STRING )` -//PgCatalogStatProgressVacuum is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatProgressVacuum = ` -CREATE TABLE pg_catalog.pg_stat_progress_vacuum ( - datname NAME, - heap_blks_scanned INT, - heap_blks_total INT, - index_vacuum_count INT, - pid INT4, - relid OID, - datid OID, - heap_blks_vacuumed INT, - max_dead_tuples INT, - num_dead_tuples INT, - phase STRING +//PgCatalogLargeobject is an empty table in the pg_catalog that is not implemented yet +const PgCatalogLargeobject = ` +CREATE TABLE pg_catalog.pg_largeobject ( + loid OID, + pageno INT4, + data BYTES )` -//PgCatalogStatistic is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatistic = ` -CREATE TABLE pg_catalog.pg_statistic ( - stakind2 INT2, - stanumbers2 FLOAT4[], - stanumbers3 FLOAT4[], - staop5 OID, - stacoll3 OID, - stainherit BOOL, - stakind3 INT2, - stavalues5 STRING[], - staattnum INT2, - stacoll1 OID, - stacoll4 OID, - stanullfrac FLOAT4, - stavalues1 STRING[], - stawidth INT4, - stacoll2 OID, - stanumbers4 FLOAT4[], - stanumbers5 FLOAT4[], - staop2 OID, - stavalues3 STRING[], - stakind4 INT2, - staop1 OID, - staop4 OID, - stacoll5 OID, - stakind5 INT2, - staop3 OID, - stavalues2 STRING[], - stavalues4 STRING[], - stakind1 INT2, - stanumbers1 FLOAT4[], - starelid OID, - stadistinct FLOAT4 +//PgCatalogReplicationOriginStatus is an empty table in the pg_catalog that is not implemented yet +const PgCatalogReplicationOriginStatus = ` +CREATE TABLE pg_catalog.pg_replication_origin_status ( + local_id OID, + external_id STRING, + remote_lsn STRING, + local_lsn STRING )` -//PgCatalogStats is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStats = ` -CREATE TABLE pg_catalog.pg_stats ( - histogram_bounds STRING[], - most_common_elem_freqs FLOAT4[], - most_common_elems STRING[], - most_common_vals STRING[], - attname NAME, - inherited BOOL, - n_distinct FLOAT4, - schemaname NAME, - correlation FLOAT4, - null_frac FLOAT4, - elem_count_histogram FLOAT4[], - most_common_freqs FLOAT4[], - tablename NAME, - avg_width INT4 +//PgCatalogShmemAllocations is an empty table in the pg_catalog that is not implemented yet +const PgCatalogShmemAllocations = ` +CREATE TABLE pg_catalog.pg_shmem_allocations ( + name STRING, + off INT, + size INT, + allocated_size INT )` -//PgCatalogStatsExt is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatsExt = ` -CREATE TABLE pg_catalog.pg_stats_ext ( - kinds "char"[], - most_common_base_freqs FLOAT[], - most_common_freqs FLOAT[], - n_distinct BYTES, - schemaname NAME, - statistics_schemaname NAME, - dependencies BYTES, - most_common_val_nulls BOOL[], - most_common_vals STRING[], - statistics_name NAME, - statistics_owner NAME, - tablename NAME, - attnames NAME[] +//PgCatalogStatWalReceiver is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatWalReceiver = ` +CREATE TABLE pg_catalog.pg_stat_wal_receiver ( + pid INT4, + status STRING, + receive_start_lsn STRING, + receive_start_tli INT4, + written_lsn STRING, + flushed_lsn STRING, + received_tli INT4, + last_msg_send_time TIMESTAMPTZ, + last_msg_receipt_time TIMESTAMPTZ, + latest_end_lsn STRING, + latest_end_time TIMESTAMPTZ, + slot_name STRING, + sender_host STRING, + sender_port INT4, + conninfo STRING )` -//PgCatalogStatisticExtData is an empty table in the pg_catalog that is not implemented yet -const PgCatalogStatisticExtData = ` -CREATE TABLE pg_catalog.pg_statistic_ext_data ( - stxddependencies BYTES, - stxdmcv BYTES, - stxdndistinct BYTES, - stxoid OID +//PgCatalogStatSubscription is an empty table in the pg_catalog that is not implemented yet +const PgCatalogStatSubscription = ` +CREATE TABLE pg_catalog.pg_stat_subscription ( + subid OID, + subname NAME, + pid INT4, + relid OID, + received_lsn STRING, + last_msg_send_time TIMESTAMPTZ, + last_msg_receipt_time TIMESTAMPTZ, + latest_end_lsn STRING, + latest_end_time TIMESTAMPTZ )` diff --git a/pkg/storage/engine.go b/pkg/storage/engine.go index 6bd25981a687..5198a553ab36 100644 --- a/pkg/storage/engine.go +++ b/pkg/storage/engine.go @@ -765,10 +765,6 @@ type Engine interface { // version that it must maintain compatibility with. SetMinVersion(version roachpb.Version) error - // UsingRecordsEncryptionRegistry returns whether the engine is using the - // Records version incremental encryption-at-rest registry. - UsingRecordsEncryptionRegistry() (bool, error) - // MinVersionIsAtLeastTargetVersion returns whether the engine's recorded // storage min version is at least the target version. MinVersionIsAtLeastTargetVersion(target roachpb.Version) (bool, error) diff --git a/pkg/storage/enginepb/file_registry.go b/pkg/storage/enginepb/file_registry.go index e371cc5158f0..53a075a491e0 100644 --- a/pkg/storage/enginepb/file_registry.go +++ b/pkg/storage/enginepb/file_registry.go @@ -10,34 +10,6 @@ package enginepb -// ProcessBatch processes a batch of updates to the file registry. -func (r *FileRegistry) ProcessBatch(batch *RegistryUpdateBatch) { - for _, update := range batch.Updates { - r.ProcessUpdate(update) - } -} - -// ProcessUpdate processes a single update to the file registry. -func (r *FileRegistry) ProcessUpdate(update *RegistryUpdate) { - if update.Entry == nil { - delete(r.Files, update.Filename) - } else { - if r.Files == nil { - r.Files = make(map[string]*FileEntry) - } - r.Files[update.Filename] = update.Entry - } -} - -// SetVersion updates the version of the file registry. This function will -// panic if the provided version is lower than the current version. -func (r *FileRegistry) SetVersion(version RegistryVersion) { - if version < r.Version { - panic("illegal downgrade of file registry version") - } - r.Version = version -} - // Empty returns whether a batch is empty. func (b *RegistryUpdateBatch) Empty() bool { return len(b.Updates) == 0 diff --git a/pkg/storage/min_version_test.go b/pkg/storage/min_version_test.go index 206b959b7509..9697dc30feb1 100644 --- a/pkg/storage/min_version_test.go +++ b/pkg/storage/min_version_test.go @@ -164,9 +164,8 @@ func fauxNewEncryptedEnvFunc( fs vfs.FS, fr *PebbleFileRegistry, dbDir string, readOnly bool, optionBytes []byte, ) (*EncryptionEnv, error) { return &EncryptionEnv{ - Closer: nopCloser{}, - FS: fauxEncryptedFS{FS: fs}, - UpgradeVersion: func() error { return nil }, + Closer: nopCloser{}, + FS: fauxEncryptedFS{FS: fs}, }, nil } diff --git a/pkg/storage/pebble.go b/pkg/storage/pebble.go index 33af2afaa65d..0e0ce7a68642 100644 --- a/pkg/storage/pebble.go +++ b/pkg/storage/pebble.go @@ -620,13 +620,6 @@ type EncryptionEnv struct { FS vfs.FS // StatsHandler exposes encryption-at-rest state for observability. StatsHandler EncryptionStatsHandler - // UpgradeVersion is a temporary field that allows Pebble to inform - // low-level encryption-at-rest machinery that the CockroachDB 21.2 - // version has been finalized, and it's okay to begin writing in a - // backwards in-compatible format. - // - // TODO(jackson): Remove this in 22.1. - UpgradeVersion func() error } var _ Engine = &Pebble{} @@ -1580,32 +1573,9 @@ func (p *Pebble) SetMinVersion(version roachpb.Version) error { return errors.Wrap(err, "ratcheting format major version") } } - - if p.fileRegistry != nil { - if !version.Less(clusterversion.ByKey(clusterversion.TODOPreV21_2)) { - if err := p.fileRegistry.StopUsingOldRegistry(); err != nil { - return err - } - } - } - if p.encryption != nil { - if !version.Less(clusterversion.ByKey(clusterversion.TODOPreV21_2)) { - if err := p.encryption.UpgradeVersion(); err != nil { - return err - } - } - } return nil } -// UsingRecordsEncryptionRegistry implements the Engine interface. -func (p *Pebble) UsingRecordsEncryptionRegistry() (bool, error) { - if p.fileRegistry != nil { - return p.fileRegistry.UpgradedToRecordsVersion(), nil - } - return true, nil -} - // MinVersionIsAtLeastTargetVersion implements the Engine interface. func (p *Pebble) MinVersionIsAtLeastTargetVersion(target roachpb.Version) (bool, error) { return MinVersionIsAtLeastTargetVersion(p.unencryptedFS, p.path, target) diff --git a/pkg/storage/pebble_file_registry.go b/pkg/storage/pebble_file_registry.go index 77892a1b96a8..239168279a0d 100644 --- a/pkg/storage/pebble_file_registry.go +++ b/pkg/storage/pebble_file_registry.go @@ -19,9 +19,7 @@ import ( "sort" "strings" - "github.com/cockroachdb/cockroach/pkg/clusterversion" "github.com/cockroachdb/cockroach/pkg/storage/enginepb" - "github.com/cockroachdb/cockroach/pkg/storage/fs" "github.com/cockroachdb/cockroach/pkg/util/protoutil" "github.com/cockroachdb/cockroach/pkg/util/syncutil" "github.com/cockroachdb/errors" @@ -29,7 +27,6 @@ import ( "github.com/cockroachdb/pebble/record" "github.com/cockroachdb/pebble/vfs" "github.com/cockroachdb/pebble/vfs/atomicfs" - "github.com/gogo/protobuf/proto" ) // CanRegistryElideFunc is a function that returns true for entries that can be @@ -66,15 +63,11 @@ type PebbleFileRegistry struct { ReadOnly bool // Implementation. - // TODO(ayang): remove oldRegistryPath when we deprecate the old registry - oldRegistryPath string mu struct { syncutil.Mutex - // currProto stores the current state of the file registry. - // TODO(ayang): convert enginepb.FileRegistry to a regular struct - // when we deprecate the old registry and rename currProto - currProto *enginepb.FileRegistry + // entries stores the current state of the file registry. + entries map[string]*enginepb.FileEntry // registryFile is the opened file for the records-based registry. registryFile vfs.File // registryWriter is a record.Writer for registryFile. @@ -92,37 +85,13 @@ type PebbleFileRegistry struct { } const ( - // TODO(ayang): mark COCKROACHDB_REGISTRY as deprecated so it isn't reused - registryFilename = "COCKROACHDB_REGISTRY" - registryMarkerName = "registry" + registryFilenameBase = "COCKROACHDB_REGISTRY" + registryMarkerName = "registry" ) // CheckNoRegistryFile checks that no registry file currently exists. // CheckNoRegistryFile should be called if the file registry will not be used. func (r *PebbleFileRegistry) CheckNoRegistryFile() error { - if err := r.checkNoBaseRegistry(); err != nil { - return err - } - if err := r.checkNoRecordsRegistry(); err != nil { - return err - } - return nil -} - -func (r *PebbleFileRegistry) checkNoBaseRegistry() error { - // NB: We do not assign r.oldRegistryPath if the registry will not be used. - oldRegistryPath := r.FS.PathJoin(r.DBDir, registryFilename) - _, err := r.FS.Stat(oldRegistryPath) - if err == nil { - return os.ErrExist - } - if !oserror.IsNotExist(err) { - return err - } - return nil -} - -func (r *PebbleFileRegistry) checkNoRecordsRegistry() error { filename, err := atomicfs.ReadMarker(r.FS, r.DBDir, registryMarkerName) if oserror.IsNotExist(err) { // ReadMarker may return oserror.IsNotExist if the data @@ -145,8 +114,7 @@ func (r *PebbleFileRegistry) Load() error { defer r.mu.Unlock() // Initialize private fields needed when the file registry will be used. - r.oldRegistryPath = r.FS.PathJoin(r.DBDir, registryFilename) - r.mu.currProto = &enginepb.FileRegistry{} + r.mu.entries = make(map[string]*enginepb.FileEntry) if err := r.loadRegistryFromFile(); err != nil { return err @@ -182,61 +150,13 @@ func (r *PebbleFileRegistry) loadRegistryFromFile() error { } } - // We treat the old registry file as the source of truth until the version - // is finalized. At that point, we upgrade to the new records-based registry - // file and delete the old registry file. - ok, err := r.maybeLoadOldBaseRegistry() - if err != nil { - return err - } - if ok { - return nil - } - ok, err = r.maybeLoadNewRecordsRegistry() - if err != nil { + if _, err := r.maybeLoadExistingRegistry(); err != nil { return err } - if ok { - return nil - } - // If encryption-at-rest was not previously enabled, we check the storage min - // version to determine whether we still need to create an old base registry. - target := clusterversion.ByKey(clusterversion.TODOPreV21_2) - ok, err = MinVersionIsAtLeastTargetVersion(r.FS, r.DBDir, target) - if err != nil { - return err - } - if ok { - r.mu.currProto.SetVersion(enginepb.RegistryVersion_Records) - } return nil } -func (r *PebbleFileRegistry) maybeLoadOldBaseRegistry() (bool, error) { - f, err := r.FS.Open(r.oldRegistryPath) - if oserror.IsNotExist(err) { - return false, nil - } - if err != nil { - return false, err - } - var b []byte - if b, err = ioutil.ReadAll(f); err != nil { - return false, errors.CombineErrors(err, f.Close()) - } - if err := f.Close(); err != nil { - return false, err - } - if err := protoutil.Unmarshal(b, r.mu.currProto); err != nil { - return false, err - } - if r.mu.currProto.Version == enginepb.RegistryVersion_Records { - return false, errors.New("old encryption registry with version Records should not exist") - } - return true, nil -} - -func (r *PebbleFileRegistry) maybeLoadNewRecordsRegistry() (bool, error) { +func (r *PebbleFileRegistry) maybeLoadExistingRegistry() (bool, error) { if r.mu.registryFilename == "" { return false, nil } @@ -261,12 +181,11 @@ func (r *PebbleFileRegistry) maybeLoadNewRecordsRegistry() (bool, error) { if err := protoutil.Unmarshal(registryHeaderBytes, registryHeader); err != nil { return false, err } - // Since we only load the new registry if the old registry does not exist, - // we should never load a new registry that has version Base. + // All registries of the base version should've been removed in 21.2 before + // upgrade finalization. if registryHeader.Version == enginepb.RegistryVersion_Base { return false, errors.New("new encryption registry with version Base should not exist") } - r.mu.currProto.SetVersion(registryHeader.Version) for { rdr, err := rr.Next() if err == io.EOF { @@ -283,7 +202,7 @@ func (r *PebbleFileRegistry) maybeLoadNewRecordsRegistry() (bool, error) { if err := protoutil.Unmarshal(b, batch); err != nil { return false, err } - r.mu.currProto.ProcessBatch(batch) + r.applyBatch(batch) } if err := records.Close(); err != nil { return false, err @@ -291,23 +210,6 @@ func (r *PebbleFileRegistry) maybeLoadNewRecordsRegistry() (bool, error) { return true, nil } -// StopUsingOldRegistry is called to signal that the old file registry -// is no longer needed and can be safely deleted. -// TODO(ayang): delete this function when we deprecate the old registry -func (r *PebbleFileRegistry) StopUsingOldRegistry() error { - r.mu.Lock() - defer r.mu.Unlock() - return r.upgradeToRecordsVersion() -} - -// UpgradedToRecordsVersion returns whether the file registry has completed -// its upgrade to the Records version of the file registry. -func (r *PebbleFileRegistry) UpgradedToRecordsVersion() bool { - r.mu.Lock() - defer r.mu.Unlock() - return r.mu.currProto.Version == enginepb.RegistryVersion_Records -} - func (r *PebbleFileRegistry) maybeElideEntries() error { if r.ReadOnly { return nil @@ -321,15 +223,15 @@ func (r *PebbleFileRegistry) maybeElideEntries() error { // recursively List each directory and walk two lists of sorted // filenames. We should test a store with many files to see how much // the current approach slows node start. - filenames := make([]string, 0, len(r.mu.currProto.Files)) - for filename := range r.mu.currProto.Files { + filenames := make([]string, 0, len(r.mu.entries)) + for filename := range r.mu.entries { filenames = append(filenames, filename) } sort.Strings(filenames) batch := &enginepb.RegistryUpdateBatch{} for _, filename := range filenames { - entry := r.mu.currProto.Files[filename] + entry := r.mu.entries[filename] // Some entries may be elided. This is used within // ccl/storageccl/engineccl to elide plaintext file entries. @@ -360,7 +262,7 @@ func (r *PebbleFileRegistry) GetFileEntry(filename string) *enginepb.FileEntry { filename = r.tryMakeRelativePath(filename) r.mu.Lock() defer r.mu.Unlock() - return r.mu.currProto.Files[filename] + return r.mu.entries[filename] } // SetFileEntry sets filename => entry in the registry map and persists the registry. @@ -387,7 +289,7 @@ func (r *PebbleFileRegistry) MaybeDeleteEntry(filename string) error { r.mu.Lock() defer r.mu.Unlock() - if r.mu.currProto.Files[filename] == nil { + if r.mu.entries[filename] == nil { return nil } batch := &enginepb.RegistryUpdateBatch{} @@ -405,8 +307,8 @@ func (r *PebbleFileRegistry) MaybeCopyEntry(src, dst string) error { r.mu.Lock() defer r.mu.Unlock() - srcEntry := r.mu.currProto.Files[src] - if srcEntry == nil && r.mu.currProto.Files[dst] == nil { + srcEntry := r.mu.entries[src] + if srcEntry == nil && r.mu.entries[dst] == nil { return nil } batch := &enginepb.RegistryUpdateBatch{} @@ -426,14 +328,14 @@ func (r *PebbleFileRegistry) MaybeLinkEntry(src, dst string) error { r.mu.Lock() defer r.mu.Unlock() - if r.mu.currProto.Files[src] == nil && r.mu.currProto.Files[dst] == nil { + if r.mu.entries[src] == nil && r.mu.entries[dst] == nil { return nil } batch := &enginepb.RegistryUpdateBatch{} - if r.mu.currProto.Files[src] == nil { + if r.mu.entries[src] == nil { batch.DeleteEntry(dst) } else { - batch.PutEntry(dst, r.mu.currProto.Files[src]) + batch.PutEntry(dst, r.mu.entries[src]) } return r.processBatchLocked(batch) } @@ -468,36 +370,6 @@ func (r *PebbleFileRegistry) tryMakeRelativePath(filename string) string { return filename } -// TODO(ayang): delete this function when we deprecate the old registry -func (r *PebbleFileRegistry) upgradeToRecordsVersion() error { - if r.mu.currProto.Version == enginepb.RegistryVersion_Records { - return nil - } - - dir, err := r.FS.OpenDir(r.DBDir) - if err != nil { - return err - } - defer dir.Close() - - // Create a new registry file to record the upgraded version. - r.mu.currProto.SetVersion(enginepb.RegistryVersion_Records) - if err := r.createNewRegistryFile(); err != nil { - return err - } - if err := r.FS.Remove(r.oldRegistryPath); err != nil && !oserror.IsNotExist(err) { - return err - } - // We need to sync the removal of the old registry because the - // presence of the old registry will cause future starts to read - // from the old registry. - if err := dir.Sync(); err != nil { - // Fsync errors must be fatal. - panic(errors.Wrap(err, "syncing database directory")) - } - return nil -} - func (r *PebbleFileRegistry) processBatchLocked(batch *enginepb.RegistryUpdateBatch) error { if r.ReadOnly { return errors.New("cannot write file registry since db is read-only") @@ -505,33 +377,25 @@ func (r *PebbleFileRegistry) processBatchLocked(batch *enginepb.RegistryUpdateBa if batch.Empty() { return nil } - // For durability reasons, we persist the changes to disk first before we - // update the in-memory registry. Any error during persisting is fatal. - if r.mu.currProto.Version == enginepb.RegistryVersion_Base { - newProto := &enginepb.FileRegistry{} - proto.Merge(newProto, r.mu.currProto) - newProto.ProcessBatch(batch) - if err := r.rewriteOldRegistry(newProto); err != nil { - panic(err) - } - } if err := r.writeToRegistryFile(batch); err != nil { panic(err) } - r.mu.currProto.ProcessBatch(batch) + r.applyBatch(batch) return nil } -// TODO(ayang): delete this function when we deprecate the old registry -func (r *PebbleFileRegistry) rewriteOldRegistry(newProto *enginepb.FileRegistry) error { - b, err := protoutil.Marshal(newProto) - if err != nil { - return err - } - if err := fs.SafeWriteToFile(r.FS, r.DBDir, r.oldRegistryPath, b); err != nil { - return err +// processBatch processes a batch of updates to the file registry. +func (r *PebbleFileRegistry) applyBatch(batch *enginepb.RegistryUpdateBatch) { + for _, update := range batch.Updates { + if update.Entry == nil { + delete(r.mu.entries, update.Filename) + } else { + if r.mu.entries == nil { + r.mu.entries = make(map[string]*enginepb.FileEntry) + } + r.mu.entries[update.Filename] = update.Entry + } } - return nil } func (r *PebbleFileRegistry) writeToRegistryFile(batch *enginepb.RegistryUpdateBatch) error { @@ -569,7 +433,7 @@ func (r *PebbleFileRegistry) writeToRegistryFile(batch *enginepb.RegistryUpdateB } func makeRegistryFilename(iter uint64) string { - return fmt.Sprintf("%s_%06d", registryFilename, iter) + return fmt.Sprintf("%s_%06d", registryFilenameBase, iter) } func (r *PebbleFileRegistry) createNewRegistryFile() error { @@ -595,7 +459,7 @@ func (r *PebbleFileRegistry) createNewRegistryFile() error { // Write the registry header as the first record in the registry file. registryHeader := &enginepb.RegistryHeader{ - Version: r.mu.currProto.Version, + Version: enginepb.RegistryVersion_Records, } b, err := protoutil.Marshal(registryHeader) if err != nil { @@ -607,7 +471,7 @@ func (r *PebbleFileRegistry) createNewRegistryFile() error { // Write a RegistryUpdateBatch containing the current state of the registry. batch := &enginepb.RegistryUpdateBatch{} - for filename, entry := range r.mu.currProto.Files { + for filename, entry := range r.mu.entries { batch.PutEntry(filename, entry) } b, err = protoutil.Marshal(batch) @@ -651,15 +515,21 @@ func (r *PebbleFileRegistry) createNewRegistryFile() error { r.mu.registryFile = f r.mu.registryWriter = records r.mu.registryFilename = filename - return err } func (r *PebbleFileRegistry) getRegistryCopy() *enginepb.FileRegistry { r.mu.Lock() defer r.mu.Unlock() - rv := &enginepb.FileRegistry{} - proto.Merge(rv, r.mu.currProto) + rv := &enginepb.FileRegistry{ + Version: enginepb.RegistryVersion_Records, + Files: make(map[string]*enginepb.FileEntry, len(r.mu.entries)), + } + for filename, entry := range r.mu.entries { + ev := &enginepb.FileEntry{} + *ev = *entry + rv.Files[filename] = ev + } return rv } diff --git a/pkg/storage/pebble_file_registry_test.go b/pkg/storage/pebble_file_registry_test.go index 3465245ac741..211a52c87da6 100644 --- a/pkg/storage/pebble_file_registry_test.go +++ b/pkg/storage/pebble_file_registry_test.go @@ -67,17 +67,6 @@ func TestFileRegistryRelativePaths(t *testing.T) { } } -func TestFileRegistry_UpgradeEmpty(t *testing.T) { - defer leaktest.AfterTest(t)() - defer log.Scope(t).Close(t) - - mem := vfs.NewMem() - registry := &PebbleFileRegistry{FS: mem, DBDir: ""} - require.NoError(t, registry.Load()) - require.NoError(t, registry.StopUsingOldRegistry()) - require.NoError(t, registry.Close()) -} - func TestFileRegistryOps(t *testing.T) { defer leaktest.AfterTest(t)() defer log.Scope(t).Close(t) @@ -107,9 +96,9 @@ func TestFileRegistryOps(t *testing.T) { require.NoError(t, registry.Load()) registry.mu.Lock() defer registry.mu.Unlock() - if diff := pretty.Diff(registry.mu.currProto.Files, expected); diff != nil { + if diff := pretty.Diff(registry.mu.entries, expected); diff != nil { t.Log(string(debug.Stack())) - t.Fatalf("%s\n%v", strings.Join(diff, "\n"), registry.mu.currProto.Files) + t.Fatalf("%s\n%v", strings.Join(diff, "\n"), registry.mu.entries) } } @@ -227,19 +216,22 @@ func TestFileRegistryElideUnencrypted(t *testing.T) { registry := &PebbleFileRegistry{FS: mem} require.NoError(t, registry.Load()) - newProto := &enginepb.FileRegistry{} - newProto.Files = make(map[string]*enginepb.FileEntry) - newProto.Files["test1"] = &enginepb.FileEntry{EnvType: enginepb.EnvType_Data, EncryptionSettings: []byte(nil)} - newProto.Files["test2"] = &enginepb.FileEntry{EnvType: enginepb.EnvType_Store, EncryptionSettings: []byte("foo")} - require.NoError(t, registry.rewriteOldRegistry(newProto)) + require.NoError(t, registry.writeToRegistryFile(&enginepb.RegistryUpdateBatch{ + Updates: []*enginepb.RegistryUpdate{ + {Filename: "test1", Entry: &enginepb.FileEntry{EnvType: enginepb.EnvType_Data, EncryptionSettings: []byte(nil)}}, + {Filename: "test2", Entry: &enginepb.FileEntry{EnvType: enginepb.EnvType_Store, EncryptionSettings: []byte("foo")}}, + }, + })) + require.NoError(t, registry.Close()) // Create another pebble file registry to verify that the unencrypted file is elided on startup. registry2 := &PebbleFileRegistry{FS: mem} require.NoError(t, registry2.Load()) - require.NotContains(t, registry2.mu.currProto.Files, "test1") - entry := registry2.mu.currProto.Files["test2"] + require.NotContains(t, registry2.mu.entries, "test1") + entry := registry2.mu.entries["test2"] require.NotNil(t, entry) require.Equal(t, entry.EncryptionSettings, []byte("foo")) + require.NoError(t, registry2.Close()) } func TestFileRegistryElideNonexistent(t *testing.T) { @@ -253,12 +245,13 @@ func TestFileRegistryElideNonexistent(t *testing.T) { { registry := &PebbleFileRegistry{FS: mem} require.NoError(t, registry.Load()) - require.NoError(t, registry.rewriteOldRegistry(&enginepb.FileRegistry{ - Files: map[string]*enginepb.FileEntry{ - "foo": {EnvType: enginepb.EnvType_Data, EncryptionSettings: []byte("foo")}, - "bar": {EnvType: enginepb.EnvType_Data, EncryptionSettings: []byte("bar")}, + require.NoError(t, registry.writeToRegistryFile(&enginepb.RegistryUpdateBatch{ + Updates: []*enginepb.RegistryUpdate{ + {Filename: "foo", Entry: &enginepb.FileEntry{EnvType: enginepb.EnvType_Data, EncryptionSettings: []byte("foo")}}, + {Filename: "bar", Entry: &enginepb.FileEntry{EnvType: enginepb.EnvType_Data, EncryptionSettings: []byte("bar")}}, }, })) + require.NoError(t, registry.Close()) } // Create another registry and verify that the nonexistent `foo` file @@ -266,10 +259,11 @@ func TestFileRegistryElideNonexistent(t *testing.T) { { registry := &PebbleFileRegistry{FS: mem} require.NoError(t, registry.Load()) - require.NotContains(t, registry.mu.currProto.Files, "foo") - require.Contains(t, registry.mu.currProto.Files, "bar") - require.NotNil(t, registry.mu.currProto.Files["bar"]) - require.Equal(t, []byte("bar"), registry.mu.currProto.Files["bar"].EncryptionSettings) + require.NotContains(t, registry.mu.entries, "foo") + require.Contains(t, registry.mu.entries, "bar") + require.NotNil(t, registry.mu.entries["bar"]) + require.Equal(t, []byte("bar"), registry.mu.entries["bar"].EncryptionSettings) + require.NoError(t, registry.Close()) } } @@ -308,10 +302,6 @@ func TestFileRegistryRecordsReadAndWrite(t *testing.T) { for filename, entry := range files { require.Equal(t, entry, registry2.GetFileEntry(filename)) } - - // Signal that we no longer need the monolithic one. - require.NoError(t, registry2.StopUsingOldRegistry()) - require.NoError(t, registry2.checkNoBaseRegistry()) require.NoError(t, registry2.Close()) registry3 := &PebbleFileRegistry{FS: mem} @@ -388,9 +378,6 @@ func TestFileRegistry(t *testing.T) { require.NoError(t, f.Close()) } return buf.String() - case "upgrade-to-records": - require.NoError(t, registry.StopUsingOldRegistry()) - return buf.String() default: panic("unrecognized command " + d.Cmd) } diff --git a/pkg/storage/testdata/file_registry b/pkg/storage/testdata/file_registry index 42a406fd7cc6..71938ac1587a 100644 --- a/pkg/storage/testdata/file_registry +++ b/pkg/storage/testdata/file_registry @@ -1,6 +1,5 @@ check-no-registry-file ---- -stat("COCKROACHDB_REGISTRY") OK # Open and close a registry on an empty store. Nothing should be written @@ -9,8 +8,6 @@ OK load ---- open-dir("") -open("COCKROACHDB_REGISTRY") -open("STORAGE_MIN_VERSION") close ---- @@ -18,31 +15,25 @@ close("") check-no-registry-file ---- -stat("COCKROACHDB_REGISTRY") OK -# Open an empty store and immediately upgrade to the records-based -# registry. The new registry file should be written, and then a marker -# file should be written alongside it. +# Open an empty store and write to the registry. A new registry file should be +# written, and a marker file should be written alongside it. load ---- open-dir("") -open("COCKROACHDB_REGISTRY") -open("STORAGE_MIN_VERSION") -upgrade-to-records +set filename=foo settings=bar ---- -open-dir("") create("COCKROACHDB_REGISTRY_000001") write("COCKROACHDB_REGISTRY_000001", <...16 bytes...>) sync("COCKROACHDB_REGISTRY_000001") create("marker.registry.000001.COCKROACHDB_REGISTRY_000001") close("marker.registry.000001.COCKROACHDB_REGISTRY_000001") sync("") -remove("COCKROACHDB_REGISTRY") -sync("") -close("") +write("COCKROACHDB_REGISTRY_000001", <...23 bytes...>) +sync("COCKROACHDB_REGISTRY_000001") close ---- @@ -52,24 +43,32 @@ close("") check-no-registry-file ---- -stat("COCKROACHDB_REGISTRY") Error: file already exists -# Re-opening the store should check for the old-style monolithic -# registry, see that it doesn't exist and open the incremental, -# records-based registry indicated by the marker file. -# -# No registry rotation should occur because nothing is written. +# Re-opening the store should observe the registry file. It should recognize +# that the file foo does not exist and rotate the registry to elide it. load ---- open-dir("") -open("COCKROACHDB_REGISTRY") open("COCKROACHDB_REGISTRY_000001") close("COCKROACHDB_REGISTRY_000001") +stat("foo") +create("COCKROACHDB_REGISTRY_000002") +write("COCKROACHDB_REGISTRY_000002", <...32 bytes...>) +sync("COCKROACHDB_REGISTRY_000002") +create("marker.registry.000002.COCKROACHDB_REGISTRY_000002") +close("marker.registry.000002.COCKROACHDB_REGISTRY_000002") +remove("marker.registry.000001.COCKROACHDB_REGISTRY_000001") +sync("") +remove("COCKROACHDB_REGISTRY_000001") +write("COCKROACHDB_REGISTRY_000002", <...14 bytes...>) +sync("COCKROACHDB_REGISTRY_000002") close ---- +write("COCKROACHDB_REGISTRY_000002", <...0 bytes...>) +close("COCKROACHDB_REGISTRY_000002") close("") # Re-opening the store and writing something to the file registry should @@ -83,22 +82,21 @@ close("") load ---- open-dir("") -open("COCKROACHDB_REGISTRY") -open("COCKROACHDB_REGISTRY_000001") -close("COCKROACHDB_REGISTRY_000001") +open("COCKROACHDB_REGISTRY_000002") +close("COCKROACHDB_REGISTRY_000002") set filename=foo settings=bar ---- -create("COCKROACHDB_REGISTRY_000002") -write("COCKROACHDB_REGISTRY_000002", <...16 bytes...>) -sync("COCKROACHDB_REGISTRY_000002") -create("marker.registry.000002.COCKROACHDB_REGISTRY_000002") -close("marker.registry.000002.COCKROACHDB_REGISTRY_000002") -remove("marker.registry.000001.COCKROACHDB_REGISTRY_000001") +create("COCKROACHDB_REGISTRY_000003") +write("COCKROACHDB_REGISTRY_000003", <...16 bytes...>) +sync("COCKROACHDB_REGISTRY_000003") +create("marker.registry.000003.COCKROACHDB_REGISTRY_000003") +close("marker.registry.000003.COCKROACHDB_REGISTRY_000003") +remove("marker.registry.000002.COCKROACHDB_REGISTRY_000002") sync("") -remove("COCKROACHDB_REGISTRY_000001") -write("COCKROACHDB_REGISTRY_000002", <...23 bytes...>) -sync("COCKROACHDB_REGISTRY_000002") +remove("COCKROACHDB_REGISTRY_000002") +write("COCKROACHDB_REGISTRY_000003", <...23 bytes...>) +sync("COCKROACHDB_REGISTRY_000003") get filename=foo ---- @@ -106,8 +104,8 @@ bar set filename=foo settings=helloworld ---- -write("COCKROACHDB_REGISTRY_000002", <...30 bytes...>) -sync("COCKROACHDB_REGISTRY_000002") +write("COCKROACHDB_REGISTRY_000003", <...30 bytes...>) +sync("COCKROACHDB_REGISTRY_000003") get filename=foo ---- @@ -115,8 +113,8 @@ helloworld close ---- -write("COCKROACHDB_REGISTRY_000002", <...0 bytes...>) -close("COCKROACHDB_REGISTRY_000002") +write("COCKROACHDB_REGISTRY_000003", <...0 bytes...>) +close("COCKROACHDB_REGISTRY_000003") close("") # Re-opening the store again, while there are entries for files (`foo`) @@ -126,59 +124,46 @@ close("") load ---- open-dir("") -open("COCKROACHDB_REGISTRY") -open("COCKROACHDB_REGISTRY_000002") -close("COCKROACHDB_REGISTRY_000002") +open("COCKROACHDB_REGISTRY_000003") +close("COCKROACHDB_REGISTRY_000003") stat("foo") -create("COCKROACHDB_REGISTRY_000003") -write("COCKROACHDB_REGISTRY_000003", <...39 bytes...>) -sync("COCKROACHDB_REGISTRY_000003") -create("marker.registry.000003.COCKROACHDB_REGISTRY_000003") -close("marker.registry.000003.COCKROACHDB_REGISTRY_000003") -remove("marker.registry.000002.COCKROACHDB_REGISTRY_000002") +create("COCKROACHDB_REGISTRY_000004") +write("COCKROACHDB_REGISTRY_000004", <...39 bytes...>) +sync("COCKROACHDB_REGISTRY_000004") +create("marker.registry.000004.COCKROACHDB_REGISTRY_000004") +close("marker.registry.000004.COCKROACHDB_REGISTRY_000004") +remove("marker.registry.000003.COCKROACHDB_REGISTRY_000003") sync("") -remove("COCKROACHDB_REGISTRY_000002") -write("COCKROACHDB_REGISTRY_000003", <...14 bytes...>) -sync("COCKROACHDB_REGISTRY_000003") +remove("COCKROACHDB_REGISTRY_000003") +write("COCKROACHDB_REGISTRY_000004", <...14 bytes...>) +sync("COCKROACHDB_REGISTRY_000004") get filename=foo ---- close ---- -write("COCKROACHDB_REGISTRY_000003", <...0 bytes...>) -close("COCKROACHDB_REGISTRY_000003") +write("COCKROACHDB_REGISTRY_000004", <...0 bytes...>) +close("COCKROACHDB_REGISTRY_000004") close("") -# Reset the filesystem and start again. We should default to using both -# the monolithic `COCKROACHDB_REGISTRY` file and the incremental file. +# Reset the filesystem and start again. reset ---- check-no-registry-file ---- -stat("COCKROACHDB_REGISTRY") OK load ---- open-dir("") -open("COCKROACHDB_REGISTRY") -open("STORAGE_MIN_VERSION") set filename=foo settings=helloworld ---- -create("COCKROACHDB_REGISTRY.crdbtmp") -write("COCKROACHDB_REGISTRY.crdbtmp", <...23 bytes...>) -sync("COCKROACHDB_REGISTRY.crdbtmp") -close("COCKROACHDB_REGISTRY.crdbtmp") -rename("COCKROACHDB_REGISTRY.crdbtmp", "COCKROACHDB_REGISTRY") -open-dir("") -sync("") -close("") create("COCKROACHDB_REGISTRY_000001") -write("COCKROACHDB_REGISTRY_000001", <...14 bytes...>) +write("COCKROACHDB_REGISTRY_000001", <...16 bytes...>) sync("COCKROACHDB_REGISTRY_000001") create("marker.registry.000001.COCKROACHDB_REGISTRY_000001") close("marker.registry.000001.COCKROACHDB_REGISTRY_000001") @@ -186,20 +171,11 @@ sync("") write("COCKROACHDB_REGISTRY_000001", <...30 bytes...>) sync("COCKROACHDB_REGISTRY_000001") -# A second write to the registry should again completely rewrite -# `COCKROACHDB_REGISTRY`, but only perform a single write and sync on +# A second write to the registry should only perform a single write and sync on # the incremental registry. set filename=bar settings=hi ---- -create("COCKROACHDB_REGISTRY.crdbtmp") -write("COCKROACHDB_REGISTRY.crdbtmp", <...38 bytes...>) -sync("COCKROACHDB_REGISTRY.crdbtmp") -close("COCKROACHDB_REGISTRY.crdbtmp") -rename("COCKROACHDB_REGISTRY.crdbtmp", "COCKROACHDB_REGISTRY") -open-dir("") -sync("") -close("") write("COCKROACHDB_REGISTRY_000001", <...22 bytes...>) sync("COCKROACHDB_REGISTRY_000001") @@ -211,7 +187,6 @@ close("") check-no-registry-file ---- -stat("COCKROACHDB_REGISTRY") Error: file already exists # Re-opening the registry should read the state from the monolithic @@ -229,8 +204,8 @@ close("bar") load ---- open-dir("") -open("COCKROACHDB_REGISTRY") -close("COCKROACHDB_REGISTRY") +open("COCKROACHDB_REGISTRY_000001") +close("COCKROACHDB_REGISTRY_000001") stat("bar") stat("foo") @@ -240,16 +215,8 @@ hi set filename=bax settings=hello ---- -create("COCKROACHDB_REGISTRY.crdbtmp") -write("COCKROACHDB_REGISTRY.crdbtmp", <...56 bytes...>) -sync("COCKROACHDB_REGISTRY.crdbtmp") -close("COCKROACHDB_REGISTRY.crdbtmp") -rename("COCKROACHDB_REGISTRY.crdbtmp", "COCKROACHDB_REGISTRY") -open-dir("") -sync("") -close("") create("COCKROACHDB_REGISTRY_000002") -write("COCKROACHDB_REGISTRY_000002", <...52 bytes...>) +write("COCKROACHDB_REGISTRY_000002", <...54 bytes...>) sync("COCKROACHDB_REGISTRY_000002") create("marker.registry.000002.COCKROACHDB_REGISTRY_000002") close("marker.registry.000002.COCKROACHDB_REGISTRY_000002")