ts-prorm-orm 1.1.0 → 1.2.0

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.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. 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
  /**