orez 0.2.25 → 0.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/dist/cf-do/watermark.d.ts +21 -0
  2. package/dist/cf-do/watermark.d.ts.map +1 -0
  3. package/dist/cf-do/watermark.js +93 -0
  4. package/dist/cf-do/watermark.js.map +1 -0
  5. package/dist/cf-do/worker.d.ts +48 -22
  6. package/dist/cf-do/worker.d.ts.map +1 -1
  7. package/dist/cf-do/worker.js +650 -269
  8. package/dist/cf-do/worker.js.map +1 -1
  9. package/dist/config.js +1 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/do-sql-tracking.d.ts +6 -0
  12. package/dist/do-sql-tracking.d.ts.map +1 -0
  13. package/dist/do-sql-tracking.js +14 -0
  14. package/dist/do-sql-tracking.js.map +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +28 -14
  17. package/dist/index.js.map +1 -1
  18. package/dist/pg-proxy-browser.js +6 -6
  19. package/dist/pg-proxy-browser.js.map +1 -1
  20. package/dist/pg-proxy-do-backend.d.ts +98 -17
  21. package/dist/pg-proxy-do-backend.d.ts.map +1 -1
  22. package/dist/pg-proxy-do-backend.js +6075 -454
  23. package/dist/pg-proxy-do-backend.js.map +1 -1
  24. package/dist/pg-sqlite-compiler/catalog/seed.d.ts +67 -0
  25. package/dist/pg-sqlite-compiler/catalog/seed.d.ts.map +1 -0
  26. package/dist/pg-sqlite-compiler/catalog/seed.js +436 -0
  27. package/dist/pg-sqlite-compiler/catalog/seed.js.map +1 -0
  28. package/dist/pg-sqlite-compiler/index.d.ts +12 -0
  29. package/dist/pg-sqlite-compiler/index.d.ts.map +1 -0
  30. package/dist/pg-sqlite-compiler/index.js +59 -0
  31. package/dist/pg-sqlite-compiler/index.js.map +1 -0
  32. package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts +48 -0
  33. package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts.map +1 -0
  34. package/dist/pg-sqlite-compiler/passes/ast-utils.js +93 -0
  35. package/dist/pg-sqlite-compiler/passes/ast-utils.js.map +1 -0
  36. package/dist/pg-sqlite-compiler/passes/catalog.d.ts +34 -0
  37. package/dist/pg-sqlite-compiler/passes/catalog.d.ts.map +1 -0
  38. package/dist/pg-sqlite-compiler/passes/catalog.js +30 -0
  39. package/dist/pg-sqlite-compiler/passes/catalog.js.map +1 -0
  40. package/dist/pg-sqlite-compiler/passes/datetime.d.ts +21 -0
  41. package/dist/pg-sqlite-compiler/passes/datetime.d.ts.map +1 -0
  42. package/dist/pg-sqlite-compiler/passes/datetime.js +53 -0
  43. package/dist/pg-sqlite-compiler/passes/datetime.js.map +1 -0
  44. package/dist/pg-sqlite-compiler/passes/index.d.ts +21 -0
  45. package/dist/pg-sqlite-compiler/passes/index.d.ts.map +1 -0
  46. package/dist/pg-sqlite-compiler/passes/index.js +39 -0
  47. package/dist/pg-sqlite-compiler/passes/index.js.map +1 -0
  48. package/dist/pg-sqlite-compiler/passes/types.d.ts +41 -0
  49. package/dist/pg-sqlite-compiler/passes/types.d.ts.map +1 -0
  50. package/dist/pg-sqlite-compiler/passes/types.js +103 -0
  51. package/dist/pg-sqlite-compiler/passes/types.js.map +1 -0
  52. package/dist/pg-sqlite-compiler/test/oracle.d.ts +34 -0
  53. package/dist/pg-sqlite-compiler/test/oracle.d.ts.map +1 -0
  54. package/dist/pg-sqlite-compiler/test/oracle.js +204 -0
  55. package/dist/pg-sqlite-compiler/test/oracle.js.map +1 -0
  56. package/dist/pg-sqlite-compiler/types.d.ts +55 -0
  57. package/dist/pg-sqlite-compiler/types.d.ts.map +1 -0
  58. package/dist/pg-sqlite-compiler/types.js +2 -0
  59. package/dist/pg-sqlite-compiler/types.js.map +1 -0
  60. package/dist/replication/change-tracker.d.ts.map +1 -1
  61. package/dist/replication/change-tracker.js +18 -1
  62. package/dist/replication/change-tracker.js.map +1 -1
  63. package/dist/replication/handler.d.ts.map +1 -1
  64. package/dist/replication/handler.js +7 -2
  65. package/dist/replication/handler.js.map +1 -1
  66. package/dist/replication/pgoutput-encoder.d.ts.map +1 -1
  67. package/dist/replication/pgoutput-encoder.js +72 -30
  68. package/dist/replication/pgoutput-encoder.js.map +1 -1
  69. package/dist/worker/browser-build-config.d.ts.map +1 -1
  70. package/dist/worker/browser-build-config.js +2 -1
  71. package/dist/worker/browser-build-config.js.map +1 -1
  72. package/dist/worker/cf-patches.d.ts +5 -2
  73. package/dist/worker/cf-patches.d.ts.map +1 -1
  74. package/dist/worker/cf-patches.js +238 -4
  75. package/dist/worker/cf-patches.js.map +1 -1
  76. package/dist/worker/shims/node-stub.d.ts +35 -0
  77. package/dist/worker/shims/node-stub.d.ts.map +1 -1
  78. package/dist/worker/shims/node-stub.js +53 -1
  79. package/dist/worker/shims/node-stub.js.map +1 -1
  80. package/dist/worker/shims/oxfmt.d.ts +4 -0
  81. package/dist/worker/shims/oxfmt.d.ts.map +1 -0
  82. package/dist/worker/shims/oxfmt.js +4 -0
  83. package/dist/worker/shims/oxfmt.js.map +1 -0
  84. package/dist/worker/shims/postgres-socket.js +1 -1
  85. package/dist/worker/shims/postgres-socket.js.map +1 -1
  86. package/dist/worker/shims/sqlite.d.ts +1 -0
  87. package/dist/worker/shims/sqlite.d.ts.map +1 -1
  88. package/dist/worker/shims/sqlite.js +229 -9
  89. package/dist/worker/shims/sqlite.js.map +1 -1
  90. package/dist/worker/shims/ws.d.ts.map +1 -1
  91. package/dist/worker/shims/ws.js +45 -0
  92. package/dist/worker/shims/ws.js.map +1 -1
  93. package/dist/worker/shims/zero-process-env.d.ts +2 -0
  94. package/dist/worker/shims/zero-process-env.d.ts.map +1 -0
  95. package/dist/worker/shims/zero-process-env.js +9 -0
  96. package/dist/worker/shims/zero-process-env.js.map +1 -0
  97. package/dist/worker/zero-cache-embed-cf.d.ts +29 -12
  98. package/dist/worker/zero-cache-embed-cf.d.ts.map +1 -1
  99. package/dist/worker/zero-cache-embed-cf.js +83 -14
  100. package/dist/worker/zero-cache-embed-cf.js.map +1 -1
  101. package/package.json +11 -2
  102. package/src/cf-do/.wrangler/cache/cf.json +1 -0
  103. package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite +0 -0
  104. package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm +0 -0
  105. package/src/cf-do/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal +0 -0
  106. package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/0ffaabee41a60e04dd0eb7db3073f0a40139e6a97ccd26823967acb652b89a7b.sqlite +0 -0
  107. package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite +0 -0
  108. package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite-shm +0 -0
  109. package/src/cf-do/.wrangler/state/v3/do/zero-do-ZeroDO/metadata.sqlite-wal +0 -0
  110. package/src/cf-do/.wrangler/tmp/bundle-0z4CpE/middleware-insertion-facade.js +11 -0
  111. package/src/cf-do/.wrangler/tmp/bundle-0z4CpE/middleware-loader.entry.ts +134 -0
  112. package/src/cf-do/.wrangler/tmp/bundle-vYmw0E/middleware-insertion-facade.js +11 -0
  113. package/src/cf-do/.wrangler/tmp/bundle-vYmw0E/middleware-loader.entry.ts +134 -0
  114. package/src/cf-do/.wrangler/tmp/dev-cbILNo/worker.js +1059 -0
  115. package/src/cf-do/.wrangler/tmp/dev-cbILNo/worker.js.map +8 -0
  116. package/src/cf-do/.wrangler/tmp/dev-qbho19/worker.js +1059 -0
  117. package/src/cf-do/.wrangler/tmp/dev-qbho19/worker.js.map +8 -0
  118. package/src/cf-do/ARCHITECTURE.md +93 -0
  119. package/src/cf-do/CHAT_E2E.md +213 -0
  120. package/src/cf-do/watermark.test.ts +103 -0
  121. package/src/cf-do/watermark.ts +118 -0
  122. package/src/cf-do/worker.ts +1041 -0
  123. package/src/cf-do/wrangler.toml +11 -0
  124. package/src/cli.test.ts +3 -1
  125. package/src/config.ts +1 -1
  126. package/src/do-sql-tracking.test.ts +19 -0
  127. package/src/do-sql-tracking.ts +19 -0
  128. package/src/index.ts +29 -14
  129. package/src/pg-proxy-browser.ts +6 -6
  130. package/src/pg-proxy-do-backend.test.ts +3890 -0
  131. package/src/pg-proxy-do-backend.ts +6833 -482
  132. package/src/pg-sqlite-compiler/README.md +53 -0
  133. package/src/pg-sqlite-compiler/catalog/seed.ts +524 -0
  134. package/src/pg-sqlite-compiler/fixtures/pgsqlite/arithmetic.json +307 -0
  135. package/src/pg-sqlite-compiler/fixtures/pgsqlite/array.json +377 -0
  136. package/src/pg-sqlite-compiler/fixtures/pgsqlite/cast.json +12 -0
  137. package/src/pg-sqlite-compiler/fixtures/pgsqlite/catalog.json +447 -0
  138. package/src/pg-sqlite-compiler/fixtures/pgsqlite/create-table.json +32 -0
  139. package/src/pg-sqlite-compiler/fixtures/pgsqlite/datetime.json +397 -0
  140. package/src/pg-sqlite-compiler/fixtures/pgsqlite/enum.json +337 -0
  141. package/src/pg-sqlite-compiler/fixtures/pgsqlite/insert.json +337 -0
  142. package/src/pg-sqlite-compiler/fixtures/pgsqlite/json.json +537 -0
  143. package/src/pg-sqlite-compiler/fixtures/pgsqlite/misc.json +1837 -0
  144. package/src/pg-sqlite-compiler/index.ts +73 -0
  145. package/src/pg-sqlite-compiler/integration.test.ts +136 -0
  146. package/src/pg-sqlite-compiler/passes/ast-utils.ts +113 -0
  147. package/src/pg-sqlite-compiler/passes/catalog.ts +65 -0
  148. package/src/pg-sqlite-compiler/passes/datetime.ts +74 -0
  149. package/src/pg-sqlite-compiler/passes/index.ts +49 -0
  150. package/src/pg-sqlite-compiler/passes/types.ts +156 -0
  151. package/src/pg-sqlite-compiler/smoke.test.ts +69 -0
  152. package/src/pg-sqlite-compiler/test/catalog.test.ts +171 -0
  153. package/src/pg-sqlite-compiler/test/corpus.test.ts +161 -0
  154. package/src/pg-sqlite-compiler/test/datetime.oracle.test.ts +102 -0
  155. package/src/pg-sqlite-compiler/test/oracle.ts +237 -0
  156. package/src/pg-sqlite-compiler/test/types.test.ts +109 -0
  157. package/src/pg-sqlite-compiler/types.ts +63 -0
  158. package/src/replication/change-tracker.ts +16 -1
  159. package/src/replication/handler.test.ts +35 -0
  160. package/src/replication/handler.ts +7 -2
  161. package/src/replication/pgoutput-encoder.test.ts +71 -2
  162. package/src/replication/pgoutput-encoder.ts +65 -30
  163. package/src/worker/browser-build-config.test.ts +12 -0
  164. package/src/worker/browser-build-config.ts +2 -1
  165. package/src/worker/cf-patches.ts +274 -4
  166. package/src/worker/shims/node-stub.ts +53 -1
  167. package/src/worker/shims/oxfmt.ts +3 -0
  168. package/src/worker/shims/postgres-socket.ts +1 -1
  169. package/src/worker/shims/sqlite.test.ts +145 -0
  170. package/src/worker/shims/sqlite.ts +256 -9
  171. package/src/worker/shims/ws.ts +45 -0
  172. package/src/worker/shims/zero-process-env.ts +11 -0
  173. package/src/worker/zero-cache-embed-cf.ts +114 -18
  174. package/src/query-rewrites.test.ts +0 -30
  175. package/src/query-rewrites.ts +0 -152
