@rocicorp/zero 0.11.2025011402 → 0.11.2025011801

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 (282) hide show
  1. package/out/{chunk-AII6TS5B.js → chunk-QV5ZN4MA.js} +635 -1834
  2. package/out/chunk-QV5ZN4MA.js.map +7 -0
  3. package/out/react.js.map +2 -2
  4. package/out/shared/src/btree-set.d.ts +34 -0
  5. package/out/shared/src/btree-set.d.ts.map +1 -0
  6. package/out/shared/src/btree-set.js +528 -0
  7. package/out/shared/src/btree-set.js.map +1 -0
  8. package/out/shared/src/expand.d.ts +3 -0
  9. package/out/shared/src/expand.d.ts.map +1 -1
  10. package/out/solid.js +7 -2
  11. package/out/solid.js.map +2 -2
  12. package/out/zero-advanced/src/mod.d.ts +1 -1
  13. package/out/zero-advanced/src/mod.d.ts.map +1 -1
  14. package/out/zero-cache/src/auth/load-schema.d.ts +1 -1
  15. package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -1
  16. package/out/zero-cache/src/auth/write-authorizer.d.ts +1 -1
  17. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  18. package/out/zero-cache/src/auth/write-authorizer.js +3 -6
  19. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  20. package/out/zero-cache/src/db/lite-tables.d.ts +14 -1
  21. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  22. package/out/zero-cache/src/db/lite-tables.js +89 -6
  23. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  24. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  25. package/out/zero-cache/src/db/pg-to-lite.js +3 -1
  26. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  27. package/out/zero-cache/src/db/postgres-replica-identity-enum.d.ts +9 -0
  28. package/out/zero-cache/src/db/postgres-replica-identity-enum.d.ts.map +1 -0
  29. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +7 -0
  30. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -0
  31. package/out/zero-cache/src/db/specs.d.ts +39 -10
  32. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  33. package/out/zero-cache/src/db/specs.js +8 -1
  34. package/out/zero-cache/src/db/specs.js.map +1 -1
  35. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  36. package/out/zero-cache/src/server/change-streamer.js +1 -1
  37. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  38. package/out/zero-cache/src/server/life-cycle.d.ts +2 -2
  39. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  40. package/out/zero-cache/src/server/life-cycle.js +12 -3
  41. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  42. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  43. package/out/zero-cache/src/server/main.js +11 -6
  44. package/out/zero-cache/src/server/main.js.map +1 -1
  45. package/out/zero-cache/src/server/multi/config.d.ts +14 -14
  46. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  47. package/out/zero-cache/src/server/multi/config.js +24 -2
  48. package/out/zero-cache/src/server/multi/config.js.map +1 -1
  49. package/out/zero-cache/src/server/multi/main.d.ts.map +1 -1
  50. package/out/zero-cache/src/server/multi/main.js +28 -8
  51. package/out/zero-cache/src/server/multi/main.js.map +1 -1
  52. package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts +1 -1
  53. package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts.map +1 -1
  54. package/out/zero-cache/src/server/multi/tenant-dispatcher.js +15 -3
  55. package/out/zero-cache/src/server/multi/tenant-dispatcher.js.map +1 -1
  56. package/out/zero-cache/src/server/replicator.js +2 -3
  57. package/out/zero-cache/src/server/replicator.js.map +1 -1
  58. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +4 -4
  59. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  60. package/out/zero-cache/src/services/change-source/pg/change-source.js +50 -32
  61. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  62. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +45 -25
  63. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  64. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
  65. package/out/zero-cache/src/services/change-source/pg/schema/init.js +6 -28
  66. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  67. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +18 -10
  68. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -1
  69. package/out/zero-cache/src/services/change-source/pg/schema/published.js +14 -7
  70. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  71. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +7 -4
  72. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -1
  73. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +29 -1
  74. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  75. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +2 -2
  76. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +8 -4
  78. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  79. package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -1
  80. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +1 -0
  81. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  82. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +10 -10
  83. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +17 -15
  84. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +2 -1
  86. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  87. package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts +1 -0
  88. package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts.map +1 -1
  89. package/out/zero-cache/src/services/change-source/protocol/current/mod.js +1 -0
  90. package/out/zero-cache/src/services/change-source/protocol/current/mod.js.map +1 -1
  91. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +38 -0
  92. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -0
  93. package/out/zero-cache/src/services/change-source/protocol/current/status.js +14 -0
  94. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -0
  95. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +3 -13
  96. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  97. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +3 -10
  98. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  99. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +7 -3
  100. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  101. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +30 -24
  102. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  103. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +6 -4
  104. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  105. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +4 -1
  106. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  107. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -5
  108. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -1
  109. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  110. package/out/zero-cache/src/services/change-streamer/storer.js +18 -10
  111. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  112. package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +1 -1
  113. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +2 -16
  114. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +1 -1
  115. package/out/zero-cache/src/services/http-service.d.ts +1 -1
  116. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  117. package/out/zero-cache/src/services/http-service.js +1 -0
  118. package/out/zero-cache/src/services/http-service.js.map +1 -1
  119. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  120. package/out/zero-cache/src/services/litestream/commands.js +6 -2
  121. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  122. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +1 -1
  123. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  124. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  125. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  126. package/out/zero-cache/src/services/replicator/incremental-sync.js +15 -5
  127. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  128. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  129. package/out/zero-cache/src/services/replicator/replicator.js +4 -2
  130. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  131. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  132. package/out/zero-cache/src/services/view-syncer/cvr-store.js +20 -51
  133. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  134. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -5
  135. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  136. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +18 -35
  137. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  138. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  139. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  140. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  141. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  142. package/out/zero-cache/src/types/processes.js +17 -2
  143. package/out/zero-cache/src/types/processes.js.map +1 -1
  144. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  145. package/out/zero-cache/src/types/row-key.js +7 -1
  146. package/out/zero-cache/src/types/row-key.js.map +1 -1
  147. package/out/zero-cache/src/types/ws.d.ts +4 -0
  148. package/out/zero-cache/src/types/ws.d.ts.map +1 -0
  149. package/out/zero-cache/src/types/ws.js +19 -0
  150. package/out/zero-cache/src/types/ws.js.map +1 -0
  151. package/out/zero-client/src/client/context.d.ts.map +1 -1
  152. package/out/zero-client/src/client/crud.d.ts +3 -4
  153. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  154. package/out/zero-client/src/client/keys.d.ts +2 -2
  155. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  156. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  157. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  158. package/out/zero-client/src/client/zero.d.ts +1 -1
  159. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  160. package/out/zero-client/src/mod.d.ts +5 -4
  161. package/out/zero-client/src/mod.d.ts.map +1 -1
  162. package/out/zero-react/src/use-query.d.ts +6 -5
  163. package/out/zero-react/src/use-query.d.ts.map +1 -1
  164. package/out/zero-schema/src/builder/relationship-builder.d.ts +50 -0
  165. package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -0
  166. package/out/zero-schema/src/builder/relationship-builder.js +24 -0
  167. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  168. package/out/zero-schema/src/builder/schema-builder.d.ts +40 -0
  169. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -0
  170. package/out/zero-schema/src/builder/schema-builder.js +51 -0
  171. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  172. package/out/zero-schema/src/builder/table-builder.d.ts +69 -0
  173. package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -0
  174. package/out/zero-schema/src/builder/table-builder.js +102 -0
  175. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  176. package/out/zero-schema/src/mod.d.ts +2 -2
  177. package/out/zero-schema/src/mod.d.ts.map +1 -1
  178. package/out/zero-schema/src/permissions.d.ts +11 -12
  179. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  180. package/out/zero-schema/src/schema-config.d.ts +2 -4
  181. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  182. package/out/zero-schema/src/schema-config.js +12 -61
  183. package/out/zero-schema/src/schema-config.js.map +1 -1
  184. package/out/zero-schema/src/table-schema.d.ts +28 -53
  185. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  186. package/out/zero-schema/src/table-schema.js +6 -13
  187. package/out/zero-schema/src/table-schema.js.map +1 -1
  188. package/out/zero-solid/src/solid-view.d.ts +4 -3
  189. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  190. package/out/zero-solid/src/use-query.d.ts +5 -4
  191. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  192. package/out/zero.js +17 -7
  193. package/out/zql/src/ivm/exists.d.ts +1 -1
  194. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  195. package/out/zql/src/ivm/exists.js +3 -3
  196. package/out/zql/src/ivm/exists.js.map +1 -1
  197. package/out/zql/src/ivm/fan-in.d.ts +1 -1
  198. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  199. package/out/zql/src/ivm/fan-in.js +3 -2
  200. package/out/zql/src/ivm/fan-in.js.map +1 -1
  201. package/out/zql/src/ivm/filter.d.ts +1 -1
  202. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  203. package/out/zql/src/ivm/filter.js +3 -3
  204. package/out/zql/src/ivm/filter.js.map +1 -1
  205. package/out/zql/src/ivm/join.d.ts +1 -1
  206. package/out/zql/src/ivm/join.d.ts.map +1 -1
  207. package/out/zql/src/ivm/join.js +2 -3
  208. package/out/zql/src/ivm/join.js.map +1 -1
  209. package/out/zql/src/ivm/memory-source.js +8 -10
  210. package/out/zql/src/ivm/memory-source.js.map +1 -1
  211. package/out/zql/src/ivm/memory-storage.d.ts.map +1 -1
  212. package/out/zql/src/ivm/operator.d.ts +5 -0
  213. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  214. package/out/zql/src/ivm/operator.js +9 -0
  215. package/out/zql/src/ivm/operator.js.map +1 -1
  216. package/out/zql/src/ivm/skip.d.ts +1 -1
  217. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  218. package/out/zql/src/ivm/skip.js +2 -3
  219. package/out/zql/src/ivm/skip.js.map +1 -1
  220. package/out/zql/src/ivm/take.d.ts +1 -1
  221. package/out/zql/src/ivm/take.d.ts.map +1 -1
  222. package/out/zql/src/ivm/take.js +2 -3
  223. package/out/zql/src/ivm/take.js.map +1 -1
  224. package/out/zql/src/ivm/view.d.ts +3 -3
  225. package/out/zql/src/ivm/view.d.ts.map +1 -1
  226. package/out/zql/src/query/auth-query.d.ts +9 -10
  227. package/out/zql/src/query/auth-query.d.ts.map +1 -1
  228. package/out/zql/src/query/auth-query.js +6 -7
  229. package/out/zql/src/query/auth-query.js.map +1 -1
  230. package/out/zql/src/query/expression.d.ts +11 -13
  231. package/out/zql/src/query/expression.d.ts.map +1 -1
  232. package/out/zql/src/query/expression.js +1 -1
  233. package/out/zql/src/query/expression.js.map +1 -1
  234. package/out/zql/src/query/query-impl.d.ts +26 -25
  235. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  236. package/out/zql/src/query/query-impl.js +76 -52
  237. package/out/zql/src/query/query-impl.js.map +1 -1
  238. package/out/zql/src/query/query-internal.d.ts +5 -5
  239. package/out/zql/src/query/query-internal.d.ts.map +1 -1
  240. package/out/zql/src/query/query.d.ts +37 -80
  241. package/out/zql/src/query/query.d.ts.map +1 -1
  242. package/out/zql/src/query/query.js +0 -1
  243. package/out/zql/src/query/query.js.map +1 -1
  244. package/out/zqlite/src/table-source.d.ts.map +1 -1
  245. package/out/zqlite/src/table-source.js +33 -11
  246. package/out/zqlite/src/table-source.js.map +1 -1
  247. package/package.json +4 -4
  248. package/out/btree/b+tree.d.ts +0 -471
  249. package/out/btree/b+tree.d.ts.map +0 -1
  250. package/out/btree/b+tree.js +0 -1708
  251. package/out/btree/b+tree.js.map +0 -1
  252. package/out/btree/interfaces.d.ts +0 -270
  253. package/out/btree/interfaces.d.ts.map +0 -1
  254. package/out/btree/interfaces.js +0 -3
  255. package/out/btree/interfaces.js.map +0 -1
  256. package/out/btree/src/mod.d.ts +0 -2
  257. package/out/btree/src/mod.d.ts.map +0 -1
  258. package/out/btree/src/mod.js +0 -2
  259. package/out/btree/src/mod.js.map +0 -1
  260. package/out/chunk-AII6TS5B.js.map +0 -7
  261. package/out/shared/src/sorted-entries.d.ts +0 -2
  262. package/out/shared/src/sorted-entries.d.ts.map +0 -1
  263. package/out/shared/src/sorted-entries.js +0 -6
  264. package/out/shared/src/sorted-entries.js.map +0 -1
  265. package/out/zero-cache/src/db/queries.d.ts +0 -24
  266. package/out/zero-cache/src/db/queries.d.ts.map +0 -1
  267. package/out/zero-cache/src/db/queries.js +0 -60
  268. package/out/zero-cache/src/db/queries.js.map +0 -1
  269. package/out/zero-schema/src/column.d.ts +0 -79
  270. package/out/zero-schema/src/column.d.ts.map +0 -1
  271. package/out/zero-schema/src/normalize-table-schema.d.ts +0 -51
  272. package/out/zero-schema/src/normalize-table-schema.d.ts.map +0 -1
  273. package/out/zero-schema/src/normalize-table-schema.js +0 -122
  274. package/out/zero-schema/src/normalize-table-schema.js.map +0 -1
  275. package/out/zero-schema/src/normalized-schema.d.ts +0 -22
  276. package/out/zero-schema/src/normalized-schema.d.ts.map +0 -1
  277. package/out/zero-schema/src/normalized-schema.js +0 -48
  278. package/out/zero-schema/src/normalized-schema.js.map +0 -1
  279. package/out/zero-schema/src/schema.d.ts +0 -9
  280. package/out/zero-schema/src/schema.d.ts.map +0 -1
  281. package/out/zero-schema/src/schema.js +0 -9
  282. package/out/zero-schema/src/schema.js.map +0 -1
