@depup/pg-mem 3.0.14-depup.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.
- package/README.md +35 -0
- package/changes.json +26 -0
- package/index.d.ts +1 -0
- package/index.js +16547 -0
- package/index.js.map +1 -0
- package/package.json +196 -0
- package/readme.md +297 -0
- package/types/adapters/adapters.d.ts +37 -0
- package/types/adapters/index.d.ts +2 -0
- package/types/adapters/pg-socket-adapter.d.ts +30 -0
- package/types/column.d.ts +27 -0
- package/types/constraints/foreign-key.d.ts +14 -0
- package/types/constraints/generated-from-expr.d.ts +14 -0
- package/types/constraints/generated-identity.d.ts +13 -0
- package/types/constraints/index-cst.d.ts +9 -0
- package/types/constraints/subscription.d.ts +7 -0
- package/types/constraints/wrapped.d.ts +9 -0
- package/types/datatypes/datatype-base.d.ts +66 -0
- package/types/datatypes/datatypes-geometric.d.ts +59 -0
- package/types/datatypes/datatypes-geometric.spec.d.ts +2 -0
- package/types/datatypes/datatypes.d.ts +101 -0
- package/types/datatypes/index.d.ts +2 -0
- package/types/datatypes/t-custom-enum.d.ts +21 -0
- package/types/datatypes/t-equivalent.d.ts +18 -0
- package/types/datatypes/t-inet.d.ts +13 -0
- package/types/datatypes/t-interval.d.ts +13 -0
- package/types/datatypes/t-jsonb.d.ts +16 -0
- package/types/datatypes/t-record.d.ts +17 -0
- package/types/datatypes/t-regclass.d.ts +11 -0
- package/types/datatypes/t-regtype.d.ts +11 -0
- package/types/datatypes/t-time.d.ts +14 -0
- package/types/datatypes/t-timestamp.d.ts +18 -0
- package/types/db.d.ts +3 -0
- package/types/evaluator.d.ts +61 -0
- package/types/execution/clean-results.d.ts +5 -0
- package/types/execution/exec-utils.d.ts +19 -0
- package/types/execution/records-mutations/deletion.d.ts +8 -0
- package/types/execution/records-mutations/insert.d.ts +13 -0
- package/types/execution/records-mutations/mutation-base.d.ts +31 -0
- package/types/execution/records-mutations/truncate-table.d.ts +10 -0
- package/types/execution/records-mutations/update.d.ts +10 -0
- package/types/execution/schema-amends/alter-enum.d.ts +20 -0
- package/types/execution/schema-amends/alter-sequence.d.ts +19 -0
- package/types/execution/schema-amends/alter.d.ts +19 -0
- package/types/execution/schema-amends/comment.d.ts +19 -0
- package/types/execution/schema-amends/create-enum.d.ts +20 -0
- package/types/execution/schema-amends/create-function.d.ts +20 -0
- package/types/execution/schema-amends/create-index.d.ts +19 -0
- package/types/execution/schema-amends/create-materialized-view.d.ts +19 -0
- package/types/execution/schema-amends/create-schema.d.ts +19 -0
- package/types/execution/schema-amends/create-sequence.d.ts +21 -0
- package/types/execution/schema-amends/create-table.d.ts +21 -0
- package/types/execution/schema-amends/create-view.d.ts +22 -0
- package/types/execution/schema-amends/do.d.ts +9 -0
- package/types/execution/schema-amends/drop-index.d.ts +18 -0
- package/types/execution/schema-amends/drop-sequence.d.ts +18 -0
- package/types/execution/schema-amends/drop-table.d.ts +19 -0
- package/types/execution/schema-amends/drop-type.d.ts +18 -0
- package/types/execution/select.d.ts +15 -0
- package/types/execution/set.d.ts +9 -0
- package/types/execution/show.d.ts +8 -0
- package/types/execution/statement-exec.d.ts +26 -0
- package/types/execution/transaction-statements.d.ts +16 -0
- package/types/functions/date.d.ts +3 -0
- package/types/functions/index.d.ts +2 -0
- package/types/functions/numbers.d.ts +3 -0
- package/types/functions/sequence-fns.d.ts +3 -0
- package/types/functions/string.d.ts +3 -0
- package/types/functions/subquery.d.ts +3 -0
- package/types/functions/system.d.ts +3 -0
- package/types/index.d.ts +5 -0
- package/types/interfaces-private.d.ts +605 -0
- package/types/interfaces.d.ts +449 -0
- package/types/migrate/migrate-interfaces.d.ts +32 -0
- package/types/migrate/migrate.d.ts +8 -0
- package/types/misc/buffer-deno.d.ts +7 -0
- package/types/misc/buffer-node.d.ts +7 -0
- package/types/misc/pg-escape.d.ts +2 -0
- package/types/misc/pg-utils.d.ts +3 -0
- package/types/parser/context.d.ts +26 -0
- package/types/parser/expression-builder.d.ts +8 -0
- package/types/parser/function-call.d.ts +4 -0
- package/types/parser/parse-cache.d.ts +6 -0
- package/types/schema/btree-index.d.ts +48 -0
- package/types/schema/consts.d.ts +10 -0
- package/types/schema/custom-index.d.ts +31 -0
- package/types/schema/function-call-table.d.ts +20 -0
- package/types/schema/information-schema/columns-list.d.ts +13 -0
- package/types/schema/information-schema/constraint-column-usage.d.ts +10 -0
- package/types/schema/information-schema/index.d.ts +3 -0
- package/types/schema/information-schema/key-column-usage.d.ts +10 -0
- package/types/schema/information-schema/table-constraints.d.ts +10 -0
- package/types/schema/information-schema/table-list.d.ts +14 -0
- package/types/schema/overload-resolver.d.ts +17 -0
- package/types/schema/pg-catalog/binary-operators.d.ts +3 -0
- package/types/schema/pg-catalog/index.d.ts +3 -0
- package/types/schema/pg-catalog/pg-attribute-list.d.ts +11 -0
- package/types/schema/pg-catalog/pg-class.d.ts +13 -0
- package/types/schema/pg-catalog/pg-constraints-list.d.ts +13 -0
- package/types/schema/pg-catalog/pg-database.d.ts +17 -0
- package/types/schema/pg-catalog/pg-enum-list.d.ts +10 -0
- package/types/schema/pg-catalog/pg-index-list.d.ts +10 -0
- package/types/schema/pg-catalog/pg-namespace-list.d.ts +10 -0
- package/types/schema/pg-catalog/pg-proc.d.ts +10 -0
- package/types/schema/pg-catalog/pg-range.d.ts +10 -0
- package/types/schema/pg-catalog/pg-sequences-list.d.ts +10 -0
- package/types/schema/pg-catalog/pg-type-list.d.ts +10 -0
- package/types/schema/pg-catalog/pg-user-list.d.ts +10 -0
- package/types/schema/pg-catalog/pg_statio_user_tables.d.ts +25 -0
- package/types/schema/pg-catalog/sql-function-language.d.ts +3 -0
- package/types/schema/prepared-intercepted.d.ts +11 -0
- package/types/schema/prepared.d.ts +5 -0
- package/types/schema/readonly-table.d.ts +62 -0
- package/types/schema/schema.d.ts +73 -0
- package/types/schema/sequence.d.ts +27 -0
- package/types/schema/table-index.d.ts +32 -0
- package/types/schema/values-table.d.ts +16 -0
- package/types/schema/view.d.ts +18 -0
- package/types/table.d.ts +97 -0
- package/types/transaction.d.ts +26 -0
- package/types/transforms/aggregation.d.ts +41 -0
- package/types/transforms/aggregations/array_agg.d.ts +11 -0
- package/types/transforms/aggregations/avg.d.ts +11 -0
- package/types/transforms/aggregations/bool-aggregs.d.ts +12 -0
- package/types/transforms/aggregations/count.d.ts +19 -0
- package/types/transforms/aggregations/json_aggs.d.ts +11 -0
- package/types/transforms/aggregations/max-min.d.ts +12 -0
- package/types/transforms/aggregations/sum.d.ts +11 -0
- package/types/transforms/alias.d.ts +29 -0
- package/types/transforms/and-filter.d.ts +15 -0
- package/types/transforms/array-filter.d.ts +14 -0
- package/types/transforms/between-filter.d.ts +16 -0
- package/types/transforms/build-filter.d.ts +4 -0
- package/types/transforms/distinct.d.ts +16 -0
- package/types/transforms/eq-filter.d.ts +17 -0
- package/types/transforms/false-filter.d.ts +11 -0
- package/types/transforms/in-filter.d.ts +14 -0
- package/types/transforms/ineq-filter.d.ts +16 -0
- package/types/transforms/join.d.ts +74 -0
- package/types/transforms/limit.d.ts +18 -0
- package/types/transforms/not-in-filter.d.ts +15 -0
- package/types/transforms/or-filter.d.ts +13 -0
- package/types/transforms/order-by.d.ts +26 -0
- package/types/transforms/restrictive-index.d.ts +15 -0
- package/types/transforms/selection.d.ts +45 -0
- package/types/transforms/seq-scan.d.ts +14 -0
- package/types/transforms/startswith-filter.d.ts +14 -0
- package/types/transforms/transform-base.d.ts +100 -0
- package/types/transforms/union.d.ts +32 -0
- package/types/utils.d.ts +86 -0
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack/bootstrap","./src/utils.ts","./src/interfaces-private.ts","./src/datatypes/index.ts","./src/interfaces.ts","./src/parser/context.ts","./src/transforms/transform-base.ts","./src/parser/expression-builder.ts","./src/execution/exec-utils.ts","./src/schema/readonly-table.ts","./src/datatypes/datatype-base.ts","./src/transforms/selection.ts","./src/execution/select.ts","external \"pgsql-ast-parser\"","./src/evaluator.ts","./src/datatypes/datatypes.ts","external \"object-hash\"","./src/execution/clean-results.ts","external \"immutable\"","external \"moment\"","./src/misc/buffer-node.ts","./src/datatypes/t-record.ts","./src/execution/records-mutations/mutation-base.ts","external \"lru-cache\"","./src/transforms/aggregation.ts","./src/transforms/join.ts","./src/transforms/alias.ts","./src/parser/parse-cache.ts","./src/datatypes/t-custom-enum.ts","./src/execution/statement-exec.ts","./src/schema/table-index.ts","external \"json-stable-stringify\"","./src/table.ts","./src/transforms/array-filter.ts","./src/constraints/index-cst.ts","./src/column.ts","./src/misc/pg-escape.ts","./src/execution/schema-amends/create-sequence.ts","./src/schema/view.ts","./src/transforms/seq-scan.ts","./src/adapters/index.ts","./src/index.ts","./src/db.ts","./src/schema/schema.ts","./src sync","./src/parser/function-call.ts","./src/datatypes/datatypes-geometric.ts","./src/datatypes/t-interval.ts","./src/datatypes/t-time.ts","./src/datatypes/t-timestamp.ts","./src/datatypes/t-jsonb.ts","./src/datatypes/t-regtype.ts","./src/datatypes/t-regclass.ts","./src/datatypes/t-inet.ts","./src/transforms/restrictive-index.ts","./src/transforms/aggregations/count.ts","./src/transforms/aggregations/max-min.ts","./src/transforms/aggregations/sum.ts","./src/transforms/aggregations/array_agg.ts","./src/transforms/aggregations/avg.ts","./src/transforms/aggregations/json_aggs.ts","./src/transforms/aggregations/bool-aggregs.ts","./src/execution/records-mutations/deletion.ts","./src/execution/records-mutations/update.ts","./src/execution/records-mutations/insert.ts","./src/schema/values-table.ts","./src/schema/function-call-table.ts","./src/schema/btree-index.ts","external \"functional-red-black-tree\"","./src/constraints/generated-identity.ts","./src/constraints/generated-from-expr.ts","./src/constraints/foreign-key.ts","./src/constraints/subscription.ts","./src/constraints/wrapped.ts","./src/migrate/migrate.ts","./src/datatypes/t-equivalent.ts","./src/schema/overload-resolver.ts","./src/schema/sequence.ts","./src/execution/schema-amends/create-table.ts","./src/execution/schema-amends/create-index.ts","./src/execution/schema-amends/alter.ts","./src/execution/schema-amends/alter-sequence.ts","./src/execution/schema-amends/drop-index.ts","./src/execution/schema-amends/drop-table.ts","./src/execution/schema-amends/drop-sequence.ts","./src/execution/transaction-statements.ts","./src/execution/records-mutations/truncate-table.ts","./src/execution/show.ts","./src/execution/set.ts","./src/execution/schema-amends/create-enum.ts","./src/execution/schema-amends/create-view.ts","./src/execution/schema-amends/create-materialized-view.ts","./src/execution/schema-amends/create-schema.ts","./src/execution/schema-amends/create-function.ts","./src/execution/schema-amends/do.ts","./src/execution/schema-amends/drop-type.ts","./src/execution/schema-amends/alter-enum.ts","./src/execution/schema-amends/comment.ts","./src/schema/prepared-intercepted.ts","./src/schema/prepared.ts","./src/transforms/build-filter.ts","./src/transforms/eq-filter.ts","./src/transforms/false-filter.ts","./src/transforms/and-filter.ts","./src/transforms/or-filter.ts","./src/transforms/in-filter.ts","./src/transforms/not-in-filter.ts","./src/transforms/startswith-filter.ts","./src/transforms/ineq-filter.ts","./src/transforms/between-filter.ts","./src/adapters/adapters.ts","./src/misc/pg-utils.ts","./src/adapters/pg-socket-adapter.ts","./src/transaction.ts","./src/transforms/limit.ts","./src/transforms/union.ts","./src/transforms/distinct.ts","./src/transforms/order-by.ts","./src/schema/pg-catalog/index.ts","./src/schema/pg-catalog/pg-attribute-list.ts","./src/schema/pg-catalog/pg-class.ts","./src/schema/pg-catalog/pg-constraints-list.ts","./src/schema/pg-catalog/pg-enum-list.ts","./src/schema/pg-catalog/pg-index-list.ts","./src/schema/pg-catalog/pg-namespace-list.ts","./src/schema/pg-catalog/pg-sequences-list.ts","./src/schema/pg-catalog/pg-type-list.ts","./src/schema/pg-catalog/pg-user-list.ts","./src/functions/index.ts","./src/functions/string.ts","./src/functions/date.ts","./src/functions/system.ts","./src/functions/sequence-fns.ts","./src/functions/numbers.ts","./src/functions/subquery.ts","./src/schema/pg-catalog/pg-range.ts","./src/schema/pg-catalog/pg-database.ts","./src/schema/pg-catalog/binary-operators.ts","./src/schema/pg-catalog/sql-function-language.ts","./src/schema/pg-catalog/pg-proc.ts","./src/schema/pg-catalog/pg_statio_user_tables.ts","./src/schema/information-schema/index.ts","./src/schema/information-schema/columns-list.ts","./src/schema/information-schema/table-list.ts","./src/schema/information-schema/table-constraints.ts","./src/schema/information-schema/key-column-usage.ts","./src/schema/information-schema/constraint-column-usage.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 40);\n","import moment from 'moment';\nimport { List } from 'immutable';\nimport { IValue, NotSupported, RegClass, _IRelation, _ISchema, _ISelection, _ITable, _IType, _Transaction } from './interfaces-private';\nimport { BinaryOperator, DataTypeDef, Expr, ExprRef, ExprValueKeyword, Interval, nil, parse, QName, SelectedColumn } from 'pgsql-ast-parser';\nimport { ColumnNotFound, ISubscription, IType, QueryError, typeDefToStr } from './interfaces';\nimport { bufClone, bufCompare, isBuf } from './misc/buffer-node';\n\ndeclare var __non_webpack_require__: any;\ndeclare var require: any;\nexport const doRequire = typeof __non_webpack_require__ !== 'undefined'\n ? __non_webpack_require__\n : typeof require === 'undefined' ? (v: string) => { throw new Error(`Cannot require ${v} in this environment`) } : require;\n\n\nexport interface Ctor<T> extends Function {\n new(...params: any[]): T; prototype: T;\n}\n\nexport type Optional<T> = { [key in keyof T]?: T[key] };\nexport type SRecord<T> = Record<string, T>;\n\n\nexport function trimNullish<T>(value: T, depth = 5): T {\n if (depth < 0)\n return value;\n if (value instanceof Array) {\n value.forEach(x => trimNullish(x, depth - 1))\n }\n if (typeof value !== 'object' || value instanceof Date || moment.isMoment(value) || moment.isDuration(value))\n return value;\n\n if (!value) {\n return value;\n }\n\n for (const k of Object.keys(value)) {\n const val = (value as any)[k];\n if (nullIsh(val))\n delete (value as any)[k];\n else\n trimNullish(val, depth - 1);\n }\n return value;\n}\n\n\nexport function watchUse<T>(rootValue: T): { checked: T; check?: () => string | null; } {\n if (!rootValue || typeof globalThis !== 'undefined' && (globalThis as any)?.process?.env?.['NOCHECKFULLQUERYUSAGE'] === 'true') {\n return { checked: rootValue };\n }\n if (typeof rootValue !== 'object') {\n throw new NotSupported();\n }\n if (Array.isArray(rootValue)) {\n throw new NotSupported();\n }\n const toUse = new Map<string, any>();\n function recurse(value: any, stack: List<string> = List()): any {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (Array.isArray(value)) {\n return value\n .map((x, i) => recurse(x, stack.push(`[${i}]`)));\n }\n // watch object\n const ret: any = {};\n for (const [k, _v] of Object.entries(value)) {\n if (k[0] === '_') { // ignore properties starting with '_'\n ret[k] = _v;\n continue;\n }\n const nstack = stack.push('.' + k);\n let v = recurse(_v, nstack);\n const nstackKey = nstack.join('');\n toUse.set(nstackKey, _v);\n Object.defineProperty(ret, k, {\n get() {\n toUse.delete(nstackKey);\n return v;\n },\n enumerable: true,\n });\n }\n return ret;\n }\n\n const final = recurse(rootValue);\n\n const check = function () {\n if (toUse.size) {\n return `The query you ran generated an AST which parts have not been read by the query planner. \\\nThis means that those parts could be ignored:\n\n ⇨ ` + [...toUse.entries()]\n .map(([k, v]) => k + ' (' + JSON.stringify(v) + ')')\n .join('\\n ⇨ ');\n }\n return null;\n }\n return { checked: final, check };\n}\n\n\n\nexport function deepEqual<T>(a: T, b: T, strict?: boolean, depth = 10, numberDelta = 0.0001) {\n return deepCompare(a, b, strict, depth, numberDelta) === 0;\n}\n\nexport function deepCompare<T>(a: T, b: T, strict?: boolean, depth = 10, numberDelta = 0.0001): number {\n if (depth < 0) {\n throw new NotSupported('Comparing too deep entities');\n }\n\n if (a === b) {\n return 0;\n }\n if (!strict) {\n // should not use '==' because it could call .toString() on objects when compared to strings.\n // ... which is not ok. Especially when working with translatable objects, which .toString() returns a transaltion (a string, thus)\n if (!a && !b) {\n return 0;\n }\n }\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return -1; // [] < {}\n }\n if (a.length !== b.length) {\n return a.length > b.length ? 1 : -1;\n }\n for (let i = 0; i < a.length; i++) {\n const inner = deepCompare(a[i], b[i], strict, depth - 1, numberDelta);\n if (inner)\n return inner;\n }\n return 0;\n }\n\n if (Array.isArray(b)) {\n return 1;\n }\n\n if (isBuf(a) || isBuf(b)) {\n if (!isBuf(a)) {\n return 1;\n }\n if (!isBuf(b)) {\n return -1;\n }\n return bufCompare(a, b);\n }\n\n // handle dates\n if (a instanceof Date || b instanceof Date || moment.isMoment(a) || moment.isMoment(b)) {\n const am = moment(a as any);\n const bm = moment(b as any);\n if (am.isValid() !== bm.isValid()) {\n return am.isValid()\n ? -1\n : 1;\n }\n const diff = am.diff(bm, 'seconds');\n if (Math.abs(diff) < 0.001) {\n return 0;\n }\n return diff > 0 ? 1 : -1;\n }\n\n // handle durations\n if (moment.isDuration(a) || moment.isDuration(b)) {\n const da = moment.duration(a as any);\n const db = moment.duration(b as any);\n if (da.isValid() !== db.isValid()) {\n return da.isValid()\n ? -1\n : 1;\n }\n const diff = da.asMilliseconds() - db.asMilliseconds();\n if (Math.abs(diff) < 1) {\n return 0;\n }\n return diff > 0 ? 1 : -1;\n }\n\n const fa = Number.isFinite(<any>a);\n const fb = Number.isFinite(<any>b);\n if (fa && fb) {\n if (Math.abs(<any>a - <any>b) <= numberDelta) {\n return 0;\n }\n return a > b ? 1 : -1;\n } else if (fa && b) {\n return -1;\n } else if (fb && a) {\n return 1;\n }\n\n // === handle plain objects\n if (typeof a !== 'object') {\n return 1; // objects are at the end\n }\n if (typeof b !== 'object') {\n return -1; // objects are at the end\n }\n\n if (!a || !b) {\n return 0; // nulls\n }\n\n const ak = Object.keys(a);\n const bk = Object.keys(b);\n if (strict && ak.length !== bk.length) {\n // longer objects at the end\n return ak.length > bk.length ? 1 : -1;\n }\n const set: Iterable<string> = strict\n ? Object.keys(a)\n : new Set([...Object.keys(a), ...Object.keys(b)]);\n for (const k of set) {\n const inner = deepCompare((a as any)[k], (b as any)[k], strict, depth - 1, numberDelta);\n if (inner) {\n return inner;\n }\n }\n return 0;\n}\n\n\ntype Json = { [key: string]: Json } | Json[] | string | number | null;\nexport function queryJson(a: Json, b: Json) {\n if (!a || !b) {\n return (a ?? null) === (b ?? null);\n }\n if (a === b) {\n return true;\n }\n\n if (typeof a === 'string' || typeof b === 'string') {\n return false;\n }\n\n if (typeof a === 'number' || typeof b === 'number') {\n return false;\n }\n\n if (Array.isArray(a)) {\n // expecting array\n if (!Array.isArray(b)) {\n return false;\n }\n // => must match all those criteria\n const toMatch = [...a];\n for (const be of b) {\n for (let i = 0; i < toMatch.length; i++) {\n if (queryJson(toMatch[i], be)) {\n // matched this criteria\n toMatch.splice(i, 1);\n break;\n }\n }\n if (!toMatch.length) {\n break;\n }\n }\n return !toMatch.length;\n }\n\n if (Array.isArray(b)) {\n return false;\n }\n\n if ((typeof a === 'object') !== (typeof b === 'object')) {\n return false;\n }\n const akeys = Object.keys(a);\n const bkeys = Object.keys(b);\n if (akeys.length > bkeys.length) {\n return false;\n }\n for (const ak of akeys) {\n if (!(ak in (b as any))) {\n return false;\n }\n if (!queryJson(a[ak], b[ak])) {\n return false;\n }\n }\n return true;\n}\n\nexport function buildLikeMatcher(likeCondition: string, caseSensitive = true) {\n // Escape regex characters from likeCondition\n likeCondition = likeCondition.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n let likeRegexString = likeCondition.replace(/\\%/g, \".*\").replace(/_/g, '.');\n likeRegexString = \"^\" + likeRegexString + \"$\";\n const reg = new RegExp(likeRegexString, caseSensitive ? '' : 'i');\n\n return (stringToMatch: string | number) => {\n if (nullIsh(stringToMatch)) {\n return null;\n }\n if (typeof stringToMatch != \"string\") {\n stringToMatch = stringToMatch.toString();\n }\n return reg.test(stringToMatch);\n }\n}\n\nexport function nullIsh(v: any): v is nil {\n return v === null || v === undefined;\n}\n\nexport function hasNullish(...vals: any[]): boolean {\n return vals.some(v => nullIsh(v));\n}\n\nexport function sum(v: number[]): number {\n return v.reduce((sum, el) => sum + el, 0);\n}\n\nexport function deepCloneSimple<T>(v: T, noSymbols?: boolean): T {\n if (!v || typeof v !== 'object' || v instanceof Date) {\n return v;\n }\n if (Array.isArray(v)) {\n return (v as any[]).map(x => deepCloneSimple(x)) as any;\n }\n if (isBuf(v)) {\n return bufClone(v) as any;\n }\n\n const ret: any = {};\n for (const k of Object.keys(v)) {\n ret[k] = deepCloneSimple((v as any)[k]);\n }\n if (!noSymbols) {\n for (const k of Object.getOwnPropertySymbols(v)) {\n ret[k] = (v as any)[k]; // no need to deep clone that\n }\n }\n return ret;\n}\n\n\nexport function isSelectAllArgList(select: Expr[]): boolean {\n const [first] = select;\n return select.length === 1\n && first.type === 'ref'\n && first.name === '*'\n && !first.table;\n}\n\n\nexport function ignore(...val: any[]): void {\n for (const v of val) {\n if (!v) {\n continue;\n }\n if (Array.isArray(v)) {\n ignore(...v);\n continue;\n }\n if (typeof v !== 'object') {\n continue;\n }\n ignore(...Object.values(v));\n }\n}\n\nexport function combineSubs(...vals: ISubscription[]): ISubscription {\n return {\n unsubscribe: () => {\n vals.forEach(u => u?.unsubscribe());\n },\n };\n}\n\n\nexport interface ExecCtx {\n readonly schema: _ISchema;\n readonly transaction: _Transaction;\n readonly parametersValues?: any[];\n}\nconst curCtx: ExecCtx[] = [];\nexport function executionCtx(): ExecCtx {\n if (!curCtx.length) {\n throw new Error('No execution context available');\n }\n return curCtx[curCtx.length - 1];\n}\nexport function hasExecutionCtx(): boolean {\n return curCtx.length > 0;\n}\n\nexport function isTopLevelExecutionContext(): boolean {\n return curCtx.length <= 1;\n}\n\nexport function pushExecutionCtx<T>(ctx: ExecCtx, act: () => T): T {\n try {\n curCtx.push(ctx)\n return act();\n } finally {\n curCtx.pop();\n }\n}\n\nexport function indexHash(this: void, vals: (IValue | string)[]) {\n return vals.map(x => typeof x === 'string' ? x : x.hash).sort().join('|');\n}\n\nexport function randomString(length = 8, chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'): string {\n var result = '';\n for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];\n return result;\n}\n\n\nexport function schemaOf(t: DataTypeDef): string | nil {\n if (t.kind === 'array') {\n return schemaOf(t.arrayOf);\n }\n return t.schema;\n}\n\n\nexport function isType(t: any): t is (_IType | IType) {\n return !!t?.[isType.TAG];\n}\nisType.TAG = Symbol();\n\n\nexport function suggestColumnName(expr: Expr | nil): string | null {\n if (!expr) {\n return null;\n }\n // suggest a column result name\n switch (expr.type) {\n case 'call':\n return expr.function.name;\n case 'ref':\n return expr.name;\n case 'keyword':\n return expr.keyword;\n case 'cast':\n return typeDefToStr(expr.to);\n }\n return null;\n}\n\nexport function findTemplate<T>(this: void, selection: _ISelection, t: _Transaction, template?: T, columns?: (keyof T)[]): Iterable<T> {\n // === Build an SQL AST expression that matches\n // this template\n let expr: Expr | nil;\n for (const [k, v] of Object.entries(template ?? {})) {\n let right: Expr;\n if (nullIsh(v)) {\n // handle { myprop: null }\n right = {\n type: 'unary',\n op: 'IS NULL',\n operand: {\n type: 'ref',\n name: k,\n },\n };\n } else {\n let value: Expr;\n let op: BinaryOperator = '=';\n switch (typeof v) {\n case 'number':\n // handle {myprop: 42}\n value = Number.isInteger(v)\n ? { type: 'integer', value: v }\n : { type: 'numeric', value: v };\n break;\n case 'string':\n // handle {myprop: 'blah'}\n value = { type: 'string', value: v };\n break;\n case 'object':\n // handle {myprop: new Date()}\n if (moment.isMoment(v)) {\n value = { type: 'string', value: v.toISOString() };\n } else if (v instanceof Date) {\n value = { type: 'string', value: moment(v).toISOString() };\n } else {\n // handle {myprop: {obj: \"test\"}}\n op = '@>';\n value = {\n type: 'string',\n value: JSON.stringify(v),\n };\n }\n break;\n default:\n throw new Error(`Object type of property \"${k}\" not supported in template`);\n }\n right = {\n type: 'binary',\n op,\n left: {\n type: 'ref',\n name: k,\n },\n right: value\n };\n }\n expr = !expr ? right : {\n type: 'binary',\n op: 'AND',\n left: expr,\n right,\n };\n }\n\n // === perform filter\n let ret = selection\n .filter(expr);\n if (columns) {\n ret = ret.select(columns.map<SelectedColumn>(x => ({\n expr: { type: 'ref', name: x as string },\n })));\n }\n return ret.enumerate(t) as any;\n}\n\n\nfunction ver(v: string) {\n if (!v || !/^\\d+(\\.\\d+)+$/.test(v)) {\n throw new Error('Invalid semver ' + v)\n }\n return v.split(/\\./g).map(x => parseInt(x, 10));\n}\nexport function compareVersions(_a: string, _b: string): number {\n const a = ver(_a);\n const b = ver(_b);\n const m = Math.max(a.length, b.length);\n for (let i = 0; i < m; i++) {\n const d = (b[i] || 0) - (a[i] || 0);\n if (d !== 0) {\n return d;\n }\n }\n return 0;\n}\n\n\nexport function intervalToSec(v: Interval) {\n return (v.milliseconds ?? 0) / 1000\n + (v.seconds ?? 0)\n + (v.minutes ?? 0) * 60\n + (v.hours ?? 0) * 3600\n + (v.days ?? 0) * 3600 * 24\n + (v.months ?? 0) * 3600 * 24 * 30\n + (v.years ?? 0) * 3600 * 24 * 30 * 12;\n}\n\nexport function parseRegClass(_reg: RegClass): QName | number {\n let reg = _reg;\n if (typeof reg === 'string' && /^\\d+$/.test(reg)) {\n reg = parseInt(reg);\n }\n if (typeof reg === 'number') {\n return reg;\n }\n // todo remove casts after next pgsql-ast-parser release\n try {\n const ret = parse(reg, 'qualified_name' as any) as QName;\n return ret;\n } catch (e) {\n return { name: reg };\n }\n}\n\n\nconst timeReg = /^(\\d+):(\\d+)(:(\\d+))?(\\.\\d+)?$/;\nexport function parseTime(str: string): moment.Moment {\n const [_, a, b, __, c, d] = timeReg.exec(str) ?? [];\n if (!_) {\n throw new QueryError(`Invalid time format: ` + str);\n }\n const ms = d ? parseFloat(d) * 1000 : undefined;\n let ret: moment.Moment;\n if (c) {\n ret = moment.utc({\n h: parseInt(a, 10),\n m: parseInt(b, 10),\n s: parseInt(c, 10),\n ms,\n });\n } else {\n if (d) {\n ret = moment.utc({\n m: parseInt(a, 10),\n s: parseInt(b, 10),\n ms,\n });\n } else {\n ret = moment.utc({\n h: parseInt(a, 10),\n m: parseInt(b, 10),\n ms,\n });\n }\n }\n if (!ret.isValid()) {\n throw new QueryError(`Invalid time format: ` + str);\n }\n return ret;\n}\n\n\nexport function colByName<T>(refs: Map<string, T>, ref: string | ExprRef, nullIfNotFound: boolean | nil): T | nil {\n const nm = typeof ref === 'string' ? ref\n : !ref.table ? ref.name\n : null;\n const got = nm ? refs.get(nm) : null;\n if (!got && !nullIfNotFound) {\n throw new ColumnNotFound(colToStr(ref));\n }\n return got;\n}\n\nexport function colToStr(col: string | ExprRef) {\n if (typeof col === 'string') {\n return col;\n }\n if (!col.table) {\n return col.name;\n }\n return col.table.name + '.' + col.name;\n}\n\nexport function qnameToStr(col: string | QName) {\n if (typeof col === 'string') {\n return col;\n }\n if (!col.schema) {\n return col.name;\n }\n return col.schema + '.' + col.name;\n}\n\nexport function asSingleName(col: string | ExprRef): string | nil {\n if (typeof col === 'string') {\n return col;\n }\n if (col.table) {\n return null;\n }\n return col.name;\n}\n\nexport function asSingleQName(col: string | QName, allowedSchema?: string): string | nil {\n if (typeof col === 'string') {\n return col;\n }\n if (col.schema && col.schema !== allowedSchema) {\n return null;\n }\n return col.name;\n}\n\nexport function errorMessage(error: unknown): string {\n if (typeof error === 'string') {\n return error;\n }\n if (typeof error !== 'object') {\n return 'Unkown error message';\n }\n return (error as any)?.message;\n}\n\nexport function it<T>(iterable: Iterable<T>): IteratorHelper<T> {\n return iterable instanceof IteratorHelper\n ? iterable as any\n : new IteratorHelper(() => iterable);\n}\n\nexport class IteratorHelper<T> implements Iterable<T> {\n constructor(private underlying: () => Iterable<T>) { }\n\n [Symbol.iterator]() {\n return this.underlying()[Symbol.iterator]();\n }\n\n flatten(): T extends Iterable<infer X> ? IteratorHelper<X> : never {\n const that = this;\n function* wrap() {\n for (const v of that.underlying() as any ?? []) {\n for (const x of v) {\n yield x;\n }\n }\n }\n return new IteratorHelper(wrap) as any;\n }\n\n reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number) => U, initialValue: U): U {\n let acc = initialValue;\n let i = 0;\n for (const v of this.underlying()) {\n acc = callbackfn(acc, v, i);\n i++;\n }\n return acc;\n }\n}\n\nexport function fromEntries<K, V>(iterable: readonly (readonly [K, V])[]): Map<K, V> {\n const ret = new Map<K, V>();\n for (const [k, v] of iterable) {\n ret.set(k, v);\n }\n return ret;\n}\n\nexport function notNil<T>(value: (T | nil)[] | nil): Exclude<T, null>[] {\n return (value ?? []).filter((x) => !nullIsh(x)) as any[];\n}\n\n/** Modify an array if necessary */\nexport function modifyIfNecessary<T>(values: T[], mapper: (input: T) => T | nil): T[] {\n let ret: T[] | undefined;\n for (let i = 0; i < values.length; i++) {\n const mapped = mapper(values[i]);\n if (nullIsh(mapped)) {\n continue;\n }\n if (!ret) {\n ret = [...values];\n }\n ret[i] = mapped;\n }\n return ret ?? values;\n}\n\n\n\nexport type LazySync<T> = (() => T) & { invalidate: () => void };\nexport function lazySync<T>(ctor: () => T): LazySync<T> {\n let cached: T;\n let retreived = false;\n const ret = () => {\n if (retreived) {\n return cached;\n }\n cached = ctor();\n retreived = true;\n return cached;\n };\n ret.invalidate = () => {\n retreived = false;\n cached = undefined as T;\n };\n return ret as LazySync<T>;\n}\n\n\n\n// setImmediate does not exist in Deno\ndeclare var setImmediate: any;\n\n// see https://github.com/oguimbal/pg-mem/issues/170\nexport function timeoutOrImmediate(fn: () => void, time: number) {\n if (time || typeof setImmediate === 'undefined') {\n return setTimeout(fn, time);\n }\n // nothing to wait for, but still executing \"later\"\n // in case calling code relies on some actual async behavior\n return setImmediate(fn);\n}\n\nexport const delay = (time: number | undefined) => new Promise<void>(done => timeoutOrImmediate(done, time ?? 0));\n\n\nexport class AsyncQueue {\n private queue: (() => Promise<any>)[] = [];\n private processing: boolean = false;\n\n // Enqueue a task\n public enqueue(task: () => Promise<any>): void {\n this.queue.push(task);\n if (!this.processing) {\n this.processQueue();\n }\n }\n\n // Process the queue\n private async processQueue(): Promise<void> {\n if (this.processing) {\n return;\n }\n this.processing = true;\n\n while (this.queue.length > 0) {\n const task = this.queue.shift();\n if (task) {\n try {\n await task();\n } catch (error) {\n console.error('Error processing task:', error);\n }\n }\n }\n\n this.processing = false;\n }\n}\n","import { IMemoryDb, IMemoryTable, DataType, IType, TableEvent, GlobalEvent, ISchema, SchemaField, MemoryDbOptions, nil, Schema, QueryError, ISubscription, LanguageCompiler, ArgDefDetails, QueryResult, IBoundQuery, IPreparedQuery } from './interfaces';\nimport { Expr, SelectedColumn, CreateColumnDef, AlterColumn, LimitStatement, OrderByStatement, TableConstraint, AlterSequenceChange, CreateSequenceOptions, QName, DataTypeDef, ExprRef, Name, BinaryOperator, ValuesStatement, CreateExtensionStatement, DropFunctionStatement, ExprCall } from 'pgsql-ast-parser';\nimport { Map as ImMap, Record, Set as ImSet } from 'immutable';\n\nexport * from './interfaces';\n\n\nexport const GLOBAL_VARS = Symbol('_global_vars');\n\n// export type PrimaryKey = string | number;\nconst ID = Symbol('_id');\nexport function getId(item: any): string {\n if (!item) {\n return '';\n }\n const got = item[ID];\n if (!got) {\n throw new Error('Unexpected: cannot get an ID of something which is not a record');\n }\n return got;\n}\n\nexport function setId<T = any>(item: T, id: string): T {\n const got = (item as any)[ID];\n if (got === id) {\n return item;\n }\n if (got) {\n throw new Error('Unexpected: Cannot update an ID');\n }\n (item as any)[ID] = id;\n return item;\n}\n\nexport type RegClass = string | number;\nexport type RegType = string | number;\nexport type TypeQuery = DataTypeDef | DataType | number | _IType;\nexport interface _ISchema extends ISchema {\n readonly name: string;\n readonly db: _IDb;\n readonly dualTable: _ITable;\n /** @deprecated for debug purposes */\n lastSelect?: _ISelection;\n /** If the given name refers to another schema, then get it. Else, get this */\n getThisOrSiblingFor(name: QName): _ISchema;\n executeCreateExtension(p: CreateExtensionStatement): void;\n dropFunction(fn: DropFunctionStatement): void;\n explainSelect(sql: string): _SelectExplanation;\n explainLastSelect(): _SelectExplanation | undefined;\n getTable(table: string): _ITable;\n getTable(table: string, nullIfNotFound?: boolean): _ITable;\n tablesCount(t: _Transaction): number;\n listTables(t?: _Transaction): Iterable<_ITable>;\n declareTable(table: Schema, noSchemaChange?: boolean): _ITable;\n createSequence(t: _Transaction, opts: CreateSequenceOptions | nil, name: QName | nil): _ISequence;\n /** Get functions matching this overload */\n resolveFunction(name: string | QName, args: IValue[], forceOwn?: boolean): _FunctionDefinition | nil;\n /** Get an exact function def from its signature (do not use that to resolve overload) */\n getFunction(name: string, args: _IType[]): _FunctionDefinition | nil;\n /** Get operator matching this overload */\n resolveOperator(name: BinaryOperator, left: IValue, right: IValue, forceOwn?: boolean): _OperatorDefinition | nil;\n\n getObject(p: QName): _IRelation;\n getObject(p: QName, opts: BeingCreated): _IRelation;\n getObject(p: QName, opts?: QueryObjOpts): _IRelation | null;\n\n getOwnObject(name: string): _IRelation | null;\n\n parseType(t: string): _IType;\n\n\n getType(t: TypeQuery): _IType;\n getType(_t: TypeQuery, opts?: QueryObjOpts): _IType | null;\n\n getOwnType(name: DataTypeDef): _IType | null\n\n getObjectByRegClassId(reg: number): _IRelation;\n getObjectByRegClassId(reg: number, opts?: QueryObjOpts): _IRelation | null;\n\n getOwnObjectByRegClassId(reg: number): _IRelation | null;\n\n getObjectByRegOrName(reg: RegClass): _IRelation;\n getObjectByRegOrName(reg: RegClass, opts?: QueryObjOpts): _IRelation | null;\n\n setReadonly(): void;\n\n _registerTypeSizeable(name: string, type: (sz?: number) => _IType): this;\n _registerType(type: _IType): this;\n _unregisterType(type: _IType): this;\n\n _reg_register(rel: _IRelation): Reg;\n _reg_unregister(rel: _IRelation): void;\n _reg_rename(rel: _IRelation, oldName: string, newName: string): void;\n\n}\n\n\nexport interface _IStatement {\n readonly schema: _ISchema;\n onExecuted(callback: OnStatementExecuted): void;\n}\n\nexport interface _IStatementExecutor {\n execute(t: _Transaction): StatementResult;\n}\n\nexport interface StatementResult {\n result: QueryResult;\n state: _Transaction;\n}\n\nexport type OnStatementExecuted = (t: _Transaction) => void;\n\nexport interface QueryObjOpts extends Partial<BeingCreated> {\n /** Returns null instead of throwing error if not found */\n nullIfNotFound?: boolean;\n /** Will only search in the current schema, or in the targeted schema (not in search path) */\n skipSearch?: boolean;\n}\n\nexport interface BeingCreated {\n beingCreated: _IRelation;\n}\n\nexport interface _FunctionDefinition {\n name: string;\n args: _ArgDefDetails[];\n argsVariadic?: _IType | nil;\n returns?: _IType | nil;\n impure?: boolean;\n allowNullArguments?: boolean;\n implementation: (...args: any[]) => any;\n}\n\nexport interface _OperatorDefinition extends _FunctionDefinition {\n commutative: boolean;\n left: _IType;\n right: _IType;\n returns: _IType;\n}\n\nexport type _ArgDefDetails = ArgDefDetails & {\n type: _IType;\n default?: IValue;\n};\n\nexport interface _Transaction {\n readonly isChild: boolean;\n /** Create a new transaction within this transaction */\n fork(): _Transaction;\n /** Commit this transaction (returns the parent transaction) */\n commit(): _Transaction;\n /** Commits this transaction and all underlying transactions */\n fullCommit(): _Transaction;\n rollback(): _Transaction;\n delete(identity: symbol): void;\n /** Set data persisted in this transaction */\n set<T>(identity: symbol, data: T): T;\n /** Get data persisted in this transaction */\n get<T>(identity: symbol): T;\n getMap<T extends ImMap<any, any>>(identity: symbol): T;\n getSet<T>(identity: symbol): ImSet<T>;\n /** Get transient data, which will only exist within the scope of the current statement */\n setTransient<T>(identity: symbol, data: T): T;\n /** Set transient data, which will only exist within the scope of the current statement */\n getTransient<T>(identity: symbol): T;\n clearTransientData(): void;\n}\n\nexport interface Stats {\n /** Returns this selection size, or null if it cannot be computed without iteration */\n count: number;\n}\n\nexport interface _IAggregation {\n checkIfIsKey(got: IValue): IValue;\n getAggregation(name: string, call: ExprCall): IValue;\n}\n\nexport type Row = any;\nexport interface _ISelection extends _IAlias {\n readonly debugId?: string;\n\n readonly ownerSchema: _ISchema;\n readonly db: _IDb;\n /** Tells if this statement is an execution without any meaningful result (\"update\" with no \"returning\", etc...) */\n readonly isExecutionWithNoResult: boolean;\n /** Column list (those visible when select *) */\n readonly columns: ReadonlyArray<IValue>;\n /** True when this is an aggregation being built */\n isAggregation(): this is _IAggregation;\n /** Statistical measure of how many items will be returned by this selection */\n entropy(t: _Transaction): number;\n enumerate(t: _Transaction): Iterable<Row>;\n\n /** Returns true if the given value is present in this */\n hasItem(value: Row, t: _Transaction): boolean;\n\n stats(t: _Transaction): Stats | null;\n\n /** Gets the index associated with this value (or returns null) */\n getIndex(...forValue: IValue[]): _IIndex | nil;\n /** All columns. A bit like .columns`, but including records selections */\n listSelectableIdentities(): Iterable<IValue>;\n filter(where: Expr | nil): _ISelection;\n limit(limit: LimitStatement): _ISelection;\n orderBy(orderBy: OrderByStatement[] | nil): _ISelection;\n groupBy(grouping: Expr[] | nil): _ISelection;\n distinct(select?: Expr[]): _ISelection;\n union(right: _ISelection): _ISelection;\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n setAlias(alias?: string): _ISelection;\n isOriginOf(a: IValue): boolean;\n explain(e: _Explainer): _SelectExplanation;\n\n /** Select a specific subset */\n select(select: (string | SelectedColumn)[]): _ISelection;\n\n /** Limit selection to a specific alias (in joins) */\n selectAlias(alias: string): _IAlias | nil;\n}\n\nexport interface _IAlias {\n listColumns(): Iterable<IValue>;\n}\n\n\nexport interface _Explainer {\n readonly transaction: _Transaction;\n idFor(sel: _ISelection): string | number;\n}\n\nexport type _SelectExplanation = {\n /** A jointure */\n id: string | number;\n _: 'join';\n /** The restrictive table (the one which MUST have a matched elemnt) */\n restrictive: _SelectExplanation;\n /** The joined table */\n joined: _SelectExplanation;\n inner: boolean;\n on: {\n /** 'with' will have to be scanned with this expression */\n seqScan: _ExprExplanation;\n } | {\n /** Which seq id will be iterated (could be either 'join' or 'with' when there is an inner join) */\n iterate: string | number;\n /** Which iteration side has been chosen (always 'restrictive' for non inner joins) */\n iterateSide: 'joined' | 'restrictive';\n /** the index table on the other table that can be used to lookup corresponding item(s) */\n joinIndex: _IndexExplanation;\n /** It will be matched with this expression (computable from the other table) */\n matches: _ExprExplanation;\n /** True if there is a predicate filter that is also applied (happens when there are 'ANDs' in join condition) */\n filtered?: boolean;\n }\n} | {\n /** A selection transformation */\n id: string | number;\n _: 'map';\n select?: {\n what: _ExprExplanation;\n as: string;\n }[];\n of: _SelectExplanation;\n} | {\n id: string | number;\n _: 'orderBy';\n of: _SelectExplanation;\n} | {\n /** A selection transformation */\n id: string | number;\n _: 'limit';\n take?: _ExprExplanation;\n skip?: _ExprExplanation;\n on: _SelectExplanation;\n} | {\n /** A selection transformation */\n id: string | number;\n _: 'distinct';\n of: _SelectExplanation;\n} | {\n /** A table */\n _: 'table';\n table: string;\n} | {\n /** An AND filter */\n id: string | number;\n _: 'and',\n enumerate: _SelectExplanation;\n andCheck: _SelectExplanation[];\n} | {\n /** A raw array definition */\n id: string | number;\n _: 'constantSet';\n rawArrayLen: number;\n} | {\n /** One of the following operators on an index:\n * - (NOT) IN\n * - (NOT) LIKE\n * - (NOT) BETWEEN\n * - < > <= >= = !=\n *\n * (against constants) */\n id: string | number;\n _: 'eq' | 'ineq' | 'neq' | 'inside' | 'outside';\n entropy: number;\n /** The index that will be used to check equality */\n on: _IndexExplanation;\n} | {\n /** An empty set */\n id: string | number;\n _: 'empty';\n} | {\n /** An union set */\n id: string | number;\n _: 'union',\n union: _SelectExplanation[];\n} | {\n /** A seq-scan filter of another set */\n id: string | number;\n _: 'seqFilter';\n filtered: _SelectExplanation;\n} | {\n id: string | number;\n _: 'aggregate';\n aggregator: {\n /** aggregation will iterate the whole lot */\n seqScan: _ExprExplanation;\n } | {\n /** aggregation uses an index items which already contains required aggregations */\n index: _IndexExplanation\n } | {\n /** aggregation is trivial (select count(*) from table) */\n trivial: _ISelection;\n };\n}\n\nexport type _IndexExplanation = {\n /** BTree index on expression */\n _: 'btree';\n onTable: string;\n btree: string[];\n} | {\n _: 'indexMap';\n of: _IndexExplanation;\n} | {\n _: 'indexRestriction';\n /** This index will receive a lookup for each item of \"for\" collection */\n lookup: _IndexExplanation;\n /** Enumerated collection */\n for: _SelectExplanation;\n} | {\n /** Uses an index of a column propagated by a join */\n _: 'indexOnJoin';\n /** The in propagated column that is used */\n index: _IndexExplanation;\n /** How elements from the other table will be joined */\n strategy: _IndexExplanation | 'catastrophic';\n};\n\nexport type _ExprExplanation = {\n constant: true;\n} | {\n /** ID of the origin of this selection */\n on: string | number;\n col: string;\n}\n\nexport interface _IDb extends IMemoryDb {\n readonly options: MemoryDbOptions;\n readonly public: _ISchema;\n readonly data: _Transaction;\n readonly searchPath: ReadonlyArray<string>;\n\n createSchema(db: string): _ISchema;\n getSchema(db?: string | null, nullIfNotFound?: false): _ISchema;\n getSchema(db: string, nullIfNotFound: true): _ISchema | null;\n raiseTable(table: string, event: TableEvent): void;\n raiseGlobal(event: GlobalEvent, ...args: any[]): void;\n listSchemas(): _ISchema[];\n onSchemaChange(): void;\n getTable(name: string, nullIfNotExists?: boolean): _ITable;\n getExtension(name: string): (schema: ISchema) => void;\n /** Get functions matching this overload */\n resolveFunction(name: string | QName, types: IValue[]): _FunctionDefinition | nil;\n /** Get operators matching this overload */\n resolveOperator(name: BinaryOperator, left: IValue, right: IValue): _OperatorDefinition | nil;\n getLanguage(name: string): LanguageCompiler;\n}\nexport type OnConflictHandler = { ignore: 'all' | _IIndex } | {\n onIndex: _IIndex;\n update: (item: any, excluded: any, t: _Transaction) => void;\n}\n\nexport type DropHandler = (t: _Transaction, cascade: boolean) => void;\nexport type TruncateHandler = (t: _Transaction, opts: TruncateOpts) => void;\nexport type IndexHandler = (act: 'create' | 'drop', idx: _INamedIndex) => void;\n\nexport interface _RelationBase {\n readonly name: string;\n readonly reg: Reg;\n readonly ownerSchema?: _ISchema;\n}\n\nexport interface Reg {\n readonly typeId: number;\n readonly classId: number;\n}\n\nexport interface ChangeOpts {\n onConflict?: OnConflictHandler | nil;\n overriding?: 'user' | 'system' | nil;\n}\n\nexport interface _ITable extends IMemoryTable<any>, _RelationBase {\n readonly type: 'table';\n readonly hidden: boolean;\n readonly db: _IDb;\n readonly selection: _ISelection;\n readonly ownerSchema: _ISchema;\n doInsert(t: _Transaction, toInsert: Row, opts?: ChangeOpts): Row | nil | void;\n setHidden(): this;\n setReadonly(): this;\n delete(t: _Transaction, toDelete: Row): void;\n update(t: _Transaction, toUpdate: Row): Row | never;\n createIndex(t: _Transaction, expressions: CreateIndexDef): _IConstraint | nil;\n createIndex(t: _Transaction, expressions: Name[], type: 'primary' | 'unique', indexName?: string | nil): _IConstraint;\n setReadonly(): this;\n /** Create a column */\n addColumn(column: SchemaField | CreateColumnDef, t: _Transaction): _Column;\n /** Get a column to modify it */\n getColumnRef(column: string): _Column;\n getColumnRef(column: string, nullIfNotFound?: boolean): _Column | nil;\n rename(to: string): this;\n getConstraint(constraint: string): _IConstraint | nil;\n addConstraint(constraint: TableConstraint, t: _Transaction): _IConstraint | nil;\n getIndex(...forValues: IValue[]): _IIndex | nil;\n dropIndex(t: _Transaction, name: string): void;\n drop(t: _Transaction, cascade: boolean): void;\n /** Will be executed when one of the given columns is affected (update/delete) */\n onBeforeChange(columns: 'all' | (string | _Column)[], check: ChangeHandler): ISubscription;\n /** Will be executed once all 'onBeforeChange' handlers have ran (coherency checks) */\n onCheckChange(columns: 'all' | (string | _Column)[], check: ChangeHandler): ISubscription;\n onDrop(sub: DropHandler): ISubscription;\n onIndex(sub: IndexHandler): ISubscription;\n onTruncate(sub: TruncateHandler): ISubscription;\n truncate(t: _Transaction, truncateOpts?: TruncateOpts): void;\n}\n\nexport interface TruncateOpts {\n restartIdentity?: boolean;\n cascade?: boolean;\n}\n\nexport interface _IView extends _RelationBase {\n readonly type: 'view';\n readonly db: _IDb;\n readonly selection: _ISelection;\n drop(t: _Transaction): void;\n}\n\n\nexport interface _IConstraint {\n readonly name: string | nil;\n uninstall(t: _Transaction): void;\n}\n\nexport type ChangeHandler = (old: Row | null, neu: Row | null, t: _Transaction, opts: ChangeOpts) => void;\n\nexport interface _Column {\n readonly comment?: string | nil;\n readonly notNull: boolean;\n readonly default: IValue | nil;\n readonly expression: IValue;\n readonly usedInIndexes: ReadonlySet<_IIndex>;\n readonly table: _ITable;\n readonly name: string;\n alter(alter: AlterColumn, t: _Transaction): this;\n rename(to: string, t: _Transaction): this;\n drop(t: _Transaction): void;\n onDrop(sub: DropHandler): ISubscription;\n}\n\nexport interface CreateIndexDef {\n ifNotExists?: boolean;\n columns: CreateIndexColDef[];\n indexName?: string;\n unique?: boolean;\n notNull?: boolean;\n primary?: boolean;\n predicate?: IValue;\n}\nexport interface CreateIndexColDef {\n value: IValue;\n nullsLast?: boolean;\n desc?: boolean\n}\n\n\nexport interface _IType<TRaw = any> extends IType, _RelationBase {\n readonly type: 'type';\n /** Data type */\n readonly primary: DataType;\n readonly primaryName: string;\n /** Reg type name */\n readonly name: string; // | null;\n readonly reg: Reg;\n\n toString(): string;\n equals(a: TRaw, b: TRaw): boolean | null;\n gt(a: TRaw, b: TRaw): boolean | null;\n ge(a: TRaw, b: TRaw): boolean | null;\n lt(a: TRaw, b: TRaw): boolean | null;\n le(a: TRaw, b: TRaw): boolean | null;\n canConvertImplicit(to: _IType<TRaw>): boolean | nil;\n canCast(to: _IType<TRaw>): boolean | nil;\n cast<T = any>(value: IValue<TRaw>, to: _IType<T>): IValue;\n convertImplicit<T = any>(value: IValue<TRaw>, to: _IType<T>): IValue;\n prefer(type: _IType<any>, stricterType?: boolean): _IType | nil;\n\n /** Build an array type for this type */\n asArray(): _IType<TRaw[]>;\n asList(): _IType<TRaw[]>;\n\n /** Get an unicity hash */\n hash(value: TRaw): string | number | null;\n\n drop(t: _Transaction): void;\n}\n\nexport interface Parameter {\n readonly index: number;\n readonly value: IValue | nil;\n inferedType?: _IType | nil;\n}\n\nexport interface IValue<TRaw = any> {\n /** Columns used in this expression (if any) */\n readonly usedColumns: ReadonlySet<IValue>;\n\n readonly type: _IType<TRaw>;\n\n /** is 'any()' call ? */\n readonly isAny: boolean;\n\n /** Is a constant... i.e. not dependent on columns. ex: (2+2) or NOW() */\n readonly isConstant: boolean;\n\n /** Is REAL constant (i.e. 2+2, not varying expressions like NOW()) */\n readonly isConstantReal: boolean;\n\n /** Is a literal constant ? (constant not defined as an operation) */\n readonly isConstantLiteral: boolean;\n\n /** Will be set if there is an index on this value */\n readonly index: _IIndex | nil;\n\n /** Originates from this selection */\n readonly origin: _ISelection | nil;\n\n\n /** Column ID, or null */\n readonly id: string | nil;\n\n /** Hash of this value (used to identify indexed expressions) */\n readonly hash: string;\n\n /** Get value if is a constant */\n get(): any;\n /** Get value if is NOT a constant */\n get(raw: TRaw, t?: _Transaction | nil): any;\n\n setId(newId: string): IValue;\n canCast(to: _IType): boolean;\n cast<T = any>(to: _IType<T>): IValue;\n convertImplicit<T = any>(to: _IType<T>): IValue;\n\n /**\n * Creates a copy of this column that can\n **/\n setWrapper<TNew>(newOrigin: _ISelection, unwrap: (val: TRaw) => TNew, newType: _IType<TNew>): IValue<TNew>;\n setWrapper(newOrigin: _ISelection, unwrap: (val: TRaw) => TRaw): IValue<TRaw>;\n map(unwrap: (val: TRaw) => TRaw): IValue<TRaw>;\n map<TNew>(unwrap: (val: TRaw) => TNew, newType: _IType<TNew>): IValue<TNew>;\n setOrigin(origin: _ISelection): IValue<TRaw>;\n clone(): IValue;\n\n explain(e: _Explainer): _ExprExplanation;\n}\n\nexport type IndexKey = unknown[];\nexport interface IndexExpression {\n readonly hash: string;\n readonly type: _IType;\n}\n\nexport interface _INamedIndex extends _IIndex, _RelationBase {\n readonly type: 'index';\n readonly onTable: _ITable;\n drop(t: _Transaction): void;\n}\n\n\n\nexport interface _IIndex {\n readonly unique?: boolean;\n readonly expressions: IndexExpression[];\n\n /** Returns a measure of how many items will be returned by this op */\n entropy(t: IndexOp): number;\n\n /** Returns this selection stats, or null if it cannot be computed without iteration */\n stats(t: _Transaction, key?: IndexKey): Stats | null;\n\n /** Get values equating the given key */\n eqFirst(rawKey: IndexKey, t: _Transaction): Row | null;\n\n enumerate(op: IndexOp): Iterable<Row>;\n\n explain(e: _Explainer): _IndexExplanation;\n\n iterateKeys(t: _Transaction): Iterable<IndexKey> | null;\n}\n\nexport type IndexOp = {\n type: 'eq' | 'neq' | 'gt' | 'lt' | 'ge' | 'le';\n key: IndexKey;\n t: _Transaction;\n matchNull?: boolean;\n} | {\n type: 'inside' | 'outside'\n lo: IndexKey;\n hi: IndexKey;\n t: _Transaction;\n} | {\n type: 'nin';\n keys: IndexKey[];\n t: _Transaction;\n}\n\nexport interface TableRecordDef {\n readonly?: boolean;\n hidden?: boolean;\n name?: string;\n dataId?: symbol;\n\n serials: ImMap<string, number>;\n it: number;\n indexByHash: ImMap<string, _IIndex>;\n indexByName: ImMap<string, _IIndex>;\n columnsByName: ImMap<string, CR>;\n}\n\nexport interface TableColumnRecordDef {\n default: IValue;\n notNull: boolean;\n usedInIndexes: ImSet<_IIndex>;\n type: _IType;\n name: string;\n}\n\nexport type TR = Record<TableRecordDef>;\nexport type CR = Record<TableColumnRecordDef>;\nexport const EmtpyTable = Record<TableRecordDef>({\n serials: ImMap(),\n it: 0,\n indexByHash: ImMap(),\n indexByName: ImMap(),\n columnsByName: ImMap(),\n});\n\nexport const NewColumn = Record<TableColumnRecordDef>({\n default: null as any,\n notNull: false,\n usedInIndexes: ImSet(),\n type: null as any,\n name: null as any,\n});\n\nexport type _IRelation = _ITable | _ISequence | _INamedIndex | _IType | _IView;\n\nexport function asIndex(o: _IRelation): _INamedIndex;\nexport function asIndex(o: _IRelation | null): _INamedIndex | null;\nexport function asIndex(o: _IRelation | null) {\n if (!o) {\n return null;\n }\n if (o.type === 'index') {\n return o;\n }\n throw new QueryError(`\"${o.name}\" is not an index`);\n}\n\nexport function asType(o: _IRelation): _IType;\nexport function asType(o: _IRelation | null): _IType | null;\nexport function asType(o: _IRelation | null) {\n if (!o) {\n return null;\n }\n if (o.type === 'type') {\n return o;\n }\n throw new QueryError(`\"${o.name}\" is not a type`);\n}\n\nexport function asSeq(o: _IRelation): _ISequence;\nexport function asSeq(o: _IRelation | null): _ISequence | null;\nexport function asSeq(o: _IRelation | null) {\n if (!o) {\n return null;\n }\n if (o.type === 'sequence') {\n return o;\n }\n throw new QueryError(`\"${o.name}\" is not a sequence`);\n}\n\nexport function asTable(o: _IRelation): _ITable;\nexport function asTable(o: _IRelation | null): _ITable | null;\nexport function asTable(o: _IRelation | null, nullIfNotType?: boolean): _ITable | null;\nexport function asTable(o: _IRelation | null, nullIfNotType?: boolean) {\n if (!o) {\n return null;\n }\n if (o.type === 'table') {\n return o;\n }\n if (nullIfNotType) {\n return null;\n }\n throw new QueryError(`\"${o.name}\" is not a table`);\n}\n\n\nexport type _ISelectable = _ITable | _IView;\nexport function asSelectable(o: _IRelation): _ISelectable;\nexport function asSelectable(o: _IRelation | null): _ISelectable | null;\nexport function asSelectable(o: _IRelation | null, nullIfNotType?: boolean): _ISelectable | null;\nexport function asSelectable(o: _IRelation | null, nullIfNotType?: boolean) {\n if (!o) {\n return null;\n }\n if (o.type === 'table' || o.type === 'view') {\n return o;\n }\n if (nullIfNotType) {\n return null;\n }\n throw new QueryError(`\"${o.name}\" is not selectable`);\n}\n\n\nexport function asView(o: _IRelation): _IView;\nexport function asView(o: _IRelation | null): _IView | null;\nexport function asView(o: _IRelation | null, nullIfNotType?: boolean): _IView | null;\nexport function asView(o: _IRelation | null, nullIfNotType?: boolean) {\n if (!o) {\n return null;\n }\n if (o.type === 'view') {\n return o;\n }\n if (nullIfNotType) {\n return null;\n }\n throw new QueryError({\n code: '42809',\n error: `\"${o.name}\" is not a view`,\n });\n}\n\nexport interface _ISequence extends _RelationBase {\n\n readonly type: 'sequence';\n alter(t: _Transaction, opts: CreateSequenceOptions | AlterSequenceChange): this;\n nextValue(t: _Transaction): number;\n restart(t: _Transaction): void;\n setValue(t: _Transaction, value: number, increase?: boolean): void;\n currentValue(t: _Transaction): number;\n drop(t: _Transaction): void;\n}\n\n\nexport interface AggregationComputer<TRet = any> {\n readonly type: _IType;\n /** Compute from index (ex: count(*) with a group-by) */\n computeFromIndex?(key: IndexKey, index: _IIndex, t: _Transaction): TRet | undefined;\n /** Compute out of nowhere when there is no group\n * (ex: when there is no grouping, count(*) on a table or count(xxx) when there is an index on xxx) */\n computeNoGroup?(t: _Transaction): TRet | undefined;\n\n /** When iterating, each new group will have its computer */\n createGroup(t: _Transaction): AggregationGroupComputer<TRet>;\n}\n\nexport interface AggregationGroupComputer<TRet = any> {\n /** When iterating, this will be called for each item in this group */\n feedItem(item: any): void;\n /** Finish computation (sets aggregation on result) */\n finish(): TRet | nil;\n}\n\nexport interface _IPreparedQuery extends IPreparedQuery {\n bind(args?: any[]): _IBoundQuery;\n executed?: () => void;\n failed?: (e: any) => void;\n}\n\nexport interface _IBoundQuery extends IBoundQuery {\n executeAll(tx?: _Transaction): _QueryResult;\n}\n\n\nexport interface _QueryResult extends QueryResult {\n state?: _Transaction;\n}","export * from './datatypes';\n","import { TableConstraint, CreateColumnDef, NodeLocation, DataTypeDef, FunctionArgumentMode, BinaryOperator, Statement } from 'pgsql-ast-parser';\nimport { MigrationParams } from './migrate/migrate-interfaces';\n\n\nexport type nil = undefined | null;\n\n\nexport type Schema = {\n name: string;\n fields: SchemaField[];\n constraints?: TableConstraint[];\n}\n\n\nexport interface SchemaField extends Omit<CreateColumnDef, 'dataType' | 'kind' | 'name'> {\n type: IType | DataType;\n name: string;\n serial?: boolean;\n}\n\nexport interface IType {\n /** Data type */\n readonly primary: DataType;\n readonly name: string;\n toString(): string;\n\n /** Create an array type of this type */\n asArray(): IType;\n}\n\n// todo support all types https://www.postgresql.org/docs/9.5/datatype.html\nexport enum DataType {\n\n inet = 'inet',\n record = 'record',\n uuid = 'uuid',\n text = 'text',\n citext = 'citext',\n array = 'array',\n list = 'list',\n bigint = 'bigint',\n float = 'float',\n decimal = 'decimal',\n integer = 'integer',\n jsonb = 'jsonb',\n regtype = 'regtype',\n regclass = 'regclass',\n json = 'json',\n bytea = 'bytea',\n interval = 'interval',\n timestamp = 'timestamp',\n timestamptz = 'timestamptz',\n date = 'date',\n time = 'time',\n timetz = 'timetz',\n null = 'null',\n bool = 'bool',\n\n point = 'point',\n line = 'line',\n lseg = 'lseg',\n box = 'box',\n path = 'path',\n polygon = 'polygon',\n circle = 'circle',\n}\n\nexport interface MemoryDbOptions {\n /**\n * If set to true, pg-mem will stop embbeding info about the SQL statement\n * that has failed in exception messages.\n */\n noErrorDiagnostic?: boolean;\n /**\n * If set to true, then the query runner will not check that no AST part\n * has been left behind when parsing the request.\n *\n * ... so setting it to true could lead to unnoticed ignored query parts.\n *\n * (advice: only set it to true as a workaround while an issue on https://github.com/oguimbal/pg-mem is being fixed... )\n */\n noAstCoverageCheck?: boolean;\n /**\n * If set to true, this will throw an exception if\n * you try to use an unsupported index type\n * (only BTREE is supported at time of writing)\n */\n noIgnoreUnsupportedIndices?: boolean;\n /**\n * When set to true, this will auto create an index on foreign table when adding a foreign key.\n * 👉 Recommanded when using Typeorm .synchronize(), which creates foreign keys but not indices !\n **/\n readonly autoCreateForeignKeyIndices?: boolean;\n}\n\nexport interface IMemoryDb {\n /**\n * Adapters to create wrappers of this db compatible with known libraries\n */\n readonly adapters: LibAdapters;\n /**\n * The default 'public' schema\n */\n readonly public: ISchema;\n /**\n * Get an existing schema\n */\n getSchema(db?: string | null): ISchema;\n /**\n * Create a schema in this database\n */\n createSchema(name: string): ISchema;\n /**\n * Get a table to inspect it (in the public schema... this is a shortcut for db.public.getTable())\n */\n getTable<T = any>(table: string): IMemoryTable<T>;\n getTable<T = any>(table: string, nullIfNotFound?: boolean): IMemoryTable<T> | null;\n\n /** Subscribe to a global event */\n on(event: 'query', handler: (query: string) => any): ISubscription;\n on(event: GlobalEvent, handler: () => any): ISubscription;\n on(event: GlobalEvent, handler: () => any): ISubscription;\n /** Subscribe to an event on all tables */\n on(event: TableEvent, handler: (table: string) => any): ISubscription;\n\n /**\n * Creates a restore point.\n * 👉 This operation is O(1) (instantaneous, even with millions of records).\n * */\n backup(): IBackup;\n\n /**\n * Registers an extension (that can be installed using the 'create extension' statement)\n * @param name Extension name\n * @param install How to install this extension on a given schema\n */\n registerExtension(name: string, install: (schema: ISchema) => void): this;\n\n /** Registers a new language, usable in 'DO' blocks, or in 'CREATE FUNCTION' blocks */\n registerLanguage(languageName: string, compiler: LanguageCompiler): this;\n}\n\nexport type QueryInterceptor = (query: string) => any[] | nil;\n\n\nexport type ArgDef = DataType | IType | ArgDefDetails;\n\nexport interface ArgDefDetails {\n /** Argument type */\n type: IType;\n /** Optional argument name */\n name?: string;\n /**\n * Arguments are 'in' by default, but you can change that.\n */\n mode?: FunctionArgumentMode;\n}\n\nexport type LanguageCompiler = (options: ToCompile) => CompiledFunction;\n\nexport interface ToCompile {\n /** Function being compiled (null for \"DO\" statements compilations) */\n functionName?: string | nil;\n /** Code to compile */\n code: string;\n /** Schema against which this compilation is performed */\n schema: ISchema;\n /** Expected arguments */\n args: ArgDefDetails[];\n /** Expected return type (if any) */\n returns?: IType | nil;\n}\n\nexport class AdvancedResult {\n constructor(readonly result: any, outArgs: any[]) {\n }\n}\n\nexport type CompiledFunction = (...inArguments: any[]) => AdvancedResult | PlainResult;\n\nexport type PlainResult = Object | number | Date | null | void;\n\nexport interface CompiledFunctionResult {\n /** The function result, if function \"returns\" something */\n result?: any;\n /** The functions out arguments, as indexed in the `args` passed to your language compiler function */\n outArgs?: any[];\n}\n\nexport interface IBackup {\n /**\n * Restores data to the state when this backup has been performed.\n * 👉 This operation is O(1).\n * 👉 Schema must not have been changed since then !\n **/\n restore(): void;\n}\n\nexport interface LibAdapters {\n /** Create a PG module that will be equivalent to require('pg') */\n createPg(queryLatency?: number): { Pool: any; Client: any };\n\n /** Create a pg-promise instance bound to this db */\n createPgPromise(queryLatency?: number): any;\n\n /** Create a slonik pool bound to this db */\n createSlonik(opts?: SlonikAdapterOptions): Promise<any>;\n\n /** Create a pg-native instance bound to this db */\n createPgNative(queryLatency?: number): any;\n\n /** Create a Typeorm connection bound to this db\n * @deprecated Use `createTypeormDataSource` instead. See https://github.com/oguimbal/pg-mem/pull/238.\n */\n createTypeormConnection(typeOrmConnection: any, queryLatency?: number): any;\n\n /** Create a Typeorm data source bound to this db */\n createTypeormDataSource(typeOrmConnection: any, queryLatency?: number): any;\n\n /** Create a Knex.js instance bound to this db */\n createKnex(queryLatency?: number, knexConfig?: object): any;\n\n /** Create a Kysely instance bound to this db */\n createKysely(queryLatency?: number, kyselyConfig?: object): any;\n\n /** Create a mikro-orm instance bound to this db */\n createMikroOrm(mikroOrmOptions: any, queryLatency?: number): Promise<any>\n\n /** Creates a Postres.js `sql` tag bound to this db */\n createPostgresJsTag(queryLatency?: number): any;\n\n /** Binds a server to this instance */\n bindServer(opts?: BindServerOptions): Promise<BindServerResult>;\n}\n\nexport interface BindServerResult {\n postgresConnectionString: string;\n connectionSettings: {\n host: string;\n port: number;\n };\n close(): void;\n}\n\nexport interface BindServerOptions {\n /** defaults to a random port */\n port?: number;\n /** defaults to 'localhost' */\n host?: string;\n}\n\nexport interface SlonikAdapterOptions {\n queryLatency?: number;\n /** options you would give to the createPool() function */\n createPoolOptions?: any;\n /** add zod validation interceptor to create pool options, like with https://github.com/gajus/slonik?tab=readme-ov-file#result-parser-interceptor */\n zodValidation?: boolean;\n /** old versions of slonik, this be passed as client configuration */\n clientConfigurationInput?: any;\n}\n\nexport type QueryOrAst = string | Statement | Statement[];\n\nexport interface IPreparedQuery {\n describe(): QueryDescription;\n bind(args?: any[]): IBoundQuery;\n}\n\nexport interface QueryDescription {\n parameters: ParameterInfo[];\n result: FieldInfo[];\n}\n\nexport interface ParameterInfo {\n type: DataType;\n typeId: number\n}\n\nexport interface IBoundQuery {\n /** Executes all statements */\n executeAll(): QueryResult;\n /**\n * Progressively executes a query that contains multiple statements, yielding results until the end of enumeration (or an exception)\n */\n iterate(): IterableIterator<QueryResult>;\n}\n\nexport interface ISchema {\n /**\n * Another way to create tables (equivalent to \"create table\" queries\")\n */\n declareTable(table: Schema): IMemoryTable<any>;\n\n /**\n * Execute a query and return many results\n */\n many(query: QueryOrAst): any[];\n /**\n * Execute a query without results\n */\n none(query: QueryOrAst): void;\n /**\n * Execute a query with a single result\n */\n one(query: QueryOrAst): any;\n\n /**\n * Execute a query that has no argument, and returns the latest query result\n * (shortcut for .prepare(cmd).bind().executeAll())\n */\n query(text: QueryOrAst): QueryResult;\n\n /**\n * Progressively executes a query that has no argument, yielding results until the end of enumeration (or an exception)\n * (shortcut for .prepare(cmd).bind().iterate())\n */\n queries(text: QueryOrAst): Iterable<QueryResult>;\n\n /**\n * Prepare a query\n */\n prepare(text: QueryOrAst): IPreparedQuery;\n\n /**\n * Get a table in this db to inspect it\n */\n getTable(table: string): IMemoryTable<unknown>;\n getTable(table: string, nullIfNotFound?: boolean): IMemoryTable<unknown> | null;\n\n /**\n * List all tables in this schema\n */\n listTables(): Iterable<IMemoryTable<unknown>>\n\n /** Register a function */\n registerFunction(fn: FunctionDefinition, orReplace?: boolean): this;\n\n\n /** Register a binary operator */\n registerOperator(fn: OperatorDefinition): this;\n\n /** Register a simple type, which is equivalent to another */\n registerEquivalentType(type: IEquivalentType): IType;\n\n /** Register a simple type, which is equivalent to another */\n registerEquivalentSizableType(type: IEquivalentType): IType;\n\n /** Get an existing type */\n getType(name: DataType): IType;\n\n /**\n * Registers an enum type on this schema\n * @param name Enum name\n * @param values Possible values\n */\n registerEnum(name: string, values: string[]): void;\n\n /**\n * Database migration, node-sqlite flavor\n * ⚠ Only working when runnin nodejs !\n */\n migrate(config?: MigrationParams): Promise<void>;\n\n\n /**\n * Intecept queries.\n * If your interceptor returns an array, then the query will not be executed.\n * The given result will be returned instead.\n */\n interceptQueries(interceptor: QueryInterceptor): ISubscription;\n}\n\nexport interface FunctionDefinition {\n /** Function name (casing doesnt matter) */\n name: string;\n\n /** Expected arguments */\n args?: ArgDef[] | nil;\n\n /** Other arguments type (variadic arguments) */\n argsVariadic?: DataType | IType | nil;\n\n /** Returned data type */\n returns?: DataType | IType | nil;\n\n /**\n * If the function is marked as impure, it will not be simplified\n * (ex: \"select myFn(1) from myTable\" will call myFn() for each row in myTable, even if it does not depend on its result) */\n impure?: boolean;\n\n /** If true, the function will also be called when passing null arguments */\n allowNullArguments?: boolean;\n\n /** Actual implementation of the function */\n implementation: CompiledFunction;\n}\n\nexport interface OperatorDefinition {\n /** Function name (casing doesnt matter) */\n operator: BinaryOperator;\n\n /** Expected left argument */\n left: DataType | IType;\n\n /** Expected right argument */\n right: DataType | IType;\n\n /** True if the operator is commutative (if left & right can be inverted) */\n commutative?: boolean;\n\n /** Returned data type */\n returns: DataType | IType;\n\n /**\n * If the function is marked as impure, it will not be simplified\n * (ex: \"select myFn(1) from myTable\" will call myFn() for each row in myTable, even if it does not depend on its result) */\n impure?: boolean;\n\n /** If true, the function will also be called when passing null arguments */\n allowNullArguments?: boolean;\n\n /** Actual implementation of the function */\n implementation: CompiledFunction;\n}\n\n\nexport interface QueryResult {\n /** Last command that has been executed */\n command: string;\n rowCount: number;\n fields: Array<FieldInfo>;\n rows: any[];\n\n /** Location of the last \";\" prior to this statement */\n location: NodeLocation;\n}\n\nexport interface FieldInfo {\n name: string;\n type: DataType;\n typeId: number;\n}\n\n\n\nexport type TableEvent = 'seq-scan';\nexport type GlobalEvent = 'query' | 'query-failed' | 'catastrophic-join-optimization' | 'schema-change' | 'create-extension';\n\nexport interface IMemoryTable<T> {\n readonly comment?: string | nil;\n readonly name: string;\n readonly primaryIndex: IndexDef | nil;\n\n /** List columns in this table */\n getColumns(): Iterable<ColumnDef>;\n\n /** Subscribe to an event on this table */\n on(event: TableEvent, handler: () => any): ISubscription;\n /** List existing indices defined on this table */\n listIndices(): IndexDef[];\n\n\n /**\n * Inserts a raw item into this table.\n * ⚠ Neither the record you provided, nor the returned value are the actual item stored. You wont be able to mutate internal state.\n * @returns A copy of the inserted item (with assigned defaults)\n */\n insert(item: Partial<T>): T | null;\n\n /** Find all items matching a specific template */\n find<keys extends (keyof T)[]>(template?: Partial<T> | nil, columns?: keys): Pick<T, ArrayToUnionOr<keys, keyof T>>[];\n}\n\n\ntype ArrayToUnionOr<T, Or> = T extends (infer U)[] ? U : Or;\n\nexport interface ColumnDef {\n readonly name: string;\n readonly type: IType;\n readonly comment?: string | nil;\n readonly nullable: boolean;\n readonly generated: boolean;\n readonly hasDefault: boolean;\n}\n\n\nexport interface ISubscription {\n unsubscribe(): void;\n}\n\nexport interface IndexDef {\n readonly name: string;\n readonly expressions: string[];\n readonly unique: boolean;\n}\n\nexport class NotSupported extends Error {\n constructor(what?: string) {\n super('🔨 Not supported 🔨 ' + (what ? ': ' + what : ''));\n }\n\n static never(value: never, msg?: string) {\n return new NotSupported(`${msg ?? ''} ${JSON.stringify(value)}`);\n }\n}\n\n\ninterface ErrorData {\n readonly error: string;\n readonly details?: string;\n readonly hint?: string;\n readonly code?: string;\n}\nexport class QueryError extends Error {\n readonly data: ErrorData;\n readonly code: string | undefined;\n constructor(err: string | ErrorData, code?: string) {\n super(typeof err === 'string' ? err : errDataToStr(err));\n if (typeof err === 'string') {\n this.data = { error: err, code };\n this.code = code;\n } else {\n this.data = err;\n this.code = err.code;\n }\n }\n}\n\nfunction errDataToStr(data: ErrorData) {\n const ret = ['ERROR: ' + data.error];\n if (data.details) {\n ret.push('DETAIL: ' + data.details);\n }\n if (data.hint) {\n ret.push('HINT: ' + data.hint)\n }\n return ret.join('\\n');\n}\n\n\nexport class CastError extends QueryError {\n constructor(from: string | DataType | IType, to: string | DataType | IType, inWhat?: string) {\n super(`cannot cast type ${typeof from === 'string'\n ? from\n : from.name} to ${typeof to === 'string'\n ? to\n : to.name}`\n + (inWhat ? ' in ' + inWhat : ''));\n }\n}\n\n\nexport class ColumnNotFound extends QueryError {\n constructor(col: string) {\n super(`column \"${col}\" does not exist`);\n }\n}\n\nexport class AmbiguousColumn extends QueryError {\n constructor(col: string) {\n super(`column reference \"${col}\" is ambiguous`);\n }\n}\n\nexport class RelationNotFound extends QueryError {\n constructor(tableName: string) {\n super(`relation \"${tableName}\" does not exist`);\n }\n}\nexport class TypeNotFound extends QueryError {\n constructor(t: string | number | DataTypeDef) {\n super(`type \"${typeof t !== 'object' ? t : typeDefToStr(t)}\" does not exist`);\n }\n}\n\nexport class RecordExists extends QueryError {\n constructor() {\n super('Records already exists');\n }\n}\n\n\nexport class PermissionDeniedError extends QueryError {\n constructor(what?: string) {\n super(what\n ? `permission denied: \"${what}\" is a system catalog`\n : 'permission denied');\n }\n}\n\n\nexport function typeDefToStr(t: DataTypeDef): string {\n if (t.kind === 'array') {\n return typeDefToStr(t.arrayOf) + '[]';\n }\n let ret = t.name;\n if (t.schema) {\n ret = t.schema + '.' + ret;\n }\n if (t.config?.length) {\n ret = ret + '(' + t.config.join(',') + ')';\n }\n return ret;\n}\n\n/** A type definition that is equivalent to another type */\nexport interface IEquivalentType {\n /** Type name */\n readonly name: string;\n /** Which underlying type is it equivalent to ? */\n readonly equivalentTo: DataType | IType;\n /**\n * Is this value valid ?\n */\n isValid(value: any): boolean;\n}\n","import { _ISchema, _ISelection, _IDb, OnStatementExecuted, nil, QueryError, _IStatement, IValue, Parameter, _IType } from '../interfaces-private';\n\n\nclass StackOf<T> {\n readonly stack: T[] = [];\n constructor(private name: string) {\n }\n usingValue = <ret>(value: T, act: () => ret): ret => {\n this.stack.push(value);\n try {\n return act();\n } finally {\n this.stack.pop();\n }\n }\n get current(): T {\n if (!this.stack.length) {\n throw new Error(`No ${this.name} available`);\n }\n return this.stack[this.stack.length - 1];\n }\n\n get currentOrNil(): T | nil {\n return this.stack[this.stack.length - 1];\n }\n}\n\n\nconst _selectionStack = new StackOf<_ISelection>('build context');\nconst _statementStack = new StackOf<_IStatement>('execution statement');\nconst _tempBindings = new StackOf<Map<string, _ISelection | 'no returning'>>('binding context');\nconst _parametersStack = new StackOf<Parameter[]>('parameter context');\nconst _nameResolver = new StackOf<INameResolver>('name resolver');\n\nexport interface INameResolver {\n /** Try to resolve a name */\n resolve(name: string): IValue | nil;\n /** True if is isolated... meaning that one cannot fetch values from its parent */\n readonly isolated: boolean;\n}\n\n\ninterface IBuildContext {\n readonly selection: _ISelection;\n readonly db: _IDb;\n readonly schema: _ISchema;\n readonly onFinishExecution: (callback: OnStatementExecuted) => void\n readonly getTempBinding: (name: string) => _ISelection | nil;\n readonly setTempBinding: (name: string, boundTo: _ISelection) => void;\n readonly getParameter: (nameOrPosition: string | number) => IValue | nil;\n readonly setParameterType: (nameOrPosition: number, type: _IType) => void;\n}\n\nclass Context implements IBuildContext {\n get selection(): _ISelection {\n return _selectionStack.current;\n }\n get db(): _IDb {\n return _selectionStack.current.db;\n }\n get schema(): _ISchema {\n // remove the concept of selection schema ?\n // (does not make much sens, if you think about it)\n return _selectionStack.current.ownerSchema;\n }\n onFinishExecution = (callback: OnStatementExecuted) => {\n _statementStack.current.onExecuted(callback);\n };\n getTempBinding = (name: string) => {\n const ret = _tempBindings.currentOrNil?.get(name);\n if (ret === 'no returning') {\n throw new QueryError(`WITH query \"${name}\" does not have a RETURNING clause`);\n }\n return ret;\n };\n setTempBinding = (name: string, boundTo: _ISelection) => {\n if (_tempBindings.current.has(name)) {\n throw new QueryError(`WITH query name \"${name}\" specified more than once`);\n }\n _tempBindings.current.set(name, boundTo.isExecutionWithNoResult ? 'no returning' : boundTo);\n };\n getParameter = (nameOrPosition: string | number) => {\n const params = _parametersStack.currentOrNil;\n if (!params) {\n return null;\n }\n if (typeof nameOrPosition === 'number') {\n const ret = params[nameOrPosition];\n if (!ret) {\n // not ideal... (duplicated error message)\n throw new QueryError(`bind message supplies ${params.length} parameters, but prepared statement \"\" requires ${nameOrPosition}`, '08P01');\n }\n return ret.value;\n }\n return params.find(p => p.value?.id === nameOrPosition)?.value;\n }\n\n setParameterType = (position: number, type: _IType) => {\n const params = _parametersStack.currentOrNil;\n if (!params || !params[position]) {\n throw new Error(`Parameter ${position} not found`);\n }\n params[position].inferedType = type;\n };\n}\n\n\n\n\nconst _buildCtx = new Context();\nexport function buildCtx(): IBuildContext {\n return _buildCtx;\n}\n\n\nexport const withSelection = _selectionStack.usingValue;\nexport const withStatement = _statementStack.usingValue;\nexport function withBindingScope<T>(act: () => T): T {\n return _tempBindings.usingValue(new Map(), act);\n}\nexport const withParameters = _parametersStack.usingValue;\nexport const withNameResolver = _nameResolver.usingValue;\n\nexport function resolveName(name: string): IValue | null {\n for (let i = _nameResolver.stack.length - 1; i >= 0; i--) {\n const resolver = _nameResolver.stack[i];\n const found = resolver.resolve(name);\n if (found) {\n return found;\n }\n if (resolver.isolated) {\n return null;\n }\n }\n return null;\n}\n","// <== THERE MUST BE NO ACTUAL IMPORTS OTHER THAN IMPORT TYPES (dependency loop)\n// ... use 'kind-of' dependency injection below\nimport type { _ISelection, IValue, _IIndex, _ISchema, _IDb, _Transaction, _SelectExplanation, _Explainer, Stats, nil, _IAlias, Row, _IAggregation } from '../interfaces-private';\nimport type { buildSelection } from './selection';\nimport type { buildAlias } from './alias';\nimport type { buildFilter } from './build-filter';\nimport type { buildGroupBy } from './aggregation';\nimport type { buildLimit } from './limit';\nimport type { buildUnion } from './union';\nimport type { buildOrderBy } from './order-by';\nimport type { buildDistinct } from './distinct';\n\nimport { Expr, SelectedColumn, SelectStatement, LimitStatement, OrderByStatement, ExprRef } from 'pgsql-ast-parser';\nimport { RestrictiveIndex } from './restrictive-index';\n\ninterface Fns {\n buildSelection: typeof buildSelection;\n buildAlias: typeof buildAlias;\n buildLimit: typeof buildLimit;\n buildUnion: typeof buildUnion;\n buildFilter: typeof buildFilter;\n buildGroupBy: typeof buildGroupBy;\n buildOrderBy: typeof buildOrderBy;\n buildDistinct: typeof buildDistinct;\n}\nlet fns: Fns;\nexport function initialize(init: Fns) {\n fns = init;\n}\n\nexport abstract class DataSourceBase implements _ISelection {\n abstract enumerate(t: _Transaction): Iterable<Row>;\n abstract entropy(t: _Transaction): number;\n abstract readonly columns: ReadonlyArray<IValue>;\n abstract getColumn(column: string, nullIfNotFound?: boolean): IValue;\n abstract hasItem(value: Row, t: _Transaction): boolean;\n abstract getIndex(forValue: IValue): _IIndex | null | undefined;\n abstract explain(e: _Explainer): _SelectExplanation;\n abstract isOriginOf(a: IValue): boolean;\n abstract stats(t: _Transaction): Stats | null;\n abstract get isExecutionWithNoResult(): boolean;\n\n isAggregation(): this is _IAggregation {\n return false;\n }\n // abstract get name(): string;\n\n\n get db() {\n return this.ownerSchema.db;\n }\n\n constructor(readonly ownerSchema: _ISchema) {\n }\n\n listColumns(): Iterable<IValue> {\n return this.columns;\n }\n\n listSelectableIdentities(): Iterable<IValue> {\n return this.columns;\n }\n\n select(select: (string | SelectedColumn)[] | nil): _ISelection {\n let sel: SelectedColumn[] | nil;\n if (select?.some(v => typeof v === 'string')) {\n sel = select.map<SelectedColumn>(v => typeof v !== 'string'\n ? v\n : {\n expr: { type: 'ref', name: v },\n })\n } else {\n sel = select as SelectedColumn[] | nil;\n }\n return fns.buildSelection(this, sel);\n }\n\n\n selectAlias(alias: string): _IAlias | nil {\n return null;\n }\n\n\n filter(filter: Expr | undefined | null): _ISelection {\n if (!filter) {\n return this;\n }\n const plan = fns.buildFilter(this, filter, 'WHERE');\n return plan;\n }\n\n groupBy(grouping: Expr[] | nil): _ISelection {\n if (!grouping?.length) {\n return this;\n }\n const plan = fns.buildGroupBy(this, grouping);\n return plan;\n }\n\n\n setAlias(alias?: string): _ISelection {\n return fns.buildAlias(this, alias);\n }\n\n limit(limit: LimitStatement): _ISelection {\n if (!limit?.limit && !limit?.offset) {\n return this;\n }\n return fns.buildLimit(this, limit)\n }\n\n orderBy(orderBy: OrderByStatement[] | nil): _ISelection {\n if (!orderBy?.length) {\n return this;\n }\n return fns.buildOrderBy(this, orderBy);\n }\n\n distinct(exprs?: Expr[]): _ISelection {\n return fns.buildDistinct(this, exprs);\n }\n\n union(right: _ISelection): _ISelection {\n return fns.buildUnion(this, right);\n }\n\n}\n\n\nexport abstract class TransformBase extends DataSourceBase {\n\n\n constructor(readonly base: _ISelection) {\n super(base.ownerSchema);\n }\n\n get isExecutionWithNoResult(): boolean {\n return false;\n }\n\n entropy(t: _Transaction): number {\n return this.base.entropy(t);\n }\n\n isOriginOf(a: IValue): boolean {\n return a.origin === this || this.base?.isOriginOf(a);\n }\n}\n\nexport abstract class FilterBase extends TransformBase {\n\n isAggregation(): this is _IAggregation {\n return false;\n }\n\n constructor(_base: _ISelection) {\n super(_base);\n }\n\n get columns(): ReadonlyArray<IValue> {\n return this.base.columns;\n }\n\n selectAlias(alias: string): nil | _IAlias {\n // this is a filter... that the alias returned by the unfiltered datasource will\n // be valid for the filtered datasource (aliases are only listing columns)\n return this.base.selectAlias(alias);\n }\n\n /**\n private _columns: IValue[];\n private _columnMappings: Map<IValue, IValue>;\n get columns(): ReadonlyArray<IValue> {\n this.initCols();\n return this._columns;\n // return this.base.columns;\n }\n\n private initCols() {\n if (this._columns) {\n return;\n }\n this._columns = [];\n this._columnMappings = new Map();\n for (const c of this.base.columns) {\n const nc = c.setOrigin(this);\n this._columns.push(nc);\n this._columnMappings.set(c, nc);\n }\n }\n\n getColumn(column: string, nullIfNotFound?: boolean): IValue {\n if (!this.base) { // istanbul ignore next\n throw new Error('Should not call .getColumn() on join');\n }\n if (!('columns' in this.base)) { // istanbul ignore next\n throw new Error('Should not call getColumn() on table');\n }\n this.initCols();\n const col = this.base.getColumn(column, nullIfNotFound);\n return col && this._columnMappings.get(col);\n }\n */\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n if (!this.base) { // istanbul ignore next\n throw new Error('Should not call .getColumn() on join');\n }\n if (!('columns' in this.base)) { // istanbul ignore next\n throw new Error('Should not call getColumn() on table');\n }\n return this.base.getColumn(column, nullIfNotFound);\n }\n\n getIndex(...forValue: IValue[]): _IIndex | null | undefined {\n const index = this.base.getIndex(...forValue);\n if (!index) {\n return null;\n }\n return new RestrictiveIndex(index, this);\n }\n}\n","import { _ISelection, IValue, _IType, _ISchema, _IAlias } from '../interfaces-private';\nimport { buildLikeMatcher, nullIsh, hasNullish, intervalToSec, parseTime, asSingleQName, colToStr, executionCtx } from '../utils';\nimport { DataType, CastError, QueryError, NotSupported, nil, ColumnNotFound } from '../interfaces';\nimport hash from 'object-hash';\nimport { Value, Evaluator } from '../evaluator';\nimport { Types, isNumeric, reconciliateTypes, ArrayType, RecordCol } from '../datatypes';\nimport { Expr, ExprBinary, UnaryOperator, ExprCase, ExprWhen, ExprMember, ExprArrayIndex, ExprTernary, BinaryOperator, SelectStatement, ExprValueKeyword, ExprExtract, Interval, ExprOverlay, ExprSubstring, ExprCall } from 'pgsql-ast-parser';\nimport lru from 'lru-cache';\nimport { aggregationFunctions, getAggregator } from '../transforms/aggregation';\nimport moment from 'moment';\nimport { IS_PARTIAL_INDEXING } from '../execution/clean-results';\nimport { buildCtx } from './context';\nimport { buildSelect } from '../execution/select';\n\n\nconst builtLru = new lru<_ISelection | null, lru<Expr, IValue>>({\n max: 30,\n});\nexport function buildValue(val: Expr): IValue {\n const ret = _buildValue(val);\n checkNotUntypedArray(ret);\n return ret;\n}\n\n\nfunction checkNotUntypedArray(value: IValue) {\n // A bit ugly: check that this is not a non typed array (empty array)\n // see https://github.com/oguimbal/pg-mem/issues/64\n // + corresponding UTs\n const type = value.type;\n if (type instanceof ArrayType && type.of == Types.null) {\n throw new QueryError(`cannot determine type of empty array`);\n }\n}\n\nexport function uncache(data: _ISelection) {\n builtLru.del(data);\n}\n\nfunction _buildValue(val: Expr): IValue {\n // cache expressions build (they almost are always rebuilt several times in a row)\n const data = buildCtx().selection;\n let selLru = builtLru.get(data ?? null);\n let got: IValue | nil;\n if (selLru) {\n got = selLru.get(val);\n if (got) {\n return got;\n }\n }\n got = _buildValueReal(val);\n if (data.isAggregation()) {\n got = data.checkIfIsKey(got);\n }\n if (!selLru) {\n builtLru.set(data ?? null, selLru = new lru({\n max: 50,\n }));\n }\n selLru.set(val, got);\n return got;\n}\n\nfunction _buildValueReal(val: Expr): IValue {\n const { schema, getParameter, setParameterType, selection } = buildCtx();\n switch (val.type) {\n case 'binary':\n if (val.op === 'IN' || val.op === 'NOT IN') {\n return buildIn(val.left, val.right, val.op === 'IN');\n }\n return buildBinary(val);\n case 'unary':\n return buildUnary(val.op, val.operand);\n case 'ref':\n // try to get a column reference\n // todo refactor getColumn() to NameResolvers\n const found = selection.getColumn(val, true);\n if (found) {\n return found;\n }\n // try to get a parameter reference\n const arg = !val.table && getParameter(val.name);\n if (arg) {\n return arg;\n }\n // try to select an aliased record (= a table)\n const alias = !val.table && selection.selectAlias(val.name);\n if (alias) {\n return buildRecord(alias);\n }\n throw new ColumnNotFound(colToStr(val));\n case 'string':\n return Value.text(val.value);\n case 'null':\n return Value.null();\n case 'list':\n case 'array':\n const vals = val.expressions.map(x => _buildValue(x));\n return val.type === 'list'\n ? Value.list(vals)\n : Value.array(vals);\n case 'numeric':\n return Value.number(val.value);\n case 'integer':\n return Value.number(val.value, Types.integer);\n case 'call':\n return _buildCall(val);\n case 'cast':\n return _buildValue(val.operand)\n .cast(schema.getType(val.to))\n case 'case':\n return buildCase(val);\n case 'member':\n return buildMember(val);\n case 'arrayIndex':\n return buildArrayIndex(val);\n case 'boolean':\n return Value.bool(val.value);\n case 'ternary':\n return buildTernary(val);\n case 'select':\n case 'union':\n case 'union all':\n case 'with':\n case 'with recursive':\n case 'values':\n return buildSelectAsArray(val);\n case 'array select':\n return buildSelectAsArray(val.select);\n case 'constant':\n return Value.constant(val.dataType as any, val.value);\n case 'keyword':\n return buildKeyword(val, []);\n case 'parameter':\n const [_, n] = /^\\$(\\d+)$/.exec(val.name) ?? [];\n if (!n) {\n throw new Error('Unexpected parameter ref shape: ' + val.name);\n }\n const idx = parseInt(n) - 1;\n const p = getParameter(idx);\n if (!p) {\n return new Evaluator(\n Types.text()\n , null\n , Math.random().toString() // must not be indexable => always different hash\n , [] // no dependency\n , () => {\n const value = executionCtx().parametersValues?.[idx];\n if (value === undefined) {\n throw new QueryError(`Parameter $${n} not found`, '42P02');\n }\n return value;\n }\n , {\n forceNotConstant: true,\n actAsConstantLiteral: true,\n unpure: true,\n onCast: toType => {\n // register the type of the parameter\n setParameterType(idx, toType);\n }\n });\n }\n return p;\n case 'extract':\n return buildExtract(val);\n case 'overlay':\n return buildOverlay(val);\n case 'substring':\n return buildSubstring(val);\n case 'default':\n throw new QueryError(`DEFAULT is not allowed in this context`, '42601');\n default:\n throw NotSupported.never(val);\n }\n}\n\nfunction buildRecord(alias: _IAlias): IValue {\n const cols = [...alias.listColumns()];\n return new Evaluator(\n Types.record(cols\n .map<RecordCol>(x => ({\n name: x.id!,\n type: x.type,\n })))\n , null\n , Math.random().toString() // must not be indexable => always different hash\n , []\n , (raw, t) => raw, { forceNotConstant: true });\n}\n\nfunction _buildCall(val: ExprCall): IValue {\n // if (typeof val.function !== 'string') {\n // return buildKeyword( val.function, val.args);\n // }\n if (val.over) {\n throw new NotSupported('\"OVER\" clause is not implemented in pg-mem yet');\n }\n const nm = asSingleQName(val.function, 'pg_catalog');\n if (nm && aggregationFunctions.has(nm)) {\n const agg = getAggregator();\n if (!agg) {\n throw new QueryError(`aggregate functions are not allowed in WHERE`);\n }\n return agg.getAggregation(nm, val);\n }\n const args = val.args.map(x => _buildValue(x));\n return Value.function(val.function, args);\n}\n\nfunction buildKeyword(kw: ExprValueKeyword, args: Expr[]): IValue {\n if (args.length) {\n throw new NotSupported(`usage of \"${kw.keyword}\" keyword with arguments, please file an issue in https://github.com/oguimbal/pg-mem if you need it !`);\n }\n if (kw.type !== 'keyword') {\n throw new Error('Invalid AST');\n }\n switch (kw.keyword) {\n case 'current_catalog':\n case 'current_role':\n case 'current_user':\n case 'session_user':\n case 'user':\n return Value.constant(Types.text(), 'pg_mem');\n case 'current_schema':\n return Value.constant(Types.text(), 'public');\n case 'current_date':\n return Value.constant(Types.date, new Date());\n case 'current_timestamp':\n case 'localtimestamp':\n return Value.constant(Types.timestamp(), new Date());\n case 'localtime':\n case 'current_time':\n throw new NotSupported('\"date\" data type, please file an issue in https://github.com/oguimbal/pg-mem if you need it !');\n case 'distinct':\n throw new NotSupported(kw.keyword);\n default:\n throw NotSupported.never(kw.keyword);\n }\n}\n\nfunction buildUnary(op: UnaryOperator, operand: Expr) {\n const expr = _buildValue(operand);\n\n switch (op) {\n case 'IS NULL':\n case 'IS NOT NULL':\n return Value.isNull(expr, op === 'IS NULL');\n case 'IS TRUE':\n case 'IS NOT TRUE':\n return Value.isTrue(expr, op === 'IS TRUE');\n case 'IS FALSE':\n case 'IS NOT FALSE':\n return Value.isFalse(expr, op === 'IS FALSE');\n case '+':\n if (!isNumeric(expr.type)) {\n throw new CastError(expr.type.primary, DataType.float);\n }\n return expr;\n case 'NOT':\n case '-':\n return Value.negate(expr);\n default:\n throw NotSupported.never(op, 'Unary operator not supported');\n }\n}\n\nfunction buildIn(left: Expr, array: Expr, inclusive: boolean): IValue {\n let leftValue = _buildValue(left);\n let rightValue = _buildValue(array);\n return Value.in(leftValue, rightValue, inclusive);\n}\n\n\nfunction buildBinary(val: ExprBinary): IValue {\n let leftValue = _buildValue(val.left);\n let rightValue = _buildValue(val.right);\n return buildBinaryValue(leftValue, val.op, rightValue);\n}\n\nexport function buildBinaryValue(leftValue: IValue, op: BinaryOperator, rightValue: IValue): IValue {\n function expectSame() {\n const ll = leftValue.type.primary === DataType.list;\n const rl = rightValue.type.primary === DataType.list;\n if (ll !== rl) {\n function doMap(v: IValue): IValue {\n return v.map(x => {\n if (!x) {\n return x;\n }\n if (!Array.isArray(x)) {\n // not supposed to happen\n throw new Error(`Was expecting an array. Got instead ${x}`);\n }\n if (x.length > 1) {\n throw new QueryError('more than one row returned by a subquery used as an expression', '21000');\n }\n return x[0];\n }, (v.type as ArrayType).of);\n }\n if (ll) {\n leftValue = doMap(leftValue);\n } else {\n rightValue = doMap(rightValue);\n }\n }\n const type: _IType = reconciliateTypes([leftValue, rightValue]);\n leftValue = leftValue.cast(type);\n rightValue = rightValue.cast(type);\n return type;\n }\n function expectBoth(t: _IType) {\n leftValue = leftValue.cast(t);\n rightValue = rightValue.cast(t);\n }\n\n let getter: (a: any, b: any) => any;\n let returnType: _IType = Types.bool;\n let commutative = true;\n let forcehash: any = null;\n let rejectNils = true;\n let impure = false;\n switch (op) {\n case '=': {\n const type = expectSame();\n getter = (a, b) => type.equals(a, b);\n break;\n }\n case '!=': {\n const type = expectSame();\n getter = (a, b) => {\n const ret = type.equals(a, b);\n return nullIsh(ret) ? null : !ret;\n };\n break;\n }\n case '>': {\n const type = expectSame();\n getter = (a, b) => type.gt(a, b);\n forcehash = { op: '>', left: leftValue.hash, right: rightValue.hash };\n break;\n }\n case '<': {\n const type = expectSame();\n getter = (a, b) => type.lt(a, b);\n forcehash = { op: '>', left: rightValue.hash, right: leftValue.hash };\n break;\n }\n case '>=': {\n const type = expectSame();\n getter = (a, b) => type.ge(a, b);\n forcehash = { op: '>=', left: leftValue.hash, right: rightValue.hash };\n break;\n }\n case '<=': {\n const type = expectSame();\n getter = (a, b) => type.le(a, b);\n forcehash = { op: '>=', left: rightValue.hash, right: leftValue.hash };\n break;\n }\n case 'AND':\n case 'OR':\n expectBoth(Types.bool);\n rejectNils = false;\n if (op === 'AND') {\n getter = (a, b) => a && b;\n } else {\n getter = (a, b) => a || b;\n }\n break;\n case '&&':\n if (leftValue.type.primary !== DataType.array || !rightValue.canCast(leftValue.type)) {\n throw new QueryError(`Operator does not exist: ${leftValue.type.name} && ${rightValue.type.name}`, '42883');\n }\n rightValue = rightValue.cast(leftValue.type);\n getter = (a, b) => a.some((element: any) => b.includes(element));\n break;\n case 'LIKE':\n case 'ILIKE':\n case 'NOT LIKE':\n case 'NOT ILIKE':\n expectBoth(Types.text());\n const caseSenit = op === 'LIKE' || op === 'NOT LIKE';\n const not = op === 'NOT ILIKE' || op === 'NOT LIKE';\n if (rightValue.isConstant) {\n const pattern = rightValue.get();\n if (nullIsh(pattern)) {\n return Value.null(Types.bool);\n }\n let matcher: (str: string | number) => boolean | nil;\n if (rightValue.isAny) {\n // handle LIKE ANY()\n if (!Array.isArray(pattern)) {\n throw new QueryError('Unsupported use of ANY()');\n }\n const patterns = pattern.map(x => buildLikeMatcher(x, caseSenit));\n matcher = v => patterns.some(x => x(v));\n } else {\n matcher = buildLikeMatcher(pattern, caseSenit);\n }\n getter = !not\n ? a => nullIsh(a) ? null : matcher(a)\n : a => {\n if (nullIsh(a)) {\n return null;\n }\n const val = matcher(a);\n return nullIsh(val) ? null : !val;\n };\n } else {\n getter = !not\n ? (a, b) => hasNullish(a, b) ? null : buildLikeMatcher(b, caseSenit)(a)\n : (a, b) => {\n if (hasNullish(a, b)) {\n return null;\n }\n const val = buildLikeMatcher(b, caseSenit)(a);\n return nullIsh(val) ? null : !val;\n };\n }\n break;\n default: {\n const { schema } = buildCtx();\n const resolved = schema.resolveOperator(op, leftValue, rightValue);\n if (!resolved) {\n throw new QueryError(`operator does not exist: ${leftValue.type.name} ${op} ${rightValue.type.name}`, '42883');\n }\n leftValue = leftValue.cast(resolved.left);\n rightValue = rightValue.cast(resolved.right);\n commutative = resolved.commutative;\n returnType = resolved.returns;\n getter = resolved.implementation;\n rejectNils = !resolved.allowNullArguments;\n impure = !!resolved.impure;\n break;\n }\n }\n\n const hashed = hash(forcehash\n ?? (commutative\n ? { op, vals: [leftValue.hash, rightValue.hash].sort() }\n : { left: leftValue.hash, op, right: rightValue.hash }));\n\n // handle cases like: blah = ANY(stuff)\n if (leftValue.isAny || rightValue.isAny) {\n return buildBinaryAny(leftValue, op, rightValue, returnType, getter, hashed);\n }\n\n return new Evaluator(\n returnType\n , null\n , hashed\n , [leftValue, rightValue]\n , (raw, t) => {\n const leftRaw = leftValue.get(raw, t);\n const rightRaw = rightValue.get(raw, t);\n if (rejectNils && (nullIsh(leftRaw) || nullIsh(rightRaw))) {\n return null;\n }\n return getter(leftRaw, rightRaw);\n }, impure ? { unpure: impure } : undefined);\n\n}\n\nfunction buildBinaryAny(leftValue: IValue, op: BinaryOperator, rightValue: IValue, returnType: _IType, getter: (a: any, b: any) => boolean, hashed: string) {\n if (leftValue.isAny && rightValue.isAny) {\n throw new QueryError('ANY() cannot be compared to ANY()');\n }\n if (returnType !== Types.bool) {\n throw new QueryError('Invalid ANY() usage');\n }\n return new Evaluator(\n returnType\n , null\n , hashed\n , [leftValue, rightValue]\n , leftValue.isAny\n ? (raw, t) => {\n const leftRaw = leftValue.get(raw, t);\n if (nullIsh(leftRaw)) {\n return null;\n }\n if (!Array.isArray(leftRaw)) {\n throw new QueryError('Invalid ANY() usage: was expacting an array');\n }\n for (const lr of leftRaw) {\n const rightRaw = rightValue.get(raw, t);\n if (getter(lr, rightRaw)) {\n return true;\n }\n }\n return false;\n }\n : (raw, t) => {\n const rightRaw = rightValue.get(raw, t);\n if (nullIsh(rightRaw)) {\n return null;\n }\n if (!Array.isArray(rightRaw)) {\n throw new QueryError('Invalid ANY() usage: was expacting an array');\n }\n for (const rr of rightRaw) {\n const leftRaw = leftValue.get(raw, t);\n if (getter(leftRaw, rr)) {\n return true;\n }\n }\n return false;\n });\n}\n\n\nfunction buildCase(op: ExprCase): IValue {\n const whens = !op.value\n ? op.whens\n : op.whens.map<ExprWhen>(v => ({\n when: {\n type: 'binary',\n op: '=',\n left: op.value!,\n right: v.when,\n },\n value: v.value,\n }));\n if (op.else) {\n whens.push({\n when: { type: 'boolean', value: true },\n value: op.else,\n });\n }\n\n const whenExprs = whens.map(x => ({\n when: buildValue(x.when).cast(Types.bool),\n then: buildValue(x.value)\n }));\n\n const valueType = reconciliateTypes(whenExprs.map(x => x.then));\n for (const v of whenExprs) {\n v.then = v.then.cast(valueType);\n }\n\n return new Evaluator(\n valueType\n , null\n , hash({ when: whenExprs.map(x => ({ when: x.when.hash, then: x.then.hash })) })\n , [\n ...whenExprs.map(x => x.when),\n ...whenExprs.map(x => x.then)\n ]\n , (raw, t) => {\n for (const w of whenExprs) {\n const cond = w.when.get(raw, t);\n if (cond) {\n return w.then.get(raw, t);\n }\n }\n return null;\n });\n}\n\nfunction buildMember(op: ExprMember): IValue {\n const oop = op.op;\n if (oop !== '->>' && oop !== '->') {\n throw NotSupported.never(oop);\n }\n const onExpr = buildValue(op.operand);\n if (onExpr.type !== Types.json && onExpr.type !== Types.jsonb) {\n throw new QueryError(`Cannot use member expression ${op.op} on type ${onExpr.type.primary}`);\n }\n\n const conv = op.op === '->'\n ? ((x: any) => x)\n : ((x: any) => {\n if (nullIsh(x)) {\n return null;\n }\n if (typeof x === 'string') {\n return x;\n }\n return JSON.stringify(x);\n });\n\n return new Evaluator(\n op.op === '->' ? onExpr.type : Types.text()\n , null\n , hash([onExpr.hash, op.op, op.member])\n , onExpr\n , typeof op.member === 'string'\n ? (raw, t) => {\n const value = onExpr.get(raw, t);\n if (!value || typeof value !== 'object') {\n return null;\n }\n return conv(value[op.member]);\n }\n : (raw, t) => {\n const value = onExpr.get(raw, t);\n if (!Array.isArray(value)) {\n return null;\n }\n const i = (op.member as number) < 0\n ? value.length + (op.member as number)\n : op.member as number;\n return conv(value[i]);\n });\n}\n\n\nfunction buildArrayIndex(op: ExprArrayIndex): IValue {\n const onExpr = _buildValue(op.array);\n if (onExpr.type.primary !== DataType.array) {\n throw new QueryError(`Cannot use [] expression on type ${onExpr.type.primary}`);\n }\n const index = _buildValue(op.index).cast(Types.integer);\n return new Evaluator(\n (onExpr.type as ArrayType).of\n , null\n , hash({ array: onExpr.hash, index: index.hash })\n , [onExpr, index]\n , (raw, t) => {\n const value = onExpr.get(raw, t);\n if (!Array.isArray(value)) {\n return null;\n }\n const i = index.get(raw, t);\n if (typeof i !== 'number' || i <= 0 || i > value.length) {\n return null;\n }\n const ret = value[i - 1]; // 1-base !\n\n if (Array.isArray(ret)) {\n // ugly hack.. see clean-results.ts\n (ret as any)[IS_PARTIAL_INDEXING] = true;\n }\n return ret;\n });\n}\n\n\nfunction buildTernary(op: ExprTernary): IValue {\n const oop = op.op;\n if (oop !== 'NOT BETWEEN' && oop !== 'BETWEEN') {\n throw NotSupported.never(oop);\n }\n let value = _buildValue(op.value);\n let hi = _buildValue(op.hi);\n let lo = _buildValue(op.lo);\n const type = reconciliateTypes([value, hi, lo]);\n value = value.cast(type);\n hi = hi.cast(type);\n lo = lo.cast(type);\n const conv = oop === 'NOT BETWEEN'\n ? (x: boolean) => !x\n : (x: boolean) => x;\n\n return new Evaluator(\n Types.bool\n , null\n , hash({ value: value.hash, lo: lo.hash, hi: hi.hash })\n , [value, hi, lo]\n , (raw, t) => {\n const v = value.get(raw, t);\n if (nullIsh(v)) {\n return null;\n }\n const lov = lo.get(raw, t);\n if (!nullIsh(lov) && type.lt(v, lov)) {\n return conv(false);\n }\n const hiv = hi.get(raw, t);\n if (!nullIsh(hiv) && type.gt(v, hiv)) {\n return conv(false);\n }\n if (nullIsh(lov) || nullIsh(hiv)) {\n return null;\n }\n return conv(true);\n }\n );\n}\n\n\nfunction buildSelectAsArray(op: SelectStatement): IValue {\n // todo: handle refs to 'data' in op statement.\n // ... and refactor this. This is way too hacky to be maintainable\n // (this wont allow the subrequest to access outer context, for instance)\n const onData = buildSelect(op);\n if (onData.columns.length !== 1) {\n throw new QueryError('subquery must return only one column', '42601');\n }\n return new Evaluator(\n onData.columns[0].type.asList()\n , null\n , Math.random().toString() // must not be indexable => always different hash\n , null // , onData.columns[0]\n , (raw, t) => {\n const ret = [];\n for (const v of onData.enumerate(t!)) {\n ret.push(onData.columns[0].get(v, t));\n }\n return ret;\n }, {\n forceNotConstant: true\n });\n}\n\n\nfunction buildExtract(op: ExprExtract): IValue {\n const from = _buildValue(op.from);\n function extract(as: _IType, fn: (v: any) => any, result = Types.integer) {\n const conv = from.cast(as);\n return new Evaluator(\n result\n , null\n , hash({ extract: from.hash, field: op.field })\n , [conv]\n , (raw, t) => {\n const got = conv.get(raw, t);\n if (nullIsh(got)) {\n return null;\n }\n return fn(got);\n }\n )\n }\n switch (op.field.name) {\n case 'millennium':\n return extract(Types.date, x => Math.ceil(moment.utc(x).year() / 1000));\n case 'century':\n return extract(Types.date, x => Math.ceil(moment.utc(x).year() / 100));\n case 'decade':\n return extract(Types.date, x => Math.floor(moment.utc(x).year() / 10));\n case 'day':\n if (from.canCast(Types.date)) {\n return extract(Types.date, x => moment.utc(x).date());\n }\n return extract(Types.interval, (x: Interval) => x.days ?? 0);\n case 'second':\n if (from.canCast(Types.time)) {\n return extract(Types.time, x => {\n const t = parseTime(x);\n return t.second() + t.milliseconds() / 1000;\n }, Types.float);\n }\n return extract(Types.interval, (x: Interval) => (x.seconds ?? 0) + (x.milliseconds ?? 0) / 1000, Types.float);\n case 'minute':\n if (from.canCast(Types.time)) {\n return extract(Types.time, x => parseTime(x).minute());\n }\n return extract(Types.interval, (x: Interval) => x.minutes ?? 0);\n case 'milliseconds':\n if (from.canCast(Types.time)) {\n return extract(Types.time, x => {\n const t = parseTime(x);\n return t.seconds() * 1000 + t.milliseconds();\n });\n }\n return extract(Types.interval, (x: Interval) => (x.seconds ?? 0) * 1000 + (x.milliseconds ?? 0), Types.float);\n case 'month':\n if (from.canCast(Types.date)) {\n return extract(Types.date, x => moment.utc(x).month() + 1);\n }\n return extract(Types.interval, (x: Interval) => x.months ?? 0);\n case 'year':\n if (from.canCast(Types.date)) {\n return extract(Types.date, x => moment.utc(x).year());\n }\n return extract(Types.interval, (x: Interval) => x.years ?? 0);\n case 'dow':\n return extract(Types.date, x => moment.utc(x).day());\n case 'isodow':\n return extract(Types.date, x => {\n const dow = moment.utc(x).day();\n return dow ? dow : 7;\n });\n case 'doy':\n return extract(Types.date, x => moment.utc(x).dayOfYear());\n case 'epoch':\n if (from.canCast(Types.timestamp())) {\n return extract(Types.timestamp(), x => moment.utc(x).unix(), Types.float);\n }\n return extract(Types.interval, (x: Interval) => intervalToSec(x));\n case 'hour':\n if (from.canCast(Types.timestamp())) {\n return extract(Types.timestamp(), x => moment.utc(x).hour());\n }\n return extract(Types.interval, (x: Interval) => x.hours ?? 0);\n case 'isoyear':\n return extract(Types.date, x => {\n const d = moment.utc(x);\n return d.dayOfYear() <= 1 ? d.year() - 1 : d.year();\n });\n case 'quarter':\n return extract(Types.date, x => moment.utc(x).quarter());\n case 'week':\n return extract(Types.date, x => moment.utc(x).week());\n case 'microseconds':\n if (from.canCast(Types.time)) {\n return extract(Types.time, x => {\n const t = parseTime(x);\n return t.seconds() * 1000000 + t.milliseconds() * 1000;\n });\n }\n return extract(Types.interval, (x: Interval) => (x.seconds ?? 0) * 1000000 + (x.milliseconds ?? 0) * 1000);\n default:\n throw new NotSupported('Extract type \"' + op.field + '\"');\n }\n}\n\n\nfunction buildOverlay(op: ExprOverlay): IValue {\n const value = _buildValue(op.value).cast(Types.text());\n const placing = _buildValue(op.placing).cast(Types.text());\n const from = _buildValue(op.from).cast(Types.integer);\n const forr = op.for && _buildValue(op.for).cast(Types.integer);\n\n return new Evaluator(\n Types.text()\n , null\n , hash({ overlay: value.hash, placing: placing.hash, from: from.hash, for: forr?.hash })\n , forr ? [value, placing, from, forr] : [value, placing, from]\n , (raw, t) => {\n const _value = value.get(raw, t) as string;\n if (nullIsh(_value)) {\n return null;\n }\n const _placing = placing.get(raw, t) as string;\n if (nullIsh(_placing)) {\n return null;\n }\n const _from = from.get(raw, t) as number;\n if (nullIsh(_from)) {\n return null;\n }\n const before = sqlSubstring(_value, 0, _from - 1);\n let after: string | nil;\n if (forr) {\n const _for = forr.get(raw, t) as number;\n if (nullIsh(_for)) {\n return null;\n }\n after = sqlSubstring(_value, _from + _for);\n } else {\n after = sqlSubstring(_value, _placing.length + _from);\n }\n if (nullIsh(after)) {\n return null;\n }\n return before + _placing + after;\n });\n}\n\nfunction buildSubstring(op: ExprSubstring): IValue {\n const value = _buildValue(op.value).cast(Types.text());\n const vals = [value];\n const from = op.from && _buildValue(op.from).cast(Types.integer);\n const forr = op.for && _buildValue(op.for).cast(Types.integer);\n if (forr) {\n vals.push(forr);\n }\n if (from) {\n vals.push(from);\n }\n\n return new Evaluator(\n Types.text()\n , null\n , hash({ substr: value.hash, from: from?.hash, for: forr?.hash })\n , vals\n , (raw, t) => {\n const _value = value.get(raw, t) as string;\n if (nullIsh(_value)) {\n return null;\n }\n let start = 0;\n let len: number | nil;\n if (from) {\n start = from.get(raw, t) as number;\n if (nullIsh(start)) {\n return null;\n }\n }\n if (forr) {\n len = forr.get(raw, t) as number;\n if (nullIsh(len)) {\n return null;\n }\n }\n return sqlSubstring(_value, start, len);\n });\n}\n\nexport function sqlSubstring(value: string, from = 0, len?: number | nil): string | null {\n if (nullIsh(from) || nullIsh(value)) {\n return null;\n }\n // sql substring is base-1\n from--;\n if (from < 0) {\n from = 0;\n }\n if (!nullIsh(len)) {\n if (len! < 0) {\n throw new QueryError('negative substring length not allowed');\n }\n return value.substr(from, len!);\n }\n return value.substr(from);\n}\n","import { QName, Statement, NodeLocation, toSql } from 'pgsql-ast-parser';\nimport { _ISchema, QueryError, _Transaction, _IDb } from '../interfaces-private';\n\nexport function checkExistence(schema: _ISchema, name: QName, ifNotExists: boolean | undefined, act: () => void): boolean {\n // check if object exists\n const exists = schema.getObject(name, {\n skipSearch: true,\n nullIfNotFound: true\n });\n if (exists) {\n if (ifNotExists) {\n return false;\n }\n throw new QueryError(`relation \"${name.name}\" already exists`);\n }\n\n // else, perform operation\n act();\n return true;\n}\n\n\n\nexport function locOf(p: Statement): NodeLocation {\n return p._location ?? { start: 0, end: 0 };\n}\n\nexport abstract class ExecHelper {\n constructor(private statement: Statement) {\n }\n\n protected noData(t: _Transaction, name?: string) {\n return {\n result: {\n command: name ?? this.statement.type.toUpperCase(),\n fields: [],\n rowCount: 0,\n rows: [],\n location: locOf(this.statement),\n },\n state: t,\n };\n }\n}\n","import { _ITable, _ISelection, _ISchema, _Transaction, _IIndex, IValue, NotSupported, PermissionDeniedError, _Column, SchemaField, IndexDef, _Explainer, _SelectExplanation, _IType, ChangeHandler, Stats, DropHandler, IndexHandler, RegClass, RegType, Reg, _IConstraint, TruncateHandler, Row } from '../interfaces-private';\nimport { CreateColumnDef, ExprRef, TableConstraint } from 'pgsql-ast-parser';\nimport { DataSourceBase } from '../transforms/transform-base';\nimport { Schema, ColumnNotFound, nil, ISubscription, ColumnDef } from '../interfaces';\nimport { buildAlias } from '../transforms/alias';\nimport { columnEvaluator } from '../transforms/selection';\nimport { colByName, findTemplate } from '../utils';\nimport { cleanResults } from '../execution/clean-results';\n\nexport abstract class ReadOnlyTable extends DataSourceBase implements _ITable, _ISelection {\n\n\n get isExecutionWithNoResult(): boolean {\n return false;\n }\n\n get primaryIndex(): nil | IndexDef {\n return null;\n }\n\n getColumns(): Iterable<ColumnDef> {\n throw new Error('Method not implemented on schema tables.');\n }\n\n abstract entropy(t: _Transaction): number;\n abstract enumerate(t: _Transaction): Iterable<Row>;\n abstract hasItem(value: Row, t: _Transaction): boolean;\n abstract readonly _schema: Schema;\n\n reg!: Reg;\n\n readonly selection: _ISelection = buildAlias(this);\n readonly hidden = true;\n\n isOriginOf(v: IValue): boolean {\n return v.origin === this || v.origin === this.selection;\n }\n\n\n get type() {\n return 'table' as const;\n }\n\n constructor(private schema: _ISchema) {\n super(schema);\n }\n\n get name(): string {\n return this._schema.name;\n }\n\n register() {\n this.reg = this.schema._reg_register(this);\n }\n\n private columnsById = new Map<string, IValue>();\n private _columns?: IValue[];\n\n\n private build() {\n if (this._columns) {\n return;\n }\n this._columns = [];\n let i = 0;\n for (const _col of this._schema.fields) {\n const newCol = this.buildColumnEvaluator(_col, i++);\n this._columns.push(newCol);\n this.columnsById.set(_col.name, newCol);\n }\n }\n\n protected buildColumnEvaluator(_col: SchemaField, idx: number): IValue {\n return columnEvaluator(this, _col.name, _col.type as _IType);\n }\n\n get columns(): ReadonlyArray<IValue> {\n this.build();\n return this._columns!;\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n this.build();\n if (typeof column !== 'string'\n && column.table) {\n if (!column.table.schema\n && column.table.name !== this.name) {\n return null;\n }\n column = column.name;\n }\n return colByName(this.columnsById, column, nullIfNotFound);\n }\n\n explain(e: _Explainer): _SelectExplanation {\n throw new PermissionDeniedError(this.name);\n }\n\n listIndices(): IndexDef[] {\n return [];\n }\n\n stats(t: _Transaction): Stats | null {\n throw new NotSupported('stats (count, ...) on information schema');\n }\n\n rename(to: string): this {\n throw new PermissionDeniedError(this.name);\n }\n update(t: _Transaction, toUpdate: any): never {\n throw new PermissionDeniedError(this.name);\n }\n addColumn(column: SchemaField | CreateColumnDef): _Column {\n throw new PermissionDeniedError(this.name);\n }\n getColumnRef(column: string, nullIfNotFound?: boolean): _Column {\n throw new PermissionDeniedError(this.name);\n }\n getConstraint(constraint: string): _IConstraint | nil {\n return null;\n }\n addConstraint(constraint: TableConstraint, t: _Transaction): _IConstraint {\n throw new PermissionDeniedError(this.name);\n }\n insert(item: any) {\n throw new PermissionDeniedError(this.name);\n }\n doInsert(toInsert: any): void {\n throw new PermissionDeniedError(this.name);\n }\n delete(t: _Transaction, toDelete: Row): void {\n throw new PermissionDeniedError(this.name);\n }\n truncate(t: _Transaction): void {\n throw new PermissionDeniedError(this.name);\n }\n\n createIndex(): _IConstraint {\n throw new PermissionDeniedError(this.name);\n }\n dropIndex(t: _Transaction, name: string): void {\n throw new PermissionDeniedError(this.name);\n }\n setHidden(): this {\n throw new PermissionDeniedError(this.name);\n }\n drop(t: _Transaction): void {\n throw new PermissionDeniedError(this.name);\n }\n\n setReadonly(): this {\n return this;\n }\n\n getIndex(...forValue: IValue[]): _IIndex | nil {\n return null;\n }\n\n on(): any {\n throw new NotSupported('subscribing information schema');\n }\n onBeforeChange(columns: 'all' | (string | _Column)[], check: ChangeHandler) {\n // nop\n return { unsubscribe() { } }\n }\n onCheckChange(columns: string[], check: ChangeHandler) {\n // nop\n return { unsubscribe() { } }\n }\n onTruncate(sub: TruncateHandler): ISubscription {\n // nop\n return { unsubscribe() { } }\n }\n onDrop(sub: DropHandler): ISubscription {\n // nop\n return { unsubscribe() { } }\n }\n onIndex(sub: IndexHandler): ISubscription {\n // nop\n return { unsubscribe() { } }\n }\n\n\n find(template?: Row, columns?: (keyof Row)[]): Row[] {\n return cleanResults([...findTemplate(this.selection, this.db.data, template, columns)]);\n }\n\n\n make(table: _ITable, i: number, t: IValue): any {\n throw new Error('not implemented');\n }\n\n\n *itemsByTable(table: string | _ITable, t: _Transaction): IterableIterator<any> {\n if (typeof table === 'string') {\n for (const s of this.db.listSchemas()) {\n const got = s.getTable(table, true);\n if (got) {\n yield* this.itemsByTable(got, t);\n }\n }\n } else {\n let i = 0;\n for (const f of table.selection.columns) {\n yield this.make(table, ++i, f);\n }\n }\n }\n}","import { Evaluator } from '../evaluator';\nimport { CastError, DataType, IValue, nil, Reg, TR, _ISchema, _IType, _RelationBase, _Transaction } from '../interfaces-private';\nimport { ArrayType } from './datatypes';\nimport { isType, nullIsh } from '../utils';\nimport objectHash from 'object-hash';\nimport { QueryError } from '../interfaces';\n\nlet regCnt = 398420;\nfunction genId(num?: number | null): number {\n if (num) {\n return num;\n }\n return ++regCnt;\n}\n\nexport function regGen(typeId: number | null): Reg {\n return {\n classId: genId(),\n typeId: genId(typeId),\n };\n}\n\nexport abstract class TypeBase<TRaw = any> implements _IType<TRaw>, _RelationBase {\n get [isType.TAG]() {\n return true;\n }\n\n readonly reg: Reg;\n\n get type(): 'type' {\n return 'type';\n }\n\n /**\n * select a.oid, a.typname, b.typcategory from pg_catalog.pg_type a\n left join pg_catalog.pg_type b on b.oid = a.typelem\n */\n constructor(typeId: number | null) {\n this.reg = regGen(typeId);\n }\n\n private _asArray?: _IType<TRaw[]>;\n private _asList?: _IType<TRaw[]>;\n\n abstract primary: DataType;\n get name(): string {\n return this.primary;\n }\n get primaryName(): string {\n return this.primary;\n }\n\n\n /** Compute a custom unicty hash for a non null value */\n doGetHash?(value: TRaw): string | number;\n\n /** Can be casted to */\n doCanCast?(to: _IType<TRaw>): boolean | nil;\n\n /** Can be built to from (inverse of doCanCast()) */\n doCanBuildFrom?(from: _IType): boolean | nil;\n\n /**\n * @see this.prefer() doc\n */\n doPrefer?(type: _IType<TRaw>): _IType | null;\n\n /**\n * @see this.canConvertImplicit() doc\n */\n doCanConvertImplicit?(to: _IType<TRaw>): boolean;\n\n /** Perform conversion from this type to given type */\n doCast?(value: Evaluator<TRaw>, to: _IType<TRaw>): Evaluator<any> | nil;\n\n /** Perform conversion given type to this type (inverse of doCast()) */\n doBuildFrom?(value: Evaluator, from: _IType): Evaluator<TRaw> | nil;\n\n doEquals(a: TRaw, b: TRaw): boolean {\n return a === b;\n }\n\n doGt(a: TRaw, b: TRaw): boolean {\n return a > b;\n }\n\n doLt(a: TRaw, b: TRaw): boolean {\n return a < b;\n }\n toString(): string {\n throw new Error('Method not implemented.');\n }\n\n equals(a: TRaw, b: TRaw): boolean | null {\n if (nullIsh(a) || nullIsh(b)) {\n return null;\n }\n return this.doEquals(a, b);\n }\n\n gt(a: TRaw, b: TRaw): boolean | null {\n if (nullIsh(a) || nullIsh(b)) {\n return null;\n }\n return this.doGt(a, b);\n }\n lt(a: TRaw, b: TRaw): boolean | null {\n if (nullIsh(a) || nullIsh(b)) {\n return null;\n }\n return this.doLt(a, b);\n }\n\n ge(a: TRaw, b: TRaw): boolean | null {\n return this.gt(a, b) || this.equals(a, b);\n }\n\n le(a: TRaw, b: TRaw): boolean | null {\n return this.lt(a, b) || this.equals(a, b);\n }\n\n /**\n * When performing 'a+b', will be given 'b' type,\n * this returns the prefered resulting type, or null if they are not compatible\n */\n prefer(to: _IType<TRaw>): _IType | nil {\n if (to === this) {\n return this;\n }\n if (this.doPrefer) {\n const ret = this.doPrefer(to);\n if (ret) {\n return ret;\n }\n }\n return (to as TypeBase).doPrefer?.(this);\n }\n\n /**\n * Can constant literals be converted implicitely\n * (without a cast... i.e. you can use both values as different values of a case expression, for instance)\n **/\n canConvertImplicit(to: _IType<TRaw>): boolean | nil {\n if (to === this) {\n return true;\n }\n return this.doCanConvertImplicit?.(to);\n }\n\n /** Can be explicitely casted to */\n canCast(to: _IType<TRaw>): boolean | nil {\n if (to === this) {\n return true;\n }\n\n // ask the target type if it know how to build itself from this\n if ((to as TypeBase).doCanBuildFrom?.(this)) {\n return true;\n }\n\n // asks this type if it knows how to convert itself to target\n if (this.doCanConvertImplicit?.(to) || this.doCanCast?.(to)) {\n return true;\n }\n\n return false;\n }\n\n /** Perform cast */\n cast(_a: IValue<TRaw>, _to: _IType<any>): IValue {\n return this._convert(_a, _to, (a, to) => {\n if (!this.doCanCast?.(to) || !this.doCast) {\n throw new CastError(this, to);\n }\n return this.doCast(a, to);\n })\n }\n\n /** Perform implicit conversion */\n convertImplicit(_a: IValue<TRaw>, _to: _IType<any>): IValue {\n return this._convert(_a, _to, (a, to) => {\n if (!this.doCanConvertImplicit?.(to) || !this.doCast) {\n throw new CastError(this, to);\n }\n return this.doCast(a, to);\n })\n }\n\n private _convert(a: IValue<TRaw>, _to: _IType<any>, perform: (a: Evaluator, to: _IType) => Evaluator<any> | nil): IValue {\n const to = _to as TypeBase;\n if (to === this) {\n return a;\n }\n if (!(a instanceof Evaluator)) {\n throw new CastError(this, to);\n }\n\n let converted: Evaluator | nil;\n if (to.doCanBuildFrom?.(this)) {\n if (!to.doBuildFrom) {\n throw new CastError(this, to);\n }\n converted = to.doBuildFrom(a, this);\n } else {\n converted = perform(a, to);\n }\n\n if (!converted) {\n throw new CastError(this, to);\n }\n return converted.setType(to);\n }\n\n asArray(): _IType<TRaw[]> {\n if (this._asArray) {\n return this._asArray;\n }\n return this._asArray = new ArrayType(this, false);\n }\n\n asList(): _IType<TRaw[]> {\n if (this._asList) {\n return this._asList;\n }\n return this._asList = new ArrayType(this, true);\n }\n\n hash(value: any): string | number | null {\n if (nullIsh(value)) {\n return null;\n }\n if (this.doGetHash) {\n return this.doGetHash(value);\n }\n if (typeof value === 'number') {\n return value;\n }\n return objectHash(value);\n }\n\n drop(t: _Transaction): void {\n throw new QueryError('drop type not implemented');\n }\n\n}\n","import { _ISelection, _IIndex, IValue, setId, getId, _IType, _Transaction, _Column, _ITable, _Explainer, _SelectExplanation, IndexKey, _IndexExplanation, IndexExpression, IndexOp, Stats, _IAlias, _IAggregation, Row } from '../interfaces-private';\nimport { QueryError, ColumnNotFound, AmbiguousColumn, nil } from '../interfaces';\nimport { buildValue } from '../parser/expression-builder';\nimport { Evaluator, EvaluatorOptions } from '../evaluator';\nimport { TransformBase } from './transform-base';\nimport { SelectedColumn, Expr, astVisitor, ExprRef } from 'pgsql-ast-parser';\nimport { aggregationFunctions, buildGroupBy } from './aggregation';\n\nimport { asSingleQName, colByName, colToStr, isSelectAllArgList, suggestColumnName } from '../utils';\nimport { withSelection } from '../parser/context';\n\n\nexport function buildSelection(on: _ISelection, select: SelectedColumn[] | nil) {\n select = select ?? [];\n\n // if this is a \"SELECT *\" => just ignore\n if (isSelectAllArgList(select.map(x => x.expr))) {\n if (!on.columns.length) {\n throw new QueryError('SELECT * with no tables specified is not valid');\n }\n return on;\n }\n\n // if there is any aggregation function\n // check if there is any aggregation\n for (const col of select ?? []) {\n if (!on.isAggregation() && 'expr' in col && hasAggreg(col.expr)) {\n // yea, there is an aggregation somewhere in selection\n return buildGroupBy(on, []).select(select);\n }\n }\n\n return new Selection(on, select);\n}\n\n\nfunction hasAggreg(e: Expr) {\n let has = false;\n astVisitor(visitor => ({\n call: expr => {\n const nm = asSingleQName(expr.function, 'pg_catalog');\n if (nm && aggregationFunctions.has(nm)) {\n // yea, this is an aggregation\n has = true;\n return;\n }\n visitor.super().call(expr);\n }\n })).expr(e);\n return has\n}\n\n\n\nexport function columnEvaluator(this: void, on: _ISelection, id: string, type: _IType, opts?: EvaluatorOptions) {\n if (!id) {\n throw new Error('Invalid column id');\n }\n const ret = new Evaluator(\n type\n , id\n , id\n , null\n , raw => raw[id]\n , {\n ...opts,\n isColumnOf: on,\n });\n return ret;\n}\n\nfunction* buildCols(this: void, base: _ISelection, columns: (SelectedColumn | CustomAlias)[]): Iterable<CustomAlias> {\n for (const s of columns) {\n if ('val' in s) {\n if (s.val.origin !== base) {\n throw new Error('Corrupted selection');\n }\n yield s;\n continue;\n }\n if (s.expr.type === 'ref' && s.expr.name === '*') {\n // handle select \"*\"\n if (s.alias) {\n throw new QueryError('Cannot alias *');\n }\n let of: _IAlias = base;\n const alias = s.expr.table;\n if (alias) {\n // handle select \"x.*\"\n const sub = base.selectAlias(alias.name);\n if (!sub) {\n throw new QueryError(`Unknown alias \"${alias.name}\"`);\n }\n of = sub;\n }\n\n for (const val of of.listColumns()) {\n yield { val };\n }\n\n } else {\n const val = buildValue(s.expr);\n yield { val, as: s.alias?.name, expr: s.expr };\n }\n }\n}\n\nexport interface CustomAlias {\n val: IValue;\n as?: string;\n expr?: Expr\n}\n\nexport class Selection extends TransformBase implements _ISelection {\n\n private columnIds: string[] = [];\n private columnsOrigin: IValue[] = [];\n private columnMapping = new Map<IValue, IValue>();\n private indexCache = new Map<IValue, _IIndex>();\n private columnsById = new Map<string, IValue[]>();\n private symbol = Symbol();\n\n readonly columns: IValue[] = [];\n\n isAggregation(): this is _IAggregation {\n return false;\n }\n\n\n constructor(base: _ISelection, _columns: (SelectedColumn | CustomAlias)[]) {\n super(base);\n\n // build non-conflicting column ids based on existing ones\n const columns = withSelection(base, () => [...buildCols(base, _columns)]);\n this.columnIds = columns.map(x => x.as ?? x.val.id!);\n\n // build column ids\n let anonymousBases = new Map<string, number>();\n for (let i = 0; i < this.columnIds.length; i++) {\n if (!this.columnIds[i]) {\n let id = suggestColumnName(columns[i].expr) ?? 'column';\n\n // check no collision with an existing column\n let cnt = anonymousBases.get(id);\n this.columnIds[i] = id + (cnt ? cnt : '');\n anonymousBases.set(id, (cnt ?? 0) + 1);\n }\n }\n\n\n // build columns to select\n for (let i = 0; i < columns.length; i++) {\n this.refColumn(columns[i].val, this.columnIds[i]);\n }\n\n\n // ONLY ONCE COLUMNS HAVE BEEN REFERENCED BY ID,\n // rename ids for columns which have the same id\n // this allows yielding ambiguous columns data\n const has = new Map<string, number>();\n for (let i = 0; i < columns.length; i++) {\n const orig = this.columnIds[i];\n const oi = has.get(orig);\n if (typeof oi !== 'number') {\n has.set(orig, i);\n continue;\n }\n let ret: string = orig;\n let k = 0;\n do {\n ret = orig + (++k);\n } while (this.columnIds.includes(ret));\n this.columnIds[i] = ret;\n has.set(ret, i);\n }\n }\n\n private refColumn(fromCol: IValue, alias: string) {\n const col = columnEvaluator(this, alias, fromCol.type);\n this.columns.push(col);\n this.columnMapping.set(col, fromCol);\n this.columnsOrigin.push(fromCol);\n if (!col.id) {\n return;\n }\n let ci = this.columnsById.get(col.id);\n if (!ci) {\n this.columnsById.set(col.id, ci = []);\n }\n ci.push(col);\n }\n\n\n stats(t: _Transaction): Stats | null {\n return this.base.stats(t);\n }\n\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const item of this.base.enumerate(t)) {\n yield this.build(item, t);\n }\n }\n\n build(item: any, t: _Transaction): Row {\n const ret: any = {};\n setId(ret, getId(item));\n ret[this.symbol] = this.symbol;\n for (let i = 0; i < this.columns.length; i++) {\n const col = this.columnsOrigin[i];\n ret[this.columnIds[i]] = col.get(item, t) ?? null;\n }\n return ret as any;\n }\n\n hasItem(value: Row, t: _Transaction): boolean {\n return (value as any)[this.symbol] === this.symbol;\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n const ret = colByName(this.columnsById, column, true);\n if (!ret?.length) {\n if (nullIfNotFound) {\n return null;\n }\n throw new ColumnNotFound(colToStr(column));\n }\n if (ret.length !== 1) {\n throw new AmbiguousColumn(colToStr(column));\n }\n return ret[0];\n }\n\n getIndex(val: IValue): _IIndex | nil {\n if (this.indexCache.has(val)) {\n return this.indexCache.get(val);\n }\n const mapped = this.columnMapping.get(val);\n const originIndex = this.base.getIndex(mapped!);\n if (!originIndex) {\n return null;\n }\n const ret = new SelectionIndex(this, originIndex);\n this.indexCache.set(val, ret);\n return ret;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'map',\n of: this.base.explain(e),\n select: this.columnIds.map((x, i) => ({\n what: this.columnsOrigin[i].explain(e),\n as: x\n })),\n };\n }\n}\n\n\nexport class SelectionIndex implements _IIndex {\n constructor(readonly owner: Selection, private base: _IIndex) {\n }\n\n stats(t: _Transaction, key?: IndexKey) {\n return this.base.stats(t, key);\n }\n\n iterateKeys(t: _Transaction) {\n return this.base.iterateKeys(t);\n }\n\n get expressions(): IndexExpression[] {\n return this.base.expressions;\n }\n\n entropy(op: IndexOp): number {\n // same as source\n return this.base.entropy(op);\n }\n\n eqFirst(rawKey: IndexKey, t: _Transaction) {\n return this.base.eqFirst(rawKey, t);\n }\n\n *enumerate(op: IndexOp): Iterable<Row> {\n for (const i of this.base.enumerate(op)) {\n yield this.owner.build(i, op.t);\n }\n }\n\n\n explain(e: _Explainer): _IndexExplanation {\n return {\n _: 'indexMap',\n of: this.base.explain(e),\n }\n }\n}","import { _IStatementExecutor, _Transaction, StatementResult, _IStatement, _ISelection, NotSupported, QueryError, asSelectable, nil, OnStatementExecuted, _ISchema } from '../interfaces-private';\nimport { WithStatementBinding, SelectStatement, SelectFromUnion, WithStatement, ValuesStatement, SelectFromStatement, QNameMapped, Name, SelectedColumn, Expr, OrderByStatement } from 'pgsql-ast-parser';\nimport { Deletion } from './records-mutations/deletion';\nimport { Update } from './records-mutations/update';\nimport { Insert } from './records-mutations/insert';\nimport { ValuesTable } from '../schema/values-table';\nimport { ignore, suggestColumnName, notNil, modifyIfNecessary } from '../utils';\nimport { JoinSelection } from '../transforms/join';\nimport { MutationDataSourceBase } from './records-mutations/mutation-base';\nimport { locOf } from './exec-utils';\nimport { buildCtx, withBindingScope } from '../parser/context';\nimport { buildValue } from '../parser/expression-builder';\nimport { ArrayType } from '../datatypes';\nimport { RecordType } from '../datatypes/t-record';\nimport { FunctionCallTable } from '../schema/function-call-table';\n\n\n\n\nexport function buildValues(p: ValuesStatement, acceptDefault?: boolean): _ISelection {\n const ret = new ValuesTable('', p.values, null, acceptDefault);\n return ret.selection;\n}\n\n\nfunction buildWithable(p: WithStatementBinding): _ISelection {\n switch (p.type) {\n case 'select':\n case 'union':\n case 'union all':\n case 'with':\n case 'with recursive':\n case 'values':\n return buildSelect(p);\n case 'delete':\n return new Deletion(p);\n case 'update':\n return new Update(p);\n case 'insert':\n return new Insert(p);\n default:\n throw NotSupported.never(p);\n }\n}\n\nexport function buildSelect(p: SelectStatement): _ISelection {\n switch (p.type) {\n case 'union':\n case 'union all':\n return buildUnion(p);\n case 'with':\n return buildWith(p, false);\n case 'select':\n return buildRawSelect(p);\n case 'values':\n return buildValues(p);\n case 'with recursive':\n throw new NotSupported('recursirve with statements not implemented by pg-mem');\n default:\n throw NotSupported.never(p);\n }\n}\n\n\nfunction buildUnion(p: SelectFromUnion): _ISelection {\n const left = buildSelect(p.left);\n const right = buildSelect(p.right);\n const ret = left.union(right);\n if (p.type === 'union all') {\n return ret;\n }\n return ret.distinct();\n}\n\nexport function buildWith(p: WithStatement, topLevel: boolean): _ISelection {\n return withBindingScope(() => {\n const { setTempBinding } = buildCtx();\n // declare temp bindings\n for (const { alias, statement } of p.bind) {\n const prepared = (topLevel ? buildWithable(statement) : buildSelect(checkReadonlyWithable(statement)))\n .setAlias(alias.name);\n setTempBinding(alias.name, prepared);\n }\n return buildSelect(checkReadonlyWithable(p.in));\n })\n}\n\n\nfunction buildRawSelectSubject(p: SelectFromStatement): _ISelection | nil {\n // compute data source\n let sel: _ISelection | undefined = undefined;\n for (const from of p.from ?? []) {\n // find what to select\n let newT: _ISelection;\n switch (from.type) {\n case 'table':\n newT = getSelectable(from.name);\n break;\n case 'statement':\n newT = mapColumns(from.alias\n , buildSelect(from.statement)\n , from.columnNames\n , true)\n .setAlias(from.alias);\n break;\n case 'call':\n const fnName = from.alias?.name ?? from.function?.name;\n const fromValue = buildValue(from);\n if (ArrayType.matches(fromValue.type) && RecordType.matches(fromValue.type.of)) {\n // if the function returns an array of records (= \"a table\"), then lets use it as a table\n const cols = fromValue.type.of.columns;\n newT = new FunctionCallTable(cols, fromValue);\n } else {\n // if the function returns a single value, then lets transform this into a table\n // nb: the function call will be re-built in here, but its OK (coz' of build cache)\n newT = new ValuesTable(fnName, [[from]], [fnName])\n .setAlias(from.alias?.name ?? suggestColumnName(from) ?? '');\n }\n break;\n default:\n throw NotSupported.never(from);\n }\n\n if (!sel) {\n // first table to be selected\n sel = newT;\n continue;\n }\n\n switch (from.join?.type) {\n case 'INNER JOIN':\n sel = new JoinSelection(sel, newT, from.join!, true);\n break;\n case 'LEFT JOIN':\n sel = new JoinSelection(sel, newT, from.join!, false);\n break;\n case 'RIGHT JOIN':\n sel = new JoinSelection(newT, sel, from.join!, false);\n break;\n case null:\n case undefined:\n // cross join (equivalent to INNER JOIN ON TRUE)\n sel = new JoinSelection(sel, newT, {\n type: 'INNER JOIN',\n on: { type: 'boolean', value: true }\n }, true);\n break;\n default:\n throw new NotSupported('Join type not supported ' + (from.join?.type ?? '<no join specified>'));\n }\n }\n return sel;\n}\n\n\nfunction buildRawSelect(p: SelectFromStatement): _ISelection {\n const distinct = !p.distinct || p.distinct === 'all'\n ? null\n : p.distinct;\n\n // ignore \"for update\" clause (not useful in non-concurrent environements)\n ignore(p.for);\n\n let sel = buildRawSelectSubject(p);\n\n\n // filter & select\n sel = sel ?? buildCtx().schema.dualTable.selection;\n sel = sel.filter(p.where);\n\n // postgres helps users: you can use group-by & order-by on aliases.\n // ... but you cant use aliases in a computation (only in simple order by statements)\n // this hack reproduces this behaviour\n const aliases = new Map(notNil(p.columns?.filter(c => !!c.alias?.name)).map(c => [c.alias!.name, c.expr]));\n const orderBy = modifyIfNecessary(p.orderBy ?? [], o => {\n const by = o.by.type === 'ref' && !o.by.table && aliases.get(o.by.name);\n return by ? { ...o, by } : null;\n });\n\n\n if (p.groupBy) {\n const groupBy = modifyIfNecessary(p.groupBy ?? [], o => {\n const group = o.type === 'ref' && !o.table && !sel?.getColumn(o.name, true) && aliases.get(o.name);\n return group || null;\n });\n sel = sel.groupBy(groupBy);\n }\n\n // order selection\n sel = sel.orderBy(orderBy);\n\n // when not grouping by, distinct is handled before\n // selection => can distinct on non selected values\n if (!p.groupBy && Array.isArray(p.distinct)) {\n sel = sel.distinct(p.distinct);\n }\n\n // select columns\n sel = sel.select(p.columns!);\n\n\n // when grouping by, distinct is handled after selection\n // => can distinct on key, or selected\n if (p.groupBy && Array.isArray(p.distinct)) {\n sel = sel.distinct(p.distinct);\n }\n\n // handle 'distinct' on result set\n if (distinct === 'distinct') {\n sel = sel.distinct();\n }\n\n if (p.limit) {\n sel = sel.limit(p.limit);\n }\n return sel;\n}\n\nfunction getSelectable(name: QNameMapped): _ISelection {\n const { schema, getTempBinding } = buildCtx();\n const temp = !name.schema\n && getTempBinding(name.name);\n\n let ret = temp || asSelectable(schema.getObject(name)).selection;\n ret = mapColumns(name.name, ret, name.columnNames, false);\n\n if (name.alias) {\n ret = ret.setAlias(name.alias);\n }\n return ret;\n}\n\nfunction mapColumns(tableName: string, sel: _ISelection, columnNames: Name[] | nil, appendNonMapped: boolean) {\n if (!columnNames?.length) {\n return sel;\n }\n if (columnNames.length > sel.columns.length) {\n throw new QueryError(`table \"${tableName}\" has ${sel.columns.length} columns available but ${columnNames.length} columns specified`, '42P10')\n }\n\n const mapped = new Set<string>(columnNames.map(x => x.name));\n const cols = sel.columns.map<SelectedColumn>((col, i) => ({\n expr: {\n type: 'ref',\n name: col.id!,\n },\n // when realiasing table columns, columns which have not been mapped\n // must not be removed\n // see ut \"can map column names\"\n alias: columnNames[i]\n ?? {\n name: mapped.has(sel.columns[i].id!)\n ? `${sel.columns[i].id!}1`\n : sel.columns[i].id!,\n },\n }));\n\n return sel.select(\n cols\n )\n}\n\n\nexport class SelectExec implements _IStatementExecutor {\n readonly selection: _ISelection;\n\n constructor(private statement: _IStatement, private p: WithStatementBinding) {\n // a bit of a special case for top level withs.\n this.selection = p.type === 'with' ? buildWith(p, true) : buildWithable(p);\n }\n\n get schema() {\n return this.statement.schema;\n }\n\n\n\n execute(t: _Transaction): StatementResult {\n const rows = [...this.selection.enumerate(t)];\n let unnamedFields = 0;\n const nextDefaultFieldName = () => {\n const unnamedField = `column${unnamedFields || ''}`;\n unnamedFields += 1;\n return unnamedField;\n }\n return {\n result: {\n rows,\n rowCount: t.getTransient(MutationDataSourceBase.affectedRows) ?? rows.length,\n command: this.p.type.toUpperCase(),\n fields: this.selection.columns.map(\n c => ({\n name: c.id ?? nextDefaultFieldName(),\n type: c.type.primary,\n typeId: c.type.reg.typeId,\n [TYPE_SYMBOL]: c.type,\n })\n ),\n location: locOf(this.p),\n },\n state: t,\n };\n }\n}\n\nexport const TYPE_SYMBOL = Symbol('type');\n\n\nfunction checkReadonlyWithable(st: WithStatementBinding) {\n switch (st.type) {\n case 'delete':\n case 'insert':\n case 'update':\n throw new NotSupported(`\"WITH\" nested statement with query type '${st.type}'`);\n }\n return st;\n}\n","module.exports = require(\"pgsql-ast-parser\");","import { IValue, _IIndex, _ISelection, _IType, _Transaction, _Explainer, _ExprExplanation, _ISchema, Parameter } from './interfaces-private';\nimport { DataType, QueryError, CastError, nil, ISchema, IType, ArgDefDetails } from './interfaces';\nimport hash from 'object-hash';\nimport { Types, ArrayType, isNumeric, reconciliateTypes } from './datatypes';\nimport { buildCall } from './parser/function-call';\nimport { nullIsh, executionCtx } from './utils';\nimport { QName } from 'pgsql-ast-parser';\n\nexport interface EvaluatorOptions {\n isAny?: boolean;\n isColumnOf?: _ISelection;\n /** its type will act as if it is a constant literal (for parameters type resolution) */\n actAsConstantLiteral?: boolean;\n forceNotConstant?: boolean;\n onCast?: (to: _IType) => void;\n unpure?: boolean;\n}\nexport class Evaluator<T = any> implements IValue<T> {\n\n readonly isConstantLiteral: boolean;\n readonly usedColumns = new Set<IValue>();\n readonly forceNotConstant?: boolean;\n\n get index(): _IIndex | nil {\n return this.origin?.getIndex(this);\n }\n\n get isConstant(): boolean {\n return !this.usedColumns.size && !this.forceNotConstant || !!this.opts?.actAsConstantLiteral;\n }\n\n get isConstantReal(): boolean {\n return typeof this.val !== 'function';\n }\n\n origin: _ISelection | nil;\n\n get isAny(): boolean {\n return this.opts?.isAny ?? false;\n }\n\n constructor(readonly type: _IType<T>\n , readonly id: string | nil\n , readonly hash: string\n , dependencies: IValue | IValue[] | nil\n , public val: nil | Object | number | string | Date | ((raw: any, transaction: _Transaction | nil) => any)\n , private opts?: EvaluatorOptions) {\n this.isConstantLiteral = typeof val !== 'function' || !!opts?.actAsConstantLiteral;\n if (opts?.forceNotConstant) {\n this.forceNotConstant = true;\n }\n\n // fetch columns to depend on\n let depArray: IValue[] | nil = dependencies && !Array.isArray(dependencies)\n ? [dependencies]\n : dependencies;\n let hasNotConstant = false;\n if (depArray) {\n this.usedColumns = new Set();\n for (const d of depArray) {\n if (d.origin) {\n if (this.origin && d.origin && this.origin !== d.origin) {\n throw new Error('You cannot evaluate an expression which is coming from multiple origins');\n }\n this.origin = d.origin;\n }\n if (!d.isConstant) {\n hasNotConstant = true;\n }\n for (const u of d.usedColumns) {\n this.usedColumns.add(u);\n }\n }\n }\n\n if (opts?.isColumnOf) {\n this.usedColumns.add(this);\n this.origin = opts.isColumnOf;\n delete opts.isColumnOf;\n }\n if (hasNotConstant && !this.usedColumns.size) {\n this.forceNotConstant = true;\n }\n\n if (!this.usedColumns.size // no used columns\n && !this.origin\n && !this.opts?.unpure\n && !this.forceNotConstant\n && !depArray?.some(x => !x.isConstantReal) // all real constant dependencies\n ) {\n // no dependency => this is a real constant => evaluate it.\n if (typeof this.val === 'function') {\n this.val = this.val(null, null);\n }\n }\n }\n\n setType(type: _IType) {\n if (this.type === type) {\n return this;\n }\n return new Evaluator<T>(type\n , this.id\n , this.hash\n , this\n , this.val\n , this.opts\n );\n }\n\n\n\n setConversion(converter: (val: T, t: _Transaction | nil) => any\n , hashConv: (hash: string) => any) {\n return new Evaluator<T>(this.type\n , this.id\n , hash(hashConv(this.hash))\n , this\n , (raw, t) => {\n let got = this.get(raw, t);\n if (nullIsh(got)) {\n return null;\n }\n if (!this.isAny) {\n return converter(got, t);\n }\n if (!Array.isArray(got)) {\n throw new QueryError('Unexpected use of ANY()');\n }\n return (got as any[]).map(x => converter(x, t));\n }\n , this.opts\n );\n }\n\n setOrigin(origin: _ISelection): IValue {\n const ret = this.clone();\n ret.origin = origin;\n return ret;\n }\n\n clone(): Evaluator<T> {\n return new Evaluator<T>(\n this.type\n , this.id\n , this.hash\n , this\n , this.val\n , this.opts\n );\n }\n\n map<TNew>(mapper: (val: T) => TNew, newType?: _IType<TNew>): IValue<TNew> {\n if (this.isAny) {\n throw new QueryError('Unexpected use of ANY()');\n }\n const ret = new Evaluator<TNew>(\n (newType ?? this.type) as _IType\n , this.id\n , this.hash\n , this\n , (raw, t) => {\n const got = this.get(raw, t);\n if (nullIsh(got)) {\n return null;\n }\n return mapper(got);\n }\n , this.opts\n );\n ret.origin = this.origin;\n return ret;\n }\n\n setWrapper<TNew>(newOrigin: _ISelection, unwrap: (val: T) => TNew, newType?: _IType<TNew>): IValue<TNew> {\n if (this.isAny) {\n throw new QueryError('Unexpected use of ANY()');\n }\n const ret = new Evaluator<TNew>(\n (newType ?? this.type) as _IType\n , this.id\n , this.hash\n , this\n , (raw, t) => {\n const got = unwrap(raw)\n if (nullIsh(got)) {\n return null;\n }\n return this.get(got, t);\n }\n , this.opts\n );\n ret.origin = newOrigin;\n return ret;\n }\n\n setId(newId: string): IValue {\n if (this.id === newId) {\n return this;\n }\n return new Evaluator<T>(\n this.type\n , newId\n , this.hash\n , this\n , this.val\n , this.opts\n );\n }\n\n get(): T;\n get(raw: any, t: _Transaction | nil): T;\n get(raw?: any, t?: _Transaction): T {\n if ((nullIsh(raw) || !t) && !this.isConstant) {\n throw new Error('Cannot be evaluated as constant');\n }\n if (typeof this.val !== 'function') {\n return this.val as any;\n }\n return this.val(raw, t)\n }\n\n canCast(to: _IType<T>): boolean {\n return !!this.type.canCast(to);\n }\n\n cast<T = any>(to: _IType<T>): IValue {\n this.opts?.onCast?.(to);\n return this.type.cast(this, to);\n }\n\n convertImplicit<T = any>(to: _IType<T>): IValue {\n this.opts?.onCast?.(to);\n return this.type.convertImplicit(this, to);\n }\n\n\n explain(e: _Explainer): _ExprExplanation {\n if (!this.origin) {\n return {\n constant: true,\n }\n }\n return {\n on: e.idFor(this.origin),\n col: this.id ?? '<complex expression>',\n };\n }\n}\n\n// export class ArrayEvaluator<T> implements IValue {\n\n// constructor(\n// readonly type: _IType<T>\n// , readonly id: string\n// , readonly sql: string\n// , readonly hash: string\n// , readonly selection: _ISelection\n// , public val: T | ((raw: any) => T)) {\n// }\n\n// get index() {\n// return this.selection?.getIndex(this);\n// }\n\n// get isConstant(): boolean {\n// return typeof this.val !== 'function';\n// }\n\n// get(raw: any): T {\n// if (typeof this.val !== 'function') {\n// return this.val;\n// }\n// return (this.val as ((raw: any) => T))(raw);\n// }\n\n// asConstant(perform = true) {\n// if (!perform || typeof this.val !== 'function') {\n// return this;\n// }\n// return new Evaluator(this.type\n// , this.id\n// , this.sql\n// , this.hash\n// , this.selection\n// , this.get(null));\n// }\n\n\n// setId(newId: string): IValue {\n// if (this.id === newId) {\n// return this;\n// }\n// return new Evaluator<T>(\n// this.type\n// , newId\n// , this.sql\n// , this.hash\n// , this.selection\n// , this.val\n// );\n// }\n\n// canCast(to: DataType | _IType<T>): boolean {\n// return this.type.canCast(to);\n// }\n\n// cast<T = any>(to: DataType | _IType<T>): IValue {\n// return this.type.cast(this, to);\n// }\n// }\n\n\nexport const Value = {\n null(ofType?: _IType): IValue {\n return new Evaluator(ofType ?? Types.null, null, 'null', null, null, undefined);\n },\n text(value: string, length: number | nil = null): IValue {\n return new Evaluator(\n Types.text(length)\n , null\n , value\n , null\n , value);\n },\n number(value: number, type = Types.float): IValue {\n return new Evaluator(\n type\n , null\n , value.toString(10)\n , null\n , value);\n },\n function(value: string | QName, args: IValue[]): IValue {\n return buildCall(value, args);\n },\n bool(value: boolean): IValue {\n const str = value ? 'true' : 'false';\n return new Evaluator(\n Types.bool\n , null\n , str\n , null\n , value);\n },\n /** @deprecated Use with care */\n constant(_type: _IType, value: any): IValue {\n const type = nullIsh(value)\n ? Types.null\n : _type;\n return new Evaluator(\n type\n , null\n , (null as any)\n , null\n , value);\n },\n /** @deprecated Use with care */\n converter(type: _IType, to: _IType): (val: any, t: _Transaction | nil) => any {\n let last: any = null;\n const evaluator = new Evaluator(\n type\n , null\n , (null as any)\n , null\n , () => last\n , { forceNotConstant: true })\n .cast(to);\n return (val: any, t) => {\n if (nullIsh(val)) {\n return null;\n }\n last = val;\n const ret = evaluator.get(val, t);\n last = null;\n return ret;\n };\n },\n in(value: IValue, array: IValue, inclusive: boolean): IValue {\n if (!value) {\n throw new Error('Argument null');\n }\n if (array.type.primary !== DataType.list && array.type) {\n array = Value.list([array]);\n }\n const of = (array.type as ArrayType).of;\n\n // cast both sides (see #castArrayIn in uts)\n const type = reconciliateTypes([value, Value.null(of)])\n value = value.cast(type);\n array = array.cast(type.asArray());\n\n return new Evaluator(\n Types.bool\n , null\n , hash({ val: value.hash, in: array.hash })\n , [value, array]\n , (raw, t) => {\n const rawValue = value.get(raw, t);\n const rawArray = array.get(raw, t);\n if (!Array.isArray(rawArray)) {\n return false;\n }\n const has = rawArray.some(x => of.equals(rawValue, x));\n return inclusive ? has : !has;\n });\n },\n isNull(leftValue: IValue, expectNull: boolean): IValue {\n return new Evaluator(\n Types.bool\n , null\n , hash({ isNull: leftValue.hash, expectNull })\n , leftValue\n , (raw, t) => {\n const left = leftValue.get(raw, t);\n // check that result is null (will never return NULL)\n const ret = nullIsh(left);\n return expectNull ? ret : !ret;\n })\n },\n isTrue(leftValue: IValue, expectTrue: boolean): IValue {\n leftValue = leftValue.cast(Types.bool);\n return new Evaluator(\n Types.bool\n , null\n , hash({ isTrue: leftValue.hash, expectTrue })\n , leftValue\n , expectTrue ? ((raw, t) => {\n const left = leftValue.get(raw, t);\n return left === true; // never returns null\n }) : ((raw, t) => {\n const left = leftValue.get(raw, t);\n return !(left === true); // never returns null\n }));\n },\n isFalse(leftValue: IValue, expectFalse: boolean): IValue {\n leftValue = leftValue.cast(Types.bool);\n return new Evaluator(\n Types.bool\n , null\n , hash({ isFalse: leftValue.hash, expectFalse })\n , leftValue\n , expectFalse ? ((raw, t) => {\n const left = leftValue.get(raw, t);\n return left === false; // never returns null\n }) : ((raw, t) => {\n const left = leftValue.get(raw, t);\n return !(left === false); // never returns null\n }));\n },\n negate(value: IValue): IValue {\n if (value.type === Types.bool) {\n return (value as Evaluator)\n .setConversion(x => !x, x => ({ not: x }));\n }\n if (!isNumeric(value.type)) {\n throw new QueryError('Can only apply \"-\" unary operator to numeric types');\n }\n return (value as Evaluator)\n .setConversion(x => -x, x => ({ neg: x }));\n },\n array(values: IValue[]): IValue {\n return arrayOrList(values, false);\n },\n list(values: IValue[]): IValue {\n return arrayOrList(values, true);\n }\n} as const;\n\n\nfunction arrayOrList(values: IValue[], list: boolean) {\n const type = values.reduce((t, v) => {\n if (v.canCast(t)) {\n return t;\n }\n if (!t.canCast(v.type)) {\n throw new CastError(t.primary, v.type.primary);\n }\n return v.type;\n }, Types.null);\n // const sel = values.find(x => !!x.selection)?.selection;\n const converted = values.map(x => x.cast(type));\n return new Evaluator(\n list ? type.asList() : type.asArray()\n , null\n , hash(converted.map(x => x.hash))\n , converted\n , (raw, t) => {\n const arr = values.map(x => x.get(raw, t));\n return arr;\n });\n}\n\n\nexport function buildParameterList(statementName: string | null, args: ArgDefDetails[]) {\n return args.map<Parameter>(({ type, name }, i) => {\n const value = new Evaluator(\n type as _IType\n , name\n , hash({ param: name })\n , null\n , () => {\n const { parametersValues } = executionCtx();\n if (!parametersValues || parametersValues.length <= i) {\n throw new QueryError(`bind message supplies ${parametersValues?.length ?? 0} parameters, but prepared statement \"${statementName}\" requires ${args.length}`, '08P01');\n }\n return parametersValues[i];\n }, {\n forceNotConstant: true,\n });\n return { value, index: i };\n })\n}","import { IValue, _IType } from '../interfaces-private';\nimport { DataType, CastError, IType, QueryError, nil } from '../interfaces';\nimport { nullIsh } from '../utils';\nimport { Evaluator, Value } from '../evaluator';\nimport { parseArrayLiteral } from 'pgsql-ast-parser';\nimport { parseGeometricLiteral } from 'pgsql-ast-parser';\nimport { bufCompare, bufFromString, bufToString, TBuffer } from '../misc/buffer-node';\nimport { TypeBase } from './datatype-base';\nimport { BoxType, CircleType, LineType, LsegType, PathType, PointType, PolygonType } from './datatypes-geometric';\nimport { IntervalType } from './t-interval';\nimport { TimeType } from './t-time';\nimport { TimestampType } from './t-timestamp';\nimport { JSONBType } from './t-jsonb';\nimport { RegTypeImpl } from './t-regtype';\nimport { RegClassImpl } from './t-regclass';\nimport { RecordType } from './t-record';\nimport { INetType } from './t-inet';\nimport { buildCtx } from '../parser/context';\n\n\nclass UUIDtype extends TypeBase<string> {\n\n\n get primary(): DataType {\n return DataType.uuid;\n }\n\n doCanCast(to: _IType) {\n switch (to.primary) {\n case DataType.text:\n return true;\n }\n return null;\n }\n\n doCast(value: Evaluator, to: _IType) {\n switch (to.primary) {\n case DataType.text:\n return value;\n }\n throw new Error('Unexpected cast error');\n }\n}\n\n\n\nclass NullType extends TypeBase<null> {\n\n get primary(): DataType {\n return DataType.null;\n }\n\n doCast(value: Evaluator<any>, to: _IType): Evaluator<any> {\n return new Evaluator(to, null, 'null', null, null);\n }\n\n doCanCast(to: _IType): boolean {\n return true;\n }\n\n doCanConvertImplicit() {\n return true;\n }\n\n doEquals(a: any, b: any): boolean {\n return false;\n }\n\n doGt(a: any, b: any): boolean {\n return false;\n }\n\n doLt(a: any, b: any): boolean {\n return false;\n }\n\n doPrefer(type: _IType) {\n return type; // always prefer notnull types\n }\n}\n\nexport class DefaultType extends NullType {\n}\n\nexport const integers: ReadonlySet<DataType> = new Set([DataType.integer, DataType.bigint]);\nexport const floats: ReadonlySet<DataType> = new Set([DataType.decimal, DataType.float]);\nexport const numbers: ReadonlySet<DataType> = new Set([...integers, ...floats]);\nexport const numberPriorities = [DataType.integer, DataType.bigint, DataType.decimal, DataType.float]\n .reduce<Record<DataType, number>>((a, x, i) => ({\n ...a,\n [x]: i\n }), {} as Record<DataType, number>);\n\nexport function isNumeric(t: DataType | IType) {\n const type = typeof t === 'string' ? t : t.primary;\n return numbers.has(type);\n}\nexport function isInteger(t: DataType | IType) {\n const type = typeof t === 'string' ? t : t.primary;\n return integers.has(type);\n}\n\nclass NumberType extends TypeBase<number> {\n\n constructor(readonly primary: DataType, typeId: number) {\n super(typeId);\n }\n\n doCanConvertImplicit(to: _IType) {\n switch (to.primary) {\n case DataType.integer:\n case DataType.bigint:\n case DataType.float:\n case DataType.decimal:\n case DataType.regtype:\n case DataType.regclass:\n return true;\n default:\n return false;\n }\n }\n\n doPrefer(type: _IType): _IType | null {\n switch (type.primary) {\n case DataType.integer:\n case DataType.bigint:\n return this;\n case DataType.float:\n case DataType.decimal:\n return type;\n }\n return null;\n }\n\n doCanCast(to: _IType) {\n switch (to.primary) {\n case DataType.integer:\n case DataType.bigint:\n case DataType.float:\n case DataType.decimal:\n case DataType.regtype:\n case DataType.regclass:\n return true;\n case DataType.text:\n return true;\n default:\n return false;\n }\n }\n doCast(value: Evaluator<any>, to: _IType): Evaluator<any> {\n if (!integers.has(value.type.primary) && integers.has(to.primary)) {\n return new Evaluator(\n to\n , value.id\n , value.hash\n , value\n , (raw, t) => {\n const got = value.get(raw, t);\n return typeof got === 'number'\n ? Math.round(got)\n : got;\n }\n );\n }\n const { schema } = buildCtx();\n switch (to.primary) {\n case DataType.regtype:\n return value\n .setType(Types.regtype)\n .setConversion((int: number) => {\n const got = schema.getType(int, { nullIfNotFound: true });\n if (!got) {\n throw new CastError(DataType.integer, DataType.regtype);\n }\n return got.name;\n }\n , intToRegType => ({ intToRegType }));\n case DataType.regclass:\n return value\n .setType(Types.regclass)\n .setConversion((int: number) => {\n // === int -> regclass\n const obj = schema.getObjectByRegOrName(int, { nullIfNotFound: true });\n return obj?.reg.classId ?? int;\n }\n , intToRegClass => ({ intToRegClass }));\n case DataType.text:\n return value\n .setType(to)\n .setConversion((int: number) => int.toString()\n , toTxt => ({ toTxt }));\n }\n return value.setType(to);\n }\n}\n\n\n\nclass ByteArrayType extends TypeBase<TBuffer> {\n\n get primary(): DataType {\n return DataType.bytea;\n }\n\n\n doCanCast(to: _IType) {\n switch (to.primary) {\n case DataType.text:\n return true;\n }\n return null;\n }\n\n doCast(value: Evaluator, to: _IType) {\n switch (to.primary) {\n case DataType.text:\n return value\n .setConversion(raw => bufToString(raw)\n , toStr => ({ toStr }));\n }\n throw new Error('Unexpected cast error');\n }\n\n doEquals(a: TBuffer, b: TBuffer): boolean {\n return bufCompare(a, b) === 0;\n }\n\n doGt(a: TBuffer, b: TBuffer): boolean {\n return bufCompare(a, b) > 0;\n }\n\n doLt(a: TBuffer, b: TBuffer): boolean {\n return bufCompare(a, b) < 0;\n }\n}\n\n\nclass TextType extends TypeBase<string> {\n\n get name(): string {\n if (this.citext) {\n return 'citext';\n }\n return this.len ? 'character varying' : 'text';\n }\n\n get primary(): DataType {\n return this.citext\n ? DataType.citext\n : DataType.text;\n }\n\n constructor(readonly len: number | null, private citext?: boolean) {\n super(25);\n }\n\n doPrefer(to: _IType, stricterType?: boolean) {\n if (to instanceof TextType) {\n if (stricterType) {\n // returns the stricter type\n if (!to.len) {\n return to;\n }\n if (!this.len) {\n return this;\n }\n return to.len > this.len ? to : this;\n } else {\n // returns the broader type\n if (!to.len) {\n return to;\n }\n if (!this.len) {\n return this;\n }\n return to.len < this.len ? to : this;\n }\n }\n if (this.canCast(to)) {\n return to;\n }\n return null;\n }\n\n doCanConvertImplicit(to: _IType): boolean {\n // text is implicitely convertible to dates\n switch (to.primary) {\n case DataType.text:\n case DataType.bool:\n case DataType.uuid:\n case DataType.bytea:\n return true;\n }\n return false;\n }\n\n doCanCast(to: _IType): boolean | nil {\n switch (to.primary) {\n case DataType.text:\n case DataType.citext:\n return true;\n case DataType.text:\n case DataType.uuid:\n return true;\n case DataType.bool:\n return true;\n case DataType.array:\n return this.canCast((to as ArrayType).of);\n case DataType.bytea:\n return true;\n }\n if (numbers.has(to.primary)) {\n return true;\n }\n if (isGeometric(to.primary)) {\n return true;\n }\n return undefined;\n }\n\n doCast(value: Evaluator<string>, to: _IType) {\n switch (to.primary) {\n case DataType.citext:\n return value.setType(to);\n case DataType.bool:\n return value\n .setConversion(rawStr => {\n if (nullIsh(rawStr)) {\n return null;\n }\n if (rawStr === '0') {\n return false;\n } else if (rawStr === '1') {\n return true;\n }\n const str = (rawStr as string).toLowerCase();\n if ('true'.startsWith(str)) {\n return true;\n } else if ('false'.startsWith(str)) {\n return false;\n }\n if ('yes'.startsWith(str)) {\n return true;\n } else if ('no'.startsWith(str)) {\n return false;\n }\n throw new CastError(DataType.text, DataType.bool, 'string ' + rawStr);\n }\n , toBool => ({ toBool }));\n case DataType.uuid:\n return value\n .setConversion((_rawStr: string) => {\n let rawStr = _rawStr;\n if (nullIsh(rawStr)) {\n return null;\n }\n // check schema\n if (rawStr[0] === '{') {\n if (rawStr[rawStr.length - 1] !== '}') {\n throw new CastError(DataType.text, DataType.uuid, 'string: ' + JSON.stringify(_rawStr));\n }\n rawStr = rawStr.substr(1, rawStr.length - 2);\n }\n rawStr = rawStr.toLowerCase();\n const [full, a, b, c, d, e] = /^([0-9a-f]{8})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{12})$/.exec(rawStr) ?? [];\n if (!full) {\n throw new CastError(DataType.text, DataType.uuid, 'string: ' + JSON.stringify(_rawStr));\n }\n return `${a}-${b}-${c}-${d}-${e}`;\n }\n , toUuid => ({ toUuid }));\n case DataType.text:\n const fromStr = to as TextType;\n const toStr = to as TextType;\n if (toStr.len === null || (fromStr.len ?? -1) < toStr.len) {\n // no need to truncate\n return value;\n }\n return value\n .setConversion(str => {\n if (str && str.length > toStr.len!) {\n throw new QueryError(`value too long for type character varying(${toStr.len})`);\n }\n return str;\n }\n , truncate => ({ truncate, len: toStr.len }));\n\n case DataType.array:\n return value\n .setType(to)\n .setConversion((str: string) => {\n const array = parseArrayLiteral(str);\n (to as ArrayType).convertLiteral(array);\n return array;\n }\n , parseArray => ({ parseArray }));\n case DataType.bytea:\n return value\n .setConversion(str => {\n return bufFromString(str);\n }\n , toBytea => ({ toBytea }));\n\n }\n if (numbers.has(to.primary)) {\n const isInt = integers.has(to.primary);\n return value\n .setConversion(str => {\n const val = Number.parseFloat(str);\n if (!Number.isFinite(val)) {\n throw new QueryError(`invalid input syntax for ${to.primary}: ${str}`);\n }\n if (isInt && Math.floor(val) !== val) {\n throw new QueryError(`invalid input syntax for ${to.primary}: ${str}`)\n }\n return val;\n }\n , castNum => ({ castNum, to: to.primary }));\n }\n if (isGeometric(to.primary)) {\n return value\n .setConversion(str => {\n const ret = parseGeometricLiteral(str, to.primary as any);\n return ret;\n }\n , castGeo => ({ castGeo, to: to.primary }));\n }\n return undefined;\n }\n\n doEquals(a: string, b: string) {\n if (this.citext) {\n return a.localeCompare(b, undefined, { sensitivity: 'accent' }) === 0;\n }\n\n return super.doEquals(a, b);\n }\n}\n\n\n\nclass BoolType extends TypeBase<boolean> {\n\n constructor() {\n super(16);\n }\n\n get primary(): DataType {\n return DataType.bool;\n }\n\n doCanCast(to: _IType): boolean | nil {\n switch (to.primary) {\n case DataType.text:\n case DataType.citext:\n case DataType.bool:\n case DataType.integer:\n return true;\n }\n return false;\n }\n\n doCast(value: Evaluator, to: _IType) {\n switch (to.primary) {\n case DataType.text:\n case DataType.citext:\n return new Evaluator(\n to\n , value.id\n , value.hash!\n , value\n , (raw, t) => {\n const got = value.get(raw, t);\n return got ? 'true' : 'false';\n });\n case DataType.bool:\n return value;\n case DataType.integer:\n return new Evaluator(\n to\n , value.id\n , value.hash!\n , value\n , (raw, t) => {\n const got = value.get(raw, t);\n return got ? 1 : 0;\n });\n }\n throw new Error('Unexpected cast error');\n }\n}\n\nexport class ArrayType extends TypeBase<any[]> {\n\n public static matches(type: IType): type is ArrayType {\n return type.primary === DataType.array;\n }\n\n get primary(): DataType {\n if (this.list) {\n return DataType.list;\n }\n return DataType.array;\n }\n\n get name(): string {\n return this.of.name + '[]';\n }\n\n\n constructor(readonly of: _IType, private list: boolean) {\n super(null);\n }\n\n doCanCast(to: _IType) {\n if (to instanceof ArrayType) {\n return this.of.canCast(to.of);\n }\n return this.of.canCast(to);\n }\n\n doCast(value: Evaluator, _to: _IType) {\n if (_to instanceof ArrayType) {\n\n const to = _to as ArrayType;\n const valueType = value.type as ArrayType;\n return new Evaluator(\n to\n , value.id\n , value.hash!\n , value\n , (raw, t) => {\n const arr = value.get(raw, t) as any[];\n return arr.map(x => Value.constant(valueType.of, x).cast(to.of).get(raw, t));\n });\n }\n if (_to.primary === DataType.text) {\n return this.toText(_to, value);\n }\n return this.toSingleColumn(_to, value);\n }\n\n toText(to: _IType, value: Evaluator) {\n const valueType = value.type as ArrayType;\n const converter = Value.converter(valueType.of, Types.text());\n return new Evaluator(\n to\n , value.id\n , value.hash!\n , value\n , (raw, t) => {\n const arr = value.get(raw, t) as any[];\n const strs = arr.map(x => converter(x, t));\n const data = strs.join(',');\n return this.list\n ? '(' + data + ')'\n : '{' + data + '}';\n }, { forceNotConstant: true });\n }\n\n toSingleColumn(to: _IType, value: Evaluator) {\n const valueType = value.type as ArrayType;\n const converter = Value.converter(valueType.of, to);\n return new Evaluator(\n to\n , value.id\n , value.hash!\n , value\n , (raw, t) => {\n const arr = value.get(raw, t) as any[];\n return converter(arr[0], t);\n }, { forceNotConstant: true });\n }\n\n doEquals(a: any[], b: any[]): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!this.of.equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n\n doGt(a: any[], b: any[]): boolean {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n if (this.of.gt(a[i], b[i])) {\n return true;\n }\n }\n return a.length > b.length;\n }\n\n doLt(a: any[], b: any[]): boolean {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n if (this.of.lt(a[i], b[i])) {\n return true;\n }\n }\n return a.length < b.length;\n }\n\n convertLiteral(elts: any) {\n if (nullIsh(elts)) {\n return;\n }\n if (!Array.isArray(elts)) {\n throw new QueryError('Array depth mismatch: was expecting an array item.');\n }\n if (this.of instanceof ArrayType) {\n for (let i = 0; i < elts.length; i++) {\n this.of.convertLiteral(elts[i]);\n }\n } else {\n for (let i = 0; i < elts.length; i++) {\n if (Array.isArray(elts[i])) {\n throw new QueryError('Array depth mismatch: was not expecting an array item.');\n }\n elts[i] = Value.text(elts[i])\n .cast(this.of)\n .get();\n }\n }\n return elts;\n }\n}\n\nexport interface RecordCol {\n readonly name: string;\n readonly type: _IType;\n}\n\n/** Basic types */\nexport const Types = {\n [DataType.record]: (columns: RecordCol[]) => new RecordType(columns) as _IType,\n [DataType.bool]: new BoolType() as _IType,\n [DataType.text]: (len: number | nil = null) => makeText(len) as _IType,\n [DataType.citext]: new TextType(null, true),\n [DataType.timestamp]: (len: number | nil = null) => makeTimestamp(DataType.timestamp, len) as _IType,\n [DataType.timestamptz]: (len: number | nil = null) => makeTimestamp(DataType.timestamptz, len) as _IType,\n [DataType.uuid]: new UUIDtype(2950) as _IType,\n [DataType.date]: new TimestampType(DataType.date, 1082) as _IType,\n [DataType.interval]: new IntervalType(1186) as _IType,\n [DataType.time]: new TimeType(DataType.time) as _IType,\n [DataType.timetz]: new TimeType(DataType.timetz) as _IType,\n [DataType.jsonb]: new JSONBType(DataType.jsonb, 3802) as _IType,\n [DataType.regtype]: new RegTypeImpl(2206) as _IType,\n [DataType.regclass]: new RegClassImpl(2205) as _IType,\n [DataType.json]: new JSONBType(DataType.json, 114) as _IType,\n [DataType.null]: new NullType(null) as _IType,\n [DataType.float]: new NumberType(DataType.float, 700) as _IType,\n [DataType.integer]: new NumberType(DataType.integer, 23) as _IType,\n [DataType.bigint]: new NumberType(DataType.bigint, 20) as _IType,\n [DataType.bytea]: new ByteArrayType(17) as _IType,\n [DataType.point]: new PointType(600) as _IType,\n [DataType.line]: new LineType(628) as _IType,\n [DataType.lseg]: new LsegType(601) as _IType,\n [DataType.box]: new BoxType(603) as _IType,\n [DataType.inet]: new INetType(869) as _IType,\n [DataType.path]: new PathType(602) as _IType,\n [DataType.polygon]: new PolygonType(604) as _IType,\n [DataType.circle]: new CircleType(718) as _IType,\n default: new DefaultType(null) as _IType,\n}\n\nexport const dateTypes: ReadonlySet<DataType> = new Set([\n DataType.timestamp\n , DataType.timestamptz\n , DataType.date\n , DataType.time\n]);\n\nexport function isDateType(_type: _IType | DataType) {\n const t = typeof _type === 'string' ? _type : _type.primary;\n return dateTypes.has(t);\n}\n\nexport function isGeometric(dt: DataType) {\n switch (dt) {\n case DataType.point:\n case DataType.line:\n case DataType.lseg:\n case DataType.box:\n case DataType.path:\n case DataType.polygon:\n case DataType.circle:\n return true;\n }\n return false;\n}\n\nconst texts = new Map<number | null, _IType>();\nfunction makeText(len: number | nil = null) {\n len = len ?? null;\n let got = texts.get(len);\n if (!got) {\n texts.set(len, got = new TextType(len));\n }\n return got;\n}\n\nconst timestamps = new Map<string, _IType>();\nfunction makeTimestamp(primary: DataType, len: number | nil = null) {\n len = len ?? null;\n const key = primary + '/' + len;\n let got = timestamps.get(key);\n if (!got) {\n timestamps.set(key, got = new TimestampType(primary, 1114, len));\n }\n return got;\n}\n\n\n\n\n\n\n\nexport const typeSynonyms: { [key: string]: DataType | { type: DataType; ignoreConfig: boolean } } = {\n 'varchar': DataType.text,\n 'char': DataType.text,\n 'character': DataType.text,\n 'character varying': DataType.text,\n\n 'int': DataType.integer,\n 'int4': DataType.integer,\n 'int8': DataType.bigint,\n 'serial': DataType.integer,\n 'serial8': DataType.bigint,\n 'bigserial': DataType.integer,\n 'smallserial': DataType.integer,\n 'smallint': DataType.integer,\n 'bigint': DataType.integer,\n 'oid': DataType.integer,\n\n 'decimal': DataType.float,\n 'float': DataType.float,\n 'double precision': DataType.float,\n 'numeric': { type: DataType.float, ignoreConfig: true },\n 'real': DataType.float,\n 'money': DataType.float,\n\n 'timestamp with time zone': DataType.timestamptz,\n 'timestamp without time zone': DataType.timestamp,\n\n 'boolean': DataType.bool,\n\n 'time with time zone': DataType.timetz,\n 'time without time zone': DataType.time,\n}\n\n\n/** Finds a common type by implicit conversion */\nexport function reconciliateTypes(values: IValue[], nullIfNoMatch?: false, stricterType?: boolean): _IType;\nexport function reconciliateTypes(values: IValue[], nullIfNoMatch: true, stricterType?: boolean): _IType | nil;\nexport function reconciliateTypes(values: IValue[], nullIfNoMatch?: boolean, stricterType?: boolean): _IType | nil\nexport function reconciliateTypes(values: IValue[], nullIfNoMatch?: boolean, stricterType?: boolean): _IType | nil {\n // FROM https://www.postgresql.org/docs/current/typeconv-union-case.html\n\n const nonNull = values\n .filter(x => x.type.primary !== DataType.null);\n\n if (!nonNull.length) {\n // If all inputs are of type unknown, resolve as type text (the preferred type of the string category). Otherwise, unknown inputs are ignored for the purposes of the remaining rules.\n return Types.text();\n }\n\n // If all inputs are of the same type, and it is not unknown, resolve as that type.\n const single = new Set(nonNull\n .map(v => v.type.reg.typeId));\n // if (single.size === 1) {\n // return nonNull[0].type;\n // }\n\n return reconciliateTypesRaw(nonNull, nullIfNoMatch, stricterType);\n}\n\n\n\n/** Finds a common type by implicit conversion */\nfunction reconciliateTypesRaw(values: IValue[], nullIfNoMatch?: false, stricterType?: boolean): _IType;\nfunction reconciliateTypesRaw(values: IValue[], nullIfNoMatch: true, stricterType?: boolean): _IType | nil;\nfunction reconciliateTypesRaw(values: IValue[], nullIfNoMatch?: boolean, stricterType?: boolean): _IType | nil\nfunction reconciliateTypesRaw(values: IValue[], nullIfNoMatch?: boolean, stricterType?: boolean): _IType | nil {\n // find the matching type among non constants\n const foundType = values\n .reduce((final, c) => {\n if (c.type === Types.null) {\n return final;\n }\n const pref = final.prefer(c.type, stricterType);\n if (!pref) {\n throw new CastError(c.type.primary, final.primary, c.id ?? undefined);\n }\n return pref;\n }, Types.null);\n\n // check that all constant literals are matching this.\n for (const x of values) {\n if (!x.isConstantLiteral && !x.type.canConvertImplicit(foundType)) {\n if (nullIfNoMatch) {\n return null;\n }\n throw new CastError(x.type.primary, foundType.primary);\n }\n }\n\n return foundType;\n}\n","module.exports = require(\"object-hash\");","import { isBuf } from '../misc/buffer-node';\nimport { deepCloneSimple, hasExecutionCtx, isTopLevelExecutionContext } from '../utils';\n\nexport const JSON_NIL = Symbol('null');\nexport const IS_PARTIAL_INDEXING = Symbol('partial_indexing');\nexport const SELECT_ALL = Symbol('select *');\n\n\nexport function cleanResults<T>(results: T): T {\n\n // ugly hack to turn jsonb nulls & partial indexed results into actual nulls\n // This will bite me someday ... but please dont judge me, I too try to have a life outside here 🤔\n // The sane thing to do would be to refactor things & introduce a DBNULL value in pgmem\n // since the need of such DBNULL value could arise somehow on another type\n // see:\n // - `can select jsonb null` test in nulls.spec.ts\n // - `executes array multiple index incomplete indexing` test in operators.queries.spec.ts\n\n function cleanObj(obj: any) {\n if (!obj || typeof obj !== 'object' || obj instanceof Date || isBuf(obj)) {\n return obj;\n }\n if (Array.isArray(obj)) {\n if ((obj as any)[IS_PARTIAL_INDEXING]) {\n return null;\n } else {\n const newArr = Array(obj.length);\n for (let i = 0; i < obj.length; i++) {\n if (obj[i] === JSON_NIL) {\n newArr[i] = null;\n } else {\n newArr[i] = cleanObj(obj[i]);\n }\n }\n return newArr;\n }\n }\n const ret: any = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v === JSON_NIL) {\n ret[k] = null;\n } else {\n ret[k] = cleanObj(v);\n }\n }\n return ret;\n }\n\n if (!Array.isArray(results)) {\n return cleanObj(results);\n }\n\n const ret = Array(results.length);\n for (let i = 0; i < results.length; i++) {\n const sel = results[i][SELECT_ALL];\n if (sel) {\n ret[i] = cleanObj(sel());\n } else {\n ret[i] = cleanObj(results[i]);\n }\n }\n return ret as any;\n}\n","module.exports = require(\"immutable\");","module.exports = require(\"moment\");","export type TBuffer = Buffer;\n\n\nexport function bufToString(buf: TBuffer): string {\n return buf?.toString('utf-8');\n}\n\nexport function bufCompare(a: TBuffer, b: TBuffer) {\n return Buffer.compare(a, b);\n}\n\nexport function bufFromString(str: string) {\n return Buffer.from(str);\n}\n\nexport function isBuf(v: any): v is TBuffer {\n return Buffer.isBuffer(v);\n}\n\nexport function bufClone(buf: TBuffer): TBuffer {\n const bufcopy = Buffer.alloc(buf.length);\n buf.copy(bufcopy);\n return bufcopy;\n}","import { DataType, getId, nil, QueryError, _IType, _ISelection, _Transaction, setId } from '../interfaces-private';\nimport { TypeBase } from './datatype-base';\nimport { RecordCol } from './datatypes';\nimport { Evaluator } from '../evaluator';\n\nexport class RecordType extends TypeBase<any> {\n\n\n public static matches(type: _IType): type is RecordType {\n return type.primary === DataType.record;\n }\n\n constructor(readonly columns: readonly RecordCol[]) {\n super(1083);\n }\n\n get primary(): DataType {\n return DataType.record;\n }\n\n doEquals(a: any, b: any): boolean {\n return getId(a) === getId(b);\n }\n\n public static from(selection: _ISelection): RecordType {\n const recordCols = selection.columns\n .filter(c => !!c.id)\n .map<RecordCol>(x => ({ name: x.id!, type: x.type }));\n return new RecordType(recordCols);\n }\n\n /** Build a function that will transform a record of this type to a record of the target type */\n transformItemFrom(source: _ISelection): ((raw: any, t: _Transaction, execId: string) => any) | null {\n if (source.columns.length !== this.columns.length) {\n return null;\n }\n const setters: ((oldItem: any, newItem: any, t: _Transaction) => any)[] = [];\n for (let i = 0; i < this.columns.length; i++) {\n const to = this.columns[i];\n const from = source.columns[i];\n if (!from.type.canConvertImplicit(to.type)) {\n return null;\n }\n const casted = from.cast(to.type);\n setters.push((old, neu, t) => neu[to.name] = casted.get(old, t));\n }\n\n return (raw: any, t, execId) => {\n const ret = {};\n // alter the items id, so each execution will have a different id\n setId(ret, execId + getId(raw));\n for (const s of setters) {\n s(raw, ret, t);\n }\n return ret;\n };\n }\n\n doCanCast(to: _IType): boolean | nil {\n // lets say that any type can cast to a record with no columns\n // this is a hack ... see row_to_json() UT\n return to instanceof RecordType && !to.columns.length;\n }\n\n doCast(value: Evaluator<any>, to: _IType): Evaluator<any> | nil {\n return value;\n }\n}\n","import { DataSourceBase } from '../../transforms/transform-base';\nimport { ArrayFilter } from '../../transforms/array-filter';\nimport { _ISelection, _ISchema, _ITable, _Transaction, IValue, _IIndex, _Explainer, _IStatement, QueryError, _Column, _IAggregation, Row } from '../../interfaces-private';\nimport { InsertStatement, UpdateStatement, DeleteStatement, SetStatement, ExprRef } from 'pgsql-ast-parser';\nimport { buildSelection } from '../../transforms/selection';\nimport { MemoryTable } from '../../table';\nimport { buildValue } from '../../parser/expression-builder';\nimport { withSelection, buildCtx } from '../../parser/context';\nimport { colToStr, deepCloneSimple } from '../../utils';\n\ntype MutationStatement = InsertStatement | UpdateStatement | DeleteStatement;\n\n\nexport abstract class MutationDataSourceBase extends DataSourceBase {\n public static readonly affectedRows = Symbol('affectedRows');\n\n /** Perform the mutation, and returns the affected elements */\n protected abstract performMutation(t: _Transaction): Row[];\n\n private returningRows?: ArrayFilter;\n private returning?: _ISelection;\n private mutationResult = Symbol('mutationResult');\n\n get isExecutionWithNoResult(): boolean {\n return !this.returning;\n }\n\n isAggregation(): this is _IAggregation {\n return false;\n }\n\n get columns() {\n return this.returning?.columns ?? [];\n }\n\n constructor(protected table: _ITable, protected mutatedSel: _ISelection, p: MutationStatement) {\n super(table.ownerSchema);\n\n // prepare \"returning\" statement\n if (p.returning) {\n this.returningRows = new ArrayFilter(this.mutatedSel, [])\n this.returning = buildSelection(this.returningRows, p.returning);\n }\n\n const { onFinishExecution } = buildCtx();\n // force execution if it has not yet been executed once the current statement finishes its execution.\n // see \"only inserts once with statement is executed\" test\n onFinishExecution(t => {\n this._doExecuteOnce(t);\n });\n }\n\n private _doExecuteOnce(t: _Transaction): any[] {\n // check if this mutation has already been executed in the statement being executed\n // and get the result from cache to avoid re-excuting it\n // see unit test \"can use delete result multiple times in select\"\n let affected = t.getTransient<any[]>(this.mutationResult);\n if (!affected) {\n // execute mutation if nescessary\n affected = this.performMutation(t);\n t.setTransient(this.mutationResult, affected);\n }\n\n\n // set the result count\n t.setTransient(MutationDataSourceBase.affectedRows, affected.length);\n return affected;\n }\n\n *enumerate(t: _Transaction): Iterable<any> {\n\n let affected = this._doExecuteOnce(t);\n\n if (!this.returning) {\n return;\n }\n\n // handle \"returning\" statement\n try {\n this.returningRows!.rows = affected;\n yield* this.returning.enumerate(t);\n } finally {\n this.returningRows!.rows = []\n }\n }\n\n entropy(t: _Transaction): number {\n // To ensure that a muation will always be prioritary\n // on a join, then just return 0.\n return 0;\n }\n\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean | undefined): IValue {\n if (!this.returning) {\n throw new Error(`Cannot get column \"${colToStr(column)}\" from a mutation that has no returning statement`);\n }\n return this.returning.getColumn(column, nullIfNotFound)!;\n }\n\n hasItem(value: any, t: _Transaction): boolean {\n throw new Error('To fix: Joins cannot call hasItem on a mutation');\n }\n\n getIndex(forValue: IValue): _IIndex | null | undefined {\n return null;\n }\n\n explain(e: _Explainer): never {\n throw new Error('not implemented');\n }\n\n isOriginOf(a: IValue): boolean {\n return !!this.returning && a.origin === this.returning;\n }\n\n stats(t: _Transaction): null {\n return null;\n }\n}\n\n\nexport type Setter = (t: _Transaction, target: any, source: any) => void;\nexport function createSetter(this: void, setTable: _ITable, setSelection: _ISelection, _sets: SetStatement[]): Setter {\n return withSelection(setSelection, () => {\n const alreadySet = new Set<_Column>();\n const sets = _sets.map(x => {\n const col = (setTable as MemoryTable).getColumnRef(x.column.name);\n if (alreadySet.has(col)) {\n throw new QueryError(` multiple assignments to same column \"${col.name}\"`, '42601');\n }\n alreadySet.add(col);\n return {\n col,\n value: x.value,\n getter: x.value.type !== 'default'\n ? buildValue(x.value).cast(col.expression.type)\n : null,\n };\n });\n\n return (t: _Transaction, target: any, source: any) => {\n for (const s of sets) {\n if (s.value.type === 'default') {\n target[s.col.expression.id!] = s.col.default?.get() ?? undefined;\n } else {\n target[s.col.expression.id!] = s.getter?.get(source, t) ?? null;\n }\n }\n }\n });\n}\n","module.exports = require(\"lru-cache\");","import { TransformBase } from './transform-base';\nimport { _ISelection, _Transaction, IValue, _IIndex, _Explainer, _SelectExplanation, _IType, IndexKey, _ITable, Stats, AggregationComputer, AggregationGroupComputer, setId, _IAggregation, Row } from '../interfaces-private';\nimport { Expr, ExprRef, ExprCall } from 'pgsql-ast-parser';\nimport { buildValue } from '../parser/expression-builder';\nimport { nil, NotSupported } from '../interfaces';\nimport hash from 'object-hash';\nimport { Evaluator } from '../evaluator';\nimport { buildCount } from './aggregations/count';\nimport { buildMinMax } from './aggregations/max-min';\nimport { buildSum } from './aggregations/sum';\nimport { buildArrayAgg } from './aggregations/array_agg';\nimport { buildAvg } from './aggregations/avg';\nimport { Selection } from './selection';\nimport { buildCtx, withSelection } from '../parser/context';\nimport { buildJsonAgg } from './aggregations/json_aggs';\nimport { nullIsh } from '../utils';\nimport { buildBoolAgg } from './aggregations/bool-aggregs';\n\nexport const aggregationFunctions = new Set([\n 'array_agg',\n 'avg',\n 'bit_and',\n 'bit_or',\n 'bool_and',\n 'bool_or',\n 'count',\n 'every',\n 'json_agg',\n 'jsonb_agg',\n 'json_object_agg',\n 'jsonb_object_agg',\n 'max',\n 'min',\n 'string_agg',\n 'sum',\n 'xmlagg',\n])\n\nexport function buildGroupBy(on: _ISelection, groupBy: Expr[]) {\n const agg = new Aggregation(on, groupBy);\n return agg;\n}\n\nlet idCnt = 0;\n\nexport function getAggregator(): _IAggregation | null {\n const on = buildCtx().selection;\n if (!on) {\n return null;\n }\n if (on.isAggregation()) {\n return on;\n }\n if (!(on instanceof Selection)) {\n return null;\n }\n if (!(on.base.isAggregation())) {\n return null;\n }\n return on.base;\n}\n\ntype AggregItem = any;\n\ninterface AggregationInstance {\n getter: IValue;\n id: symbol;\n computer: AggregationComputer;\n distinct: IValue[] | nil;\n}\n\nfunction isIntegralType(value: any): boolean {\n return typeof value === 'number' || typeof value === 'string' || value instanceof Date;\n}\n\nexport class Aggregation extends TransformBase implements _ISelection, _IAggregation {\n\n columns: readonly IValue[];\n /**\n * Group-by values\n * - key: column in source hash\n * - value: column in this, evaluated against temporary entity.\n **/\n private readonly symbol = Symbol();\n private readonly aggId = idCnt++;\n private readonly groupIndex?: _IIndex | nil;\n private aggregations = new Map<string, AggregationInstance>();\n\n /** How to get grouping values on the base table raw items (not on \"this.enumerate()\" raw items) */\n private groupingValuesOnbase: IValue[];\n\n /** How to get the grouped values on \"this.enumerate()\" raw items output */\n private groupByMapping = new Map<string, IValue>();\n\n isAggregation(): this is _IAggregation {\n return true;\n }\n\n constructor(on: _ISelection, _groupedBy: Expr[]) {\n super(on);\n\n\n // === preassign columns that are reachable (grouped by)\n this.groupingValuesOnbase = withSelection(on, () => _groupedBy.map(x => buildValue(x)));\n for (let _i = 0; _i < this.groupingValuesOnbase.length; _i++) {\n const i = _i;\n const g = this.groupingValuesOnbase[i];\n this.groupByMapping.set(g.hash!, new Evaluator(\n g.type\n , g.id\n , g.hash!\n , [g]\n // keys are stored wrapped in a symbol (because not necessarily selected)\n , v => v[this.symbol][i]\n ));\n }\n\n // try to find an index matching our groupby clause\n this.groupIndex = on.getIndex(...this.groupingValuesOnbase);\n this.columns = [];\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n return this.base.getColumn(column, nullIfNotFound);\n }\n\n checkIfIsKey(got: IValue): IValue {\n return this.groupByMapping.get(got.hash!) ?? got;\n }\n\n\n entropy(t: _Transaction): number {\n return this.groupByMapping.size || 1;\n }\n\n stats(): Stats | null {\n // cannot be computed without iterating\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const item of this._enumerateAggregationKeys(t)) {\n const sym = item[this.symbol];\n setId(item, `agg_${this.aggId}_${hash(sym)}`)\n yield item as any;\n }\n }\n\n private _enumerateAggregationKeys(t: _Transaction): Iterable<AggregItem> {\n // ===== try to compute directly (will only succeed when no grouping, and simple statements like count(*))\n const ret = this.computeDirect(t);\n if (ret) {\n return [ret];\n }\n\n // ===== try to compute base on index\n const fromIndex = this.iterateFromIndex(t);\n if (fromIndex) {\n return fromIndex;\n }\n\n // ==== seq-scan computation\n return this.seqScan(t);\n }\n\n private iterateFromIndex(t: _Transaction): AggregItem[] | null {\n if (!this.groupIndex) {\n return null;\n }\n const aggs = [...this.aggregations.values()];\n const allByGroup = !aggs.some(x => !x.computer.computeFromIndex);\n\n if (!allByGroup) {\n return null;\n }\n\n const indexKeys = this.groupIndex.iterateKeys(t);\n if (!indexKeys) {\n return null;\n }\n\n // iterate all index keys\n const computed: AggregItem[] = []\n for (const k of indexKeys) {\n const ret: any = { [this.symbol]: k };\n // try to compute from index\n for (const agg of aggs) {\n const val = agg.computer.computeFromIndex?.(k, this.groupIndex, t);\n if (typeof val === 'undefined') {\n if (computed.length) {\n throw new Error('Compute from index has succeeded on an index key, but failed on another (which must not happen)');\n }\n return null;\n }\n ret[agg.id] = val;\n }\n computed.push(ret);\n }\n return computed;\n }\n\n\n private *seqScan(t: _Transaction): Iterable<AggregItem> {\n const aggs = [...this.aggregations.values()];\n const groups = new Map<string, {\n key: IndexKey;\n aggs: {\n computer: AggregationGroupComputer;\n distinctHash: Set<any>;\n instance: AggregationInstance,\n }[];\n }>();\n\n // === feed all items\n for (const item of this.base.enumerate(t)) {\n // get group-by values\n const key: IndexKey = this.groupingValuesOnbase.map(g => g.get(item, t));\n\n // add group if necessary\n const groupingKey = hash(key);\n let group = groups.get(groupingKey);\n if (!group) {\n groups.set(groupingKey, group = {\n key,\n aggs: aggs.map(x => ({\n computer: x.computer.createGroup(t),\n instance: x,\n distinctHash: new Set(),\n })),\n });\n }\n\n // process aggregators in group\n for (const g of group.aggs) {\n if (!g.computer) {\n continue;\n }\n if (g.instance.distinct) {\n const distinctValues = g.instance.distinct.map(x => x.get(item, t));\n if (distinctValues.length === 1 && nullIsh(distinctValues[0])) {\n // ignore single nulls.\n continue;\n }\n let valuesHash: any;\n if (distinctValues.length === 1 && isIntegralType(distinctValues[0])) {\n // optimization to avoid hashing on objects supported by \"Set\"\n valuesHash = distinctValues[0];\n } else {\n valuesHash = hash(distinctValues);\n }\n if (g.distinctHash.has(valuesHash)) {\n continue;\n }\n g.distinctHash.add(valuesHash);\n }\n g.computer.feedItem(item);\n }\n }\n\n // if this.base is empty, and this is not a group by...\n // 👉 Must return a result.\n // ex:\n // - select max(a) from empty 👉 [{max: null}]\n // - select max(a) from empty group by id 👉 []\n if (groups.size === 0 && !this.groupingValuesOnbase.length) {\n const key: IndexKey = [];\n const groupingKey = hash(key);\n groups.set(groupingKey, {\n key,\n aggs: aggs.map(x => ({\n computer: x.computer.createGroup(t),\n instance: x,\n distinctHash: new Set(),\n })),\n });\n }\n\n // === return results\n for (const g of groups.values()) {\n const ret: AggregItem = {\n // specify the grouping key\n [this.symbol]: g.key\n };\n\n // fill aggregations values\n for (const { instance: { id }, computer } of g.aggs) {\n ret[id] = computer.finish() ?? null;\n }\n yield ret;\n }\n }\n\n private computeDirect(t: _Transaction): AggregItem | null {\n // When there is no grouping...\n if (this.groupByMapping.size) {\n return null;\n }\n // check if all selected aggregations can be computed directly (typically: count(*))\n const aggs = [...this.aggregations.values()];\n const allNoGroup = !aggs.some(x => !x.computer.computeNoGroup);\n if (!allNoGroup) {\n return null;\n }\n const ret: AggregItem = {\n [this.symbol]: [],\n };\n for (const agg of this.aggregations.values()) {\n const val = agg.computer.computeNoGroup?.(t);\n if (typeof val === 'undefined') {\n return null;\n }\n ret[agg.id] = val;\n }\n return ret;\n }\n\n getAggregation(name: string, call: ExprCall): IValue {\n const hashed = hash(call);\n const agg = this.aggregations.get(hashed);\n if (agg) {\n return agg.getter;\n }\n const got = this._getAggregation(name, call);\n\n const id = Symbol(name);\n const getter = new Evaluator(\n got.type\n , null\n , hashed\n , []\n , raw => raw[id]\n , {\n forceNotConstant: true,\n });\n\n let distinct: IValue[] | null = null;\n if (call.distinct === 'distinct') {\n if (call.args.length === 1 && call.args[0].type === 'list') {\n // hack in case we get a record-like thing - ex: select count(distinct (a,b))\n // cf UT behaves nicely with nulls on multiple count\n distinct = call.args[0].expressions.map(x => buildValue(x));\n } else {\n distinct = call.args.map(x => buildValue(x));\n }\n }\n\n this.aggregations.set(hashed, {\n id,\n getter,\n computer: got,\n distinct,\n });\n return getter;\n }\n\n private _getAggregation(name: string, call: ExprCall): AggregationComputer {\n switch (name) {\n case 'count':\n return buildCount(this.base, call);\n case 'max':\n case 'min':\n return buildMinMax(this.base, call.args, name);\n case 'sum':\n return buildSum(this.base, call);\n case 'array_agg':\n return buildArrayAgg(this.base, call);\n case 'avg':\n return buildAvg(this.base, call);\n case 'jsonb_agg':\n case 'json_agg':\n return buildJsonAgg(this.base, call, name);\n case 'bool_and':\n case 'bool_or':\n return buildBoolAgg(this.base, call, name);\n default:\n throw new NotSupported('aggregation function ' + name);\n }\n }\n\n\n hasItem(value: Row, t: _Transaction): boolean {\n return !!(value as any)[this.symbol];\n }\n\n getIndex(forValue: IValue): _IIndex | nil {\n // there is no index on aggregations\n return null;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n _: 'aggregate',\n id: e.idFor(this),\n aggregator: null as any,\n }\n }\n\n}\n","import { _ISelection, IValue, _IIndex, _IDb, setId, getId, _Transaction, _ISchema, _SelectExplanation, _Explainer, IndexExpression, IndexOp, IndexKey, _IndexExplanation, Stats, _IAlias, TR, _IStatement, Row } from '../interfaces-private';\nimport { buildBinaryValue, buildValue, uncache } from '../parser/expression-builder';\nimport { QueryError, ColumnNotFound, NotSupported, nil, DataType } from '../interfaces';\nimport { DataSourceBase, TransformBase } from './transform-base';\nimport { Expr, ExprRef, JoinClause, Name, SelectedColumn } from 'pgsql-ast-parser';\nimport { colToStr, nullIsh, SRecord } from '../utils';\nimport { Types } from '../datatypes';\nimport { SELECT_ALL } from '../execution/clean-results';\nimport { CustomAlias, Selection } from './selection';\nimport { withSelection, buildCtx } from '../parser/context';\n\nlet jCnt = 0;\n\ninterface JoinRaw {\n '>restrictive': Row;\n '>joined': Row;\n}\ninterface JoinStrategy {\n iterate: _ISelection;\n iterateSide: 'joined' | 'restrictive';\n joinIndex: _IIndex;\n onValue: IValue;\n othersPredicate?: IValue;\n}\n\ninterface Equality {\n left: IValue;\n right: IValue;\n eq: IValue;\n}\n\nfunction* extractAnds(this: void, on: Expr): Iterable<Expr> {\n if (on.type === 'binary' && on.op === 'AND') {\n yield* extractAnds(on.left);\n yield* extractAnds(on.right);\n return;\n }\n yield on;\n}\n\nfunction chooseStrategy(this: void, t: _Transaction, strategies: JoinStrategy[]) {\n strategies.sort((a, b) => a.iterate.entropy(t) > b.iterate.entropy(t) ? 1 : -1);\n return strategies[0];\n}\n\nexport class JoinSelection extends DataSourceBase {\n\n get isExecutionWithNoResult(): boolean {\n return false;\n }\n\n private _columns: IValue[] = [];\n private seqScanExpression!: IValue;\n private joinId: number;\n private columnsMappingParentToThis = new Map<IValue, IValue>();\n // mapping of the left table columns mapped to the actual their inner value\n private indexOnRestrictingTableByValue = new Map<IValue, _IIndex>();\n private indexCache = new Map<IValue, _IIndex>();\n strategies: JoinStrategy[] = [];\n private building = false;\n private ignoreDupes?: Set<IValue>;\n private mergeSelect?: Selection;\n\n\n isOriginOf(a: IValue): boolean {\n return this.joined.isOriginOf(a) || this.restrictive.isOriginOf(a);\n }\n\n get columns(): IValue[] {\n return this._columns;\n }\n\n entropy(t: _Transaction): number {\n const strategy = chooseStrategy(t, this.strategies);\n if (!strategy) {\n // catastophic join... very high entropy...\n return this.restrictive.entropy(t) * this.joined.entropy(t);\n }\n\n // todo: multiply that by the mean count per keys in strategy.joinIndex ?\n const ret = strategy.iterate.entropy(t);\n return ret;\n }\n\n constructor(readonly restrictive: _ISelection\n , readonly joined: _ISelection\n , on: JoinClause\n , readonly innerJoin: boolean) {\n super(buildCtx().schema);\n\n\n this.joinId = jCnt++;\n for (const c of this.restrictive.listSelectableIdentities()) {\n const nc = c.setWrapper(this, x => (x as any)['>restrictive']);\n this.columnsMappingParentToThis.set(c, nc);\n if (c.type.primary === DataType.record) {\n continue;\n }\n this._columns.push(nc);\n if (c.index) {\n this.indexOnRestrictingTableByValue.set(nc, c.index);\n }\n }\n for (const c of this.joined.listSelectableIdentities()) {\n const nc = c.setWrapper(this, x => (x as any)['>joined']);\n this.columnsMappingParentToThis.set(c, nc);\n if (c.type.primary === DataType.record) {\n continue;\n }\n this._columns.push(nc);\n }\n\n withSelection(this, () => {\n if (on.on) {\n this.fetchOnStrategies(on.on);\n } else if (on.using?.length) {\n this.fetchUsingStrategies(on.using);\n } else {\n throw new Error('Unspecified join ON clause');\n }\n });\n }\n\n private wrap(v: IValue) {\n const ret = this.columnsMappingParentToThis.get(v);\n if (!ret) {\n throw new Error('Corrupted join (unknown column)');\n }\n return ret;\n }\n\n listSelectableIdentities(): Iterable<IValue> {\n return this.columnsMappingParentToThis.values();\n }\n\n private fetchOnStrategies(_on: Expr) {\n // build equalities eligible to a strategy\n const ands: Equality[] = [];\n const others: IValue[] = [];\n for (const on of extractAnds(_on)) {\n if (on.type !== 'binary' || on.op !== '=') {\n // join 'ON' clause not compatible with an indexed strategy\n others.push(buildValue(on));\n continue;\n }\n this.building = true;\n const left = buildValue(on.left);\n const right = buildValue(on.right);\n this.building = false;\n // necessary because of the 'this.building' hack\n uncache(this);\n ands.push({\n left,\n right,\n eq: buildValue(on),\n });\n }\n\n // compute strategies\n this.fetchAndStrategies(ands, others);\n\n\n // build seq-scan expression\n this.seqScanExpression = buildValue(_on).cast(Types.bool);\n }\n\n private fetchUsingStrategies(_using: Name[]) {\n // build equalities eligible to a strategy\n const ands = _using.map<Equality>(n => {\n const left = this.restrictive.getColumn(n.name);\n const right = this.joined.getColumn(n.name);\n return {\n left,\n right,\n eq: buildBinaryValue(\n this.wrap(left)\n , '='\n , this.wrap(right))\n }\n });\n this.ignoreDupes = new Set(ands.map(x => this.wrap(x.left)));\n\n // compute strategies\n this.fetchAndStrategies(ands, []);\n\n // build seq-scan expression\n this.seqScanExpression = ands.slice(1)\n .reduce((a, b) => buildBinaryValue(a, 'AND', b.eq), ands[0].eq);\n }\n\n private fetchAndStrategies(ands: Equality[], otherPredicates: IValue[]) {\n\n for (let i = 0; i < ands.length; i++) {\n const { left, right } = ands[i];\n const strats = [...this.fetchEqStrategyOn(left, right)];\n if (!strats.length) {\n continue;\n }\n const others = [\n ...ands.slice(0, i).map(x => x.eq),\n ...ands.slice(i + 1).map(x => x.eq),\n ...otherPredicates\n ];\n if (others.length) {\n const and = others.slice(1)\n .reduce<IValue>((v, c) => buildBinaryValue(c, 'AND', v)\n , others[0]);\n for (const s of strats) {\n s.othersPredicate = and;\n }\n }\n this.strategies.push(...strats);\n }\n }\n\n private *fetchEqStrategyOn(a: IValue, b: IValue): Iterable<JoinStrategy> {\n let restrictedVal: IValue | undefined = undefined;\n let joinedVal: IValue | undefined = undefined;\n\n // const aIndex = a.wrappedOrigin?.getIndex()\n if (this.restrictive.isOriginOf(a) && this.joined.isOriginOf(b)) {\n restrictedVal = a;\n joinedVal = b;\n } else if (this.restrictive.isOriginOf(b) && this.joined.isOriginOf(a)) {\n restrictedVal = b;\n joinedVal = a;\n }\n\n let processInner = this.innerJoin;\n let iterateSide: 'restrictive' | 'joined' = 'restrictive'\n while (restrictedVal && joinedVal) {\n // can always iterat on restricted value & use joined table foreign index\n const jindex = joinedVal.index;\n if (jindex && jindex.expressions.length === 1) {\n yield {\n iterate: iterateSide === 'restrictive' ? this.restrictive : this.joined,\n iterateSide,\n onValue: restrictedVal,\n joinIndex: jindex,\n }\n }\n if (!processInner) {\n break;\n }\n // if is an inner join, then both sides can be interverted\n processInner = false;\n const t = restrictedVal;\n restrictedVal = joinedVal;\n joinedVal = t;\n iterateSide = 'joined';\n }\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n let onLeft = this.restrictive.getColumn(column, true);\n let onRight = this.joined.getColumn(column, true);\n if (!onLeft && !onRight) {\n if (nullIfNotFound) {\n return null;\n }\n throw new ColumnNotFound(colToStr(column));\n }\n if (!!onLeft && !!onRight) {\n throw new QueryError(`column reference \"${colToStr(column)}\" is ambiguous`);\n }\n const on = onLeft ?? onRight;\n if (this.building) {\n return on;\n }\n const mapped = this.columnsMappingParentToThis.get(on!);\n if (mapped) {\n return mapped;\n }\n throw new Error('Corrupted join');\n }\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<any> {\n const strategy = chooseStrategy(t, this.strategies);\n if (strategy) {\n // choose the iterator that has less values\n // find the right value using index\n for (const l of strategy.iterate.enumerate(t)) {\n yield* this.iterateStrategyItem(l, strategy, t);\n }\n } else {\n // perform a seq scan\n this.db.raiseGlobal('catastrophic-join-optimization');\n const others = [...this.joined.enumerate(t)];\n for (const l of this.restrictive.enumerate(t)) {\n yield* this.iterateCatastrophicItem(l, others, 'restrictive', t);\n }\n }\n }\n\n\n selectAlias(alias: string): _IAlias | nil {\n let onLeft = this.restrictive.selectAlias(alias);\n let onRight = this.joined.selectAlias(alias);\n if (!onLeft && !onRight) {\n return null;\n }\n if (!!onLeft && !!onRight) {\n throw new QueryError(`alias \"${alias}\" is ambiguous`);\n }\n return new JoinMapAlias(this, onLeft ?? onRight!, onLeft ? '>restrictive' : '>joined');\n }\n\n *iterateCatastrophicItem(item: any, others: any[], side: 'joined' | 'restrictive', t: _Transaction) {\n const { template, buildItem } = this.builder(item, side);\n let yielded = false;\n for (const cr of others) {\n const combined = buildItem(cr);\n const result = this.seqScanExpression.get(combined, t);\n if (result) {\n yielded = true;\n yield combined;\n }\n }\n if (!this.innerJoin && !yielded) {\n yield template;\n }\n }\n\n private builder(item: any, side: 'joined' | 'restrictive') {\n\n // if we're in an inner join, and the chosen strategy\n // has inverted join order, then invert built items\n let template: any;\n let buildItem: (x: any) => any;\n if (side === 'joined') {\n buildItem = x => this.buildItem(x, item);\n template = this.buildItem(null as any, item);\n } else {\n buildItem = x => this.buildItem(item, x);\n template = this.buildItem(item, null as any);\n }\n return { buildItem, template };\n }\n\n *iterateStrategyItem(item: any, strategy: JoinStrategy, t: _Transaction) {\n\n const { template, buildItem } = this.builder(item, strategy.iterateSide);\n\n const joinValue = strategy.onValue.get(item, t);\n let yielded = false;\n if (!nullIsh(joinValue)) {\n // get corresponding right value(s)\n for (const o of strategy.joinIndex.enumerate({\n type: 'eq',\n key: [joinValue],\n t,\n })) {\n\n // build item\n const item = buildItem(o);\n\n // check othre predicates (in case the join has an AND statement)\n if (strategy.othersPredicate) {\n const others = strategy.othersPredicate.get(item, t);\n if (!others) {\n continue;\n }\n }\n\n // finally, yieldvalue\n yielded = true;\n yield item;\n }\n }\n\n if (!this.innerJoin && !yielded) {\n yield template;\n }\n }\n\n buildItem(l: Row, r: Row) {\n const ret = {\n '>joined': r,\n '>restrictive': l,\n [SELECT_ALL]: () => this.merge(ret),\n }\n setId(ret, `join${this.joinId}-${getId(l)}-${getId(r)}`);\n return ret;\n }\n\n private merge(item: any) {\n if (!this.mergeSelect) {\n let sel = this.columns.map<CustomAlias>(val => ({ val }));\n if (this.ignoreDupes) {\n sel = sel.filter(t => !this.ignoreDupes?.has(t.val));\n }\n this.mergeSelect = new Selection(this, sel);\n }\n\n // nb: second argument is null... this is a hack : we KNOW it wont use the transaction.\n const ret = this.mergeSelect.build(item, Symbol('hack') as any);\n return ret;\n }\n\n hasItem(value: JoinRaw): boolean {\n throw new NotSupported('lookups on joins');\n }\n\n getIndex(forValue: IValue): _IIndex | nil {\n if (this.indexCache.has(forValue)) {\n return this.indexCache.get(forValue);\n }\n // check if the restrictive table (left part) has an index\n // cant use indexes on joined table (right part), see #306 unit test\n // todo: filter using indexes of tables (index propagation)'\n const mapped = this.indexOnRestrictingTableByValue.get(forValue);\n if (!mapped) {\n return null;\n }\n const ret = new JoinIndex(this, mapped);\n this.indexCache.set(forValue, ret);\n return ret;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n const strategy = chooseStrategy(e.transaction, this.strategies);\n return {\n id: e.idFor(this),\n _: 'join',\n restrictive: this.restrictive.explain(e),\n joined: this.joined.explain(e),\n inner: this.innerJoin,\n on: strategy ? {\n iterate: e.idFor(strategy.iterate),\n iterateSide: strategy.iterateSide,\n joinIndex: strategy.joinIndex.explain(e),\n matches: strategy.onValue.explain(e),\n ...strategy.othersPredicate ? { filtered: true } : {},\n } : {\n seqScan: this.seqScanExpression.explain(e),\n },\n };\n }\n}\n\n\nclass JoinMapAlias implements _IAlias {\n\n\n constructor(private owner: JoinSelection, private target: _IAlias, private map: string) {\n }\n\n *listColumns(): Iterable<IValue> {\n for (const c of this.target.listColumns()) {\n yield c.setWrapper(this.owner, x => (x as any)[this.map]);\n }\n }\n}\n\nexport class JoinIndex implements _IIndex {\n constructor(readonly owner: JoinSelection, private base: _IIndex) {\n }\n\n get expressions(): IndexExpression[] {\n return this.base.expressions;\n }\n\n stats(t: _Transaction, key?: IndexKey): Stats | null {\n return null;\n }\n\n iterateKeys() {\n return null;\n }\n\n entropy(op: IndexOp): number {\n const strategy = this.chooseStrategy(op.t);\n if (!strategy) {\n // very high entropy (catastophic join)\n return this.base.entropy(op) * this.owner.joined.entropy(op.t);\n }\n // todo: multiply that by the mean count per keys in strategy.joinIndex ?\n return this.base.entropy(op);\n }\n\n eqFirst(rawKey: IndexKey, t: _Transaction): Row | null {\n for (const i of this.enumerate({\n type: 'eq',\n key: rawKey,\n t,\n })) {\n return i;\n }\n return null;\n }\n\n private chooseStrategy(t: _Transaction) {\n const strats = this.owner.strategies.filter(x => x.iterateSide === 'restrictive');\n if (!strats.length) {\n return null;\n }\n return chooseStrategy(t, strats);\n }\n\n *enumerate(op: IndexOp): Iterable<Row> {\n const strategy = this.chooseStrategy(op.t);\n if (strategy) {\n for (const i of this.base.enumerate(op)) {\n yield* this.owner.iterateStrategyItem(i, strategy, op.t);\n }\n } else {\n // not sure we can reach that...\n this.owner.db.raiseGlobal('catastrophic-join-optimization');\n const all = [...this.owner.joined.enumerate(op.t)];\n\n for (const i of this.base.enumerate(op)) {\n yield* this.owner.iterateCatastrophicItem(i, all, 'restrictive', op.t);\n }\n }\n }\n\n\n explain(e: _Explainer): _IndexExplanation {\n const strat = this.chooseStrategy(e.transaction);\n return {\n _: 'indexOnJoin',\n index: this.base.explain(e),\n strategy: strat?.joinIndex?.explain(e) ?? 'catastrophic',\n }\n }\n}","import { TransformBase, FilterBase } from './transform-base';\nimport { _Transaction, IValue, _Explainer, _ISelection, _SelectExplanation, QueryError, Stats, nil, _IAlias, Row } from '../interfaces-private';\nimport { Evaluator } from '../evaluator';\nimport { Types, RecordCol } from '../datatypes';\nimport { ExprRef } from 'pgsql-ast-parser';\nimport { asSingleName, colToStr } from '../utils';\nimport { ColumnNotFound } from '../interfaces';\nimport { RecordType } from '../datatypes/t-record';\n\nexport function buildAlias(on: _ISelection, alias?: string): _ISelection {\n if (!alias) {\n return on as any;\n }\n if (on instanceof Alias && on.name === alias) {\n return on;\n }\n return new Alias(on, alias);\n}\n\nexport class Alias extends TransformBase implements _IAlias {\n\n private oldToThis = new Map<IValue, IValue>();\n private thisToOld = new Map<IValue, IValue>();\n private _columns: IValue[] | null = null;\n private asRecord!: IValue;\n\n get isExecutionWithNoResult(): boolean {\n return this.base.isExecutionWithNoResult;\n }\n\n constructor(sel: _ISelection, public name: string) {\n super(sel);\n }\n\n *listSelectableIdentities(): Iterable<IValue> {\n this.init();\n yield* super.listSelectableIdentities();\n yield this.asRecord;\n }\n\n\n rebuild() {\n this._columns = null;\n this.oldToThis.clear();\n this.thisToOld.clear();\n }\n\n selectAlias(alias: string): _IAlias | nil {\n if (this.name === alias) {\n return this;\n }\n return null;\n }\n\n listColumns(): Iterable<IValue> {\n return this.columns;\n }\n\n\n get debugId() {\n return this.base.debugId;\n }\n\n get columns(): ReadonlyArray<IValue> {\n this.init();\n return this._columns!;\n }\n init() {\n if (this._columns) {\n return;\n }\n this._columns = this.base.columns.map(x => {\n const ret = x.setOrigin(this);\n this.oldToThis.set(x, ret);\n this.thisToOld.set(ret, x);\n return ret;\n });\n\n // how to build a record out of this alias?\n this.asRecord = new Evaluator(\n RecordType.from(this)\n , this.name\n , Math.random().toString()\n , this._columns\n , v => ({ ...v })\n , { forceNotConstant: true });\n }\n\n stats(t: _Transaction): Stats | null {\n return this.base.stats(t);\n }\n\n enumerate(t: _Transaction): Iterable<Row> {\n return this.base.enumerate(t);\n }\n\n hasItem(value: Row, t: _Transaction): boolean {\n return this.base.hasItem(value, t);\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n const col = this._getColumn(column);\n if (col) {\n return col;\n }\n\n if (asSingleName(column) === this.name) {\n return this.asRecord;\n }\n\n if (nullIfNotFound) {\n return null;\n }\n throw new ColumnNotFound(colToStr(column));\n }\n\n private _getColumn(column: string | ExprRef): IValue | nil {\n if (typeof column !== 'string'\n && column.table) {\n if (column.table.schema && column.table.schema !== this.ownerSchema.name) {\n return null;\n }\n if (column.table.name !== this.name) {\n return null;\n }\n column = column.name;\n }\n const got = this.base.getColumn(column, true);\n if (!got) {\n return got;\n }\n this.init();\n const ret = this.oldToThis.get(got);\n if (!ret) {\n throw new Error('Corrupted alias');\n }\n return ret;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n // no need to explain an alias... it does nothing.\n return this.base.explain(e);\n // return {\n // id: e.idFor(this),\n // type: 'alias',\n // alias: this.as,\n // of: this.base.explain(e),\n // };\n }\n\n getIndex(...forValue: IValue[]) {\n return this.base.getIndex(...forValue.map(v => this.thisToOld.get(v) ?? v));\n }\n\n}","\nimport { QueryError } from '../interfaces';\nimport LRUCache from 'lru-cache';\nimport hash from 'object-hash';\nimport { Expr, parse, Statement } from 'pgsql-ast-parser';\nimport { errorMessage } from '../utils';\n\n\nconst astCache: LRUCache<any, any> = new LRUCache({\n max: 1000,\n});\n\nlet locationTracking = false;\nexport function enableStatementLocationTracking() {\n locationTracking = true;\n astCache.reset();\n}\n\n\n/** Parse an AST from SQL */\nexport function parseSql(sql: string): Statement[];\nexport function parseSql(sql: string, entry: 'expr'): Expr;\nexport function parseSql(sql: string, entry?: string): any {\n // when 'entry' is not specified, lets cache parsings\n // => better perf on repetitive requests\n const key = !entry && hash(sql);\n if (!entry) {\n const cached = astCache.get(key);\n if (cached) {\n return cached;\n }\n }\n\n try {\n\n let ret = parse(sql, {\n entry,\n locationTracking,\n });\n\n // cache result\n if (!entry) {\n astCache.set(key, ret);\n }\n return ret;\n\n } catch (e) {\n const msg = errorMessage(e);\n if (!/Syntax error/.test(msg)) {\n throw e;\n }\n\n\n // throw a nice parsing error.\n throw new QueryError(`💔 Your query failed to parse.\nThis is most likely due to a SQL syntax error. However, you might also have hit a bug, or an unimplemented feature of pg-mem.\nIf this is the case, please file an issue at https://github.com/oguimbal/pg-mem along with a query that reproduces this syntax error.\n\n👉 Failed query:\n\n ${sql}\n\n💀 ${msg}`);\n }\n\n}\n","import { Evaluator } from '../evaluator';\nimport { TypeBase } from './datatype-base';\nimport { DataType, nil, QueryError } from '../interfaces';\nimport { _IRelation, _ISchema, _IType, _Transaction } from '../interfaces-private';\n\nexport function asEnum(o: _IRelation | null): CustomEnumType {\n if (o && o.type === 'type' && o instanceof CustomEnumType) {\n return o;\n }\n throw new QueryError(`\"${o?.name}\" is not a enum`);\n}\nexport class CustomEnumType extends TypeBase<string> {\n\n get primary(): DataType {\n return this.name as any;\n }\n\n get name(): string {\n return this._name;\n }\n\n constructor(readonly schema: _ISchema\n , private readonly _name: string\n , readonly values: string[]) {\n super(null);\n }\n\n install() {\n this.schema._registerType(this);\n }\n\n doCanCast(to: _IType) {\n return to.primary === DataType.text;\n }\n\n doCast(value: Evaluator<string>, to: _IType<string>): Evaluator<any> | nil {\n return value;\n }\n\n prefer(type: _IType<any>): _IType | nil {\n return this;\n }\n\n doCanBuildFrom(from: _IType): boolean | nil {\n return from.primary === DataType.text;\n }\n\n doBuildFrom(value: Evaluator<string>, from: _IType<string>): Evaluator<string> | nil {\n return value\n .setConversion((raw: string) => {\n if (!this.values.includes(raw)) {\n throw new QueryError(`invalid input value for enum ${this.name}: \"${raw}\"`);\n }\n return raw;\n }\n , conv => ({ conv, toCenum: this.name }))\n }\n\n\n drop(t: _Transaction): void {\n this.schema._unregisterType(this);\n }\n}\n","import { watchUse, ignore, errorMessage, pushExecutionCtx, fromEntries } from '../utils';\nimport { _ISchema, _Transaction, _FunctionDefinition, _ArgDefDetails, _IType, _ISelection, _IStatement, NotSupported, QueryError, nil, OnStatementExecuted, _IStatementExecutor, StatementResult, Parameter, IValue } from '../interfaces-private';\nimport { toSql, Statement } from 'pgsql-ast-parser';\nimport { ExecuteCreateTable } from './schema-amends/create-table';\nimport { ExecuteCreateSequence } from './schema-amends/create-sequence';\nimport { locOf, ExecHelper } from './exec-utils';\nimport { CreateIndexExec } from './schema-amends/create-index';\nimport { Alter } from './schema-amends/alter';\nimport { AlterSequence } from './schema-amends/alter-sequence';\nimport { DropIndex } from './schema-amends/drop-index';\nimport { DropTable } from './schema-amends/drop-table';\nimport { DropSequence } from './schema-amends/drop-sequence';\nimport { CommitExecutor, RollbackExecutor, BeginStatementExec } from './transaction-statements';\nimport { TruncateTable } from './records-mutations/truncate-table';\nimport { ShowExecutor } from './show';\nimport { SetExecutor } from './set';\nimport { CreateEnum } from './schema-amends/create-enum';\nimport { CreateView } from './schema-amends/create-view';\nimport { CreateMaterializedView } from './schema-amends/create-materialized-view';\nimport { CreateSchema } from './schema-amends/create-schema';\nimport { CreateFunction } from './schema-amends/create-function';\nimport { DoStatementExec } from './schema-amends/do';\nimport { SelectExec } from './select';\nimport { withSelection, withStatement, withNameResolver, INameResolver } from '../parser/context';\nimport { DropType } from './schema-amends/drop-type';\nimport { AlterEnum } from \"./schema-amends/alter-enum\";\nimport { Comment } from './schema-amends/comment';\n\nconst detailsIncluded = Symbol('errorDetailsIncluded');\n\nexport class SimpleExecutor extends ExecHelper implements _IStatementExecutor {\n constructor(st: Statement, private exec: (t: _Transaction) => void, private opName?: string) {\n super(st);\n }\n execute(t: _Transaction): StatementResult {\n this.exec(t);\n return this.noData(t, this.opName);\n }\n}\n\nclass MapNameResolver implements INameResolver {\n constructor(private map: Map<string, any>, readonly isolated: boolean) {\n }\n resolve(name: string): IValue | nil {\n return this.map.get(name);\n }\n}\n\nexport class StatementExec implements _IStatement {\n private onExecutedCallbacks: OnStatementExecuted[] = []\n private executor?: _IStatementExecutor;\n private checkAstCoverage?: (() => void);\n\n constructor(readonly schema: _ISchema, private statement: Statement, private pAsSql: string | nil, private parameters?: Parameter[]) {\n }\n\n onExecuted(callback: OnStatementExecuted): void {\n this.onExecutedCallbacks.push(callback);\n }\n\n private get db() {\n return this.schema.db;\n }\n\n\n private _getExecutor(p: Statement): _IStatementExecutor {\n switch (p.type) {\n case 'start transaction':\n case 'begin':\n return new BeginStatementExec(p);\n case 'commit':\n return new CommitExecutor(p);\n case 'rollback':\n return new RollbackExecutor(p);\n case 'select':\n case 'delete':\n case 'update':\n case 'insert':\n case 'union':\n case 'union all':\n case 'values':\n case 'with recursive':\n case 'with':\n return new SelectExec(this, p);\n case 'truncate table':\n return new TruncateTable(p);\n case 'create table':\n return new ExecuteCreateTable(p);\n case 'create index':\n return new CreateIndexExec(this, p);\n case 'alter table':\n return new Alter(this, p);\n case 'create extension':\n return new SimpleExecutor(p, () => this.schema.executeCreateExtension(p));\n case 'create sequence':\n return new ExecuteCreateSequence(this.schema, p, false);\n case 'alter sequence':\n return new AlterSequence(this, p);\n case 'drop index':\n return new DropIndex(this, p);\n case 'drop table':\n return new DropTable(this, p);\n case 'drop sequence':\n return new DropSequence(this, p);\n case 'drop type':\n return new DropType(this, p);\n case 'show':\n return new ShowExecutor(p);\n case 'set':\n case 'set names':\n case 'set timezone':\n return new SetExecutor(p);\n case 'create enum':\n return new CreateEnum(this, p);\n case 'alter enum':\n return new AlterEnum(this, p)\n case 'create view':\n return new CreateView(this, p);\n case 'create materialized view':\n return new CreateMaterializedView(this, p);\n case 'create schema':\n return new CreateSchema(this, p);\n case 'create function':\n return new CreateFunction(this, p);\n case 'drop function':\n return new SimpleExecutor(p, () => this.schema.dropFunction(p), 'DROP');\n case 'do':\n return new DoStatementExec(this, p);\n case 'comment':\n return new Comment(this, p);\n case 'raise':\n case 'deallocate':\n ignore(p);\n return new SimpleExecutor(p, () => { });\n\n case 'refresh materialized view':\n // todo: a decent materialized view implementation\n ignore(p);\n return new SimpleExecutor(p, () => { });\n\n case 'tablespace':\n throw new NotSupported('\"TABLESPACE\" statement');\n case 'prepare':\n throw new NotSupported('\"PREPARE\" statement');\n case 'create composite type':\n throw new NotSupported('create composite type');\n case 'drop trigger':\n throw new NotSupported('\"drop trigger\" statement');\n case 'alter index':\n throw new NotSupported('\"alter index\" statement');\n default:\n throw NotSupported.never(p, 'statement type');\n }\n }\n\n\n\n\n compile(): _IStatementExecutor {\n return this.niceErrors(() => {\n\n if (this.executor) {\n return this.executor!;\n }\n // build the AST coverage checker\n let p = this.statement;\n if (!this.db.options.noAstCoverageCheck) {\n const watched = watchUse(p);\n p = watched.checked;\n this.checkAstCoverage = () => {\n const err = watched.check?.();\n if (err) {\n throw new NotSupported(err);\n }\n };\n }\n\n // build parameters context\n const namedParams = fromEntries(this.parameters?.filter(p => !!p.value?.id).map(x => [x.value!.id!, x]) ?? []);\n const nameResolver = new MapNameResolver(namedParams, true);\n\n\n // parse the AST\n withNameResolver(nameResolver,\n () => withStatement(this,\n () => withSelection(this.schema.dualTable.selection,\n () => this.executor = this._getExecutor(p)\n )\n )\n );\n\n return this.executor!;\n });\n }\n\n\n executeStatement(t: _Transaction, parametersValues: any[]): StatementResult {\n return this.niceErrors(() => pushExecutionCtx({\n transaction: t,\n schema: this.schema,\n parametersValues,\n }, () => {\n\n t.clearTransientData();\n\n // actual execution\n if (!this.executor) {\n throw new Error('Statement not prepared')\n }\n const result = this.executor.execute(t);\n\n // post-execution\n for (const s of this.onExecutedCallbacks) {\n s(t);\n }\n\n\n // check AST coverage if necessary\n this.checkAstCoverage?.();\n\n\n return result;\n }));\n }\n\n private niceErrors<T>(act: () => T): T {\n try {\n return act();\n } catch (e) {\n // handle reeantrant calls (avoids including error tips twice)\n if (e && typeof e === 'object' && (e as any)[detailsIncluded]) {\n throw e;\n }\n\n // include error tips\n if (!this.db.options.noErrorDiagnostic && (e instanceof Error) || e instanceof NotSupported) {\n\n // compute SQL\n const msgs = [e.message];\n\n\n if (e instanceof QueryError) {\n msgs.push(`🐜 This seems to be an execution error, which means that your request syntax seems okay,\n but the resulting statement cannot be executed → Probably not a pg-mem error.`);\n } else if (e instanceof NotSupported) {\n msgs.push(`👉 pg-mem is work-in-progress, and it would seem that you've hit one of its limits.`);\n } else {\n msgs.push('💥 This is a nasty error, which was unexpected by pg-mem. Also known \"a bug\" 😁 Please file an issue !')\n }\n\n if (!this.db.options.noErrorDiagnostic) {\n if (this.pAsSql) {\n msgs.push(`*️⃣ Failed SQL statement: ${this.pAsSql}`);\n } else {\n try {\n msgs.push(`*️⃣ Reconsituted failed SQL statement: ${toSql.statement(this.statement)}`);\n } catch (f) {\n msgs.push(`*️⃣ <Failed to reconsitute SQL - ${errorMessage(f)}>`);\n }\n }\n }\n msgs.push('👉 You can file an issue at https://github.com/oguimbal/pg-mem along with a way to reproduce this error (if you can), and the stacktrace:')\n e.message = msgs.join('\\n\\n') + '\\n\\n';\n }\n\n // set error location\n if (e && typeof e === 'object') {\n (e as any).location = locOf(this.statement);\n (e as any)[detailsIncluded] = true;\n }\n throw e;\n }\n }\n\n}\n","import { _IIndex, IValue, _ITable, _IDb, _Transaction, _Explainer, _IndexExplanation, IndexOp, IndexKey, Stats } from '../interfaces-private';\nimport { PermissionDeniedError, NotSupported } from '../interfaces';\n\nexport class TableIndex implements _IIndex {\n readonly expressions: IValue[];\n\n get hash(): string {\n throw new Error('not implemented');\n }\n explain(e: _Explainer): _IndexExplanation {\n throw new Error('not implemented');\n }\n\n stats(t: _Transaction, key?: IndexKey): Stats | null {\n return null;\n }\n\n iterateKeys() {\n return null;\n }\n\n constructor(readonly onTable: _ITable & { itemsByTable(table: string, t: _Transaction): Iterable<any>; ownSymbol: any }, private col: IValue) {\n this.expressions = [col];\n }\n\n get indexName(): string {\n return 'index_table_name_name';\n }\n\n entropy(op: IndexOp): number {\n return this.onTable.db.listSchemas()\n .reduce((tot, s) => tot + s.tablesCount(op.t) * 10 * 3, 0);\n }\n\n\n add(raw: any): void {\n throw new PermissionDeniedError('tables');\n }\n\n eqFirst([key]: any, t: _Transaction) {\n for (const its of this.onTable.itemsByTable(key, t)) {\n return its;\n }\n }\n *eq([rawKey]: any, t: _Transaction): Iterable<any> {\n for (const its of this.onTable.itemsByTable(rawKey, t)) {\n yield its;\n }\n }\n\n *nin(keys: any[][], t: _Transaction) {\n const raws = keys.map(x => x[0]) as any[];\n for (const i of this.onTable.selection.enumerate(t)) {\n if (raws.includes(i.table_name)) {\n continue;\n }\n yield i;\n }\n }\n\n *neq([rawKey]: any, t: _Transaction) {\n for (const i of this.onTable.selection.enumerate(t)) {\n if (i.table_name !== rawKey) {\n yield i;\n }\n }\n }\n *gt(rawKey: any, t: _Transaction): Iterable<any> {\n for (const i of this.onTable.selection.enumerate(t)) {\n if (i.table_name > rawKey) {\n yield i;\n }\n }\n }\n *lt(rawKey: any, t: _Transaction): Iterable<any> {\n for (const i of this.onTable.selection.enumerate(t)) {\n if (i.table_name < rawKey) {\n yield i;\n }\n }\n }\n *ge(rawKey: any, t: _Transaction): Iterable<any> {\n for (const i of this.onTable.selection.enumerate(t)) {\n if (i.table_name >= rawKey) {\n yield i;\n }\n }\n }\n *le(rawKey: any, t: _Transaction): Iterable<any> {\n for (const i of this.onTable.selection.enumerate(t)) {\n if (i.table_name <= rawKey) {\n yield i;\n }\n }\n }\n\n\n enumerate(op: IndexOp): Iterable<any> {\n switch (op.type) {\n case 'eq':\n return this.eq(op.key, op.t);\n case 'neq':\n return this.neq(op.key, op.t);\n case 'ge':\n return this.ge(op.key, op.t);\n case 'le':\n return this.le(op.key, op.t);\n case 'gt':\n return this.gt(op.key, op.t);\n case 'lt':\n return this.lt(op.key, op.t);\n case 'outside':\n return this.outside(op.lo, op.hi, op.t);\n case 'inside':\n return this.inside(op.lo, op.hi, op.t);\n case 'nin':\n return this.nin(op.keys, op.t);\n default:\n throw NotSupported.never(op['type']);\n }\n }\n\n *outside(lo: IndexKey, hi: IndexKey, t: _Transaction): Iterable<any> {\n yield* this.lt(lo, t);\n yield* this.gt(hi, t);\n }\n\n *inside(lo: IndexKey, hi: IndexKey, t: _Transaction): Iterable<any> {\n throw new Error('Not implemented');\n }\n}","module.exports = require(\"json-stable-stringify\");","import { IMemoryTable, Schema, QueryError, TableEvent, PermissionDeniedError, NotSupported, IndexDef, ISubscription, nil, ColumnDef } from './interfaces';\nimport { IValue, _ITable, setId, getId, CreateIndexDef, CreateIndexColDef, _Transaction, _ISchema, _Column, _IType, SchemaField, _IIndex, _Explainer, _SelectExplanation, ChangeHandler, Stats, DropHandler, IndexHandler, asIndex, Reg, ChangeOpts, _IConstraint, TruncateHandler, TruncateOpts, Row } from './interfaces-private';\nimport { buildValue } from './parser/expression-builder';\nimport { BIndex } from './schema/btree-index';\nimport { columnEvaluator } from './transforms/selection';\nimport { nullIsh, deepCloneSimple, Optional, indexHash, findTemplate, colByName } from './utils';\nimport { Map as ImMap } from 'immutable';\nimport { CreateColumnDef, TableConstraintForeignKey, TableConstraint, Expr, Name, ExprRef } from 'pgsql-ast-parser';\nimport { ColRef } from './column';\nimport { buildAlias, Alias } from './transforms/alias';\nimport { DataSourceBase } from './transforms/transform-base';\nimport { ForeignKey } from './constraints/foreign-key';\nimport { Types } from './datatypes';\nimport { withSelection } from './parser/context';\nimport { SubscriptionConstraint } from './constraints/subscription';\nimport { ConstraintWrapper } from './constraints/wrapped';\nimport { IndexConstraint } from './constraints/index-cst';\nimport { cleanResults } from './execution/clean-results';\n\n\ntype Raw = ImMap<string, Row>;\n\n\ninterface ChangeSub {\n before: Set<ChangeHandler>;\n after: Set<ChangeHandler>;\n}\n\ninterface ChangePlan {\n before(): void\n after(): void;\n}\n\nclass ColumnManager {\n private _columns?: readonly IValue[];\n readonly map = new Map<string, ColRef>();\n\n get columns(): readonly IValue[] {\n if (!this._columns) {\n this._columns = Object.freeze(Array.from(this.map.values(), c => c.expression));\n }\n return this._columns!;\n }\n invalidateColumns() {\n this._columns = undefined;\n }\n\n // Pass-through methods\n get = this.map.get.bind(this.map);\n has = this.map.has.bind(this.map)\n values = this.map.values.bind(this.map);\n\n set(name: string, colDef: ColRef) {\n this.invalidateColumns();\n return this.map.set(name, colDef);\n }\n\n delete(name: string) {\n this.invalidateColumns();\n return this.map.delete(name);\n }\n}\n\nexport class MemoryTable extends DataSourceBase implements IMemoryTable<any>, _ITable {\n comment: string | nil;\n get isExecutionWithNoResult(): boolean {\n return false;\n }\n private handlers = new Map<TableEvent, Set<() => void>>();\n readonly selection: Alias;\n private _reg?: Reg;\n get reg(): Reg {\n if (!this._reg) {\n throw new QueryError(`relation \"${this.name}\" does not exist`);\n }\n return this._reg;\n }\n get columns() {\n return this.columnMgr.columns;\n }\n private it = 0;\n private cstGen = 0;\n private hasPrimary: BIndex | null = null;\n private readonly = false;\n hidden = false;\n private dataId = Symbol();\n private serialsId: symbol = Symbol();\n private constraintsByName = new Map<string, _IConstraint>();\n private indexByHashAndName = new Map<string, Map<string, {\n index: BIndex;\n expressions: IValue[];\n }>>();\n readonly columnMgr = new ColumnManager();\n name: string;\n\n private changeHandlers = new Map<_Column | null, ChangeSub>();\n private truncateHandlers = new Set<TruncateHandler>();\n private drophandlers = new Set<DropHandler>();\n private indexHandlers = new Set<IndexHandler>();\n\n get type() {\n return 'table' as const;\n }\n\n get debugId() {\n return this.name;\n }\n\n entropy(t: _Transaction) {\n return this.bin(t).size;\n }\n\n isOriginOf(a: IValue): boolean {\n return a.origin === this.selection;\n }\n\n constructor(schema: _ISchema, t: _Transaction, _schema: Schema) {\n super(schema);\n this.name = _schema.name;\n this.selection = buildAlias(this, this.name) as Alias;\n\n // fields\n for (const s of _schema.fields) {\n this.addColumn(s, t);\n }\n\n\n // other table constraints\n for (const c of _schema.constraints ?? []) {\n this.addConstraint(c, t);\n }\n }\n\n register() {\n // once fields registered,\n // then register the table\n // (column registrations need it not to be registered yet)\n this._reg = this.ownerSchema._reg_register(this);\n return this;\n }\n\n\n stats(t: _Transaction): Stats | null {\n return {\n count: this.bin(t).size,\n };\n }\n\n rename(name: string) {\n const on = this.name;\n if (on === name) {\n return this;\n }\n this.name = name;\n this.ownerSchema._reg_rename(this, on, name);\n (this.selection as Alias).name = this.name;\n this.db.onSchemaChange();\n return this;\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n return colByName(this.columnMgr.map, column, nullIfNotFound)\n ?.expression;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n _: 'table',\n table: this.name,\n };\n }\n\n addColumn(column: SchemaField | CreateColumnDef, t: _Transaction): _Column {\n if ('dataType' in column) {\n const tp: SchemaField = {\n ...column,\n name: column.name.name,\n type: this.ownerSchema.getType(column.dataType),\n };\n delete (tp as any as Optional<CreateColumnDef>).dataType;\n return this.addColumn(tp, t);\n }\n\n if (this.columnMgr.has(column.name)) {\n throw new QueryError(`Column \"${column.name}\" already exists`);\n }\n const type = typeof column.type === 'string'\n ? this.ownerSchema.getType(column.type)\n : column.type;\n const cref = new ColRef(this, columnEvaluator(this.selection, column.name, type as _IType), column, column.name);\n\n\n // auto increments\n if (column.serial) {\n t.set(this.serialsId, t.getMap(this.serialsId).set(column.name, 0));\n }\n\n this.columnMgr.set(column.name, cref);\n\n try {\n if (column.constraints?.length) {\n cref.addConstraints(column.constraints, t);\n }\n const hasDefault = column.constraints?.some(x => x.type === 'default');\n if (!hasDefault) {\n this.remapData(t, x => (x as any)[column.name] = (x as any)[column.name] ?? null);\n }\n } catch (e) {\n this.columnMgr.delete(column.name);\n throw e;\n }\n\n // once constraints created, reference them. (constraint creation might have thrown)m\n this.db.onSchemaChange();\n this.selection.rebuild();\n return cref;\n }\n\n\n getColumnRef(column: string): ColRef;\n getColumnRef(column: string, nullIfNotFound?: boolean): ColRef | nil;\n getColumnRef(column: string, nullIfNotFound?: boolean): ColRef | nil {\n const got = this.columnMgr.get(column);\n if (!got) {\n if (nullIfNotFound) {\n return null;\n }\n throw new QueryError(`Column \"${column}\" not found`);\n }\n return got;\n }\n\n bin(t: _Transaction) {\n return t.getMap<Raw>(this.dataId);\n }\n\n setBin(t: _Transaction, val: Raw) {\n return t.set(this.dataId, val);\n }\n\n on(event: TableEvent, handler: () => any): ISubscription {\n let lst = this.handlers.get(event);\n if (!lst) {\n this.handlers.set(event, lst = new Set());\n }\n lst.add(handler);\n return {\n unsubscribe: () => lst!.delete(handler),\n };\n }\n\n raise(event: TableEvent) {\n const got = this.handlers.get(event);\n for (const h of got ?? []) {\n h();\n }\n this.db.raiseTable(this.name, event);\n }\n\n setReadonly() {\n this.readonly = true;\n return this;\n }\n setHidden() {\n this.hidden = true;\n return this;\n }\n\n\n *enumerate(t: _Transaction): Iterable<Row> {\n this.raise('seq-scan');\n for (const v of this.bin(t).values()) {\n yield v;\n }\n }\n\n find(template?: Row, columns?: (keyof Row)[]): Row[] {\n return cleanResults([...findTemplate(this.selection, this.db.data, template, columns)]);\n }\n\n remapData(t: _Transaction, modify: (newCopy: Row) => any) {\n // convert raw data (⚠ must copy the whole thing,\n // because it can throw in the middle of this process !)\n // => this would result in partially converted tables.\n const converted = this.bin(t).map(x => {\n const copy = { ...x };\n modify(copy);\n return copy;\n });\n this.setBin(t, converted);\n }\n\n insert(toInsert: Row): Row | null {\n const ret = this.doInsert(this.db.data, deepCloneSimple(toInsert));\n if (!ret) {\n return null\n }\n return deepCloneSimple(ret);\n }\n\n doInsert(t: _Transaction, toInsert: Row, opts?: ChangeOpts): Row | null {\n if (this.readonly) {\n throw new PermissionDeniedError(this.name);\n }\n\n // get ID of this item\n const newId = this.name + '_' + (this.it++);\n setId(toInsert, newId);\n\n // serial (auto increments) columns\n let serials = t.getMap(this.serialsId);\n for (const [k, v] of serials.entries()) {\n if (!nullIsh((toInsert as any)[k])) {\n continue;\n }\n (toInsert as any)[k] = v + 1;\n serials = serials.set(k, v + 1);\n }\n t.set(this.serialsId, serials);\n\n // set default values\n for (const c of this.columnMgr.values()) {\n c.setDefaults(toInsert, t);\n }\n\n // check change handlers (foreign keys)\n const changePlan = this.changePlan(t, null, toInsert, opts);\n changePlan.before();\n\n // check \"on conflict\"\n const onConflict = opts?.onConflict;\n if (onConflict) {\n if ('ignore' in onConflict) {\n if (onConflict.ignore === 'all') {\n for (const map of this.indexByHashAndName.values()) {\n for (const k of map.values()) {\n if (!k.index.unique) {\n continue;\n }\n const key = k.index.buildKey(toInsert, t);\n const found = k.index.eqFirst(key, t);\n if (found) {\n // This function returns the inserted row,\n // but in this case we had a conflict and no row was inserted.\n // So we return null.\n return null; // ignore.\n }\n }\n }\n } else {\n const index = onConflict.ignore as BIndex;\n const key = index.buildKey(toInsert, t);\n const found = index.eqFirst(key, t);\n if (found) {\n return found; // ignore.\n }\n }\n } else {\n const index = onConflict.onIndex as BIndex;\n const key = index.buildKey(toInsert, t);\n const got = index.eqFirst(key, t);\n if (got) {\n // update !\n onConflict.update(got, toInsert, t);\n return this.update(t, got);\n }\n }\n }\n\n // check constraints\n for (const c of this.columnMgr.values()) {\n c.checkConstraints(toInsert, t);\n }\n\n // check change handlers (foreign keys)\n changePlan.after();\n\n // index & check indx contrainsts\n this.indexElt(t, toInsert);\n this.setBin(t, this.bin(t).set(newId, toInsert));\n return toInsert;\n }\n\n private changePlan(t: _Transaction, old: Row | null, neu: Row | null, _opts: ChangeOpts | nil): ChangePlan {\n const opts = _opts ?? {};\n let iter: () => IterableIterator<ChangeSub>;\n if (!old || !neu) {\n iter = () => this.changeHandlers.values();\n } else {\n const ret: ChangeSub[] = [];\n const global = this.changeHandlers.get(null);\n if (global) {\n ret.push(global);\n }\n for (const def of this.columnMgr.values()) {\n const h = this.changeHandlers.get(def);\n if (!h) {\n continue;\n }\n const oldVal = (old as any)[def.expression.id!];\n const neuVal = (neu as any)[def.expression.id!];\n if (def.expression.type.equals(oldVal, neuVal)) {\n continue;\n }\n ret.push(h);\n }\n iter = ret[Symbol.iterator].bind(ret);\n }\n return {\n before: () => {\n const ran = new Set();\n for (const { before } of iter()) {\n for (const b of before) {\n if (!b || ran.has(b)) {\n continue;\n }\n b(old, neu, t, opts);\n ran.add(b);\n }\n }\n },\n after: () => {\n const ran = new Set();\n for (const { after } of iter()) {\n for (const a of after) {\n if (!a || ran.has(a)) {\n continue;\n }\n a(old, neu, t, opts);\n ran.add(a);\n }\n }\n },\n }\n }\n\n update(t: _Transaction, toUpdate: Row): Row {\n if (this.readonly) {\n throw new PermissionDeniedError(this.name);\n }\n const bin = this.bin(t);\n const id = getId(toUpdate);\n const exists = bin.get(id) ?? null;\n\n // set default values\n for (const c of this.columnMgr.values()) {\n c.setDefaults(toUpdate, t);\n }\n\n\n\n // check change handlers (foreign keys)\n const changePlan = this.changePlan(t, exists, toUpdate, null);\n changePlan.before();\n changePlan.after();\n\n\n // check constraints\n for (const c of this.columnMgr.values()) {\n c.checkConstraints(toUpdate, t);\n }\n\n // remove old version from index\n if (exists) {\n for (const map of this.indexByHashAndName.values()) {\n for (const k of map.values()) {\n k.index.delete(exists, t);\n }\n }\n }\n\n // add new version to index\n this.indexElt(t, toUpdate);\n\n // store raw\n this.setBin(t, bin.delete(id).set(id, toUpdate));\n return toUpdate;\n }\n\n delete(t: _Transaction, toDelete: Row) {\n const id = getId(toDelete);\n const bin = this.bin(t);\n const got = bin.get(id);\n if (!id || !got) {\n throw new Error('Unexpected error: an operation has been asked on an item which does not belong to this table');\n }\n\n // check change handlers (foreign keys)\n const changePlan = this.changePlan(t, toDelete, null, null);\n changePlan.before();\n changePlan.after();\n\n // remove from indices\n for (const map of this.indexByHashAndName.values()) {\n for (const k of map.values()) {\n k.index.delete(got, t);\n }\n }\n this.setBin(t, bin.delete(id));\n\n return got;\n }\n\n truncate(t: _Transaction, _opts?: TruncateOpts): void {\n const opts: TruncateOpts = _opts ?? {};\n // call truncate handlers\n for (const h of this.truncateHandlers) {\n h(t, opts);\n }\n // truncate indices\n for (const map of this.indexByHashAndName.values()) {\n for (const k of map.values()) {\n k.index.truncate(t);\n }\n }\n this.setBin(t, ImMap());\n }\n\n\n private indexElt(t: _Transaction, toInsert: Row) {\n for (const map of this.indexByHashAndName.values()) {\n for (const k of map.values()) {\n k.index.add(toInsert, t);\n }\n }\n }\n\n hasItem(item: Row, t: _Transaction) {\n const id = getId(item);\n return this.bin(t).has(id);\n }\n\n getIndex(...forValues: IValue[]): _IIndex | nil {\n if (!forValues.length || forValues.some(x => !x || !this.isOriginOf(x))) {\n return null;\n }\n const ihash = indexHash(forValues);\n if (this.hasPrimary?.hash === ihash) {\n return this.hasPrimary;\n }\n const map = this.indexByHashAndName.get(ihash);\n const got = map?.values().next().value;\n return got?.index ?? null;\n }\n\n constraintNameGen(constraintName?: string) {\n return constraintName\n ?? (this.name + '_constraint_' + (++this.cstGen));\n }\n\n addCheck(_t: _Transaction, check: Expr, constraintName?: string): _IConstraint {\n constraintName = this.constraintNameGen(constraintName);\n this.checkNoConstraint(constraintName);\n const getter = withSelection(this.selection, () => buildValue(check).cast(Types.bool));\n\n const checkVal = (t: _Transaction, v: any) => {\n const value = getter.get(v, t);\n if (value === false) {\n throw new QueryError(`check constraint \"${constraintName}\" is violated by some row`)\n }\n }\n\n // check that everything matches (before adding check)\n for (const v of this.enumerate(_t)) {\n checkVal(_t, v);\n }\n\n // add a check for future updates\n const sub = this.onBeforeChange('all', (old, neu, ct) => {\n if (!neu) {\n return;\n }\n checkVal(ct, neu);\n });\n\n const ret = new SubscriptionConstraint(constraintName, () => sub.unsubscribe());\n return new ConstraintWrapper(this.constraintsByName, ret);\n }\n\n\n createIndex(t: _Transaction, expressions: CreateIndexDef): _IConstraint | nil;\n createIndex(t: _Transaction, expressions: Name[], type: 'primary' | 'unique', indexName?: string | nil): _IConstraint;\n createIndex(t: _Transaction, expressions: Name[] | CreateIndexDef, _type?: 'primary' | 'unique', _indexName?: string): _IConstraint | nil {\n if (this.readonly) {\n throw new PermissionDeniedError(this.name);\n }\n if (!_indexName && _type === 'primary') {\n _indexName = `${this.name}_pkey`;\n }\n if (Array.isArray(expressions)) {\n const keys: CreateIndexColDef[] = [];\n for (const e of expressions) {\n const getter = this.selection.getColumn(e.name);\n keys.push({\n value: getter,\n });\n }\n return this.createIndex(t, {\n columns: keys,\n primary: _type === 'primary',\n notNull: _type === 'primary',\n unique: !!_type,\n indexName: _indexName,\n });\n }\n\n if (!expressions?.columns?.length) {\n throw new QueryError('Empty index');\n }\n\n if (expressions.primary && this.hasPrimary) {\n throw new QueryError('Table ' + this.name + ' already has a primary key');\n }\n if (expressions.primary) {\n expressions.notNull = true;\n expressions.unique = true;\n }\n\n\n const ihash = indexHash(expressions.columns.map(x => x.value));\n\n const indexName = this.determineIndexRelName(expressions.indexName, ihash, expressions.ifNotExists, 'idx');\n if (!indexName) {\n return null;\n }\n this.checkNoConstraint(indexName);\n\n\n const index = new BIndex(t\n , indexName\n , expressions.columns\n , this\n , ihash\n , !!expressions.unique\n , !!expressions.notNull\n , expressions.predicate);\n\n // fill index (might throw if constraint not respected)\n const bin = this.bin(t);\n for (const e of bin.values()) {\n index.add(e, t);\n }\n\n // =========== reference index ============\n this.indexHandlers.forEach(h => h('create', index));\n // ⚠⚠ This must be done LAST, to avoid throwing an execption if index population failed\n for (const col of index.expressions) {\n for (const used of col.usedColumns) {\n this.getColumnRef(used.id!).usedInIndexes.add(index);\n }\n }\n const indexesByHash = this.indexByHashAndName.get(ihash) || new Map<string, { index: BIndex; expressions: IValue[] }>();\n indexesByHash.set(indexName, { index, expressions: index.expressions });\n this.indexByHashAndName.set(ihash, indexesByHash);\n if (expressions.primary) {\n this.hasPrimary = index;\n }\n const ret = new IndexConstraint(indexName, index, this);\n this.constraintsByName.set(indexName, ret);\n return ret;\n }\n\n private determineIndexRelName(indexName: string | nil, ihash: string, ifNotExists: boolean | nil, sufix: string): string | nil {\n if (indexName) {\n if (this.ownerSchema.getOwnObject(indexName)) {\n if (ifNotExists) {\n return null;\n }\n throw new QueryError(`relation \"${indexName}\" already exists`);\n }\n return indexName;\n } else {\n const baseName = indexName = `${this.name}_${ihash}_${sufix}`;\n let i = 1;\n while (this.ownerSchema.getOwnObject(indexName)) {\n indexName = baseName + (i++);\n }\n return indexName!;\n }\n }\n\n dropIndex(t: _Transaction, uName: string) {\n const u = asIndex(this.ownerSchema.getOwnObject(uName)) as BIndex;\n if (!u || !this.indexByHashAndName.has(u.hash) || !this.indexByHashAndName.get(u.hash)?.has(uName)) {\n throw new QueryError('Cannot drop index that does not belong to this table: ' + uName);\n }\n this.indexHandlers.forEach(h => h('drop', u));\n this.indexByHashAndName.get(u.hash)?.delete(uName);\n if (this.indexByHashAndName.get(u.hash)?.size == 0) {\n this.indexByHashAndName.delete(u.hash);\n }\n u.dropFromData(t);\n this.ownerSchema._reg_unregister(u);\n this.constraintsByName.delete(uName);\n if (this.hasPrimary === u) {\n this.hasPrimary = null;\n }\n for (const col of u.expressions) {\n for (const used of col.usedColumns) {\n this.getColumnRef(used.id!).usedInIndexes.delete(u);\n }\n }\n }\n\n\n onIndex(sub: IndexHandler): ISubscription {\n this.indexHandlers.add(sub);\n return {\n unsubscribe: () => this.indexHandlers.delete(sub),\n };\n }\n\n listIndices(): IndexDef[] {\n return ([] as IndexDef[]).concat(...\n [...this.indexByHashAndName.values()]\n .map(indexMap => [...indexMap.values()]\n .map<IndexDef>(x => ({\n name: x.index.name!,\n expressions: x.expressions.map(x => x.id!),\n unique: x.index.unique,\n }))\n )\n );\n }\n\n get primaryIndex(): IndexDef | null {\n return this.hasPrimary && {\n name: this.hasPrimary.name!,\n expressions: this.hasPrimary.expressions.map(x => x.id!),\n unique: this.hasPrimary.unique,\n };\n }\n\n addForeignKey(cst: TableConstraintForeignKey, t: _Transaction): _IConstraint | nil {\n const ihash = indexHash(cst.localColumns.map(x => x.name));\n const constraintName = this.determineIndexRelName(cst.constraintName?.name, ihash, false, 'fk');\n if (!constraintName) {\n return null;\n }\n const ret = new ForeignKey(constraintName)\n .install(t, cst, this);\n return new ConstraintWrapper(this.constraintsByName, ret);\n }\n\n getConstraint(constraint: string): _IConstraint | nil {\n return this.constraintsByName.get(constraint);\n }\n\n addConstraint(cst: TableConstraint, t: _Transaction): _IConstraint | nil {\n switch (cst.type) {\n case 'foreign key':\n return this.addForeignKey(cst, t);\n case 'primary key':\n return this.createIndex(t, cst.columns, 'primary', cst.constraintName?.name);\n case 'unique':\n return this.createIndex(t, cst.columns, 'unique', cst.constraintName?.name);\n case 'check':\n return this.addCheck(t, cst.expr, cst.constraintName?.name);\n default:\n throw NotSupported.never(cst, 'constraint type');\n }\n }\n\n private checkNoConstraint(name: string) {\n if (this.constraintsByName.has(name)) {\n throw new QueryError(`relation \"${name}\" already exists`, '42P07');\n }\n }\n\n onBeforeChange(columns: 'all' | (string | _Column)[], check: ChangeHandler): ISubscription {\n return this._subChange('before', columns, check);\n }\n onCheckChange(columns: string[], check: ChangeHandler): ISubscription {\n return this._subChange('before', columns, check);\n }\n\n *getColumns(): Iterable<ColumnDef> {\n for (const c of this.columns) {\n const col = this.columnMgr.get(c.id!)!;\n yield {\n name: c.id!,\n type: c.type,\n nullable: !col.notNull,\n generated: col.generated,\n comment: col.comment,\n hasDefault: !!col.default,\n };\n }\n }\n\n private _subChange(key: keyof ChangeSub, columns: 'all' | (string | _Column)[], check: ChangeHandler): ISubscription {\n const unsubs: (() => void)[] = [];\n\n const add = (ref: _Column | ColRef | null) => {\n let ch = this.changeHandlers.get(ref);\n if (!ch) {\n this.changeHandlers.set(ref, ch = {\n after: new Set(),\n before: new Set(),\n });\n }\n ch[key].add(check);\n unsubs.push(() => ch![key].delete(check));\n }\n if (columns === 'all') {\n add(null);\n } else {\n for (const c of columns) {\n const ref = typeof c === 'string'\n ? this.getColumnRef(c)\n : c;\n add(ref);\n }\n }\n return {\n unsubscribe: () => {\n for (const u of unsubs) {\n u();\n }\n }\n }\n }\n\n\n drop(t: _Transaction, cascade: boolean) {\n this.drophandlers.forEach(d => d(t, cascade));\n t.delete(this.dataId);\n for (const map of this.indexByHashAndName.values()) {\n for (const i of map.values()) {\n i.index.dropFromData(t);\n }\n }\n // todo should also check foreign keys, cascade, ...\n return this.ownerSchema._reg_unregister(this);\n }\n\n onDrop(sub: DropHandler): ISubscription {\n this.drophandlers.add(sub);\n return {\n unsubscribe: () => {\n this.drophandlers.delete(sub);\n }\n }\n }\n\n onTruncate(sub: TruncateHandler): ISubscription {\n this.truncateHandlers.add(sub);\n return {\n unsubscribe: () => {\n this.truncateHandlers.delete(sub);\n }\n }\n\n }\n}\n","import { FilterBase } from './transform-base';\nimport { _ISelection, _Explainer, _SelectExplanation, _Transaction, Stats, Row } from '../interfaces-private';\n\nexport class ArrayFilter extends FilterBase {\n\n get index() {\n return null;\n }\n\n entropy() {\n return this.rows.length;\n }\n\n hasItem(raw: Row): boolean {\n return this.rows.includes(raw);\n }\n\n getIndex() {\n return null;\n }\n\n constructor(fromTable: _ISelection, public rows: Row[]) {\n super(fromTable);\n }\n\n enumerate(): Iterable<Row> {\n return this.rows;\n }\n\n stats(t: _Transaction): Stats | null {\n return {\n count: this.rows.length,\n };\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'constantSet',\n rawArrayLen: this.rows.length,\n }\n }\n}","import { _IConstraint, _IIndex, _ITable, _Transaction } from '../interfaces-private';\n\nexport class IndexConstraint implements _IConstraint {\n\n constructor(readonly name: string, readonly index: _IIndex, private table: _ITable) {\n }\n\n uninstall(t: _Transaction): void {\n this.table.dropIndex(t, this.name);\n }\n}","import { _Column, IValue, _IIndex, NotSupported, _Transaction, QueryError, _IType, SchemaField, ChangeHandler, nil, ISubscription, DropHandler } from './interfaces-private';\nimport type { MemoryTable } from './table';\nimport { Evaluator } from './evaluator';\nimport { ColumnConstraint, AlterColumn } from 'pgsql-ast-parser';\nimport { ignore, nullIsh } from './utils';\nimport { columnEvaluator } from './transforms/selection';\nimport { BIndex } from './schema/btree-index';\nimport { GeneratedIdentityConstraint } from './constraints/generated-identity';\nimport { buildValue } from './parser/expression-builder';\nimport { withSelection } from './parser/context';\nimport { GeneratedComputedConstraint } from './constraints/generated-from-expr';\n\n\n\nexport class ColRef implements _Column {\n comment: string | nil;\n default: IValue | nil;\n notNull = false;\n generated = false;\n usedInIndexes = new Set<BIndex>();\n private drophandlers = new Set<DropHandler>();\n\n constructor(readonly table: MemoryTable\n , public expression: Evaluator\n , _schema: SchemaField\n , public name: string) {\n }\n\n addConstraints(clist: ColumnConstraint[], t: _Transaction): this {\n const notNull = clist.some(x => x.type === 'not null' || x.type === 'primary key');\n const acceptNil = clist.some(x => x.type === 'null');\n if (notNull && acceptNil) {\n throw new QueryError(`conflicting NULL/NOT NULL declarations for column \"${this.name}\" of table \"${this.table.name}\"`)\n }\n for (const c of clist) {\n const cname = c.constraintName;\n switch (c.type) {\n case 'not null':\n case 'null':\n // dealt with that above.\n break;\n case 'primary key':\n this.table.createIndex(t, {\n columns: [{ value: this.expression }],\n primary: true,\n // default constraint name:\n indexName: cname?.name ?? `${this.table.name}_pkey`,\n });\n break;\n case 'unique':\n this.table.createIndex(t, {\n columns: [{ value: this.expression }],\n notNull: notNull,\n unique: true,\n // default constraint name:\n indexName: cname?.name ?? `${this.table.name}_${this.name}_key`,\n });\n break;\n case 'default':\n this.alter({\n type: 'set default',\n default: c.default,\n updateExisting: true,\n }, t);\n break;\n case 'check':\n this.table.addCheck(t, c.expr, cname?.name);\n break;\n case 'add generated':\n this.generated = true;\n if (c.expression) {\n ignore(c.always, c.stored);\n new GeneratedComputedConstraint(c.constraintName?.name, this, c.expression)\n .install(t, c);\n } else {\n new GeneratedIdentityConstraint(c.constraintName?.name, this)\n .install(t, c);\n }\n break;\n case 'reference':\n this.table.addForeignKey({\n ...c,\n type: 'foreign key',\n localColumns: [{ name: this.name }],\n }, t);\n break;\n default:\n throw NotSupported.never(c, 'add constraint type');\n }\n }\n if (notNull) {\n this.addNotNullConstraint(t);\n }\n this.table.db.onSchemaChange();\n return this;\n }\n\n\n private addNotNullConstraint(t: _Transaction) {\n // check has no null value\n const bin = this.table.bin(t);\n for (const e of bin.values()) {\n const val = this.expression.get(e, t);\n if (nullIsh(val)) {\n throw new QueryError(`Cannot add not null constraint on column \"${this.expression.id}\": it contains null values`);\n }\n }\n this.notNull = true;\n\n // just amend schema (for cloning)\n this.table.db.onSchemaChange();\n }\n\n rename(to: string, t: _Transaction): this {\n if (this.table.getColumnRef(to, true)) {\n throw new QueryError(`Column \"${to}\" already exists`);\n }\n\n // first, move data (this cannot throw => OK to modify mutable data)\n this.table.remapData(t, v => {\n const ov = v[this.expression.id!];\n delete v[this.expression.id!];\n v[to] = ov;\n });\n // for (const v of this.table.bin(t)) {\n // const ov = v[this.expression.id];\n // delete v[this.expression.id];\n // v[to] = ov;\n // }\n\n // === do nasty things to rename column\n this.replaceExpression(to, this.expression.type);\n this.table.db.onSchemaChange();\n this.table.selection.rebuild();\n this.name = to;\n return this;\n }\n\n alter(alter: AlterColumn, t: _Transaction): this {\n withSelection(this.table.selection, () => {\n switch (alter.type) {\n case 'drop default':\n this.default = null;\n break;\n case 'set default':\n if (alter.default.type === 'null') {\n this.default = null;\n break;\n }\n const df = buildValue(alter.default);\n if (!df.isConstant) {\n throw new QueryError('cannot use column references in default expression');\n }\n if (alter.updateExisting) {\n this.table.remapData(t, x => {\n x[this.expression.id!] = df.get();\n });\n }\n this.default = df;\n break;\n case 'set not null':\n this.addNotNullConstraint(t);\n break;\n case 'drop not null':\n this.notNull = false;\n break;\n case 'set type':\n const newType = this.table.ownerSchema.getType(alter.dataType);\n const conv = this.expression.cast(newType);\n const eid = this.expression.id;\n\n this.table.remapData(t, x => x[this.expression.id!] = conv.get(x, t));\n\n // once converted, do nasty things to change expression\n this.replaceExpression(eid!, newType);\n break;\n case 'add generated':\n new GeneratedIdentityConstraint(alter.constraintName?.name, this)\n .install(t, alter);\n break;\n default:\n throw NotSupported.never(alter, 'alter column type');\n }\n });\n this.table.db.onSchemaChange();\n this.table.selection.rebuild();\n return this;\n }\n\n private replaceExpression(newId: string, newType: _IType) {\n const on = this.expression.id!;\n const nn = newId;\n this.expression = columnEvaluator(this.table, newId, newType);\n\n // replace in table\n this.table.columnMgr.delete(on);\n this.table.columnMgr.set(nn, this);\n }\n\n drop(t: _Transaction): void {\n const on = this.expression.id!;\n if (!this.table.columnMgr.has(on)) {\n throw new Error('Corrupted table');\n }\n\n // remove indices\n for (const u of this.usedInIndexes) {\n this.table.dropIndex(t, u.name);\n }\n\n // remove associated data\n this.table.remapData(t, x => delete x[this.expression.id!]);\n\n // nasty business to remove columns\n this.table.columnMgr.delete(on);\n this.table.selection.rebuild();\n this.drophandlers.forEach(d => d(t, false));\n this.table.db.onSchemaChange();\n }\n\n checkConstraints(toInsert: any, t: _Transaction) {\n if (!this.notNull) {\n return;\n }\n const col = this.expression.get(toInsert, t);\n if (nullIsh(col)) {\n throw new QueryError(`null value in column \"${this.expression.id}\" violates not-null constraint`);\n }\n }\n\n setDefaults(toInsert: any, t: _Transaction) {\n const col = this.expression.get(toInsert, t);\n if (col !== undefined) {\n return;\n }\n if (!this.default) {\n toInsert[this.expression.id!] = null;\n } else {\n toInsert[this.expression.id!] = this.default.get();\n }\n }\n\n\n onDrop(sub: DropHandler): ISubscription {\n this.drophandlers.add(sub);\n return {\n unsubscribe: () => {\n this.drophandlers.delete(sub);\n }\n }\n }\n\n}\n","// stolen from https://github.com/segmentio/pg-escape/blob/master/index.js\n\nexport function literal(val: any) {\n if (null == val) return 'NULL';\n if (Array.isArray(val)) {\n var vals: any[] = val.map(literal)\n return \"(\" + vals.join(\", \") + \")\"\n }\n var backslash = ~val.indexOf('\\\\');\n var prefix = backslash ? 'E' : '';\n val = val.replace(/'/g, \"''\");\n val = val.replace(/\\\\/g, '\\\\\\\\');\n return prefix + \"'\" + val + \"'\";\n};\n","import { _ISchema, _Transaction, NotSupported, _ISequence, _IStatementExecutor } from '../../interfaces-private';\nimport { QName, CreateSequenceStatement } from 'pgsql-ast-parser';\nimport { Sequence } from '../../schema/sequence';\nimport { checkExistence, ExecHelper } from '../exec-utils';\n\nexport class ExecuteCreateSequence extends ExecHelper implements _IStatementExecutor {\n schema: _ISchema;\n constructor(inSchema: _ISchema, private p: CreateSequenceStatement, private acceptTempSequences: boolean) {\n super(p);\n const name: QName = p.name;\n this.schema = inSchema.getThisOrSiblingFor(name);\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index sequence creation does support further rollbacks)\n t = t.fullCommit();\n\n // create the sequence\n this.createSeq(t);\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n\n createSeq(t: _Transaction) {\n const p = this.p;\n const name: QName = p.name;\n // const ret = this.simple('CREATE', p);\n\n let ret: _ISequence | null = null;\n checkExistence(this.schema, name, p.ifNotExists, () => {\n if (p.temp && !this.acceptTempSequences) {\n throw new NotSupported('temp sequences');\n }\n ret = new Sequence(name.name, this.schema)\n .alter(t, p.options);\n this.schema.db.onSchemaChange();\n });\n return ret;\n }\n}\n","import { QueryError, Reg, _Explainer, _ISchema, _ISelection, _IView, _Transaction } from '../interfaces-private';\nimport { DataSourceBase, FilterBase } from '../transforms/transform-base';\n\nexport class View extends FilterBase implements _IView {\n get type(): 'view' {\n return 'view';\n }\n\n private _reg?: Reg;\n get reg(): Reg {\n if (!this._reg) {\n throw new QueryError(`relation \"${this.name}\" does not exist`);\n }\n return this._reg;\n }\n\n constructor(readonly ownerSchema: _ISchema, readonly name: string, readonly selection: _ISelection) {\n super(selection);\n }\n\n\n enumerate(t: _Transaction): Iterable<any> {\n return this.selection.enumerate(t);\n }\n\n hasItem(value: any, t: _Transaction): boolean {\n return this.selection.hasItem(value, t);\n }\n\n explain(e: _Explainer) {\n return this.selection.explain(e);\n }\n\n stats(t: _Transaction) {\n return this.selection.stats(t);\n }\n\n\n register() {\n // once fields registered,\n // then register the table\n // (column registrations need it not to be registered yet)\n this._reg = this.ownerSchema._reg_register(this);\n return this;\n }\n\n drop(t: _Transaction): void {\n throw new Error('Method not implemented.');\n }\n}","import { IValue, _ISelection, _Transaction, _Explainer, _SelectExplanation, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { Types } from '../datatypes';\n\nexport class SeqScanFilter extends FilterBase {\n\n get index() {\n return null;\n }\n\n entropy(t: _Transaction) {\n // boost source entropy (in case an index has the same items count)\n return this.selection.entropy(t) * 1.5;\n }\n\n hasItem(raw: Row, t: _Transaction): boolean {\n return !!this.getter.get(raw, t);\n }\n\n constructor(private selection: _ISelection, private getter: IValue) {\n super(selection);\n this.getter = getter.cast(Types.bool);\n }\n\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const raw of this.selection.enumerate(t)) {\n const cond = this.getter.get(raw, t);\n if (cond) {\n yield raw;\n }\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'seqFilter',\n filtered: this.selection.explain(e),\n };\n }\n}","export * from './adapters';\n","export { newDb } from './db';\nexport { enableStatementLocationTracking } from './parser/parse-cache';\nexport { replaceQueryArgs$ } from './adapters';\nexport * from './interfaces';\n","import { Schema, IMemoryDb, ISchema, TableEvent, GlobalEvent, QueryError, IBackup, MemoryDbOptions, ISubscription, LanguageCompiler, nil } from './interfaces';\nimport { _IDb, _ISelection, _ITable, _Transaction, _ISchema, _FunctionDefinition, GLOBAL_VARS, _IType, _OperatorDefinition, IValue } from './interfaces-private';\nimport { DbSchema } from './schema/schema';\nimport { initialize } from './transforms/transform-base';\nimport { buildSelection } from './transforms/selection';\nimport { buildAlias } from './transforms/alias';\nimport { buildFilter } from './transforms/build-filter';\nimport { Adapters } from './adapters';\nimport { Transaction } from './transaction';\nimport { buildGroupBy } from './transforms/aggregation';\nimport { buildLimit } from './transforms/limit';\nimport { buildUnion } from './transforms/union';\nimport { buildDistinct } from './transforms/distinct';\nimport { buildOrderBy } from './transforms/order-by';\nimport { setupPgCatalog } from './schema/pg-catalog';\nimport { setupInformationSchema } from './schema/information-schema';\nimport { QName, BinaryOperator } from 'pgsql-ast-parser';\nimport { asSingleQName } from './utils';\n\nexport function newDb(opts?: MemoryDbOptions): IMemoryDb {\n initialize({\n buildSelection,\n buildAlias,\n buildFilter,\n buildGroupBy,\n buildLimit,\n buildUnion,\n buildOrderBy,\n buildDistinct,\n });\n // root transaction\n const root = Transaction.root();\n const globals = root.getMap(GLOBAL_VARS)\n .set('server_version', '12.2 (pg-mem)');\n root.set(GLOBAL_VARS, globals);\n\n // create db\n return new MemoryDb(root, undefined, opts ?? {});\n}\n\nclass MemoryDb implements _IDb {\n\n private handlers = new Map<TableEvent | GlobalEvent, Set<(...args: any[]) => any>>();\n private schemas = new Map<string, _ISchema>();\n\n schemaVersion = 1;\n\n readonly adapters: Adapters = new Adapters(this);\n private extensions: { [name: string]: (schema: ISchema) => void } = {};\n private languages: { [name: string]: LanguageCompiler } = {};\n readonly searchPath = ['pg_catalog', 'public'];\n\n get public() {\n return this.getSchema(null)\n }\n\n onSchemaChange() {\n this.schemaVersion++;\n this.raiseGlobal('schema-change', this);\n }\n\n constructor(public data: Transaction, schemas?: Map<string, _ISchema>, readonly options: MemoryDbOptions = {}) {\n if (!schemas) {\n this.createSchema('public');\n } else {\n this.schemas = schemas;\n }\n setupPgCatalog(this);\n setupInformationSchema(this);\n }\n\n backup(): IBackup {\n return new Backup(this);\n }\n\n registerExtension(name: string, install: (schema: ISchema) => void): this {\n this.extensions[name] = install;\n return this;\n }\n\n registerLanguage(languageName: string, compiler: LanguageCompiler): this {\n this.languages[languageName.toLowerCase()] = compiler;\n return this;\n }\n\n getLanguage(name: string): LanguageCompiler {\n const ret = this.languages[name.toLowerCase()];\n if (!ret) {\n throw new QueryError(`Unkonwn language \"${name}\". If you plan to use a script language, you must declare it to pg-mem via \".registerLanguage()\"`);\n }\n return ret;\n }\n\n\n getExtension(name: string): (schema: ISchema) => void {\n const ret = this.extensions[name];\n if (!ret) {\n throw new Error('Extension does not exist: ' + name);\n }\n return ret;\n }\n\n\n createSchema(name: string): DbSchema {\n if (this.schemas.has(name)) {\n throw new Error('Schema exists: ' + name);\n }\n this.onSchemaChange();\n const ret = new DbSchema(name, this);\n this.schemas.set(name, ret);\n return ret;\n }\n\n getTable(name: string): _ITable;\n getTable(name: string, nullIfNotExists?: boolean): _ITable | null {\n return this.public.getTable(name, nullIfNotExists);\n }\n\n resolveFunction(name: string | QName, types: IValue[]): _FunctionDefinition | nil {\n const asSingle = asSingleQName(name);\n if (asSingle) {\n for (const sp of this.searchPath) {\n const found = this.getSchema(sp).resolveFunction(name, types, true);\n if (found) {\n return found;\n }\n }\n return null;\n } else {\n const q = name as QName;\n return this.getSchema(q.schema!).resolveFunction(q.name, types, true);\n }\n }\n\n resolveOperator(name: BinaryOperator, left: IValue, right: IValue): _OperatorDefinition | nil {\n for (const sp of this.searchPath) {\n const found = this.getSchema(sp).resolveOperator(name, left, right, true);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n\n\n on(event: GlobalEvent | TableEvent, handler: (...args: any[]) => any): ISubscription {\n let lst = this.handlers.get(event);\n if (!lst) {\n this.handlers.set(event, lst = new Set());\n }\n lst.add(handler);\n return {\n unsubscribe: () => lst?.delete(handler),\n };\n }\n\n raiseTable(table: string, event: TableEvent): void {\n const got = this.handlers.get(event);\n for (const h of got ?? []) {\n h(table);\n }\n }\n\n raiseGlobal(event: GlobalEvent, ...data: any[]): void {\n const got = this.handlers.get(event);\n for (const h of got ?? []) {\n h(...data);\n }\n }\n\n\n getSchema(db?: string | null, nullIfNotFound?: false): _ISchema;\n getSchema(db: string, nullIfNotFound: true): _ISchema | null;\n getSchema(db?: string | null, nullIfNotFound?: boolean): _ISchema | null {\n db = db ?? 'public';\n const got = this.schemas.get(db);\n if (!got) {\n if (nullIfNotFound) {\n return null;\n }\n throw new QueryError('schema not found: ' + db);\n }\n return got;\n }\n\n listSchemas() {\n return [...this.schemas.values()];\n }\n\n}\n\nclass Backup implements IBackup {\n private readonly data: Transaction;\n private readonly schemaVersion: number;\n constructor(private db: MemoryDb) {\n this.data = db.data.clone();\n this.schemaVersion = db.schemaVersion;\n }\n\n restore() {\n if (this.schemaVersion !== this.db.schemaVersion) {\n throw new Error('You cannot restore this backup: schema has been changed since this backup has been created => prefer .clone() in this kind of cases.');\n }\n this.db.data = this.data.clone();\n }\n}","import { ISchema, DataType, IType, RelationNotFound, Schema, QueryResult, SchemaField, nil, FunctionDefinition, PermissionDeniedError, TypeNotFound, ArgDefDetails, IEquivalentType, QueryInterceptor, ISubscription, QueryError, typeDefToStr, OperatorDefinition, QueryOrAst, IPreparedQuery } from '../interfaces';\nimport { _IDb, _ISelection, _ISchema, _Transaction, _ITable, _SelectExplanation, _Explainer, IValue, _IIndex, _IType, _IRelation, QueryObjOpts, _ISequence, _INamedIndex, RegClass, Reg, TypeQuery, asType, _ArgDefDetails, BeingCreated, _FunctionDefinition, _OperatorDefinition } from '../interfaces-private';\nimport { asSingleQName, ignore, isType, notNil, parseRegClass, randomString, schemaOf } from '../utils';\nimport { typeSynonyms } from '../datatypes';\nimport { DropFunctionStatement, BinaryOperator, QName, DataTypeDef, CreateSequenceOptions, CreateExtensionStatement, Statement } from 'pgsql-ast-parser';\nimport { MemoryTable } from '../table';\nimport { parseSql } from '../parser/parse-cache';\nimport { migrate } from '../migrate/migrate';\nimport { CustomEnumType } from '../datatypes/t-custom-enum';\nimport { regGen } from '../datatypes/datatype-base';\nimport { EquivalentType } from '../datatypes/t-equivalent';\nimport { OverloadResolver } from './overload-resolver';\nimport { ExecuteCreateSequence } from '../execution/schema-amends/create-sequence';\nimport { StatementExec } from '../execution/statement-exec';\nimport { SelectExec } from '../execution/select';\nimport { MigrationParams } from '../migrate/migrate-interfaces';\nimport { InterceptedPreparedQuery } from './prepared-intercepted';\nimport { prepareQuery } from './prepared';\n\nexport class DbSchema implements _ISchema, ISchema {\n\n readonly dualTable: _ITable;\n private relsByNameCas = new Map<string, _IRelation>();\n private relsByCls = new Map<number, _IRelation>();\n private relsByTyp = new Map<number, _IRelation>();\n private _tables = new Set<_ITable>();\n\n private fns = new OverloadResolver<_FunctionDefinition>(false);\n private ops = new OverloadResolver<_OperatorDefinition>(false);\n private installedExtensions = new Set<string>();\n private readonly: any;\n private interceptors = new Set<{ readonly intercept: QueryInterceptor }>();\n lastSelect?: _ISelection;\n\n constructor(readonly name: string, readonly db: _IDb) {\n this.dualTable = new MemoryTable(this, this.db.data, { fields: [], name: 'dual' }).register();\n this.dualTable.insert({});\n this.dualTable.setReadonly();\n this._reg_unregister(this.dualTable);\n }\n\n setReadonly() {\n this.readonly = true;\n return this;\n }\n\n\n none(query: QueryOrAst): void {\n this.query(query);\n }\n\n one(query: QueryOrAst): any {\n const [result] = this.many(query);\n return result;\n }\n\n many(query: QueryOrAst): any[] {\n return this.query(query).rows;\n }\n\n\n query(text: QueryOrAst): QueryResult {\n return this.prepare(text)\n .bind()\n .executeAll();\n }\n\n\n prepare(query: QueryOrAst): IPreparedQuery {\n // intercept ?\n if (typeof query === 'string') {\n for (const { intercept } of this.interceptors) {\n const ret = intercept(query);\n if (ret) {\n return new InterceptedPreparedQuery(query, ret);\n }\n }\n }\n\n try {\n // Parse statements\n query = typeof query === 'string' ? query + ';' : query;\n const parsed = this.parse(query);\n\n if (!parsed.length) {\n return new InterceptedPreparedQuery(typeof query === 'string' ? query : '<custom ast>', []);\n }\n\n const singleSql = typeof query === 'string' && parsed.length === 1 ? query : undefined;\n const ret = prepareQuery(this, parsed, singleSql);\n\n ret.executed = () => {\n this.db.raiseGlobal('query', query);\n };\n ret.failed = (e) => {\n this.db.raiseGlobal('query-failed', query);\n };\n return ret;\n } catch (e) {\n this.db.raiseGlobal('query-failed', query);\n throw e;\n }\n }\n\n\n private parse(query: QueryOrAst): Statement[] {\n if (typeof query === 'string') {\n return parseSql(query);\n }\n return notNil(Array.isArray(query) ? query : [query]);\n }\n\n *queries(query: QueryOrAst): Iterable<QueryResult> {\n return this.prepare(query)\n .bind()\n .iterate();\n }\n\n\n\n registerEnum(name: string, values: string[]) {\n new CustomEnumType(this, name, values).install();\n }\n\n getThisOrSiblingFor(name: QName): _ISchema {\n if (!name?.schema || name.schema === this.name) {\n return this;\n }\n return this.db.getSchema(name.schema);\n }\n\n\n\n\n\n private simpleTypes: { [key: string]: _IType } = {};\n private sizeableTypes: {\n [key: string]: {\n ctor: (...sz: number[]) => _IType;\n regs: Map<number | string | undefined, _IType>;\n };\n } = {};\n\n\n parseType(native: string): _IType {\n if (/\\[\\]$/.test(native)) {\n const inner = this.parseType(native.substr(0, native.length - 2));\n return inner.asArray();\n }\n return this.getType({ name: native });\n }\n\n\n getOwnType(t: DataTypeDef): _IType | null {\n if (t.kind === 'array') {\n const $of = this.getOwnType(t.arrayOf);\n if (!$of) {\n return null;\n }\n return $of.asArray();\n }\n // fetch synonyms\n const synonym = t.doubleQuoted ? null : typeSynonyms[t.name];\n let name: string;\n let ignoreConfig = false;\n if (typeof synonym === 'object' && synonym && 'type' in synonym) {\n name = synonym.type;\n ignoreConfig = synonym.ignoreConfig;\n } else {\n name = synonym ?? t.name;\n }\n const sizeable = this.sizeableTypes[name];\n if (sizeable) {\n const key = t.config?.length === 1\n ? t.config[0]\n : t.config?.join(',') ?? undefined;\n let ret = sizeable.regs.get(key);\n if (!ret) {\n sizeable.regs.set(key, ret = sizeable.ctor(...t.config ?? []));\n }\n return ret;\n } else if (ignoreConfig) {\n ignore(t.config);\n }\n\n return this.simpleTypes[name] ?? null;\n }\n\n\n getTypePub(t: DataType | IType): _IType {\n return this.getType(t as TypeQuery);\n }\n\n getType(t: TypeQuery): _IType;\n getType(_t: TypeQuery, opts?: QueryObjOpts): _IType | null {\n if (typeof _t === 'number') {\n const byOid = this.relsByTyp.get(_t);\n if (byOid) {\n return asType(byOid);\n }\n throw new TypeNotFound(_t);\n }\n if (typeof _t === 'string') {\n return this.getType({ name: _t });\n }\n if (isType(_t)) {\n return _t;\n }\n const t = _t;\n function chk<T>(ret: T): T {\n if (!ret && !opts?.nullIfNotFound) {\n throw new TypeNotFound(t);\n }\n return ret;\n }\n const schema = schemaOf(t);\n if (schema) {\n if (schema === this.name) {\n return chk(this.getOwnType(t));\n } else {\n return chk(this.db.getSchema(schema)\n .getType(t, opts));\n }\n }\n if (opts?.skipSearch) {\n return chk(this.getOwnType(t));\n }\n for (const sp of this.db.searchPath) {\n const rel = this.db.getSchema(sp).getOwnType(t);\n if (rel) {\n return rel;\n }\n }\n return chk(this.getOwnType(t));\n }\n\n\n getObject(p: QName): _IRelation;\n getObject(p: QName, opts: BeingCreated): _IRelation;\n getObject(p: QName, opts?: QueryObjOpts): _IRelation | null;\n getObject(p: QName, opts?: QueryObjOpts): _IRelation | null {\n function chk(ret: _IRelation | null): _IRelation | null {\n const bc = opts?.beingCreated;\n if (!ret && bc && (\n !p.schema || p.schema === bc.ownerSchema?.name\n ) && bc.name === p.name) {\n ret = bc;\n }\n if (!ret && !opts?.nullIfNotFound) {\n throw new RelationNotFound(p.name);\n }\n return ret;\n }\n if (p.schema) {\n if (p.schema === this.name) {\n return chk(this.getOwnObject(p.name));\n } else {\n return chk(this.db.getSchema(p.schema)\n .getObject(p, opts));\n }\n }\n\n if (opts?.skipSearch) {\n return chk(this.getOwnObject(p.name));\n }\n for (const sp of this.db.searchPath) {\n const rel = this.db.getSchema(sp).getOwnObject(p.name);\n if (rel) {\n return rel;\n }\n }\n return chk(this.getOwnObject(p.name));\n }\n\n getOwnObject(name: string): _IRelation | null {\n return this.relsByNameCas.get(name)\n ?? null;\n }\n\n getObjectByRegOrName(reg: RegClass): _IRelation;\n getObjectByRegOrName(reg: RegClass, opts?: QueryObjOpts): _IRelation | null;\n getObjectByRegOrName(_reg: RegClass, opts?: QueryObjOpts): _IRelation | null {\n const reg = parseRegClass(_reg);\n\n if (typeof reg === 'number') {\n return this.getObjectByRegClassId(reg, opts);\n }\n\n return this.getObject(reg, opts);\n }\n\n getObjectByRegClassId(reg: number): _IRelation;\n getObjectByRegClassId(reg: number, opts?: QueryObjOpts): _IRelation | null;\n getObjectByRegClassId(reg: number, opts?: QueryObjOpts) {\n function chk<T>(ret: T): T {\n if (!ret && !opts?.nullIfNotFound) {\n throw new RelationNotFound(reg.toString());\n }\n return ret;\n }\n if (opts?.skipSearch) {\n return chk(this.getOwnObjectByRegClassId(reg));\n }\n for (const sp of this.db.searchPath) {\n const rel = this.db.getSchema(sp).getOwnObjectByRegClassId(reg);\n if (rel) {\n return rel;\n }\n }\n return chk(this.getOwnObjectByRegClassId(reg));\n }\n\n getOwnObjectByRegClassId(reg: number): _IRelation | null {\n return this.relsByCls.get(reg)\n ?? null;\n }\n\n createSequence(t: _Transaction, opts: CreateSequenceOptions | nil, _name: QName | nil): _ISequence {\n _name = _name ?? {\n name: randomString(),\n };\n return new ExecuteCreateSequence(this, {\n type: 'create sequence',\n name: _name,\n options: opts ?? {},\n }, true).createSeq(t)!;\n }\n\n explainLastSelect(): _SelectExplanation | undefined {\n return this.lastSelect?.explain(new Explainer(this.db.data));\n }\n\n explainSelect(sql: string): _SelectExplanation {\n let parsed = this.parse(sql);\n if (parsed.length !== 1) {\n throw new Error('Expecting a single statement');\n }\n if (parsed[0].type !== 'select') {\n throw new Error('Expecting a select statement');\n }\n const prepared = new StatementExec(this, parsed[0], sql)\n .compile();\n if (!(prepared instanceof SelectExec)) {\n throw new Error('Can only explain selection executors');\n }\n return prepared\n .selection\n .explain(new Explainer(this.db.data))\n }\n\n executeCreateExtension(p: CreateExtensionStatement) {\n const ext = this.db.getExtension(p.extension.name);\n const schema = p.schema\n ? this.db.getSchema(p.schema.name)\n : this;\n this.db.raiseGlobal('create-extension', p.extension, schema, p.version, p.from);\n const ne = p.ifNotExists; // evaluate outside\n if (this.installedExtensions.has(p.extension.name)) {\n if (ne) {\n return;\n }\n throw new QueryError('Extension already created !');\n }\n\n ext(schema);\n this.installedExtensions.add(p.extension.name);\n }\n\n getTable(name: string): _ITable;\n getTable(name: string, nullIfNotFound?: boolean): _ITable | null;\n getTable(name: string, nullIfNotFound?: boolean): _ITable | null {\n const ret = this.getOwnObject(name);\n if ((!ret || ret.type !== 'table')) {\n if (nullIfNotFound) {\n return null;\n }\n throw new RelationNotFound(name);\n }\n return ret;\n }\n\n\n\n declareTable(table: Schema, noSchemaChange?: boolean): MemoryTable {\n const trans = this.db.data.fork();\n const ret = new MemoryTable(this, trans, table).register();\n trans.commit();\n if (!noSchemaChange) {\n this.db.onSchemaChange();\n }\n return ret;\n }\n\n registerEquivalentType(type: IEquivalentType): IType {\n const ret = new EquivalentType(type);\n this._registerType(ret);\n\n return ret;\n }\n\n registerEquivalentSizableType(type: IEquivalentType): IType {\n const ret = new EquivalentType(type);\n this._registerTypeSizeable(ret.primaryName, (_) => ret);\n\n return ret;\n }\n\n _registerTypeSizeable(name: string, ctor: (sz?: number) => _IType): this {\n if (this.simpleTypes[name] || this.sizeableTypes[name]) {\n throw new QueryError(`type \"${name}\" already exists`);\n }\n this.sizeableTypes[name] = {\n ctor,\n regs: new Map(),\n };\n return this;\n }\n\n _registerType(type: _IType): this {\n if (this.simpleTypes[type.primaryName] || this.sizeableTypes[type.primaryName] || this.getOwnObject(type.primaryName)) {\n throw new QueryError(`type \"${type.primaryName}\" already exists`);\n }\n this.simpleTypes[type.primaryName] = type;\n this._reg_register(type);\n return this;\n }\n\n _unregisterType(type: _IType): this {\n delete this.simpleTypes[type.primary];\n this._reg_unregister(type);\n return this;\n }\n\n\n _reg_register(rel: _IRelation): Reg {\n if (this.readonly) {\n throw new PermissionDeniedError()\n }\n if (this.relsByNameCas.has(rel.name)) {\n throw new Error(`relation \"${rel.name}\" already exists`);\n }\n const ret: Reg = regGen(null);\n this.relsByNameCas.set(rel.name, rel);\n this.relsByCls.set(ret.classId, rel);\n this.relsByTyp.set(ret.typeId, rel);\n if (rel.type === 'table') {\n this._tables.add(rel);\n }\n return ret;\n }\n\n _reg_unregister(rel: _IRelation): void {\n if (this.readonly) {\n throw new PermissionDeniedError()\n }\n this.relsByNameCas.delete(rel.name);\n this.relsByCls.delete(rel.reg.classId);\n this.relsByTyp.delete(rel.reg.typeId);\n if (rel.type === 'table') {\n this._tables.delete(rel);\n }\n }\n\n _reg_rename(rel: _IRelation, oldName: string, newName: string): void {\n if (this.readonly) {\n throw new PermissionDeniedError()\n }\n if (this.relsByNameCas.has(newName)) {\n throw new Error('relation exists: ' + newName);\n }\n if (this.relsByNameCas.get(oldName) !== rel) {\n throw new Error('consistency error while renaming relation');\n }\n this.relsByNameCas.delete(oldName);\n this.relsByNameCas.set(newName, rel);\n }\n\n\n\n tablesCount(t: _Transaction): number {\n return this._tables.size;\n }\n\n\n *listTables(): Iterable<_ITable> {\n for (const t of this._tables.values()) {\n if (!t.hidden) {\n yield t;\n }\n }\n }\n\n registerFunction(fn: FunctionDefinition, replace?: boolean): this {\n const def: _FunctionDefinition = {\n name: fn.name,\n args: (fn.args?.map<ArgDefDetails>(x => {\n if (typeof x === 'string' || isType(x)) {\n return {\n type: this.getTypePub(x),\n };\n }\n return x;\n }) ?? []) as _ArgDefDetails[],\n argsVariadic: fn.argsVariadic && this.getTypePub(fn.argsVariadic),\n returns: fn.returns && this.getTypePub(fn.returns),\n impure: !!fn.impure,\n implementation: fn.implementation,\n allowNullArguments: fn.allowNullArguments,\n };\n\n this.fns.add(def, replace ?? true);\n return this;\n }\n\n registerOperator(op: OperatorDefinition, replace?: boolean): this {\n this._registerOperator(op, replace ?? true);\n if (op.commutative && op.left !== op.right) {\n this._registerOperator({\n ...op,\n left: op.right,\n right: op.left,\n implementation: (a, b) => op.implementation(b, a),\n }, replace ?? true);\n }\n return this;\n }\n\n private _registerOperator(fn: OperatorDefinition, replace: boolean): this {\n const args = [fn.left, fn.right].map<ArgDefDetails>(x => {\n if (typeof x === 'string' || isType(x)) {\n return {\n type: this.getTypePub(x),\n };\n }\n return x;\n }) as _ArgDefDetails[];\n const def: _OperatorDefinition = {\n name: fn.operator,\n args,\n left: args[0].type,\n right: args[1].type,\n returns: fn.returns && this.getTypePub(fn.returns),\n impure: !!fn.impure,\n implementation: fn.implementation,\n allowNullArguments: fn.allowNullArguments,\n commutative: fn.commutative ?? false,\n };\n\n this.ops.add(def, replace);\n return this;\n }\n\n\n resolveFunction(name: string | QName, args: IValue[], forceOwn?: boolean): _FunctionDefinition | nil {\n const asSingle = asSingleQName(name, this.name);\n if (!asSingle || !forceOwn) {\n return this.db.resolveFunction(name, args);\n }\n return this.fns.resolve(asSingle, args);\n }\n\n getFunction(name: string, args: _IType[]): _FunctionDefinition | nil {\n return this.fns.getExact(name, args);\n }\n\n\n dropFunction(fn: DropFunctionStatement): void {\n if (fn.name.schema && fn.name.schema !== this.name) {\n return (this.db.getSchema(fn.name.schema) as DbSchema).dropFunction(fn);\n }\n const fns = this.fns.getOverloads(fn.name.name);\n ignore(fn.ifExists);\n\n // === determine which function to delete\n let toRemove: _FunctionDefinition;\n if (fn.arguments) {\n const targetArgs = fn.arguments;\n const match = fns?.filter(x => x.args.length === targetArgs.length\n && !x.args.some((a, i) => a.type !== this.getType(targetArgs[i].type)));\n if (!match?.length) {\n if (fn.ifExists) {\n return;\n }\n throw new QueryError(`function ${fn.name.name}(${targetArgs.map(t => typeDefToStr(t.type)).join(',')}) does not exist`, '42883');\n }\n if (match.length > 1) {\n throw new QueryError(`function name \"${fn.name.name}\" is ambiguous`, '42725');\n }\n toRemove = match[0];\n } else {\n if (!fns?.length) {\n if (fn.ifExists) {\n return;\n }\n throw new QueryError(`could not find a function named \"${fn.name.name}\"`, '42883');\n }\n if (fns?.length !== 1) {\n throw new QueryError(`function name \"${fn.name.name}\" is not unique`, '42725');\n }\n toRemove = fns[0];\n }\n\n\n this.fns.remove(toRemove);\n }\n\n resolveOperator(name: BinaryOperator, left: IValue, right: IValue, forceOwn?: boolean): _OperatorDefinition | nil {\n if (!forceOwn) {\n return this.db.resolveOperator(name, left, right);\n }\n return this.ops.resolve(name, [left, right]);\n }\n\n\n async migrate(config?: MigrationParams) {\n await migrate(this, config);\n }\n\n\n\n interceptQueries(intercept: QueryInterceptor): ISubscription {\n const qi = { intercept } as const;\n this.interceptors.add(qi);\n return {\n unsubscribe: () => {\n this.interceptors.delete(qi);\n }\n };\n }\n}\n\nclass Explainer implements _Explainer {\n private sels = new Map<_ISelection, number>();\n constructor(readonly transaction: _Transaction) {\n }\n\n idFor(sel: _ISelection): string | number {\n if (sel.debugId) {\n return sel.debugId;\n }\n if (this.sels.has(sel)) {\n return this.sels.get(sel)!;\n }\n const id = this.sels.size + 1;\n this.sels.set(sel, id);\n return id;\n }\n\n}\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 43;","import { IValue, _IType, _ISelection, _ISchema, _IDb, _Transaction } from '../interfaces-private';\nimport { Types, ArrayType } from '../datatypes';\nimport { QueryError, NotSupported, nil } from '../interfaces';\nimport { Evaluator } from '../evaluator';\nimport hash from 'object-hash';\nimport { parseArrayLiteral, QName } from 'pgsql-ast-parser';\nimport { asSingleQName, nullIsh, qnameToStr } from '../utils';\nimport { buildCtx } from './context';\n\n\nexport function buildCall(name: string | QName, args: IValue[]): IValue {\n let type: _IType | nil = null;\n let get: (...args: any[]) => any;\n\n let impure = false;\n let acceptNulls = false;\n const { schema } = buildCtx();\n\n // put your ugly hack here 😶 🏴☠️ ...\n switch (asSingleQName(name)) {\n case 'any':\n return buildAnyCall(args);\n case 'current_schema':\n type = Types.text();\n get = () => 'public';\n break;\n // a set of functions that are calledby Tyopeorm, but we dont needto support them yet\n // since there is not result (function never actually called)\n case 'pg_get_constraintdef':\n case 'pg_get_expr':\n type = Types.text();\n get = () => {\n throw new NotSupported(qnameToStr(name) + ' is not supported');\n };\n break;\n case 'unnest':\n if (args.length !== 1) {\n throw new QueryError('unnest expects 1 arguments, given ' + args.length);\n }\n const utype = args[0].type;\n if (!(utype instanceof ArrayType)) {\n throw new QueryError('unnest expects enumerable argument ' + utype.primary);\n }\n type = utype.of;\n get = () => {\n throw new NotSupported(qnameToStr(name) + ' is not supported');\n };\n break;\n case 'coalesce':\n acceptNulls = true;\n if (!args.length) {\n throw new QueryError('coalesce expects at least 1 argument');\n }\n type = args.reduce<_IType>((a, b) => {\n if (a === b.type) {\n return a;\n }\n if (b.type.canCast(a)) {\n return a;\n }\n if (a.canCast(b.type)) {\n return b.type;\n }\n throw new QueryError(`COALESCE types ${a.name} and ${b.type.name} cannot be matched`, '42804');\n }, args[0].type);\n args = args.map(x => x.cast(type!));\n get = (...args: any[]) => args.find(x => !nullIsh(x));\n break;\n default:\n // try to find a matching custom function overloads\n acceptNulls = true;\n const resolved = schema.resolveFunction(name, args);\n if (resolved) {\n args = args.map((x, i) => x.cast(resolved.args[i]?.type ?? resolved.argsVariadic));\n type = resolved.returns;\n get = resolved.implementation;\n impure = !!resolved.impure;\n acceptNulls = !!resolved.allowNullArguments;\n }\n break;\n\n }\n if (!get!) {\n throw new QueryError({\n error: `function ${qnameToStr(name)}(${args.map(a => a.type.name).join(',')}) does not exist`,\n hint: `🔨 Please note that pg-mem implements very few native functions.\n\n 👉 You can specify the functions you would like to use via \"db.public.registerFunction(...)\"`\n })\n }\n return new Evaluator(\n type ?? Types.null\n , null\n , hash({ call: name, args: args.map(x => x.hash) })\n , args\n , (raw, t) => {\n const argRaw = args.map(x => x.get(raw, t));\n if (!acceptNulls && argRaw.some(nullIsh)) {\n return null;\n }\n return get(...argRaw);\n }, impure ? { unpure: impure } : undefined);\n}\n\n\nfunction buildAnyCall(args: IValue[]) {\n if (args.length !== 1) {\n throw new QueryError('ANY() expects 1 argument, given ' + args.length);\n }\n const array = args[0];\n\n // == if ANY(select something) ... get the element type\n if (array.type instanceof ArrayType) {\n return new Evaluator(\n array.type.of\n , null\n , hash({ any: array.hash })\n , args\n , (raw, t) => {\n return array.get(raw, t);\n }\n , { isAny: true } // <== isAny !\n );\n }\n\n // == if ANY('{elements}') ... will be an array of text => keep text\n\n if (array.type !== Types.text() || !array.isConstantLiteral) {\n throw new QueryError('ANY() expects either a selection, or an array literal');\n }\n // parse ANY() array literal\n const arrayValue = parseArrayLiteral(array.get());\n return new Evaluator(\n Types.text()\n , null\n , hash({ any: array.hash })\n , args\n , arrayValue\n , { isAny: true } // <== isAny !\n );\n}","import { DataType, QueryError } from '../interfaces';\nimport { _IType } from '../interfaces-private';\nimport { Box, Circle, Line, Path, Point, Polygon, Segment } from 'pgsql-ast-parser';\nimport { Evaluator } from '../evaluator';\nimport { TypeBase } from './datatype-base';\n\nexport function pointToStr(p: Point) {\n return `(${p.x},${p.y})`;\n}\n\nexport function pointEq(a: Point, b: Point) {\n return a.x === b.x && a.y === b.y;\n}\n\nexport class PointType extends TypeBase<Point> {\n get primary(): DataType {\n return DataType.point;\n }\n get name() {\n return 'point';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Point>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion((p: Point) => {\n return pointToStr(p);\n }\n , pointToTxt => ({ pointToTxt }));\n }\n\n doEquals(a: Point, b: Point) {\n return pointEq(a, b);\n }\n\n doGt(a: Point, b: Point) {\n if (a.x !== b.x) {\n return a.x > b.x;\n }\n return a.y > b.y;\n }\n\n doLt(a: Point, b: Point) {\n if (a.x !== b.x) {\n return a.x < b.x;\n }\n return a.y < b.y;\n }\n}\n\n\n\nexport class LineType extends TypeBase<Line> {\n\n get primary(): DataType {\n return DataType.line;\n }\n get name() {\n return 'line';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Line>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion((l: Line) => {\n return `{${l.a},${l.b},${l.c}}`;\n }\n , lineToTxt => ({ lineToTxt }));\n }\n\n doEquals(a: Line, b: Line) {\n return a.a === b.a && a.b === b.b && a.c === b.c;\n }\n}\n\nexport class LsegType extends TypeBase<Segment> {\n\n get primary(): DataType {\n return DataType.lseg;\n }\n get name() {\n return 'lseg';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Segment>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion(([a, b]: Segment) => {\n return `[${pointToStr(a)},${pointToStr(b)}]`;\n }\n , SegmentToTxt => ({ SegmentToTxt }));\n }\n\n doEquals([as, ae]: Segment, [bs, be]: Segment) {\n return pointEq(as, bs) && pointEq(ae, be);\n }\n}\n\nexport class BoxType extends TypeBase<Box> {\n\n get primary(): DataType {\n return DataType.box;\n }\n get name() {\n return 'box';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Box>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion(([a, b]: Box) => {\n return `${pointToStr(a)},${pointToStr(b)}`;\n }\n , BoxToTxt => ({ BoxToTxt }));\n }\n\n doEquals([as, ae]: Box, [bs, be]: Box) {\n return pointEq(as, bs) && pointEq(ae, be);\n }\n}\n\nexport class PathType extends TypeBase<Path> {\n\n get primary(): DataType {\n return DataType.path;\n }\n get name() {\n return 'path';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Path>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion((p: Path) => {\n const vals = p.path.map(pointToStr).join(',');\n return p.closed\n ? '(' + vals + ')'\n : '[' + vals + ']';\n }\n , PathToTxt => ({ PathToTxt }));\n }\n\n doEquals(a: Path, b: Path) {\n // Yup, you read that right ...\n // Try it... path equality always returns true (???)\n return true;\n // return !!a.closed === !!b.closed\n // && a.path.length === b.path.length\n // && a.path.every((x, i) => pointEq(x, b.path[i]));\n }\n}\n\nexport class PolygonType extends TypeBase<Polygon> {\n\n get primary(): DataType {\n return DataType.polygon;\n }\n get name() {\n return 'polygon';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Polygon>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion((p: Polygon) => {\n const vals = p.map(pointToStr).join(',');\n return '(' + vals + ')';\n }\n , PolygonToTxt => ({ PolygonToTxt }));\n }\n\n doEquals(a: Polygon, b: Polygon) {\n return a.length === b.length\n && a.every((x, i) => pointEq(x, b[i]));\n }\n}\n\n\nexport class CircleType extends TypeBase<Circle> {\n\n get primary(): DataType {\n return DataType.circle;\n }\n get name() {\n return 'circle';\n }\n doCanCast(t: _IType) {\n return t.primary === DataType.text;\n }\n\n doCast(value: Evaluator<Circle>, to: _IType) {\n if (to.primary !== DataType.text) {\n throw new QueryError(`Invalid cast to: ` + to.primary);\n }\n return value\n .setConversion((p: Circle) => {\n return `<${pointToStr(p.c)},${p.r}>`\n }\n , CircleToTxt => ({ CircleToTxt }));\n }\n\n doEquals(a: Circle, b: Circle) {\n return pointEq(a.c, b.c) && a.r === b.r;\n }\n}\n","import { DataType, nil, _IType } from '../interfaces-private';\nimport { Interval, normalizeInterval, parseIntervalLiteral } from 'pgsql-ast-parser';\nimport { TypeBase } from './datatype-base';\nimport { Evaluator } from '../evaluator';\nimport { intervalToSec } from '../utils';\n\nexport class IntervalType extends TypeBase<Interval> {\n\n get primary(): DataType {\n return DataType.interval;\n }\n\n doCanBuildFrom(from: _IType) {\n switch (from.primary) {\n case DataType.text:\n return true;\n }\n return false;\n }\n\n doBuildFrom(value: Evaluator, from: _IType): Evaluator<Interval> | nil {\n switch (from.primary) {\n case DataType.text:\n return value\n .setConversion(str => {\n const conv = normalizeInterval(parseIntervalLiteral(str));\n return conv;\n }\n , toInterval => ({ toInterval }));\n }\n return null;\n }\n\n doEquals(a: Interval, b: Interval): boolean {\n return intervalToSec(a) === intervalToSec(b);\n }\n doGt(a: Interval, b: Interval): boolean {\n return intervalToSec(a) > intervalToSec(b);\n }\n doLt(a: Interval, b: Interval): boolean {\n return intervalToSec(a) < intervalToSec(b);\n }\n}\n","import { DataType, nil, _IType } from '../interfaces-private';\nimport { TypeBase } from './datatype-base';\nimport { Evaluator } from '../evaluator';\nimport { parseTime } from '../utils';\n\n\nexport class TimeType extends TypeBase<string> {\n\n\n constructor(readonly primary: DataType.time | DataType.timetz) {\n super(1083);\n }\n\n\n get name(): string {\n return this.primary === DataType.timetz\n ? 'time with time zone'\n : 'time without time zone';\n }\n\n\n doCanCast(to: _IType) {\n switch (to.primary) {\n case DataType.text:\n case DataType.timetz:\n case DataType.time:\n return true;\n }\n return null;\n }\n\n\n doCanConvertImplicit(to: _IType) {\n switch (to.primary) {\n case DataType.timetz:\n return true;\n case DataType.time:\n return this.primary === DataType.time;\n }\n return false;\n }\n\n\n doCast(value: Evaluator, to: _IType) {\n switch (to.primary) {\n case DataType.text:\n case DataType.time:\n case DataType.timetz:\n return value\n .setType(to);\n }\n throw new Error('Unexpected cast error');\n }\n\n\n doCanBuildFrom(from: _IType) {\n switch (from.primary) {\n case DataType.text:\n return true;\n }\n return false;\n }\n\n doBuildFrom(value: Evaluator, from: _IType): Evaluator<string> | nil {\n switch (from.primary) {\n case DataType.text:\n return value\n .setConversion(str => {\n const conv = parseTime(str);\n const ret = conv.format('HH:mm:ss');\n const ms = conv.milliseconds();\n return ms\n ? ret + (ms / 1000).toString(10).substr(1)\n : ret;\n }\n , toTime => ({ toTime }));\n }\n return null;\n }\n\n}\n","import { DataType, nil, QueryError, _IType } from '../interfaces-private';\nimport { TypeBase } from './datatype-base';\nimport { Evaluator } from '../evaluator';\nimport moment from 'moment';\nimport { parseTime, nullIsh } from '../utils';\n\nexport class TimestampType extends TypeBase<Date> {\n\n\n constructor(readonly primary: DataType, typeId: number | null, readonly precision: number | null = null) {\n super(typeId);\n }\n\n get name(): string {\n if (!nullIsh(this.precision)) {\n return `${this.primary}(${this.precision})`;\n }\n switch (this.primary) {\n case DataType.timestamp:\n return 'timestamp without time zone';\n case DataType.timestamptz:\n return 'timestamp with time zone';\n case DataType.date:\n return 'date';\n case DataType.time:\n return 'time without time zone';\n case DataType.timetz:\n return 'time with time zone';\n }\n return this.primary;\n }\n\n doCanCast(to: _IType) {\n switch (to.primary) {\n case DataType.timestamp:\n case DataType.timestamptz:\n case DataType.date:\n return this.primary !== DataType.time && this.primary !== DataType.timetz;\n case DataType.time:\n return this.primary !== DataType.date;\n case DataType.timetz:\n return this.primary !== DataType.date && this.primary !== DataType.timestamp;\n }\n return null;\n }\n\n doCanConvertImplicit(to: _IType) {\n switch (to.primary) {\n case DataType.timestamp:\n return this.primary === DataType.timestamp\n || this.primary === DataType.date;\n case DataType.timestamptz:\n return this.primary !== DataType.time;\n case DataType.date:\n return this.primary === DataType.date;\n case DataType.time:\n return this.primary === DataType.time; // nothing can implicitly cast to time\n }\n return false;\n }\n\n doCast(value: Evaluator, to: _IType) {\n switch (to.primary) {\n case DataType.timestamp:\n case DataType.timestamptz:\n return value;\n case DataType.date:\n return value\n .setConversion(raw => moment.utc(raw).startOf('day').toDate()\n , toDate => ({ toDate }));\n case DataType.time:\n case DataType.timetz:\n return value\n .setConversion(raw => moment.utc(raw).format('HH:mm:ss') + '.000000'\n , toDate => ({ toDate }));\n }\n throw new Error('Unexpected cast error');\n }\n\n\n doCanBuildFrom(from: _IType) {\n switch (from.primary) {\n case DataType.text:\n return true;\n }\n return false;\n }\n\n doBuildFrom(value: Evaluator, from: _IType): Evaluator<Date> | nil {\n switch (from.primary) {\n case DataType.text:\n switch (this.primary) {\n case DataType.timestamp:\n case DataType.timestamptz:\n return value\n .setConversion(str => {\n const conv = moment.utc(str);\n if (!conv.isValid()) {\n throw new QueryError(`Invalid timestamp format: ` + str);\n }\n return conv.toDate()\n }\n , toTs => ({ toTs, t: this.primary }));\n case DataType.date:\n return value\n .setConversion(str => {\n const conv = moment.utc(str);\n if (!conv.isValid()) {\n throw new QueryError(`Invalid timestamp format: ` + str);\n }\n return conv.startOf('day').toDate();\n }\n , toDate => ({ toDate }));\n case DataType.time:\n case DataType.timetz:\n return value\n .setConversion(str => {\n parseTime(str); // will throw an error if invalid format\n return str;\n }\n , toTime => ({ toTime, t: this.primary }));\n }\n }\n return null;\n }\n\n\n\n doEquals(a: any, b: any): boolean {\n return Math.abs(moment(a).diff(moment(b))) < 0.1;\n }\n doGt(a: any, b: any): boolean {\n return moment(a).diff(moment(b)) > 0;\n }\n doLt(a: any, b: any): boolean {\n return moment(a).diff(moment(b)) < 0;\n }\n}","import { DataType, nil, _IType } from '../interfaces-private';\nimport { TypeBase } from './datatype-base';\nimport { Evaluator } from '../evaluator';\nimport { deepCompare, deepEqual, errorMessage } from '../utils';\nimport { Types } from './datatypes';\nimport { JSON_NIL } from '../execution/clean-results';\nimport { QueryError } from '../interfaces';\nimport stringify from 'json-stable-stringify';\n\nexport class JSONBType extends TypeBase<any> {\n\n\n constructor(readonly primary: DataType, dataType: number) {\n super(dataType);\n }\n\n doCanCast(_to: _IType): boolean | nil {\n switch (_to.primary) {\n case DataType.text:\n case DataType.json:\n case DataType.jsonb:\n case DataType.float:\n case DataType.bool:\n case DataType.integer:\n return true;\n }\n return null;\n }\n\n doCast(a: Evaluator, to: _IType): Evaluator {\n switch (to.primary) {\n case DataType.text:\n return a\n .setType(Types.text())\n .setConversion(json => stringify(this.toResult(json))\n , toJsonB => ({ toJsonB }))\n .cast(to) as Evaluator; // <== might need truncation\n case DataType.jsonb:\n case DataType.json:\n return a.setType(to);\n case DataType.float:\n case DataType.integer:\n const isInt = to.primary === DataType.integer;\n return a\n .setType(to)\n .setConversion(json => {\n if (json === JSON_NIL) {\n throw new QueryError('cannot cast jsonb null to type ' + (isInt ? 'integer' : 'double precision'), '22023');\n }\n if (typeof json !== 'number') {\n throw new QueryError('cannot cast jsonb string to type ' + (isInt ? 'integer' : 'double precision'), '22023');\n }\n return isInt ? Math.round(json) : json;\n }, toFloat => ({ toFloat }));\n case DataType.bool:\n return a\n .setType(to)\n .setConversion(json => {\n if (typeof json !== 'boolean') {\n throw new QueryError('cannot cast jsonb string to type boolean', '22023');\n }\n return json;\n }, toFloat => ({ toFloat }));\n default:\n return a.setType(to);\n }\n\n }\n\n\n\n doCanBuildFrom(from: _IType) {\n switch (from.primary) {\n case DataType.text:\n return true;\n }\n return false;\n }\n\n doBuildFrom(value: Evaluator, from: _IType): Evaluator<Date> | nil {\n switch (from.primary) {\n case DataType.text:\n return value\n .setConversion(raw => {\n try {\n return JSON.parse(raw, (_, x) => x ?? JSON_NIL) ?? JSON_NIL\n } catch (e) {\n throw new QueryError({\n error: `invalid input syntax for type json`,\n details: errorMessage(e),\n code: '22P02',\n });\n }\n }\n , toJsonb => ({ toJsonb }));\n }\n return null;\n }\n\n\n\n doEquals(a: any, b: any): boolean {\n return deepEqual(this.toResult(a), this.toResult(b), false);\n }\n\n doGt(a: any, b: any): boolean {\n return deepCompare(this.toResult(a), this.toResult(b)) > 0;\n }\n\n doLt(a: any, b: any): boolean {\n return deepCompare(this.toResult(a), this.toResult(b)) < 0;\n }\n\n toResult(result: any): any {\n return result === JSON_NIL\n ? null\n : result;\n }\n\n}\n","import { DataType, nil, QueryError, RegClass, RegType, _IType } from '../interfaces-private';\nimport { TypeBase } from './datatype-base';\nimport { Evaluator } from '../evaluator';\nimport { Types } from './datatypes';\nimport { buildCtx } from '../parser/context';\n\nexport class RegTypeImpl extends TypeBase<RegType> {\n\n\n get primary(): DataType {\n return DataType.regtype;\n }\n\n doCanCast(_to: _IType): boolean | nil {\n switch (_to.primary) {\n case DataType.text:\n case DataType.integer:\n return true;\n }\n return null;\n }\n\n doCast(a: Evaluator<RegType>, to: _IType): Evaluator {\n switch (to.primary) {\n case DataType.text:\n return a\n .setType(to)\n .setConversion(raw => raw.toString(10)\n , toText => ({ toText }))\n case DataType.integer:\n const { schema } = buildCtx();\n return a\n .setType(to)\n .setConversion((raw: RegType) => {\n if (typeof raw === 'number') {\n return raw;\n }\n const t = schema.parseType(raw);\n return t.reg.typeId;\n }\n , toText => ({ toText }))\n }\n throw new Error('failed to cast');\n }\n\n\n doCanBuildFrom(from: _IType) {\n switch (from.primary) {\n case DataType.text:\n return true;\n }\n return false;\n }\n\n doBuildFrom(value: Evaluator, from: _IType): Evaluator<RegClass> | nil {\n switch (from.primary) {\n case DataType.text:\n const { schema } = buildCtx();\n return value\n .setType(Types.regtype)\n .setConversion((str: string) => {\n let repl = str.replace(/[\"\\s]+/g, '');\n if (repl.startsWith('pg_catalog.')) {\n repl = repl.substr('pg_catalog.'.length);\n }\n return schema.parseType(repl).name;\n }\n , strToRegType => ({ strToRegType }));\n }\n return null;\n }\n\n}\n","import { DataType, nil, QueryError, RegClass, _IType } from '../interfaces-private';\nimport { TypeBase } from './datatype-base';\nimport { Evaluator } from '../evaluator';\nimport { parseRegClass } from '../utils';\nimport { Types } from './datatypes';\nimport { buildCtx } from '../parser/context';\n\nexport class RegClassImpl extends TypeBase<RegClass> {\n\n\n\n get primary(): DataType {\n return DataType.regclass;\n }\n\n doCanCast(_to: _IType): boolean | nil {\n switch (_to.primary) {\n case DataType.text:\n case DataType.integer:\n return true;\n }\n return null;\n }\n\n doCast(a: Evaluator, to: _IType): Evaluator {\n const { schema } = buildCtx();\n switch (to.primary) {\n case DataType.text:\n return a\n .setType(Types.text())\n .setConversion((raw: RegClass) => {\n return raw?.toString();\n }\n , toText => ({ toText }))\n case DataType.integer:\n return a\n .setType(Types.text())\n .setConversion((raw: RegClass) => {\n\n // === regclass -> int\n\n const cls = parseRegClass(raw);\n\n // if its a number, then try to get it.\n if (typeof cls === 'number') {\n return schema.getObjectByRegOrName(cls)\n ?.reg.classId\n ?? cls;\n }\n\n // get the object or throw\n return schema.getObjectByRegOrName(raw)\n .reg.classId;\n }\n , toText => ({ toText }))\n }\n throw new Error('failed to cast');\n }\n\n\n\n doCanBuildFrom(from: _IType) {\n switch (from.primary) {\n case DataType.text:\n return true;\n }\n return false;\n }\n\n doBuildFrom(value: Evaluator, from: _IType): Evaluator<RegClass> | nil {\n const { schema } = buildCtx();\n switch (from.primary) {\n case DataType.text:\n return value\n .setConversion((str: string) => {\n // === text -> regclass\n\n const cls = parseRegClass(str);\n\n // if its a number, then try to get it.\n if (typeof cls === 'number') {\n return schema.getObjectByRegOrName(cls)\n ?.name\n ?? cls;\n }\n\n // else, get or throw.\n return schema.getObject(cls)\n .name;\n }\n , strToRegClass => ({ strToRegClass }));\n }\n return null;\n }\n\n}\n","import { Evaluator } from '../evaluator';\nimport { TypeBase } from './datatype-base';\nimport { DataType, nil, QueryError } from '../interfaces';\nimport { _ISchema, _IType } from '../interfaces-private';\n\n// https://www.postgresql.org/docs/13/datatype-net-types.html#DATATYPE-INET\n\nexport class INetType extends TypeBase<string> {\n\n get primary(): DataType {\n return DataType.inet\n }\n\n doCanCast(to: _IType) {\n return to.primary === DataType.text;\n }\n\n doCast(value: Evaluator<string>, to: _IType<string>): Evaluator<any> | nil {\n return value;\n }\n\n prefer(type: _IType<any>): _IType | nil {\n return this;\n }\n\n doCanBuildFrom(from: _IType): boolean | nil {\n return from.primary === DataType.text;\n }\n\n doBuildFrom(value: Evaluator<string>, from: _IType<string>): Evaluator<string> | nil {\n return value\n .setConversion(x => {\n const [_, a, b, c, d, __, m] = /^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)(\\/(\\d+))?$/.exec(x) ?? []\n if ([a, b, c, d].some(notByte) || notMask(m)) {\n throw new QueryError(`invalid input syntax for type inet: ${x}`);\n }\n return x;\n }, toInet => ({ toInet }));\n }\n}\n\nfunction notByte(b: string) {\n return !b\n || b.length > 1 && b[0] === '0'\n || parseInt(b, 10) > 255;\n}\n\nfunction notMask(b: string) {\n return b\n && (b.length > 1 && b[0] === '0'\n || parseInt(b, 10) > 32);\n}","import { _IIndex, IValue, IndexExpression, _Transaction, IndexKey, _Explainer, _IndexExplanation, IndexOp, _ISelection, Stats, Row } from '../interfaces-private';\n\nexport class RestrictiveIndex implements _IIndex {\n constructor(private base: _IIndex, readonly filter: _ISelection) {\n }\n\n private match(raw: Row, t: _Transaction) {\n return this.filter.hasItem(raw, t);\n }\n\n get expressions(): IndexExpression[] {\n return this.base.expressions;\n }\n\n stats(t: _Transaction, key?: IndexKey): Stats | null {\n // cannot comput without iterating\n return null;\n }\n\n iterateKeys() {\n // cannot comput without iterating\n // (we know underlying keys, but we dont know which have items that match our filter)\n return null;\n }\n\n eqFirst(rawKey: IndexKey, t: _Transaction) {\n for (const i of this.base.enumerate({\n key: rawKey,\n t: t,\n type: 'eq',\n })) {\n if (this.match(i, t)) {\n return i;\n }\n }\n return null;\n }\n\n\n entropy(t: IndexOp): number {\n return this.base.entropy(t);\n }\n\n *enumerate(op: IndexOp): Iterable<Row> {\n for (const i of this.base.enumerate(op)) {\n if (this.match(i, op.t)) {\n yield i;\n }\n }\n }\n\n explain(e: _Explainer): _IndexExplanation {\n return {\n _: 'indexRestriction',\n lookup: this.base.explain(e),\n for: this.filter.explain(e),\n // criteria: this.restrict.explain(e),\n }\n }\n}","import { AggregationComputer, AggregationGroupComputer, IndexKey, IValue, QueryError, _IIndex, _ISelection, _IType, _Transaction } from '../../interfaces-private';\nimport { ExprCall } from 'pgsql-ast-parser';\nimport { isSelectAllArgList, nullIsh } from '../../utils';\nimport { buildValue } from '../../parser/expression-builder';\nimport { Types } from '../../datatypes';\nimport { withSelection } from '../../parser/context';\n\nexport function buildCount(this: void, base: _ISelection, call: ExprCall) {\n return withSelection(base, () => {\n const args = call.args;\n if (isSelectAllArgList(args)) {\n return new CountStar(base);\n }\n if (args.length !== 1) {\n throw new QueryError('COUNT expects one argument, given ' + args.length);\n }\n const what = buildValue(args[0]);\n return new CountExpr(what);\n });\n}\n\nclass CountStar implements AggregationComputer<number> {\n\n constructor(private on: _ISelection) {\n }\n\n get type(): _IType<any> {\n return Types.bigint;\n }\n\n computeFromIndex(key: IndexKey, index: _IIndex, t: _Transaction) {\n const stats = index.stats(t, key);\n return stats?.count;\n }\n\n computeNoGroup(t: _Transaction) {\n return this.on.stats(t)?.count;\n }\n\n createGroup(): AggregationGroupComputer<number> {\n let cnt = 0;\n return {\n feedItem: () => cnt++,\n finish: () => cnt,\n };\n }\n\n}\n\nclass CountExpr implements AggregationComputer<number> {\n\n constructor(private exp: IValue) {\n }\n\n get type(): _IType<any> {\n return Types.bigint;\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<number> {\n let cnt = 0;\n return {\n feedItem: (item) => {\n const value = this.exp.get(item, t);\n if (!nullIsh(value)) {\n cnt++;\n }\n },\n finish: () => cnt,\n };\n }\n}\n","import { AggregationComputer, AggregationGroupComputer, IValue, nil, QueryError, _ISelection, _IType, _Transaction } from '../../interfaces-private';\nimport { Expr } from 'pgsql-ast-parser';\nimport { buildValue } from '../../parser/expression-builder';\nimport { nullIsh } from '../../utils';\nimport { DataType } from '../../interfaces';\nimport { withSelection } from '../../parser/context';\n\n\nclass MinMax implements AggregationComputer<number> {\n\n constructor(private exp: IValue, private isMax: boolean) {\n }\n\n get type(): _IType<any> {\n return this.exp.type;\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<number> {\n let val: number | nil = null;\n return {\n feedItem: (item) => {\n const value = this.exp.get(item, t);\n if (!nullIsh(value) && (nullIsh(val) || (\n this.isMax\n ? val! < value\n : val! > value\n ))) {\n val = value;\n }\n },\n finish: () => val,\n };\n }\n}\n\n\nexport function buildMinMax(this: void, base: _ISelection, args: Expr[], op: 'max' | 'min') {\n return withSelection(base, () => {\n if (args.length !== 1) {\n throw new QueryError(op.toUpperCase() + ' expects one argument, given ' + args.length);\n }\n\n const what = buildValue(args[0]);\n\n switch (what.type.primary) {\n case DataType.bigint:\n case DataType.integer:\n case DataType.decimal:\n case DataType.date:\n case DataType.float:\n case DataType.text:\n case DataType.time:\n case DataType.timetz:\n case DataType.timestamp:\n case DataType.timestamptz:\n break;\n default:\n throw new QueryError(`function min(${what.type.primary}) does not exist`, '42883');\n }\n return new MinMax(what, op === 'max');\n });\n}\n","import { AggregationComputer, AggregationGroupComputer, IValue, nil, QueryError, _ISelection, _IType, _Transaction } from '../../interfaces-private';\nimport { ExprCall } from 'pgsql-ast-parser';\nimport { buildValue } from '../../parser/expression-builder';\nimport { Types } from '../../datatypes';\nimport { nullIsh } from '../../utils';\nimport { withSelection } from '../../parser/context';\n\nclass SumExpr implements AggregationComputer<number> {\n\n constructor(private exp: IValue) {\n }\n\n get type(): _IType<any> {\n return Types.bigint;\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<number> {\n let val: number | nil = null;\n return {\n feedItem: (item) => {\n const value = this.exp.get(item, t);\n if (!nullIsh(value)) {\n val = nullIsh(val) ? value : val + value;\n }\n },\n finish: () => val,\n }\n }\n}\n\nexport function buildSum(this: void, base: _ISelection, call: ExprCall) {\n return withSelection(base, () => {\n const args = call.args;\n if (args.length !== 1) {\n throw new QueryError('SUM expects one argument, given ' + args.length);\n }\n\n const what = buildValue(args[0]);\n return new SumExpr(what);\n\n });\n}\n","import { AggregationComputer, AggregationGroupComputer, IValue, nil, QueryError, _ISelection, _IType, _Transaction } from '../../interfaces-private';\nimport { ExprCall } from 'pgsql-ast-parser';\nimport { buildValue } from '../../parser/expression-builder';\nimport { Types } from '../../datatypes';\nimport { withSelection } from '../../parser/context';\n\n\nclass ArrayAggExpr implements AggregationComputer<any[]> {\n\n constructor(private exp: IValue) {\n }\n\n get type(): _IType<any> {\n return Types.integer.asArray();\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<any[]> {\n let val: any[] = [];\n return {\n feedItem: (item) => {\n const value = this.exp.get(item, t);\n val = [...val, value];\n },\n finish: () => val,\n }\n }\n}\n\nexport function buildArrayAgg(this: void, base: _ISelection, call: ExprCall) {\n return withSelection(base, () => {\n const args = call.args;\n if (args.length !== 1) {\n throw new QueryError('ARRAY_AGG expects one argument, given ' + args.length);\n }\n\n const what = buildValue(args[0]);\n return new ArrayAggExpr(what);\n })\n}\n","import { AggregationComputer, AggregationGroupComputer, IValue, nil, QueryError, _ISelection, _IType, _Transaction } from '../../interfaces-private';\nimport { ExprCall } from 'pgsql-ast-parser';\nimport { buildValue } from '../../parser/expression-builder';\nimport { Types } from '../../datatypes';\nimport { nullIsh, sum } from '../../utils';\nimport { withSelection } from '../../parser/context';\n\n\nclass AvgExpr implements AggregationComputer<number> {\n\n constructor(private exp: IValue) {\n }\n\n get type(): _IType<any> {\n return Types.bigint;\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<number> {\n let full: number[] = [];\n return {\n feedItem: (item) => {\n const value = this.exp.get(item, t);\n if (!nullIsh(value)) {\n full.push(value);\n }\n },\n finish: () => full.length === 0 ? null : sum(full) / full.length,\n }\n }\n}\n\n\nexport function buildAvg(this: void, base: _ISelection, call: ExprCall) {\n return withSelection(base, () => {\n const args = call.args;\n if (args.length !== 1) {\n throw new QueryError('AVG expects one argument, given ' + args.length);\n }\n\n const what = buildValue(args[0]);\n return new AvgExpr(what);\n });\n}\n","import { _ISelection, QueryError, AggregationComputer, IValue, _IType, _Transaction, AggregationGroupComputer } from '../../interfaces-private';\nimport { ExprCall } from 'pgsql-ast-parser';\nimport { withSelection } from '../../parser/context';\nimport { buildValue } from '../../parser/expression-builder';\nimport { nullIsh } from '../../utils';\nimport { Types } from '../../datatypes';\n\n\nclass JsonAggExpr implements AggregationComputer<any[]> {\n\n constructor(private exp: IValue, readonly type: _IType) {\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<any[]> {\n let full: any[][] = [];\n return {\n feedItem: (item) => {\n const value = this.exp.get(item, t);\n if (!nullIsh(value)) {\n full.push(value);\n }\n },\n finish: () => full.length === 0 ? null : full,\n }\n }\n}\n\n\nexport function buildJsonAgg(this: void, base: _ISelection, call: ExprCall, fn: 'json_agg' | 'jsonb_agg') {\n return withSelection(base, () => {\n const args = call.args;\n if (args.length !== 1) {\n throw new QueryError(fn + ' expects one argument, given ' + args.length);\n }\n const type = fn === 'json_agg' ? Types.json : Types.jsonb;\n const what = buildValue(args[0]);\n return new JsonAggExpr(what, type);\n });\n}\n","import { _ISelection, QueryError, AggregationComputer, IValue, _IType, _Transaction, AggregationGroupComputer } from '../../interfaces-private';\nimport { ExprCall } from 'pgsql-ast-parser';\nimport { withSelection } from '../../parser/context';\nimport { buildValue } from '../../parser/expression-builder';\nimport { nullIsh } from '../../utils';\nimport { Types } from '../../datatypes';\n\n\nclass BoolAgg implements AggregationComputer<boolean> {\n\n constructor(private exp: IValue, private isOr: boolean) {\n }\n\n get type() {\n return Types.bool;\n }\n\n createGroup(t: _Transaction): AggregationGroupComputer<boolean> {\n let result: boolean | null = null;\n return {\n feedItem: (item) => {\n if (result === this.isOr) {\n // no need to compute it further\n return;\n }\n const value = this.exp.get(item, t);\n if (nullIsh(value)) {\n return;\n }\n result = !!value;\n },\n finish: () => result,\n }\n }\n}\n\n\n\nexport function buildBoolAgg(this: void, base: _ISelection, call: ExprCall, fn: 'bool_and' | 'bool_or') {\n return withSelection(base, () => {\n const args = call.args;\n if (args.length !== 1) {\n throw new QueryError(fn + ' expects one argument, given ' + args.length);\n }\n const what = buildValue(args[0]).cast(Types.bool);\n return new BoolAgg(what, fn === 'bool_or');\n });\n}\n","import { _ITable, _Transaction, IValue, _Explainer, _ISchema, asTable, _ISelection, _IIndex, _IStatement } from '../../interfaces-private';\nimport { DeleteStatement } from 'pgsql-ast-parser';\nimport { MutationDataSourceBase } from './mutation-base';\nimport { buildCtx } from '../../parser/context';\n\nexport class Deletion extends MutationDataSourceBase {\n\n\n constructor(ast: DeleteStatement) {\n const { schema } = buildCtx();\n const table = asTable(schema.getObject(ast.from));\n const mutatedSel = table\n .selection\n .filter(ast.where);\n\n super(table, mutatedSel, ast);\n }\n\n protected performMutation(t: _Transaction): any[] {\n // perform deletion\n const rows = [];\n for (const item of this.mutatedSel.enumerate(t)) {\n this.table.delete(t, item);\n rows.push(item);\n }\n return rows;\n }\n}\n","import { _ITable, _Transaction, _Explainer, _ISchema, asTable, _ISelection, _IIndex, _IStatement } from '../../interfaces-private';\nimport { UpdateStatement } from 'pgsql-ast-parser';\nimport { MutationDataSourceBase, Setter, createSetter } from './mutation-base';\nimport { buildCtx } from '../../parser/context';\nimport { buildSelect } from '../select';\nimport { Selection } from '../../transforms/selection';\nimport { JoinSelection } from '../../transforms/join';\nimport { deepCloneSimple } from '../../utils';\n\nexport class Update extends MutationDataSourceBase {\n\n private setter: Setter;\n private fetchObjectToUpdate?: ((x: any) => any);\n\n constructor(ast: UpdateStatement) {\n const { schema } = buildCtx();\n const into = asTable(schema.getObject(ast.table));\n let mutatedSel: _ISelection;\n let fetchObjectToUpdate: ((x: any) => any) | undefined;\n if (ast.from) {\n\n // => UPDATE-FROM-SELECT\n\n // build a join that selects the full record to update,\n // based on the data from the original selection\n mutatedSel = buildSelect({\n type: 'select',\n // join from:\n from: [\n ast.from,\n {\n type: 'table',\n name: ast.table,\n join: {\n type: 'INNER JOIN',\n on: ast.where,\n }\n }],\n // // select the whole updated record\n columns: [{\n expr: {\n type: 'ref',\n table: ast.table,\n name: '*',\n }\n }]\n });\n\n // this should have built a selection on a join statement\n if (!(mutatedSel instanceof Selection)) {\n throw new Error('Invalid select-from statement');\n }\n mutatedSel = mutatedSel.base;\n if (!(mutatedSel instanceof JoinSelection)) {\n // should not happen\n throw new Error('Invalid select-from statement');\n }\n // use hack to get the full joined source in the selection\n fetchObjectToUpdate = x => x['>joined'];\n } else {\n\n // => REGULAR UPDATE\n mutatedSel = into\n .selection\n .filter(ast.where);\n }\n\n\n super(into, mutatedSel, ast);\n\n this.setter = createSetter(this.table, this.mutatedSel, ast.sets);\n this.fetchObjectToUpdate = fetchObjectToUpdate;\n\n }\n\n protected performMutation(t: _Transaction): any[] {\n // perform update\n const rows: any[] = [];\n for (const i of this.mutatedSel.enumerate(t)) {\n const data = deepCloneSimple(this.fetchObjectToUpdate\n ? this.fetchObjectToUpdate(i)\n : i);\n this.setter(t, data, i);\n rows.push(this.table.update(t, data));\n }\n return rows;\n }\n}\n","import { _ITable, _Transaction, IValue, _Explainer, nil, _ISchema, asTable, _ISelection, _IIndex, QueryError, OnConflictHandler, ChangeOpts, _IStatement, NotSupported } from '../../interfaces-private';\nimport { InsertStatement } from 'pgsql-ast-parser';\nimport { buildValue } from '../../parser/expression-builder';\nimport { Types } from '../../datatypes';\nimport { JoinSelection } from '../../transforms/join';\nimport { MutationDataSourceBase, createSetter } from './mutation-base';\nimport { ArrayFilter } from '../../transforms/array-filter';\nimport { withSelection, buildCtx } from '../../parser/context';\nimport { buildValues, buildSelect } from '../../execution/select';\nimport { IndexConstraint } from '../../constraints/index-cst';\n\nexport class Insert extends MutationDataSourceBase {\n\n private valueRawSource: _ISelection;\n private insertColumns!: string[];\n private valueConvertedSource!: IValue[];\n private opts!: ChangeOpts;\n\n\n constructor(ast: InsertStatement) {\n const { schema } = buildCtx();\n // get table to insert into\n const table = asTable(schema.getObject(ast.into));\n const selection = table\n .selection\n .setAlias(ast.into.alias);\n\n // init super\n super(table, selection, ast);\n\n // get data to insert\n this.valueRawSource = ast.insert.type === 'values'\n ? buildValues(ast.insert, true)\n : buildSelect(ast.insert);\n\n\n withSelection(this, () => this.visit(ast));\n }\n\n private visit(ast: InsertStatement) {\n\n // check not inserting too many values\n this.insertColumns = ast.columns?.map(x => x.name)\n ?? this.table.selection.columns.map(x => x.id!)\n .slice(0, this.valueRawSource.columns.length);\n if (this.valueRawSource.columns.length > this.insertColumns.length) {\n throw new QueryError(`INSERT has more expressions than target columns`);\n }\n\n // check insert types\n this.valueConvertedSource = this.insertColumns.map((col, i) => {\n const value = this.valueRawSource.columns[i];\n const insertInto = this.table.selection.getColumn(col);\n // It seems that the explicit conversion is only performed when inserting values.\n const canConvert = ast.insert.type === 'values'\n ? value.type.canCast(insertInto.type)\n : value.type.canConvertImplicit(insertInto.type);\n if (!canConvert) {\n throw new QueryError(`column \"${col}\" is of type ${insertInto.type.name} but expression is of type ${value.type.name}`);\n }\n return value.type === Types.default\n ? value // handle \"DEFAULT\" values\n : value.cast(insertInto.type);\n });\n\n\n // build 'on conflict' strategy\n let ignoreConflicts: OnConflictHandler | nil = undefined;\n if (ast.onConflict) {\n // find the targeted index\n let onIndex: _IIndex | nil = null;\n const _on = ast.onConflict.on;\n switch (_on?.type) {\n case 'on expr':\n const exprs = _on.exprs;\n const on = withSelection(this.table.selection, () => exprs.map(x => buildValue(x)));\n onIndex = this.table.getIndex(...on);\n break;\n case 'on constraint':\n const cst = this.table.getConstraint(_on.constraint.name);\n if (cst instanceof IndexConstraint) {\n onIndex = cst.index;\n }\n break;\n case undefined:\n // on \"on constraint\" in statement\n break;\n default:\n throw NotSupported.never(_on, 'unexpected \"on conflict\" type');\n }\n if (!!_on && !onIndex?.unique) {\n throw new QueryError(`There is no unique or exclusion constraint matching the ON CONFLICT specification`);\n }\n\n // check if 'do nothing'\n if (ast.onConflict.do === 'do nothing') {\n ignoreConflicts = { ignore: onIndex ?? 'all' };\n } else {\n if (!onIndex) {\n throw new QueryError(`ON CONFLICT DO UPDATE requires inference specification or constraint name`);\n }\n const subject = new JoinSelection(\n this.mutatedSel\n // fake data... we're only using this to get the multi table column resolution:\n , new ArrayFilter(this.table.selection, []).setAlias('excluded')\n , {\n type: 'LEFT JOIN',\n on: { type: 'boolean', value: false }\n }\n , false\n );\n const setter = createSetter(this.table, subject, ast.onConflict.do.sets,);\n const _where = ast.onConflict.where;\n const where = _where && withSelection(subject, () => buildValue(_where));\n ignoreConflicts = {\n onIndex,\n update: (item, excluded, t) => {\n // build setter context\n const jitem = subject.buildItem(item, excluded);\n\n // check \"WHERE\" clause on conflict\n if (where) {\n const whereClause = where.get(jitem, t);\n if (whereClause !== true) {\n return;\n }\n }\n\n // execute set\n setter(t, item, jitem);\n },\n }\n }\n }\n\n this.opts = {\n onConflict: ignoreConflicts,\n overriding: ast.overriding\n };\n }\n\n protected performMutation(t: _Transaction): any[] {\n\n // enumerate & get\n const values: any[][] = [];\n for (const o of this.valueRawSource.enumerate(t)) {\n const nv = [];\n for (let i = 0; i < this.insertColumns.length; i++) {\n const _custom = this.valueConvertedSource[i].get(o, t);\n nv.push(_custom);\n }\n values.push(nv);\n }\n\n\n // insert values\n const ret: any[] = [];\n\n for (const val of values) {\n if (val.length !== this.insertColumns.length) {\n throw new QueryError('Insert columns / values count mismatch');\n }\n const toInsert: any = {};\n for (let i = 0; i < val.length; i++) {\n const v = val[i];\n const col = this.valueConvertedSource[i];\n if (col.type === Types.default) {\n continue; // insert a 'DEFAULT' value\n }\n toInsert[this.insertColumns[i]] = v;\n // if ('_custom' in v) {\n // toInsert[columns[i]] = v._custom;\n // } else {\n // const notConv = buildValue(table.selection, v);\n // const converted = notConv.cast(col.type);\n // if (!converted.isConstant) {\n // throw new QueryError('Cannot insert non constant expression');\n // }\n // toInsert[columns[i]] = converted.get();\n // }\n }\n const insertedRow = this.table.doInsert(t, toInsert, this.opts)\n if (insertedRow) {\n ret.push(insertedRow);\n }\n }\n\n return ret;\n }\n}\n","import { nil, QueryError, Schema, SchemaField } from '../interfaces';\nimport { IValue, setId, _ISchema, _IType, _Transaction } from '../interfaces-private';\nimport { Expr } from 'pgsql-ast-parser';\nimport { ReadOnlyTable } from './readonly-table';\nimport { buildValue } from '../parser/expression-builder';\nimport { Types } from '../datatypes';\nimport { withSelection, buildCtx } from '../parser/context';\nimport { columnEvaluator } from '../transforms/selection';\n\nlet cnt = 0;\nexport class ValuesTable extends ReadOnlyTable {\n private symbol = Symbol();\n _schema!: Schema;\n private assignments!: (IValue | \"default\")[][];\n\n entropy(t: _Transaction): number {\n return 0;\n }\n\n enumerate(t: _Transaction): Iterable<any> {\n const ret = this.assignments.map(vals => {\n const ret = { [this.symbol]: true } as any;\n setId(ret, 'vtbl' + (++cnt));\n for (let i = 0; i < vals.length; i++) {\n const v = vals[i];\n ret[this._schema.fields[i].name] = v === 'default'\n ? null\n : v.get({}, t);\n }\n return ret;\n });\n return ret;\n }\n\n hasItem(value: any, t: _Transaction): boolean {\n return !!value[this.symbol];\n }\n\n /** @override */\n protected buildColumnEvaluator(_col: SchemaField, i: number): IValue {\n return columnEvaluator(this, _col.name, _col.type as _IType, {\n onCast: to => {\n // forward onCast to values\n // which is important for query parameters type inference\n // see PreparedQuery.describe()\n for (const row of this.assignments) {\n if (row[i] !== 'default') {\n row[i]?.cast(to);\n }\n }\n },\n });\n }\n\n constructor(alias: string, items: Expr[][], columnNames: string[] | nil, acceptDefault?: boolean) {\n super(buildCtx().schema);\n withSelection(buildCtx().schema.dualTable.selection, () => {\n const len = new Set(items.map(x => x.length));\n if (len.size !== 1) {\n throw new QueryError('VALUES lists must all be the same length');\n }\n if (columnNames && columnNames.length > items[0].length) {\n throw new QueryError(`table \"${alias}\" has ${items[0].length} columns available but ${columnNames.length} columns specified`);\n }\n type V = IValue | 'default';\n let builtVals: V[][] = items.map(vals => vals.map(e => {\n if (acceptDefault && e.type === 'default') {\n return 'default';\n }\n return buildValue(e);\n }));\n const types = items[0].map((_, i) => {\n return preferedType(builtVals.map(x => {\n const v = x[i];\n return v === 'default'\n ? null\n : v.type;\n }))\n });\n this._schema = {\n name: alias,\n fields: types.map<SchemaField>((type, i) => {\n return {\n type: type ?? Types.default,\n name: columnNames?.[i] ?? `column${i + 1}`,\n }\n })\n };\n this.assignments = builtVals.map(vals => vals.map((v, i) => v === 'default' ? v : v.cast(types[i]!)))\n });\n }\n}\n\nfunction preferedType(types: (_IType | null)[]) {\n return types.reduce((a, b) => {\n if (!a) {\n return b;\n }\n if (!b) {\n return a;\n }\n const ret = a.prefer(b);\n if (!ret) {\n throw new QueryError('Incompatible value types');\n }\n return ret;\n }, types[0]);\n}","import { _Transaction, IValue, _Explainer, _IIndex, _SelectExplanation, Stats } from '../interfaces-private';\nimport { RecordCol } from '../datatypes';\nimport { buildCtx } from '../parser/context';\nimport { DataSourceBase } from '../transforms/transform-base';\nimport { columnEvaluator } from '../transforms/selection';\nimport { colByName, fromEntries } from '../utils';\n\nexport class FunctionCallTable extends DataSourceBase {\n readonly columns: readonly IValue[];\n private readonly colsByName: Map<string, IValue>;\n private symbol = Symbol();\n\n get isExecutionWithNoResult(): boolean {\n return false;\n }\n\n constructor(cols: readonly RecordCol[], private evaluator: IValue) {\n super(buildCtx().schema);\n this.columns = cols.map(c => columnEvaluator(this, c.name, c.type).setOrigin(this));\n this.colsByName = fromEntries(this.columns.map(c => [c.id!, c]));\n }\n\n entropy(t: _Transaction): number {\n return 0;\n }\n\n enumerate(t: _Transaction): Iterable<any> {\n const results = this.evaluator.get(null, t);\n for (const result of results ?? []) {\n result[this.symbol] = true;\n }\n return results;\n }\n\n hasItem(value: any, t: _Transaction): boolean {\n return !!(value as any)[this.symbol];\n }\n\n getColumn(column: string, nullIfNotFound?: boolean | undefined): IValue {\n return colByName(this.colsByName, column, nullIfNotFound)!;\n }\n\n getIndex(forValue: IValue): _IIndex | null | undefined {\n return null;\n }\n\n isOriginOf(value: IValue): boolean {\n return value.origin === this;\n }\n\n\n explain(e: _Explainer): _SelectExplanation {\n throw new Error('Method not implemented.');\n }\n\n stats(t: _Transaction): Stats | null {\n throw new Error('Method not implemented.');\n }\n}\n","import { IValue, _IIndex, _ITable, getId, IndexKey, CreateIndexColDef, _Transaction, _Explainer, _IndexExplanation, IndexExpression, IndexOp, Stats, _INamedIndex, Reg, _ISchema, Row } from '../interfaces-private';\n// @ts-ignore\nimport createTree from 'functional-red-black-tree';\nimport { QueryError, NotSupported, nil } from '../interfaces';\nimport { Set as ImSet, Map as ImMap } from 'immutable';\nimport { deepCloneSimple, nullIsh, hasNullish } from '../utils';\n\n\n// https://www.npmjs.com/package/functional-red-black-tree\ninterface BTree<T> {\n readonly keys: Iterable<IndexKey>;\n readonly values: Iterable<IndexKey>;\n readonly length: number;\n get(key: IndexKey): T;\n insert(key: IndexKey, value: T): BTree<T>;\n remove(key: IndexKey): BTree<T>;\n find(key: IndexKey): BIterator<T>;\n /** Find the first item in the tree whose key is >= key */\n ge(key: IndexKey): BIterator<T>;\n /** Finds the first item in the tree whose key is > key */\n gt(key: IndexKey): BIterator<T>;\n /** Finds the last item in the tree whose key is < key */\n lt(key: IndexKey): BIterator<T>;\n /** Finds the last item in the tree whose key is <= key */\n le(key: IndexKey): BIterator<T>;\n\n at(pos: number): BIterator<T>;\n\n readonly begin: BIterator<T>;\n readonly end: BIterator<T>;\n /** If a truthy value is returned from the visitor, then iteration is stopped. */\n forEach(fn: (key: IndexKey, value: T) => boolean, low?: number, high?: number): void;\n // root;\n}\n\ninterface BIterator<T> {\n readonly key: IndexKey;\n readonly value: T;\n // tree;\n readonly index: any;\n readonly valid: boolean;\n clone(): BIterator<T>;\n remove(): BTree<T>;\n update(value: T): BTree<T>;\n next(): void;\n prev(): void;\n readonly hasNext: boolean;\n readonly hasPrev: boolean;\n}\n\ntype RawTree = BTree<ImMap<string, Row>>;\n\nexport class BIndex implements _INamedIndex {\n\n get type(): 'index' {\n return 'index';\n }\n\n readonly reg: Reg;\n\n // private asBinary: RawTree;\n expressions: (IndexExpression & IValue)[];\n private treeBinId = Symbol();\n private treeCountId = Symbol();\n\n\n get ownerSchema(): _ISchema {\n return this.onTable.ownerSchema;\n }\n\n constructor(t: _Transaction\n , readonly name: string\n , readonly cols: readonly CreateIndexColDef[]\n , readonly onTable: _ITable\n , readonly hash: string\n , readonly unique: boolean\n , readonly notNull: boolean\n , readonly predicate: IValue | nil) {\n this.reg = onTable.ownerSchema._reg_register(this);\n this.truncate(t);\n this.expressions = cols.map(x => x.value);\n }\n\n drop(t: _Transaction): void {\n this.onTable.dropIndex(t, this.name);\n }\n\n compare(_a: any, _b: any) {\n for (let i = 0; i < this.expressions.length; i++) {\n const k = this.cols[i];\n const a = _a[i];\n const b = _b[i];\n const an = nullIsh(a);\n const bn = nullIsh(b);\n if (an || bn) {\n if (an === bn) {\n continue;\n }\n return (an\n ? -1\n : 1) * (k.nullsLast ? 1 : -1);\n }\n if (k.value.type.equals(a, b)) {\n continue;\n }\n return (k.value.type.gt(a, b)\n ? 1\n : -1)// * (k.desc ? -1 : 1);\n }\n return 0;\n }\n\n buildKey(raw: any, t: _Transaction): any[] {\n return this.expressions.map(k => k.get(raw, t));\n }\n\n truncate(t: _Transaction) {\n const asBinary = createTree((a: any, b: any) => {\n return this.compare(a, b);\n });\n this.setBin(t, asBinary);\n }\n\n dropFromData(t: _Transaction) {\n t.delete(this.treeBinId);\n }\n\n private bin(t: _Transaction) {\n return t.get<RawTree>(this.treeBinId);\n }\n private setBin(t: _Transaction, val: RawTree) {\n return t.set(this.treeBinId, val);\n }\n\n private setCount(t: _Transaction, val: number) {\n return t.set(this.treeCountId, val);\n }\n private getCount(t: _Transaction): number {\n return t.get<number>(this.treeCountId) ?? 0;\n }\n\n hasKey(key: IndexKey[], t: _Transaction): boolean {\n const it = this.bin(t).find(key);\n return it.valid;\n }\n\n add(raw: Row, t: _Transaction) {\n // check that predicate is OK\n if (this.predicate) {\n const val = this.predicate.get(raw, t);\n if (nullIsh(val) || val === false) {\n return;\n }\n }\n\n // build key and object id\n const id = getId(raw);\n const key = this.buildKey(raw, t);\n const hasNil = hasNullish(...key);\n if (this.notNull && hasNil) {\n throw new QueryError('Cannot add a null record in index ' + this.name);\n }\n if (this.unique && !hasNil && this.hasKey(key, t)) {\n const idCols = this.cols.map(it => it.value.id);\n throw new QueryError({\n error: `insert into \"${this.onTable.name}\" (${Object.keys(raw as any).join(', ')}) `\n + `values (${Object.keys(raw as any).map((_, i) => `$${i + 1}`).join(', ')}) returning \"${idCols}\" `\n + `- duplicate key value violates unique constraint \"${this.onTable.name}_pkey\"`,\n details: `Key (${idCols})=(${key}) already exists.`,\n code: '23505'\n });\n }\n // get tree\n let tree = this.bin(t);\n // get key in tree\n let keyValues = tree.find(key);\n if (keyValues.valid) {\n if (keyValues.value.has(id)) {\n return; // already exists\n }\n tree = keyValues.update(keyValues.value.set(id, raw));\n } else {\n tree = tree.insert(key, ImMap<string, Row>().set(id, raw));\n }\n this.setBin(t, tree);\n this.setCount(t, this.getCount(t) + 1);\n\n }\n\n delete(raw: any, t: _Transaction) {\n const key = this.buildKey(raw, t);\n let tree = this.bin(t);\n let keyValues = tree.find(key);\n if (!keyValues.valid) {\n return; // key does not exists\n }\n const id = getId(raw);\n if (!keyValues.value.has(id)) {\n return; // element does not exists\n }\n const newKeyValues = keyValues.value.delete(id);\n if (!newKeyValues.size) {\n tree = keyValues.remove();\n } else {\n tree = keyValues.update(newKeyValues);\n }\n this.setBin(t, tree);\n this.setCount(t, this.getCount(t) - 1);\n }\n\n eqFirst(rawKey: IndexKey, t: _Transaction): Row | null {\n for (const r of this.eq(rawKey, t, false)) {\n return deepCloneSimple(r);\n }\n return null;\n }\n\n\n *nin(rawKey: IndexKey[], t: _Transaction): Iterable<Row> {\n rawKey.sort((a, b) => this.compare(a, b));\n const kit = rawKey[Symbol.iterator]();\n let cur = kit.next();\n const bin = this.bin(t);\n let it = bin.begin;\n while (!cur.done) {\n // yield previous\n while (it.valid && this.compare(it.key, cur.value) < 0) {\n yield* it.value.values();\n it.next();\n }\n // skip equals\n if (this.compare(it.key, cur.value) === 0) {\n it = bin.gt(cur.value);\n }\n cur = kit.next();\n }\n\n // finish\n while (it.valid) {\n yield* it.value.values();\n it.next();\n }\n }\n\n\n entropy(op: IndexOp) {\n const bin = this.bin(op.t);\n if (!bin.length) {\n return 0;\n }\n const all = op.t.get<number>(this.treeCountId) ?? 0;\n // evaluate number of keys included in this operation\n const e = this._keyCount(op);\n // multiply by average values per key\n return e * all / bin.length;\n }\n\n stats(t: _Transaction, key?: IndexKey): Stats {\n if (!key) {\n return {\n count: t.get<number>(this.treeCountId) ?? 0,\n };\n }\n const found = this.bin(t).get(key);\n return {\n count: found?.size ?? 0,\n };\n }\n\n iterateKeys(t: _Transaction): Iterable<IndexKey> {\n const bin = this.bin(t);\n return bin.keys;\n }\n\n\n private _keyCount(op: IndexOp) {\n const bin = this.bin(op.t);\n switch (op.type) {\n case 'eq': {\n const begin = bin.find(op.key);\n if (!begin.valid) {\n return 0;\n }\n const end = bin.gt(op.key);\n if (!end.valid) {\n return bin.length - begin.index;\n }\n return end.index - begin.index + 1;\n }\n case 'neq': {\n let cnt = 0;\n const first = bin.find(op.key);\n if (!first.valid) {\n return bin.length;\n }\n cnt += first.valid\n ? first.index\n : 0;\n const end = bin.gt(op.key);\n cnt += end.valid\n ? (bin.length - end.index)\n : 0;\n return cnt;\n }\n case 'ge': {\n const found = bin.ge(op.key);\n return found.valid\n ? (bin.length - found.index)\n : 0;\n }\n case 'gt': {\n const found = bin.gt(op.key);\n return found.valid\n ? (bin.length - found.index)\n : 0;\n }\n case 'le': {\n const found = bin.gt(op.key);\n return found.valid\n ? found.index\n : bin.length;\n }\n case 'lt': {\n const found = bin.ge(op.key);\n return found.valid\n ? found.index\n : bin.length;\n }\n case 'inside': {\n const begin = bin.ge(op.lo);\n if (!begin.valid) {\n return 0;\n }\n const end = bin.gt(op.hi);\n if (!end.valid) {\n return bin.length - begin.index;\n }\n return end.index - begin.index;\n }\n case 'outside': {\n let cnt = 0;\n const first = bin.lt(op.lo);\n cnt += first.valid\n ? first.index + 1\n : 0;\n const end = bin.gt(op.hi);\n cnt += end.valid\n ? (bin.length - end.index)\n : 0;\n return cnt;\n }\n case 'nin': {\n let cnt = bin.length;\n for (const e of op.keys) {\n const f = bin.find(e);\n if (f.valid) {\n cnt--;\n }\n }\n return cnt;\n }\n default:\n throw NotSupported.never(op['type']);\n }\n }\n\n *enumerate(op: IndexOp): Iterable<Row> {\n for (const x of this._enumerate(op)) {\n yield deepCloneSimple(x);\n }\n }\n private _enumerate(op: IndexOp): Iterable<Row> {\n switch (op.type) {\n case 'eq':\n return this.eq(op.key, op.t, op.matchNull!);\n case 'neq':\n return this.neq(op.key, op.t, op.matchNull!);\n case 'ge':\n return this.ge(op.key, op.t);\n case 'le':\n return this.le(op.key, op.t);\n case 'gt':\n return this.gt(op.key, op.t);\n case 'lt':\n return this.lt(op.key, op.t);\n case 'outside':\n return this.outside(op.lo, op.hi, op.t);\n case 'inside':\n return this.inside(op.lo, op.hi, op.t);\n case 'nin':\n return this.nin(op.keys, op.t);\n default:\n throw NotSupported.never(op['type']);\n }\n }\n\n *eq(key: IndexKey, t: _Transaction, matchNull: boolean): Iterable<Row> {\n if (!matchNull && key.some(nullIsh)) {\n return;\n }\n const it = this.bin(t).find(key);\n while (it.valid && this.compare(it.key, key) === 0) {\n yield* it.value.values();\n it.next();\n }\n }\n\n\n\n *neq(key: IndexKey, t: _Transaction, matchNull: boolean): Iterable<Row> {\n if (!matchNull && key.some(nullIsh)) {\n return;\n }\n // yield before\n const bin = this.bin(t);\n let it = bin.begin;\n while (it.valid && this.compare(it.key, key) < 0) {\n yield* it.value.values();\n it.next();\n }\n // yield after\n it = bin.gt(key);\n while (it.valid) {\n yield* it.value.values();\n it.next();\n }\n }\n\n *gt(key: IndexKey, t: _Transaction): Iterable<Row> {\n const it = this.bin(t).gt(key);\n while (it.valid) {\n yield* it.value.values();\n it.next();\n }\n }\n\n *ge(key: IndexKey, t: _Transaction): Iterable<Row> {\n const it = this.bin(t).ge(key);\n while (it.valid) {\n yield* it.value.values();\n it.next();\n }\n }\n\n *lt(key: IndexKey, t: _Transaction): Iterable<Row> {\n const bin = this.bin(t);\n const limit = bin.lt(key);\n const it = bin.begin;\n if (!limit.valid) {\n // yield all\n while (it.valid) {\n yield* it.value.values();\n it.next();\n }\n return;\n }\n while (it.valid && limit.index >= it.index) {\n yield* it.value.values();\n it.next();\n }\n // const it = this.asBinary.lt(key);\n // while (it.valid) {\n // yield* it.value.values();\n // it.prev();\n // }\n }\n\n *le(key: IndexKey, t: _Transaction): Iterable<Row> {\n const bin = this.bin(t);\n const limit = bin.le(key);\n const it = bin.begin;\n if (!limit.valid) {\n // yield all\n while (it.valid) {\n yield* it.value.values();\n it.next();\n }\n return;\n }\n while (it.valid && limit.index >= it.index) {\n yield* it.value.values();\n it.next();\n }\n // const it = this.asBinary.le(key);\n // while (it.valid) {\n // yield* it.value.values();\n // it.prev();\n // }\n }\n\n *outside(lo: IndexKey, hi: IndexKey, t: _Transaction): Iterable<Row> {\n yield* this.lt(lo, t);\n yield* this.gt(hi, t);\n }\n\n *inside(lo: IndexKey, hi: IndexKey, t: _Transaction): Iterable<Row> {\n const it = this.bin(t).ge(lo);\n while (it.valid && this.compare(it.key, hi) <= 0) {\n yield* it.value.values();\n it.next();\n }\n }\n\n explain(e: _Explainer): _IndexExplanation {\n return {\n _: 'btree',\n onTable: this.onTable.name,\n btree: this.expressions.map(x => x.id!),\n }\n }\n}","module.exports = require(\"functional-red-black-tree\");","import { ISubscription, NotSupported, QueryError } from '../interfaces';\nimport { AlterColumnAddGenerated, nil } from 'pgsql-ast-parser';\nimport { _Column, _IConstraint, _ITable, _Transaction } from '../interfaces-private';\nimport { nullIsh } from '../utils';\n\nexport class GeneratedIdentityConstraint implements _IConstraint {\n private subs: ISubscription[] = [];\n\n private get table() {\n return this.column.table;\n }\n private get schema() {\n return this.table.ownerSchema;\n }\n constructor(readonly name: string | nil, private column: _Column) {\n }\n\n uninstall(t: _Transaction): void {\n for (const s of this.subs) {\n s.unsubscribe();\n };\n this.subs = [];\n }\n\n\n install(ct: _Transaction, _c: AlterColumnAddGenerated) {\n if (!this.column.notNull) {\n // if it's a table creation, then force 'not null'\n const tableCreation = !this.schema.getTable(this.table.name, true);\n if (tableCreation) {\n this.column.alter({\n type: 'set not null',\n }, ct);\n } else {\n // else, throw an error\n throw new QueryError(`column \"${this.column.name}\" of relation \"${this.table.name}\" must be declared NOT NULL before identity can be added`);\n }\n }\n\n const seq = this.schema.createSequence(ct, _c.sequence, _c.sequence?.name);\n\n // todo : Review this... it's a complete bluff (dont have time to check spec)\n const mode = _c.always ?? 'always';\n this.subs.push(this.table.onBeforeChange([this.column], (old, neu, dt, opts) => {\n // only act on new things\n if (old) {\n return;\n }\n const gen = () => neu[this.column.name] = seq.nextValue(dt);\n\n if (nullIsh(neu[this.column.name])) {\n // no value has been provided => generate one.\n gen();\n return;\n }\n\n // a value has been provided => check if must be overriden.\n switch (mode) {\n case 'by default':\n switch (opts.overriding ?? 'system') {\n case 'system':\n break;\n default:\n gen();\n break;\n\n }\n break;\n case 'always':\n // column is 'GENREATED ALWAYS'\n // => must specify 'overriding system value'\n if (opts.overriding !== 'system') {\n throw new QueryError({\n error: `cannot insert into column \"${this.column.name}\"`,\n details: ` Column \"${this.column.name}\" is an identity column defined as GENERATED ALWAYS.`,\n hint: 'Use OVERRIDING SYSTEM VALUE to override.',\n })\n }\n break;\n default:\n throw NotSupported.never(mode);\n }\n\n }));\n\n this.subs.push(this.table.onTruncate((t, { restartIdentity }) => {\n if (!restartIdentity) {\n return;\n }\n seq.restart(t);\n }))\n }\n\n}","import { ISubscription, NotSupported, QueryError } from '../interfaces';\nimport { AlterColumnAddGenerated, Expr, nil } from 'pgsql-ast-parser';\nimport { _Column, _IConstraint, _ITable, _Transaction } from '../interfaces-private';\nimport { deepEqual, nullIsh } from '../utils';\nimport { buildValue } from '../parser/expression-builder';\nimport { withSelection } from '../parser/context';\nimport { MemoryTable } from '../table';\n\nexport class GeneratedComputedConstraint implements _IConstraint {\n private subs: ISubscription[] = [];\n\n private get table() {\n return this.column.table as MemoryTable;\n }\n private get schema() {\n return this.table.ownerSchema;\n }\n\n constructor(readonly name: string | nil, private column: _Column, private expression: Expr) {\n }\n\n uninstall(t: _Transaction): void {\n for (const s of this.subs) {\n s.unsubscribe();\n };\n this.subs = [];\n }\n\n install(ct: _Transaction, _c: AlterColumnAddGenerated) {\n const evaluator = withSelection(this.table.selection, () => buildValue(this.expression));\n this.subs.push(this.table.onBeforeChange('all', (old, neu, dt, opts) => {\n if (!deepEqual(old?.[this.column.name] ?? null, neu?.[this.column.name] ?? null)) {\n throw new QueryError(`Column \"${this.column.name}\" is a generated column.`, '42601');\n }\n const newValue = evaluator.get(neu, dt);\n neu[this.column.name] = newValue;\n }));\n\n // compute the values for the existing rows\n this.table.remapData(ct, row => {\n const newValue = evaluator.get(row, ct);\n row[this.column.name] = newValue;\n });\n }\n\n}","import { ISubscription, NotSupported, QueryError } from '../interfaces';\nimport { Expr, ExprBinary, TableConstraintForeignKey } from 'pgsql-ast-parser';\nimport { asTable, CreateIndexColDef, _IConstraint, _ITable, _Transaction } from '../interfaces-private';\nimport { nullIsh } from '../utils';\n\nexport class ForeignKey implements _IConstraint {\n\n private unsubs: ISubscription[] = [];\n\n private table!: _ITable;\n private foreignTable!: _ITable;\n\n\n\n get db() {\n return this.table.ownerSchema.db;\n }\n\n get schema() {\n return this.table.ownerSchema;\n }\n\n\n constructor(readonly name: string) {\n }\n\n install(_t: _Transaction, cst: TableConstraintForeignKey, table: _ITable) {\n const ftable = asTable(table.ownerSchema.getObject(cst.foreignTable, { beingCreated: table }));\n const cols = cst.localColumns.map(x => table.getColumnRef(x.name));\n const fcols = cst.foreignColumns.map(x => ftable.getColumnRef(x.name));\n this.table = table;\n this.foreignTable = ftable;\n if (cols.length !== fcols.length) {\n throw new QueryError('Foreign key count mismatch');\n }\n cols.forEach((c, i) => {\n if (fcols[i].expression.type !== c.expression.type) {\n throw new QueryError(`Foreign key column type mismatch`);\n }\n });\n\n if ((cst.match ?? 'simple') !== 'simple' && cols.length !== 1) {\n throw new NotSupported(`matching mode '${cst.match}' on mutliple columns foreign keys`);\n }\n\n // check that there is an unique index on this table for the given expressions\n const findex = ftable.getIndex(...fcols.map(x => x.expression));\n if (!findex?.unique) {\n throw new QueryError(`there is no unique constraint matching given keys for referenced table \"${ftable.name}\"`);\n }\n\n\n // auto-create indices\n if (this.db.options.autoCreateForeignKeyIndices) {\n table.createIndex(_t, {\n ifNotExists: true,\n columns: cols.map<CreateIndexColDef>(x => ({\n value: x.expression,\n })),\n });\n }\n\n // ========================\n // when changing the foreign table key, check correspondances in this table\n // ========================\n const onUpdate = cst.onUpdate ?? 'no action';\n const onDelete = cst.onDelete ?? 'no action';\n this.unsubs.push(ftable.onBeforeChange(cst.foreignColumns.map(x => x.name), (old, neu, dt) => {\n if (!old) {\n return;\n }\n const oVals = fcols.map(x => old[x.expression.id!]);\n if (oVals.some(nullIsh)) {\n return;\n }\n // build foreign key equality expression\n const equals = cst.localColumns.map<ExprBinary>((x, i) => ({\n type: 'binary',\n op: '=',\n left: { type: 'ref', name: x.name, table: { name: table.name } },\n // hack, see #fkcheck\n right: {\n type: 'constant',\n value: oVals[i],\n dataType: fcols[i].expression.type as any, // hack\n },\n }));\n const expr = equals.slice(1).reduce<Expr>((a, b) => ({\n type: 'binary',\n op: 'AND',\n left: a,\n right: b,\n }), equals[0]);\n\n // check nothing matches\n for (const local of table.selection.filter(expr).enumerate(dt)) {\n // ====== ON DELETE\n switch (neu ? onUpdate : onDelete) {\n case 'no action':\n case 'restrict':\n throw new QueryError(`update or delete on table \"${ftable.name}\" violates foreign key constraint on table \"${this.name}\"`);\n case 'cascade':\n if (neu) {\n for (let i = 0; i < fcols.length; i++) {\n local[cst.localColumns[i].name] = neu[cst.foreignColumns[i].name];\n }\n table.update(dt, local);\n } else {\n table.delete(dt, local);\n }\n break;\n case 'set default':\n case 'set null':\n for (const c of cst.localColumns) {\n local[c.name] = null;\n }\n table.update(dt, local);\n break;\n }\n }\n }));\n\n // =====================\n // when changing something in this table,\n // then there must be a key match in the foreign table\n // =====================\n this.unsubs.push(table.onBeforeChange(cst.localColumns.map(x => x.name), (_, neu, dt) => {\n if (!neu) {\n return;\n }\n const vals = cols.map(x => (neu as any)[x.expression.id!]);\n if (vals.some(nullIsh)) {\n return;\n }\n // build foreign key equality expression\n const equals = cst.foreignColumns.map<ExprBinary>((x, i) => ({\n type: 'binary',\n op: '=',\n left: { type: 'ref', name: x.name, table: { name: ftable.name } },\n // hack, see #fkcheck\n right: {\n type: 'constant',\n value: vals[i],\n dataType: cols[i].expression.type as any, // hack\n },\n }));\n const expr = equals.slice(1).reduce<Expr>((a, b) => ({\n type: 'binary',\n op: 'AND',\n left: a,\n right: b,\n }), equals[0]);\n\n // check there is a match\n let yielded = false;\n for (const _ of ftable.selection.filter(expr).enumerate(dt)) {\n yielded = true;\n }\n if (!yielded) {\n throw new QueryError(`insert or update on table \"${ftable.name}\" violates foreign key constraint on table \"${this.name}\"`);\n }\n }));\n\n\n // =====================\n // prevent foreign table from being dropped\n // =====================\n this.unsubs.push(ftable.onDrop((t, cascade) => {\n // (todo implement multiple drops)\n if (cascade) {\n this.uninstall(t);\n } else {\n throw new QueryError({\n error: `cannot drop table \"${ftable.name}\" because other objects depend on it`,\n details: `constraint ${this.name} on table ${table.name} depends on table \"${ftable.name}\"`,\n hint: `Use DROP ... CASCADE to drop the dependent objects too.`,\n });\n }\n }));\n\n // =====================\n // prevent foreign table truncation\n // =====================\n this.unsubs.push(ftable.onTruncate((t, { cascade }) => {\n if (cascade) {\n this.table.truncate(t, { cascade: true });\n return;\n }\n throw new QueryError({\n error: `cannot truncate a table referenced in a foreign key constraint`,\n details: `Table \"${table.name}\" references \"${ftable.name}\".`,\n hint: `HINT: Truncate table \"${table.name}\" at the same time, or use TRUNCATE ... CASCADE.`,\n })\n }));\n\n // =====================\n // when this table is dropped => remove hooks on foreign table\n // =====================\n table.onDrop(dt => {\n this.uninstall(dt);\n });\n\n return this;\n }\n\n uninstall(t: _Transaction): void {\n this.unsubs.forEach(x => x.unsubscribe());\n this.unsubs = [];\n }\n}","import { _IConstraint, _Transaction } from '../interfaces-private';\n\nexport class SubscriptionConstraint implements _IConstraint {\n constructor(readonly name: string, readonly uninstall: (t: _Transaction) => void) {\n }\n}","import { _IConstraint, _Transaction } from '../interfaces-private';\n\nexport class ConstraintWrapper implements _IConstraint {\n constructor(private refs: Map<string, _IConstraint>, private inner: _IConstraint) {\n if (inner.name) {\n refs.set(inner.name, this);\n }\n }\n get name() {\n return this.inner.name;\n }\n uninstall(t: _Transaction): void {\n this.inner.uninstall(t);\n if (this.name) {\n this.refs.delete(this.name);\n }\n }\n}\n","\nimport { _ISchema } from '../interfaces-private'\n\n\nimport { literal } from '../misc/pg-escape'\nimport { doRequire } from '../utils';\nimport { MigrationData, MigrationFile, MigrationParams } from './migrate-interfaces';\n\ndeclare var process: any;\n\nexport async function readMigrations(migrationPath?: string) {\n const path = doRequire('path');\n const fs = doRequire('fs');\n const migrationsPath = migrationPath || path.join(process.cwd(), 'migrations')\n const location = path.resolve(migrationsPath)\n\n // Get the list of migration files, for example:\n // { id: 1, name: 'initial', filename: '001-initial.sql' }\n // { id: 2, name: 'feature', filename: '002-feature.sql' }\n const migrationFiles = await new Promise<MigrationFile[]>(\n (resolve, reject) => {\n fs.readdir(location, (err: any, files: string[]) => {\n if (err) {\n return reject(err)\n }\n\n resolve(\n files\n .map(x => x.match(/^(\\d+).(.*?)\\.sql$/))\n .filter(x => x !== null)\n .map(x => ({ id: Number(x![1]), name: x![2], filename: x![0] }))\n .sort((a, b) => Math.sign(a.id - b.id))\n )\n })\n }\n )\n\n if (!migrationFiles.length) {\n throw new Error(`No migration files found in '${location}'.`)\n }\n\n // Get the list of migrations, for example:\n // { id: 1, name: 'initial', filename: '001-initial.sql', up: ..., down: ... }\n // { id: 2, name: 'feature', filename: '002-feature.sql', up: ..., down: ... }\n return Promise.all(\n migrationFiles.map(\n migration =>\n new Promise<MigrationData>((resolve, reject) => {\n const filename = path.join(location, migration.filename)\n fs.readFile(filename, 'utf-8', (err: any, data: string) => {\n if (err) {\n return reject(err)\n }\n\n const [up, down] = data.split(/^--\\s+?down\\b/im)\n\n const migrationData = migration as Partial<MigrationData>\n migrationData.up = up.replace(/^-- .*?$/gm, '').trim() // Remove comments\n migrationData.down = down ? down.trim() : '' // and trim whitespaces\n resolve(migrationData as MigrationData)\n })\n })\n )\n )\n}\n\n/**\n * Migrates database schema to the latest version\n */\nexport async function migrate(db: _ISchema, config: MigrationParams = {}) {\n config.force = config.force || false\n config.table = config.table || 'migrations'\n\n const { force, table } = config\n const migrations = config.migrations\n ? config.migrations\n : await readMigrations(config.migrationsPath)\n\n // Create a database table for migrations meta data if it doesn't exist\n await db.none(`CREATE TABLE IF NOT EXISTS \"${table}\" (\n id INTEGER PRIMARY KEY,\n name TEXT NOT NULL,\n up TEXT NOT NULL,\n down TEXT NOT NULL\n)`)\n\n // Get the list of already applied migrations\n let dbMigrations = await db.many(\n `SELECT id, name, up, down FROM \"${table}\" ORDER BY id ASC`\n )\n\n // Undo migrations that exist only in the database but not in files,\n // also undo the last migration if the `force` option is enabled.\n const lastMigration = migrations[migrations.length - 1]\n for (const migration of dbMigrations\n .slice()\n .sort((a, b) => Math.sign(b.id - a.id))) {\n if (\n !migrations.some(x => x.id === migration.id) ||\n (force && migration.id === lastMigration.id)\n ) {\n // await db.run('BEGIN')\n try {\n await db.none(migration.down)\n await db.none(`DELETE FROM \"${table}\" WHERE id = ${migration.id}`)\n // await db.run('COMMIT')\n dbMigrations = dbMigrations.filter(x => x.id !== migration.id)\n } catch (err) {\n // await db.run('ROLLBACK')\n throw err\n }\n } else {\n break\n }\n }\n\n // Apply pending migrations\n const lastMigrationId = dbMigrations.length\n ? dbMigrations[dbMigrations.length - 1].id\n : 0\n for (const migration of migrations) {\n if (migration.id > lastMigrationId) {\n // await db.run('BEGIN')\n try {\n await db.none(migration.up)\n await db.none(\n `INSERT INTO \"${table}\" (id, name, up, down) VALUES (\n ${migration.id},\n ${literal(migration.name)},\n ${literal(migration.up)},\n ${literal(migration.down)})`\n )\n // await db.run('COMMIT')\n } catch (err) {\n // await db.run('ROLLBACK')\n throw err\n }\n }\n }\n}","import { Evaluator } from '../evaluator';\nimport { TypeBase } from './datatype-base';\nimport { CastError, DataType, IEquivalentType, IType, nil, QueryError, typeDefToStr } from '../interfaces';\nimport { _ISchema, _IType } from '../interfaces-private';\nimport { Types } from './datatypes';\n\nexport class EquivalentType extends TypeBase<string> {\n\n private equiv: _IType;\n\n constructor(private def: IEquivalentType) {\n super(null);\n if (typeof def.equivalentTo === 'string') {\n let eq = (Types as any)[def.equivalentTo];\n if (typeof eq === 'function') {\n eq = eq();\n }\n this.equiv = eq;\n } else {\n this.equiv = def.equivalentTo as _IType;\n }\n\n if (!this.equiv) {\n throw new Error(`Invalid equilvalent type`);\n }\n }\n\n get primary(): DataType {\n return this.equiv.primary;\n }\n\n get primaryName(): string {\n return this.def.name;\n }\n\n get name(): string {\n return this.def.name;\n }\n\n doCanCast(to: _IType) {\n return to.primary === this.equiv.primary;\n }\n\n doCast(value: Evaluator<string>, to: _IType<string>): Evaluator<any> | nil {\n return value;\n }\n\n prefer(type: _IType<any>): _IType | nil {\n return this;\n }\n\n doCanBuildFrom(from: _IType): boolean | nil {\n // return from.canCast(this.equiv);\n return this.equiv.canCast(from);\n }\n\n doBuildFrom(value: Evaluator<string>, from: _IType<string>): Evaluator<string> | nil {\n return value\n .setConversion(x => {\n if (!this.def.isValid(x)) {\n throw new QueryError(`invalid input syntax for type ${typeDefToStr(this)}: ${x}`);\n }\n return x;\n }, val => ({ val, to: this.equiv.primary }));\n }\n}\n","import { _IType, _ArgDefDetails, nil, DataType, IValue } from '../interfaces-private';\nimport { Types } from '../datatypes';\nimport { it } from '../utils';\nimport { QueryError } from '../interfaces';\n\nexport interface HasSig {\n name: string;\n args: _ArgDefDetails[];\n argsVariadic?: _IType | nil;\n}\n\nexport class OverloadResolver<T extends HasSig> {\n\n private byName = new Map<string, OverloadNode<T>>();\n\n constructor(private implicitCastOnly: boolean) { }\n\n add(value: T, replaceIfExists: boolean) {\n let ret = this.byName.get(value.name);\n if (!ret) {\n this.byName.set(value.name, ret = new OverloadNode<T>(Types.null, this.implicitCastOnly, 0));\n }\n ret.index(value, replaceIfExists);\n }\n\n getOverloads(name: string) {\n const ovr = this.byName.get(name);\n if (!ovr) {\n return [];\n }\n return [...ovr.all()];\n }\n\n remove(value: T) {\n this.byName.get(value.name)?.unindex(value);\n }\n\n resolve(name: string, args: IValue[]) {\n return this.byName.get(name)?.resolve(args);\n }\n\n getExact(name: string, types: _IType[]): T | nil {\n return this.byName.get(name)?.getExact(types);\n }\n}\n\n\nclass OverloadNode<T extends HasSig> {\n\n private nexts = new Map<DataType, OverloadNode<T>[]>();\n private leaf: T | nil;\n\n constructor(readonly type: _IType, private implicitCastOnly: boolean, private at: number) {\n }\n\n *all(): IterableIterator<T> {\n if (this.leaf) {\n yield this.leaf;\n }\n for (const children of this.nexts.values()) {\n for (const child of children) {\n yield* child.all();\n }\n }\n }\n\n index(value: T, replaceIfExists: boolean) {\n if (this.at >= value.args.length) {\n if (this.leaf && !replaceIfExists) {\n throw new QueryError('Function already exists: ' + value.name);\n }\n this.leaf = value;\n return;\n }\n const arg = value.args[this.at];\n const primary = arg.type.primary;\n let lst = this.nexts.get(primary);\n if (!lst) {\n this.nexts.set(primary, lst = []);\n }\n // get or add corresponding node\n let node = lst.find(x => x.type === arg.type);\n if (!node) {\n lst.push(node = new OverloadNode(arg.type, this.implicitCastOnly, this.at + 1));\n }\n\n // process arg list\n node.index(value, replaceIfExists);\n }\n\n unindex(value: T) {\n if (this.leaf === value) {\n this.leaf = null;\n return;\n }\n for (const children of this.nexts.values()) {\n for (const child of children) {\n child.unindex(value);\n }\n }\n }\n\n getExact(types: _IType[]): T | nil {\n if (this.at >= types.length) {\n return this.leaf;\n }\n const target = types[this.at];\n const found = this.nexts.get(target.primary)\n ?.find(x => x.type == target);\n return found?.getExact(types);\n }\n\n resolve(args: IValue[]): T | nil {\n if (this.at >= args.length) {\n return this.leaf;\n }\n\n // gets the child which type matches the current arg better\n const arg = args[this.at];\n const sigsToCheck = it(\n this.nexts // perf tweak: search by primary type\n .get(arg.type.primary)\n ?? it(this.nexts.values()).flatten() // else, search all registered overloads\n );\n\n const match = sigsToCheck.reduce<OverloadNode<T> | nil>((acc, x) => {\n // check that arg can be converted to the target type\n if (!this.compatible(arg, x.type)) {\n return acc;\n }\n // first match\n if (!acc) {\n return x;\n }\n // returns the prefered type\n return acc.type.prefer(x.type) === x.type ? x : acc;\n }, null);\n\n if (match) {\n return match.resolve(args);\n }\n\n // handle variadic args\n if (this.leaf && this.leaf.argsVariadic && this.compatible(arg, this.leaf.argsVariadic)) {\n return this.leaf;\n }\n\n // not found\n return null;\n }\n\n private compatible(givenArg: IValue, expectedArg: _IType) {\n if (givenArg.type === expectedArg) {\n return true;\n }\n return givenArg.isConstantLiteral\n ? givenArg.type.canCast(expectedArg)\n : givenArg.type.canConvertImplicit(expectedArg) ?? givenArg.type.canCast(expectedArg);\n }\n}","import { AlterSequenceChange, CreateSequenceOptions } from 'pgsql-ast-parser';\nimport { combineSubs, ignore, nullIsh } from '../utils';\nimport { NotSupported, asTable, _ISchema, _ISequence, _IType, _Transaction, RegClass, Reg } from '../interfaces-private';\nimport { ISubscription, nil, QueryError } from '../interfaces';\nimport { Types } from '../datatypes';\n\ninterface SeqData {\n currval: number | undefined;\n nextval: number;\n}\n\nexport class Sequence implements _ISequence {\n\n get type(): 'sequence' {\n return 'sequence';\n }\n\n private symbol = Symbol();\n private owner?: ISubscription;\n private cfg: {\n start?: number;\n max?: number;\n min?: number;\n cycle?: boolean;\n inc?: number;\n dataType?: _IType;\n } = {};\n\n readonly reg: Reg;\n\n\n get cycle() {\n return this.cfg.cycle ?? false;\n }\n\n get dataType() {\n return this.cfg.dataType ?? Types.integer;\n }\n\n get inc() {\n return this.cfg.inc ?? 1;\n }\n\n\n constructor(public name: string, readonly ownerSchema: _ISchema) {\n this.reg = ownerSchema._reg_register(this);\n }\n\n\n get start() {\n return this.cfg.start ?? (this.inc > 0\n ? this.min\n : this.max);\n }\n\n get max() {\n return this.cfg.max\n ?? (this.inc > 0\n ? Number.MAX_SAFE_INTEGER - 1\n : -1);\n }\n\n get min() {\n return this.cfg.min\n ?? (this.inc > 0\n ? 1\n : Number.MIN_SAFE_INTEGER + 1);\n }\n\n alter(t: _Transaction, opts: CreateSequenceOptions | AlterSequenceChange | nil): this {\n if (!opts) {\n return this;\n }\n const oldCfg = { ...this.cfg };\n try {\n if (!('type' in opts)) {\n return this.alterOpts(t, opts);\n }\n switch (opts.type) {\n case 'set options':\n this.alterOpts(t, opts);\n if (opts.restart === true || typeof opts.restart === 'number') {\n if (typeof opts.restart === 'number') {\n if (opts.restart < this.min) {\n throw new QueryError(`RESTART value (${opts.restart}) cannot be less than MINVALUE (${this.min})`, '22023');\n }\n this.cfg.start = opts.restart;\n }\n const data: SeqData = {\n currval: t.get<SeqData>(this.symbol)?.currval,\n nextval: this.start,\n }\n t.set(this.symbol, data);\n }\n return this;\n case 'set schema':\n if (opts.newSchema.name === this.ownerSchema.name) {\n return this;\n }\n throw new NotSupported('Sequence schema change');\n case 'rename':\n const to = opts.newName.name.toLowerCase();\n this.ownerSchema._reg_rename(this, this.name, to);\n this.name = to;\n return this;\n case 'owner to':\n // todo: implement sequence owners ? ...ignored to support pg_dump exports.\n ignore(opts);\n return this;\n default:\n throw NotSupported.never(opts);\n }\n } catch (e) {\n this.cfg = oldCfg;\n throw e;\n }\n }\n\n nextValue(t: _Transaction): number {\n let v = t.get<SeqData>(this.symbol)?.nextval;\n if (v === undefined) {\n v = this.start;\n }\n this.setValue(t, v);\n return v;\n }\n\n setValue(t: _Transaction, value: number, increase: boolean = true) {\n if (value > this.max) {\n throw new QueryError(`reached maximum value of sequence \"${this.name}\"`);\n }\n if (value < this.min) {\n throw new QueryError(`reached minimum value of sequence \"${this.name}\"`);\n }\n const data: SeqData = {\n currval: value,\n nextval: increase ? value + this.inc : value,\n };\n t.set(this.symbol, data);\n }\n\n restart(t: _Transaction) {\n t.delete(this.symbol);\n }\n\n currentValue(t: _Transaction): number {\n const v = t.get<SeqData>(this.symbol)?.currval;\n if (v === undefined) {\n throw new QueryError(`currval of sequence \"${this.name}\" is not yet defined in this session`, '55000');\n }\n return v;\n }\n\n\n private alterOpts(t: _Transaction, opts: CreateSequenceOptions) {\n if (opts.as) {\n ignore(opts.as);\n this.cfg.dataType = this.ownerSchema.getType(opts.as);\n }\n ignore(opts.cache);\n if (opts.cycle) {\n this.cfg.cycle = opts.cycle === 'cycle';\n }\n\n if (typeof opts.incrementBy === 'number') {\n this.cfg.inc = opts.incrementBy;\n }\n\n if (typeof opts.maxValue === 'number') {\n this.cfg.max = opts.maxValue;\n } else if (opts.maxValue) {\n this.cfg.max = undefined;\n }\n\n if (typeof opts.minValue === 'number') {\n this.cfg.min = opts.minValue;\n } else if (opts.maxValue) {\n this.cfg.min = undefined;\n }\n\n if (typeof opts.startWith === 'number') {\n this.cfg.start = opts.startWith;\n }\n\n\n if (opts.ownedBy === 'none') {\n this.owner?.unsubscribe();\n } else if (opts.ownedBy) {\n this.owner?.unsubscribe();\n\n const tbl = asTable(this.ownerSchema.getObject({\n name: opts.ownedBy.table,\n schema: opts.ownedBy.schema\n }));\n\n const owner = tbl.getColumnRef(opts.ownedBy.column);\n\n this.owner = combineSubs(\n owner.onDrop(dt => this.drop(dt)),\n tbl.onDrop(dt => this.drop(dt)),\n );\n }\n\n // === validate\n if (this.max < this.min) {\n throw new QueryError('Invalid squeuence min-max');\n }\n\n if (!this.inc) {\n throw new QueryError('Invalid increment');\n }\n\n if (this.start > this.max || this.start < this.min) {\n throw new QueryError('Invalid sequence starting value');\n }\n return this;\n }\n\n drop(t: _Transaction) {\n this.owner?.unsubscribe();\n this.owner = undefined;\n t.delete(this.symbol);\n this.ownerSchema._reg_unregister(this);\n }\n}","import { _ISchema, _Transaction, SchemaField, NotSupported, _ITable, _IStatementExecutor, Schema, DataType, QueryError } from '../../interfaces-private';\nimport { CreateTableStatement, QName } from 'pgsql-ast-parser';\nimport { ignore, Optional } from '../../utils';\nimport { checkExistence, ExecHelper } from '../exec-utils';\nimport { buildCtx } from '../../parser/context';\n\nexport class ExecuteCreateTable extends ExecHelper implements _IStatementExecutor {\n private toDeclare: Schema;\n private ifNotExists: boolean;\n private name: QName;\n private schema: _ISchema;\n\n constructor(p: CreateTableStatement) {\n super(p);\n const { db } = buildCtx();\n this.schema = db.getSchema(p.name.schema);\n let fields: SchemaField[] = [];\n for (const f of p.columns) {\n switch (f.kind) {\n case 'column':\n if (!f.dataType.kind && f.dataType.name === DataType.record) {\n throw new QueryError(`column \"${f.name.name}\" has pseudo-type record`, '42P16');\n }\n // TODO: #collation\n ignore(f.collate);\n const nf = {\n ...f,\n name: f.name.name,\n type: this.schema.getType(f.dataType),\n serial: !f.dataType.kind && (f.dataType.name === 'serial' || f.dataType.name === 'bigserial'),\n };\n delete (nf as Optional<typeof nf>).dataType;\n fields.push(nf);\n break;\n case 'like table':\n throw new NotSupported('\"like table\" statement');\n default:\n throw NotSupported.never(f);\n }\n }\n this.ifNotExists = !!p.ifNotExists;\n this.name = p.name;\n this.toDeclare = {\n name: p.name.name,\n constraints: p.constraints,\n fields,\n };\n }\n\n execute(t: _Transaction) {\n\n // commit pending data before making changes\n // (because the creation does not support further rollbacks)\n t = t.fullCommit();\n\n // perform creation\n checkExistence(this.schema, this.name, this.ifNotExists, () => {\n this.schema.declareTable(this.toDeclare);\n });\n\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}","import { _Transaction, asTable, _ISchema, NotSupported, CreateIndexColDef, _ITable, CreateIndexDef, _IStatement, _IStatementExecutor } from '../../interfaces-private';\nimport { CreateIndexStatement } from 'pgsql-ast-parser';\nimport { ignore } from '../../utils';\nimport { ExecHelper } from '../exec-utils';\nimport { buildValue } from '../../parser/expression-builder';\nimport { withSelection } from '../../parser/context';\n\nexport class CreateIndexExec extends ExecHelper implements _IStatementExecutor {\n private onTable: _ITable;\n private indexDef: CreateIndexDef;\n\n constructor({ schema }: _IStatement, p: CreateIndexStatement) {\n super(p);\n const indexName = p.indexName?.name;\n this.onTable = asTable(schema.getObject(p.table));\n // check that index algorithm is supported\n if (p.using && p.using.name.toLowerCase() !== 'btree') {\n if (schema.db.options.noIgnoreUnsupportedIndices) {\n throw new NotSupported('index type: ' + p.using);\n }\n ignore(p);\n }\n\n this.indexDef = withSelection(this.onTable.selection, () => {\n\n // index columns\n const columns = p.expressions\n .map<CreateIndexColDef>(x => {\n return {\n value: buildValue(x.expression),\n nullsLast: x.nulls === 'last', // nulls are first by default\n desc: x.order === 'desc',\n }\n });\n\n // compile predicate (if any)\n const predicate = p.where && buildValue(p.where);\n\n return {\n columns,\n indexName,\n unique: p.unique,\n ifNotExists: p.ifNotExists,\n predicate,\n };\n });\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index creation does not support further rollbacks)\n t = t.fullCommit();\n\n // create index\n this.onTable\n .createIndex(t, this.indexDef);\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}\n","import { _ISchema, _Transaction, SchemaField, NotSupported, _ITable, _IStatementExecutor, asTable, QueryError, _IStatement } from '../../interfaces-private';\nimport { AlterTableStatement } from 'pgsql-ast-parser';\nimport { ignore } from '../../utils';\nimport { ExecHelper } from '../exec-utils';\n\nexport class Alter extends ExecHelper implements _IStatementExecutor {\n\n private table: _ITable;\n\n constructor({ schema }: _IStatement, private p: AlterTableStatement) {\n super(p);\n this.table = asTable(schema.getObject(p.table));\n ignore(p.only);\n }\n\n execute(t: _Transaction) {\n\n let ignored = 0;\n\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n\n for (const change of this.p.changes) {\n function ignoreChange() {\n ignore(change);\n ignored++;\n }\n switch (change.type) {\n case 'rename':\n this.table.rename(change.to.name);\n break;\n case 'add column': {\n const col = this.table.selection.getColumn(change.column.name.name, true);\n if (col) {\n if (change.ifNotExists) {\n ignoreChange();\n break;\n } else {\n throw new QueryError('Column already exists: ' + col.id);\n }\n } else {\n ignore(change.ifNotExists);\n }\n this.table.addColumn(change.column, t);\n break;\n }\n case 'drop column':\n const col = this.table.getColumnRef(change.column.name, change.ifExists);\n if (!col) {\n ignoreChange();\n } else {\n col.drop(t);\n }\n break;\n case 'drop constraint':\n const cst = this.table.getConstraint(change.constraint.name);\n if (change.ifExists && !cst) {\n ignoreChange();\n break;\n }\n if (!cst) {\n throw new QueryError(`constraint \"${change.constraint.name}\" of relation \"${this.table.name}\" does not exist`, '42704')\n }\n cst.uninstall(t);\n break;\n case 'rename column':\n this.table.getColumnRef(change.column.name)\n .rename(change.to.name, t);\n break;\n case 'alter column':\n this.table.getColumnRef(change.column.name)\n .alter(change.alter, t);\n break;\n case 'rename constraint':\n throw new NotSupported('rename constraint');\n case 'add constraint':\n this; this.table.addConstraint(change.constraint, t);\n break;\n case 'owner':\n // owner change statements are not supported.\n // however, in order to support, pg_dump, we're just ignoring them.\n ignoreChange();\n break;\n default:\n throw NotSupported.never(change, 'alter request');\n\n }\n }\n\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'ALTER');\n }\n}\n","import { _ISchema, _Transaction, _ISequence, _IStatementExecutor, _IStatement, asSeq } from '../../interfaces-private';\nimport { AlterSequenceStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore } from '../../utils';\n\nexport class AlterSequence extends ExecHelper implements _IStatementExecutor {\n private seq: _ISequence | null;\n\n\n constructor({ schema }: _IStatement, private p: AlterSequenceStatement) {\n super(p);\n\n this.seq = asSeq(schema.getObject(p.name, {\n nullIfNotFound: p.ifExists,\n }));\n if (!this.seq) {\n ignore(this.p);\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index sequence creation does support further rollbacks)\n t = t.fullCommit();\n\n // alter the sequence\n this.seq?.alter(t, this.p.change);\n\n // new implicit transaction\n t = t.fork();\n\n return this.noData(t, 'ALTER');\n }\n}\n","import { _ISchema, _Transaction, _ISequence, _IStatementExecutor, _IStatement, asSeq, asIndex, _INamedIndex } from '../../interfaces-private';\nimport { DropStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore, notNil } from '../../utils';\n\nexport class DropIndex extends ExecHelper implements _IStatementExecutor {\n private idx: _INamedIndex[];\n\n\n constructor({ schema }: _IStatement, statement: DropStatement) {\n super(statement);\n\n this.idx = notNil(statement.names.map(x => asIndex(schema.getObject(x, {\n nullIfNotFound: statement.ifExists,\n }))));\n\n if (this.idx.length) {\n ignore(statement.concurrently);\n } else {\n ignore(statement);\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index sequence creation does support further rollbacks)\n t = t.fullCommit();\n\n // alter the sequence\n for (const idx of this.idx) {\n idx.onTable.dropIndex(t, idx.name);\n }\n\n // new implicit transaction\n t = t.fork();\n\n return this.noData(t, 'DROP');\n }\n}\n","import { _ISchema, _Transaction, _ISequence, _IStatementExecutor, _IStatement, asSeq, asIndex, _INamedIndex, _ITable, asTable } from '../../interfaces-private';\nimport { DropStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore, notNil } from '../../utils';\n\nexport class DropTable extends ExecHelper implements _IStatementExecutor {\n private tables: _ITable[];\n private cascade: boolean;\n\n\n constructor({ schema }: _IStatement, statement: DropStatement) {\n super(statement);\n\n this.tables = notNil(statement.names.map(x => asTable(schema.getObject(x, {\n nullIfNotFound: statement.ifExists,\n }))));\n\n this.cascade = statement.cascade === 'cascade';\n\n if (!this.tables.length) {\n ignore(statement);\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because it does not support further rollbacks)\n t = t.fullCommit();\n\n // drop table\n for (const table of this.tables) {\n table.drop(t, this.cascade);\n }\n\n // new implicit transaction\n t = t.fork();\n\n return this.noData(t, 'DROP');\n }\n}\n","import { _ISchema, _Transaction, _ISequence, _IStatementExecutor, _IStatement, asSeq } from '../../interfaces-private';\nimport { DropStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore, notNil } from '../../utils';\n\nexport class DropSequence extends ExecHelper implements _IStatementExecutor {\n private seqs: _ISequence[];\n\n constructor({ schema }: _IStatement, statement: DropStatement) {\n super(statement);\n\n this.seqs = notNil(statement.names.map(x => asSeq(schema.getObject(x, {\n nullIfNotFound: statement.ifExists,\n }))));\n if (!this.seqs.length) {\n ignore(statement);\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index sequence creation does support further rollbacks)\n t = t.fullCommit();\n\n // drop the sequence\n for (const seq of this.seqs) {\n seq.drop(t);\n }\n\n // new implicit transaction\n t = t.fork();\n\n return this.noData(t, 'DROP');\n }\n}\n","import { _IStatementExecutor, _Transaction, StatementResult } from '../interfaces-private';\nimport { ExecHelper } from './exec-utils';\nimport { CommitStatement, RollbackStatement, StartTransactionStatement, BeginStatement } from 'pgsql-ast-parser';\nimport { ignore } from '../utils';\n\nexport class CommitExecutor extends ExecHelper implements _IStatementExecutor {\n\n constructor(statement: CommitStatement) {\n super(statement)\n }\n\n execute(t: _Transaction): StatementResult {\n t = t.commit();\n // recreate an implicit transaction if we're at root\n // (I can see how its usfull, but this is dubious...)\n if (!t.isChild) {\n t = t.fork();\n }\n return this.noData(t, 'COMMIT');\n }\n\n}\n\nexport class RollbackExecutor extends ExecHelper implements _IStatementExecutor {\n constructor(statement: RollbackStatement) {\n super(statement);\n ignore(statement);\n }\n\n execute(t: _Transaction): StatementResult {\n t = t.rollback();\n return this.noData(t, 'ROLLBACK');\n }\n}\n\n\nexport class BeginStatementExec extends ExecHelper implements _IStatementExecutor {\n constructor(statement: BeginStatement | StartTransactionStatement) {\n super(statement);\n ignore(statement);\n }\n\n execute(t: _Transaction): StatementResult {\n t = t.fork();\n return this.noData(t, 'BEGIN');\n }\n}\n","import { _ISchema, _Transaction, SchemaField, NotSupported, _ITable, _IStatementExecutor, asTable, StatementResult, _IStatement, TruncateOpts } from '../../interfaces-private';\nimport { TruncateTableStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { buildCtx } from '../../parser/context';\n\nexport class TruncateTable extends ExecHelper implements _IStatementExecutor {\n private table: _ITable;\n private opts: TruncateOpts;\n\n constructor(statement: TruncateTableStatement) {\n super(statement);\n if (statement.tables.length !== 1) {\n throw new NotSupported('Multiple truncations');\n }\n this.opts = {\n cascade: statement.cascade === 'cascade',\n restartIdentity: statement.identity === 'restart',\n };\n const { schema } = buildCtx();\n this.table = asTable(schema.getObject(statement.tables[0]));\n }\n\n execute(t: _Transaction): StatementResult {\n this.table.truncate(t, this.opts);\n return this.noData(t, 'TRUNCATE');\n }\n}\n","import { _IStatementExecutor, _Transaction, StatementResult, GLOBAL_VARS, QueryError } from '../interfaces-private';\nimport { ShowStatement } from 'pgsql-ast-parser';\nimport { locOf } from './exec-utils';\n\nexport class ShowExecutor implements _IStatementExecutor {\n constructor(private statement: ShowStatement) { }\n\n execute(t: _Transaction): StatementResult {\n const p = this.statement;\n const got = t.getMap(GLOBAL_VARS);\n if (!got.has(p.variable.name)) {\n throw new QueryError(`unrecognized configuration parameter \"${p.variable.name}\"`);\n }\n return {\n state: t,\n result: {\n rows: [{ [p.variable.name]: got.get(p.variable.name) }],\n rowCount: 1,\n command: 'SHOW',\n fields: [],\n location: locOf(p),\n },\n }\n }\n}\n","import { _IStatementExecutor, _Transaction, StatementResult, GLOBAL_VARS, QueryError } from '../interfaces-private';\nimport { SetGlobalStatement, SetTimezone, SetNames } from 'pgsql-ast-parser';\nimport { ignore } from '../utils';\nimport { ExecHelper } from './exec-utils';\n\nexport class SetExecutor extends ExecHelper implements _IStatementExecutor {\n\n constructor(private p: SetGlobalStatement | SetTimezone | SetNames) {\n super(p);\n // todo handle set statements timezone ?\n // They are just ignored as of today (in order to handle pg_dump exports)\n ignore(p);\n }\n\n execute(t: _Transaction): StatementResult {\n const p = this.p;\n if (p.type === 'set' && p.set.type === 'value') {\n t.set(GLOBAL_VARS, t.getMap(GLOBAL_VARS)\n .set(p.variable.name, p.set.value));\n }\n return this.noData(t, 'SET');\n }\n}\n","import { _Transaction, _ISchema, NotSupported, CreateIndexColDef, _ITable, CreateIndexDef, _IStatement, _IStatementExecutor } from '../../interfaces-private';\nimport { CreateEnumType } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\n\nexport class CreateEnum extends ExecHelper implements _IStatementExecutor {\n private onSchema: _ISchema;\n private values: string[];\n private name: string;\n\n constructor({ schema }: _IStatement, st: CreateEnumType) {\n super(st);\n this.onSchema = schema.getThisOrSiblingFor(st.name);\n this.values = st.values.map(x => x.value);\n this.name = st.name.name;\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n // register enum\n this.onSchema\n .registerEnum(this.name, this.values);\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}\n","import { _Transaction, asTable, _ISchema, NotSupported, CreateIndexColDef, _ITable, CreateIndexDef, _IStatement, _IStatementExecutor, asView, _IView, QueryError } from '../../interfaces-private';\nimport { CreateViewStatement, SelectedColumn } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore } from '../../utils';\nimport { View } from '../../schema/view';\nimport { buildSelect } from '../select';\n\nexport class CreateView extends ExecHelper implements _IStatementExecutor {\n private schema: _ISchema;\n private drop: boolean;\n existing: _IView | null;\n toRegister: View;\n\n\n constructor(st: _IStatement, p: CreateViewStatement) {\n super(p);\n this.schema = st.schema.getThisOrSiblingFor(p.name);\n // check existence\n this.existing = asView(this.schema.getObject(p.name, { nullIfNotFound: true }));\n ignore(p.orReplace);\n this.drop = !!(p.orReplace && this.existing);\n\n let view = buildSelect(p.query);\n\n // optional column mapping\n if (p.columnNames?.length) {\n if (p.columnNames.length > view.columns.length) {\n throw new QueryError('CREATE VIEW specifies more column names than columns', '42601');\n }\n view = view.select(view.columns.map<string | SelectedColumn>((x, i) => {\n const alias = p.columnNames?.[i]?.name;\n if (!alias) {\n return x.id!;\n }\n return {\n expr: { type: 'ref', name: x.id! },\n alias: { name: alias },\n }\n }));\n }\n\n this.toRegister = new View(this.schema, p.name.name, view);\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n // drop if needed\n if (this.existing && this.drop) {\n this.existing.drop(t);\n }\n\n // view creation\n this.toRegister.register();\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}\n","import { _Transaction, asTable, _ISchema, NotSupported, CreateIndexColDef, _ITable, CreateIndexDef, _IStatement, _IStatementExecutor, asView, _IView, QueryError } from '../../interfaces-private';\nimport { CreateMaterializedViewStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { View } from '../../schema/view';\nimport { buildSelect } from '../select';\n\nexport class CreateMaterializedView extends ExecHelper implements _IStatementExecutor {\n private schema: _ISchema;\n private toRegister?: View;\n\n\n constructor(st: _IStatement, p: CreateMaterializedViewStatement) {\n super(p);\n this.schema = st.schema.getThisOrSiblingFor(p.name);\n // check existence\n const existing = this.schema.getObject(p.name, { nullIfNotFound: true });\n if (existing) {\n if (p.ifNotExists) {\n return;\n }\n throw new QueryError(`Name already exists: ${p.name.name}`);\n }\n\n const view = buildSelect(p.query);\n\n // hack: materialized views are implemented as simple views :/ (todo ?)\n this.toRegister = new View(this.schema, p.name.name, view);\n }\n\n\n execute(t: _Transaction) {\n if (!this.toRegister) {\n return this.noData(t, 'CREATE');\n }\n\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n // view creation\n this.toRegister.register();\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}","import { _Transaction, asTable, _ISchema, NotSupported, CreateIndexColDef, _ITable, CreateIndexDef, _IStatement, _IStatementExecutor, QueryError } from '../../interfaces-private';\nimport { CreateSchemaStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore } from '../../utils';\n\nexport class CreateSchema extends ExecHelper implements _IStatementExecutor {\n private toCreate?: string;\n\n constructor(private st: _IStatement, p: CreateSchemaStatement) {\n super(p);\n const sch = this.st.schema.db.getSchema(p.name.name, true);\n if (!p.ifNotExists && sch) {\n throw new QueryError('schema already exists! ' + p.name);\n }\n if (sch) {\n ignore(p);\n } else {\n this.toCreate = p.name.name;\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n // create schema\n if (this.toCreate) {\n this.st.schema.db.createSchema(this.toCreate);\n }\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}\n","import { _Transaction, _ISchema, NotSupported, _ITable, _IStatement, _IStatementExecutor, QueryError, _ArgDefDetails, IType, _IType, nil, FunctionDefinition } from '../../interfaces-private';\nimport { CreateFunctionStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { buildValue } from '../../parser/expression-builder';\nimport { Types } from '../../datatypes';\nimport { ignore, deepEqual } from '../../utils';\nimport { withSelection } from '../../parser/context';\n\nexport class CreateFunction extends ExecHelper implements _IStatementExecutor {\n private onSchema: _ISchema;\n private toRegister: FunctionDefinition;\n private replace: boolean;\n\n constructor({ schema }: _IStatement, fn: CreateFunctionStatement) {\n super(fn);\n if (!fn.language) {\n throw new QueryError('Unspecified function language');\n }\n this.onSchema = schema.getThisOrSiblingFor(fn.name);\n\n const lang = schema.db.getLanguage(fn.language.name);\n\n // determine arg types\n const args = withSelection(schema.dualTable.selection, () => fn.arguments.map<_ArgDefDetails>(a => ({\n name: a.name?.name,\n type: schema.getType(a.type),\n default: a.default && buildValue(a.default),\n mode: a.mode,\n })));\n\n // determine return type\n let returns: IType | null = null;\n if (!fn.returns) {\n throw new QueryError('Unspecified function return type');\n }\n if (typeof fn.code !== 'string') {\n throw new QueryError('no function body specified');\n }\n switch (fn.returns.kind) {\n case 'table':\n const columns = fn.returns.columns.map(c => ({\n name: c.name.name,\n type: schema.getType(c.type),\n }));\n returns = Types.record(columns).asArray();\n break;\n case 'array':\n case null:\n case undefined:\n returns = schema.getType(fn.returns);\n break;\n default:\n throw NotSupported.never(fn.returns);\n }\n\n let argsVariadic: _IType | nil;\n const variad = args.filter(x => x.mode === 'variadic');\n if (variad.length > 1) {\n throw new QueryError(`Expected only one \"VARIADIC\" argument`);\n } else if (variad.length) {\n argsVariadic = variad[0].type;\n }\n\n // compile & register the associated function\n const compiled = lang({\n args,\n code: fn.code,\n returns,\n functionName: fn.name.name,\n schema: schema,\n });\n\n this.toRegister = {\n name: fn.name.name,\n returns,\n implementation: compiled,\n args: args.filter(x => x.mode !== 'variadic'),\n argsVariadic,\n impure: fn.purity !== 'immutable',\n allowNullArguments: fn.onNullInput === 'call',\n };\n this.replace = fn.orReplace ?? false;\n\n // if the function exists\n const existing = this.onSchema.getFunction(this.toRegister.name, args.map(x => x.type));\n if (existing) {\n if (!this.replace) {\n throw new QueryError(`function ${this.toRegister.name} lready exists with same argument types`, '42723');\n }\n\n // ... it must be the same type\n if (existing.returns !== returns) {\n throw new QueryError(`cannot change return type of existing function`, '42P13');\n }\n\n // ... argument names must be the same\n for (let i = 0; i < args.length; i++) {\n const exName = existing.args[i].name\n if (exName ?? null !== args[i].name ?? null) {\n throw new QueryError(`cannot change name of input parameter \"${exName}\"`, '42P13');\n }\n }\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n this.onSchema.registerFunction(this.toRegister, this.replace);\n\n // new implicit transaction\n t = t.fork();\n return this.noData(t, 'CREATE');\n }\n}\n","import { _IStatementExecutor, _Transaction, StatementResult, _IStatement, CompiledFunction } from '../../interfaces-private';\nimport { DoStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../../execution/exec-utils';\n\nexport class DoStatementExec extends ExecHelper implements _IStatementExecutor {\n private compiled: CompiledFunction;\n\n constructor({ schema }: _IStatement, st: DoStatement) {\n super(st);\n const lang = schema.db.getLanguage(st.language?.name ?? 'plpgsql');\n this.compiled = lang({\n args: [],\n code: st.code,\n schema: schema,\n });\n }\n\n execute(t: _Transaction): StatementResult {\n this.compiled();\n return this.noData(t, 'DO');\n }\n}\n","import { _ISchema, _Transaction, _ISequence, _IStatementExecutor, _IStatement, asSeq, asType, _IType } from '../../interfaces-private';\nimport { DropStatement } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore, notNil } from '../../utils';\n\nexport class DropType extends ExecHelper implements _IStatementExecutor {\n private types: _IType[];\n\n constructor({ schema }: _IStatement, statement: DropStatement) {\n super(statement);\n\n this.types = notNil(statement.names.map(x => asType(schema.getObject(x, {\n nullIfNotFound: statement.ifExists,\n }))));\n if (!this.types.length) {\n ignore(statement);\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index sequence creation does support further rollbacks)\n t = t.fullCommit();\n\n // drop the sequence\n for (const seq of this.types) {\n seq.drop(t);\n }\n\n // new implicit transaction\n t = t.fork();\n\n return this.noData(t, 'DROP');\n }\n}\n","import { _ISchema, _Transaction, _IStatementExecutor, _IStatement } from '../../interfaces-private';\nimport { AlterEnumType } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore } from '../../utils';\nimport { asEnum, CustomEnumType } from \"../../datatypes/t-custom-enum\";\n\nexport class AlterEnum extends ExecHelper implements _IStatementExecutor {\n private onSchema: _ISchema;\n private originalEnum: CustomEnumType;\n constructor({ schema }: _IStatement, private p: AlterEnumType) {\n super(p);\n this.onSchema = schema.getThisOrSiblingFor(p.name);\n this.originalEnum = asEnum(schema.getObject(p.name))\n if (!this.onSchema) {\n ignore(this.p)\n }\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because the index sequence creation does support further rollbacks)\n t = t.fullCommit();\n const enumValues = this.originalEnum.values\n\n switch (this.p.change.type) {\n case 'add value':\n enumValues.push(this.p.change.add.value)\n break;\n case 'rename':\n this.originalEnum.drop(t)\n this.onSchema.registerEnum(this.p.change.to.name, enumValues)\n break;\n }\n\n // new implicit transaction\n t = t.fork();\n\n return this.noData(t, 'ALTER');\n }\n}\n","import { _Transaction, _ISchema, NotSupported, CreateIndexColDef, _ITable, CreateIndexDef, _IStatement, _IStatementExecutor, QueryError } from '../../interfaces-private';\nimport { CommentStatement, CreateEnumType } from 'pgsql-ast-parser';\nimport { ExecHelper } from '../exec-utils';\nimport { ignore, qnameToStr } from '../../utils';\nimport { MemoryTable } from '../../table';\nimport { ColRef } from '../../column';\n\nexport class Comment extends ExecHelper implements _IStatementExecutor {\n private schema: _ISchema;\n constructor({ schema }: _IStatement, private p: CommentStatement) {\n super(p);\n this.schema = schema;\n }\n\n execute(t: _Transaction) {\n // commit pending data before making changes\n // (because does not support further rollbacks)\n t = t.fullCommit();\n\n const on = this.p.on;\n switch (on.type) {\n case 'table': {\n const table = this.schema.getObject(on.name);\n if (!(table instanceof MemoryTable)) {\n throw new QueryError(`relation ${qnameToStr(on.name)} is not a writeable table`);\n }\n table.comment = this.p.comment;\n break;\n }\n case 'column': {\n let s = this.schema;\n if (on.column.schema) {\n s = s.db.getSchema(on.column.schema);\n }\n const table = s.getTable(on.column.table);\n const col = table.getColumnRef(on.column.column);\n if (!(col instanceof ColRef)) {\n throw new QueryError(`column ${on.column} is not a writeable column`);\n }\n col.comment = this.p.comment;\n break;\n }\n default:\n ignore(this.p);\n break;\n }\n\n\n return this.noData(t, 'COMMENT');\n }\n}","import { Types } from '../datatypes';\nimport { DataType, FieldInfo, IBoundQuery, IPreparedQuery, QueryDescription, QueryResult } from '../interfaces';\nimport { _IType } from '../interfaces-private';\nimport { nullIsh } from '../utils';\n\nexport class InterceptedPreparedQuery implements IPreparedQuery, IBoundQuery {\n constructor(private command: string, private result: any[]) {\n }\n\n describe(): QueryDescription {\n const template = this.result[0];\n const keys = Object.keys(template);\n const fields = keys.map<FieldInfo>((name, index) => ({\n name,\n type: DataType.text,\n typeId: Types.text().reg.typeId,\n index,\n }));\n const fieldsByKey = Object.fromEntries(fields.map(x => [x.name, x]));\n for (const k of keys) {\n for (const v of this.result) {\n if (nullIsh(v[k])) {\n continue;\n }\n const t = inferType(v[k]);\n if (t) {\n fieldsByKey[k].type = t.primary;\n fieldsByKey[k].typeId = t.reg.typeId;\n break;\n }\n }\n }\n\n return {\n parameters: [{ type: DataType.text, typeId: Types.text().reg.typeId }],\n result: fields,\n };\n }\n\n bind(args?: any[]): IBoundQuery {\n return this;\n }\n\n *iterate(): IterableIterator<QueryResult> {\n yield this.executeAll();\n }\n\n executeAll(): QueryResult {\n return {\n command: this.command,\n fields: [],\n location: { start: 0, end: this.command.length },\n rowCount: 0,\n rows: this.result,\n };\n }\n\n\n\n\n}\n\n\nfunction inferType(v: any): _IType | null {\n switch (typeof v) {\n case 'bigint':\n return Types.bigint;\n case 'number':\n if (Number.isInteger(v)) {\n return Types.integer;\n }\n return Types.float;\n case 'string':\n return Types.text();\n case 'boolean':\n return Types.bool;\n case 'object':\n if (v instanceof Date) {\n return Types.timestamp();\n }\n return Types.jsonb;\n default:\n return null;\n }\n}\n","import { astVisitor, Statement } from 'pgsql-ast-parser';\nimport { _IDb, _IPreparedQuery, _ISchema, _IStatementExecutor, _Transaction, FieldInfo, _IBoundQuery, IPreparedQuery, nil, NotSupported, Parameter, ParameterInfo, QueryDescription, QueryError, QueryResult, StatementResult, _QueryResult } from '../interfaces-private';\nimport { StatementExec } from '../execution/statement-exec';\nimport { SelectExec } from '../execution/select';\nimport { Types } from '../datatypes';\nimport { withParameters } from '../parser/context';\nimport { cleanResults } from '../execution/clean-results';\n\nfunction isSchemaChange(s: Statement): boolean {\n switch (s.type) {\n case 'alter enum':\n case 'alter index':\n case 'alter sequence':\n case 'alter table':\n case 'create composite type':\n case 'create enum':\n case 'create extension':\n case 'create function':\n case 'create index':\n case 'create materialized view':\n case 'create schema':\n case 'create sequence':\n case 'create table':\n case 'create view':\n case 'drop function':\n case 'drop index':\n case 'drop sequence':\n case 'drop table':\n case 'drop trigger':\n case 'drop type':\n return true;\n\n case 'do':\n // we dont know what's in there\n // => assume it could be schema change\n return true;\n default:\n return false;\n }\n}\n\nlet _paramList: Parameter[] | null = null;\nconst paramsVisitor = astVisitor(() => ({\n parameter: p => {\n const [, istr] = /^\\$(\\d+)$/.exec(p.name) ?? [];\n if (!istr) {\n throw new QueryError('Invalid parameter name');\n }\n _paramList ??= [];\n const idx = parseInt(istr, 10) - 1;\n if (_paramList!.find(p => p.index === idx)) {\n return;\n }\n _paramList!.push({\n index: idx,\n value: null,\n inferedType: Types.text(),\n });\n }\n}))\n\nexport function collectParams(stmt: Statement[]): Parameter[] | null {\n for (const s of stmt) {\n paramsVisitor.statement(s);\n }\n const ret = _paramList;\n _paramList = null;\n return ret;\n}\n\nexport function prepareQuery(schema: _ISchema, query: Statement[], singleSql: string | nil): _IPreparedQuery {\n\n\n const params = collectParams(query) ?? [];\n const hasSchemaChange = query.some(isSchemaChange);\n\n // if there are parameters in the query, then PG protocol will expect\n // describes to also yield parameter descriptors, which will be innaccessible for the same reason\n // as described below\n if (hasSchemaChange && params.length) {\n throw new NotSupported('schema change with parameters');\n }\n // pg-mem does not support preparing statements that will trigger schema changes\n // suppose we have:\n // - a create table\n // - a select on this table\n // compiling the second statement before executing the first will fail\n // supporting this would require pg-mem to to implement transactions for schema changes,\n // which is no small feat (and frankly, not a priority)\n // => when there is a schema change, we fallback to a PreparedQueryNoDescribe\n // which compiles AND executes statements one by-one, commiting things each time it executes a schema change\n // and thus does not allow describing the operation before executing it\n const ret = hasSchemaChange\n ? new PreparedQueryNoDescribe(schema, query, singleSql)\n : new PreparedQuery(schema, query, params, singleSql);\n\n return ret;\n}\n\nclass PreparedQueryNoDescribe implements _IPreparedQuery {\n\n executed?: () => void;\n failed?: (e: any) => void;\n\n constructor(readonly schema: _ISchema, private query: Statement[], private singleSql: string | nil) {\n }\n\n describe(): QueryDescription {\n const l = this.query[this.query.length - 1];\n if (!isSchemaChange(l)) {\n // see comment in prepareQuery\n throw new NotSupported('describe a schema-change query');\n }\n return {\n result: [],\n parameters: [],\n };\n }\n\n bind(args: any[]): _IBoundQuery {\n // Start an implicit transaction\n let t = this.schema.db.data.fork();\n const results: StatementResult[] = [];\n for (const stmt of this.query) {\n const s = new StatementExec(this.schema, stmt, this.singleSql);\n\n const compiled = s.compile();\n\n // store last select for debug purposes\n if (compiled instanceof SelectExec) {\n this.schema.lastSelect = compiled.selection;\n }\n\n // execute statement\n const r = s.executeStatement(t, args);\n r.result.rows = cleanResults(r.result.rows);\n results.push(r);\n t = r.state;\n }\n return new NoDescribeBound(this, results);\n }\n}\n\nclass NoDescribeBound implements _IBoundQuery {\n constructor(private parent: PreparedQueryNoDescribe, private results: StatementResult[]) {\n }\n executeAll(): QueryResult {\n const last = this.results[this.results.length - 1]!;\n last.state.fullCommit();\n this.parent.executed?.();\n return last.result;\n }\n\n *iterate(): IterableIterator<QueryResult> {\n for (const res of this.results) {\n res.result.rows = cleanResults(res.result.rows);\n yield res.result;\n }\n this.executeAll();\n }\n}\n\nclass PreparedQuery implements _IPreparedQuery {\n\n lastSelect: SelectExec | null = null;\n private lastStmt: _IStatementExecutor | null = null;\n private stmts: StatementExec[];\n executed?: () => void;\n failed?: (e: any) => void;\n\n constructor(readonly schema: _ISchema, query: Statement[], private params: Parameter[], singleSql: string | nil) {\n // there is no schema change, meaning that we can compile statements\n // without fearing that a statement\n const stmts = query.map(s => new StatementExec(schema, s, singleSql));\n for (const stmt of stmts) {\n const compiled = withParameters(params, () => stmt.compile());\n\n // store last select for debug purposes\n if (compiled instanceof SelectExec) {\n this.lastSelect = compiled;\n }\n this.lastStmt = compiled;\n }\n\n this.stmts = stmts;\n }\n\n describe(): QueryDescription {\n this.params.sort((a, b) => a.index - b.index);\n // is there an ununsed parameter?\n for (let i = 0; i < this.params.length; i++) {\n if (this.params[i].index !== i || !this.params[i].inferedType) {\n throw new QueryError(`Parameter $${i + 1} is not used`);\n }\n }\n\n const parameters = this.params.map<ParameterInfo>(p => ({\n type: p.inferedType!.primary,\n typeId: p.inferedType!.reg.typeId,\n }));\n\n if (this.lastStmt instanceof SelectExec) {\n return {\n result: this.lastStmt.selection.columns.map<FieldInfo>(c => ({\n name: c.id!,\n type: c.type.primary,\n typeId: c.type.reg.typeId,\n })),\n parameters,\n };\n }\n return { result: [], parameters };\n }\n\n bind(args: any[]): Bound {\n return new Bound(this, this.stmts, args, this.lastSelect);\n }\n}\n\n\nclass Bound implements _IBoundQuery {\n constructor(private parent: PreparedQuery, private stmts: StatementExec[], private args: any[], private lastSelect: SelectExec | null) {\n }\n\n executeAll(outerTx?: _Transaction): _QueryResult {\n const all = [...this.doExecute(outerTx)];\n const f = all[all.length - 1];\n if (!outerTx) {\n return f.result;\n } else {\n return {\n ...f.result,\n state: f.state,\n }\n }\n\n }\n\n private *doExecute(outerTx?: _Transaction): IterableIterator<StatementResult> {\n // Start an implicit transaction\n // (to avoid messing global data if an operation fails mid-write)\n let t = outerTx ?? this.parent.schema.db.data.fork();\n\n\n let lastResult: StatementResult;\n for (const s of this.stmts) {\n // Execute statement\n const r = s.executeStatement(t, this.args);\n r.result.rows = cleanResults(r.result.rows);\n yield r;\n lastResult = r;\n t = r.state;\n }\n\n if (this.parent.lastSelect) {\n this.parent.schema.lastSelect = this.parent.lastSelect.selection;\n }\n this.parent.executed?.();\n\n if (!outerTx) {\n lastResult!.state.fullCommit();\n }\n }\n\n *iterate(): IterableIterator<QueryResult> {\n for (const res of this.doExecute()) {\n yield res.result;\n }\n }\n}\n","import { _ISelection, CastError, DataType, NotSupported, IValue } from '../interfaces-private';\nimport { buildValue } from '../parser/expression-builder';\nimport { Types, ArrayType, reconciliateTypes } from '../datatypes';\nimport { EqFilter } from './eq-filter';\nimport { Value } from '../evaluator';\nimport { FalseFilter } from './false-filter';\nimport { AndFilter } from './and-filter';\nimport { OrFilter } from './or-filter';\nimport { SeqScanFilter } from './seq-scan';\nimport { InFilter } from './in-filter';\nimport { NotInFilter } from './not-in-filter';\nimport { Expr, ExprBinary, ExprUnary, ExprTernary } from 'pgsql-ast-parser';\nimport { StartsWithFilter } from './startswith-filter';\nimport { IneqFilter } from './ineq-filter';\nimport { hasNullish, nullIsh } from '../utils';\nimport { BetweenFilter } from './between-filter';\nimport { QueryError } from '../interfaces';\nimport { withSelection } from '../parser/context';\n\nexport function buildFilter(this: void, on: _ISelection, filter: Expr, parentName: string): _ISelection {\n return withSelection(on, () => {\n const where = buildValue(filter);\n if (!where.type.canConvertImplicit(Types.bool)) {\n throw new QueryError(`argument of ${parentName} must be type boolean, not type jsonb`, '42804');\n }\n return _buildFilter(on, filter, where) ?? new SeqScanFilter(on, where)\n });\n}\n\nfunction _buildFilter(this: void, on: _ISelection, filter: Expr, built: IValue): _ISelection | null {\n // check if there is a direct index\n if (built.index) {\n if (built.index.expressions.length !== 1) {\n throw new Error('Was not expecing multiples expressions filter');\n }\n const itype = built.index.expressions[0].type;\n if (itype !== Types.bool) {\n throw new CastError(itype.primary, DataType.bool);\n }\n return new EqFilter(built, true, 'eq', false);\n }\n\n // if this filter is a constant expression (ex: 1 = 1)\n // then return directly\n if (built.isConstant) {\n const val = built.cast(Types.bool)\n .get();\n if (val) {\n return on;\n }\n return new FalseFilter(on);\n }\n switch (filter.type) {\n case 'binary':\n return buildBinaryFilter(on, filter);\n case 'unary':\n return buildUnaryFilter(on, filter);\n case 'ternary':\n return buildTernaryFilter(on, filter);\n default:\n return null;\n }\n}\n\nfunction buildUnaryFilter(this: void, on: _ISelection, filter: ExprUnary): _ISelection | null {\n const { operand, op } = filter;\n switch (op) {\n case 'IS NULL':\n case 'IS NOT NULL': {\n const leftValue = buildValue(operand);\n if (leftValue.index) {\n return new EqFilter(leftValue, null, op === 'IS NULL' ? 'eq' : 'neq', true);\n }\n return new SeqScanFilter(on, Value.isNull(leftValue, op === 'IS NULL'));\n }\n }\n return null;\n}\n\nfunction buildBinaryFilter(this: void, on: _ISelection, filter: ExprBinary): _ISelection | null {\n const { left, right, op } = filter;\n switch (op) {\n case '=':\n case '!=':\n case '>':\n case '<':\n case '<=':\n case '>=':\n return buildComparison(on, filter);\n case 'AND':\n case 'OR': {\n const leftFilter = buildFilter(on, left, op);\n const rightFilter = buildFilter(on, right, op);\n if (op === 'OR' && (leftFilter instanceof SeqScanFilter || rightFilter instanceof SeqScanFilter)) {\n return null;\n }\n return op === 'AND'\n ? new AndFilter([leftFilter, rightFilter])\n : new OrFilter(leftFilter, rightFilter);\n }\n case 'IN':\n case 'NOT IN': {\n const value = buildValue(left);\n let arrayValue = buildValue(right);\n // to support things like: \"col in (value)\" - which RHS does not parse to an array\n if (arrayValue.type.primary !== DataType.list) {\n arrayValue = Value.list([arrayValue]);\n }\n const elementType = (arrayValue.type as ArrayType).of.prefer(value.type);\n const array = arrayValue.cast(elementType!.asList());\n // only support scanning indexes with one expression\n if (array.isConstant && value.index?.expressions.length === 1) {\n const arrCst = array.get();\n if (nullIsh(arrCst)) {\n return new FalseFilter(on);\n }\n return op === 'IN'\n ? new InFilter(value, arrCst)\n : new NotInFilter(value, arrCst);\n }\n // todo use indexes on queries like \"WHERE 'whatever' in (indexedOne, indexedTwo)\"\n // => this is an OrFilter\n return new SeqScanFilter(on, Value.in(value, array, op === 'IN'));\n }\n case 'LIKE': {\n const value = buildValue(left);\n if (value.index && value.index.expressions[0].hash === value.hash) {\n const valueToCompare = buildValue(right);\n if (valueToCompare.isConstant) {\n const str = valueToCompare.get();\n if (nullIsh(str)) {\n return new FalseFilter(on);\n }\n const got = /^([^%_]+)([%_]?.+)$/.exec(str);\n if (got) {\n const start = got[1];\n if (start.length === str) {\n // that's a full string with no tokens => just an '='\n return buildComparison(on, {\n type: 'binary',\n op: '=',\n left: left,\n right: right,\n });\n }\n // yea, we can use an index\n const indexed = new StartsWithFilter(value, start);\n if (got[2] === '%') {\n // just a starsWith\n return indexed;\n }\n // use index, but filter again on it.\n return new SeqScanFilter(indexed, buildValue(filter));\n }\n }\n }\n }\n }\n return null;\n}\n\nfunction buildComparison(this: void, on: _ISelection, filter: ExprBinary): _ISelection | null {\n const { op, left, right } = filter;\n let leftValue = buildValue(left);\n let rightValue = buildValue(right);\n\n if (leftValue.isConstant && rightValue.isConstant) {\n const global = buildValue(filter);\n const got = global.get();\n if (got) {\n return on;\n }\n return new FalseFilter(on);\n }\n\n if (rightValue.isConstant) {\n const reconcilied = reconciliateTypes([leftValue, rightValue]);\n rightValue = rightValue.cast(reconcilied);\n } else if (leftValue.isConstant) {\n const reconcilied = reconciliateTypes([leftValue, rightValue]);\n leftValue = leftValue.cast(reconcilied);\n }\n\n switch (op) {\n case '=':\n case '!=': {\n if (leftValue.index && rightValue.isConstant) {\n return new EqFilter(leftValue, rightValue.get(), op === '=' ? 'eq' : 'neq', false)\n }\n if (rightValue.index && leftValue.isConstant) {\n return new EqFilter(rightValue, leftValue.get(), op === '=' ? 'eq' : 'neq', false);\n }\n break;\n }\n case '>':\n case '>=':\n case '<':\n case '<=':\n if (leftValue.index && leftValue.index.expressions[0].hash === leftValue.hash && rightValue.isConstant) {\n const fop = op === '>' ? 'gt'\n : op === '>=' ? 'ge'\n : op === '<' ? 'lt'\n : 'le';\n return new IneqFilter(leftValue, fop, rightValue.get());\n }\n if (rightValue.index && rightValue.index.expressions[0].hash === rightValue.hash && leftValue.isConstant) {\n const fop = op === '>' ? 'le'\n : op === '>=' ? 'lt'\n : op === '<' ? 'ge'\n : 'gt';\n return new IneqFilter(rightValue, fop, leftValue.get());\n }\n break;\n }\n return null;\n}\n\nfunction buildTernaryFilter(this: void, on: _ISelection, filter: ExprTernary): _ISelection | null {\n switch (filter.op) {\n case 'BETWEEN':\n case 'NOT BETWEEN': {\n const value = buildValue(filter.value);\n const lo = buildValue(filter.lo);\n const hi = buildValue(filter.hi);\n const valueIndex = value.index;\n if (valueIndex && valueIndex.expressions[0].hash === value.hash && lo.isConstant && hi.isConstant) {\n const lov = lo.get();\n const hiv = hi.get();\n if (hasNullish(lov, hiv)) {\n return new FalseFilter(on);\n }\n return new BetweenFilter(value, lov, hiv, filter.op === 'BETWEEN' ? 'inside' : 'outside');\n }\n }\n }\n return null;\n}","import { _ISelection, IValue, _IIndex, _ITable, _Transaction, _Explainer, _SelectExplanation, IndexKey, IndexOp, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { nullIsh } from '../utils';\n\nexport class EqFilter extends FilterBase {\n\n private index: _IIndex;\n private opDef: IndexOp;\n\n entropy(t: _Transaction): number {\n return this.index.entropy({ ...this.opDef, t });\n }\n\n\n stats(t: _Transaction): Stats | null {\n const stats = this.index.stats(t, [this.equalsCst]);\n if (this.op === 'eq' || !stats) {\n return stats;\n }\n // if neq, then compute from eq and all\n const all = this.index.stats(t);\n if (!all) {\n return null;\n }\n return {\n count: all.count - stats.count,\n };\n }\n\n hasItem(item: Row, t: _Transaction) {\n const isEq = this.op === 'eq';\n const val = this.onValue.get(item, t);\n\n if (this.matchNull && nullIsh(val)) {\n return isEq;\n }\n if (nullIsh(val)) {\n return false;\n }\n const eq = this.onValue.type.equals(val, this.equalsCst);\n if (nullIsh(eq)) {\n return false;\n }\n return isEq ? !!eq : !eq;\n }\n\n constructor(private onValue: IValue\n , private equalsCst: any\n , private op: 'eq' | 'neq'\n , private matchNull: boolean) {\n super(onValue.origin!);\n if (onValue.index!.expressions.length !== 1) {\n throw new Error('Unexpected index equality expressions count mismatch');\n }\n\n this.index = this.onValue.index!;\n this.opDef = {\n type: op,\n key: [equalsCst],\n t: null as any,\n matchNull: this.matchNull,\n }\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const item of this.index.enumerate({ ...this.opDef, t })) {\n yield item;\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: this.op,\n entropy: this.entropy(e.transaction),\n on: this.onValue.index!.explain(e),\n };\n }\n}\n","import { _ISelection, IValue, _Explainer, _SelectExplanation, _Transaction, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\n\nexport class FalseFilter extends FilterBase {\n\n get index() {\n return null;\n }\n\n entropy() {\n return 0;\n }\n\n hasItem() {\n return false;\n }\n\n enumerate(): Iterable<Row> {\n return [];\n }\n\n stats(t: _Transaction): Stats | null {\n return {\n count: 0,\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'empty',\n };\n }\n}","import { _ISelection, _IIndex, _ITable, _Transaction, _Explainer, _SelectExplanation, Stats, nil, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { SeqScanFilter } from './seq-scan';\n\n\n\nexport class AndFilter extends FilterBase {\n\n get index(): _IIndex | nil {\n return null;\n }\n\n private prevEntropy?: { t: _Transaction; ret: number };\n\n entropy(t: _Transaction) {\n // just a bit of caching\n if (t === this.prevEntropy?.t) {\n return this.prevEntropy.ret;\n }\n const { best } = this.plan(t);\n const ret = best.entropy(t);\n this.prevEntropy = {\n ret,\n t,\n };\n return ret;\n }\n\n hasItem(value: Row, t: _Transaction): boolean {\n return this.filters.every(x => x.hasItem(value, t));\n }\n\n constructor(private filters: _ISelection[]) {\n super(filters.find(x => !(x instanceof SeqScanFilter)) ?? filters[0]);\n if (filters.some(f => f.columns !== this.base.columns)) {\n throw new Error('Column set mismatch');\n }\n }\n\n private plan(t: _Transaction) {\n const sorted = [...this.filters]\n .sort((a, b) => a.entropy(t) > b.entropy(t) ? 1 : -1);\n const [best] = sorted.splice(0, 1);\n return { best, sorted };\n }\n\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n // sort them so the most restrictive filter is first\n const { best, sorted } = this.plan(t)\n for (const item of best.enumerate(t)) {\n if (!sorted.every(x => x.hasItem(item, t))) {\n continue;\n }\n yield item;\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n const { best, sorted } = this.plan(e.transaction);\n return {\n id: e.idFor(this),\n _: 'and',\n enumerate: best.explain(e),\n andCheck: sorted.map(x => x.explain(e)),\n };\n }\n\n}","import { _ISelection, _IIndex, _ITable, getId, _Transaction, _Explainer, _SelectExplanation, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\n\n\nexport class OrFilter extends FilterBase {\n\n entropy(t: _Transaction) {\n return this.left.entropy(t) + this.right.entropy(t);\n }\n\n hasItem(value: Row, t: _Transaction): boolean {\n return this.left.hasItem(value, t) || this.right.hasItem(value, t);\n }\n\n constructor(private left: _ISelection, private right: _ISelection) {\n super(left);\n if (left.columns !== right.columns) { // istanbul ignore next\n throw new Error('Column set mismatch');\n }\n }\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n const yielded = new Set<string>();\n for (const item of this.left.enumerate(t)) {\n yield item;\n yielded.add(getId(item));\n }\n for (const item of this.right.enumerate(t)) {\n const id = getId(item);\n if (!yielded.has(id)) {\n yield item;\n }\n }\n }\n\n\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'union',\n union: [\n this.left.explain(e),\n this.right.explain(e),\n ],\n };\n }\n}","import { _ISelection, IValue, _IIndex, _ITable, getId, _Transaction, _Explainer, _SelectExplanation, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { DataType, CastError, QueryError } from '../interfaces';\nimport { nullIsh } from '../utils';\n\nexport class InFilter extends FilterBase {\n\n\n private index: _IIndex;\n\n entropy(t: _Transaction) {\n let ret = 0;\n for (const a of this.elts) {\n ret += this.index.entropy({\n type: 'eq',\n key: [a],\n t,\n });\n }\n return ret;\n }\n\n hasItem(item: Row, t: _Transaction) {\n const val = this.onValue.get(item, t);\n return !nullIsh(val)\n && this.elts.some(x => this.onValue.type.equals(x, val));\n }\n\n constructor(private onValue: IValue\n , private elts: any[]) {\n super(onValue.origin!);\n this.index = onValue.index!;\n if (this.index.expressions.length !== 1) {\n throw new Error('Only supports IN with signle expressions index');\n }\n if (!Array.isArray(elts)) {\n throw new QueryError('Cannot iterate element list');\n }\n }\n\n stats(t: _Transaction): Stats | null {\n const elts = this.elts.map(x => this.index.stats(t, [x]));\n if (elts.some(x => !x)) {\n return null;\n }\n // compute from elements\n const ret: Stats = {\n count: 0,\n };\n for (const i of elts) {\n ret.count += i!.count;\n }\n return ret;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const a of this.elts) {\n yield* this.index.enumerate({\n type: 'eq',\n key: [a],\n t,\n });\n }\n }\n\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'eq',\n entropy: this.entropy(e.transaction),\n on: this.index.explain(e),\n };\n }\n}","import { _ISelection, IValue, _IIndex, _ITable, getId, _Transaction, _Explainer, _SelectExplanation, IndexKey, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { DataType, CastError, QueryError } from '../interfaces';\nimport { nullIsh } from '../utils';\n\nexport class NotInFilter extends FilterBase {\n\n private index: _IIndex;\n private keys: IndexKey[];\n\n entropy(t: _Transaction) {\n return this.onValue.index!.entropy({\n type: 'nin',\n keys: this.keys,\n t,\n });\n }\n\n hasItem(item: Row, t: _Transaction): boolean {\n const val = this.onValue.get(item, t);\n return !nullIsh(val)\n && !this.elts.some(x => this.onValue.type.equals(x, val));\n }\n\n constructor(private onValue: IValue\n , private elts: any[]) {\n super(onValue.origin!);\n this.index = onValue.index!;\n if (this.index.expressions.length !== 1) {\n throw new Error('Only supports IN with signle expressions index');\n }\n if (!Array.isArray(elts)) {\n throw new QueryError('Cannot iterate element list');\n }\n this.keys = elts.map(x => [x]);\n }\n\n\n stats(t: _Transaction): Stats | null {\n const all = this.base.stats(t);\n if (!all) {\n return null;\n }\n const elts = this.elts.map(x => this.index.stats(t, [x]));\n if (elts.some(x => !x)) {\n return null;\n }\n // compute based on 'all'\n for (const i of elts) {\n all.count -= i!.count;\n }\n return all;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n yield* this.index.enumerate({\n type: 'nin',\n keys: this.keys,\n t,\n });\n }\n\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'neq',\n entropy: this.entropy(e.transaction),\n on: this.onValue.index!.explain(e),\n };\n }\n}","import { _ISelection, IValue, _IIndex, _ITable, getId, _Transaction, _Explainer, _SelectExplanation, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { nullIsh } from '../utils';\n\nexport class StartsWithFilter extends FilterBase {\n\n get index() {\n return null;\n }\n\n entropy(t: _Transaction) {\n return this.onValue.index!.entropy({\n type: 'ge',\n key: [this.startWith],\n t,\n });\n }\n\n hasItem(item: Row, t: _Transaction) {\n const get = this.onValue.get(item, t);\n return typeof get === 'string'\n && get.startsWith(this.startWith);\n }\n\n constructor(private onValue: IValue\n , private startWith: string) {\n super(onValue.origin!);\n if (onValue.index!.expressions[0].hash !== this.onValue.hash) {\n throw new Error('Startwith must be the first component of the index');\n }\n }\n\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n const index = this.onValue.index!;\n for (const item of index.enumerate({\n type: 'ge',\n key: [this.startWith],\n t,\n })) {\n const got: string = this.onValue.get(item, t);\n if (nullIsh(got) || !got.startsWith(this.startWith)) {\n break;\n }\n yield item;\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'ineq',\n entropy: this.entropy(e.transaction),\n on: this.onValue.index!.explain(e),\n };\n }\n}","import { _ISelection, IValue, _IIndex, _ITable, _Transaction, _Explainer, _SelectExplanation, IndexOp, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { nullIsh } from '../utils';\n\nexport class IneqFilter extends FilterBase {\n\n private index: _IIndex;\n private opDef: IndexOp;\n\n entropy(t: _Transaction) {\n return this.onValue.index!.entropy({ ...this.opDef, t });\n }\n\n hasItem(item: Row, t: _Transaction) {\n const val = this.onValue.get(item, t);\n if (nullIsh(val)) {\n return false;\n }\n return !!this.onValue.type[this.op](val, this.than);\n }\n\n constructor(private onValue: IValue\n , private op: 'gt' | 'ge' | 'lt' | 'le'\n , private than: any) {\n super(onValue.origin!);\n\n this.index = this.onValue.index!;\n this.opDef = {\n type: op,\n key: [than],\n t: null as any,\n }\n }\n\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const item of this.index.enumerate({ ...this.opDef, t })) {\n if (!this.hasItem(item, t)) {\n break;\n }\n yield item;\n }\n }\n\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'ineq',\n entropy: this.entropy(e.transaction),\n on: this.onValue.index!.explain(e),\n };\n }\n}","import { _ISelection, IValue, _IIndex, _ITable, _Transaction, _Explainer, _SelectExplanation, IndexOp, Stats, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { nullIsh } from '../utils';\n\nexport class BetweenFilter extends FilterBase {\n\n private opDef: IndexOp;\n\n\n entropy(t: _Transaction) {\n return this.onValue.index!.entropy({ ...this.opDef, t });\n }\n\n constructor(private onValue: IValue\n , private lo: any\n , private hi: any\n , private op: 'inside' | 'outside') {\n super(onValue.origin!);\n if (onValue.index!.expressions[0]?.hash !== onValue.hash) {\n throw new Error('Between index misuse');\n }\n this.opDef = {\n type: op,\n hi: [hi],\n lo: [lo],\n t: null as any,\n }\n }\n\n hasItem(value: Row, t: _Transaction): boolean {\n const v = this.onValue.get(value, t);\n if (nullIsh(v)) {\n return false;\n }\n if (this.op === 'inside') {\n return !!this.onValue.type.ge(v, this.lo)\n && !!this.onValue.type.le(v, this.hi);\n }\n return !!this.onValue.type.lt(v, this.lo)\n || !!this.onValue.type.gt(v, this.lo);\n }\n\n enumerate(t: _Transaction): Iterable<Row> {\n return this.onValue.index!.enumerate({ ...this.opDef, t });\n }\n\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: this.op,\n entropy: this.entropy(e.transaction),\n on: this.onValue.index!.explain(e),\n };\n }\n}\n","import { LibAdapters, IMemoryDb, NotSupported, QueryResult, SlonikAdapterOptions, BindServerOptions, BindServerResult } from '../interfaces';\nimport lru from 'lru-cache';\nimport { compareVersions, delay, doRequire, timeoutOrImmediate } from '../utils';\nimport { toLiteral } from '../misc/pg-utils';\nimport { _IDb, _IType } from '../interfaces-private';\nimport { TYPE_SYMBOL } from '../execution/select';\nimport { ArrayType } from '../datatypes';\nimport { CustomEnumType } from '../datatypes/t-custom-enum';\nimport { bindPgServer, socketAdapter } from './pg-socket-adapter';\n\n\nexport function replaceQueryArgs$(this: void, sql: string, values: any[]) {\n return sql.replace(/\\$(\\d+)/g, (str: any, istr: any) => {\n const i = Number.parseInt(istr);\n if (i > values.length) {\n throw new Error('Unmatched parameter in query ' + str);\n }\n const val = values[i - 1];\n return toLiteral(val);\n });\n}\n\n\nexport class Adapters implements LibAdapters {\n private _mikroPatched?: boolean;\n\n constructor(private db: _IDb) {\n }\n\n createPg(queryLatency?: number): { Pool: any; Client: any } {\n const that = this;\n // https://node-postgres.com/features/queries\n interface PgQuery {\n text: string;\n values?: any[];\n rowMode?: 'array';\n types?: any;\n }\n class MemPg {\n\n connection = this;\n\n on() {\n // nop\n }\n\n release() {\n }\n\n removeListener() {\n }\n\n once(what: string, handler: () => void) {\n if (what === 'connect') {\n timeoutOrImmediate(handler, queryLatency ?? 0);\n }\n }\n\n end(callback: any) {\n if (callback) {\n callback();\n return null;\n } else {\n return Promise.resolve();\n }\n }\n\n connect(callback: any) {\n if (callback) {\n callback(null, this, () => { });\n return null;\n } else {\n return Promise.resolve(this);\n }\n }\n query(query: any, valuesOrCallback: any, callback: any) {\n let values: any = null;\n if (Array.isArray(valuesOrCallback)) {\n values = valuesOrCallback;\n }\n if (callback == null && typeof valuesOrCallback === 'function') {\n callback = valuesOrCallback;\n }\n\n // adapt results\n\n const pgquery = this.adaptQuery(query, values);\n try {\n const result = this.adaptResults(query, that.db.public.query(pgquery.text));\n if (callback) {\n timeoutOrImmediate(() => callback(null, result), queryLatency ?? 0);\n return null;\n } else {\n return new Promise(res => timeoutOrImmediate(() => res(result), queryLatency ?? 0));\n }\n } catch (e) {\n if (callback) {\n timeoutOrImmediate(() => callback(e), queryLatency ?? 0);\n return null;\n } else {\n return new Promise((_, rej) => timeoutOrImmediate(() => rej(e), queryLatency ?? 0));\n }\n }\n }\n\n private adaptResults(query: PgQuery, res: QueryResult) {\n if (query.rowMode) {\n throw new NotSupported('pg rowMode');\n }\n return {\n ...res,\n // clone rows to avoid leaking symbols\n rows: res.rows.map(row => {\n const rowCopy: any = {};\n // copy all\n for (const [k, v] of Object.entries(row)) {\n rowCopy[k] = v;\n }\n // ...but amend fields based on their types\n for (const f of res.fields) {\n const type = (f as any)[TYPE_SYMBOL] as _IType;\n const value = row[f.name];\n // enum arrays are returned as strings... see #224\n if (type instanceof ArrayType && type.of instanceof CustomEnumType && Array.isArray(value)) {\n rowCopy[f.name] = `{${value.join(',')}}`;\n }\n }\n return rowCopy;\n }),\n get fields() {\n // to implement if needed ? (never seen a lib that uses it)\n return [];\n }\n };\n }\n\n private adaptQuery(query: string | PgQuery, values: any): PgQuery {\n if (typeof query === 'string') {\n query = {\n text: query,\n values,\n };\n } else {\n // clean copy to avoid mutating things outside our scope\n query = { ...query, values: query.values || values };\n }\n if (!query.values?.length) {\n return query;\n }\n\n if (query.types?.getTypeParser) {\n throw new NotSupported('getTypeParser is not supported');\n }\n\n // console.log(query);\n // console.log('\\n');\n\n query.text = replaceQueryArgs$(query.text, query.values);\n return query;\n }\n }\n return {\n Pool: MemPg,\n Client: MemPg,\n };\n }\n\n /**\n * @deprecated Use `createTypeormDataSource` instead.\n */\n createTypeormConnection(postgresOptions: any, queryLatency?: number) {\n const that = this;\n (postgresOptions as any).postgres = that.createPg(queryLatency);\n if (postgresOptions?.type !== 'postgres') {\n throw new NotSupported('Only postgres supported, found ' + postgresOptions?.type ?? '<null>')\n }\n\n const { getConnectionManager } = doRequire('typeorm')\n const created = getConnectionManager().create(postgresOptions);\n created.driver.postgres = that.createPg(queryLatency);\n return created.connect();\n }\n\n createTypeormDataSource(postgresOptions: any, queryLatency?: number) {\n const that = this;\n (postgresOptions as any).postgres = that.createPg(queryLatency);\n if (postgresOptions?.type !== 'postgres') {\n throw new NotSupported('Only postgres supported, found ' + postgresOptions?.type ?? '<null>')\n }\n\n const nr = doRequire('typeorm');\n const { DataSource } = nr;\n const created = new DataSource(postgresOptions);\n created.driver.postgres = that.createPg(queryLatency);\n return created;\n }\n\n createSlonik(opts?: SlonikAdapterOptions) {\n const slonik = doRequire('slonik');\n if (typeof slonik.createMockPool !== 'function') {\n // see https://github.com/gajus/slonik/blob/main/packages/slonik/src/factories/createPool.ts\n // and @slonik/pg-driver https://github.com/gajus/slonik/blob/main/packages/pg-driver/src/factories/createPgDriverFactory.ts\n const { createDriverFactory } = doRequire('@slonik/driver');\n const createResultParserInterceptor = () => {\n return {\n transformRow: async (executionContext: any, actualQuery: any, row: any) => {\n const { resultParser } = executionContext;\n if (!resultParser) {\n return row;\n }\n // It is recommended (but not required) to parse async to avoid blocking the event loop during validation\n const validationResult = await resultParser.safeParseAsync(row);\n\n if (!validationResult.success) {\n throw new slonik.SchemaValidationError(\n actualQuery,\n row,\n validationResult.error.issues\n );\n }\n\n return validationResult.data;\n },\n };\n };\n return slonik.createPool('', {\n ...opts?.createPoolOptions ?? {},\n ...opts?.zodValidation ? { interceptors: [createResultParserInterceptor(), ...opts?.createPoolOptions?.interceptors ?? []] } : {},\n // driverFactory: factory,\n driverFactory: createDriverFactory(() => {\n return {\n createPoolClient: async () => {\n let connected = false;\n return {\n connect: async () => {\n await delay(opts?.queryLatency ?? 0);\n connected = true;\n },\n end: async () => {\n await delay(opts?.queryLatency ?? 0);\n connected = false;\n },\n query: async (sql: string, args: any[]) => {\n if (!connected) {\n throw new Error('your fake pg pool is not connected');\n }\n if (sql === 'DISCARD ALL') {\n return { rows: [] };\n }\n await delay(opts?.queryLatency ?? 0);\n const formatted = replaceQueryArgs$(sql, args);\n const result = this.db.public.query(formatted);\n return result;\n },\n stream: (sql: any, values: any) => {\n throw new Error('pg-mem does not support streaming');\n },\n }\n },\n }\n })\n })\n } else {\n // old slonik versions\n return slonik.createMockPool({\n query: async (sql: string, args: any[]) => {\n await delay(opts?.queryLatency ?? 0);\n const formatted = replaceQueryArgs$(sql, args);\n const ret = this.db.public.many(formatted);\n return slonik.createMockQueryResult(ret);\n },\n }, opts?.clientConfigurationInput);\n }\n }\n\n\n createPgPromise(queryLatency?: number) {\n // https://vitaly-t.github.io/pg-promise/module-pg-promise.html\n // https://github.com/vitaly-t/pg-promise/issues/743#issuecomment-756110347\n const pgp = doRequire('pg-promise')();\n pgp.pg = this.createPg(queryLatency);\n const db = pgp('pg-mem');\n if (compareVersions('10.8.7', db.$config.version) < 0) {\n throw new Error(`💀 pg-mem cannot be used with pg-promise@${db.$config.version},\n\n 👉 you must install version pg-promise@10.8.7 or newer:\n\n npm i pg-promise@latest -S\n\n See https://github.com/vitaly-t/pg-promise/issues/743 for details`);\n }\n return db;\n }\n\n createPgNative(queryLatency?: number) {\n queryLatency = queryLatency ?? 0;\n const prepared = new lru<string, string>({\n max: 1000,\n maxAge: 5000,\n });\n function handlerFor(a: any, b: any) {\n return typeof a === 'function' ? a : b;\n }\n const that = this;\n return class Client {\n async connect(a: any, b: any) {\n const handler = handlerFor(a, b);\n await delay(queryLatency);\n handler?.();\n }\n\n connectSync() {\n // nop\n }\n\n async prepare(name: string, sql: string, npar: number, callback: any) {\n await delay(queryLatency);\n this.prepareSync(name, sql, npar);\n callback();\n }\n\n prepareSync(name: string, sql: string, npar: number) {\n prepared.set(name, sql);\n }\n\n async execute(name: string, a: any, b: any) {\n const handler = handlerFor(a, b);\n const pars = Array.isArray(a) ? a : [];\n await delay(queryLatency);\n try {\n const rows = this.executeSync(name, pars);\n handler(null, rows);\n } catch (e) {\n handler(e);\n }\n }\n executeSync(name: string, pars?: any) {\n pars = Array.isArray(pars) ? pars : [];\n const prep = prepared.get(name);\n if (!prep) {\n throw new Error('Unkown prepared statement ' + name);\n }\n return this.querySync(prep, pars);\n }\n\n\n async query(sql: string, b: any, c: any) {\n const handler = handlerFor(b, c);\n const params = Array.isArray(b) ? b : [];\n try {\n await delay(queryLatency);\n const result = this.querySync(sql, params);\n handler(null, result);\n } catch (e) {\n handler?.(e);\n }\n }\n\n querySync(sql: string, params: any[]) {\n sql = replaceQueryArgs$(sql, params);\n const ret = that.db.public.many(sql);\n return ret;\n }\n }\n }\n\n createKnex(queryLatency?: number, knexConfig?: object): any {\n const knex = doRequire('knex')({\n connection: {},\n ...knexConfig,\n client: 'pg',\n });\n knex.client.driver = this.createPg(queryLatency);\n knex.client.version = 'pg-mem';\n return knex;\n }\n\n createKysely(queryLatency?: number, kyselyConfig?: object): any {\n const { Kysely, PostgresDialect } = doRequire('kysely');\n const pg = this.createPg(queryLatency);\n return new Kysely({\n ...kyselyConfig,\n dialect: new PostgresDialect({\n pool: new pg.Pool(),\n }),\n });\n }\n\n async createMikroOrm(mikroOrmOptions: any, queryLatency?: number) {\n\n const { MikroORM } = doRequire('@mikro-orm/core');\n const { AbstractSqlDriver, PostgreSqlConnection, PostgreSqlPlatform } = doRequire('@mikro-orm/postgresql');\n const that = this;\n\n // see https://github.com/mikro-orm/mikro-orm/blob/aa71065d0727920db7da9bfdecdb33e6b8165cb5/packages/postgresql/src/PostgreSqlConnection.ts#L5\n class PgMemConnection extends PostgreSqlConnection {\n protected createKnexClient(type: string) {\n return that.createKnex();\n }\n\n async execute(query: string, params: any[] = [], method: 'all' | 'get' | 'run' = 'all'): Promise<any> {\n // pg-mem does not support `set names 'utf8';` yet\n // the hack in line 355 works only for a single query while this one works beforehand to strip it from multiline queries\n return super.execute(query.replace('set names \\'utf8\\';', ''), params, method);\n }\n\n }\n // see https://github.com/mikro-orm/mikro-orm/blob/master/packages/postgresql/src/PostgreSqlDriver.ts\n class PgMemDriver extends AbstractSqlDriver<PgMemConnection> {\n constructor(config: any) {\n super(config, new PostgreSqlPlatform(), PgMemConnection, ['knex', 'pg']);\n }\n }\n\n const orm = await MikroORM.init({\n ...mikroOrmOptions,\n dbName: 'public',\n driver: PgMemDriver,\n });\n return orm;\n }\n\n createPostgresJsTag(queryLatency?: number): any {\n const pg = doRequire('postgres').default;\n const sql = pg({\n socket: () => {\n return socketAdapter()(this.db.public, queryLatency);\n },\n });\n return sql;\n }\n\n\n async bindServer(opts?: BindServerOptions): Promise<BindServerResult> {\n const { createServer } = doRequire('net') as typeof import('net');\n const srv = createServer();\n return new Promise<BindServerResult>((res, rej) => {\n srv.listen(opts?.port ?? 0, opts?.host ?? '127.0.0.1', () => {\n const a = srv.address();\n if (!a) {\n srv.close();\n return rej('cannot find a port');\n }\n if (typeof a === 'string') {\n srv.close();\n return rej('cannot find a port');\n }\n\n srv.on('connection', (socket) => {\n bindPgServer(socket, this.db.public);\n });\n\n res({\n postgresConnectionString: `postgresql://${a.address}:${a.port}/postgres?sslmode=disable`,\n connectionSettings: {\n port: a.port,\n host: a.address,\n },\n close: () => {\n srv.close();\n },\n })\n });\n });\n }\n}\n","// ====== ALMOST A COPY-PASTE OF https://github.com/brianc/node-postgres/blob/4b229275cfe41ca17b7d69bd39f91ada0068a5d0/packages/pg/lib/utils.js#L71-L82\n// see https://github.com/oguimbal/pg-mem/issues/181\n\nimport { nullIsh } from '../utils'\nimport { bufToString, isBuf } from './buffer-node';\nimport { literal } from './pg-escape';\nimport stringify from 'json-stable-stringify';\n\nexport function toLiteral(val: any) {\n return prepareValue(val);\n}\n\n// converts values from javascript types\n// to their 'raw' counterparts for use as a postgres parameter\n// note: you can override this function to provide your own conversion mechanism\n// for complex types, etc...\nvar prepareValue = function (val: any, seen?: any[]): any {\n // null and undefined are both null for postgres\n if (nullIsh(val)) {\n return 'null';\n }\n\n if (isBuf(val)) {\n return literal(bufToString(val));\n }\n if (val instanceof Date) {\n // if (defaults.parseInputDatesAsUTC) {\n // return dateToStringUTC(val)\n // } else {\n return literal(dateToString(val));\n // }\n }\n\n if (Array.isArray(val)) {\n if (val.length === 0) return `'{}'`;\n return `ARRAY[${val.map(x => toLiteral(x)).join(', ')}]`;\n }\n if (typeof val === 'object') {\n return prepareObject(val, seen);\n }\n return literal(val.toString());\n}\n\nfunction prepareObject(val: any, seen?: any[]) {\n if (val && typeof val.toPostgres === 'function') {\n seen = seen || []\n if (seen.indexOf(val) !== -1) {\n throw new Error('circular reference detected while preparing \"' + val + '\" for query')\n }\n seen.push(val)\n\n return prepareValue(val.toPostgres(prepareValue), seen)\n }\n return literal(stringify(val));\n}\n\nfunction pad(number: any, digits: number) {\n number = '' + number\n while (number.length < digits) {\n number = '0' + number\n }\n return number\n}\n\nfunction dateToString(date: Date) {\n var offset = -date.getTimezoneOffset()\n\n var year = date.getFullYear()\n var isBCYear = year < 1\n if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation\n\n var ret =\n pad(year, 4) +\n '-' +\n pad(date.getMonth() + 1, 2) +\n '-' +\n pad(date.getDate(), 2) +\n 'T' +\n pad(date.getHours(), 2) +\n ':' +\n pad(date.getMinutes(), 2) +\n ':' +\n pad(date.getSeconds(), 2) +\n '.' +\n pad(date.getMilliseconds(), 3)\n\n if (offset < 0) {\n ret += '-'\n offset *= -1\n } else {\n ret += '+'\n }\n\n ret += pad(Math.floor(offset / 60), 2) + ':' + pad(offset % 60, 2)\n if (isBCYear) ret += ' BC'\n return ret\n}\n\nfunction dateToStringUTC(date: Date) {\n var year = date.getUTCFullYear()\n var isBCYear = year < 1\n if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation\n\n var ret =\n pad(year, 4) +\n '-' +\n pad(date.getUTCMonth() + 1, 2) +\n '-' +\n pad(date.getUTCDate(), 2) +\n 'T' +\n pad(date.getUTCHours(), 2) +\n ':' +\n pad(date.getUTCMinutes(), 2) +\n ':' +\n pad(date.getUTCSeconds(), 2) +\n '.' +\n pad(date.getUTCMilliseconds(), 3)\n\n ret += '+00:00'\n if (isBCYear) ret += ' BC'\n return ret\n}\n\nexport function normalizeQueryConfig(config: any, values: any, callback: any) {\n // can take in strings or config objects\n config = typeof config === 'string' ? { text: config } : config\n if (values) {\n if (typeof values === 'function') {\n config.callback = values\n } else {\n config.values = values\n }\n }\n if (callback) {\n config.callback = callback\n }\n return config\n}\n","import { ISchema } from '../interfaces';\nimport { _IBoundQuery, _IPreparedQuery, _ISchema, _Transaction } from '../interfaces-private';\nimport { AsyncQueue, delay, doRequire, lazySync, nullIsh } from '../utils';\n\n\n\n// https://www.postgresql.org/docs/current/protocol-flow.html\n// https://www.postgresql.org/docs/current/protocol-message-formats.html\n\nexport const socketAdapter = lazySync(() => {\n const EventEmitter = doRequire('events') as typeof import('events');\n class InMemorySocket extends EventEmitter {\n readonly peer: InMemorySocket;\n isTop: boolean;\n constructor(peer?: InMemorySocket) {\n super();\n this.isTop = !peer;\n this.peer = peer ?? new InMemorySocket(this);\n }\n\n setNoDelay() { }\n\n write(data: any, mcb1?: any, mcb2?: any) {\n // if (this.isTop) {\n // console.log(\"🛜 \", data);\n // }\n process.nextTick(() => {\n this.peer.emit(\"data\", data);\n mcb1 === \"function\" && mcb1();\n mcb2 === \"function\" && mcb2();\n });\n return true;\n }\n\n end() {\n process.nextTick(() => {\n this.peer.emit(\"end\");\n this.emit(\"close\");\n });\n return this;\n }\n destroySoon() { }\n connect() {\n return this;\n }\n pause() {\n return this;\n }\n resume() {\n return this;\n }\n }\n\n class Connection {\n socket = new InMemorySocket();\n constructor(private mem: _ISchema, private queryLatency?: number) {\n bindPgServer(this.socket.peer, mem, queryLatency);\n }\n }\n\n return (mem: _ISchema, queryLatency?: number) => new Connection(mem, queryLatency).socket;\n});\n\n\nexport function bindPgServer(this: void, peer: any, mem: _ISchema, queryLatency?: number) {\n const { CommandCode, bindSocket } = doRequire('pg-server') as typeof import('pg-server');\n const byCode = Object.fromEntries(\n Object.entries(CommandCode).map(([k, v]) => [v, k])\n );\n\n const log = typeof process !== 'undefined' && process.env.DEBUG_PG_SERVER === 'true'\n ? console.log.bind(console)\n : (...args: any[]) => { };\n let prepared: _IPreparedQuery | undefined;\n let bound: _IBoundQuery | undefined;\n let runningTx: _Transaction | undefined;\n const queue = new AsyncQueue();\n bindSocket(peer, ({ command: cmd }, writer) => queue.enqueue(async () => {\n function sendDescribe(prepared: _IPreparedQuery) {\n const p = prepared.describe();\n writer.parameterDescription(p.parameters.map(x => x.typeId));\n\n // see RowDescription() in connection.js of postgres.js\n // => we just need typeId\n const descs = p.result.map<import('pg-server').FieldDesc>(x => ({\n name: x.name,\n tableID: 0,\n columnID: 0,\n dataTypeID: x.typeId,\n dataTypeSize: 0,\n dataTypeModifier: -1,\n format: 0,\n mode: 'text',\n // mode: textMode ? 'text' : 'binary',\n }))\n writer.rowDescription(descs);\n }\n\n function sendResults(bound: _IBoundQuery) {\n const results = bound.executeAll(runningTx);\n if (runningTx && results.state) {\n runningTx = results.state;\n }\n for (const row of results.rows) {\n writer.dataRow(results.fields.map((x) => row[x.name]));\n }\n // see spec: https://www.postgresql.org/docs/current/protocol-message-formats.html#PROTOCOL-MESSAGE-FORMATS-COMMANDCOMPLETE\n let qname: string;\n switch (results.command) {\n case 'SELECT':\n case 'UPDATE':\n case 'DELETE':\n case 'MERGE':\n case 'MOVE':\n case 'FETCH':\n case 'COPY':\n qname = `${results.command} ${results.rowCount}`;\n break;\n case 'INSERT':\n qname = 'INSERT 0 ' + results.rowCount;\n break;\n default:\n qname = results.command;\n }\n writer.commandComplete(qname);\n writer.readyForQuery();\n }\n try {\n await delay(queryLatency ?? 0);\n const t = cmd.type;\n const cmdName = byCode[t];\n\n switch (t) {\n case CommandCode.init:\n writer.authenticationOk();\n writer.parameterStatus('client_encoding', 'UTF8');\n writer.parameterStatus('DateStyle', 'ISO, MDY');\n writer.parameterStatus('integer_datetimes', 'on');\n writer.parameterStatus('server_encoding', 'UTF8');\n writer.parameterStatus('server_version', '12.5');\n writer.parameterStatus('TimeZone', 'UTC');\n\n return writer.readyForQuery();\n\n case CommandCode.parse:\n try {\n prepared = mem.prepare(cmd.query);\n if (!prepared) {\n return writer.emptyQuery();\n }\n } catch (e: any) {\n return writer.error(e);\n }\n return writer.parseComplete();\n case CommandCode.describe: {\n if (!prepared) {\n return writer.error(\"no prepared query\");\n }\n\n sendDescribe(prepared);\n return;\n }\n case CommandCode.bind: {\n if (!prepared) {\n return writer.error(\"no prepared query\");\n }\n try {\n bound = prepared.bind(cmd.values);\n } catch (e: any) {\n return writer.error(e);\n }\n return writer.bindComplete();\n }\n case CommandCode.execute: {\n if (!bound) {\n return writer.error(\"no bound query\");\n }\n sendResults(bound);\n return;\n }\n case CommandCode.sync:\n prepared = undefined;\n bound = undefined;\n // writer.readyForQuery();\n return;\n case CommandCode.flush:\n return;\n case CommandCode.query: {\n if (!cmd.query) {\n return writer.emptyQuery();\n }\n\n // handle transactions\n const qlow = cmd.query.trim().toLowerCase();\n switch (qlow) {\n case 'begin':\n runningTx = mem.db.data.fork();\n writer.commandComplete(qlow.toUpperCase());\n writer.readyForQuery();\n return;\n case 'commit':\n if (!runningTx) {\n return writer.error(\"no transaction to commit\");\n }\n runningTx.fullCommit();\n runningTx = undefined;\n writer.commandComplete(qlow.toUpperCase());\n writer.readyForQuery();\n return;\n case 'rollback':\n runningTx = undefined;\n writer.commandComplete(qlow.toUpperCase());\n writer.readyForQuery();\n return;\n }\n\n // simple query flow\n const prep = mem.prepare(cmd.query);\n sendDescribe(prep);\n const bound = prep.bind();\n sendResults(bound);\n return;\n }\n default:\n return writer.error(`pg-mem does not implement PG command ${cmdName}`);\n }\n } catch (e: any) {\n log(\"🔥 \", e);\n writer.error(e);\n }\n }));\n}","import { _Transaction } from './interfaces-private';\nimport { Map as ImMap, Set as ImSet } from 'immutable';\nimport { NotSupported, QueryError } from './interfaces';\n\nexport class Transaction implements _Transaction {\n private origData: ImMap<symbol, any>;\n private transientData: any = {};\n\n static root() {\n return new Transaction(null, ImMap());\n }\n\n get isChild() {\n return !!this.parent;\n }\n\n private constructor(private parent: Transaction | null, private data: ImMap<symbol, any>) {\n this.origData = data;\n }\n\n\n clone() {\n return new Transaction(null, this.data);\n }\n\n fork(): _Transaction {\n return new Transaction(this, this.data);\n }\n\n commit(): _Transaction {\n if (!this.parent) {\n return this;\n }\n if (this.parent.data !== this.origData) {\n throw new NotSupported('Concurrent transactions');\n }\n this.parent.data = this.data;\n return this.parent;\n }\n\n fullCommit() {\n const ret = this.commit();\n return ret.isChild\n ? ret.fullCommit()\n : ret;\n }\n\n rollback() {\n return this.parent ?? this;\n }\n\n delete(identity: symbol): void {\n this.data = this.data.delete(identity);\n }\n\n set<T>(identity: symbol, data: T): T {\n this.data = this.data.set(identity, data);\n return data;\n }\n\n get<T>(identity: symbol): T {\n return this.data.get(identity);\n }\n\n getMap<T extends ImMap<any, any>>(identity: symbol): T {\n let got = this.data.get(identity);\n if (!got) {\n this.data = this.data.set(identity, got = ImMap());\n }\n return got as any as T;\n }\n\n getSet<T>(identity: symbol): ImSet<T> {\n let got = this.data.get(identity);\n if (!got) {\n this.data = this.data.set(identity, got = ImSet());\n }\n return got as any;\n }\n\n setTransient<T>(identity: symbol, data: T): T {\n this.transientData[identity] = data as any;\n return data;\n }\n\n /** Set transient data, which will only exist within the scope of the current statement */\n getTransient<T>(identity: symbol): T {\n return this.transientData[identity] as T;\n }\n\n clearTransientData(): void {\n this.transientData = {};\n }\n}\n","import { IValue, _ISelection, _Transaction, _Explainer, _SelectExplanation, Stats, nil, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { LimitStatement } from 'pgsql-ast-parser';\nimport { buildValue } from '../parser/expression-builder';\nimport { withSelection } from '../parser/context';\n\nexport function buildLimit(on: _ISelection, limit: LimitStatement) {\n return withSelection(on, () => {\n const l = limit.limit && buildValue(limit.limit);\n const o = limit.offset && buildValue(limit.offset);\n return new LimitFilter(on, l, o);\n });\n}\n\nclass LimitFilter extends FilterBase {\n\n get index() {\n return null;\n }\n\n entropy(t: _Transaction) {\n return this.selection.entropy(t);\n }\n\n hasItem(raw: Row, t: _Transaction): boolean {\n return this.base.hasItem(raw, t);\n }\n\n constructor(private selection: _ISelection, private take: IValue | nil, private skip: IValue | nil) {\n super(selection);\n }\n\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n let skip = this.skip?.get(null, t) ?? 0;\n let take = this.take?.get(null, t) ?? Number.MAX_SAFE_INTEGER;\n if (take <= 0) {\n return;\n }\n for (const raw of this.selection.enumerate(t)) {\n if (skip > 0) {\n skip--;\n continue;\n }\n yield raw;\n take--;\n if (!take) {\n return;\n }\n }\n }\n\n\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'limit',\n take: this.take?.explain(e),\n skip: this.skip?.explain(e),\n on: this.selection.explain(e),\n };\n }\n}","import { IValue, _ISelection, _Transaction, _Explainer, _SelectExplanation, Stats, _IIndex, _IType, setId, getId, _IAggregation, Row } from '../interfaces-private';\nimport { DataSourceBase } from './transform-base';\nimport { ColumnNotFound, nil, NotSupported, QueryError } from '../interfaces';\nimport { columnEvaluator } from './selection';\nimport { reconciliateTypes } from '../datatypes/datatypes';\nimport { ExprRef } from 'pgsql-ast-parser';\nimport { colByName } from '../utils';\n\n// https://www.postgresql.org/docs/current/typeconv-union-case.html\nexport function buildUnion(left: _ISelection, right: _ISelection) {\n if (left.columns.length !== right.columns.length) {\n throw new QueryError('each UNION query must have the same number of columns');\n }\n const cols: UCol[] = Array(left.columns.length);\n for (let i = 0; i < left.columns.length; i++) {\n const l = left.columns[i];\n const r = right.columns[i];\n\n const type = reconciliateTypes([l, r], true, true);\n if (!type) {\n throw new QueryError(`UNION types ${l.type.name} (${l.id ?? '<unknown col>'}) and ${r.type.name} (${r.id ?? '<unknown col>'}) cannot be matched`);\n }\n cols[i] = {\n name: l.id ?? ('column' + i),\n type,\n lval: l.cast(type),\n rval: r.cast(type),\n };\n }\n return new Union(cols, left, right);\n}\n\ninterface UCol {\n name: string;\n type: _IType;\n lval: IValue;\n rval: IValue;\n}\n\nclass Union extends DataSourceBase {\n\n get isExecutionWithNoResult(): boolean {\n return false;\n }\n\n isAggregation(): this is _IAggregation {\n return false;\n }\n\n readonly columns: ReadonlyArray<IValue>;\n private readonly colsByName = new Map<string, IValue>();\n\n entropy(t: _Transaction) {\n return this.left.entropy(t) + this.right.entropy(t);\n }\n\n hasItem(raw: Row, t: _Transaction): boolean {\n return this.left.hasItem(raw, t) || this.right.hasItem(raw, t);\n }\n\n constructor(private cols: UCol[]\n , private left: _ISelection\n , private right: _ISelection) {\n super(left.ownerSchema);\n this.columns = cols.map(x => columnEvaluator(this, x.name, x.type));\n for (const c of this.columns) {\n this.colsByName.set(c.id!, c);\n }\n }\n\n stats(t: _Transaction): Stats | null {\n return null;\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n for (const raw of this.left.enumerate(t)) {\n const ret = {} as any;\n setId(ret, getId(raw));\n for (const c of this.cols) {\n ret[c.name] = c.lval.get(raw, t);\n }\n yield ret;\n }\n for (const raw of this.right.enumerate(t)) {\n const ret = {} as any;\n setId(ret, getId(raw));\n for (const c of this.cols) {\n ret[c.name] = c.rval.get(raw, t);\n }\n yield ret;\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'union',\n union: [this.left.explain(e),\n this.right.explain(e)],\n };\n }\n\n getColumn(column: string | ExprRef): IValue;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;\n getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil {\n return colByName(this.colsByName, column, nullIfNotFound);\n }\n\n getIndex(...forValue: IValue[]): _IIndex | null | undefined {\n // todo use indices on unions\n return null;\n }\n\n isOriginOf(a: IValue): boolean {\n return a.origin === this || this.left.isOriginOf(a);\n }\n}\n","import { Expr } from 'pgsql-ast-parser';\nimport { buildValue } from '../parser/expression-builder';\nimport { IValue, Row, Stats, _Explainer, _ISelection, _SelectExplanation, _Transaction } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport objectHash from 'object-hash';\nimport { withSelection } from '../parser/context';\n\nexport function buildDistinct(on: _ISelection, exprs?: Expr[]) {\n return withSelection(on, () => {\n const vals = exprs && exprs.length > 0\n ? exprs.map(v => buildValue(v))\n : on.columns\n return new Distinct(on, vals);\n });\n}\n\n\n// todo: use indices to optimize this (avoid iterating everything)\n\nclass Distinct extends FilterBase {\n\n get index() {\n return null;\n }\n\n entropy(t: _Transaction) {\n // cant foresight how many items will be filtered\n // => just asumme nothing will be.\n return this.base.entropy(t);\n }\n\n hasItem(raw: Row, t: _Transaction): boolean {\n return this.base.hasItem(raw, t);\n }\n\n constructor(selection: _ISelection, private exprs: ReadonlyArray<IValue>) {\n super(selection);\n }\n\n stats(t: _Transaction): Stats | null {\n return this.base.stats(t);\n }\n\n *enumerate(t: _Transaction): Iterable<Row> {\n const got = new Set();\n for (const i of this.base.enumerate(t)) {\n const vals = this.exprs.map(v => v.type.hash(v.get(i, t)));\n const hash = vals.length === 1 ? vals[0] : objectHash(vals);\n if (got.has(hash)) {\n continue;\n }\n got.add(hash);\n yield i;\n }\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'distinct',\n of: this.base.explain(e),\n };\n }\n}","import { IValue, _ISelection, _Transaction, _Explainer, _SelectExplanation, Stats, _IAggregation, Row } from '../interfaces-private';\nimport { FilterBase } from './transform-base';\nimport { OrderByStatement, ExprCall } from 'pgsql-ast-parser';\nimport { buildValue } from '../parser/expression-builder';\nimport { nullIsh } from '../utils';\nimport { withSelection } from '../parser/context';\n\nexport function buildOrderBy(on: _ISelection, order: OrderByStatement[]) {\n return new OrderBy(on, order);\n}\n\nclass OrderBy extends FilterBase implements _IAggregation {\n order: {\n by: IValue;\n order: 'ASC' | 'DESC';\n nullsLast: boolean;\n }[];\n\n get index() {\n return null;\n }\n\n isAggregation(): this is _IAggregation {\n return this.selection.isAggregation();\n }\n\n getAggregation(name: string, call: ExprCall): IValue {\n return this.asAggreg.getAggregation(name, call);\n }\n\n checkIfIsKey(got: IValue): IValue {\n return this.asAggreg.checkIfIsKey(got);\n }\n\n private get asAggreg(): _IAggregation {\n\n if (!this.selection.isAggregation()) {\n throw new Error('Not an aggregation');\n }\n return this.selection;\n }\n\n entropy(t: _Transaction) {\n const ret = this.selection.entropy(t);\n // sort algorithm is n*log(n)\n return ret * Math.log(ret + 1);\n }\n\n hasItem(raw: Row, t: _Transaction): boolean {\n return this.base.hasItem(raw, t);\n }\n\n constructor(private selection: _ISelection, order: OrderByStatement[]) {\n super(selection);\n this.order = withSelection(selection,\n () => order.map(x => {\n const order = x.order ?? 'ASC';\n return ({\n by: buildValue(x.by),\n order,\n nullsLast: order === 'ASC' ? x.nulls !== 'FIRST' : x.nulls === 'LAST',\n });\n }));\n }\n\n\n stats(t: _Transaction): Stats | null {\n return this.base.stats(t);\n }\n\n\n getIndex(...forValue: IValue[]) {\n // same index as underlying selection, given that ordering does not modify indices.\n return this.base.getIndex(...forValue);\n }\n\n enumerate(t: _Transaction): Iterable<Row> {\n const all = [...this.base.enumerate(t)];\n all.sort((a, b) => {\n for (const o of this.order) {\n const aval = o.by.get(a, t);\n const bval = o.by.get(b, t);\n const na = nullIsh(aval);\n const nb = nullIsh(bval);\n if (na && nb) {\n continue;\n }\n if (na || nb) {\n return nb === o.nullsLast ? -1 : 1;\n }\n if (o.by.type.equals(aval, bval)) {\n continue;\n }\n if (o.by.type.gt(aval, bval)) {\n return o.order === 'ASC' ? 1 : -1;\n }\n return o.order === 'ASC' ? -1 : 1;\n }\n return 0;\n });\n return all;\n }\n\n explain(e: _Explainer): _SelectExplanation {\n return {\n id: e.idFor(this),\n _: 'orderBy',\n of: this.selection.explain(e),\n };\n }\n}","import { Types } from '../../datatypes';\nimport { DataType, FunctionDefinition, _IDb, _ISchema } from '../../interfaces-private';\nimport { PgAttributeTable } from './pg-attribute-list';\nimport { PgClassListTable } from './pg-class';\nimport { PgConstraintTable } from './pg-constraints-list';\nimport { PgEnumTable } from './pg-enum-list';\nimport { PgIndexTable } from './pg-index-list';\nimport { PgNamespaceTable } from './pg-namespace-list';\nimport { PgSequencesTable } from './pg-sequences-list';\nimport { PgTypeTable } from './pg-type-list';\nimport { PgUserTable } from './pg-user-list';\nimport { allFunctions } from '../../functions';\nimport { PgRange } from './pg-range';\nimport { sqlSubstring } from '../../parser/expression-builder';\nimport { PgDatabaseTable } from './pg-database';\nimport { registerCommonOperators } from './binary-operators';\nimport { registerSqlFunctionLanguage } from './sql-function-language';\nimport { PgProc } from './pg-proc';\nimport { PgStatioUserTables } from './pg_statio_user_tables';\n\n\nexport function setupPgCatalog(db: _IDb) {\n const catalog: _ISchema = db.createSchema('pg_catalog');\n\n catalog._registerType(Types.bool)\n ._registerType(Types.citext)\n ._registerTypeSizeable(DataType.timestamp, Types.timestamp)\n ._registerTypeSizeable(DataType.timestamptz, Types.timestamptz)\n ._registerType(Types.uuid)\n ._registerType(Types.date)\n ._registerType(Types.time)\n ._registerType(Types.timetz)\n ._registerType(Types.jsonb)\n ._registerType(Types.regtype)\n ._registerType(Types.regclass)\n ._registerType(Types.json)\n ._registerType(Types.null)\n ._registerType(Types.float)\n ._registerType(Types.integer)\n ._registerType(Types.bigint)\n ._registerType(Types.bytea)\n ._registerType(Types.point)\n ._registerType(Types.line)\n ._registerType(Types.lseg)\n ._registerType(Types.box)\n ._registerType(Types.path)\n ._registerType(Types.polygon)\n ._registerType(Types.circle)\n ._registerType(Types.interval)\n ._registerType(Types.inet)\n ._registerType(Types.record([])) // hack to support functions with record input (see row_to_json UT)\n ._registerTypeSizeable(DataType.text, Types.text)\n\n new PgConstraintTable(catalog).register();\n new PgClassListTable(catalog).register();\n new PgNamespaceTable(catalog).register();\n new PgAttributeTable(catalog).register();\n new PgIndexTable(catalog).register();\n new PgTypeTable(catalog).register();\n new PgRange(catalog).register();\n new PgProc(catalog).register();\n new PgDatabaseTable(catalog).register();\n new PgStatioUserTables(catalog).register();\n new PgEnumTable(catalog).register();\n new PgSequencesTable(catalog).register();\n new PgUserTable(catalog).register();\n\n\n // this is an ugly hack...\n const tbl = catalog.declareTable({\n name: 'current_schema',\n fields: [\n { name: 'current_schema', type: Types.text() },\n ]\n }, true);\n tbl.insert({ current_schema: 'public' });\n tbl.setHidden().setReadonly();\n\n addFns(catalog, allFunctions);\n\n catalog.registerFunction({\n name: 'set_config',\n args: [Types.text(), Types.text(), Types.bool],\n returns: Types.text(),\n impure: true,\n implementation: (cfg: string, val: string, is_local: boolean) => {\n // todo - implement this... used to override search_path in dumps.\n // => have a dynamic search_path.\n // => not trivial du to the \"is_local\" arg\n // https://www.postgresql.org/docs/9.3/functions-admin.html\n return val;\n }\n });\n\n catalog.registerFunction({\n name: 'substring',\n args: [Types.text(), Types.integer],\n returns: Types.text(),\n implementation: sqlSubstring,\n })\n\n catalog.registerFunction({\n name: 'substring',\n args: [Types.text(), Types.integer, Types.integer],\n returns: Types.text(),\n implementation: sqlSubstring,\n });\n\n catalog.registerFunction({\n // required for Sequelize introspection\n name: 'pg_get_indexdef',\n args: [Types.integer],\n returns: Types.text(),\n implementation: (indexId: number) => {\n throw new Error('This stub implementation of \"pg_get_indexdef\" should not be called');\n },\n })\n\n\n db.getSchema('pg_catalog').registerFunction({\n name: 'col_description',\n args: [DataType.integer, DataType.integer],\n returns: DataType.text,\n implementation: x => 'Fake description provided by pg-mem',\n });\n\n registerCommonOperators(catalog);\n\n\n registerSqlFunctionLanguage(db);\n\n catalog.setReadonly()\n}\n\nfunction addFns(catalog: _ISchema, fns: FunctionDefinition[]) {\n for (const f of fns) {\n catalog.registerFunction(f);\n }\n}","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { nil, Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgAttributeTable extends ReadOnlyTable implements _ITable {\n\n _schema: Schema = {\n name: 'pg_attribute',\n fields: [\n { name: 'attrelid', type: Types.integer } // oid\n , { name: 'attname', type: Types.text() }\n , { name: 'atttypid', type: Types.integer } // oid\n , { name: 'attstattarget', type: Types.integer }\n , { name: 'attlen', type: Types.integer }\n , { name: 'attnum', type: Types.integer }\n , { name: 'attndims', type: Types.integer }\n , { name: 'attcacheoff', type: Types.integer }\n , { name: 'atttypmod', type: Types.integer }\n , { name: 'attbyval', type: Types.bool }\n , { name: 'attstorage', type: Types.text(1) } // char(1)\n , { name: 'attalign', type: Types.text(1) } // char(1)\n , { name: 'attnotnull', type: Types.bool }\n , { name: 'atthasdef', type: Types.bool }\n , { name: 'atthasmissing', type: Types.bool }\n , { name: 'attidntity', type: Types.text(1) } // char(1)\n , { name: 'attisdropped', type: Types.bool }\n , { name: 'attislocal', type: Types.bool }\n , { name: 'attinhcount', type: Types.integer }\n , { name: 'attcollation', type: Types.integer } // oid\n , { name: 'attacl', type: Types.jsonb } // aclitem[]\n , { name: 'attoptions', type: Types.text().asArray() }\n , { name: 'attfdwoptions', type: Types.text().asArray() }\n , { name: 'attmissingval', type: Types.jsonb }// anyarray\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n hasItem(value: any): boolean {\n return false;\n }\n\n getIndex(forValue: IValue): _IIndex | nil {\n return null;\n }\n\n}\n","import { _ITable, _ISelection, _IIndex, _IDb, _ISchema, _Transaction } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n// https://www.postgresql.org/docs/12/catalog-pg-class.html\n\nconst IS_SCHEMA = Symbol('_is_pg_classlist');\nexport class PgClassListTable extends ReadOnlyTable implements _ITable {\n\n get ownSymbol() {\n return IS_SCHEMA;\n }\n\n\n _schema: Schema = {\n name: 'pg_class',\n fields: [\n { name: 'oid', type: Types.integer } // hidden oid column\n , { name: 'relname', type: Types.text() }\n , { name: 'relnamespace', type: Types.integer } // oid\n , { name: 'reltype', type: Types.integer } // oid\n , { name: 'reloftype', type: Types.integer } // oid\n , { name: 'relowner', type: Types.integer } // oid\n , { name: 'relam', type: Types.integer } // oid\n , { name: 'relfilenode', type: Types.integer } // oid\n , { name: 'reltablespace', type: Types.integer } // oid\n , { name: 'relpages', type: Types.integer }\n , { name: 'reltyples', type: Types.integer }\n , { name: 'relallvisible', type: Types.integer }\n , { name: 'reltoastrelid', type: Types.integer }\n , { name: 'relhashindex', type: Types.bool }\n , { name: 'relisshared', type: Types.bool }\n , { name: 'relpersistence', type: Types.text(1) } // char(1)\n , { name: 'relkind', type: Types.text(1) } // char(1)\n , { name: 'relnatts', type: Types.integer }\n , { name: 'relchecks', type: Types.integer }\n , { name: 'relhasoids', type: Types.bool }\n , { name: 'relhasrules', type: Types.bool }\n , { name: 'relhastriggers', type: Types.bool }\n , { name: 'relhassubclass', type: Types.bool }\n , { name: 'relrowsecurity', type: Types.bool }\n , { name: 'relforcerowsecurity', type: Types.bool }\n , { name: 'relispopulated', type: Types.bool }\n , { name: 'relreplident', type: Types.text(1) } // char(1)\n , { name: 'relispartition', type: Types.bool }\n , { name: 'relrewrite', type: Types.integer } // oid\n , { name: 'relfrozenxid', type: Types.integer } // xid\n , { name: 'relminmxid', type: Types.integer } // xid\n , { name: 'relacl', type: Types.text() } // alitem[]\n , { name: 'reloptions', type: Types.text().asArray() } // text[]\n , { name: 'relpartbound', type: Types.jsonb } // pg_nod_tr\n ]\n };\n\n // private indexes: { [key: string]: _IIndex } = {\n // 'oid': new CustomIndex(this, {\n // get size() {\n // return this.size\n // },\n // column: this.selection.getColumn('oid'),\n // byColumnValue: (oid: string, t: _Transaction) => {\n // return [this.byOid(oid, t)]\n // }\n // }),\n // 'relname': new CustomIndex(this, {\n // get size() {\n // return this.size\n // },\n // column: this.selection.getColumn('relname'),\n // byColumnValue: (oid: string, t: _Transaction) => {\n // return [this.byRelName(oid, t)];\n // }\n // }),\n // }\n\n\n\n // private byOid(oid: string, t: _Transaction) {\n // const { type, id } = parseOid(oid);\n // switch (type) {\n // case 'table':\n // return this.makeTable(this.schema.getTable(id, true)!);\n // case 'index':\n // return null;\n // // return this.makeTable(this.db.getIndex(id, true));\n // default:\n // throw NotSupported.never(type);\n // }\n // }\n\n // private byRelName(name: string, t: _Transaction) {\n // return this.schema.getTable(name, true);\n // // ?? this.db.getIndex(name, true);\n // }\n\n entropy(t: _Transaction): number {\n return 0;\n }\n\n *enumerate() {\n // for (const t of this.db.listTables()) {\n // yield this.makeTable(t);\n // }\n }\n\n\n makeInedx(t: _IIndex): any {\n if (!t) {\n return null;\n }\n // relkind , i = index, S = sequence, t = TOAST table, v = view, m = materialized view, c = composite type, f = foreign table, p = partitioned table, I = partitioned index\n throw new Error('todo');\n }\n makeTable(t: _ITable): any {\n if (!t) {\n return null;\n }\n throw new Error('todo');\n // const ret = {\n // relname: t.name,\n // relnamespace: t instanceof MemoryTable\n // ? MAIN_NAMESPACE\n // : SCHEMA_NAMESPACE,\n // relkind: 'r', // r = ordinary table\n // [IS_SCHEMA]: true,\n // };\n // return setId(ret, '/schema/pg_class/table/' + t.name);\n }\n\n hasItem(value: any): boolean {\n return !!value?.[IS_SCHEMA];\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema, _Transaction } from '../../interfaces-private';\nimport { nil, Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { TableIndex } from '../table-index';\nimport { ReadOnlyTable } from '../readonly-table';\n\nconst IS_SCHEMA = Symbol('_is_pgconstraint');\nexport class PgConstraintTable extends ReadOnlyTable implements _ITable {\n\n get ownSymbol() {\n return IS_SCHEMA;\n }\n\n _schema: Schema = {\n name: 'pg_constraint',\n fields: [\n { name: 'oid', type: Types.integer } // hidden oid column\n , { name: 'conname', type: Types.text() } // <== 'name' type\n , { name: 'connamespace', type: Types.integer } // <== 'oid' type\n , { name: 'contype', type: Types.text(1) } // <== 'char(1)' type\n , { name: 'condeferrable', type: Types.bool }\n , { name: 'condeferred', type: Types.bool }\n , { name: 'convalidated', type: Types.bool }\n , { name: 'conrelid', type: Types.integer } // <== oid\n , { name: 'contypid', type: Types.integer } // <== oid\n , { name: 'conindid', type: Types.integer } // <== oid\n , { name: 'conparentid', type: Types.integer } // <== oid\n , { name: 'confrelid', type: Types.integer } // <== oid\n , { name: 'confupdtype', type: Types.text(1) } // <== 'char(1)' type\n , { name: 'confdeltype', type: Types.text(1) } // <== 'char(1)' type\n , { name: 'confmatchtype', type: Types.text(1) } // <== 'char(1)' type\n , { name: 'conislocal', type: Types.bool }\n , { name: 'coninhcount', type: Types.integer }\n , { name: 'connoinherit', type: Types.bool }\n , { name: 'conkey', type: Types.integer.asArray() }\n , { name: 'confkey', type: Types.integer.asArray() }\n , { name: 'conpfeqop', type: Types.integer.asArray() } // <== oid[]\n , { name: 'conppeqop', type: Types.integer.asArray() } // <== oid[]\n , { name: 'conffeqop', type: Types.integer.asArray() } // <== oid[]\n , { name: 'conexclop', type: Types.integer.asArray() } // <== oid[]\n , { name: 'conbin', type: Types.text() } // <== weird type\n , { name: 'consrc', type: Types.text() }\n ]\n };\n\n\n entropy(t: _Transaction): number {\n return this.db.listSchemas()\n .reduce((tot, s) => tot + s.tablesCount(t) * 10 * 3, 0);\n }\n\n *enumerate(t: _Transaction) {\n for (const schema of this.db.listSchemas()) {\n for (const it of schema.listTables(t)) {\n yield* this.itemsByTable(it, t);\n }\n }\n }\n\n make(table: _ITable, i: number, t: IValue): any {\n if (!t) {\n return null;\n }\n let ret = {};\n for (const { name } of this._schema.fields) {\n (ret as any)[name] = null;\n }\n\n ret = {\n ...ret,\n // table_catalog: 'pgmem',\n\n [IS_SCHEMA]: true,\n };\n setId(ret, `/schema/${table.ownerSchema.name}/pg_constraint/${table.name}/${i}`);\n return ret;\n }\n\n hasItem(value: any): boolean {\n return !!value?.[IS_SCHEMA];\n }\n\n getIndex(forValue: IValue): _IIndex | nil {\n if (forValue.id === 'table_name') {\n return new TableIndex(this, forValue);\n }\n return null;\n }\n\n}\n","import { _ITable, _ISelection, _IIndex, _IDb, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgEnumTable extends ReadOnlyTable implements _ITable {\n\n _schema: Schema = {\n name: 'pg_enum',\n fields: [\n { name: 'oid', type: Types.integer }\n , { name: 'enumtypid', type: Types.integer }\n , { name: 'enumsortorder', type: Types.integer }\n , { name: 'enumlabel', type: Types.text() }\n ]\n };\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n hasItem(value: any): boolean {\n return false;\n }\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgIndexTable extends ReadOnlyTable implements _ITable {\n\n _schema: Schema = {\n name: 'pg_index',\n fields: [\n { name: 'indexrelid', type: Types.integer } // oid\n , { name: 'indrelid', type: Types.integer } // oid\n , { name: 'indnatts', type: Types.integer }\n , { name: 'indnkyatts', type: Types.integer }\n , { name: 'indisunique', type: Types.bool }\n , { name: 'indisprimary', type: Types.bool }\n , { name: 'indisxclusion', type: Types.bool }\n , { name: 'indimmediate', type: Types.bool }\n , { name: 'indisclustered', type: Types.bool }\n , { name: 'indisvalid', type: Types.bool }\n , { name: 'indcheckxmin', type: Types.bool }\n , { name: 'indisready', type: Types.bool }\n , { name: 'indisliv', type: Types.bool }\n , { name: 'indisreplident', type: Types.bool }\n , { name: 'indkey', type: Types.integer.asArray() } // int2vector\n , { name: 'indcollation', type: Types.integer.asArray() } // oidvector\n , { name: 'indclass', type: Types.integer.asArray() } // oidvector\n , { name: 'indoption', type: Types.integer.asArray() } // int2vector\n , { name: 'indeexprs', type: Types.jsonb } // pg_node_tree\n , { name: 'indpred', type: Types.jsonb } // pg_node_tree\n ]\n };\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgNamespaceTable extends ReadOnlyTable implements _ITable {\n\n _schema: Schema = {\n name: 'pg_namespace',\n fields: [\n { name: 'oid', type: Types.integer } // hidden oid column\n , { name: 'nspname', type: Types.text() }\n , { name: 'nspowner', type: Types.integer } // oid\n , { name: 'nspacl', type: Types.jsonb } // aclitem[]\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n\n // yield {\n // oid: MAIN_NAMESPACE,\n // nspname: 'public',\n // nspowner: null,\n // nspacl: null,\n // };\n // yield {\n // oid: MAIN_NAMESPACE,\n // nspname: 'public',\n // nspowner: null,\n // nspacl: null,\n // };\n }\n\n\n\n hasItem(value: any): boolean {\n return false;\n }\n}\n","import { _ITable, _ISelection, _IIndex, _IDb, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgSequencesTable extends ReadOnlyTable implements _ITable {\n\n _schema: Schema = {\n name: 'pg_sequences',\n fields: [\n { name: 'schemaname', type: Types.text() }\n , { name: 'sequencename', type: Types.text() }\n , { name: 'sequenceowner', type: Types.integer }\n , { name: 'data_type', type: Types.text() }\n , { name: 'start_value', type: Types.integer }\n , { name: 'min_value', type: Types.integer }\n , { name: 'max_value', type: Types.integer }\n , { name: 'increment_by', type: Types.integer }\n , { name: 'cycle', type: Types.bool }\n , { name: 'cache_size', type: Types.integer }\n , { name: 'last_value', type: Types.integer }\n ]\n };\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n hasItem(value: any): boolean {\n return false;\n }\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgTypeTable extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'pg_type',\n fields: [\n { name: 'oid', type: Types.integer } // hiddn oid column\n , { name: 'typname', type: Types.text() }\n , { name: 'typnamespace', type: Types.integer } // oid\n , { name: 'typowner', type: Types.integer } // oid\n , { name: 'typlen', type: Types.integer }\n , { name: 'typbyval', type: Types.bool }\n , { name: 'typtype', type: Types.text(1) } // char(1)\n , { name: 'typcategory', type: Types.text(1) } // char(1)\n , { name: 'typispreferred', type: Types.bool }\n , { name: 'typisdefined', type: Types.bool }\n , { name: 'typdlim', type: Types.text(1) } // char(1)\n , { name: 'typrelid', type: Types.integer } // oid\n , { name: 'typelem', type: Types.integer } // oid\n , { name: 'typarray', type: Types.integer } // oid\n , { name: 'typinput', type: Types.text() } // regproc\n , { name: 'typoutput', type: Types.text() } // regproc\n , { name: 'typreceive', type: Types.text() } // regproc\n , { name: 'typsend', type: Types.text() } // regproc\n , { name: 'typmodin', type: Types.text() } // regproc\n , { name: 'typmodout', type: Types.text() } // regproc\n , { name: 'typanalyze', type: Types.text() } // regproc\n , { name: 'typalign', type: Types.text(1) } // char(1)\n , { name: 'typstorage', type: Types.text(1) } // char(1)\n , { name: 'typnotnull', type: Types.bool }\n , { name: 'typbasetype', type: Types.integer } //oid\n , { name: 'typtypmod', type: Types.integer }\n , { name: 'typndims', type: Types.integer }\n , { name: 'typcollation', type: Types.integer } // oid\n , { name: 'typdfaultbin', type: Types.text() } // pg_nod_tree\n , { name: 'typdefault', type: Types.text() }\n , { name: 'typacl', type: Types.jsonb }\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n","import { _ITable, _ISelection, _IIndex, _IDb, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class PgUserTable extends ReadOnlyTable implements _ITable {\n\n _schema: Schema = {\n name: 'pg_user',\n fields: [\n { name: 'usename', type: Types.text() }\n , { name: 'usesysid', type: Types.integer }\n , { name: 'usecreatedb', type: Types.bool }\n , { name: 'usesuper', type: Types.bool }\n , { name: 'usecatupd', type: Types.bool }\n , { name: 'userepl', type: Types.bool }\n , { name: 'usebypassrls', type: Types.bool }\n , { name: 'passwd', type: Types.text() }\n , { name: 'valuntil', type: Types.timestamptz() }\n , { name: 'useconfig', type: Types.jsonb }\n ]\n };\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n hasItem(value: any): boolean {\n return false;\n }\n}\n","import { stringFunctions } from './string';\nimport { dateFunctions } from './date';\nimport { systemFunctions } from './system';\nimport { sequenceFunctions } from './sequence-fns';\nimport { numberFunctions } from './numbers';\nimport { subqueryFunctions } from './subquery';\n\n\nexport const allFunctions = [\n ...stringFunctions\n , ... dateFunctions\n , ... systemFunctions\n , ... sequenceFunctions\n , ... numberFunctions\n , ... subqueryFunctions\n]\n","import { DataType, FunctionDefinition } from '../interfaces-private';\n\nexport const stringFunctions: FunctionDefinition[] = [\n {\n name: 'lower',\n args: [DataType.text],\n returns: DataType.text,\n implementation: (x: string) => x?.toLowerCase(),\n },\n {\n name: 'upper',\n args: [DataType.text],\n returns: DataType.text,\n implementation: (x: string) => x?.toUpperCase(),\n },\n {\n name: 'concat',\n args: [DataType.text],\n argsVariadic: DataType.text,\n returns: DataType.text,\n allowNullArguments: true,\n implementation: (...x: string[]) => x?.join(''),\n },\n {\n name: 'concat_ws',\n args: [DataType.text],\n argsVariadic: DataType.text,\n returns: DataType.text,\n allowNullArguments: true,\n implementation: (separator: string, ...x: string[]) => x?.join(separator),\n },\n]\n","import { FunctionDefinition } from '../interfaces';\nimport moment from 'moment';\nimport { DataType, QueryError } from '../interfaces-private';\nimport { nullIsh } from '../utils';\n\n\nexport const dateFunctions: FunctionDefinition[] = [\n {\n name: 'to_date',\n args: [DataType.text, DataType.text],\n returns: DataType.date,\n implementation: (data, format) => {\n if (nullIsh(data) || nullIsh(format)) {\n return null; // if one argument is null => null\n }\n const ret = moment.utc(data, format);\n if (!ret.isValid()) {\n throw new QueryError(`The text '${data}' does not match the date format ${format}`);\n }\n return ret.toDate();\n }\n },\n {\n name: 'now',\n returns: DataType.timestamptz,\n impure: true,\n implementation: () => new Date(),\n },\n];","import { Types } from '../datatypes';\nimport { FunctionDefinition } from '../interfaces';\n\nexport const systemFunctions: FunctionDefinition[] = [\n {\n // ugly hack...\n name: 'current_schema',\n returns: Types.text(),\n implementation: () => 'public',\n },\n {\n name: 'obj_description',\n args: [Types.regclass, Types.text()],\n returns: Types.null,\n implementation: () => null\n },\n]\n","import { executionCtx } from '../utils';\nimport { Types } from '../datatypes';\nimport { FunctionDefinition, QueryError } from '../interfaces';\nimport { asSeq, RegClass, _ISequence } from '../interfaces-private';\n\n// https://www.postgresql.org/docs/8.1/functions-sequence.html\n\nfunction getSeq(id: RegClass) {\n const { transaction, schema } = executionCtx();\n if (!transaction) {\n throw new QueryError('cannot query sequence value in this context');\n }\n return {\n t: transaction,\n seq: asSeq(schema.getObjectByRegOrName(id)),\n };\n}\nconst lastVal = Symbol();\nexport const sequenceFunctions: FunctionDefinition[] = [\n\n {\n name: 'nextval',\n args: [Types.regclass],\n returns: Types.integer,\n implementation: (seqId: RegClass) => {\n const { seq, t } = getSeq(seqId);\n const ret = seq.nextValue(t);\n t.set(lastVal, ret);\n return ret;\n },\n impure: true,\n },\n {\n name: 'currval',\n args: [Types.regclass],\n returns: Types.integer,\n implementation: (seqId: RegClass) => {\n const { seq, t } = getSeq(seqId);\n return seq.currentValue(t);\n },\n impure: true,\n },\n {\n name: 'lastval',\n returns: Types.integer,\n implementation: (seqId: RegClass) => {\n const { transaction } = executionCtx();\n if (!transaction) {\n throw new QueryError('cannot query lastval in this context');\n }\n return transaction.get<number>(lastVal);\n },\n impure: true,\n },\n {\n name: 'setval',\n args: [Types.regclass, Types.integer],\n returns: Types.integer,\n implementation: (seqId: RegClass, val: number) => {\n const { seq, t } = getSeq(seqId);\n if (typeof val !== 'number') {\n throw new QueryError('Invalid setval() value');\n }\n seq.setValue(t, val);\n return val;\n },\n impure: true,\n },\n {\n name: 'setval',\n args: [Types.regclass, Types.integer, Types.bool],\n returns: Types.integer,\n implementation: (seqId: RegClass, val: number, increase: boolean) => {\n const { seq, t } = getSeq(seqId);\n if (typeof val !== 'number') {\n throw new QueryError('Invalid setval() value');\n }\n seq.setValue(t, val, increase);\n return val;\n },\n impure: true,\n },\n]\n","import { DataType, FunctionDefinition } from \"../interfaces\";\n\nexport const numberFunctions: FunctionDefinition[] = [\n {\n name: 'greatest',\n args: [DataType.integer],\n argsVariadic: DataType.integer,\n returns: DataType.integer,\n implementation: (...args: number[]) => Math.max(...args),\n },\n {\n name: 'least',\n args: [DataType.integer],\n argsVariadic: DataType.integer,\n returns: DataType.integer,\n implementation: (...args: number[]) => Math.min(...args),\n },\n]","import { FunctionDefinition } from '../interfaces';\nimport { DataType } from '../interfaces-private';\n\nexport const subqueryFunctions: FunctionDefinition[] = [\n {\n name: 'exists',\n args: [DataType.integer],\n argsVariadic: DataType.integer,\n returns: DataType.bool,\n allowNullArguments: true,\n impure: true,\n implementation: (...items: number[]) => items?.some?.(Boolean) ?? false,\n },\n];\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n// https://www.postgresql.org/docs/13/catalog-pg-range.html\nexport class PgRange extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'pg_proc',\n fields: [\n // types might be wrong\n { name: 'oid', type: Types.integer }\n , { name: 'proname', type: Types.text() }\n , { name: 'pronamespace', type: Types.text() }\n , { name: 'pronamespace', type: Types.integer }\n , { name: 'proowner', type: Types.integer }\n , { name: 'prolang', type: Types.integer }\n , { name: 'procost', type: Types.integer }\n , { name: 'prorows', type: Types.integer }\n , { name: 'provariadic', type: Types.integer }\n , { name: 'prosupport', type: Types.text() }\n , { name: 'prokind', type: Types.text(1) }\n , { name: 'prosecdef', type: Types.bool }\n , { name: 'proleakproof', type: Types.bool }\n , { name: 'proisstrict', type: Types.bool }\n , { name: 'proretset', type: Types.bool }\n , { name: 'provolatile', type: Types.text(1) }\n , { name: 'pronargs', type: Types.integer }\n , { name: 'pronargdefaults', type: Types.integer }\n , { name: 'prorettype', type: Types.integer }\n , { name: 'proargtypes', type: Types.integer }\n , { name: 'proallargtypes', type: Types.integer.asArray() }\n , { name: 'proargmodes', type: Types.text().asArray() }\n , { name: 'proargnames', type: Types.text().asArray() }\n , { name: 'proargdefaults', type: Types.text() }\n , { name: 'protrftypes', type: Types.text() }\n , { name: 'prosrc', type: Types.text() }\n , { name: 'probin', type: Types.text() }\n , { name: 'prosqlbody', type: Types.text() }\n , { name: 'proconfig', type: Types.text().asArray() }\n , { name: 'proacl', type: Types.text().asArray() }\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n","import { _ITable, _ISelection, _IIndex, _IDb, _ISchema, _Transaction, setId } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n// https://www.postgresql.org/docs/12/catalog-pg-class.html\n\nconst IS_SCHEMA = Symbol('_is_pg_database');\nexport class PgDatabaseTable extends ReadOnlyTable implements _ITable {\n\n get ownSymbol() {\n return IS_SCHEMA;\n }\n\n\n _schema: Schema = {\n name: 'pg_database',\n fields: [\n { name: 'oid', type: Types.integer } // hidden oid column\n , { name: 'datname', type: Types.text() }\n , { name: 'datdba', type: Types.integer }\n , { name: 'encoding', type: Types.integer }\n , { name: 'datcollate', type: Types.text() }\n , { name: 'datctype', type: Types.text() }\n , { name: 'datistemplate', type: Types.bool }\n , { name: 'datlowconn', type: Types.bool }\n , { name: 'datconlimit', type: Types.integer }\n , { name: 'datlastsysoid', type: Types.integer }\n , { name: 'datfrozenxid', type: Types.integer }\n , { name: 'datminmxid', type: Types.integer }\n , { name: 'dattablespace', type: Types.integer }\n , { name: 'datacl', type: Types.jsonb }\n ]\n };\n\n entropy(t: _Transaction): number {\n return this.db.listSchemas().length;\n }\n\n *enumerate() {\n // this is 💩, whaterver...\n let i = 48593;\n for (const t of this.db.listSchemas()) {\n const ret = {\n oid: ++i,\n datname: t.name,\n [IS_SCHEMA]: true,\n };\n yield setId(ret, '/schema/pg_database/' + t.name);\n }\n }\n\n\n hasItem(value: any): boolean {\n return !!value?.[IS_SCHEMA];\n }\n}\n","import { _ISchema, QueryError } from '../../interfaces-private';\nimport { numbers, isInteger, dateTypes, Types, numberPriorities } from '../../datatypes';\nimport { intervalToSec, queryJson } from '../../utils';\nimport moment from 'moment';\n\nexport function registerCommonOperators(schema: _ISchema) {\n registerNumericOperators(schema);\n registerDatetimeOperators(schema);\n registerJsonOperators(schema);\n registerTextOperators(schema);\n}\n\nfunction* numberPairs() {\n for (const a of numbers) {\n for (const b of numbers) {\n yield [a, b, numberPriorities[a] < numberPriorities[b] ? b : a] as const;\n }\n }\n}\n\nfunction registerNumericOperators(schema: _ISchema) {\n // ======= \"+ - * /\" on numeric types =======\n for (const [left, right, returns] of numberPairs()) {\n schema.registerOperator({\n operator: '+',\n commutative: true,\n left,\n right,\n returns,\n implementation: (a, b) => a + b,\n });\n }\n for (const [left, right, returns] of numberPairs()) {\n schema.registerOperator({\n operator: '-',\n commutative: true,\n left,\n right,\n returns,\n implementation: (a, b) => a - b,\n });\n }\n\n for (const [left, right, returns] of numberPairs()) {\n schema.registerOperator({\n operator: '*',\n commutative: true,\n left,\n right,\n returns,\n implementation: (a, b) => a * b,\n });\n }\n\n for (const [left, right, returns] of numberPairs()) {\n schema.registerOperator({\n operator: '/',\n commutative: false,\n left,\n right,\n returns,\n implementation: isInteger(returns)\n ? ((a, b) => Math.trunc(a / b))\n : ((a, b) => a / b),\n });\n }\n}\n\n\nfunction registerDatetimeOperators(schema: _ISchema) {\n // ======= date \"-\" date =======\n schema.registerOperator({\n operator: '-',\n commutative: false,\n left: Types.date,\n right: Types.date,\n returns: Types.interval,\n implementation: (a, b) => moment(a).diff(moment(b), 'days'),\n })\n\n // ======= date/time \"+ -\" timestamp =======\n for (const dt of dateTypes) {\n for (const [operator, f] of [['+', 1], ['-', -1]] as const) {\n schema.registerOperator({\n operator,\n commutative: operator === '+',\n left: dt,\n right: Types.interval,\n returns: dt,\n implementation: (a, b) => moment(a).add(f * intervalToSec(b), 'seconds').toDate(),\n });\n }\n }\n\n // ==== date \"+ -\" integer (add days.. only works on dates, not timestamps)\n for (const [operator, f] of [['+', 1], ['-', -1]] as const) {\n schema.registerOperator({\n operator,\n commutative: operator === '+',\n left: Types.date,\n right: Types.integer,\n returns: Types.date,\n implementation: (a, b) => moment(a).add(f * b, 'days').toDate(),\n });\n }\n}\n\n\n\nfunction registerJsonOperators(schema: _ISchema) {\n // ======= \"json @> json\" query operator\n schema.registerOperator({\n operator: '@>',\n left: Types.jsonb,\n right: Types.jsonb,\n returns: Types.bool,\n implementation: (a, b) => queryJson(b, a),\n });\n\n // ======= \"json - text\" (remove key)\n schema.registerOperator({\n operator: '-',\n left: Types.jsonb,\n right: Types.text(),\n returns: Types.jsonb,\n implementation: (a, b) => {\n if (Array.isArray(a)) {\n return a.filter(x => x !== b);\n }\n if (typeof a === 'object') {\n const ret = { ...a };\n delete ret[b];\n return ret;\n }\n throw new QueryError('cannot delete from scalar', '22023');\n },\n });\n\n // ======= \"json - int\" (remove index)\n schema.registerOperator({\n operator: '-',\n left: Types.jsonb,\n right: Types.integer,\n returns: Types.jsonb,\n implementation: (a, b) => {\n if (Array.isArray(a)) {\n const ret = [...a];\n ret.splice(b, 1);\n return ret;\n }\n if (typeof a === 'object') {\n throw new QueryError('cannot delete from object using integer index', '22023');\n }\n throw new QueryError('cannot delete from scalar', '22023');\n },\n })\n}\n\n\nfunction registerTextOperators(schema: _ISchema) {\n // ======== \"text || text\" (concat text operator)\n schema.registerOperator({\n operator: '||',\n left: Types.text(),\n right: Types.text(),\n returns: Types.text(),\n implementation: (a, b) => a + b,\n })\n}\n","import { _IDb, _ISchema, _Transaction, _IType, IValue, _Explainer, _ISelection, setId, getId } from '../../interfaces-private';\nimport { parseSql } from '../../parser/parse-cache';\nimport { QueryError, NotSupported, DataType } from '../../interfaces';\nimport { Statement } from 'pgsql-ast-parser';\nimport { executionCtx as executionCtx, pushExecutionCtx, hasExecutionCtx, ExecCtx, randomString } from '../../utils';\nimport { SelectExec } from '../../execution/select';\nimport { withParameters } from '../../parser/context';\nimport { buildParameterList } from '../../evaluator';\nimport { StatementExec } from '../../execution/statement-exec';\nimport { ArrayType } from '../../datatypes';\nimport { RecordType } from '../../datatypes/t-record';\n\nlet execId = 0;\n\nexport function registerSqlFunctionLanguage(db: _IDb) {\n db.registerLanguage('sql', ({ code, schema: _schema, args, returns: _returns }) => {\n const schema = _schema as _ISchema;\n const returns = _returns as _IType;\n // parse SQL\n const _parsed = parseSql(code);\n let parsed: Statement;\n if (Array.isArray(_parsed)) {\n if (_parsed.length !== 1) {\n throw new QueryError(`Expected 1 statement in function, got ${_parsed.length}`);\n }\n parsed = _parsed[0];\n } else {\n parsed = _parsed;\n }\n switch (parsed.type) {\n case 'select':\n case 'union':\n case 'union all':\n case 'with':\n case 'with recursive':\n case 'values':\n break;\n default:\n throw new NotSupported(`Unsupported statement type in function: ${parsed.type}`);\n }\n\n // build parameter list\n const parameterList = buildParameterList('', args);\n\n\n // push and push parameters, and a new build context, to avoid leaking parent context in function body\n // ... then, visit & compile tree\n const statement = new StatementExec(schema, parsed, code);\n const executor = withParameters(parameterList, () => statement.compile());\n if (!(executor instanceof SelectExec)) {\n throw new NotSupported(`Unsupported statement type in function: ${parsed.type}`);\n }\n\n\n // todo: prepare statement here, to avoid optimization on each call.\n\n\n // get the result transformer, based on the expected function output type\n let transformResult: (values: any[], t: _Transaction, execId: string) => any;\n if (!returns || returns.primary === DataType.null) {\n // returns null\n transformResult = () => null;\n } else if (ArrayType.matches(returns) && RecordType.matches(returns.of)) {\n // returns a table\n const transformItem = returns.of.transformItemFrom(executor.selection);\n if (!transformItem) {\n throw new QueryError(`return type mismatch in function declared to return record`, '42P13');\n }\n transformResult = (v, t, eid) => v?.map(x => {\n return transformItem(x, t, eid);\n });\n } else {\n // returns a single value\n const cols = executor.selection.columns;\n if (cols.length !== 1 || !cols[0].type.canConvertImplicit(returns)) {\n throw new QueryError(`return type mismatch in function declared to return ${returns.name}`, '42P13');\n }\n const col = cols[0].cast(returns);\n transformResult = (v, t) => v[0] ? col.get(v[0], t) : null;\n }\n\n\n // return compiled function\n const implem = (...args: any[]) => {\n const exec: ExecCtx = hasExecutionCtx() ?\n {\n // if we have a parent execution context, use it.\n // except for parameter values, that will be re-bound.\n ...executionCtx(),\n parametersValues: args,\n } : {\n // else, create a brand new execution context.\n // that is used when a pure function is called with constant arguments:\n // => function call will be reduced to a constant based on the\n // db state at the time of the statement begining.\n schema,\n transaction: db.data,\n parametersValues: args,\n };\n const eid = 'fne' + execId++;\n // push a new execution context, to avoid leaking parent paramters in the function\n return pushExecutionCtx(exec, () => {\n const ret = executor.execute(exec.transaction);\n return transformResult(ret.result.rows, exec.transaction, eid);\n });\n };\n // hack to tell the expression visitor that\n // (implem as any)[fnAsSelectionColumns] = executor.selection.columns;\n return implem;\n });\n}\n\n// export const fnAsSelectionColumns = Symbol('asSelection');\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n// https://www.postgresql.org/docs/13/catalog-pg-range.html\nexport class PgProc extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'pg_range',\n fields: [\n { name: 'rngtypid', type: Types.integer } // oid\n , { name: 'rngsubtype', type: Types.integer } // oid\n , { name: 'rngcollation', type: Types.integer } // oid\n , { name: 'rngsubopc', type: Types.integer } // oid\n , { name: 'rngcanonical', type: Types.integer } // oid\n , { name: 'rngsubdiff', type: Types.integer } // oid\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n// https://www.postgresql.org/docs/13/catalog-pg-range.html\nconst IS_SCHEMA = Symbol('_is_pg_statio_user_tables');\nexport class PgStatioUserTables extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'pg_statio_user_tables',\n fields: [\n { name: 'relid', type: Types.integer } // oid\n , { name: 'schemaname', type: Types.text() }\n , { name: 'relname', type: Types.text() }\n , { name: 'heap_blks_read', type: Types.integer }\n , { name: 'heap_blks_hit', type: Types.integer }\n , { name: 'idx_blks_read', type: Types.integer }\n , { name: 'idx_blks_hit', type: Types.integer }\n , { name: 'toast_blks_read', type: Types.integer }\n , { name: 'toast_blks_hit', type: Types.integer }\n , { name: 'tidx_blks_read', type: Types.integer }\n , { name: 'tidx_blks_hit', type: Types.integer }\n\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n for (const t of this.db.public.listTables()) {\n yield {\n relid: t.reg.typeId,\n schemaname: 'public',\n relname: t.name,\n heap_blks_read: 0,\n heap_blks_hit: 0,\n idx_blks_read: 0,\n idx_blks_hit: 0,\n toast_blks_read: 0,\n toast_blks_hit: 0,\n tidx_blks_read: 0,\n tidx_blks_hit: 0,\n [IS_SCHEMA]: true,\n };\n }\n }\n\n\n\n hasItem(value: any): boolean {\n return value[IS_SCHEMA];\n }\n}\n","\nimport { _IDb, _ISchema } from '../../interfaces-private';\nimport { ColumnsListSchema } from './columns-list';\nimport { TablesSchema } from './table-list';\nimport { TableConstraints } from './table-constraints';\nimport { KeyColumnUsage } from './key-column-usage';\nimport { ConstraintColumnUsage } from './constraint-column-usage';\n\nexport function setupInformationSchema(db: _IDb) {\n const schema: _ISchema = db.createSchema('information_schema');\n\n // SELECT * FROM \"information_schema\".\"tables\" WHERE (\"table_schema\" = 'public' AND \"table_name\" = 'user')\n new TablesSchema(schema).register();\n new ColumnsListSchema(schema).register();\n new TableConstraints(schema).register();\n new KeyColumnUsage(schema).register();\n new ConstraintColumnUsage(schema).register();\n\n schema.setReadonly();\n}","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _Transaction, _ISchema } from '../../interfaces-private';\nimport { Schema, nil } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { TableIndex } from '../table-index';\nimport { ReadOnlyTable } from '../readonly-table';\n\nconst IS_SCHEMA = Symbol('_is_colmun');\nexport class ColumnsListSchema extends ReadOnlyTable implements _ITable {\n\n get ownSymbol() {\n return IS_SCHEMA;\n }\n\n _schema: Schema = {\n name: 'columns',\n fields: [\n { name: 'table_catalog', type: Types.text() }\n , { name: 'table_schema', type: Types.text() }\n , { name: 'table_name', type: Types.text() }\n , { name: 'column_name', type: Types.text() }\n , { name: 'ordinal_position', type: Types.integer }\n , { name: 'column_default', type: Types.text() }\n , { name: 'is_nullable', type: Types.text(3) }\n , { name: 'data_type', type: Types.text() }\n , { name: 'character_maximum_length', type: Types.integer }\n , { name: 'character_octet_length', type: Types.integer }\n , { name: 'numeric_precision', type: Types.integer }\n , { name: 'numeric_precision_radix', type: Types.integer }\n , { name: 'numeric_scale', type: Types.integer }\n , { name: 'datetime_precision', type: Types.integer }\n , { name: 'interval_type', type: Types.text() }\n , { name: 'interval_precision', type: Types.integer }\n , { name: 'character_set_catalog', type: Types.text() }\n , { name: 'character_set_schema', type: Types.text() }\n , { name: 'character_set_name', type: Types.text() }\n , { name: 'collation_catalog', type: Types.text() }\n , { name: 'collation_schema', type: Types.text() }\n , { name: 'collation_name', type: Types.text() }\n , { name: 'domain_catalog', type: Types.text() }\n , { name: 'domain_schema', type: Types.text() }\n , { name: 'domain_name', type: Types.text() }\n , { name: 'udt_catalog', type: Types.text() } // <====\n , { name: 'udt_schema', type: Types.text() } // <====\n , { name: 'udt_name', type: Types.text() } // <====\n , { name: 'scope_catalog', type: Types.text() } // <====\n , { name: 'scope_schema', type: Types.text() } // <====\n , { name: 'scope_name', type: Types.text() } // <====\n , { name: 'maximum_cardinality', type: Types.integer } // <====\n , { name: 'dtd_identifier', type: Types.integer } // <=== INDEX\n , { name: 'is_self_referencing', type: Types.text(3) }\n , { name: 'is_identity', type: Types.text(3) } // <==\n , { name: 'identity_generation', type: Types.text() } // <==\n , { name: 'identity_start', type: Types.text() } // <==\n , { name: 'identity_document', type: Types.text() } // <==\n , { name: 'identity_increment', type: Types.text() } // <==\n , { name: 'identity_maximum', type: Types.text() } // <==\n , { name: 'identity_minimum', type: Types.text() } // <==\n , { name: 'identity_cycle', type: Types.text(3) } // <==\n , { name: 'is_generated', type: Types.text() } // <==\n , { name: 'generation_expression', type: Types.text() } // <==\n , { name: 'is_updatable', type: Types.text(3) } // <==\n ]\n };\n\n\n entropy(t: _Transaction): number {\n return this.db.listSchemas()\n .reduce((tot, s) => tot + s.tablesCount(t) * 10, 0);\n }\n\n *enumerate(t: _Transaction) {\n for (const s of this.db.listSchemas()) {\n for (const it of s.listTables(t)) {\n yield* this.itemsByTable(it, t);\n }\n }\n }\n\n make(table: _ITable, i: number, t: IValue): any {\n if (!t) {\n return null;\n }\n let ret = {};\n for (const { name } of this._schema.fields) {\n (ret as any)[name] = null;\n }\n\n ret = {\n ...ret,\n table_catalog: 'pgmem',\n table_schema: 'public',\n table_name: table.name,\n column_name: t.id,\n ordinal_position: i,\n is_nullable: 'NO',\n data_type: t.type.primary, // <== todo\n numeric_precision: null, // <== todo\n numeric_precision_radix: null, // <== todo\n numeric_scale: null, // <== todo\n\n udt_catalog: 'pgmem',\n udt_schema: 'pg_catalog',\n udt_name: t.type.primary, // <== todo\n\n dtd_identifier: i, // <== todo\n\n is_self_referencing: 'NO',\n is_identity: 'NO',\n\n is_updatable: 'YES',\n is_generated: 'NEVER',\n identity_cycle: 'NO',\n\n\n [IS_SCHEMA]: true,\n };\n setId(ret, `/schema/${table.ownerSchema.name}/table/${table.name}/${i}`);\n return ret;\n }\n\n hasItem(value: any): boolean {\n return !!value?.[IS_SCHEMA];\n }\n\n getIndex(forValue: IValue): _IIndex | nil {\n if (forValue.id === 'table_name') {\n return new TableIndex(this, forValue);\n }\n return null;\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema, _Transaction, _Explainer } from '../../interfaces-private';\nimport { Schema, nil } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { TableIndex } from '../table-index';\nimport { ReadOnlyTable } from '../readonly-table';\n\nconst IS_SCHEMA = Symbol('_is_schema');\nexport class TablesSchema extends ReadOnlyTable implements _ITable {\n\n get ownSymbol() {\n return IS_SCHEMA;\n }\n\n isOriginOf(v: IValue): boolean {\n return v.origin === this || v.origin === this.selection;\n }\n\n _schema: Schema = {\n name: 'tables',\n fields: [\n { name: 'table_catalog', type: Types.text() }\n , { name: 'table_schema', type: Types.text() }\n , { name: 'table_name', type: Types.text() }\n , { name: 'table_type', type: Types.text() }\n , { name: 'self_referencing_column_name', type: Types.text() }\n , { name: 'reference_generation', type: Types.text() }\n , { name: 'user_defined_type_catalog', type: Types.text() }\n , { name: 'user_defined_type_schema', type: Types.text() }\n , { name: 'user_defined_type_name', type: Types.text() }\n , { name: 'is_insertable_into', type: Types.text(3) }\n , { name: 'is_typed', type: Types.text(3) }\n , { name: 'commit_action', type: Types.text() }\n ]\n };\n\n entropy(t: _Transaction): number {\n return this.db.listSchemas()\n .reduce((tot, s) => tot + s.tablesCount(t), 0);\n }\n\n *enumerate(t: _Transaction) {\n for (const s of this.db.listSchemas()) {\n for (const it of s.listTables(t)) {\n yield this.make(it);\n }\n }\n }\n\n make(t: _ITable): any {\n if (!t) {\n return null;\n }\n const ret = {\n table_catalog: 'pgmem',\n table_schema: 'public',\n table_name: t.name,\n table_type: 'BASE TABLE',\n self_referencing_column_name: null,\n reference_generation: null,\n user_defined_type_catalog: null,\n user_defined_type_schema: null,\n user_defined_type_name: null,\n is_insertable_into: 'YES',\n is_typed: 'NO',\n commit_action: null,\n [IS_SCHEMA]: true,\n };\n setId(ret, '/schema/table/' + t.name);\n return ret;\n }\n\n hasItem(value: any): boolean {\n return !!value?.[IS_SCHEMA];\n }\n\n getIndex(forValue: IValue): _IIndex | nil {\n if (forValue?.id === 'table_name') {\n return new TableIndex(this, forValue);\n }\n return null;\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n// https://www.postgresql.org/docs/13/catalog-pg-range.html\nexport class TableConstraints extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'table_constraints',\n fields: [\n { name: 'constraint_catalog', type: Types.text() }\n , { name: 'constraint_schema', type: Types.text() }\n , { name: 'constraint_name', type: Types.text() }\n , { name: 'table_catalog', type: Types.text() }\n , { name: 'table_schema', type: Types.text() }\n , { name: 'table_name', type: Types.text() }\n , { name: 'constraint_type', type: Types.text() }\n , { name: 'is_deferrable', type: Types.bool }\n , { name: 'initially_deferred', type: Types.bool }\n , { name: 'enforced', type: Types.bool }\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\n\nexport class KeyColumnUsage extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'key_column_usage',\n fields: [\n { name: 'constraint_catalog', type: Types.text() }\n , { name: 'constraint_schema', type: Types.text() }\n , { name: 'constraint_name', type: Types.text() }\n , { name: 'table_catalog', type: Types.text() }\n , { name: 'table_schema', type: Types.text() }\n , { name: 'table_name', type: Types.text() }\n , { name: 'column_name', type: Types.text() }\n , { name: 'ordinal_position', type: Types.integer }\n , { name: 'position_in_unique_constraint', type: Types.integer }\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n","import { _ITable, _ISelection, IValue, _IIndex, _IDb, IndexKey, setId, _ISchema } from '../../interfaces-private';\nimport { Schema } from '../../interfaces';\nimport { Types } from '../../datatypes';\nimport { ReadOnlyTable } from '../readonly-table';\n\nexport class ConstraintColumnUsage extends ReadOnlyTable implements _ITable {\n\n\n _schema: Schema = {\n name: 'constraint_column_usage',\n fields: [\n { name: 'constraint_catalog', type: Types.text() }\n , { name: 'constraint_schema', type: Types.text() }\n , { name: 'constraint_name', type: Types.text() }\n\n , { name: 'table_catalog', type: Types.text() }\n , { name: 'table_schema', type: Types.text() }\n , { name: 'table_name', type: Types.text() }\n\n , { name: 'column_name', type: Types.text() }\n ]\n };\n\n\n entropy(): number {\n return 0;\n }\n\n *enumerate() {\n }\n\n\n hasItem(value: any): boolean {\n return false;\n }\n\n}\n"],"sourceRoot":""}
|