ts-prorm-orm 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +713 -0
- package/dist/index.js +36 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- package/package.json +20 -5
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Greenplum dialect implementation for the TypeScript ORM.
|
|
3
|
+
*
|
|
4
|
+
* Greenplum Database is a massively-parallel-processing (MPP) analytics
|
|
5
|
+
* database built by forking PostgreSQL (historically the 8.2/8.3 line, with
|
|
6
|
+
* later releases rebased onto PostgreSQL 9.x and 12). Because it speaks the
|
|
7
|
+
* PostgreSQL wire protocol and is largely SQL-compatible with it, this dialect
|
|
8
|
+
* extends {@link PostgresDialect} and reuses the same `pg` driver (default port
|
|
9
|
+
* 5432, exactly like Postgres — the coordinator/master segment listens on the
|
|
10
|
+
* standard Postgres port).
|
|
11
|
+
*
|
|
12
|
+
* Notable Greenplum-specific differences vs. plain PostgreSQL that this dialect
|
|
13
|
+
* models on top of the inherited Postgres behavior:
|
|
14
|
+
*
|
|
15
|
+
* - Distribution policy: every Greenplum table is physically distributed across
|
|
16
|
+
* segments. `CREATE TABLE` accepts a trailing `DISTRIBUTED BY (cols)` /
|
|
17
|
+
* `DISTRIBUTED RANDOMLY` / `DISTRIBUTED REPLICATED` clause. This dialect emits
|
|
18
|
+
* that clause when a distribution option is supplied (see
|
|
19
|
+
* {@link GreenplumDialect.buildDistributionClause}). To stay safe against
|
|
20
|
+
* plain-Postgres targets it only emits the clause when explicitly asked; when
|
|
21
|
+
* asked but under-specified it defaults to `DISTRIBUTED RANDOMLY`.
|
|
22
|
+
* - Append-optimized / column-oriented storage: Greenplum supports
|
|
23
|
+
* append-optimized (AO) tables and column orientation with compression via a
|
|
24
|
+
* table `WITH (appendoptimized=true, orientation=column, compresstype=zstd)`
|
|
25
|
+
* storage clause (see {@link GreenplumDialect.buildStorageClause}).
|
|
26
|
+
* - Legacy partitioning: in addition to Postgres 10+ declarative partitioning
|
|
27
|
+
* (inherited from the base dialect), Greenplum has its own older
|
|
28
|
+
* `PARTITION BY RANGE(col) (START (...) END (...) EVERY (...))` syntax
|
|
29
|
+
* (see {@link GreenplumDialect.buildRangePartitionClause}).
|
|
30
|
+
* - External tables: `CREATE EXTERNAL TABLE ... LOCATION ('gpfdist://...')
|
|
31
|
+
* FORMAT '...'` exposes external data (e.g. served by the `gpfdist` file
|
|
32
|
+
* distribution daemon) as a readable/writable table
|
|
33
|
+
* (see {@link GreenplumDialect.buildExternalTableSQL}).
|
|
34
|
+
*
|
|
35
|
+
* Greenplum does NOT support some PostgreSQL features (e.g. `SERIAL` maps to a
|
|
36
|
+
* distributed sequence, no global secondary UNIQUE guarantees unless the
|
|
37
|
+
* distribution key is a subset of the constraint, no savepoints inside some
|
|
38
|
+
* plans). Those caveats are inherited-as-is from the Postgres behavior here and
|
|
39
|
+
* are out of scope for this dialect wrapper.
|
|
40
|
+
*/
|
|
41
|
+
import { PostgresDialect, PostgresDialectOptions } from '../postgres/index';
|
|
42
|
+
import { ColumnDefinition, TableOptions } from '../dialect';
|
|
43
|
+
/**
|
|
44
|
+
* Greenplum connection options. Identical to {@link PostgresDialectOptions}
|
|
45
|
+
* (the `pg` driver is reused unchanged); declared as its own alias so callers
|
|
46
|
+
* can name the Greenplum-specific type.
|
|
47
|
+
*/
|
|
48
|
+
export interface GreenplumDialectOptions extends PostgresDialectOptions {
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A Greenplum range-partition specification for the legacy
|
|
52
|
+
* `PARTITION BY RANGE(col) (START (...) END (...) EVERY (...))` syntax.
|
|
53
|
+
*
|
|
54
|
+
* `start`, `end` and `every` are inlined as SQL literals: numbers verbatim,
|
|
55
|
+
* strings single-quoted (so a date string like `'2020-01-01'` works), and
|
|
56
|
+
* anything already wrapped in the caller's own SQL expression (detected by a
|
|
57
|
+
* leading keyword such as `INTERVAL` or a `func(...)` call) is emitted raw.
|
|
58
|
+
*/
|
|
59
|
+
export interface GreenplumRangePartitionSpec {
|
|
60
|
+
/** Inclusive lower bound of the first partition range. */
|
|
61
|
+
start: string | number;
|
|
62
|
+
/** Exclusive upper bound of the last partition range. */
|
|
63
|
+
end: string | number;
|
|
64
|
+
/** Step size between consecutive partitions (e.g. `1`, `"INTERVAL '1 month'"`). */
|
|
65
|
+
every?: string | number;
|
|
66
|
+
/** When true, emits `INCLUSIVE`/`EXCLUSIVE` — appended to END as EXCLUSIVE by default. */
|
|
67
|
+
inclusiveStart?: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Greenplum-specific `CREATE TABLE` options layered on top of the shared
|
|
71
|
+
* {@link TableOptions}. Distribution and append-optimized storage settings are
|
|
72
|
+
* Greenplum extensions with no PostgreSQL equivalent.
|
|
73
|
+
*/
|
|
74
|
+
export interface GreenplumTableOptions extends TableOptions {
|
|
75
|
+
/** `DISTRIBUTED BY (col, ...)` — hash-distribute rows on these columns. */
|
|
76
|
+
distributedBy?: string[];
|
|
77
|
+
/** `DISTRIBUTED RANDOMLY` — round-robin distribution across segments. */
|
|
78
|
+
distributedRandomly?: boolean;
|
|
79
|
+
/** `DISTRIBUTED REPLICATED` — full copy of the table on every segment. */
|
|
80
|
+
distributedReplicated?: boolean;
|
|
81
|
+
/** `WITH (appendoptimized=true)` — create an append-optimized (AO) table. */
|
|
82
|
+
appendOptimized?: boolean;
|
|
83
|
+
/** `orientation=row|column` storage parameter (implies append-optimized). */
|
|
84
|
+
orientation?: 'row' | 'column';
|
|
85
|
+
/** `compresstype=` storage parameter, e.g. `'zstd'`, `'zlib'`, `'rle_type'`, `'none'`. */
|
|
86
|
+
compressType?: 'zlib' | 'zstd' | 'rle_type' | 'quicklz' | 'none';
|
|
87
|
+
/** `compresslevel=` storage parameter (compression level, e.g. 1). */
|
|
88
|
+
compressLevel?: number;
|
|
89
|
+
/** `blocksize=` storage parameter for AO tables (bytes). */
|
|
90
|
+
blocksize?: number;
|
|
91
|
+
/** Table-level constraints emitted inside the column list (PRIMARY KEY / UNIQUE / FOREIGN KEY / CHECK). */
|
|
92
|
+
constraints?: GreenplumTableConstraint[];
|
|
93
|
+
/** `TABLESPACE name` — placed after storage/partitioning and before the DISTRIBUTED clause. */
|
|
94
|
+
tablespace?: string;
|
|
95
|
+
}
|
|
96
|
+
/** A table-level constraint for a Greenplum `CREATE TABLE` column list. */
|
|
97
|
+
export interface GreenplumTableConstraint {
|
|
98
|
+
type: 'PRIMARY KEY' | 'UNIQUE' | 'FOREIGN KEY' | 'CHECK';
|
|
99
|
+
/** Columns the constraint covers (not used for CHECK). */
|
|
100
|
+
fields?: string[];
|
|
101
|
+
/** Optional explicit constraint name (`CONSTRAINT "name" ...`). */
|
|
102
|
+
name?: string;
|
|
103
|
+
/** Referenced table/column for FOREIGN KEY constraints. */
|
|
104
|
+
references?: {
|
|
105
|
+
table: string;
|
|
106
|
+
field: string;
|
|
107
|
+
};
|
|
108
|
+
/** Raw boolean expression for CHECK constraints. */
|
|
109
|
+
expression?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Options for {@link GreenplumDialect.buildExternalTableSQL}.
|
|
113
|
+
*/
|
|
114
|
+
export interface GreenplumExternalTableOptions {
|
|
115
|
+
/**
|
|
116
|
+
* One or more external `LOCATION` URIs, e.g.
|
|
117
|
+
* `['gpfdist://etl-host:8081/data/*.csv']`. Required — an external table has
|
|
118
|
+
* no local storage, only these locations.
|
|
119
|
+
*/
|
|
120
|
+
locations: string[];
|
|
121
|
+
/** External data format. Defaults to `'TEXT'`. */
|
|
122
|
+
format?: 'TEXT' | 'CSV' | 'CUSTOM' | 'AVRO' | 'PARQUET';
|
|
123
|
+
/** Emit `WRITABLE EXTERNAL TABLE` instead of the default readable one. */
|
|
124
|
+
writable?: boolean;
|
|
125
|
+
/** Emit `EXTERNAL WEB TABLE` (`http://` / `EXECUTE` sourced). */
|
|
126
|
+
web?: boolean;
|
|
127
|
+
/** `FORMAT '...' (DELIMITER '...')` — column delimiter for TEXT/CSV. */
|
|
128
|
+
delimiter?: string;
|
|
129
|
+
/** Whether the CSV/TEXT source's first row is a header to skip. */
|
|
130
|
+
header?: boolean;
|
|
131
|
+
/** Encoding name for the external data, e.g. `'UTF8'`. */
|
|
132
|
+
encoding?: string;
|
|
133
|
+
/** `LOG ERRORS` clause: route malformed rows to the error log. */
|
|
134
|
+
logErrors?: boolean;
|
|
135
|
+
/** `SEGMENT REJECT LIMIT n [ROWS|PERCENT]` reject threshold. */
|
|
136
|
+
rejectLimit?: number;
|
|
137
|
+
/** Unit for `SEGMENT REJECT LIMIT`. Defaults to `'ROWS'`. */
|
|
138
|
+
rejectLimitType?: 'ROWS' | 'PERCENT';
|
|
139
|
+
/** If true, uses `CREATE EXTERNAL TABLE IF NOT EXISTS` (not valid in all GP versions). */
|
|
140
|
+
ifNotExists?: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Greenplum dialect class. Extends {@link PostgresDialect}, overriding the
|
|
144
|
+
* `CREATE TABLE` builder to append Greenplum distribution/storage clauses and
|
|
145
|
+
* adding helpers for legacy range partitioning and external tables.
|
|
146
|
+
*/
|
|
147
|
+
export declare class GreenplumDialect extends PostgresDialect {
|
|
148
|
+
readonly name: string;
|
|
149
|
+
readonly library: string;
|
|
150
|
+
constructor(config: GreenplumDialectOptions);
|
|
151
|
+
/**
|
|
152
|
+
* Build the trailing `DISTRIBUTED ...` clause for a Greenplum `CREATE TABLE`.
|
|
153
|
+
*
|
|
154
|
+
* Returns an empty string when no distribution option is supplied, so callers
|
|
155
|
+
* that never set one produce plain-Postgres-compatible DDL. When a
|
|
156
|
+
* distribution intent is expressed but under-specified (e.g. an empty
|
|
157
|
+
* `distributedBy` array), it falls back to `DISTRIBUTED RANDOMLY`.
|
|
158
|
+
*
|
|
159
|
+
* @returns e.g. `DISTRIBUTED BY ("id")`, `DISTRIBUTED RANDOMLY`,
|
|
160
|
+
* `DISTRIBUTED REPLICATED`, or `''`.
|
|
161
|
+
*/
|
|
162
|
+
buildDistributionClause(options?: GreenplumTableOptions): string;
|
|
163
|
+
/**
|
|
164
|
+
* Build the `WITH (...)` storage clause for append-optimized / column-
|
|
165
|
+
* oriented Greenplum tables. Returns `''` unless append-optimized storage is
|
|
166
|
+
* requested (via `appendOptimized`, a non-`row` `orientation`, or any of the
|
|
167
|
+
* compression parameters).
|
|
168
|
+
*
|
|
169
|
+
* @returns e.g. `WITH (appendoptimized=true, orientation=column, compresstype=zstd)`.
|
|
170
|
+
*/
|
|
171
|
+
buildStorageClause(options?: GreenplumTableOptions): string;
|
|
172
|
+
/**
|
|
173
|
+
* Synchronously build the full Greenplum `CREATE TABLE` statement, including
|
|
174
|
+
* the append-optimized storage `WITH (...)` clause and the trailing
|
|
175
|
+
* `DISTRIBUTED ...` clause. Exposed as a sync builder so callers (and tests)
|
|
176
|
+
* can inspect the emitted SQL without a live connection.
|
|
177
|
+
*/
|
|
178
|
+
buildCreateTableSQL(tableName: string, columns: Record<string, ColumnDefinition>, options?: GreenplumTableOptions): string;
|
|
179
|
+
/**
|
|
180
|
+
* Build a single table-level constraint clause for the CREATE TABLE column
|
|
181
|
+
* list, e.g. `CONSTRAINT "pk_orders" PRIMARY KEY ("id")` or
|
|
182
|
+
* `FOREIGN KEY ("customer_id") REFERENCES "customers"("id")`.
|
|
183
|
+
*/
|
|
184
|
+
buildTableConstraintSql(c: GreenplumTableConstraint): string;
|
|
185
|
+
/**
|
|
186
|
+
* Greenplum (Postgres 8/9-derived) does not implement `INSERT ... ON
|
|
187
|
+
* CONFLICT`. Refuse an upsert INSERT with a clear error pointing callers at
|
|
188
|
+
* {@link GreenplumDialect.buildUpsertQuery}'s staging-table strategy. Plain
|
|
189
|
+
* (non-upsert) inserts delegate to the inherited PostgreSQL builder.
|
|
190
|
+
*/
|
|
191
|
+
buildInsertQuery(tableName: string, values: Record<string, unknown>, options?: Parameters<PostgresDialect['buildInsertQuery']>[2]): {
|
|
192
|
+
sql: string;
|
|
193
|
+
values: unknown[];
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Build a Greenplum-compatible upsert as a staging-table batch (no
|
|
197
|
+
* `ON CONFLICT`):
|
|
198
|
+
*
|
|
199
|
+
* CREATE TEMP TABLE "<t>_gp_upsert_stg" (LIKE "<t>") ON COMMIT DROP;
|
|
200
|
+
* INSERT INTO "<t>_gp_upsert_stg" (cols) VALUES (...);
|
|
201
|
+
* DELETE FROM "<t>" USING stg WHERE "<t>".k = stg.k [AND ...];
|
|
202
|
+
* INSERT INTO "<t>" (writeCols) SELECT writeCols FROM stg [RETURNING ...];
|
|
203
|
+
* [DROP TABLE stg] -- only when no RETURNING (RETURNING must be the last statement)
|
|
204
|
+
*
|
|
205
|
+
* `writeCols` is the conflict keys plus `updateOnDuplicate` when given,
|
|
206
|
+
* otherwise every provided column.
|
|
207
|
+
*/
|
|
208
|
+
buildUpsertQuery(tableName: string, values: Record<string, unknown>, options?: Parameters<PostgresDialect['buildUpsertQuery']>[2]): {
|
|
209
|
+
sql: string;
|
|
210
|
+
values: unknown[];
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Create a new table, emitting Greenplum distribution and append-optimized
|
|
214
|
+
* storage clauses. Overrides {@link PostgresDialect.createTable}.
|
|
215
|
+
*/
|
|
216
|
+
createTable(tableName: string, columns: Record<string, ColumnDefinition>, options?: GreenplumTableOptions): Promise<void>;
|
|
217
|
+
/**
|
|
218
|
+
* Build a single column definition for a Greenplum `CREATE TABLE`. Mirrors
|
|
219
|
+
* the common subset of the Postgres column builder (which is private on the
|
|
220
|
+
* base class): type, NOT NULL, DEFAULT, PRIMARY KEY, UNIQUE, and references.
|
|
221
|
+
*/
|
|
222
|
+
private buildGreenplumColumnSql;
|
|
223
|
+
/**
|
|
224
|
+
* Build Greenplum's legacy `PARTITION BY RANGE(col) (START (...) END (...)
|
|
225
|
+
* EVERY (...))` clause (distinct from Postgres 10+ declarative partitioning,
|
|
226
|
+
* which the base dialect handles via `PARTITION BY RANGE (col)`).
|
|
227
|
+
*
|
|
228
|
+
* @param column - The range-partition key column.
|
|
229
|
+
* @param spec - Start/end bounds and optional `EVERY` step.
|
|
230
|
+
* @returns e.g.
|
|
231
|
+
* `PARTITION BY RANGE(sale_date) (START ('2020-01-01') END ('2021-01-01') EVERY (INTERVAL '1 month'))`.
|
|
232
|
+
*/
|
|
233
|
+
buildRangePartitionClause(column: string, spec: GreenplumRangePartitionSpec): string;
|
|
234
|
+
/**
|
|
235
|
+
* Format a range-partition bound value as a SQL literal: numbers verbatim,
|
|
236
|
+
* already-expression strings (INTERVAL / DATE / TIMESTAMP keyword or a
|
|
237
|
+
* `func(...)` call) raw, and any other string single-quoted.
|
|
238
|
+
*/
|
|
239
|
+
private formatPartitionBound;
|
|
240
|
+
/**
|
|
241
|
+
* Build a Greenplum `CREATE EXTERNAL TABLE` statement. External tables expose
|
|
242
|
+
* data served over `gpfdist://`, `http://`, `s3://`, etc. as a queryable
|
|
243
|
+
* (and optionally writable) table with no local segment storage.
|
|
244
|
+
*
|
|
245
|
+
* @param tableName - Name of the external table to create.
|
|
246
|
+
* @param columns - Column definitions (types only; no distribution/constraints).
|
|
247
|
+
* @param options - External-table options (locations, format, writable, ...).
|
|
248
|
+
* @returns e.g.
|
|
249
|
+
* `CREATE EXTERNAL TABLE "ext_sales" (...) LOCATION ('gpfdist://host:8081/sales/*.csv') FORMAT 'CSV' (DELIMITER ',' HEADER)`.
|
|
250
|
+
*/
|
|
251
|
+
buildExternalTableSQL(tableName: string, columns: Record<string, ColumnDefinition>, options: GreenplumExternalTableOptions): string;
|
|
252
|
+
/**
|
|
253
|
+
* Create an external table by executing the statement built by
|
|
254
|
+
* {@link GreenplumDialect.buildExternalTableSQL}.
|
|
255
|
+
*/
|
|
256
|
+
createExternalTable(tableName: string, columns: Record<string, ColumnDefinition>, options: GreenplumExternalTableOptions): Promise<void>;
|
|
257
|
+
/**
|
|
258
|
+
* Build an `ALTER TABLE ... SET [WITH (REORGANIZE=true)] DISTRIBUTED ...`
|
|
259
|
+
* statement to change a table's distribution policy. Redistributing existing
|
|
260
|
+
* data requires `reorganize: true` (the default here) — without it Greenplum
|
|
261
|
+
* only records the new policy for *future* data, leaving already-stored rows
|
|
262
|
+
* on their original segments.
|
|
263
|
+
*
|
|
264
|
+
* @returns e.g. `ALTER TABLE "t" SET WITH (REORGANIZE=true) DISTRIBUTED BY ("id")`.
|
|
265
|
+
*/
|
|
266
|
+
buildSetDistributionSQL(tableName: string, options: Pick<GreenplumTableOptions, 'distributedBy' | 'distributedRandomly' | 'distributedReplicated'> & {
|
|
267
|
+
reorganize?: boolean;
|
|
268
|
+
}): string;
|
|
269
|
+
/**
|
|
270
|
+
* Change a table's distribution policy (see
|
|
271
|
+
* {@link GreenplumDialect.buildSetDistributionSQL}).
|
|
272
|
+
*/
|
|
273
|
+
setDistribution(tableName: string, options: Pick<GreenplumTableOptions, 'distributedBy' | 'distributedRandomly' | 'distributedReplicated'> & {
|
|
274
|
+
reorganize?: boolean;
|
|
275
|
+
}): Promise<void>;
|
|
276
|
+
/**
|
|
277
|
+
* Build a Greenplum `CREATE TABLE <name> [WITH (...)] AS <query>
|
|
278
|
+
* [DISTRIBUTED ...]` statement. The append-optimized/columnar storage
|
|
279
|
+
* `WITH (...)` clause and the trailing `DISTRIBUTED ...` clause are emitted
|
|
280
|
+
* from the same options as {@link GreenplumDialect.buildCreateTableSQL}.
|
|
281
|
+
*/
|
|
282
|
+
buildCreateTableAsSQL(tableName: string, query: string, options?: GreenplumTableOptions): string;
|
|
283
|
+
/**
|
|
284
|
+
* Materialize a query result into a new table via `CREATE TABLE ... AS`
|
|
285
|
+
* (see {@link GreenplumDialect.buildCreateTableAsSQL}).
|
|
286
|
+
*/
|
|
287
|
+
createTableAs(tableName: string, query: string, options?: GreenplumTableOptions): Promise<void>;
|
|
288
|
+
/**
|
|
289
|
+
* Build an `ALTER TABLE ... ADD PARTITION name START (...) END (...)
|
|
290
|
+
* [EVERY (...)]` statement for Greenplum's legacy partitioning.
|
|
291
|
+
*/
|
|
292
|
+
buildAddRangePartitionSQL(tableName: string, partitionName: string, spec: GreenplumRangePartitionSpec): string;
|
|
293
|
+
/**
|
|
294
|
+
* Add a range partition to a legacy-partitioned Greenplum table.
|
|
295
|
+
*/
|
|
296
|
+
addRangePartition(tableName: string, partitionName: string, spec: GreenplumRangePartitionSpec): Promise<void>;
|
|
297
|
+
/**
|
|
298
|
+
* Drop a named partition of a legacy-partitioned table via
|
|
299
|
+
* `ALTER TABLE ... DROP PARTITION [IF EXISTS] name`.
|
|
300
|
+
*/
|
|
301
|
+
dropRangePartition(tableName: string, partitionName: string, options?: {
|
|
302
|
+
ifExists?: boolean;
|
|
303
|
+
}): Promise<void>;
|
|
304
|
+
/**
|
|
305
|
+
* Fast-empty a single partition via `ALTER TABLE ... TRUNCATE PARTITION name`
|
|
306
|
+
* (keeps the partition, drops its data).
|
|
307
|
+
*/
|
|
308
|
+
truncateRangePartition(tableName: string, partitionName: string): Promise<void>;
|
|
309
|
+
/**
|
|
310
|
+
* Run `VACUUM [FULL] [ANALYZE] [table]`. `full: true` rewrites the table to
|
|
311
|
+
* reclaim maximum space (holds an exclusive lock); the default lightweight
|
|
312
|
+
* vacuum only reclaims what it can in place.
|
|
313
|
+
*/
|
|
314
|
+
vacuumTable(tableName?: string, options?: {
|
|
315
|
+
full?: boolean;
|
|
316
|
+
analyze?: boolean;
|
|
317
|
+
}): Promise<void>;
|
|
318
|
+
/**
|
|
319
|
+
* Run `ANALYZE [table [(columns)]]` to refresh planner statistics for a
|
|
320
|
+
* table (or the whole database when `tableName` is omitted).
|
|
321
|
+
*/
|
|
322
|
+
analyzeTable(tableName?: string, columns?: string[]): Promise<void>;
|
|
323
|
+
/**
|
|
324
|
+
* Fast-empty a table via `TRUNCATE [ONLY] table [CASCADE] [RESTART IDENTITY]`.
|
|
325
|
+
*/
|
|
326
|
+
truncateTable(tableName: string, options?: {
|
|
327
|
+
cascade?: boolean;
|
|
328
|
+
restartIdentity?: boolean;
|
|
329
|
+
only?: boolean;
|
|
330
|
+
}): Promise<void>;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Create a new Greenplum dialect instance.
|
|
334
|
+
*/
|
|
335
|
+
export declare function createGreenplumDialect(options?: GreenplumDialectOptions): GreenplumDialect;
|
|
336
|
+
export default GreenplumDialect;
|
|
@@ -446,6 +446,174 @@ class GreenplumDialect extends index_1.PostgresDialect {
|
|
|
446
446
|
async createExternalTable(tableName, columns, options) {
|
|
447
447
|
await this.query(this.buildExternalTableSQL(tableName, columns, options));
|
|
448
448
|
}
|
|
449
|
+
// ==========================================================================
|
|
450
|
+
// Distribution policy changes
|
|
451
|
+
// ==========================================================================
|
|
452
|
+
/**
|
|
453
|
+
* Build an `ALTER TABLE ... SET [WITH (REORGANIZE=true)] DISTRIBUTED ...`
|
|
454
|
+
* statement to change a table's distribution policy. Redistributing existing
|
|
455
|
+
* data requires `reorganize: true` (the default here) — without it Greenplum
|
|
456
|
+
* only records the new policy for *future* data, leaving already-stored rows
|
|
457
|
+
* on their original segments.
|
|
458
|
+
*
|
|
459
|
+
* @returns e.g. `ALTER TABLE "t" SET WITH (REORGANIZE=true) DISTRIBUTED BY ("id")`.
|
|
460
|
+
*/
|
|
461
|
+
buildSetDistributionSQL(tableName, options) {
|
|
462
|
+
const distribution = this.buildDistributionClause(options);
|
|
463
|
+
if (!distribution) {
|
|
464
|
+
throw new Error('buildSetDistributionSQL: a distribution target is required ' +
|
|
465
|
+
'(distributedBy, distributedRandomly, or distributedReplicated).');
|
|
466
|
+
}
|
|
467
|
+
const reorganize = options.reorganize !== false;
|
|
468
|
+
const withClause = reorganize ? ' SET WITH (REORGANIZE=true)' : ' SET';
|
|
469
|
+
return `ALTER TABLE ${this.escapeId(tableName)}${withClause} ${distribution}`;
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Change a table's distribution policy (see
|
|
473
|
+
* {@link GreenplumDialect.buildSetDistributionSQL}).
|
|
474
|
+
*/
|
|
475
|
+
async setDistribution(tableName, options) {
|
|
476
|
+
await this.query(this.buildSetDistributionSQL(tableName, options));
|
|
477
|
+
}
|
|
478
|
+
// ==========================================================================
|
|
479
|
+
// CREATE TABLE AS (CTAS) — analytics-common materialization of a query
|
|
480
|
+
// result into a new distributed/append-optimized table.
|
|
481
|
+
// ==========================================================================
|
|
482
|
+
/**
|
|
483
|
+
* Build a Greenplum `CREATE TABLE <name> [WITH (...)] AS <query>
|
|
484
|
+
* [DISTRIBUTED ...]` statement. The append-optimized/columnar storage
|
|
485
|
+
* `WITH (...)` clause and the trailing `DISTRIBUTED ...` clause are emitted
|
|
486
|
+
* from the same options as {@link GreenplumDialect.buildCreateTableSQL}.
|
|
487
|
+
*/
|
|
488
|
+
buildCreateTableAsSQL(tableName, query, options) {
|
|
489
|
+
let sql = 'CREATE TABLE';
|
|
490
|
+
if (options?.ifNotExists) {
|
|
491
|
+
sql += ' IF NOT EXISTS';
|
|
492
|
+
}
|
|
493
|
+
sql += ` ${this.escapeId(tableName)}`;
|
|
494
|
+
const storage = this.buildStorageClause(options);
|
|
495
|
+
if (storage) {
|
|
496
|
+
sql += ` ${storage}`;
|
|
497
|
+
}
|
|
498
|
+
if (options?.tablespace) {
|
|
499
|
+
sql += ` TABLESPACE ${options.tablespace}`;
|
|
500
|
+
}
|
|
501
|
+
sql += ` AS ${query}`;
|
|
502
|
+
const distribution = this.buildDistributionClause(options);
|
|
503
|
+
if (distribution) {
|
|
504
|
+
sql += ` ${distribution}`;
|
|
505
|
+
}
|
|
506
|
+
return sql;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Materialize a query result into a new table via `CREATE TABLE ... AS`
|
|
510
|
+
* (see {@link GreenplumDialect.buildCreateTableAsSQL}).
|
|
511
|
+
*/
|
|
512
|
+
async createTableAs(tableName, query, options) {
|
|
513
|
+
await this.query(this.buildCreateTableAsSQL(tableName, query, options));
|
|
514
|
+
}
|
|
515
|
+
// ==========================================================================
|
|
516
|
+
// Legacy range-partition maintenance (ALTER TABLE ... {ADD|DROP|TRUNCATE|
|
|
517
|
+
// SPLIT} PARTITION), distinct from Postgres 10+ declarative partitioning the
|
|
518
|
+
// base dialect exposes via createPartition/attachPartition/etc.
|
|
519
|
+
// ==========================================================================
|
|
520
|
+
/**
|
|
521
|
+
* Build an `ALTER TABLE ... ADD PARTITION name START (...) END (...)
|
|
522
|
+
* [EVERY (...)]` statement for Greenplum's legacy partitioning.
|
|
523
|
+
*/
|
|
524
|
+
buildAddRangePartitionSQL(tableName, partitionName, spec) {
|
|
525
|
+
const startBound = this.formatPartitionBound(spec.start);
|
|
526
|
+
const endBound = this.formatPartitionBound(spec.end);
|
|
527
|
+
let sql = `ALTER TABLE ${this.escapeId(tableName)} ADD PARTITION ${this.escapeId(partitionName)}`;
|
|
528
|
+
sql += ` START (${startBound})${spec.inclusiveStart ? ' INCLUSIVE' : ''}`;
|
|
529
|
+
sql += ` END (${endBound}) EXCLUSIVE`;
|
|
530
|
+
if (spec.every !== undefined) {
|
|
531
|
+
sql += ` EVERY (${this.formatPartitionBound(spec.every)})`;
|
|
532
|
+
}
|
|
533
|
+
return sql;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Add a range partition to a legacy-partitioned Greenplum table.
|
|
537
|
+
*/
|
|
538
|
+
async addRangePartition(tableName, partitionName, spec) {
|
|
539
|
+
await this.query(this.buildAddRangePartitionSQL(tableName, partitionName, spec));
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Drop a named partition of a legacy-partitioned table via
|
|
543
|
+
* `ALTER TABLE ... DROP PARTITION [IF EXISTS] name`.
|
|
544
|
+
*/
|
|
545
|
+
async dropRangePartition(tableName, partitionName, options) {
|
|
546
|
+
let sql = `ALTER TABLE ${this.escapeId(tableName)} DROP PARTITION`;
|
|
547
|
+
if (options?.ifExists) {
|
|
548
|
+
sql += ' IF EXISTS';
|
|
549
|
+
}
|
|
550
|
+
sql += ` ${this.escapeId(partitionName)}`;
|
|
551
|
+
await this.query(sql);
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Fast-empty a single partition via `ALTER TABLE ... TRUNCATE PARTITION name`
|
|
555
|
+
* (keeps the partition, drops its data).
|
|
556
|
+
*/
|
|
557
|
+
async truncateRangePartition(tableName, partitionName) {
|
|
558
|
+
await this.query(`ALTER TABLE ${this.escapeId(tableName)} TRUNCATE PARTITION ${this.escapeId(partitionName)}`);
|
|
559
|
+
}
|
|
560
|
+
// ==========================================================================
|
|
561
|
+
// Maintenance — VACUUM / ANALYZE / TRUNCATE.
|
|
562
|
+
//
|
|
563
|
+
// Greenplum inherits Postgres autovacuum for catalog tables, but bulk
|
|
564
|
+
// append-optimized/analytics tables commonly need explicit VACUUM (to
|
|
565
|
+
// recover space from the AO visibility map after DELETE/UPDATE) and ANALYZE
|
|
566
|
+
// (the planner has no auto-analyze on user data at scale).
|
|
567
|
+
// ==========================================================================
|
|
568
|
+
/**
|
|
569
|
+
* Run `VACUUM [FULL] [ANALYZE] [table]`. `full: true` rewrites the table to
|
|
570
|
+
* reclaim maximum space (holds an exclusive lock); the default lightweight
|
|
571
|
+
* vacuum only reclaims what it can in place.
|
|
572
|
+
*/
|
|
573
|
+
async vacuumTable(tableName, options) {
|
|
574
|
+
let sql = 'VACUUM';
|
|
575
|
+
if (options?.full) {
|
|
576
|
+
sql += ' FULL';
|
|
577
|
+
}
|
|
578
|
+
if (options?.analyze) {
|
|
579
|
+
sql += ' ANALYZE';
|
|
580
|
+
}
|
|
581
|
+
if (tableName) {
|
|
582
|
+
sql += ` ${this.escapeId(tableName)}`;
|
|
583
|
+
}
|
|
584
|
+
await this.query(sql);
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* Run `ANALYZE [table [(columns)]]` to refresh planner statistics for a
|
|
588
|
+
* table (or the whole database when `tableName` is omitted).
|
|
589
|
+
*/
|
|
590
|
+
async analyzeTable(tableName, columns) {
|
|
591
|
+
let sql = 'ANALYZE';
|
|
592
|
+
if (tableName) {
|
|
593
|
+
sql += ` ${this.escapeId(tableName)}`;
|
|
594
|
+
if (columns && columns.length > 0) {
|
|
595
|
+
sql += ` (${columns.map((c) => this.escapeId(c)).join(', ')})`;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
await this.query(sql);
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Fast-empty a table via `TRUNCATE [ONLY] table [CASCADE] [RESTART IDENTITY]`.
|
|
602
|
+
*/
|
|
603
|
+
async truncateTable(tableName, options) {
|
|
604
|
+
let sql = 'TRUNCATE';
|
|
605
|
+
if (options?.only) {
|
|
606
|
+
sql += ' ONLY';
|
|
607
|
+
}
|
|
608
|
+
sql += ` ${this.escapeId(tableName)}`;
|
|
609
|
+
if (options?.restartIdentity) {
|
|
610
|
+
sql += ' RESTART IDENTITY';
|
|
611
|
+
}
|
|
612
|
+
if (options?.cascade) {
|
|
613
|
+
sql += ' CASCADE';
|
|
614
|
+
}
|
|
615
|
+
await this.query(sql);
|
|
616
|
+
}
|
|
449
617
|
}
|
|
450
618
|
exports.GreenplumDialect = GreenplumDialect;
|
|
451
619
|
/**
|