@@ -1,6 +1,5 @@
1
1
  import { getVersionHistory, runSchemaMigrations, } from '../../../../db/migration.js';
2
2
  import { AutoResetSignal } from '../../../change-streamer/schema/tables.js';
3
- import { getPublicationInfo } from './published.js';
4
3
  import { dropShard, setupTablesAndReplication, unescapedSchema, } from './shard.js';
5
4
  /**
6
5
  * Initializes a shard for initial sync.
@@ -27,34 +26,13 @@ async function runShardMigrations(lc, db, shardConfig) {
27
26
  minSafeVersion: 1,
28
27
  };
29
28
  const schemaVersionMigrationMap = {
30
- 2: { migrateSchema: (_, tx) => migrateV1toV2(tx, shardConfig.id) },
29
+ 3: {
30
+ migrateSchema: () => {
31
+ throw new AutoResetSignal('resetting to upgrade shard schema');
32
+ },
33
+ minSafeVersion: 3,
34
+ },
31
35
  };
32
36
  await runSchemaMigrations(lc, `upstream-shard-${shardConfig.id}`, unescapedSchema(shardConfig.id), db, setupMigration, schemaVersionMigrationMap);
33
37
  }
34
- // v1 required superuser / event trigger installation.
35
- // Therefore, to migrate from v1 to v2:
36
- //
37
- // - Add the "ddlDetection" and "initialSchema" columns to "shardConfig"
38
- // - Set "ddlDetection" to true
39
- // - Populate the "initialSchema" to the current published schema
40
- //
41
- // The last step technically may not match the "initial" schema, but
42
- // currently it is only used for "ddlDetection = false" setups, so
43
- // it does not matter.
44
- async function migrateV1toV2(tx, shardID) {
45
- const s = unescapedSchema(shardID);
46
- const [{ publications }] = await tx `
47
- SELECT publications FROM ${tx(s)}."shardConfig"
48
- `;
49
- const { tables, indexes } = await getPublicationInfo(tx, publications);
50
- const publishedSchema = { tables, indexes };
51
- void tx `
52
- ALTER TABLE ${tx(s)}."shardConfig" ADD "ddlDetection" BOOL`.execute();
53
- void tx `
54
- ALTER TABLE ${tx(s)}."shardConfig" ADD "initialSchema" JSON`.execute();
55
- await tx `
56
- UPDATE ${tx(s)}."shardConfig"
57
- SET "ddlDetection" = true,
58
- "initialSchema" = ${publishedSchema}`;
59
- }
60
38
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/init.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAC,eAAe,EAAC,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EAAC,kBAAkB,EAAuB,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,EAAC,EAAE,EAAC,GAAG,WAAW,CAAC;IACzB,MAAM,EAAC,aAAa,EAAC,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,cAAc,GAAc;QAChC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC;QACzE,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,yBAAyB,GAA4B;QACzD,CAAC,EAAE,EAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,EAAC;KACjE,CAAC;IAEF,MAAM,mBAAmB,CACvB,EAAE,EACF,kBAAkB,WAAW,CAAC,EAAE,EAAE,EAClC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,EAC/B,EAAE,EACF,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,uCAAuC;AACvC,EAAE;AACF,wEAAwE;AACxE,+BAA+B;AAC/B,iEAAiE;AACjE,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,sBAAsB;AACtB,KAAK,UAAU,aAAa,CAAC,EAAuB,EAAE,OAAe;IACnE,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,MAAM,EAAE,CAA4B;+BAChC,EAAE,CAAC,CAAC,CAAC;GACjC,CAAC;IACF,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,eAAe,GAAoB,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC;IAE3D,KAAK,EAAE,CAAA;gBACO,EAAE,CAAC,CAAC,CAAC,wCAAwC,CAAC,OAAO,EAAE,CAAC;IACtE,KAAK,EAAE,CAAA;gBACO,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,OAAO,EAAE,CAAC;IACvE,MAAM,EAAE,CAAA;aACG,EAAE,CAAC,CAAC,CAAC;;8BAEY,eAAe,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/init.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAC,eAAe,EAAC,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,EAAC,EAAE,EAAC,GAAG,WAAW,CAAC;IACzB,MAAM,EAAC,aAAa,EAAC,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,EAAc,EACd,EAAc,EACd,WAAwB;IAExB,MAAM,cAAc,GAAc;QAChC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC;QACzE,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,yBAAyB,GAA4B;QACzD,CAAC,EAAE;YACD,aAAa,EAAE,GAAG,EAAE;gBAClB,MAAM,IAAI,eAAe,CAAC,mCAAmC,CAAC,CAAC;YACjE,CAAC;YACD,cAAc,EAAE,CAAC;SAClB;KACF,CAAC;IAEF,MAAM,mBAAmB,CACvB,EAAE,EACF,kBAAkB,WAAW,CAAC,EAAE,EAAE,EAClC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,EAC/B,EAAE,EACF,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC"}
@@ -6,20 +6,20 @@ export declare const publishedSchema: v.ObjectType<Omit<{
6
6
  tables: v.ArrayType<v.ObjectType<Omit<Omit<{
7
7
  name: v.Type<string>;
8
8
  columns: v.Type<Record<string, {
9
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
9
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
10
10
  characterMaximumLength?: number | null | undefined;
11
11
  notNull?: boolean | null | undefined;
12
12
  dflt?: string | null | undefined;
13
13
  pos: number;
14
14
  dataType: string;
15
15
  }>>;
16
- primaryKey: v.ArrayType<v.Type<string>>;
16
+ primaryKey: v.Optional<string[]>;
17
17
  }, "schema"> & {
18
18
  schema: v.Type<string>;
19
- }, "publications" | "oid" | "columns"> & {
19
+ }, "publications" | "oid" | "columns" | "replicaIdentity"> & {
20
20
  oid: v.Type<number>;
21
21
  columns: v.Type<Record<string, {
22
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
22
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
23
23
  characterMaximumLength?: number | null | undefined;
24
24
  notNull?: boolean | null | undefined;
25
25
  dflt?: string | null | undefined;
@@ -27,18 +27,22 @@ export declare const publishedSchema: v.ObjectType<Omit<{
27
27
  dataType: string;
28
28
  typeOID: number;
29
29
  }>>;
30
+ replicaIdentity: v.Optional<"n" | "d" | "f" | "i">;
30
31
  publications: v.Type<Record<string, {
31
32
  rowFilter: string | null;
32
33
  }>>;
33
34
  }, undefined>>;
34
35
  }, "indexes"> & {
35
- indexes: v.ArrayType<v.ObjectType<Omit<{
36
+ indexes: v.ArrayType<v.ObjectType<Omit<Omit<{
36
37
  name: v.Type<string>;
37
38
  tableName: v.Type<string>;
38
39
  unique: v.Type<boolean>;
39
40
  columns: v.Type<Record<string, "ASC" | "DESC">>;
40
41
  }, "schema"> & {
41
42
  schema: v.Type<string>;
43
+ }, "isReplicaIdentity" | "isImmediate"> & {
44
+ isReplicaIdentity: v.Optional<boolean>;
45
+ isImmediate: v.Optional<boolean>;
42
46
  }, undefined>>;
43
47
  }, undefined>;
44
48
  export type PublishedSchema = v.Infer<typeof publishedSchema>;
@@ -46,20 +50,20 @@ declare const publicationInfoSchema: v.ObjectType<Omit<Omit<{
46
50
  tables: v.ArrayType<v.ObjectType<Omit<Omit<{
47
51
  name: v.Type<string>;
48
52
  columns: v.Type<Record<string, {
49
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
53
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
50
54
  characterMaximumLength?: number | null | undefined;
51
55
  notNull?: boolean | null | undefined;
52
56
  dflt?: string | null | undefined;
53
57
  pos: number;
54
58
  dataType: string;
55
59
  }>>;
56
- primaryKey: v.ArrayType<v.Type<string>>;
60
+ primaryKey: v.Optional<string[]>;
57
61
  }, "schema"> & {
58
62
  schema: v.Type<string>;
59
- }, "publications" | "oid" | "columns"> & {
63
+ }, "publications" | "oid" | "columns" | "replicaIdentity"> & {
60
64
  oid: v.Type<number>;
61
65
  columns: v.Type<Record<string, {
62
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
66
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
63
67
  characterMaximumLength?: number | null | undefined;
64
68
  notNull?: boolean | null | undefined;
65
69
  dflt?: string | null | undefined;
@@ -67,18 +71,22 @@ declare const publicationInfoSchema: v.ObjectType<Omit<Omit<{
67
71
  dataType: string;
68
72
  typeOID: number;
69
73
  }>>;
74
+ replicaIdentity: v.Optional<"n" | "d" | "f" | "i">;
70
75
  publications: v.Type<Record<string, {
71
76
  rowFilter: string | null;
72
77
  }>>;
73
78
  }, undefined>>;
74
79
  }, "indexes"> & {
75
- indexes: v.ArrayType<v.ObjectType<Omit<{
80
+ indexes: v.ArrayType<v.ObjectType<Omit<Omit<{
76
81
  name: v.Type<string>;
77
82
  tableName: v.Type<string>;
78
83
  unique: v.Type<boolean>;
79
84
  columns: v.Type<Record<string, "ASC" | "DESC">>;
80
85
  }, "schema"> & {
81
86
  schema: v.Type<string>;
87
+ }, "isReplicaIdentity" | "isImmediate"> & {
88
+ isReplicaIdentity: v.Optional<boolean>;
89
+ isImmediate: v.Optional<boolean>;
82
90
  }, undefined>>;
83
91
  }, "publications"> & {
84
92
  publications: v.ArrayType<v.ObjectType<{
@@ -1 +1 @@
1
- {"version":3,"file":"published.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/published.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAG5D,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAqEzD;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,UAwD3D;AAKD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAE3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAY9D,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAEzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,eAAe,CAAC,CAiD1B"}
1
+ {"version":3,"file":"published.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/published.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAG5D,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAuEzD;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,UA6D3D;AAKD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAE3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAY9D,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAEzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,eAAe,CAAC,CAiD1B"}
@@ -1,13 +1,14 @@
1
1
  import { literal } from 'pg-format';
2
2
  import { equals } from '../../../../../../shared/src/set-utils.js';
3
3
  import * as v from '../../../../../../shared/src/valita.js';
4
- import { indexSpec, publishedTableSpec } from '../../../../db/specs.js';
4
+ import { publishedIndexSpec, publishedTableSpec } from '../../../../db/specs.js';
5
5
  export function publishedTableQuery(publications) {
6
6
  return `
7
7
  WITH published_columns AS (SELECT
8
8
  pc.oid::int8 AS "oid",
9
9
  nspname AS "schema",
10
10
  pc.relname AS "name",
11
+ pc.relreplident AS "replicaIdentity",
11
12
  attnum AS "pos",
12
13
  attname AS "col",
13
14
  pt.typname AS "type",
@@ -37,6 +38,7 @@ tables AS (SELECT json_build_object(
37
38
  'oid', "oid",
38
39
  'schema', "schema",
39
40
  'name', "name",
41
+ 'replicaIdentity', "replicaIdentity",
40
42
  'columns', json_object_agg(
41
43
  DISTINCT
42
44
  col,
@@ -67,7 +69,7 @@ tables AS (SELECT json_build_object(
67
69
  "publication",
68
70
  jsonb_build_object('rowFilter', "rowFilter")
69
71
  )
70
- ) AS "table" FROM published_columns GROUP BY "schema", "name", "oid")
72
+ ) AS "table" FROM published_columns GROUP BY "schema", "name", "oid", "replicaIdentity")
71
73
 
72
74
  SELECT COALESCE(json_agg("table"), '[]'::json) as "tables" FROM tables
73
75
  `;
@@ -92,7 +94,9 @@ export function indexDefinitionsQuery(publications) {
92
94
  pg_indexes.indexname as "name",
93
95
  index_column.name as "col",
94
96
  CASE WHEN pg_index.indoption[index_column.pos-1] & 1 = 1 THEN 'DESC' ELSE 'ASC' END as "dir",
95
- pg_index.indisunique as "unique"
97
+ pg_index.indisunique as "unique",
98
+ pg_index.indisreplident as "isReplicaIdentity",
99
+ pg_index.indimmediate as "isImmediate"
96
100
  FROM pg_indexes
97
101
  JOIN pg_namespace ON pg_indexes.schemaname = pg_namespace.nspname
98
102
  JOIN pg_class pc ON
@@ -109,8 +113,9 @@ export function indexDefinitionsQuery(publications) {
109
113
  ) AS index_column ON true
110
114
  LEFT JOIN pg_constraint ON pg_constraint.conindid = pc.oid
111
115
  WHERE pb.pubname IN (${literal(publications)})
112
- AND pg_constraint.contype is distinct from 'p'
113
- AND pg_constraint.contype is distinct from 'f'
116
+ AND pg_index.indexprs IS NULL
117
+ AND pg_index.indpred IS NULL
118
+ AND (pg_constraint.contype IS NULL OR pg_constraint.contype IN ('p', 'u'))
114
119
  ORDER BY
115
120
  pg_indexes.schemaname,
116
121
  pg_indexes.tablename,
@@ -122,15 +127,17 @@ export function indexDefinitionsQuery(publications) {
122
127
  'tableName', "tableName",
123
128
  'name', "name",
124
129
  'unique', "unique",
130
+ 'isReplicaIdentity', "isReplicaIdentity",
131
+ 'isImmediate', "isImmediate",
125
132
  'columns', json_object_agg(DISTINCT "col", "dir")
126
133
  ) AS index FROM indexed_columns
127
- GROUP BY "schema", "tableName", "name", "unique")
134
+ GROUP BY "schema", "tableName", "name", "unique", "isReplicaIdentity", "isImmediate")
128
135
 
129
136
  SELECT COALESCE(json_agg("index"), '[]'::json) as "indexes" FROM indexes
130
137
  `;
131
138
  }
132
139
  const publishedTablesSchema = v.object({ tables: v.array(publishedTableSpec) });
133
- const publishedIndexesSchema = v.object({ indexes: v.array(indexSpec) });
140
+ const publishedIndexesSchema = v.object({ indexes: v.array(publishedIndexSpec) });
134
141
  export const publishedSchema = publishedTablesSchema.extend(publishedIndexesSchema.shape);
135
142
  const publicationSchema = v.object({
136
143
  pubname: v.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"published.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/published.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"published.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/published.ts"],"names":[],"mappings":"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"}
@@ -15,12 +15,13 @@ declare const internalShardConfigSchema: v.ObjectType<{
15
15
  ddlDetection: v.Type<boolean>;
16
16
  initialSchema: v.Type<{
17
17
  tables: {
18
+ primaryKey?: string[] | undefined;
19
+ replicaIdentity?: "n" | "d" | "f" | "i" | undefined;
18
20
  name: string;
19
21
  schema: string;
20
- primaryKey: string[];
21
22
  oid: number;
22
23
  columns: Record<string, {
23
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
24
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
24
25
  characterMaximumLength?: number | null | undefined;
25
26
  notNull?: boolean | null | undefined;
26
27
  dflt?: string | null | undefined;
@@ -33,11 +34,13 @@ declare const internalShardConfigSchema: v.ObjectType<{
33
34
  }>;
34
35
  }[];
35
36
  indexes: {
37
+ isReplicaIdentity?: boolean | undefined;
38
+ isImmediate?: boolean | undefined;
36
39
  name: string;
37
- tableName: string;
40
+ schema: string;
38
41
  columns: Record<string, "ASC" | "DESC">;
42
+ tableName: string;
39
43
  unique: boolean;
40
- schema: string;
41
44
  }[];
42
45
  } | null>;
43
46
  }, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAE7E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAIxB,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,UACtB,MAAM,YACrB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,UAExC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,UAE9C;AAED,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,2BAA2B,WAAW,CAAC;AAOpD,eAAO,MAAM,YAAY,0nBAgBxB,CAAC;AA6CF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAI7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAc5E,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,eAAe,iBAKnC;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,mBAAmB,EACvB,EAAC,EAAE,EAAE,YAAY,EAAC,EAAE,WAAW,iBA4DhC;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,QAkB3B"}
1
+ {"version":3,"file":"shard.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAE5D,OAAO,KAAK,EAAC,UAAU,EAAE,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAE7E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAIxB,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,UACtB,MAAM,YACrB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,UAExC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,UAE9C;AAED,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,2BAA2B,WAAW,CAAC;AAOpD,eAAO,MAAM,YAAY,0nBAgBxB,CAAC;AA6CF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAI7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAc5E,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,EAAC,MAAM,EAAE,OAAO,EAAC,EAAE,eAAe,iBAKnC;AAED,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,mBAAmB,EACvB,EAAC,EAAE,EAAE,YAAY,EAAC,EAAE,WAAW,iBA8DhC;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,QAkB3B"}
@@ -3,9 +3,10 @@ import { literal } from 'pg-format';
3
3
  import postgres from 'postgres';
4
4
  import { assert } from '../../../../../../shared/src/asserts.js';
5
5
  import * as v from '../../../../../../shared/src/valita.js';
6
+ import { Default } from '../../../../db/postgres-replica-identity-enum.js';
6
7
  import { id } from '../../../../types/sql.js';
7
8
  import { createEventTriggerStatements } from './ddl.js';
8
- import { publishedSchema, } from './published.js';
9
+ import { getPublicationInfo, publishedSchema, } from './published.js';
9
10
  import { validate } from './validation.js';
10
11
  // Creates a function that appends `_SHARD_ID` to the input.
11
12
  export function append(shardID) {
@@ -152,6 +153,7 @@ export async function setupTablesAndReplication(lc, tx, { id, publications }) {
152
153
  }
153
154
  // Setup the global tables and shard tables / publications.
154
155
  await tx.unsafe(GLOBAL_SETUP + shardSetup(id, allPublications));
156
+ await setReplicaIdentityForTablesWithoutPrimaryKeys(lc, tx, allPublications);
155
157
  try {
156
158
  await tx.savepoint(sub => sub.unsafe(triggerSetup(id, allPublications)));
157
159
  }
@@ -180,4 +182,30 @@ export function validatePublications(lc, shardID, published) {
180
182
  });
181
183
  published.tables.forEach(table => validate(lc, shardID, table));
182
184
  }
185
+ async function setReplicaIdentityForTablesWithoutPrimaryKeys(lc, db, publications) {
186
+ const pubs = await getPublicationInfo(db, publications);
187
+ for (const table of pubs.tables) {
188
+ if (!table.primaryKey?.length && table.replicaIdentity === Default) {
189
+ // Look for an index that can serve as the REPLICA IDENTITY USING INDEX. It must be:
190
+ // - UNIQUE
191
+ // - NOT NULL columns
192
+ // - not deferrable (i.e. isImmediate)
193
+ // - not partial (are already filtered out)
194
+ //
195
+ // https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-REPLICA-IDENTITY
196
+ const { schema, name: tableName } = table;
197
+ for (const { columns, name: indexName } of pubs.indexes.filter(idx => idx.schema === schema &&
198
+ idx.tableName === tableName &&
199
+ idx.unique &&
200
+ idx.isImmediate)) {
201
+ if (Object.keys(columns).some(col => !table.columns[col].notNull)) {
202
+ continue; // Only indexes with all NOT NULL columns are suitable.
203
+ }
204
+ lc.info?.(`setting "${indexName}" as the REPLICA IDENTITY for "${tableName}"`);
205
+ await db `ALTER TABLE ${db(schema)}.${db(tableName)} REPLICA IDENTITY USING INDEX ${db(indexName)}`;
206
+ break;
207
+ }
208
+ }
209
+ }
210
+ }
183
211
  //# sourceMappingURL=shard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shard.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/shard.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { LogContext } from '@rocicorp/logger';
2
- import type { TableSpec } from '../../../../db/specs.js';
3
- export declare function validate(lc: LogContext, shardID: string, table: TableSpec): void;
2
+ import type { PublishedTableSpec } from '../../../../db/specs.js';
3
+ export declare function validate(lc: LogContext, shardID: string, table: PublishedTableSpec): void;
4
4
  export declare class UnsupportedTableSchemaError extends Error {
5
5
  readonly name = "UnsupportedTableSchemaError";
6
6
  constructor(msg: string);
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAMvD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QA+BzE;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,iCAAiC;gBAElC,GAAG,EAAE,MAAM;CAGxB"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAMhE,wBAAgB,QAAQ,CACtB,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,QAmC1B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,iCAAiC;gBAElC,GAAG,EAAE,MAAM;CAGxB"}
@@ -1,4 +1,5 @@
1
- import { warnIfDataTypeSupported } from '../../../../db/pg-to-lite.js';
1
+ import { mapPostgresToLite, warnIfDataTypeSupported, } from '../../../../db/pg-to-lite.js';
2
+ import { Default } from '../../../../db/postgres-replica-identity-enum.js';
2
3
  import { ZERO_VERSION_COLUMN_NAME } from '../../../replicator/schema/replication-state.js';
3
4
  import { unescapedSchema } from './shard.js';
4
5
  const ALLOWED_IDENTIFIER_CHARS = /^[A-Za-z_]+[A-Za-z0-9_-]*$/;
@@ -11,13 +12,16 @@ export function validate(lc, shardID, table) {
11
12
  if (ZERO_VERSION_COLUMN_NAME in table.columns) {
12
13
  throw new UnsupportedTableSchemaError(`Table "${table.name}" uses reserved column name "${ZERO_VERSION_COLUMN_NAME}"`);
13
14
  }
14
- if (table.primaryKey.length === 0) {
15
- throw new UnsupportedTableSchemaError(`Table "${table.name}" does not have a PRIMARY KEY`);
15
+ if (!table.primaryKey?.length && table.replicaIdentity === Default) {
16
+ lc.warn?.(`\n\n\n` +
17
+ `Table "${table.name}" needs a primary key in order to be synced to clients. ` +
18
+ `Add one with 'ALTER TABLE "${table.name}" ADD PRIMARY KEY (...)'.` +
19
+ `\n\n\n`);
16
20
  }
17
21
  if (!ALLOWED_IDENTIFIER_CHARS.test(table.name)) {
18
22
  throw new UnsupportedTableSchemaError(`Table "${table.name}" has invalid characters.`);
19
23
  }
20
- for (const [col, spec] of Object.entries(table.columns)) {
24
+ for (const [col, spec] of Object.entries(mapPostgresToLite(table).columns)) {
21
25
  if (!ALLOWED_IDENTIFIER_CHARS.test(col)) {
22
26
  throw new UnsupportedTableSchemaError(`Column "${col}" in table "${table.name}" has invalid characters.`);
23
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAC,wBAAwB,EAAC,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAE9D,MAAM,UAAU,QAAQ,CAAC,EAAc,EAAE,OAAe,EAAE,KAAgB;IACxE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,wFAAwF;QACxF,MAAM,IAAI,2BAA2B,CACnC,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,wBAAwB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,IAAI,2BAA2B,CACnC,UAAU,KAAK,CAAC,IAAI,gCAAgC,wBAAwB,GAAG,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,2BAA2B,CACnC,UAAU,KAAK,CAAC,IAAI,+BAA+B,CACpD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,2BAA2B,CACnC,UAAU,KAAK,CAAC,IAAI,2BAA2B,CAChD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,2BAA2B,CACnC,WAAW,GAAG,eAAe,KAAK,CAAC,IAAI,2BAA2B,CACnE,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,IAAI,GAAG,6BAA6B,CAAC;IAE9C,YAAY,GAAW;QACrB,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/pg/schema/validation.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,OAAO,EAAC,MAAM,kDAAkD,CAAC;AAEzE,OAAO,EAAC,wBAAwB,EAAC,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAE9D,MAAM,UAAU,QAAQ,CACtB,EAAc,EACd,OAAe,EACf,KAAyB;IAEzB,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,wFAAwF;QACxF,MAAM,IAAI,2BAA2B,CACnC,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,wBAAwB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,IAAI,2BAA2B,CACnC,UAAU,KAAK,CAAC,IAAI,gCAAgC,wBAAwB,GAAG,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;QACnE,EAAE,CAAC,IAAI,EAAE,CACP,QAAQ;YACN,UAAU,KAAK,CAAC,IAAI,0DAA0D;YAC9E,8BAA8B,KAAK,CAAC,IAAI,2BAA2B;YACnE,QAAQ,CACX,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,2BAA2B,CACnC,UAAU,KAAK,CAAC,IAAI,2BAA2B,CAChD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,2BAA2B,CACnC,WAAW,GAAG,eAAe,KAAK,CAAC,IAAI,2BAA2B,CACnE,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC3C,IAAI,GAAG,6BAA6B,CAAC;IAE9C,YAAY,GAAW;QACrB,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-schema.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/sync-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQjD,OAAO,EAAc,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"sync-schema.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/sync-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQjD,OAAO,EAAc,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD,wBAAsB,cAAc,CAClC,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -12,6 +12,7 @@ export async function initSyncSchema(log, debugName, shard, dbPath, upstreamURI,
12
12
  migrateSchema: () => {
13
13
  throw new AutoResetSignal('resetting replica at obsolete v1');
14
14
  },
15
+ minSafeVersion: 2,
15
16
  },
16
17
  };
17
18
  await runSchemaMigrations(log, debugName, dbPath, setupMigration, schemaVersionMigrationMap);
@@ -1 +1 @@
1
- {"version":3,"file":"sync-schema.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/sync-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,GAGpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,eAAe,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAC,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AAGvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAe,EACf,SAAiB,EACjB,KAAkB,EAClB,MAAc,EACd,WAAmB,EACnB,WAA+B;IAE/B,MAAM,cAAc,GAAc;QAChC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACzB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC;QACvD,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,yBAAyB,GAA4B;QACzD,oEAAoE;QACpE,CAAC,EAAE;YACD,aAAa,EAAE,GAAG,EAAE;gBAClB,MAAM,IAAI,eAAe,CAAC,kCAAkC,CAAC,CAAC;YAChE,CAAC;SACF;KACF,CAAC;IAEF,MAAM,mBAAmB,CACvB,GAAG,EACH,SAAS,EACT,MAAM,EACN,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sync-schema.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/sync-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,GAGpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,eAAe,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAC,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AAGvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAe,EACf,SAAiB,EACjB,KAAkB,EAClB,MAAc,EACd,WAAmB,EACnB,WAA+B;IAE/B,MAAM,cAAc,GAAc;QAChC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACzB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC;QACvD,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,MAAM,yBAAyB,GAA4B;QACzD,oEAAoE;QACpE,CAAC,EAAE;YACD,aAAa,EAAE,GAAG,EAAE;gBAClB,MAAM,IAAI,eAAe,CAAC,kCAAkC,CAAC,CAAC;YAChE,CAAC;YACD,cAAc,EAAE,CAAC;SAClB;KACF,CAAC;IAEF,MAAM,mBAAmB,CACvB,GAAG,EACH,SAAS,EACT,MAAM,EACN,cAAc,EACd,yBAAyB,CAC1B,CAAC;AACJ,CAAC"}
@@ -78,14 +78,14 @@ export declare const createTableSchema: v.ObjectType<{
78
78
  spec: v.ObjectType<Omit<{
79
79
  name: v.Type<string>;
80
80
  columns: v.Type<Record<string, {
81
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
81
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
82
82
  characterMaximumLength?: number | null | undefined;
83
83
  notNull?: boolean | null | undefined;
84
84
  dflt?: string | null | undefined;
85
85
  pos: number;
86
86
  dataType: string;
87
87
  }>>;
88
- primaryKey: v.ArrayType<v.Type<string>>;
88
+ primaryKey: v.Optional<string[]>;
89
89
  }, "schema"> & {
90
90
  schema: v.Type<string>;
91
91
  }, undefined>;
@@ -112,7 +112,7 @@ export declare const addColumnSchema: v.ObjectType<{
112
112
  spec: v.ObjectType<{
113
113
  pos: v.Type<number>;
114
114
  dataType: v.Type<string>;
115
- pgTypeClass: v.Optional<"e" | "b" | "c" | "d" | "p" | "r" | "m">;
115
+ pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
116
116
  characterMaximumLength: v.Optional<number | null>;
117
117
  notNull: v.Optional<boolean | null>;
118
118
  dflt: v.Optional<string | null>;
@@ -130,7 +130,7 @@ export declare const updateColumnSchema: v.ObjectType<{
130
130
  spec: v.ObjectType<{
131
131
  pos: v.Type<number>;
132
132
  dataType: v.Type<string>;
133
- pgTypeClass: v.Optional<"e" | "b" | "c" | "d" | "p" | "r" | "m">;
133
+ pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
134
134
  characterMaximumLength: v.Optional<number | null>;
135
135
  notNull: v.Optional<boolean | null>;
136
136
  dflt: v.Optional<string | null>;
@@ -141,7 +141,7 @@ export declare const updateColumnSchema: v.ObjectType<{
141
141
  spec: v.ObjectType<{
142
142
  pos: v.Type<number>;
143
143
  dataType: v.Type<string>;
144
- pgTypeClass: v.Optional<"e" | "b" | "c" | "d" | "p" | "r" | "m">;
144
+ pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
145
145
  characterMaximumLength: v.Optional<number | null>;
146
146
  notNull: v.Optional<boolean | null>;
147
147
  dflt: v.Optional<string | null>;
@@ -243,14 +243,14 @@ export declare const dataChangeSchema: v.UnionType<[v.ObjectType<{
243
243
  spec: v.ObjectType<Omit<{
244
244
  name: v.Type<string>;
245
245
  columns: v.Type<Record<string, {
246
- pgTypeClass?: "e" | "b" | "c" | "d" | "p" | "r" | "m" | undefined;
246
+ pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
247
247
  characterMaximumLength?: number | null | undefined;
248
248
  notNull?: boolean | null | undefined;
249
249
  dflt?: string | null | undefined;
250
250
  pos: number;
251
251
  dataType: string;
252
252
  }>>;
253
- primaryKey: v.ArrayType<v.Type<string>>;
253
+ primaryKey: v.Optional<string[]>;
254
254
  }, "schema"> & {
255
255
  schema: v.Type<string>;
256
256
  }, undefined>;
@@ -275,7 +275,7 @@ export declare const dataChangeSchema: v.UnionType<[v.ObjectType<{
275
275
  spec: v.ObjectType<{
276
276
  pos: v.Type<number>;
277
277
  dataType: v.Type<string>;
278
- pgTypeClass: v.Optional<"e" | "b" | "c" | "d" | "p" | "r" | "m">;
278
+ pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
279
279
  characterMaximumLength: v.Optional<number | null>;
280
280
  notNull: v.Optional<boolean | null>;
281
281
  dflt: v.Optional<string | null>;
@@ -292,7 +292,7 @@ export declare const dataChangeSchema: v.UnionType<[v.ObjectType<{
292
292
  spec: v.ObjectType<{
293
293
  pos: v.Type<number>;
294
294
  dataType: v.Type<string>;
295
- pgTypeClass: v.Optional<"e" | "b" | "c" | "d" | "p" | "r" | "m">;
295
+ pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
296
296
  characterMaximumLength: v.Optional<number | null>;
297
297
  notNull: v.Optional<boolean | null>;
298
298
  dflt: v.Optional<string | null>;
@@ -303,7 +303,7 @@ export declare const dataChangeSchema: v.UnionType<[v.ObjectType<{
303
303
  spec: v.ObjectType<{
304
304
  pos: v.Type<number>;
305
305
  dataType: v.Type<string>;
306
- pgTypeClass: v.Optional<"e" | "b" | "c" | "d" | "p" | "r" | "m">;
306
+ pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
307
307
  characterMaximumLength: v.Optional<number | null>;
308
308
  notNull: v.Optional<boolean | null>;
309
309
  dflt: v.Optional<string | null>;