ts-prorm-orm 1.1.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 (310) hide show
  1. package/CHANGELOG.md +1111 -0
  2. package/LICENSE +21 -0
  3. package/README.md +573 -0
  4. package/dist/audit/history-query.js +180 -0
  5. package/dist/audit/index.js +23 -0
  6. package/dist/audit/logger.js +236 -0
  7. package/dist/cache/cache-manager.js +84 -0
  8. package/dist/cache/index.js +16 -0
  9. package/dist/cache/redis-cluster-cache.js +557 -0
  10. package/dist/cli.js +2200 -0
  11. package/dist/compliance/audit-trail.js +68 -0
  12. package/dist/compliance/backup-verification.js +685 -0
  13. package/dist/compliance/breach-detector.js +505 -0
  14. package/dist/compliance/consent-record.js +227 -0
  15. package/dist/compliance/consent-versioning.js +331 -0
  16. package/dist/compliance/cross-border-log.js +530 -0
  17. package/dist/compliance/data-classifier.js +258 -0
  18. package/dist/compliance/data-lineage.js +565 -0
  19. package/dist/compliance/data-masker.js +303 -0
  20. package/dist/compliance/data-portability.js +265 -0
  21. package/dist/compliance/data-retention.js +195 -0
  22. package/dist/compliance/dsar-workflow.js +342 -0
  23. package/dist/compliance/field-encryption.js +223 -0
  24. package/dist/compliance/immutable-record.js +148 -0
  25. package/dist/compliance/index.js +260 -0
  26. package/dist/compliance/privacy-impact-assessment.js +364 -0
  27. package/dist/compliance/pseudonymization.js +269 -0
  28. package/dist/compliance/query-firewall.js +1182 -0
  29. package/dist/compliance/rate-limiter.js +580 -0
  30. package/dist/compliance/right-to-erasure.js +117 -0
  31. package/dist/compliance/row-level-security.js +246 -0
  32. package/dist/compliance/security-decorator.js +574 -0
  33. package/dist/compliance/security-monitor.js +525 -0
  34. package/dist/compliance/sensitive-data-discovery.js +476 -0
  35. package/dist/compliance/session-isolation.js +472 -0
  36. package/dist/compliance/tls-enforcer.js +108 -0
  37. package/dist/compliance/worm-storage.js +712 -0
  38. package/dist/connection-manager.js +198 -0
  39. package/dist/connection-pool.js +519 -0
  40. package/dist/decorators/audit.js +136 -0
  41. package/dist/decorators/belongs-to-many.js +115 -0
  42. package/dist/decorators/belongs-to.js +115 -0
  43. package/dist/decorators/check.js +435 -0
  44. package/dist/decorators/collate.js +329 -0
  45. package/dist/decorators/comment.js +205 -0
  46. package/dist/decorators/database-settings.js +236 -0
  47. package/dist/decorators/default.js +244 -0
  48. package/dist/decorators/encryption.js +235 -0
  49. package/dist/decorators/engine.js +97 -0
  50. package/dist/decorators/fk-constraints.js +594 -0
  51. package/dist/decorators/foreign-table.js +136 -0
  52. package/dist/decorators/generated.js +274 -0
  53. package/dist/decorators/has-many.js +127 -0
  54. package/dist/decorators/has-one.js +116 -0
  55. package/dist/decorators/hstore.js +129 -0
  56. package/dist/decorators/index.js +355 -0
  57. package/dist/decorators/json-column.js +83 -0
  58. package/dist/decorators/jsonb.js +101 -0
  59. package/dist/decorators/orm-decorators.js +425 -0
  60. package/dist/decorators/permissions.js +294 -0
  61. package/dist/decorators/procedure.js +210 -0
  62. package/dist/decorators/query-options.js +556 -0
  63. package/dist/decorators/range.js +167 -0
  64. package/dist/decorators/set-column.js +83 -0
  65. package/dist/decorators/spatial.js +114 -0
  66. package/dist/decorators/storage.js +580 -0
  67. package/dist/decorators/timezone.js +512 -0
  68. package/dist/decorators/trigger.js +90 -0
  69. package/dist/decorators/uuid.js +135 -0
  70. package/dist/decorators/view.js +258 -0
  71. package/dist/diagrams/chen-diagram.js +354 -0
  72. package/dist/diagrams/class-diagram.js +384 -0
  73. package/dist/diagrams/dependency-diagram.js +432 -0
  74. package/dist/diagrams/er-diagram.js +605 -0
  75. package/dist/diagrams/flow-diagram.js +394 -0
  76. package/dist/diagrams/gantt-diagram.js +411 -0
  77. package/dist/diagrams/index-diagram.js +353 -0
  78. package/dist/diagrams/index.js +184 -0
  79. package/dist/diagrams/migration-diagram.js +316 -0
  80. package/dist/diagrams/model-diagram.js +616 -0
  81. package/dist/diagrams/package-diagram.js +376 -0
  82. package/dist/diagrams/palette.js +85 -0
  83. package/dist/diagrams/relational-diagram.js +455 -0
  84. package/dist/diagrams/schemadoc-diagram.js +309 -0
  85. package/dist/diagrams/sequence-diagram.js +307 -0
  86. package/dist/diagrams/state-diagram.js +344 -0
  87. package/dist/diagrams/svg-dom.js +111 -0
  88. package/dist/diagrams/tree-diagram.js +250 -0
  89. package/dist/dialects/clickhouse/index.js +1742 -0
  90. package/dist/dialects/cockroachdb/index.js +4677 -0
  91. package/dist/dialects/cratedb/index.js +441 -0
  92. package/dist/dialects/databricks/index.js +517 -0
  93. package/dist/dialects/db2/index.js +2225 -0
  94. package/dist/dialects/dialect.js +720 -0
  95. package/dist/dialects/duckdb/index.js +2014 -0
  96. package/dist/dialects/exasol/index.js +357 -0
  97. package/dist/dialects/firebird/index.js +495 -0
  98. package/dist/dialects/greenplum/index.js +457 -0
  99. package/dist/dialects/hana/index.js +1741 -0
  100. package/dist/dialects/mariadb/index.js +3590 -0
  101. package/dist/dialects/mssql/index.js +2296 -0
  102. package/dist/dialects/mysql/index.js +4058 -0
  103. package/dist/dialects/oracle/index.js +2999 -0
  104. package/dist/dialects/postgres/index.js +5319 -0
  105. package/dist/dialects/query-stream-helper.js +152 -0
  106. package/dist/dialects/questdb/index.js +433 -0
  107. package/dist/dialects/redshift/index.js +2277 -0
  108. package/dist/dialects/singlestore/index.js +354 -0
  109. package/dist/dialects/snowflake/index.js +2082 -0
  110. package/dist/dialects/spanner/index.js +1768 -0
  111. package/dist/dialects/sqlite/index.js +3382 -0
  112. package/dist/dialects/tidb/index.js +377 -0
  113. package/dist/dialects/timescaledb/index.js +164 -0
  114. package/dist/dialects/trino/index.js +420 -0
  115. package/dist/dialects/turso/index.js +227 -0
  116. package/dist/dialects/vertica/index.js +317 -0
  117. package/dist/dialects/yugabytedb/index.js +424 -0
  118. package/dist/errors/index.js +472 -0
  119. package/dist/errors/utils.js +340 -0
  120. package/dist/errors.js +21 -0
  121. package/dist/extensions/catalog/cloud-warehouse-features.js +207 -0
  122. package/dist/extensions/catalog/mssql-features.js +147 -0
  123. package/dist/extensions/catalog/mysql-mariadb-plugins.js +229 -0
  124. package/dist/extensions/catalog/oracle-db2-features.js +196 -0
  125. package/dist/extensions/catalog/postgres-extensions.js +516 -0
  126. package/dist/extensions/index.js +71 -0
  127. package/dist/extensions/types.js +13 -0
  128. package/dist/foreign-data.js +173 -0
  129. package/dist/hooks/hooks-manager.js +350 -0
  130. package/dist/hooks/index.js +37 -0
  131. package/dist/index.js +463 -0
  132. package/dist/logging.js +335 -0
  133. package/dist/migrations/index.js +40 -0
  134. package/dist/migrations/migration.js +196 -0
  135. package/dist/migrations/migrator.js +411 -0
  136. package/dist/migrations/prormmigration.js +275 -0
  137. package/dist/migrations/query-interface.js +435 -0
  138. package/dist/migrations/seeder.js +353 -0
  139. package/dist/models/associations.js +852 -0
  140. package/dist/models/constraints.js +288 -0
  141. package/dist/models/data-types.js +2518 -0
  142. package/dist/models/decorators.js +445 -0
  143. package/dist/models/index.js +33 -0
  144. package/dist/models/indexes.js +531 -0
  145. package/dist/models/methods.js +382 -0
  146. package/dist/models/model-manager.js +103 -0
  147. package/dist/models/model.js +5349 -0
  148. package/dist/models/operators.js +67 -0
  149. package/dist/models/scopes.js +189 -0
  150. package/dist/models/typescript-types.js +26 -0
  151. package/dist/nosql/aerospike/index.js +205 -0
  152. package/dist/nosql/allegrograph/index.js +169 -0
  153. package/dist/nosql/arangodb/index.js +364 -0
  154. package/dist/nosql/azure-blob/index.js +206 -0
  155. package/dist/nosql/beanstalkd/index.js +231 -0
  156. package/dist/nosql/beequeue/index.js +210 -0
  157. package/dist/nosql/bigchaindb/index.js +195 -0
  158. package/dist/nosql/bigtable/index.js +224 -0
  159. package/dist/nosql/blazegraph/index.js +173 -0
  160. package/dist/nosql/bullmq/index.js +191 -0
  161. package/dist/nosql/cassandra/index.js +174 -0
  162. package/dist/nosql/chroma/index.js +190 -0
  163. package/dist/nosql/cloudflare-kv/index.js +220 -0
  164. package/dist/nosql/coherence/index.js +200 -0
  165. package/dist/nosql/cosmosdb/index.js +157 -0
  166. package/dist/nosql/couchbase/index.js +213 -0
  167. package/dist/nosql/dax/index.js +212 -0
  168. package/dist/nosql/deno-kv/index.js +206 -0
  169. package/dist/nosql/dgraph/index.js +171 -0
  170. package/dist/nosql/doris/index.js +169 -0
  171. package/dist/nosql/druid/index.js +162 -0
  172. package/dist/nosql/dynamodb/index.js +937 -0
  173. package/dist/nosql/elasticsearch/index.js +377 -0
  174. package/dist/nosql/etcd/index.js +502 -0
  175. package/dist/nosql/eventhubs/index.js +213 -0
  176. package/dist/nosql/eventstore/index.js +254 -0
  177. package/dist/nosql/faunadb/index.js +188 -0
  178. package/dist/nosql/firestore/index.js +177 -0
  179. package/dist/nosql/fluree/index.js +148 -0
  180. package/dist/nosql/fuseki/index.js +170 -0
  181. package/dist/nosql/gcs/index.js +172 -0
  182. package/dist/nosql/gearman/index.js +160 -0
  183. package/dist/nosql/geode/index.js +196 -0
  184. package/dist/nosql/graphdb/index.js +169 -0
  185. package/dist/nosql/graylog/index.js +188 -0
  186. package/dist/nosql/gridgain/index.js +171 -0
  187. package/dist/nosql/hazelcast/index.js +162 -0
  188. package/dist/nosql/hbase/index.js +230 -0
  189. package/dist/nosql/ignite/index.js +173 -0
  190. package/dist/nosql/immudb/index.js +184 -0
  191. package/dist/nosql/index.js +232 -0
  192. package/dist/nosql/infinispan/index.js +200 -0
  193. package/dist/nosql/influxdb/index.js +0 -0
  194. package/dist/nosql/kafka/index.js +234 -0
  195. package/dist/nosql/keyspaces/index.js +189 -0
  196. package/dist/nosql/kinesis/index.js +253 -0
  197. package/dist/nosql/leveldb/index.js +153 -0
  198. package/dist/nosql/lmdb/index.js +160 -0
  199. package/dist/nosql/loki/index.js +201 -0
  200. package/dist/nosql/marklogic/index.js +204 -0
  201. package/dist/nosql/materialize/index.js +145 -0
  202. package/dist/nosql/meilisearch/index.js +154 -0
  203. package/dist/nosql/memcached/index.js +223 -0
  204. package/dist/nosql/milvus/index.js +410 -0
  205. package/dist/nosql/minio/index.js +265 -0
  206. package/dist/nosql/momento/index.js +179 -0
  207. package/dist/nosql/mongodb/index.js +461 -0
  208. package/dist/nosql/nats/index.js +247 -0
  209. package/dist/nosql/nedb/index.js +164 -0
  210. package/dist/nosql/neo4j/index.js +450 -0
  211. package/dist/nosql/neptune/index.js +470 -0
  212. package/dist/nosql/nsq/index.js +200 -0
  213. package/dist/nosql/opensearch/index.js +186 -0
  214. package/dist/nosql/orientdb/index.js +175 -0
  215. package/dist/nosql/papertrail/index.js +200 -0
  216. package/dist/nosql/pinecone/index.js +0 -0
  217. package/dist/nosql/pinot/index.js +133 -0
  218. package/dist/nosql/pouchdb/index.js +172 -0
  219. package/dist/nosql/prometheus/index.js +174 -0
  220. package/dist/nosql/provendb/index.js +147 -0
  221. package/dist/nosql/pubsub/index.js +187 -0
  222. package/dist/nosql/pulsar/index.js +232 -0
  223. package/dist/nosql/qdrant/index.js +295 -0
  224. package/dist/nosql/qldb/index.js +192 -0
  225. package/dist/nosql/r2/index.js +281 -0
  226. package/dist/nosql/rabbitmq/index.js +237 -0
  227. package/dist/nosql/ravendb/index.js +175 -0
  228. package/dist/nosql/redis/index.js +607 -0
  229. package/dist/nosql/redpanda/index.js +237 -0
  230. package/dist/nosql/resque/index.js +203 -0
  231. package/dist/nosql/rethinkdb/index.js +232 -0
  232. package/dist/nosql/rocksdb/index.js +152 -0
  233. package/dist/nosql/rockset/index.js +126 -0
  234. package/dist/nosql/s3/index.js +298 -0
  235. package/dist/nosql/scylladb/index.js +178 -0
  236. package/dist/nosql/signoz/index.js +227 -0
  237. package/dist/nosql/sns/index.js +201 -0
  238. package/dist/nosql/solr/index.js +231 -0
  239. package/dist/nosql/splunk/index.js +227 -0
  240. package/dist/nosql/sqs/index.js +246 -0
  241. package/dist/nosql/stardog/index.js +169 -0
  242. package/dist/nosql/starrocks/index.js +170 -0
  243. package/dist/nosql/store.js +2 -0
  244. package/dist/nosql/sumologic/index.js +213 -0
  245. package/dist/nosql/surrealdb/index.js +179 -0
  246. package/dist/nosql/terminusdb/index.js +151 -0
  247. package/dist/nosql/tigergraph/index.js +469 -0
  248. package/dist/nosql/typesense/index.js +148 -0
  249. package/dist/nosql/unqlite/index.js +157 -0
  250. package/dist/nosql/upstash/index.js +167 -0
  251. package/dist/nosql/vercel-kv/index.js +166 -0
  252. package/dist/nosql/victoriametrics/index.js +213 -0
  253. package/dist/nosql/virtuoso/index.js +169 -0
  254. package/dist/nosql/weaviate/index.js +276 -0
  255. package/dist/operators/index.js +108 -0
  256. package/dist/operators.js +2690 -0
  257. package/dist/prisma-migrate/index.js +38 -0
  258. package/dist/prisma-migrate/migration-generator.js +125 -0
  259. package/dist/prisma-migrate/model-generator.js +172 -0
  260. package/dist/prisma-migrate/relations.js +100 -0
  261. package/dist/prisma-migrate/schema-parser.js +167 -0
  262. package/dist/prisma-migrate/type-mapper.js +40 -0
  263. package/dist/prorm.js +6832 -0
  264. package/dist/query-builders/cte-builder.js +80 -0
  265. package/dist/query-builders/functions/aggregate.js +390 -0
  266. package/dist/query-builders/functions/conditional.js +503 -0
  267. package/dist/query-builders/functions/datetime.js +695 -0
  268. package/dist/query-builders/functions/fulltext.js +439 -0
  269. package/dist/query-builders/functions/index.js +93 -0
  270. package/dist/query-builders/functions/json.js +427 -0
  271. package/dist/query-builders/functions/math.js +399 -0
  272. package/dist/query-builders/functions/string.js +518 -0
  273. package/dist/query-builders/functions/window.js +328 -0
  274. package/dist/query-builders/include-builder.js +323 -0
  275. package/dist/query-builders/index-expression-builder.js +242 -0
  276. package/dist/query-builders/index.js +161 -0
  277. package/dist/query-builders/insert-builder.js +164 -0
  278. package/dist/query-builders/model-helpers.js +38 -0
  279. package/dist/query-builders/order-limit-builder.js +239 -0
  280. package/dist/query-builders/sql-compiler.js +2040 -0
  281. package/dist/query-builders/subquery-builder.js +152 -0
  282. package/dist/query-builders/update-builder.js +182 -0
  283. package/dist/query-builders/view-builder.js +218 -0
  284. package/dist/query-builders/where-builder.js +1532 -0
  285. package/dist/query-interface.js +622 -0
  286. package/dist/query-optimizers/batch-optimizer.js +426 -0
  287. package/dist/query-optimizers/explain-plans.js +415 -0
  288. package/dist/query-optimizers/index.js +51 -0
  289. package/dist/query-optimizers/prepared-statement-cache.js +423 -0
  290. package/dist/query-optimizers/query-hints.js +438 -0
  291. package/dist/query-optimizers/query-optimizer.js +278 -0
  292. package/dist/query-optimizers/slow-query-logger.js +271 -0
  293. package/dist/replica-manager.js +507 -0
  294. package/dist/schema/index.js +15 -0
  295. package/dist/schema/migration-generator.js +374 -0
  296. package/dist/schema/schema-differ.js +549 -0
  297. package/dist/schema/types.js +6 -0
  298. package/dist/sql-constants.js +300 -0
  299. package/dist/sqlite-advanced.js +1047 -0
  300. package/dist/streams/index.js +12 -0
  301. package/dist/streams/transforms.js +178 -0
  302. package/dist/transaction.js +456 -0
  303. package/dist/types/index.js +180 -0
  304. package/dist/user-management.js +127 -0
  305. package/dist/utils/date.js +300 -0
  306. package/dist/utils/index.js +1079 -0
  307. package/dist/utils/string.js +161 -0
  308. package/dist/validators/index.js +19 -0
  309. package/dist/validators/validator.js +911 -0
  310. package/package.json +190 -0
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ /**
3
+ * SQL Server (MSSQL) feature/option catalog.
4
+ *
5
+ * SQL Server has no `CREATE EXTENSION` mechanism (unlike Postgres). Instead it exposes
6
+ * installable/enableable features through a mix of:
7
+ * - `sp_configure` server-level options (require `RECONFIGURE`, some require a server
8
+ * restart or `RECONFIGURE WITH OVERRIDE` for advanced options),
9
+ * - SQL Server Setup (the installer) — feature selection at install time, no T-SQL
10
+ * equivalent,
11
+ * - feature-specific DDL (`CREATE FULLTEXT CATALOG`, `CREATE SECURITY POLICY`,
12
+ * `CREATE ASSEMBLY`, `sys.sp_cdc_enable_db`, etc).
13
+ *
14
+ * Every entry below is `isNativeSqlExtension: false` — none of this is a genuine
15
+ * `CREATE EXTENSION`-style mechanism. `installCommand` is only populated where there is
16
+ * a real, verifiable single SQL statement (or short statement sequence) that enables the
17
+ * feature; it is left undefined where enabling the feature is installer-time-only or
18
+ * requires case-by-case DDL that doesn't reduce to one command.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.mssqlFeatures = void 0;
22
+ exports.mssqlFeatures = [
23
+ {
24
+ name: 'Full-Text Search',
25
+ dialects: ['mssql'],
26
+ category: 'full-text-search',
27
+ description: 'Linguistic search over character-based data using CREATE FULLTEXT CATALOG and CREATE FULLTEXT INDEX ... KEY INDEX <existing unique index> ON <catalog>, with functions CONTAINS/FREETEXT.',
28
+ installCommand: "CREATE FULLTEXT CATALOG default_fulltext_catalog",
29
+ isNativeSqlExtension: false,
30
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/search/full-text-search',
31
+ },
32
+ {
33
+ name: 'In-Memory OLTP',
34
+ dialects: ['mssql'],
35
+ category: 'in-memory',
36
+ description: 'Memory-optimized tables and natively compiled stored procedures for high-throughput OLTP workloads, enabled per-database via a MEMORY_OPTIMIZED_DATA filegroup and per-table via WITH (MEMORY_OPTIMIZED = ON).',
37
+ installCommand: undefined,
38
+ isNativeSqlExtension: false,
39
+ minVersion: '2014+',
40
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/in-memory-oltp-in-memory-optimization',
41
+ },
42
+ {
43
+ name: 'PolyBase',
44
+ dialects: ['mssql'],
45
+ category: 'foreign-data',
46
+ description: 'Query external data sources (Hadoop, Azure Blob Storage, S3-compatible storage, other SQL databases) directly from T-SQL via external tables and CREATE EXTERNAL DATA SOURCE, without a separate ETL step.',
47
+ installCommand: undefined,
48
+ isNativeSqlExtension: false,
49
+ minVersion: '2016+',
50
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/polybase/polybase-guide',
51
+ },
52
+ {
53
+ name: 'Machine Learning Services',
54
+ dialects: ['mssql'],
55
+ category: 'machine-learning',
56
+ description: 'Run R and Python scripts in-database via sp_execute_external_script, enabling in-database data science and model scoring without moving data out of SQL Server.',
57
+ installCommand: "EXEC sp_configure 'external scripts enabled', 1; RECONFIGURE;",
58
+ isNativeSqlExtension: false,
59
+ minVersion: '2016+',
60
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/machine-learning/sql-server-machine-learning-services',
61
+ },
62
+ {
63
+ name: 'CLR Integration',
64
+ dialects: ['mssql'],
65
+ category: 'procedural-language',
66
+ description: 'Host .NET assemblies inside SQL Server, exposing CLR classes/methods as stored procedures, functions, triggers, aggregates, and user-defined types via CREATE ASSEMBLY.',
67
+ installCommand: "EXEC sp_configure 'clr enabled', 1; RECONFIGURE;",
68
+ isNativeSqlExtension: false,
69
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/clr-integration/clr-integration-overview',
70
+ },
71
+ {
72
+ name: 'Row-Level Security',
73
+ dialects: ['mssql'],
74
+ category: 'security-audit',
75
+ description: 'Restrict which rows a user can access via CREATE SECURITY POLICY with a FILTER PREDICATE (and optionally a BLOCK PREDICATE) bound to an inline table-valued function.',
76
+ installCommand: undefined,
77
+ isNativeSqlExtension: false,
78
+ minVersion: '2016+',
79
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/security/row-level-security',
80
+ },
81
+ {
82
+ name: 'Dynamic Data Masking',
83
+ dialects: ['mssql'],
84
+ category: 'security-audit',
85
+ description: 'Obfuscate column values for non-privileged users at query time (without altering stored data) via ADD MASKED WITH (FUNCTION = \'...\') on a column definition.',
86
+ installCommand: undefined,
87
+ isNativeSqlExtension: false,
88
+ minVersion: '2016+',
89
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking',
90
+ },
91
+ {
92
+ name: 'Always Encrypted',
93
+ dialects: ['mssql'],
94
+ category: 'cryptography',
95
+ description: 'Client-side encryption of sensitive column values, keeping plaintext and encryption keys out of the database engine entirely; configured via column master keys/column encryption keys and driver support in the client, not plain T-SQL.',
96
+ installCommand: undefined,
97
+ isNativeSqlExtension: false,
98
+ minVersion: '2016+',
99
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine',
100
+ },
101
+ {
102
+ name: 'Transparent Data Encryption',
103
+ dialects: ['mssql'],
104
+ category: 'cryptography',
105
+ description: 'Encrypts an entire database at rest (data and log files) at the storage layer, transparent to applications; enabled with CREATE DATABASE ENCRYPTION KEY followed by ALTER DATABASE ... SET ENCRYPTION ON.',
106
+ installCommand: undefined,
107
+ isNativeSqlExtension: false,
108
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/transparent-data-encryption',
109
+ },
110
+ {
111
+ name: 'Change Data Capture',
112
+ dialects: ['mssql'],
113
+ category: 'replication',
114
+ description: 'Records INSERT/UPDATE/DELETE activity on tracked tables into change tables for consumption by ETL/replication pipelines, enabled per-database and per-table via sys.sp_cdc_enable_db / sys.sp_cdc_enable_table.',
115
+ installCommand: 'EXEC sys.sp_cdc_enable_db;',
116
+ isNativeSqlExtension: false,
117
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/about-change-data-capture-sql-server',
118
+ },
119
+ {
120
+ name: 'Service Broker',
121
+ dialects: ['mssql'],
122
+ category: 'utility',
123
+ description: 'Asynchronous, transactional messaging and queuing between databases/services within (or across) SQL Server instances, built on CREATE QUEUE / CREATE SERVICE / SEND / RECEIVE.',
124
+ installCommand: 'ALTER DATABASE CURRENT SET ENABLE_BROKER;',
125
+ isNativeSqlExtension: false,
126
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-service-broker',
127
+ },
128
+ {
129
+ name: 'Linked Servers',
130
+ dialects: ['mssql'],
131
+ category: 'foreign-data',
132
+ description: "SQL Server's closest equivalent to a foreign data wrapper: registers a remote OLE DB/ODBC data source so it can be queried/joined via four-part names or OPENQUERY. This ORM's MSSQL dialect throws on the Postgres-only FDW API and points callers here instead.",
133
+ installCommand: undefined,
134
+ isNativeSqlExtension: false,
135
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/linked-servers/linked-servers-database-engine',
136
+ },
137
+ {
138
+ name: 'Spatial Data Types (geometry/geography)',
139
+ dialects: ['mssql'],
140
+ category: 'spatial-gis',
141
+ description: 'Built-in planar (geometry) and geodetic (geography) spatial data types with methods like STDistance/STIntersects/STGeomFromText, available out of the box since SQL Server 2008 — not a separately installable feature.',
142
+ installCommand: undefined,
143
+ isNativeSqlExtension: false,
144
+ minVersion: '2008+',
145
+ docsUrl: 'https://learn.microsoft.com/en-us/sql/relational-databases/spatial/spatial-data-sql-server',
146
+ },
147
+ ];
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ /**
3
+ * Reference catalog of real, verifiable MySQL and MariaDB server plugins.
4
+ *
5
+ * Unlike Postgres-family dialects, MySQL/MariaDB do not have `CREATE
6
+ * EXTENSION`. Their closest real equivalent is the server plugin mechanism:
7
+ * `INSTALL PLUGIN <name> SONAME '<library>'` (or the shorthand
8
+ * `INSTALL SONAME '<library>'`, which registers every plugin a shared
9
+ * library provides). All entries here are therefore
10
+ * `isNativeSqlExtension: false`.
11
+ *
12
+ * Every entry documents a plugin/engine that genuinely ships with MySQL or
13
+ * MariaDB (or, for Enterprise-only plugins, is a real documented component
14
+ * of MySQL Enterprise Edition). Entries that could not be independently
15
+ * verified (exact plugin name and SONAME) were deliberately left out rather
16
+ * than guessed — see the accompanying report for the list.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.mysqlMariadbPlugins = void 0;
20
+ exports.mysqlMariadbPlugins = [
21
+ // --- Security / audit ---
22
+ {
23
+ name: 'audit_log',
24
+ dialects: ['mysql'],
25
+ category: 'security-audit',
26
+ description: 'MySQL Enterprise/community audit plugin that logs server activity (connections, queries) to a structured audit log file.',
27
+ installCommand: "INSTALL PLUGIN audit_log SONAME 'audit_log.so'",
28
+ isNativeSqlExtension: false,
29
+ minVersion: '5.5.28+ (Enterprise); also ships as a community plugin in Percona/MySQL builds',
30
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/audit-log-plugin.html',
31
+ },
32
+ {
33
+ name: 'validate_password',
34
+ dialects: ['mysql'],
35
+ category: 'security-audit',
36
+ description: 'Enforces password strength policy (length, mixed case, digits, special characters) for new/changed passwords.',
37
+ installCommand: "INSTALL PLUGIN validate_password SONAME 'validate_password.so'",
38
+ isNativeSqlExtension: false,
39
+ minVersion: '5.6.6+',
40
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/validate-password.html',
41
+ },
42
+ {
43
+ name: 'connection_control',
44
+ dialects: ['mysql'],
45
+ category: 'security-audit',
46
+ description: 'Introduces an increasing delay in server response to clients after a configurable number of consecutive failed login attempts, mitigating brute-force attacks.',
47
+ installCommand: "INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so'",
48
+ isNativeSqlExtension: false,
49
+ minVersion: '5.7.17+',
50
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/connection-control.html',
51
+ },
52
+ {
53
+ name: 'server_audit',
54
+ dialects: ['mariadb'],
55
+ category: 'security-audit',
56
+ description: "MariaDB's own audit plugin (originally from Percona) that logs connections, queries, and table access to a file, syslog, or a log table.",
57
+ installCommand: "INSTALL PLUGIN server_audit SONAME 'server_audit.so'",
58
+ isNativeSqlExtension: false,
59
+ minVersion: '5.5.37+ / 10.0.10+',
60
+ docsUrl: 'https://mariadb.com/kb/en/mariadb-audit-plugin/',
61
+ },
62
+ // --- MariaDB Galera / wsrep ---
63
+ {
64
+ name: 'wsrep_info (Galera)',
65
+ dialects: ['mariadb'],
66
+ category: 'high-availability',
67
+ description: 'Galera Cluster replication provider (wsrep API) enabling synchronous multi-master replication; loaded via the wsrep_provider system variable pointing at libgalera_smm.so, not a standard INSTALL PLUGIN statement.',
68
+ isNativeSqlExtension: false,
69
+ minVersion: '10.1+ (MariaDB Galera Cluster builds)',
70
+ docsUrl: 'https://mariadb.com/kb/en/galera-cluster/',
71
+ },
72
+ // --- Storage engines installed as plugins ---
73
+ {
74
+ name: 'MyRocks (rocksdb)',
75
+ dialects: ['mysql'],
76
+ category: 'utility',
77
+ description: 'RocksDB-based, LSM-tree storage engine optimized for write-heavy and compression-sensitive workloads (developed by Facebook, shipped in Percona Server/MariaDB and as a MySQL plugin build).',
78
+ installCommand: "INSTALL PLUGIN ROCKSDB SONAME 'ha_rocksdb.so'",
79
+ isNativeSqlExtension: false,
80
+ minVersion: 'Percona Server 5.7+ / MariaDB 10.2+',
81
+ docsUrl: 'https://mariadb.com/kb/en/myrocks/',
82
+ },
83
+ {
84
+ name: 'Spider',
85
+ dialects: ['mariadb'],
86
+ category: 'partitioning',
87
+ description: 'Sharding storage engine that transparently partitions/distributes data across multiple remote MySQL/MariaDB servers, presenting them as a single logical table.',
88
+ installCommand: "INSTALL PLUGIN SPIDER SONAME 'ha_spider.so'",
89
+ isNativeSqlExtension: false,
90
+ minVersion: '10.0+',
91
+ docsUrl: 'https://mariadb.com/kb/en/spider/',
92
+ },
93
+ {
94
+ name: 'CONNECT',
95
+ dialects: ['mariadb'],
96
+ category: 'foreign-data',
97
+ description: 'Foreign-data-style storage engine that lets tables read/write external data sources (CSV/text files, ODBC, XML, other databases, etc.) as if they were regular MariaDB tables.',
98
+ installCommand: "INSTALL PLUGIN CONNECT SONAME 'ha_connect.so'",
99
+ isNativeSqlExtension: false,
100
+ minVersion: '10.0+',
101
+ docsUrl: 'https://mariadb.com/kb/en/connect/',
102
+ },
103
+ // --- Full-text / search ---
104
+ {
105
+ name: 'mroonga',
106
+ dialects: ['mariadb'],
107
+ category: 'full-text-search',
108
+ description: 'Storage engine providing fast, CJK-aware full-text search built on the Groonga search engine library; distributed as an optional MariaDB plugin package.',
109
+ installCommand: "INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so'",
110
+ isNativeSqlExtension: false,
111
+ minVersion: '10.0+ (mariadb-plugin-mroonga package)',
112
+ docsUrl: 'https://mariadb.com/kb/en/mroonga/',
113
+ },
114
+ // --- Semi-sync replication ---
115
+ {
116
+ name: 'rpl_semi_sync_master',
117
+ dialects: ['mysql'],
118
+ category: 'replication',
119
+ description: 'Semi-synchronous replication plugin for the source: a transaction commit blocks until at least one replica has acknowledged receipt.',
120
+ installCommand: "INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'",
121
+ isNativeSqlExtension: false,
122
+ minVersion: '5.5+',
123
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/replication-semisync.html',
124
+ },
125
+ {
126
+ name: 'rpl_semi_sync_slave',
127
+ dialects: ['mysql'],
128
+ category: 'replication',
129
+ description: 'Semi-synchronous replication plugin for the replica, sending acknowledgements back to the source once relay events are received.',
130
+ installCommand: "INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'",
131
+ isNativeSqlExtension: false,
132
+ minVersion: '5.5+',
133
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/replication-semisync.html',
134
+ },
135
+ {
136
+ name: 'semisync_master',
137
+ dialects: ['mariadb'],
138
+ category: 'replication',
139
+ description: "MariaDB's semi-synchronous replication plugin for the source, functionally equivalent to MySQL's rpl_semi_sync_master but packaged under the semisync_master name.",
140
+ installCommand: "INSTALL PLUGIN semisync_master SONAME 'semisync_master.so'",
141
+ isNativeSqlExtension: false,
142
+ minVersion: '5.5+',
143
+ docsUrl: 'https://mariadb.com/kb/en/semisynchronous-replication/',
144
+ },
145
+ {
146
+ name: 'semisync_slave',
147
+ dialects: ['mariadb'],
148
+ category: 'replication',
149
+ description: "MariaDB's semi-synchronous replication plugin for the replica side.",
150
+ installCommand: "INSTALL PLUGIN semisync_slave SONAME 'semisync_slave.so'",
151
+ isNativeSqlExtension: false,
152
+ minVersion: '5.5+',
153
+ docsUrl: 'https://mariadb.com/kb/en/semisynchronous-replication/',
154
+ },
155
+ // --- Group Replication ---
156
+ {
157
+ name: 'group_replication',
158
+ dialects: ['mysql'],
159
+ category: 'high-availability',
160
+ description: 'Provides distributed state machine replication with built-in conflict detection, enabling multi-primary or single-primary fault-tolerant MySQL clusters.',
161
+ installCommand: "INSTALL PLUGIN group_replication SONAME 'group_replication.so'",
162
+ isNativeSqlExtension: false,
163
+ minVersion: '5.7.17+',
164
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/group-replication.html',
165
+ },
166
+ // --- X Plugin ---
167
+ {
168
+ name: 'mysqlx',
169
+ dialects: ['mysql'],
170
+ category: 'connectivity',
171
+ description: 'X Plugin implementing the X Protocol, adding document-store (CRUD/NoSQL) access and X DevAPI support alongside classic SQL connections.',
172
+ installCommand: "INSTALL PLUGIN mysqlx SONAME 'mysqlx.so'",
173
+ isNativeSqlExtension: false,
174
+ minVersion: '5.7.12+ (bundled and enabled by default since 8.0)',
175
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/x-plugin.html',
176
+ },
177
+ // --- Keyring (Enterprise/community variants) ---
178
+ {
179
+ name: 'keyring_file',
180
+ dialects: ['mysql'],
181
+ category: 'cryptography',
182
+ description: 'Keyring plugin that stores encryption keys (used by InnoDB tablespace encryption, etc.) in a local file; available in both community and Enterprise MySQL.',
183
+ installCommand: "INSTALL PLUGIN keyring_file SONAME 'keyring_file.so'",
184
+ isNativeSqlExtension: false,
185
+ minVersion: '5.7.11+',
186
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/keyring-file-plugin.html',
187
+ },
188
+ {
189
+ name: 'keyring_encrypted_file',
190
+ dialects: ['mysql'],
191
+ category: 'cryptography',
192
+ description: 'MySQL Enterprise Edition-only keyring plugin that stores keys in a password-encrypted local file, requiring a commercial license.',
193
+ installCommand: "INSTALL PLUGIN keyring_encrypted_file SONAME 'keyring_encrypted_file.so'",
194
+ isNativeSqlExtension: false,
195
+ minVersion: '8.0.24+ (Enterprise Edition only)',
196
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/keyring-encrypted-file-plugin.html',
197
+ },
198
+ // --- Query rewrite ---
199
+ {
200
+ name: 'query_rewrite',
201
+ dialects: ['mysql'],
202
+ category: 'utility',
203
+ description: 'Rewrite plugin pair (query_rewrite_pre_parse / query_rewrite_post_parse examples ship as rewriter) that lets administrators register rules to rewrite incoming SQL statements before or after parsing.',
204
+ installCommand: "INSTALL PLUGIN rewriter SONAME 'rewriter.so'",
205
+ isNativeSqlExtension: false,
206
+ minVersion: '5.7.6+',
207
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/rewriter-query-rewrite-plugin.html',
208
+ },
209
+ // --- Thread pool ---
210
+ {
211
+ name: 'thread_pool',
212
+ dialects: ['mysql'],
213
+ category: 'utility',
214
+ description: 'MySQL Enterprise Thread Pool plugin that manages a pool of worker threads to handle client statement execution more efficiently than one-thread-per-connection under high concurrency.',
215
+ installCommand: "INSTALL PLUGIN thread_pool SONAME 'thread_pool.so'",
216
+ isNativeSqlExtension: false,
217
+ minVersion: '5.6+ (Enterprise Edition only)',
218
+ docsUrl: 'https://dev.mysql.com/doc/refman/8.0/en/thread-pool.html',
219
+ },
220
+ {
221
+ name: 'thread_pool (MariaDB)',
222
+ dialects: ['mariadb'],
223
+ category: 'utility',
224
+ description: "MariaDB's own thread pool implementation, included free in MariaDB Community Server (unlike MySQL's Enterprise-only equivalent) and enabled via the thread_handling system variable rather than INSTALL PLUGIN.",
225
+ isNativeSqlExtension: false,
226
+ minVersion: '5.5+',
227
+ docsUrl: 'https://mariadb.com/kb/en/thread-pool-in-mariadb/',
228
+ },
229
+ ];
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /**
3
+ * Reference catalog entries for Oracle Database licensed options/features and
4
+ * IBM Db2 (for LUW) features.
5
+ *
6
+ * Neither Oracle nor Db2 has a Postgres-style `CREATE EXTENSION` mechanism.
7
+ * Oracle's capabilities here are separately licensed "options" enabled at
8
+ * install/configuration time (mostly via the installer, `DBCA`, or a DBA
9
+ * configuration step - a few via `ALTER SYSTEM`/`ALTER DATABASE`, but none via
10
+ * a single portable "install this extension" SQL statement). Db2's are
11
+ * server features enabled via configuration (`db2set`, instance/database
12
+ * configuration, or the installer), not `CREATE EXTENSION`. Accordingly,
13
+ * every entry below sets `isNativeSqlExtension: false`, and `installCommand`
14
+ * is only populated where a genuine SQL-level enable/activate statement
15
+ * exists.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.oracleDb2Features = void 0;
19
+ exports.oracleDb2Features = [
20
+ // ==================== Oracle Database options/features ====================
21
+ {
22
+ name: 'Oracle Text',
23
+ dialects: ['oracle'],
24
+ category: 'full-text-search',
25
+ description: 'Full-text search and document classification for Oracle: CONTEXT/CTXCAT/CTXRULE indexes queried with CONTAINS()/CATSEARCH(), tokenizing text, XML, and many document formats.',
26
+ isNativeSqlExtension: false,
27
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/ccref/',
28
+ },
29
+ {
30
+ name: 'Oracle Spatial and Graph',
31
+ dialects: ['oracle'],
32
+ category: 'spatial-gis',
33
+ description: 'Spatial data types (SDO_GEOMETRY) and functions for storing, indexing, and querying vector and raster geospatial data, plus a property-graph engine (PGX) for graph analytics.',
34
+ isNativeSqlExtension: false,
35
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/spatl/',
36
+ },
37
+ {
38
+ name: 'Oracle Advanced Security',
39
+ dialects: ['oracle'],
40
+ category: 'cryptography',
41
+ description: 'Transparent Data Encryption (TDE) for encrypting tablespaces/columns at rest, and Data Redaction for masking sensitive column values at query time without changing stored data.',
42
+ isNativeSqlExtension: false,
43
+ installCommand: 'ADMINISTER KEY MANAGEMENT SET KEY ... (enables TDE wallet/keystore)',
44
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/asoag/',
45
+ },
46
+ {
47
+ name: 'Oracle Data Guard',
48
+ dialects: ['oracle'],
49
+ category: 'high-availability',
50
+ description: 'Disaster-recovery and data-protection feature that maintains one or more synchronized standby databases (physical or logical) for automatic failover/switchover from a primary database.',
51
+ isNativeSqlExtension: false,
52
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/',
53
+ },
54
+ {
55
+ name: 'Oracle Real Application Clusters (RAC)',
56
+ dialects: ['oracle'],
57
+ category: 'high-availability',
58
+ description: 'Clustering option allowing multiple database instances on different nodes to concurrently access a single shared database (Cache Fusion) for horizontal scale-out and instance-level HA.',
59
+ isNativeSqlExtension: false,
60
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/',
61
+ },
62
+ {
63
+ name: 'Oracle Partitioning',
64
+ dialects: ['oracle'],
65
+ category: 'partitioning',
66
+ description: 'Separately licensed option that enables range/list/hash/composite table and index partitioning. Note: this ORM\'s Oracle dialect emits partitioning DDL (CREATE TABLE ... PARTITION BY), but running it against Oracle actually requires this option to be licensed - the DDL will succeed on an unlicensed database yet is out of compliance.',
67
+ isNativeSqlExtension: false,
68
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/vldbg/',
69
+ },
70
+ {
71
+ name: 'Oracle Advanced Compression',
72
+ dialects: ['oracle'],
73
+ category: 'compression',
74
+ description: 'Licensed option covering advanced row/OLTP compression (beyond basic read-only compression), LOB deduplication/compression, and Advanced Row Compression for update-heavy tables.',
75
+ isNativeSqlExtension: false,
76
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/dwhsg/oracle-advanced-compression.html',
77
+ },
78
+ {
79
+ name: 'Oracle Database In-Memory',
80
+ dialects: ['oracle'],
81
+ category: 'in-memory',
82
+ description: 'Adds an in-memory columnar format alongside the row store for tables/partitions populated INMEMORY, accelerating analytic scans without changing SQL or application logic.',
83
+ isNativeSqlExtension: false,
84
+ installCommand: 'ALTER TABLE table_name INMEMORY (enables the in-memory column store for a table, after the INMEMORY_SIZE instance parameter is configured)',
85
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/inmem/',
86
+ },
87
+ {
88
+ name: 'Oracle Machine Learning',
89
+ dialects: ['oracle'],
90
+ category: 'machine-learning',
91
+ description: 'In-database machine learning (OML4SQL/OML4R/OML4Py): build, score, and deploy classification, regression, clustering, and anomaly-detection models using SQL functions and PL/SQL packages (DBMS_DATA_MINING) directly against database tables.',
92
+ isNativeSqlExtension: false,
93
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/machine-learning/',
94
+ },
95
+ {
96
+ name: 'Oracle Multitenant',
97
+ dialects: ['oracle'],
98
+ category: 'utility',
99
+ description: 'Container Database (CDB) / Pluggable Database (PDB) architecture letting many pluggable databases share one set of background processes and system memory for consolidation and easy clone/plug/unplug operations.',
100
+ isNativeSqlExtension: false,
101
+ installCommand: 'CREATE PLUGGABLE DATABASE pdb_name ... (creates a PDB inside an existing multitenant-enabled CDB)',
102
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/',
103
+ },
104
+ {
105
+ name: 'Oracle Label Security',
106
+ dialects: ['oracle'],
107
+ category: 'security-audit',
108
+ description: 'Mandatory access control option that tags rows with security labels and restricts read/write access based on a user\'s label authorizations, layered on top of standard privileges/VPD.',
109
+ isNativeSqlExtension: false,
110
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/olsag/',
111
+ },
112
+ {
113
+ name: 'Oracle Database Vault',
114
+ dialects: ['oracle'],
115
+ category: 'security-audit',
116
+ description: 'Restricts even privileged (DBA) access to application data via realms and command rules, enforcing separation of duties independent of a user\'s system privileges.',
117
+ isNativeSqlExtension: false,
118
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/dvadm/',
119
+ },
120
+ {
121
+ name: 'PL/SQL',
122
+ dialects: ['oracle'],
123
+ category: 'procedural-language',
124
+ description: 'Oracle\'s built-in procedural extension to SQL (blocks, stored procedures/functions/packages, cursors, exception handling). Free/built-in - not a separately licensed option, listed here for completeness.',
125
+ isNativeSqlExtension: false,
126
+ docsUrl: 'https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/',
127
+ },
128
+ // ==================== IBM Db2 (for LUW) features ====================
129
+ {
130
+ name: 'Db2 Text Search',
131
+ dialects: ['db2'],
132
+ category: 'full-text-search',
133
+ description: 'Full-text search feature for Db2 LUW built on an embedded search engine: create text indexes on character/XML columns and query them with CONTAINS()/SCORE() predicates.',
134
+ isNativeSqlExtension: false,
135
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=search-db2-text',
136
+ },
137
+ {
138
+ name: 'pureXML',
139
+ dialects: ['db2'],
140
+ category: 'data-types',
141
+ description: 'Native XML storage and XQuery execution: an XML column type stored in parsed hierarchical form (not as text/CLOB), queried with XMLQUERY/XMLTABLE/XMLEXISTS. Not currently modeled by this ORM\'s Db2 dialect (mapDataType has no XML case and there is no XQuery builder - a known gap).',
142
+ isNativeSqlExtension: false,
143
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=xml-purexml-overview',
144
+ },
145
+ {
146
+ name: 'Db2 BLU Acceleration',
147
+ dialects: ['db2'],
148
+ category: 'in-memory',
149
+ description: 'Column-organized tables (CREATE TABLE ... ORGANIZE BY COLUMN) with in-memory columnar processing and actionable compression for analytic workloads. Not currently modeled by this ORM\'s Db2 dialect - createTable only emits row-organized DDL (a known gap).',
150
+ isNativeSqlExtension: false,
151
+ installCommand: 'CREATE TABLE table_name (...) ORGANIZE BY COLUMN',
152
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=tables-column-organized',
153
+ },
154
+ {
155
+ name: 'Db2 pureScale',
156
+ dialects: ['db2'],
157
+ category: 'high-availability',
158
+ description: 'Active-active clustering feature for Db2 LUW: multiple database members share access to the same data via a shared-disk cluster file system and central coordination (CF), providing continuous availability and horizontal scale-out.',
159
+ isNativeSqlExtension: false,
160
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=overview-pureScale-feature',
161
+ },
162
+ {
163
+ name: 'Db2 HADR (High Availability Disaster Recovery)',
164
+ dialects: ['db2'],
165
+ category: 'high-availability',
166
+ description: 'Log-shipping replication feature that maintains one or more standby databases in sync with a primary for automatic/manual failover, configured via database configuration parameters (HADR_*) rather than a SQL statement.',
167
+ isNativeSqlExtension: false,
168
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=dr-hadr-high-availability-disaster-recovery',
169
+ },
170
+ {
171
+ name: 'Db2 Federation',
172
+ dialects: ['db2'],
173
+ category: 'foreign-data',
174
+ description: 'Federated/remote-table access via CREATE WRAPPER (registers a data-source driver), CREATE SERVER (registers a remote data source), CREATE USER MAPPING (maps a local auth ID to remote credentials), and CREATE NICKNAME (Db2\'s analogue of a foreign table). Genuinely implemented in this ORM\'s Db2 dialect (src/dialects/db2/index.ts, createForeignDataWrapper/createForeignServer/createUserMapping/createForeignTable and their buildCreate* SQL builders).',
175
+ isNativeSqlExtension: false,
176
+ installCommand: 'CREATE WRAPPER wrapper_name',
177
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=federation-database-support',
178
+ },
179
+ {
180
+ name: 'Db2 Advanced Copy Services / storage compression',
181
+ dialects: ['db2'],
182
+ category: 'compression',
183
+ description: 'Row compression (adaptive/classic COMPRESS YES) and value compression reduce on-disk table size; Advanced Copy Services covers snapshot-based backup/restore integration with storage systems (FlashCopy). Enabled via ALTER TABLE .../instance configuration, not a single portable install statement.',
184
+ isNativeSqlExtension: false,
185
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=data-compression',
186
+ },
187
+ {
188
+ name: 'Row and Column Access Control (RCAC)',
189
+ dialects: ['db2'],
190
+ category: 'security-audit',
191
+ description: 'Fine-grained row/column security: CREATE PERMISSION defines a row-filtering predicate, CREATE MASK defines a column value mask, and ALTER TABLE ... ACTIVATE ROW ACCESS CONTROL enables enforcement. Genuinely implemented in this ORM\'s Db2 dialect (src/dialects/db2/index.ts, createPolicy/dropPolicy/enableRowLevelSecurity using CREATE PERMISSION + ACTIVATE ROW ACCESS CONTROL).',
192
+ isNativeSqlExtension: false,
193
+ installCommand: 'ALTER TABLE table_name ACTIVATE ROW ACCESS CONTROL',
194
+ docsUrl: 'https://www.ibm.com/docs/en/db2/11.5?topic=controls-row-column-access-control-overview',
195
+ },
196
+ ];