@@ -0,0 +1,537 @@
1
+ {
2
+ "source": "erans/pgsqlite tests/",
3
+ "bucket": "json",
4
+ "count": 106,
5
+ "cases": [
6
+ {
7
+ "name": "json_object_agg_test-1",
8
+ "sql": "SELECT json_object_agg(key, value) AS result FROM (SELECT 'name' as key, 'John' as value UNION SELECT 'age', '30' UNION SELECT 'city', 'NYC') AS t",
9
+ "source": "json_object_agg_test.rs"
10
+ },
11
+ {
12
+ "name": "json_object_agg_test-2",
13
+ "sql": "SELECT jsonb_object_agg(key, value) AS result FROM (SELECT 'name' as key, 'Alice' as value UNION SELECT 'active', 'true' UNION SELECT 'score', '95.5') AS t",
14
+ "source": "json_object_agg_test.rs"
15
+ },
16
+ {
17
+ "name": "json_object_agg_test-3",
18
+ "sql": "CREATE TABLE test_users (\n id INTEGER PRIMARY KEY,\n name TEXT,\n department TEXT,\n salary INTEGER\n )",
19
+ "source": "json_object_agg_test.rs"
20
+ },
21
+ {
22
+ "name": "json_object_agg_test-4",
23
+ "sql": "INSERT INTO test_users (name, department, salary) VALUES \n ('John', 'Engineering', 85000),\n ('Alice', 'Marketing', 72000),\n ('Bob', 'Engineering', 90000)",
24
+ "source": "json_object_agg_test.rs"
25
+ },
26
+ {
27
+ "name": "json_object_agg_test-5",
28
+ "sql": "SELECT json_object_agg(name, salary) AS result FROM test_users WHERE department = 'Engineering'",
29
+ "source": "json_object_agg_test.rs"
30
+ },
31
+ {
32
+ "name": "json_object_agg_test-6",
33
+ "sql": "SELECT json_object_agg(key, value) AS result FROM (SELECT 'key' as key, 'value' as value WHERE 1=0) AS t",
34
+ "source": "json_object_agg_test.rs"
35
+ },
36
+ {
37
+ "name": "json_object_agg_test-7",
38
+ "sql": "SELECT json_object_agg(key, value) AS result FROM (SELECT 'str' as key, 'hello' as value UNION SELECT 'num', '42' UNION SELECT 'bool', 'true' UNION SELECT 'null_val', NULL) AS t",
39
+ "source": "json_object_agg_test.rs"
40
+ },
41
+ {
42
+ "name": "json_object_agg_test-8",
43
+ "sql": "SELECT json_object_agg(key, value) AS result FROM (SELECT 'name' as key, 'John' as value UNION SELECT 'age', '30' UNION SELECT 'name', 'Jane') AS t",
44
+ "source": "json_object_agg_test.rs"
45
+ },
46
+ {
47
+ "name": "json_each_test-1",
48
+ "sql": "SELECT key, value FROM json_each('{\"name\": \"Alice\", \"age\": 30, \"active\": true}') AS t ORDER BY key",
49
+ "source": "json_each_test.rs"
50
+ },
51
+ {
52
+ "name": "json_each_test-2",
53
+ "sql": "SELECT key, value FROM jsonb_each('{\"x\": 1, \"y\": 2}') AS t ORDER BY key",
54
+ "source": "json_each_test.rs"
55
+ },
56
+ {
57
+ "name": "json_each_test-3",
58
+ "sql": "CREATE TABLE test_json (\n id INTEGER PRIMARY KEY,\n data TEXT\n )",
59
+ "source": "json_each_test.rs"
60
+ },
61
+ {
62
+ "name": "json_each_test-4",
63
+ "sql": "SELECT test_json.id, t.key, t.value FROM test_json, json_each(data) AS t WHERE test_json.id = 1 ORDER BY t.key",
64
+ "source": "json_each_test.rs"
65
+ },
66
+ {
67
+ "name": "json_each_test-5",
68
+ "sql": "SELECT key, value FROM json_each('{}') AS t",
69
+ "source": "json_each_test.rs"
70
+ },
71
+ {
72
+ "name": "json_each_test-6",
73
+ "sql": "SELECT key, value FROM json_each('[]') AS t",
74
+ "source": "json_each_test.rs"
75
+ },
76
+ {
77
+ "name": "json_each_test-7",
78
+ "sql": "SELECT key, value FROM json_each('[\"apple\", \"banana\", \"cherry\"]') AS t ORDER BY key",
79
+ "source": "json_each_test.rs"
80
+ },
81
+ {
82
+ "name": "json_each_test-8",
83
+ "sql": "INSERT INTO test_json (id, data) VALUES \n (1, '{\"name\": \"Alice\", \"age\": 25}'),\n (2, '{\"name\": \"Bob\", \"score\": 95}')",
84
+ "source": "json_each_test.rs"
85
+ },
86
+ {
87
+ "name": "jsonb_delete_test-1",
88
+ "sql": "SELECT jsonb_delete('{\"name\": \"John\", \"age\": 30, \"email\": \"john@example.com\"}', '{email}') AS result",
89
+ "source": "jsonb_delete_test.rs"
90
+ },
91
+ {
92
+ "name": "jsonb_delete_test-2",
93
+ "sql": "SELECT jsonb_delete('{\"user\": {\"name\": \"Alice\", \"email\": \"alice@example.com\"}, \"active\": true}', '{user,email}') AS result",
94
+ "source": "jsonb_delete_test.rs"
95
+ },
96
+ {
97
+ "name": "jsonb_delete_test-3",
98
+ "sql": "SELECT jsonb_delete('[\"apple\", \"banana\", \"cherry\", \"date\"]', '{1}') AS result",
99
+ "source": "jsonb_delete_test.rs"
100
+ },
101
+ {
102
+ "name": "jsonb_delete_test-4",
103
+ "sql": "SELECT jsonb_delete_path('{\"name\": \"John\", \"age\": 30, \"email\": \"john@example.com\"}', '{age}') AS result",
104
+ "source": "jsonb_delete_test.rs"
105
+ },
106
+ {
107
+ "name": "jsonb_delete_test-5",
108
+ "sql": "SELECT jsonb_delete('{\"name\": \"John\", \"age\": 30}', '{email}') AS result",
109
+ "source": "jsonb_delete_test.rs"
110
+ },
111
+ {
112
+ "name": "jsonb_delete_test-6",
113
+ "sql": "CREATE TABLE test_jsonb_delete (\n id INTEGER PRIMARY KEY,\n data TEXT\n )",
114
+ "source": "jsonb_delete_test.rs"
115
+ },
116
+ {
117
+ "name": "jsonb_delete_test-7",
118
+ "sql": "SELECT id, jsonb_delete(data, '{email}') AS updated_data FROM test_jsonb_delete WHERE id = 1",
119
+ "source": "jsonb_delete_test.rs"
120
+ },
121
+ {
122
+ "name": "jsonb_delete_test-8",
123
+ "sql": "SELECT id, jsonb_delete(data, '{skills,1}') AS updated_data FROM test_jsonb_delete WHERE id = 2",
124
+ "source": "jsonb_delete_test.rs"
125
+ },
126
+ {
127
+ "name": "jsonb_delete_test-9",
128
+ "sql": "INSERT INTO test_jsonb_delete (id, data) VALUES \n (1, '{\"name\": \"Alice\", \"age\": 25, \"email\": \"alice@example.com\"}'),\n (2, '{\"name\": \"Bob\", \"skills\": [\"coding\", \"testing\", \"debugging\"], \"active\": true}');",
129
+ "source": "jsonb_delete_test.rs"
130
+ },
131
+ {
132
+ "name": "json_operator_test-1",
133
+ "sql": "CREATE TABLE test_json_ops (\n id INTEGER PRIMARY KEY,\n data JSON,\n config JSONB\n )",
134
+ "source": "json_operator_test.rs"
135
+ },
136
+ {
137
+ "name": "json_operator_test-2",
138
+ "sql": "SELECT data->>'name' AS name FROM test_json_ops WHERE id = 1",
139
+ "source": "json_operator_test.rs"
140
+ },
141
+ {
142
+ "name": "json_operator_test-3",
143
+ "sql": "SELECT data->'items' AS items FROM test_json_ops WHERE id = 2",
144
+ "source": "json_operator_test.rs"
145
+ },
146
+ {
147
+ "name": "json_operator_test-4",
148
+ "sql": "SELECT data->'nested'->'level1'->>'level2' AS value FROM test_json_ops WHERE id = 3",
149
+ "source": "json_operator_test.rs"
150
+ },
151
+ {
152
+ "name": "json_operator_test-5",
153
+ "sql": "SELECT data#>>'{nested,level1,level2}' AS value FROM test_json_ops WHERE id = 3",
154
+ "source": "json_operator_test.rs"
155
+ },
156
+ {
157
+ "name": "json_operator_test-6",
158
+ "sql": "SELECT id FROM test_json_ops WHERE data @> '{\"name\": \"Alice\"}'",
159
+ "source": "json_operator_test.rs"
160
+ },
161
+ {
162
+ "name": "json_operator_test-7",
163
+ "sql": "SELECT id FROM test_json_ops WHERE '{\"name\": \"Bob\"}' <@ data",
164
+ "source": "json_operator_test.rs"
165
+ },
166
+ {
167
+ "name": "json_operator_test-8",
168
+ "sql": "SELECT \n id,\n data->>'name' AS name,\n config->>'role' AS role\n FROM test_json_ops \n WHERE data @> '{\"active\": true}' \n OR config->>'role' = 'user'",
169
+ "source": "json_operator_test.rs"
170
+ },
171
+ {
172
+ "name": "json_operator_test-9",
173
+ "sql": "SELECT json_array_length('[1, 2, 3, 4, 5]') AS len",
174
+ "source": "json_operator_test.rs"
175
+ },
176
+ {
177
+ "name": "json_operator_test-10",
178
+ "sql": "SELECT json_typeof('{\"key\": \"value\"}') AS type",
179
+ "source": "json_operator_test.rs"
180
+ },
181
+ {
182
+ "name": "json_operator_test-11",
183
+ "sql": "SELECT jsonb_object_keys('{\"a\": 1, \"b\": 2, \"c\": 3}') AS keys",
184
+ "source": "json_operator_test.rs"
185
+ },
186
+ {
187
+ "name": "json_operator_test-12",
188
+ "sql": "SELECT json_strip_nulls('{\"a\": 1, \"b\": null, \"c\": 3}') AS stripped",
189
+ "source": "json_operator_test.rs"
190
+ },
191
+ {
192
+ "name": "json_operator_test-13",
193
+ "sql": "SELECT jsonb_set('{\"a\": 1, \"b\": 2}', '{b}', '99') AS updated",
194
+ "source": "json_operator_test.rs"
195
+ },
196
+ {
197
+ "name": "json_operator_test-14",
198
+ "sql": "SELECT json_extract_path('{\"a\": {\"b\": {\"c\": 42}}}', 'a.b.c') AS value",
199
+ "source": "json_operator_test.rs"
200
+ },
201
+ {
202
+ "name": "json_operator_test-15",
203
+ "sql": "SELECT json_extract_path_text('{\"name\": \"John\", \"age\": 30}', 'name') AS name",
204
+ "source": "json_operator_test.rs"
205
+ },
206
+ {
207
+ "name": "json_operator_test-16",
208
+ "sql": "INSERT INTO test_json_ops (id, data, config) VALUES \n (1, '{\"name\": \"Alice\", \"age\": 30, \"active\": true}', '{\"role\": \"admin\", \"perms\": [\"read\", \"write\"]}'),\n (2, '{\"name\": \"Bob\", \"items\": [1, 2, 3]}', '{\"role\": \"user\"}'),\n (3, '{\"nested\": {\"level1\": {\"level2\": 42}}}', '{\"complex\": true}')",
209
+ "source": "json_operator_test.rs"
210
+ },
211
+ {
212
+ "name": "jsonb_pretty_test-1",
213
+ "sql": "CREATE TABLE test_jsonb_pretty (\n id INTEGER PRIMARY KEY,\n data TEXT\n )",
214
+ "source": "jsonb_pretty_test.rs"
215
+ },
216
+ {
217
+ "name": "jsonb_pretty_test-2",
218
+ "sql": "SELECT id, jsonb_pretty(data) AS pretty_data FROM test_jsonb_pretty WHERE id = 1",
219
+ "source": "jsonb_pretty_test.rs"
220
+ },
221
+ {
222
+ "name": "jsonb_pretty_test-3",
223
+ "sql": "SELECT id, jsonb_pretty(data) AS pretty_data FROM test_jsonb_pretty WHERE id = 2",
224
+ "source": "jsonb_pretty_test.rs"
225
+ },
226
+ {
227
+ "name": "jsonb_pretty_test-4",
228
+ "sql": "SELECT jsonb_pretty('{}') AS result",
229
+ "source": "jsonb_pretty_test.rs"
230
+ },
231
+ {
232
+ "name": "jsonb_pretty_test-5",
233
+ "sql": "SELECT jsonb_pretty('[]') AS result",
234
+ "source": "jsonb_pretty_test.rs"
235
+ },
236
+ {
237
+ "name": "jsonb_pretty_test-6",
238
+ "sql": "SELECT jsonb_pretty('42') AS result",
239
+ "source": "jsonb_pretty_test.rs"
240
+ },
241
+ {
242
+ "name": "jsonb_pretty_test-7",
243
+ "sql": "SELECT jsonb_pretty('null') AS result",
244
+ "source": "jsonb_pretty_test.rs"
245
+ },
246
+ {
247
+ "name": "jsonb_pretty_test-8",
248
+ "sql": "SELECT jsonb_pretty('{not valid json}') AS result",
249
+ "source": "jsonb_pretty_test.rs"
250
+ },
251
+ {
252
+ "name": "jsonb_pretty_test-9",
253
+ "sql": "SELECT jsonb_pretty('{\"name\":\"John\",\"age\":30,\"active\":true}') AS result",
254
+ "source": "jsonb_pretty_test.rs"
255
+ },
256
+ {
257
+ "name": "jsonb_pretty_test-10",
258
+ "sql": "SELECT jsonb_pretty('{\"user\":{\"name\":\"Alice\",\"contacts\":{\"email\":\"alice@example.com\",\"phone\":\"555-1234\"}},\"tags\":[\"vip\",\"premium\"]}') AS result",
259
+ "source": "jsonb_pretty_test.rs"
260
+ },
261
+ {
262
+ "name": "jsonb_pretty_test-11",
263
+ "sql": "SELECT jsonb_pretty('[{\"id\":1,\"name\":\"Item 1\"},{\"id\":2,\"name\":\"Item 2\"},{\"id\":3,\"name\":\"Item 3\"}]') AS result",
264
+ "source": "jsonb_pretty_test.rs"
265
+ },
266
+ {
267
+ "name": "jsonb_pretty_test-12",
268
+ "sql": "INSERT INTO test_jsonb_pretty (id, data) VALUES \n (1, '{\"product\":{\"name\":\"Widget\",\"price\":19.99,\"specs\":{\"weight\":\"100g\",\"dimensions\":[10,5,2]}},\"inStock\":true}'),\n (2, '[\"compact\",\"array\",\"without\",\"formatting\"]')",
269
+ "source": "jsonb_pretty_test.rs"
270
+ },
271
+ {
272
+ "name": "jsonb_pretty_test-13",
273
+ "sql": "SELECT jsonb_pretty('\"hello world\"') AS result",
274
+ "source": "jsonb_pretty_test.rs"
275
+ },
276
+ {
277
+ "name": "json_agg_test-1",
278
+ "sql": "CREATE TABLE employees (\n id INTEGER PRIMARY KEY,\n name TEXT,\n department TEXT,\n salary INTEGER\n )",
279
+ "source": "json_agg_test.rs"
280
+ },
281
+ {
282
+ "name": "json_agg_test-2",
283
+ "sql": "SELECT json_agg(name) AS names FROM employees",
284
+ "source": "json_agg_test.rs"
285
+ },
286
+ {
287
+ "name": "json_agg_test-3",
288
+ "sql": "SELECT json_agg(salary) AS salaries FROM employees WHERE department = 'Engineering'",
289
+ "source": "json_agg_test.rs"
290
+ },
291
+ {
292
+ "name": "json_agg_test-4",
293
+ "sql": "SELECT jsonb_agg(name) AS names FROM employees WHERE department = 'Sales'",
294
+ "source": "json_agg_test.rs"
295
+ },
296
+ {
297
+ "name": "json_agg_test-5",
298
+ "sql": "SELECT json_agg(name) AS names FROM employees WHERE department = 'NonExistent'",
299
+ "source": "json_agg_test.rs"
300
+ },
301
+ {
302
+ "name": "json_agg_test-6",
303
+ "sql": "SELECT department, json_agg(name) AS names FROM employees GROUP BY department ORDER BY department",
304
+ "source": "json_agg_test.rs"
305
+ },
306
+ {
307
+ "name": "json_agg_test-7",
308
+ "sql": "CREATE TABLE test_nulls (\n id INTEGER PRIMARY KEY,\n value TEXT\n )",
309
+ "source": "json_agg_test.rs"
310
+ },
311
+ {
312
+ "name": "json_agg_test-8",
313
+ "sql": "SELECT json_agg(value) AS value_list FROM test_nulls ORDER BY id",
314
+ "source": "json_agg_test.rs"
315
+ },
316
+ {
317
+ "name": "json_agg_test-9",
318
+ "sql": "INSERT INTO employees (id, name, department, salary) VALUES \n (1, 'Alice', 'Engineering', 95000),\n (2, 'Bob', 'Engineering', 87000),\n (3, 'Charlie', 'Sales', 75000),\n (4, 'Diana', 'Sales', 82000),\n (5, 'Eve', 'Marketing', 70000)",
319
+ "source": "json_agg_test.rs"
320
+ },
321
+ {
322
+ "name": "json_agg_test-10",
323
+ "sql": "INSERT INTO test_nulls (id, value) VALUES \n (1, 'A'),\n (2, NULL),\n (3, 'B'),\n (4, NULL)",
324
+ "source": "json_agg_test.rs"
325
+ },
326
+ {
327
+ "name": "json_test-1",
328
+ "sql": "CREATE TABLE test_json (\n id INTEGER PRIMARY KEY,\n config JSON,\n settings JSONB,\n metadata TEXT\n )",
329
+ "source": "json_test.rs"
330
+ },
331
+ {
332
+ "name": "json_test-2",
333
+ "sql": "SELECT id, config, settings FROM test_json WHERE id = 1",
334
+ "source": "json_test.rs"
335
+ },
336
+ {
337
+ "name": "json_test-3",
338
+ "sql": "INSERT INTO test_json (id, config, settings, metadata) VALUES \n (1, '{\"name\": \"test\", \"value\": 42}', '{\"enabled\": true, \"options\": [\"a\", \"b\"]}', 'plain text')",
339
+ "source": "json_test.rs"
340
+ },
341
+ {
342
+ "name": "json_test-4",
343
+ "sql": "SELECT json_valid('{\"valid\": true}') as is_valid",
344
+ "source": "json_test.rs"
345
+ },
346
+ {
347
+ "name": "json_test-5",
348
+ "sql": "SELECT json_valid('{invalid json}') as is_valid",
349
+ "source": "json_test.rs"
350
+ },
351
+ {
352
+ "name": "json_test-6",
353
+ "sql": "SELECT json_typeof('{\"key\": \"value\"}') as type",
354
+ "source": "json_test.rs"
355
+ },
356
+ {
357
+ "name": "json_test-7",
358
+ "sql": "SELECT json_array_length('[1, 2, 3, 4, 5]') as length",
359
+ "source": "json_test.rs"
360
+ },
361
+ {
362
+ "name": "json_test-8",
363
+ "sql": "SELECT jsonb_object_keys('{\"name\": \"John\", \"age\": 30, \"city\": \"NYC\"}') as keys",
364
+ "source": "json_test.rs"
365
+ },
366
+ {
367
+ "name": "json_test-9",
368
+ "sql": "SELECT to_json('hello world') as json_str",
369
+ "source": "json_test.rs"
370
+ },
371
+ {
372
+ "name": "json_test-10",
373
+ "sql": "SELECT json_extract_scalar('{\"name\": \"Alice\", \"age\": 25}', 'name') as name",
374
+ "source": "json_test.rs"
375
+ },
376
+ {
377
+ "name": "json_test-11",
378
+ "sql": "SELECT jsonb_contains('{\"a\": 1, \"b\": 2, \"c\": 3}', '{\"a\": 1, \"b\": 2}') as contains",
379
+ "source": "json_test.rs"
380
+ },
381
+ {
382
+ "name": "jsonb_insert_test-1",
383
+ "sql": "SELECT jsonb_insert('{\"name\": \"John\", \"age\": 30}', '{email}', '\"john@example.com\"') AS result",
384
+ "source": "jsonb_insert_test.rs"
385
+ },
386
+ {
387
+ "name": "jsonb_insert_test-2",
388
+ "sql": "SELECT jsonb_insert('{\"user\": {\"name\": \"Alice\"}, \"active\": true}', '{user,email}', '\"alice@example.com\"') AS result",
389
+ "source": "jsonb_insert_test.rs"
390
+ },
391
+ {
392
+ "name": "jsonb_insert_test-3",
393
+ "sql": "SELECT jsonb_insert('[\"apple\", \"banana\", \"cherry\"]', '{1}', '\"orange\"') AS result",
394
+ "source": "jsonb_insert_test.rs"
395
+ },
396
+ {
397
+ "name": "jsonb_insert_test-4",
398
+ "sql": "SELECT jsonb_insert('[\"apple\", \"banana\", \"cherry\"]', '{1}', '\"orange\"', true) AS result",
399
+ "source": "jsonb_insert_test.rs"
400
+ },
401
+ {
402
+ "name": "jsonb_insert_test-5",
403
+ "sql": "SELECT jsonb_insert('{\"name\": \"John\", \"age\": 30}', '{name}', '\"Jane\"') AS result",
404
+ "source": "jsonb_insert_test.rs"
405
+ },
406
+ {
407
+ "name": "jsonb_insert_test-6",
408
+ "sql": "CREATE TABLE test_jsonb_insert (\n id INTEGER PRIMARY KEY,\n data TEXT\n )",
409
+ "source": "jsonb_insert_test.rs"
410
+ },
411
+ {
412
+ "name": "jsonb_insert_test-7",
413
+ "sql": "SELECT id, jsonb_insert(data, '{email}', '\"user@example.com\"') AS updated_data FROM test_jsonb_insert WHERE id = 1",
414
+ "source": "jsonb_insert_test.rs"
415
+ },
416
+ {
417
+ "name": "jsonb_insert_test-8",
418
+ "sql": "SELECT id, jsonb_insert(data, '{skills,1}', '\"debugging\"') AS updated_data FROM test_jsonb_insert WHERE id = 2",
419
+ "source": "jsonb_insert_test.rs"
420
+ },
421
+ {
422
+ "name": "jsonb_insert_test-9",
423
+ "sql": "INSERT INTO test_jsonb_insert (id, data) VALUES \n (1, '{\"name\": \"Alice\", \"age\": 25}'),\n (2, '{\"name\": \"Bob\", \"skills\": [\"coding\", \"testing\"]}')",
424
+ "source": "jsonb_insert_test.rs"
425
+ },
426
+ {
427
+ "name": "json_existence_operators_test-1",
428
+ "sql": "CREATE TABLE test_existence (\n id INTEGER PRIMARY KEY,\n data JSONB\n )",
429
+ "source": "json_existence_operators_test.rs"
430
+ },
431
+ {
432
+ "name": "json_existence_operators_test-2",
433
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_key(data, 'name') ORDER BY id",
434
+ "source": "json_existence_operators_test.rs"
435
+ },
436
+ {
437
+ "name": "json_existence_operators_test-3",
438
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_key(data, 'missing_key')",
439
+ "source": "json_existence_operators_test.rs"
440
+ },
441
+ {
442
+ "name": "json_existence_operators_test-4",
443
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_any_key(data, 'email,age,department') ORDER BY id",
444
+ "source": "json_existence_operators_test.rs"
445
+ },
446
+ {
447
+ "name": "json_existence_operators_test-5",
448
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_any_key(data, 'missing1,missing2,missing3')",
449
+ "source": "json_existence_operators_test.rs"
450
+ },
451
+ {
452
+ "name": "json_existence_operators_test-6",
453
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_all_keys(data, 'name,age')",
454
+ "source": "json_existence_operators_test.rs"
455
+ },
456
+ {
457
+ "name": "json_existence_operators_test-7",
458
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_all_keys(data, 'name,email')",
459
+ "source": "json_existence_operators_test.rs"
460
+ },
461
+ {
462
+ "name": "json_existence_operators_test-8",
463
+ "sql": "SELECT id FROM test_existence WHERE pgsqlite_json_has_key(data, 'name') AND pgsqlite_json_has_any_key(data, 'role,department') ORDER BY id",
464
+ "source": "json_existence_operators_test.rs"
465
+ },
466
+ {
467
+ "name": "json_existence_operators_test-9",
468
+ "sql": "INSERT INTO test_existence (id, data) VALUES (5, '[1, 2, 3]')",
469
+ "source": "json_existence_operators_test.rs"
470
+ },
471
+ {
472
+ "name": "json_existence_operators_test-11",
473
+ "sql": "CREATE TABLE users (\n id INTEGER PRIMARY KEY,\n profile JSONB\n )",
474
+ "source": "json_existence_operators_test.rs"
475
+ },
476
+ {
477
+ "name": "json_existence_operators_test-12",
478
+ "sql": "SELECT u.id FROM users u WHERE pgsqlite_json_has_key(u.profile, 'email') ORDER BY u.id",
479
+ "source": "json_existence_operators_test.rs"
480
+ },
481
+ {
482
+ "name": "json_existence_operators_test-13",
483
+ "sql": "SELECT u.id FROM users u WHERE pgsqlite_json_has_any_key(u.profile, 'email,phone') ORDER BY u.id",
484
+ "source": "json_existence_operators_test.rs"
485
+ },
486
+ {
487
+ "name": "json_existence_operators_test-14",
488
+ "sql": "INSERT INTO test_existence (id, data) VALUES \n (1, '{\"name\": \"Alice\", \"age\": 30, \"active\": true}'),\n (2, '{\"name\": \"Bob\", \"email\": \"bob@example.com\", \"role\": \"admin\"}'),\n (3, '{\"title\": \"Manager\", \"department\": \"IT\", \"clearance\": \"high\"}'),\n (4, '{\"items\": [\"laptop\", \"mouse\"], \"budget\": 1000}')",
489
+ "source": "json_existence_operators_test.rs"
490
+ },
491
+ {
492
+ "name": "json_existence_operators_test-15",
493
+ "sql": "INSERT INTO users (id, profile) VALUES \n (1, '{\"name\": \"Alice\", \"email\": \"alice@example.com\"}'),\n (2, '{\"username\": \"bob123\", \"phone\": \"555-1234\"}')",
494
+ "source": "json_existence_operators_test.rs"
495
+ },
496
+ {
497
+ "name": "json_each_text_test-1",
498
+ "sql": "CREATE TABLE test_data (\n id INTEGER PRIMARY KEY,\n data JSONB\n )",
499
+ "source": "json_each_text_test.rs"
500
+ },
501
+ {
502
+ "name": "json_each_text_test-2",
503
+ "sql": "SELECT td.id, e.key, json_each_text_value(td.data, e.key) AS value \n FROM test_data td,\n json_each_text(td.data) AS e\n WHERE e.key = 'inStock'\n ORDER BY td.id",
504
+ "source": "json_each_text_test.rs"
505
+ },
506
+ {
507
+ "name": "json_each_text_test-3",
508
+ "sql": "SELECT key, value FROM json_each_text('{\"name\": \"Alice\", \"age\": 30, \"active\": true, \"score\": null}') AS t ORDER BY key",
509
+ "source": "json_each_text_test.rs"
510
+ },
511
+ {
512
+ "name": "json_each_text_test-4",
513
+ "sql": "SELECT key, value FROM jsonb_each_text('{\"items\": [1, 2, 3], \"meta\": {\"version\": 1.0}}') AS t ORDER BY key",
514
+ "source": "json_each_text_test.rs"
515
+ },
516
+ {
517
+ "name": "json_each_text_test-5",
518
+ "sql": "INSERT INTO test_data (id, data) VALUES \n (1, '{\"quantity\": 10, \"price\": 29.99, \"inStock\": true}'),\n (2, '{\"quantity\": 0, \"price\": 15.50, \"inStock\": false}')",
519
+ "source": "json_each_text_test.rs"
520
+ },
521
+ {
522
+ "name": "json_each_text_test-6",
523
+ "sql": "SELECT key, value \n FROM json_each_text('{\"a\": 1, \"b\": 2, \"c\": 3, \"d\": 4, \"e\": 5}') AS t\n WHERE CAST(value AS INTEGER) > 2\n ORDER BY key",
524
+ "source": "json_each_text_test.rs"
525
+ },
526
+ {
527
+ "name": "json_each_text_test-7",
528
+ "sql": "SELECT key, value FROM json_each_text('{}') AS t",
529
+ "source": "json_each_text_test.rs"
530
+ },
531
+ {
532
+ "name": "json_each_text_test-8",
533
+ "sql": "SELECT key, value FROM json_each_text('[]') AS t",
534
+ "source": "json_each_text_test.rs"
535
+ }
536
+ ]
537
+ }