@minnowdb/core 0.2.1 → 0.4.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 +23 -32
- package/dist/block-format/block.d.ts +32 -13
- package/dist/block-format/block.js +179 -55
- package/dist/block-format/checksum.d.ts +2 -1
- package/dist/block-format/checksum.js +5 -2
- package/dist/block-format/codecs.d.ts +7 -2
- package/dist/block-format/codecs.js +53 -12
- package/dist/block-format/column.d.ts +3 -2
- package/dist/block-format/column.js +96 -30
- package/dist/block-format/index.d.ts +2 -2
- package/dist/block-format/index.js +2 -2
- package/dist/block-format/physical.d.ts +8 -2
- package/dist/block-format/physical.js +14 -6
- package/dist/block-format/types.d.ts +7 -3
- package/dist/block-format/types.js +0 -1
- package/dist/block-format/unicode.d.ts +11 -0
- package/dist/block-format/unicode.js +46 -0
- package/dist/date-value.d.ts +15 -0
- package/dist/date-value.js +64 -0
- package/dist/engine/artifact-cache.d.ts +2 -1
- package/dist/engine/artifact-cache.js +5 -1
- package/dist/engine/batch.d.ts +11 -3
- package/dist/engine/batch.js +17 -7
- package/dist/engine/buffered-writer.d.ts +2 -1
- package/dist/engine/buffered-writer.js +34 -9
- package/dist/engine/cache-limits.d.ts +25 -0
- package/dist/engine/cache-limits.js +25 -0
- package/dist/engine/catalog.d.ts +24 -5
- package/dist/engine/catalog.js +34 -7
- package/dist/engine/client.d.ts +29 -7
- package/dist/engine/client.js +216 -40
- package/dist/engine/database.d.ts +224 -39
- package/dist/engine/database.js +7475 -1539
- package/dist/engine/defaults.d.ts +4 -8
- package/dist/engine/defaults.js +46 -22
- package/dist/engine/errors.d.ts +19 -1
- package/dist/engine/errors.js +32 -2
- package/dist/engine/fts.d.ts +0 -6
- package/dist/engine/fts.js +41 -14
- package/dist/engine/group-index.d.ts +0 -1
- package/dist/engine/group-index.js +6 -11
- package/dist/engine/index.d.ts +16 -10
- package/dist/engine/index.js +12 -9
- package/dist/engine/join-index.d.ts +0 -1
- package/dist/engine/join-index.js +2 -2
- package/dist/engine/keyed-live.d.ts +57 -0
- package/dist/engine/keyed-live.js +226 -0
- package/dist/engine/live-api.d.ts +4 -0
- package/dist/engine/live-api.js +4 -0
- package/dist/engine/live.d.ts +43 -26
- package/dist/engine/live.js +504 -126
- package/dist/engine/memory.d.ts +2 -1
- package/dist/engine/memory.js +3 -2
- package/dist/engine/optimizer.d.ts +0 -1
- package/dist/engine/optimizer.js +262 -27
- package/dist/engine/query-api.d.ts +3 -0
- package/dist/engine/query-api.js +3 -0
- package/dist/engine/query-cache.d.ts +1 -2
- package/dist/engine/query-cache.js +7 -5
- package/dist/engine/query.d.ts +134 -29
- package/dist/engine/query.js +1668 -372
- package/dist/engine/result-wire.d.ts +0 -1
- package/dist/engine/result-wire.js +2 -2
- package/dist/engine/schema-wire.d.ts +6 -3
- package/dist/engine/schema-wire.js +40 -34
- package/dist/engine/schema.d.ts +156 -80
- package/dist/engine/schema.js +570 -108
- package/dist/engine/sort-keys.d.ts +4 -4
- package/dist/engine/sort-keys.js +44 -29
- package/dist/engine/sql-domains.d.ts +31 -0
- package/dist/engine/sql-domains.js +585 -0
- package/dist/engine/sql-driver.d.ts +19 -0
- package/dist/engine/sql-driver.js +1 -0
- package/dist/engine/sql-json.d.ts +7 -9
- package/dist/engine/sql-json.js +75 -15
- package/dist/engine/sql-semantics.d.ts +8 -3
- package/dist/engine/sql-semantics.js +458 -30
- package/dist/engine/typed-live.d.ts +67 -0
- package/dist/engine/typed-live.js +349 -0
- package/dist/engine/vector.d.ts +12 -2
- package/dist/engine/vector.js +635 -119
- package/dist/engine/worker-host.d.ts +9 -2
- package/dist/engine/worker-host.js +620 -152
- package/dist/engine/worker.d.ts +0 -1
- package/dist/engine/worker.js +3 -3
- package/dist/engine/write-block-planner.d.ts +18 -0
- package/dist/engine/write-block-planner.js +112 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/plan/index.d.ts +3 -4
- package/dist/plan/index.js +3 -4
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/indexeddb.d.ts +99 -51
- package/dist/storage/indexeddb.js +13448 -2660
- package/dist/storage/memory.d.ts +64 -57
- package/dist/storage/memory.js +1042 -128
- package/dist/storage/opfs/files.d.ts +18 -7
- package/dist/storage/opfs/files.js +115 -28
- package/dist/storage/opfs/index.d.ts +1 -1
- package/dist/storage/opfs/index.js +1 -1
- package/dist/storage/opfs/leader.d.ts +409 -75
- package/dist/storage/opfs/leader.js +4621 -650
- package/dist/storage/opfs/rpc.d.ts +15 -3
- package/dist/storage/opfs/rpc.js +224 -2
- package/dist/storage/opfs/snapshot-ledger.d.ts +40 -0
- package/dist/storage/opfs/snapshot-ledger.js +281 -0
- package/dist/storage/opfs/store.d.ts +33 -99
- package/dist/storage/opfs/store.js +453 -364
- package/dist/storage/persistence.d.ts +37 -0
- package/dist/storage/persistence.js +78 -0
- package/dist/storage/snapshot-stream.d.ts +24 -0
- package/dist/storage/snapshot-stream.js +897 -0
- package/dist/storage/snapshot.d.ts +9 -85
- package/dist/storage/snapshot.js +33 -265
- package/dist/storage/toolkit/extents.d.ts +41 -7
- package/dist/storage/toolkit/extents.js +402 -39
- package/dist/storage/toolkit/index.d.ts +4 -5
- package/dist/storage/toolkit/index.js +28 -4
- package/dist/storage/toolkit/record-core.d.ts +182 -55
- package/dist/storage/toolkit/record-core.js +6158 -1331
- package/dist/storage/toolkit/sync-file.d.ts +10 -1
- package/dist/storage/toolkit/sync-file.js +50 -2
- package/dist/storage/toolkit/wal.d.ts +23 -5
- package/dist/storage/toolkit/wal.js +89 -27
- package/dist/storage/toolkit/wire.d.ts +15 -2
- package/dist/storage/toolkit/wire.js +199 -10
- package/dist/storage/types.d.ts +1439 -204
- package/dist/storage/types.js +1745 -141
- package/dist/testing/block-store-conformance.d.ts +0 -1
- package/dist/testing/block-store-conformance.js +1009 -119
- package/dist/testing/index.d.ts +46 -26
- package/dist/testing/index.js +112 -57
- package/dist/testing/opfs-shim.d.ts +13 -3
- package/dist/testing/opfs-shim.js +40 -6
- package/dist/testing/simulator.d.ts +97 -0
- package/dist/testing/simulator.js +591 -0
- package/dist/testing/sqllogictest.d.ts +89 -0
- package/dist/testing/sqllogictest.js +434 -0
- package/dist/transactions/index.d.ts +92 -16
- package/dist/transactions/index.js +1074 -236
- package/dist/worker-protocol/index.d.ts +3 -2
- package/dist/worker-protocol/index.js +2 -5
- package/package.json +53 -3
- package/postgres-feature-profile.json +223 -0
- package/sql-feature-matrix.json +172 -252
- package/dist/block-format/block.d.ts.map +0 -1
- package/dist/block-format/block.js.map +0 -1
- package/dist/block-format/checksum.d.ts.map +0 -1
- package/dist/block-format/checksum.js.map +0 -1
- package/dist/block-format/codecs.d.ts.map +0 -1
- package/dist/block-format/codecs.js.map +0 -1
- package/dist/block-format/column.d.ts.map +0 -1
- package/dist/block-format/column.js.map +0 -1
- package/dist/block-format/index.d.ts.map +0 -1
- package/dist/block-format/index.js.map +0 -1
- package/dist/block-format/physical.d.ts.map +0 -1
- package/dist/block-format/physical.js.map +0 -1
- package/dist/block-format/types.d.ts.map +0 -1
- package/dist/block-format/types.js.map +0 -1
- package/dist/engine/artifact-cache.d.ts.map +0 -1
- package/dist/engine/artifact-cache.js.map +0 -1
- package/dist/engine/batch.d.ts.map +0 -1
- package/dist/engine/batch.js.map +0 -1
- package/dist/engine/buffered-writer.d.ts.map +0 -1
- package/dist/engine/buffered-writer.js.map +0 -1
- package/dist/engine/catalog.d.ts.map +0 -1
- package/dist/engine/catalog.js.map +0 -1
- package/dist/engine/client.d.ts.map +0 -1
- package/dist/engine/client.js.map +0 -1
- package/dist/engine/coordinator.d.ts +0 -17
- package/dist/engine/coordinator.d.ts.map +0 -1
- package/dist/engine/coordinator.js +0 -60
- package/dist/engine/coordinator.js.map +0 -1
- package/dist/engine/database.d.ts.map +0 -1
- package/dist/engine/database.js.map +0 -1
- package/dist/engine/defaults.d.ts.map +0 -1
- package/dist/engine/defaults.js.map +0 -1
- package/dist/engine/errors.d.ts.map +0 -1
- package/dist/engine/errors.js.map +0 -1
- package/dist/engine/fts.d.ts.map +0 -1
- package/dist/engine/fts.js.map +0 -1
- package/dist/engine/group-index.d.ts.map +0 -1
- package/dist/engine/group-index.js.map +0 -1
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/join-index.d.ts.map +0 -1
- package/dist/engine/join-index.js.map +0 -1
- package/dist/engine/live.d.ts.map +0 -1
- package/dist/engine/live.js.map +0 -1
- package/dist/engine/memory.d.ts.map +0 -1
- package/dist/engine/memory.js.map +0 -1
- package/dist/engine/optimizer.d.ts.map +0 -1
- package/dist/engine/optimizer.js.map +0 -1
- package/dist/engine/query-cache.d.ts.map +0 -1
- package/dist/engine/query-cache.js.map +0 -1
- package/dist/engine/query.d.ts.map +0 -1
- package/dist/engine/query.js.map +0 -1
- package/dist/engine/result-wire.d.ts.map +0 -1
- package/dist/engine/result-wire.js.map +0 -1
- package/dist/engine/schema-wire.d.ts.map +0 -1
- package/dist/engine/schema-wire.js.map +0 -1
- package/dist/engine/schema.d.ts.map +0 -1
- package/dist/engine/schema.js.map +0 -1
- package/dist/engine/sort-keys.d.ts.map +0 -1
- package/dist/engine/sort-keys.js.map +0 -1
- package/dist/engine/sql-json.d.ts.map +0 -1
- package/dist/engine/sql-json.js.map +0 -1
- package/dist/engine/sql-semantics.d.ts.map +0 -1
- package/dist/engine/sql-semantics.js.map +0 -1
- package/dist/engine/vector.d.ts.map +0 -1
- package/dist/engine/vector.js.map +0 -1
- package/dist/engine/worker-host.d.ts.map +0 -1
- package/dist/engine/worker-host.js.map +0 -1
- package/dist/engine/worker.d.ts.map +0 -1
- package/dist/engine/worker.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/plan/index.d.ts.map +0 -1
- package/dist/plan/index.js.map +0 -1
- package/dist/storage/fixture-shape.d.ts +0 -42
- package/dist/storage/fixture-shape.d.ts.map +0 -1
- package/dist/storage/fixture-shape.js +0 -146
- package/dist/storage/fixture-shape.js.map +0 -1
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/indexeddb.d.ts.map +0 -1
- package/dist/storage/indexeddb.js.map +0 -1
- package/dist/storage/memory.d.ts.map +0 -1
- package/dist/storage/memory.js.map +0 -1
- package/dist/storage/opfs/files.d.ts.map +0 -1
- package/dist/storage/opfs/files.js.map +0 -1
- package/dist/storage/opfs/index.d.ts.map +0 -1
- package/dist/storage/opfs/index.js.map +0 -1
- package/dist/storage/opfs/leader.d.ts.map +0 -1
- package/dist/storage/opfs/leader.js.map +0 -1
- package/dist/storage/opfs/rpc.d.ts.map +0 -1
- package/dist/storage/opfs/rpc.js.map +0 -1
- package/dist/storage/opfs/store.d.ts.map +0 -1
- package/dist/storage/opfs/store.js.map +0 -1
- package/dist/storage/snapshot.d.ts.map +0 -1
- package/dist/storage/snapshot.js.map +0 -1
- package/dist/storage/toolkit/extents.d.ts.map +0 -1
- package/dist/storage/toolkit/extents.js.map +0 -1
- package/dist/storage/toolkit/index.d.ts.map +0 -1
- package/dist/storage/toolkit/index.js.map +0 -1
- package/dist/storage/toolkit/record-core.d.ts.map +0 -1
- package/dist/storage/toolkit/record-core.js.map +0 -1
- package/dist/storage/toolkit/sync-file.d.ts.map +0 -1
- package/dist/storage/toolkit/sync-file.js.map +0 -1
- package/dist/storage/toolkit/wal.d.ts.map +0 -1
- package/dist/storage/toolkit/wal.js.map +0 -1
- package/dist/storage/toolkit/wire.d.ts.map +0 -1
- package/dist/storage/toolkit/wire.js.map +0 -1
- package/dist/storage/types.d.ts.map +0 -1
- package/dist/storage/types.js.map +0 -1
- package/dist/testing/block-store-conformance.d.ts.map +0 -1
- package/dist/testing/block-store-conformance.js.map +0 -1
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js.map +0 -1
- package/dist/testing/opfs-shim.d.ts.map +0 -1
- package/dist/testing/opfs-shim.js.map +0 -1
- package/dist/testing/seeds.d.ts +0 -11
- package/dist/testing/seeds.d.ts.map +0 -1
- package/dist/testing/seeds.js +0 -50
- package/dist/testing/seeds.js.map +0 -1
- package/dist/transactions/index.d.ts.map +0 -1
- package/dist/transactions/index.js.map +0 -1
- package/dist/worker-protocol/index.d.ts.map +0 -1
- package/dist/worker-protocol/index.js.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const protocolVersion: 2;
|
|
2
|
-
|
|
2
|
+
/** Outstanding request/response pairs retained by either side of one database RPC connection. */
|
|
3
|
+
export declare const MAX_DATABASE_RPC_IN_FLIGHT = 256;
|
|
4
|
+
export type WorkerOperation = "benchmark" | "cancelBenchmark" | "memorySample" | "datasetList" | "datasetCreate" | "datasetDelete" | "runQuery" | "suiteReference" | "suiteWrite" | "suiteFeatureMatrix" | "suiteLive";
|
|
3
5
|
export interface WorkerRequest<T = unknown> {
|
|
4
6
|
version: typeof protocolVersion;
|
|
5
7
|
requestId: string;
|
|
@@ -81,4 +83,3 @@ export declare function rpcEvent(handleId: string, event: string, payload: unkno
|
|
|
81
83
|
export declare function parseRpcRequest(value: unknown): RpcRequest | null;
|
|
82
84
|
/** Narrows an incoming message to an RPC response; returns null for non-RPC traffic. */
|
|
83
85
|
export declare function parseRpcResponse(value: unknown): RpcResponse | null;
|
|
84
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export const protocolVersion = 2;
|
|
2
|
+
/** Outstanding request/response pairs retained by either side of one database RPC connection. */
|
|
3
|
+
export const MAX_DATABASE_RPC_IN_FLIGHT = 256;
|
|
2
4
|
export function parseRequest(value) {
|
|
3
5
|
if (typeof value !== "object" || value === null)
|
|
4
6
|
throw new TypeError("Request must be an object");
|
|
@@ -98,10 +100,6 @@ export function parseRpcResponse(value) {
|
|
|
98
100
|
}
|
|
99
101
|
function isOperation(value) {
|
|
100
102
|
return [
|
|
101
|
-
"ping",
|
|
102
|
-
"writeBlock",
|
|
103
|
-
"readBlock",
|
|
104
|
-
"publishManifest",
|
|
105
103
|
"benchmark",
|
|
106
104
|
"cancelBenchmark",
|
|
107
105
|
"memorySample",
|
|
@@ -115,4 +113,3 @@ function isOperation(value) {
|
|
|
115
113
|
"suiteLive",
|
|
116
114
|
].includes(String(value));
|
|
117
115
|
}
|
|
118
|
-
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minnowdb/core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "A columnar SQL
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "A columnar SQL database for the browser: PostgreSQL-style SQL over durable IndexedDB or OPFS data, with no server or WebAssembly module.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Eric Wilhite",
|
|
7
7
|
"homepage": "https://minnowdb.com/docs/",
|
|
@@ -41,14 +41,58 @@
|
|
|
41
41
|
"types": "./dist/engine/client.d.ts",
|
|
42
42
|
"default": "./dist/engine/client.js"
|
|
43
43
|
},
|
|
44
|
+
"./query": {
|
|
45
|
+
"types": "./dist/engine/query-api.d.ts",
|
|
46
|
+
"default": "./dist/engine/query-api.js"
|
|
47
|
+
},
|
|
48
|
+
"./live": {
|
|
49
|
+
"types": "./dist/engine/live-api.d.ts",
|
|
50
|
+
"default": "./dist/engine/live-api.js"
|
|
51
|
+
},
|
|
52
|
+
"./schema": {
|
|
53
|
+
"types": "./dist/engine/schema.d.ts",
|
|
54
|
+
"default": "./dist/engine/schema.js"
|
|
55
|
+
},
|
|
56
|
+
"./schema-wire": {
|
|
57
|
+
"types": "./dist/engine/schema-wire.d.ts",
|
|
58
|
+
"default": "./dist/engine/schema-wire.js"
|
|
59
|
+
},
|
|
44
60
|
"./worker": {
|
|
45
61
|
"types": "./dist/engine/worker.d.ts",
|
|
46
62
|
"default": "./dist/engine/worker.js"
|
|
47
63
|
},
|
|
64
|
+
"./worker-host": {
|
|
65
|
+
"types": "./dist/engine/worker-host.d.ts",
|
|
66
|
+
"default": "./dist/engine/worker-host.js"
|
|
67
|
+
},
|
|
48
68
|
"./storage": {
|
|
49
69
|
"types": "./dist/storage/index.d.ts",
|
|
50
70
|
"default": "./dist/storage/index.js"
|
|
51
71
|
},
|
|
72
|
+
"./storage/contracts": {
|
|
73
|
+
"types": "./dist/storage/types.d.ts",
|
|
74
|
+
"default": "./dist/storage/types.js"
|
|
75
|
+
},
|
|
76
|
+
"./storage/snapshots": {
|
|
77
|
+
"types": "./dist/storage/snapshot.d.ts",
|
|
78
|
+
"default": "./dist/storage/snapshot.js"
|
|
79
|
+
},
|
|
80
|
+
"./storage/indexeddb": {
|
|
81
|
+
"types": "./dist/storage/indexeddb.d.ts",
|
|
82
|
+
"default": "./dist/storage/indexeddb.js"
|
|
83
|
+
},
|
|
84
|
+
"./storage/memory": {
|
|
85
|
+
"types": "./dist/storage/memory.d.ts",
|
|
86
|
+
"default": "./dist/storage/memory.js"
|
|
87
|
+
},
|
|
88
|
+
"./storage/opfs": {
|
|
89
|
+
"types": "./dist/storage/opfs/index.d.ts",
|
|
90
|
+
"default": "./dist/storage/opfs/index.js"
|
|
91
|
+
},
|
|
92
|
+
"./storage/persistence": {
|
|
93
|
+
"types": "./dist/storage/persistence.d.ts",
|
|
94
|
+
"default": "./dist/storage/persistence.js"
|
|
95
|
+
},
|
|
52
96
|
"./storage/toolkit": {
|
|
53
97
|
"types": "./dist/storage/toolkit/index.d.ts",
|
|
54
98
|
"default": "./dist/storage/toolkit/index.js"
|
|
@@ -69,6 +113,7 @@
|
|
|
69
113
|
"types": "./dist/testing/index.d.ts",
|
|
70
114
|
"default": "./dist/testing/index.js"
|
|
71
115
|
},
|
|
116
|
+
"./postgres-feature-profile.json": "./postgres-feature-profile.json",
|
|
72
117
|
"./sql-feature-matrix.json": "./sql-feature-matrix.json",
|
|
73
118
|
"./package.json": "./package.json"
|
|
74
119
|
},
|
|
@@ -76,7 +121,12 @@
|
|
|
76
121
|
"dist",
|
|
77
122
|
"!dist/**/*.test.*",
|
|
78
123
|
"!dist/**/*.spec.*",
|
|
124
|
+
"!dist/**/*.map",
|
|
125
|
+
"!dist/storage/fixture-shape.*",
|
|
126
|
+
"!dist/engine/storage-test-helpers.*",
|
|
127
|
+
"!dist/testing/seeds.*",
|
|
79
128
|
"!dist/*.tsbuildinfo",
|
|
80
|
-
"sql-feature-matrix.json"
|
|
129
|
+
"sql-feature-matrix.json",
|
|
130
|
+
"postgres-feature-profile.json"
|
|
81
131
|
]
|
|
82
132
|
}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "PostgreSQL-style SQL",
|
|
4
|
+
"oracle": {
|
|
5
|
+
"engine": "PGlite",
|
|
6
|
+
"version": "0.5.5",
|
|
7
|
+
"role": "PostgreSQL parser and result oracle used by the differential test suite"
|
|
8
|
+
},
|
|
9
|
+
"scope": {
|
|
10
|
+
"includes": "The single-database SQL syntax accepted by Minnow and its observable results for each checked example.",
|
|
11
|
+
"excludes": [
|
|
12
|
+
"server lifecycle and connections",
|
|
13
|
+
"catalogs and schemas",
|
|
14
|
+
"roles, ownership, and privileges",
|
|
15
|
+
"replication and server extensions",
|
|
16
|
+
"PostgreSQL storage and administration commands"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"classifications": {
|
|
20
|
+
"compatible": "The checked example uses PostgreSQL syntax. Deterministic reads and mutations match PostgreSQL's result and resulting row state; DDL compatibility is PostgreSQL parser acceptance plus Minnow catalog assertions.",
|
|
21
|
+
"different": "Minnow supports the concept, but a spelling, type rule, or observable result deliberately differs.",
|
|
22
|
+
"extension": "Minnow accepts syntax PostgreSQL does not; this is a listed value addition, not PostgreSQL compatibility.",
|
|
23
|
+
"unsupported": "The feature is meaningful for an embedded database but Minnow does not implement it.",
|
|
24
|
+
"inapplicable": "The feature belongs to a server capability that an embedded, single-database engine does not expose."
|
|
25
|
+
},
|
|
26
|
+
"defaults": {
|
|
27
|
+
"supported": "compatible",
|
|
28
|
+
"unsupported": "unsupported"
|
|
29
|
+
},
|
|
30
|
+
"overrides": [
|
|
31
|
+
{
|
|
32
|
+
"id": "expression.arithmetic",
|
|
33
|
+
"classification": "different",
|
|
34
|
+
"reason": "Minnow has one JavaScript number type: integer-looking division stays fractional, and division by zero returns NULL instead of raising PostgreSQL's error."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "expression.round",
|
|
38
|
+
"classification": "different",
|
|
39
|
+
"reason": "Minnow accepts ROUND(double precision, digits); PostgreSQL requires numeric for the two-argument form."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "parameter.positional",
|
|
43
|
+
"classification": "extension",
|
|
44
|
+
"reason": "PostgreSQL uses $n parameters. Minnow also accepts ? as adapter-friendly shorthand."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "mutation.upsert-replace",
|
|
48
|
+
"classification": "extension",
|
|
49
|
+
"reason": "DO REPLACE is Minnow shorthand for replacing every non-key value from EXCLUDED."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "predicate.match",
|
|
53
|
+
"classification": "extension",
|
|
54
|
+
"reason": "MATCH is Minnow's index-transparent full-text predicate rather than a PostgreSQL operator."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "predicate.match-star",
|
|
58
|
+
"classification": "extension",
|
|
59
|
+
"reason": "MATCH(*) searches every text column and is a Minnow full-text extension."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "predicate.match-parameter",
|
|
63
|
+
"classification": "extension",
|
|
64
|
+
"reason": "Parameterized MATCH uses Minnow's index-transparent full-text predicate."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "function.bm25",
|
|
68
|
+
"classification": "extension",
|
|
69
|
+
"reason": "BM25 exposes Minnow's full-text score; PostgreSQL uses its own text-search types and ranking functions."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "mutation.upsert",
|
|
73
|
+
"classification": "compatible",
|
|
74
|
+
"reason": "ON CONFLICT ... DO UPDATE follows PostgreSQL syntax."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "mutation.insert-do-nothing",
|
|
78
|
+
"classification": "compatible",
|
|
79
|
+
"reason": "ON CONFLICT ... DO NOTHING follows PostgreSQL syntax."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "mutation.upsert-partial",
|
|
83
|
+
"classification": "compatible",
|
|
84
|
+
"reason": "A partial SET list with EXCLUDED follows PostgreSQL syntax."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "predicate.ilike",
|
|
88
|
+
"classification": "compatible",
|
|
89
|
+
"reason": "ILIKE follows PostgreSQL syntax and case-insensitive matching semantics."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "expression.modulo",
|
|
93
|
+
"classification": "different",
|
|
94
|
+
"reason": "Minnow permits % on its number type; PostgreSQL has no % operator for double precision."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "expression.cast",
|
|
98
|
+
"classification": "different",
|
|
99
|
+
"reason": "Casting an approximate number to INTEGER truncates in Minnow; PostgreSQL rounds."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "expression.date-trunc",
|
|
103
|
+
"classification": "compatible",
|
|
104
|
+
"reason": "DATE_TRUNC follows PostgreSQL syntax; Minnow evaluates datetimes in UTC because it has no session time zone."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "function.numeric-core",
|
|
108
|
+
"classification": "different",
|
|
109
|
+
"reason": "Minnow's one number type accepts combinations that PostgreSQL's distinct integer, numeric, and double-precision overloads do not."
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "function.string-extended",
|
|
113
|
+
"classification": "different",
|
|
114
|
+
"reason": "The bundled form includes INSTR; PostgreSQL spells that function strpos with reversed arguments."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "function.trim-multi-character",
|
|
118
|
+
"classification": "different",
|
|
119
|
+
"reason": "Minnow removes the trim string as a repeated unit; PostgreSQL treats its characters as a set."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "aggregate.any-value",
|
|
123
|
+
"classification": "compatible",
|
|
124
|
+
"verification": "acceptance",
|
|
125
|
+
"reason": "Both engines accept ANY_VALUE, but which group member it returns is intentionally nondeterministic, so the oracle checks acceptance rather than row equality."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "aggregate.json",
|
|
129
|
+
"classification": "different",
|
|
130
|
+
"reason": "Minnow returns JSON text; PostgreSQL returns a native JSON value, and member order is unspecified without aggregate-local ORDER BY."
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "type.exact-numeric",
|
|
134
|
+
"classification": "different",
|
|
135
|
+
"reason": "Minnow preserves exact decimals at the JavaScript boundary as strings; PGlite's default decoder returns this NUMERIC value as a number."
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "type.json-jsonb",
|
|
139
|
+
"classification": "different",
|
|
140
|
+
"reason": "Minnow returns canonical JSON text at the JavaScript boundary while PostgreSQL clients commonly decode JSONB to a native object."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"id": "type.interval",
|
|
144
|
+
"classification": "different",
|
|
145
|
+
"reason": "Minnow returns a canonical months/days/microseconds string; PostgreSQL clients use their own interval representation and formatting."
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "type.array",
|
|
149
|
+
"classification": "different",
|
|
150
|
+
"reason": "Minnow returns arrays as canonical JSON text at the JavaScript boundary while PostgreSQL clients commonly return native arrays."
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "json.query",
|
|
154
|
+
"classification": "different",
|
|
155
|
+
"reason": "The JSON value agrees, but Minnow returns compact JSON text while PostgreSQL's text rendering includes spaces."
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"id": "json.object",
|
|
159
|
+
"classification": "different",
|
|
160
|
+
"reason": "The JSON value agrees, but Minnow returns compact JSON text while PostgreSQL's text rendering includes spaces."
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "json.array",
|
|
164
|
+
"classification": "different",
|
|
165
|
+
"reason": "The JSON value agrees, but Minnow returns compact JSON text while PostgreSQL's text rendering includes spaces."
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"id": "trigger.create-after",
|
|
169
|
+
"classification": "different",
|
|
170
|
+
"reason": "Minnow uses an embedded BEGIN ... END trigger body; PostgreSQL triggers call a separately declared function."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"id": "trigger.create-before",
|
|
174
|
+
"classification": "different",
|
|
175
|
+
"reason": "Minnow uses an embedded BEGIN ... END trigger body; PostgreSQL triggers call a separately declared function."
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "trigger.body-update-delete",
|
|
179
|
+
"classification": "different",
|
|
180
|
+
"reason": "Minnow uses an embedded BEGIN ... END trigger body; PostgreSQL triggers call a separately declared function."
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "trigger.drop",
|
|
184
|
+
"classification": "different",
|
|
185
|
+
"reason": "PostgreSQL requires DROP TRIGGER name ON table; Minnow's trigger names are database-wide."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"id": "ddl.secondary-index",
|
|
189
|
+
"classification": "compatible",
|
|
190
|
+
"reason": "CREATE INDEX follows PostgreSQL syntax."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"id": "ddl.drop-secondary-index",
|
|
194
|
+
"classification": "compatible",
|
|
195
|
+
"reason": "DROP INDEX follows PostgreSQL syntax."
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"id": "ddl.composite-secondary-index",
|
|
199
|
+
"classification": "compatible",
|
|
200
|
+
"reason": "Composite CREATE INDEX follows PostgreSQL syntax."
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"id": "ddl.unique-secondary-index",
|
|
204
|
+
"classification": "compatible",
|
|
205
|
+
"reason": "CREATE UNIQUE INDEX follows PostgreSQL syntax."
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id": "mutation.upsert-expression",
|
|
209
|
+
"classification": "different",
|
|
210
|
+
"reason": "Minnow resolves an unqualified target column in DO UPDATE; PostgreSQL treats score beside EXCLUDED.score as ambiguous unless the target is qualified."
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id": "transaction.isolation-level",
|
|
214
|
+
"classification": "inapplicable",
|
|
215
|
+
"reason": "Minnow exposes one snapshot transaction model, so there is no session isolation level to configure."
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id": "privileges.grant",
|
|
219
|
+
"classification": "inapplicable",
|
|
220
|
+
"reason": "An embedded database has no server roles, owners, or GRANT boundary."
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
}
|