drizzle-orm 0.36.4-ddb97ec → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/column-builder.cjs.map +1 -1
  2. package/column-builder.d.cts +4 -3
  3. package/column-builder.d.ts +4 -3
  4. package/column-builder.js.map +1 -1
  5. package/durable-sqlite/driver.cjs +64 -0
  6. package/durable-sqlite/driver.cjs.map +1 -0
  7. package/durable-sqlite/driver.d.cts +9 -0
  8. package/durable-sqlite/driver.d.ts +9 -0
  9. package/durable-sqlite/driver.js +42 -0
  10. package/durable-sqlite/driver.js.map +1 -0
  11. package/durable-sqlite/index.cjs +25 -0
  12. package/durable-sqlite/index.cjs.map +1 -0
  13. package/durable-sqlite/index.d.cts +2 -0
  14. package/durable-sqlite/index.d.ts +2 -0
  15. package/durable-sqlite/index.js +3 -0
  16. package/durable-sqlite/index.js.map +1 -0
  17. package/durable-sqlite/migrator.cjs +85 -0
  18. package/durable-sqlite/migrator.cjs.map +1 -0
  19. package/durable-sqlite/migrator.d.cts +14 -0
  20. package/durable-sqlite/migrator.d.ts +14 -0
  21. package/durable-sqlite/migrator.js +61 -0
  22. package/durable-sqlite/migrator.js.map +1 -0
  23. package/durable-sqlite/session.cjs +131 -0
  24. package/durable-sqlite/session.cjs.map +1 -0
  25. package/durable-sqlite/session.d.cts +46 -0
  26. package/durable-sqlite/session.d.ts +46 -0
  27. package/durable-sqlite/session.js +107 -0
  28. package/durable-sqlite/session.js.map +1 -0
  29. package/neon-http/driver.cjs.map +1 -1
  30. package/neon-http/driver.d.cts +3 -3
  31. package/neon-http/driver.d.ts +3 -3
  32. package/neon-http/driver.js.map +1 -1
  33. package/package.json +784 -3
  34. package/pg-core/db.cjs +4 -2
  35. package/pg-core/db.cjs.map +1 -1
  36. package/pg-core/db.js +4 -2
  37. package/pg-core/db.js.map +1 -1
  38. package/singlestore/driver.cjs +113 -0
  39. package/singlestore/driver.cjs.map +1 -0
  40. package/singlestore/driver.d.cts +52 -0
  41. package/singlestore/driver.d.ts +52 -0
  42. package/singlestore/driver.js +89 -0
  43. package/singlestore/driver.js.map +1 -0
  44. package/singlestore/index.cjs +25 -0
  45. package/singlestore/index.cjs.map +1 -0
  46. package/singlestore/index.d.cts +2 -0
  47. package/singlestore/index.d.ts +2 -0
  48. package/singlestore/index.js +3 -0
  49. package/singlestore/index.js.map +1 -0
  50. package/singlestore/migrator.cjs +33 -0
  51. package/singlestore/migrator.cjs.map +1 -0
  52. package/singlestore/migrator.d.cts +3 -0
  53. package/singlestore/migrator.d.ts +3 -0
  54. package/singlestore/migrator.js +9 -0
  55. package/singlestore/migrator.js.map +1 -0
  56. package/singlestore/session.cjs +258 -0
  57. package/singlestore/session.cjs.map +1 -0
  58. package/singlestore/session.d.cts +52 -0
  59. package/singlestore/session.d.ts +52 -0
  60. package/singlestore/session.js +236 -0
  61. package/singlestore/session.js.map +1 -0
  62. package/singlestore-core/alias.cjs +32 -0
  63. package/singlestore-core/alias.cjs.map +1 -0
  64. package/singlestore-core/alias.d.cts +4 -0
  65. package/singlestore-core/alias.d.ts +4 -0
  66. package/singlestore-core/alias.js +8 -0
  67. package/singlestore-core/alias.js.map +1 -0
  68. package/singlestore-core/columns/all.cjs +80 -0
  69. package/singlestore-core/columns/all.cjs.map +1 -0
  70. package/singlestore-core/columns/all.d.cts +51 -0
  71. package/singlestore-core/columns/all.d.ts +51 -0
  72. package/singlestore-core/columns/all.js +56 -0
  73. package/singlestore-core/columns/all.js.map +1 -0
  74. package/singlestore-core/columns/bigint.cjs +96 -0
  75. package/singlestore-core/columns/bigint.cjs.map +1 -0
  76. package/singlestore-core/columns/bigint.d.cts +54 -0
  77. package/singlestore-core/columns/bigint.d.ts +54 -0
  78. package/singlestore-core/columns/bigint.js +68 -0
  79. package/singlestore-core/columns/bigint.js.map +1 -0
  80. package/singlestore-core/columns/binary.cjs +60 -0
  81. package/singlestore-core/columns/binary.cjs.map +1 -0
  82. package/singlestore-core/columns/binary.d.cts +28 -0
  83. package/singlestore-core/columns/binary.d.ts +28 -0
  84. package/singlestore-core/columns/binary.js +34 -0
  85. package/singlestore-core/columns/binary.js.map +1 -0
  86. package/singlestore-core/columns/boolean.cjs +62 -0
  87. package/singlestore-core/columns/boolean.cjs.map +1 -0
  88. package/singlestore-core/columns/boolean.d.cts +24 -0
  89. package/singlestore-core/columns/boolean.d.ts +24 -0
  90. package/singlestore-core/columns/boolean.js +36 -0
  91. package/singlestore-core/columns/boolean.js.map +1 -0
  92. package/singlestore-core/columns/char.cjs +62 -0
  93. package/singlestore-core/columns/char.cjs.map +1 -0
  94. package/singlestore-core/columns/char.d.cts +31 -0
  95. package/singlestore-core/columns/char.d.ts +31 -0
  96. package/singlestore-core/columns/char.js +36 -0
  97. package/singlestore-core/columns/char.js.map +1 -0
  98. package/singlestore-core/columns/common.cjs +82 -0
  99. package/singlestore-core/columns/common.cjs.map +1 -0
  100. package/singlestore-core/columns/common.d.cts +42 -0
  101. package/singlestore-core/columns/common.d.ts +42 -0
  102. package/singlestore-core/columns/common.js +55 -0
  103. package/singlestore-core/columns/common.js.map +1 -0
  104. package/singlestore-core/columns/custom.cjs +77 -0
  105. package/singlestore-core/columns/custom.cjs.map +1 -0
  106. package/singlestore-core/columns/custom.d.cts +156 -0
  107. package/singlestore-core/columns/custom.d.ts +156 -0
  108. package/singlestore-core/columns/custom.js +51 -0
  109. package/singlestore-core/columns/custom.js.map +1 -0
  110. package/singlestore-core/columns/date.cjs +93 -0
  111. package/singlestore-core/columns/date.cjs.map +1 -0
  112. package/singlestore-core/columns/date.common.cjs +48 -0
  113. package/singlestore-core/columns/date.common.cjs.map +1 -0
  114. package/singlestore-core/columns/date.common.d.cts +16 -0
  115. package/singlestore-core/columns/date.common.d.ts +16 -0
  116. package/singlestore-core/columns/date.common.js +23 -0
  117. package/singlestore-core/columns/date.common.js.map +1 -0
  118. package/singlestore-core/columns/date.d.cts +53 -0
  119. package/singlestore-core/columns/date.d.ts +53 -0
  120. package/singlestore-core/columns/date.js +65 -0
  121. package/singlestore-core/columns/date.js.map +1 -0
  122. package/singlestore-core/columns/datetime.cjs +106 -0
  123. package/singlestore-core/columns/datetime.cjs.map +1 -0
  124. package/singlestore-core/columns/datetime.d.cts +54 -0
  125. package/singlestore-core/columns/datetime.d.ts +54 -0
  126. package/singlestore-core/columns/datetime.js +78 -0
  127. package/singlestore-core/columns/datetime.js.map +1 -0
  128. package/singlestore-core/columns/decimal.cjs +76 -0
  129. package/singlestore-core/columns/decimal.cjs.map +1 -0
  130. package/singlestore-core/columns/decimal.d.cts +32 -0
  131. package/singlestore-core/columns/decimal.d.ts +32 -0
  132. package/singlestore-core/columns/decimal.js +50 -0
  133. package/singlestore-core/columns/decimal.js.map +1 -0
  134. package/singlestore-core/columns/double.cjs +72 -0
  135. package/singlestore-core/columns/double.cjs.map +1 -0
  136. package/singlestore-core/columns/double.d.cts +32 -0
  137. package/singlestore-core/columns/double.d.ts +32 -0
  138. package/singlestore-core/columns/double.js +46 -0
  139. package/singlestore-core/columns/double.js.map +1 -0
  140. package/singlestore-core/columns/enum.cjs +67 -0
  141. package/singlestore-core/columns/enum.cjs.map +1 -0
  142. package/singlestore-core/columns/enum.d.cts +31 -0
  143. package/singlestore-core/columns/enum.d.ts +31 -0
  144. package/singlestore-core/columns/enum.js +41 -0
  145. package/singlestore-core/columns/enum.js.map +1 -0
  146. package/singlestore-core/columns/float.cjs +72 -0
  147. package/singlestore-core/columns/float.cjs.map +1 -0
  148. package/singlestore-core/columns/float.d.cts +32 -0
  149. package/singlestore-core/columns/float.d.ts +32 -0
  150. package/singlestore-core/columns/float.js +46 -0
  151. package/singlestore-core/columns/float.js.map +1 -0
  152. package/singlestore-core/columns/index.cjs +71 -0
  153. package/singlestore-core/columns/index.cjs.map +1 -0
  154. package/singlestore-core/columns/index.d.cts +25 -0
  155. package/singlestore-core/columns/index.d.ts +25 -0
  156. package/singlestore-core/columns/index.js +26 -0
  157. package/singlestore-core/columns/index.js.map +1 -0
  158. package/singlestore-core/columns/int.cjs +65 -0
  159. package/singlestore-core/columns/int.cjs.map +1 -0
  160. package/singlestore-core/columns/int.d.cts +28 -0
  161. package/singlestore-core/columns/int.d.ts +28 -0
  162. package/singlestore-core/columns/int.js +39 -0
  163. package/singlestore-core/columns/int.js.map +1 -0
  164. package/singlestore-core/columns/json.cjs +59 -0
  165. package/singlestore-core/columns/json.cjs.map +1 -0
  166. package/singlestore-core/columns/json.d.cts +24 -0
  167. package/singlestore-core/columns/json.d.ts +24 -0
  168. package/singlestore-core/columns/json.js +33 -0
  169. package/singlestore-core/columns/json.js.map +1 -0
  170. package/singlestore-core/columns/mediumint.cjs +65 -0
  171. package/singlestore-core/columns/mediumint.cjs.map +1 -0
  172. package/singlestore-core/columns/mediumint.d.cts +26 -0
  173. package/singlestore-core/columns/mediumint.d.ts +26 -0
  174. package/singlestore-core/columns/mediumint.js +39 -0
  175. package/singlestore-core/columns/mediumint.js.map +1 -0
  176. package/singlestore-core/columns/real.cjs +68 -0
  177. package/singlestore-core/columns/real.cjs.map +1 -0
  178. package/singlestore-core/columns/real.d.cts +30 -0
  179. package/singlestore-core/columns/real.d.ts +30 -0
  180. package/singlestore-core/columns/real.js +42 -0
  181. package/singlestore-core/columns/real.js.map +1 -0
  182. package/singlestore-core/columns/serial.cjs +64 -0
  183. package/singlestore-core/columns/serial.cjs.map +1 -0
  184. package/singlestore-core/columns/serial.d.cts +24 -0
  185. package/singlestore-core/columns/serial.d.ts +24 -0
  186. package/singlestore-core/columns/serial.js +38 -0
  187. package/singlestore-core/columns/serial.js.map +1 -0
  188. package/singlestore-core/columns/smallint.cjs +65 -0
  189. package/singlestore-core/columns/smallint.cjs.map +1 -0
  190. package/singlestore-core/columns/smallint.d.cts +26 -0
  191. package/singlestore-core/columns/smallint.d.ts +26 -0
  192. package/singlestore-core/columns/smallint.js +39 -0
  193. package/singlestore-core/columns/smallint.js.map +1 -0
  194. package/singlestore-core/columns/text.cjs +80 -0
  195. package/singlestore-core/columns/text.cjs.map +1 -0
  196. package/singlestore-core/columns/text.d.cts +46 -0
  197. package/singlestore-core/columns/text.d.ts +46 -0
  198. package/singlestore-core/columns/text.js +51 -0
  199. package/singlestore-core/columns/text.js.map +1 -0
  200. package/singlestore-core/columns/time.cjs +56 -0
  201. package/singlestore-core/columns/time.cjs.map +1 -0
  202. package/singlestore-core/columns/time.d.cts +23 -0
  203. package/singlestore-core/columns/time.d.ts +23 -0
  204. package/singlestore-core/columns/time.js +30 -0
  205. package/singlestore-core/columns/time.js.map +1 -0
  206. package/singlestore-core/columns/timestamp.cjs +97 -0
  207. package/singlestore-core/columns/timestamp.cjs.map +1 -0
  208. package/singlestore-core/columns/timestamp.d.cts +49 -0
  209. package/singlestore-core/columns/timestamp.d.ts +49 -0
  210. package/singlestore-core/columns/timestamp.js +69 -0
  211. package/singlestore-core/columns/timestamp.js.map +1 -0
  212. package/singlestore-core/columns/tinyint.cjs +65 -0
  213. package/singlestore-core/columns/tinyint.cjs.map +1 -0
  214. package/singlestore-core/columns/tinyint.d.cts +26 -0
  215. package/singlestore-core/columns/tinyint.d.ts +26 -0
  216. package/singlestore-core/columns/tinyint.js +39 -0
  217. package/singlestore-core/columns/tinyint.js.map +1 -0
  218. package/singlestore-core/columns/varbinary.cjs +61 -0
  219. package/singlestore-core/columns/varbinary.cjs.map +1 -0
  220. package/singlestore-core/columns/varbinary.d.cts +26 -0
  221. package/singlestore-core/columns/varbinary.d.ts +26 -0
  222. package/singlestore-core/columns/varbinary.js +35 -0
  223. package/singlestore-core/columns/varbinary.js.map +1 -0
  224. package/singlestore-core/columns/varchar.cjs +63 -0
  225. package/singlestore-core/columns/varchar.cjs.map +1 -0
  226. package/singlestore-core/columns/varchar.d.cts +29 -0
  227. package/singlestore-core/columns/varchar.d.ts +29 -0
  228. package/singlestore-core/columns/varchar.js +37 -0
  229. package/singlestore-core/columns/varchar.js.map +1 -0
  230. package/singlestore-core/columns/year.cjs +56 -0
  231. package/singlestore-core/columns/year.cjs.map +1 -0
  232. package/singlestore-core/columns/year.d.cts +23 -0
  233. package/singlestore-core/columns/year.d.ts +23 -0
  234. package/singlestore-core/columns/year.js +30 -0
  235. package/singlestore-core/columns/year.js.map +1 -0
  236. package/singlestore-core/db.cjs +261 -0
  237. package/singlestore-core/db.cjs.map +1 -0
  238. package/singlestore-core/db.d.cts +231 -0
  239. package/singlestore-core/db.d.ts +231 -0
  240. package/singlestore-core/db.js +242 -0
  241. package/singlestore-core/db.js.map +1 -0
  242. package/singlestore-core/dialect.cjs +607 -0
  243. package/singlestore-core/dialect.cjs.map +1 -0
  244. package/singlestore-core/dialect.d.cts +64 -0
  245. package/singlestore-core/dialect.d.ts +64 -0
  246. package/singlestore-core/dialect.js +589 -0
  247. package/singlestore-core/dialect.js.map +1 -0
  248. package/singlestore-core/expressions.cjs +49 -0
  249. package/singlestore-core/expressions.cjs.map +1 -0
  250. package/singlestore-core/expressions.d.cts +8 -0
  251. package/singlestore-core/expressions.d.ts +8 -0
  252. package/singlestore-core/expressions.js +22 -0
  253. package/singlestore-core/expressions.js.map +1 -0
  254. package/singlestore-core/index.cjs +47 -0
  255. package/singlestore-core/index.cjs.map +1 -0
  256. package/singlestore-core/index.d.cts +13 -0
  257. package/singlestore-core/index.d.ts +13 -0
  258. package/singlestore-core/index.js +14 -0
  259. package/singlestore-core/index.js.map +1 -0
  260. package/singlestore-core/indexes.cjs +88 -0
  261. package/singlestore-core/indexes.cjs.map +1 -0
  262. package/singlestore-core/indexes.d.cts +62 -0
  263. package/singlestore-core/indexes.d.ts +62 -0
  264. package/singlestore-core/indexes.js +60 -0
  265. package/singlestore-core/indexes.js.map +1 -0
  266. package/singlestore-core/primary-keys.cjs +68 -0
  267. package/singlestore-core/primary-keys.cjs.map +1 -0
  268. package/singlestore-core/primary-keys.d.cts +30 -0
  269. package/singlestore-core/primary-keys.d.ts +30 -0
  270. package/singlestore-core/primary-keys.js +42 -0
  271. package/singlestore-core/primary-keys.js.map +1 -0
  272. package/singlestore-core/query-builders/count.cjs +73 -0
  273. package/singlestore-core/query-builders/count.cjs.map +1 -0
  274. package/singlestore-core/query-builders/count.d.cts +25 -0
  275. package/singlestore-core/query-builders/count.d.ts +25 -0
  276. package/singlestore-core/query-builders/count.js +49 -0
  277. package/singlestore-core/query-builders/count.js.map +1 -0
  278. package/singlestore-core/query-builders/delete.cjs +123 -0
  279. package/singlestore-core/query-builders/delete.cjs.map +1 -0
  280. package/singlestore-core/query-builders/delete.d.cts +83 -0
  281. package/singlestore-core/query-builders/delete.d.ts +83 -0
  282. package/singlestore-core/query-builders/delete.js +99 -0
  283. package/singlestore-core/query-builders/delete.js.map +1 -0
  284. package/singlestore-core/query-builders/index.cjs +33 -0
  285. package/singlestore-core/query-builders/index.cjs.map +1 -0
  286. package/singlestore-core/query-builders/index.d.cts +6 -0
  287. package/singlestore-core/query-builders/index.d.ts +6 -0
  288. package/singlestore-core/query-builders/index.js +7 -0
  289. package/singlestore-core/query-builders/index.js.map +1 -0
  290. package/singlestore-core/query-builders/insert.cjs +146 -0
  291. package/singlestore-core/query-builders/insert.cjs.map +1 -0
  292. package/singlestore-core/query-builders/insert.d.cts +106 -0
  293. package/singlestore-core/query-builders/insert.d.ts +106 -0
  294. package/singlestore-core/query-builders/insert.js +121 -0
  295. package/singlestore-core/query-builders/insert.js.map +1 -0
  296. package/singlestore-core/query-builders/query-builder.cjs +99 -0
  297. package/singlestore-core/query-builders/query-builder.cjs.map +1 -0
  298. package/singlestore-core/query-builders/query-builder.d.cts +33 -0
  299. package/singlestore-core/query-builders/query-builder.d.ts +33 -0
  300. package/singlestore-core/query-builders/query-builder.js +75 -0
  301. package/singlestore-core/query-builders/query-builder.js.map +1 -0
  302. package/singlestore-core/query-builders/query.cjs +126 -0
  303. package/singlestore-core/query-builders/query.cjs.map +1 -0
  304. package/singlestore-core/query-builders/query.d.cts +42 -0
  305. package/singlestore-core/query-builders/query.d.ts +42 -0
  306. package/singlestore-core/query-builders/query.js +103 -0
  307. package/singlestore-core/query-builders/query.js.map +1 -0
  308. package/singlestore-core/query-builders/select.cjs +687 -0
  309. package/singlestore-core/query-builders/select.cjs.map +1 -0
  310. package/singlestore-core/query-builders/select.d.cts +585 -0
  311. package/singlestore-core/query-builders/select.d.ts +585 -0
  312. package/singlestore-core/query-builders/select.js +662 -0
  313. package/singlestore-core/query-builders/select.js.map +1 -0
  314. package/singlestore-core/query-builders/select.types.cjs +17 -0
  315. package/singlestore-core/query-builders/select.types.cjs.map +1 -0
  316. package/singlestore-core/query-builders/select.types.d.cts +137 -0
  317. package/singlestore-core/query-builders/select.types.d.ts +137 -0
  318. package/singlestore-core/query-builders/select.types.js +1 -0
  319. package/singlestore-core/query-builders/select.types.js.map +1 -0
  320. package/singlestore-core/query-builders/update.cjs +147 -0
  321. package/singlestore-core/query-builders/update.cjs.map +1 -0
  322. package/singlestore-core/query-builders/update.d.cts +102 -0
  323. package/singlestore-core/query-builders/update.d.ts +102 -0
  324. package/singlestore-core/query-builders/update.js +122 -0
  325. package/singlestore-core/query-builders/update.js.map +1 -0
  326. package/singlestore-core/schema.cjs +56 -0
  327. package/singlestore-core/schema.cjs.map +1 -0
  328. package/singlestore-core/schema.d.cts +22 -0
  329. package/singlestore-core/schema.d.ts +22 -0
  330. package/singlestore-core/schema.js +29 -0
  331. package/singlestore-core/schema.js.map +1 -0
  332. package/singlestore-core/session.cjs +87 -0
  333. package/singlestore-core/session.cjs.map +1 -0
  334. package/singlestore-core/session.d.cts +66 -0
  335. package/singlestore-core/session.d.ts +66 -0
  336. package/singlestore-core/session.js +61 -0
  337. package/singlestore-core/session.js.map +1 -0
  338. package/singlestore-core/subquery.cjs +17 -0
  339. package/singlestore-core/subquery.cjs.map +1 -0
  340. package/singlestore-core/subquery.d.cts +5 -0
  341. package/singlestore-core/subquery.d.ts +5 -0
  342. package/singlestore-core/subquery.js +1 -0
  343. package/singlestore-core/subquery.js.map +1 -0
  344. package/singlestore-core/table.cjs +73 -0
  345. package/singlestore-core/table.cjs.map +1 -0
  346. package/singlestore-core/table.d.cts +40 -0
  347. package/singlestore-core/table.d.ts +40 -0
  348. package/singlestore-core/table.js +46 -0
  349. package/singlestore-core/table.js.map +1 -0
  350. package/singlestore-core/unique-constraint.cjs +82 -0
  351. package/singlestore-core/unique-constraint.cjs.map +1 -0
  352. package/singlestore-core/unique-constraint.d.cts +24 -0
  353. package/singlestore-core/unique-constraint.d.ts +24 -0
  354. package/singlestore-core/unique-constraint.js +54 -0
  355. package/singlestore-core/unique-constraint.js.map +1 -0
  356. package/singlestore-core/utils.cjs +65 -0
  357. package/singlestore-core/utils.cjs.map +1 -0
  358. package/singlestore-core/utils.d.cts +13 -0
  359. package/singlestore-core/utils.d.ts +13 -0
  360. package/singlestore-core/utils.js +41 -0
  361. package/singlestore-core/utils.js.map +1 -0
  362. package/singlestore-core/view-base.cjs +33 -0
  363. package/singlestore-core/view-base.cjs.map +1 -0
  364. package/singlestore-core/view-base.d.cts +9 -0
  365. package/singlestore-core/view-base.d.ts +9 -0
  366. package/singlestore-core/view-base.js +9 -0
  367. package/singlestore-core/view-base.js.map +1 -0
  368. package/singlestore-core/view-common.cjs +29 -0
  369. package/singlestore-core/view-common.cjs.map +1 -0
  370. package/singlestore-core/view-common.d.cts +1 -0
  371. package/singlestore-core/view-common.d.ts +1 -0
  372. package/singlestore-core/view-common.js +5 -0
  373. package/singlestore-core/view-common.js.map +1 -0
  374. package/singlestore-core/view.cjs +146 -0
  375. package/singlestore-core/view.cjs.map +1 -0
  376. package/singlestore-core/view.d.cts +65 -0
  377. package/singlestore-core/view.d.ts +65 -0
  378. package/singlestore-core/view.js +119 -0
  379. package/singlestore-core/view.js.map +1 -0
  380. package/singlestore-proxy/driver.cjs +62 -0
  381. package/singlestore-proxy/driver.cjs.map +1 -0
  382. package/singlestore-proxy/driver.d.cts +13 -0
  383. package/singlestore-proxy/driver.d.ts +13 -0
  384. package/singlestore-proxy/driver.js +42 -0
  385. package/singlestore-proxy/driver.js.map +1 -0
  386. package/singlestore-proxy/index.cjs +25 -0
  387. package/singlestore-proxy/index.cjs.map +1 -0
  388. package/singlestore-proxy/index.d.cts +2 -0
  389. package/singlestore-proxy/index.d.ts +2 -0
  390. package/singlestore-proxy/index.js +3 -0
  391. package/singlestore-proxy/index.js.map +1 -0
  392. package/singlestore-proxy/migrator.cjs +60 -0
  393. package/singlestore-proxy/migrator.cjs.map +1 -0
  394. package/singlestore-proxy/migrator.d.cts +4 -0
  395. package/singlestore-proxy/migrator.d.ts +4 -0
  396. package/singlestore-proxy/migrator.js +36 -0
  397. package/singlestore-proxy/migrator.js.map +1 -0
  398. package/singlestore-proxy/session.cjs +127 -0
  399. package/singlestore-proxy/session.cjs.map +1 -0
  400. package/singlestore-proxy/session.d.cts +50 -0
  401. package/singlestore-proxy/session.d.ts +50 -0
  402. package/singlestore-proxy/session.js +101 -0
  403. package/singlestore-proxy/session.js.map +1 -0
  404. package/sqlite-core/columns/blob.cjs +16 -2
  405. package/sqlite-core/columns/blob.cjs.map +1 -1
  406. package/sqlite-core/columns/blob.d.cts +2 -2
  407. package/sqlite-core/columns/blob.d.ts +2 -2
  408. package/sqlite-core/columns/blob.js +16 -2
  409. package/sqlite-core/columns/blob.js.map +1 -1
  410. package/version.cjs +1 -1
  411. package/version.d.cts +1 -1
  412. package/version.d.ts +1 -1
  413. package/version.js +1 -1
@@ -0,0 +1,589 @@
1
+ import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from "../alias.js";
2
+ import { CasingCache } from "../casing.js";
3
+ import { Column } from "../column.js";
4
+ import { entityKind, is } from "../entity.js";
5
+ import { DrizzleError } from "../errors.js";
6
+ import { and, eq } from "../expressions.js";
7
+ import {
8
+ getOperators,
9
+ getOrderByOperators,
10
+ Many,
11
+ normalizeRelation,
12
+ One
13
+ } from "../relations.js";
14
+ import { Param, SQL, sql, View } from "../sql/sql.js";
15
+ import { Subquery } from "../subquery.js";
16
+ import { getTableName, getTableUniqueName, Table } from "../table.js";
17
+ import { orderSelectedFields } from "../utils.js";
18
+ import { ViewBaseConfig } from "../view-common.js";
19
+ import { SingleStoreColumn } from "./columns/common.js";
20
+ import { SingleStoreTable } from "./table.js";
21
+ class SingleStoreDialect {
22
+ static [entityKind] = "SingleStoreDialect";
23
+ /** @internal */
24
+ casing;
25
+ constructor(config) {
26
+ this.casing = new CasingCache(config?.casing);
27
+ }
28
+ async migrate(migrations, session, config) {
29
+ const migrationsTable = config.migrationsTable ?? "__drizzle_migrations";
30
+ const migrationTableCreate = sql`
31
+ create table if not exists ${sql.identifier(migrationsTable)} (
32
+ id serial primary key,
33
+ hash text not null,
34
+ created_at bigint
35
+ )
36
+ `;
37
+ await session.execute(migrationTableCreate);
38
+ const dbMigrations = await session.all(
39
+ sql`select id, hash, created_at from ${sql.identifier(migrationsTable)} order by created_at desc limit 1`
40
+ );
41
+ const lastDbMigration = dbMigrations[0];
42
+ await session.transaction(async (tx) => {
43
+ for (const migration of migrations) {
44
+ if (!lastDbMigration || Number(lastDbMigration.created_at) < migration.folderMillis) {
45
+ for (const stmt of migration.sql) {
46
+ await tx.execute(sql.raw(stmt));
47
+ }
48
+ await tx.execute(
49
+ sql`insert into ${sql.identifier(migrationsTable)} (\`hash\`, \`created_at\`) values(${migration.hash}, ${migration.folderMillis})`
50
+ );
51
+ }
52
+ }
53
+ });
54
+ }
55
+ escapeName(name) {
56
+ return `\`${name}\``;
57
+ }
58
+ escapeParam(_num) {
59
+ return `?`;
60
+ }
61
+ escapeString(str) {
62
+ return `'${str.replace(/'/g, "''")}'`;
63
+ }
64
+ buildWithCTE(queries) {
65
+ if (!queries?.length)
66
+ return void 0;
67
+ const withSqlChunks = [sql`with `];
68
+ for (const [i, w] of queries.entries()) {
69
+ withSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`);
70
+ if (i < queries.length - 1) {
71
+ withSqlChunks.push(sql`, `);
72
+ }
73
+ }
74
+ withSqlChunks.push(sql` `);
75
+ return sql.join(withSqlChunks);
76
+ }
77
+ buildDeleteQuery({ table, where, returning, withList, limit, orderBy }) {
78
+ const withSql = this.buildWithCTE(withList);
79
+ const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
80
+ const whereSql = where ? sql` where ${where}` : void 0;
81
+ const orderBySql = this.buildOrderBy(orderBy);
82
+ const limitSql = this.buildLimit(limit);
83
+ return sql`${withSql}delete from ${table}${whereSql}${orderBySql}${limitSql}${returningSql}`;
84
+ }
85
+ buildUpdateSet(table, set) {
86
+ const tableColumns = table[Table.Symbol.Columns];
87
+ const columnNames = Object.keys(tableColumns).filter(
88
+ (colName) => set[colName] !== void 0 || tableColumns[colName]?.onUpdateFn !== void 0
89
+ );
90
+ const setSize = columnNames.length;
91
+ return sql.join(columnNames.flatMap((colName, i) => {
92
+ const col = tableColumns[colName];
93
+ const value = set[colName] ?? sql.param(col.onUpdateFn(), col);
94
+ const res = sql`${sql.identifier(this.casing.getColumnCasing(col))} = ${value}`;
95
+ if (i < setSize - 1) {
96
+ return [res, sql.raw(", ")];
97
+ }
98
+ return [res];
99
+ }));
100
+ }
101
+ buildUpdateQuery({ table, set, where, returning, withList, limit, orderBy }) {
102
+ const withSql = this.buildWithCTE(withList);
103
+ const setSql = this.buildUpdateSet(table, set);
104
+ const returningSql = returning ? sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
105
+ const whereSql = where ? sql` where ${where}` : void 0;
106
+ const orderBySql = this.buildOrderBy(orderBy);
107
+ const limitSql = this.buildLimit(limit);
108
+ return sql`${withSql}update ${table} set ${setSql}${whereSql}${orderBySql}${limitSql}${returningSql}`;
109
+ }
110
+ /**
111
+ * Builds selection SQL with provided fields/expressions
112
+ *
113
+ * Examples:
114
+ *
115
+ * `select <selection> from`
116
+ *
117
+ * `insert ... returning <selection>`
118
+ *
119
+ * If `isSingleTable` is true, then columns won't be prefixed with table name
120
+ */
121
+ buildSelection(fields, { isSingleTable = false } = {}) {
122
+ const columnsLen = fields.length;
123
+ const chunks = fields.flatMap(({ field }, i) => {
124
+ const chunk = [];
125
+ if (is(field, SQL.Aliased) && field.isSelectionField) {
126
+ chunk.push(sql.identifier(field.fieldAlias));
127
+ } else if (is(field, SQL.Aliased) || is(field, SQL)) {
128
+ const query = is(field, SQL.Aliased) ? field.sql : field;
129
+ if (isSingleTable) {
130
+ chunk.push(
131
+ new SQL(
132
+ query.queryChunks.map((c) => {
133
+ if (is(c, SingleStoreColumn)) {
134
+ return sql.identifier(this.casing.getColumnCasing(c));
135
+ }
136
+ return c;
137
+ })
138
+ )
139
+ );
140
+ } else {
141
+ chunk.push(query);
142
+ }
143
+ if (is(field, SQL.Aliased)) {
144
+ chunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);
145
+ }
146
+ } else if (is(field, Column)) {
147
+ if (isSingleTable) {
148
+ chunk.push(sql.identifier(this.casing.getColumnCasing(field)));
149
+ } else {
150
+ chunk.push(field);
151
+ }
152
+ }
153
+ if (i < columnsLen - 1) {
154
+ chunk.push(sql`, `);
155
+ }
156
+ return chunk;
157
+ });
158
+ return sql.join(chunks);
159
+ }
160
+ buildLimit(limit) {
161
+ return typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0;
162
+ }
163
+ buildOrderBy(orderBy) {
164
+ return orderBy && orderBy.length > 0 ? sql` order by ${sql.join(orderBy, sql`, `)}` : void 0;
165
+ }
166
+ buildSelectQuery({
167
+ withList,
168
+ fields,
169
+ fieldsFlat,
170
+ where,
171
+ having,
172
+ table,
173
+ joins,
174
+ orderBy,
175
+ groupBy,
176
+ limit,
177
+ offset,
178
+ lockingClause,
179
+ distinct,
180
+ setOperators
181
+ }) {
182
+ const fieldsList = fieldsFlat ?? orderSelectedFields(fields);
183
+ for (const f of fieldsList) {
184
+ if (is(f.field, Column) && getTableName(f.field.table) !== (is(table, Subquery) ? table._.alias : is(table, SQL) ? void 0 : getTableName(table)) && !((table2) => joins?.some(
185
+ ({ alias }) => alias === (table2[Table.Symbol.IsAlias] ? getTableName(table2) : table2[Table.Symbol.BaseName])
186
+ ))(f.field.table)) {
187
+ const tableName = getTableName(f.field.table);
188
+ throw new Error(
189
+ `Your "${f.path.join("->")}" field references a column "${tableName}"."${f.field.name}", but the table "${tableName}" is not part of the query! Did you forget to join it?`
190
+ );
191
+ }
192
+ }
193
+ const isSingleTable = !joins || joins.length === 0;
194
+ const withSql = this.buildWithCTE(withList);
195
+ const distinctSql = distinct ? sql` distinct` : void 0;
196
+ const selection = this.buildSelection(fieldsList, { isSingleTable });
197
+ const tableSql = (() => {
198
+ if (is(table, Table) && table[Table.Symbol.OriginalName] !== table[Table.Symbol.Name]) {
199
+ return sql`${sql.identifier(table[Table.Symbol.OriginalName])} ${sql.identifier(table[Table.Symbol.Name])}`;
200
+ }
201
+ return table;
202
+ })();
203
+ const joinsArray = [];
204
+ if (joins) {
205
+ for (const [index, joinMeta] of joins.entries()) {
206
+ if (index === 0) {
207
+ joinsArray.push(sql` `);
208
+ }
209
+ const table2 = joinMeta.table;
210
+ const lateralSql = joinMeta.lateral ? sql` lateral` : void 0;
211
+ if (is(table2, SingleStoreTable)) {
212
+ const tableName = table2[SingleStoreTable.Symbol.Name];
213
+ const tableSchema = table2[SingleStoreTable.Symbol.Schema];
214
+ const origTableName = table2[SingleStoreTable.Symbol.OriginalName];
215
+ const alias = tableName === origTableName ? void 0 : joinMeta.alias;
216
+ joinsArray.push(
217
+ sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${tableSchema ? sql`${sql.identifier(tableSchema)}.` : void 0}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
218
+ );
219
+ } else if (is(table2, View)) {
220
+ const viewName = table2[ViewBaseConfig].name;
221
+ const viewSchema = table2[ViewBaseConfig].schema;
222
+ const origViewName = table2[ViewBaseConfig].originalName;
223
+ const alias = viewName === origViewName ? void 0 : joinMeta.alias;
224
+ joinsArray.push(
225
+ sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${viewSchema ? sql`${sql.identifier(viewSchema)}.` : void 0}${sql.identifier(origViewName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`
226
+ );
227
+ } else {
228
+ joinsArray.push(
229
+ sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${table2} on ${joinMeta.on}`
230
+ );
231
+ }
232
+ if (index < joins.length - 1) {
233
+ joinsArray.push(sql` `);
234
+ }
235
+ }
236
+ }
237
+ const joinsSql = sql.join(joinsArray);
238
+ const whereSql = where ? sql` where ${where}` : void 0;
239
+ const havingSql = having ? sql` having ${having}` : void 0;
240
+ const orderBySql = this.buildOrderBy(orderBy);
241
+ const groupBySql = groupBy && groupBy.length > 0 ? sql` group by ${sql.join(groupBy, sql`, `)}` : void 0;
242
+ const limitSql = this.buildLimit(limit);
243
+ const offsetSql = offset ? sql` offset ${offset}` : void 0;
244
+ let lockingClausesSql;
245
+ if (lockingClause) {
246
+ const { config, strength } = lockingClause;
247
+ lockingClausesSql = sql` for ${sql.raw(strength)}`;
248
+ if (config.noWait) {
249
+ lockingClausesSql.append(sql` no wait`);
250
+ } else if (config.skipLocked) {
251
+ lockingClausesSql.append(sql` skip locked`);
252
+ }
253
+ }
254
+ const finalQuery = sql`${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${limitSql}${offsetSql}${lockingClausesSql}`;
255
+ if (setOperators.length > 0) {
256
+ return this.buildSetOperations(finalQuery, setOperators);
257
+ }
258
+ return finalQuery;
259
+ }
260
+ buildSetOperations(leftSelect, setOperators) {
261
+ const [setOperator, ...rest] = setOperators;
262
+ if (!setOperator) {
263
+ throw new Error("Cannot pass undefined values to any set operator");
264
+ }
265
+ if (rest.length === 0) {
266
+ return this.buildSetOperationQuery({ leftSelect, setOperator });
267
+ }
268
+ return this.buildSetOperations(
269
+ this.buildSetOperationQuery({ leftSelect, setOperator }),
270
+ rest
271
+ );
272
+ }
273
+ buildSetOperationQuery({
274
+ leftSelect,
275
+ setOperator: { type, isAll, rightSelect, limit, orderBy, offset }
276
+ }) {
277
+ const leftChunk = sql`(${leftSelect.getSQL()}) `;
278
+ const rightChunk = sql`(${rightSelect.getSQL()})`;
279
+ let orderBySql;
280
+ if (orderBy && orderBy.length > 0) {
281
+ const orderByValues = [];
282
+ for (const orderByUnit of orderBy) {
283
+ if (is(orderByUnit, SingleStoreColumn)) {
284
+ orderByValues.push(sql.identifier(this.casing.getColumnCasing(orderByUnit)));
285
+ } else if (is(orderByUnit, SQL)) {
286
+ for (let i = 0; i < orderByUnit.queryChunks.length; i++) {
287
+ const chunk = orderByUnit.queryChunks[i];
288
+ if (is(chunk, SingleStoreColumn)) {
289
+ orderByUnit.queryChunks[i] = sql.identifier(this.casing.getColumnCasing(chunk));
290
+ }
291
+ }
292
+ orderByValues.push(sql`${orderByUnit}`);
293
+ } else {
294
+ orderByValues.push(sql`${orderByUnit}`);
295
+ }
296
+ }
297
+ orderBySql = sql` order by ${sql.join(orderByValues, sql`, `)} `;
298
+ }
299
+ const limitSql = typeof limit === "object" || typeof limit === "number" && limit >= 0 ? sql` limit ${limit}` : void 0;
300
+ const operatorChunk = sql.raw(`${type} ${isAll ? "all " : ""}`);
301
+ const offsetSql = offset ? sql` offset ${offset}` : void 0;
302
+ return sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
303
+ }
304
+ buildInsertQuery({ table, values, ignore, onConflict }) {
305
+ const valuesSqlList = [];
306
+ const columns = table[Table.Symbol.Columns];
307
+ const colEntries = Object.entries(columns).filter(
308
+ ([_, col]) => !col.shouldDisableInsert()
309
+ );
310
+ const insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));
311
+ const generatedIdsResponse = [];
312
+ for (const [valueIndex, value] of values.entries()) {
313
+ const generatedIds = {};
314
+ const valueList = [];
315
+ for (const [fieldName, col] of colEntries) {
316
+ const colValue = value[fieldName];
317
+ if (colValue === void 0 || is(colValue, Param) && colValue.value === void 0) {
318
+ if (col.defaultFn !== void 0) {
319
+ const defaultFnResult = col.defaultFn();
320
+ generatedIds[fieldName] = defaultFnResult;
321
+ const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
322
+ valueList.push(defaultValue);
323
+ } else if (!col.default && col.onUpdateFn !== void 0) {
324
+ const onUpdateFnResult = col.onUpdateFn();
325
+ const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
326
+ valueList.push(newValue);
327
+ } else {
328
+ valueList.push(sql`default`);
329
+ }
330
+ } else {
331
+ if (col.defaultFn && is(colValue, Param)) {
332
+ generatedIds[fieldName] = colValue.value;
333
+ }
334
+ valueList.push(colValue);
335
+ }
336
+ }
337
+ generatedIdsResponse.push(generatedIds);
338
+ valuesSqlList.push(valueList);
339
+ if (valueIndex < values.length - 1) {
340
+ valuesSqlList.push(sql`, `);
341
+ }
342
+ }
343
+ const valuesSql = sql.join(valuesSqlList);
344
+ const ignoreSql = ignore ? sql` ignore` : void 0;
345
+ const onConflictSql = onConflict ? sql` on duplicate key ${onConflict}` : void 0;
346
+ return {
347
+ sql: sql`insert${ignoreSql} into ${table} ${insertOrder} values ${valuesSql}${onConflictSql}`,
348
+ generatedIds: generatedIdsResponse
349
+ };
350
+ }
351
+ sqlToQuery(sql2, invokeSource) {
352
+ return sql2.toQuery({
353
+ casing: this.casing,
354
+ escapeName: this.escapeName,
355
+ escapeParam: this.escapeParam,
356
+ escapeString: this.escapeString,
357
+ invokeSource
358
+ });
359
+ }
360
+ buildRelationalQuery({
361
+ fullSchema,
362
+ schema,
363
+ tableNamesMap,
364
+ table,
365
+ tableConfig,
366
+ queryConfig: config,
367
+ tableAlias,
368
+ nestedQueryRelation,
369
+ joinOn
370
+ }) {
371
+ let selection = [];
372
+ let limit, offset, orderBy, where;
373
+ const joins = [];
374
+ if (config === true) {
375
+ const selectionEntries = Object.entries(tableConfig.columns);
376
+ selection = selectionEntries.map(([key, value]) => ({
377
+ dbKey: value.name,
378
+ tsKey: key,
379
+ field: aliasedTableColumn(value, tableAlias),
380
+ relationTableTsKey: void 0,
381
+ isJson: false,
382
+ selection: []
383
+ }));
384
+ } else {
385
+ const aliasedColumns = Object.fromEntries(
386
+ Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)])
387
+ );
388
+ if (config.where) {
389
+ const whereSql = typeof config.where === "function" ? config.where(aliasedColumns, getOperators()) : config.where;
390
+ where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);
391
+ }
392
+ const fieldsSelection = [];
393
+ let selectedColumns = [];
394
+ if (config.columns) {
395
+ let isIncludeMode = false;
396
+ for (const [field, value] of Object.entries(config.columns)) {
397
+ if (value === void 0) {
398
+ continue;
399
+ }
400
+ if (field in tableConfig.columns) {
401
+ if (!isIncludeMode && value === true) {
402
+ isIncludeMode = true;
403
+ }
404
+ selectedColumns.push(field);
405
+ }
406
+ }
407
+ if (selectedColumns.length > 0) {
408
+ selectedColumns = isIncludeMode ? selectedColumns.filter((c) => config.columns?.[c] === true) : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
409
+ }
410
+ } else {
411
+ selectedColumns = Object.keys(tableConfig.columns);
412
+ }
413
+ for (const field of selectedColumns) {
414
+ const column = tableConfig.columns[field];
415
+ fieldsSelection.push({ tsKey: field, value: column });
416
+ }
417
+ let selectedRelations = [];
418
+ if (config.with) {
419
+ selectedRelations = Object.entries(config.with).filter((entry) => !!entry[1]).map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey] }));
420
+ }
421
+ let extras;
422
+ if (config.extras) {
423
+ extras = typeof config.extras === "function" ? config.extras(aliasedColumns, { sql }) : config.extras;
424
+ for (const [tsKey, value] of Object.entries(extras)) {
425
+ fieldsSelection.push({
426
+ tsKey,
427
+ value: mapColumnsInAliasedSQLToAlias(value, tableAlias)
428
+ });
429
+ }
430
+ }
431
+ for (const { tsKey, value } of fieldsSelection) {
432
+ selection.push({
433
+ dbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey].name,
434
+ tsKey,
435
+ field: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,
436
+ relationTableTsKey: void 0,
437
+ isJson: false,
438
+ selection: []
439
+ });
440
+ }
441
+ let orderByOrig = typeof config.orderBy === "function" ? config.orderBy(aliasedColumns, getOrderByOperators()) : config.orderBy ?? [];
442
+ if (!Array.isArray(orderByOrig)) {
443
+ orderByOrig = [orderByOrig];
444
+ }
445
+ orderBy = orderByOrig.map((orderByValue) => {
446
+ if (is(orderByValue, Column)) {
447
+ return aliasedTableColumn(orderByValue, tableAlias);
448
+ }
449
+ return mapColumnsInSQLToAlias(orderByValue, tableAlias);
450
+ });
451
+ limit = config.limit;
452
+ offset = config.offset;
453
+ for (const {
454
+ tsKey: selectedRelationTsKey,
455
+ queryConfig: selectedRelationConfigValue,
456
+ relation
457
+ } of selectedRelations) {
458
+ const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);
459
+ const relationTableName = getTableUniqueName(relation.referencedTable);
460
+ const relationTableTsName = tableNamesMap[relationTableName];
461
+ const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
462
+ const joinOn2 = and(
463
+ ...normalizedRelation.fields.map(
464
+ (field2, i) => eq(
465
+ aliasedTableColumn(normalizedRelation.references[i], relationTableAlias),
466
+ aliasedTableColumn(field2, tableAlias)
467
+ )
468
+ )
469
+ );
470
+ const builtRelation = this.buildRelationalQuery({
471
+ fullSchema,
472
+ schema,
473
+ tableNamesMap,
474
+ table: fullSchema[relationTableTsName],
475
+ tableConfig: schema[relationTableTsName],
476
+ queryConfig: is(relation, One) ? selectedRelationConfigValue === true ? { limit: 1 } : { ...selectedRelationConfigValue, limit: 1 } : selectedRelationConfigValue,
477
+ tableAlias: relationTableAlias,
478
+ joinOn: joinOn2,
479
+ nestedQueryRelation: relation
480
+ });
481
+ const field = sql`${sql.identifier(relationTableAlias)}.${sql.identifier("data")}`.as(selectedRelationTsKey);
482
+ joins.push({
483
+ on: sql`true`,
484
+ table: new Subquery(builtRelation.sql, {}, relationTableAlias),
485
+ alias: relationTableAlias,
486
+ joinType: "left",
487
+ lateral: true
488
+ });
489
+ selection.push({
490
+ dbKey: selectedRelationTsKey,
491
+ tsKey: selectedRelationTsKey,
492
+ field,
493
+ relationTableTsKey: relationTableTsName,
494
+ isJson: true,
495
+ selection: builtRelation.selection
496
+ });
497
+ }
498
+ }
499
+ if (selection.length === 0) {
500
+ throw new DrizzleError({ message: `No fields selected for table "${tableConfig.tsName}" ("${tableAlias}")` });
501
+ }
502
+ let result;
503
+ where = and(joinOn, where);
504
+ if (nestedQueryRelation) {
505
+ let field = sql`JSON_TO_ARRAY(${sql.join(
506
+ selection.map(
507
+ ({ field: field2, tsKey, isJson }) => isJson ? sql`${sql.identifier(`${tableAlias}_${tsKey}`)}.${sql.identifier("data")}` : is(field2, SQL.Aliased) ? field2.sql : field2
508
+ ),
509
+ sql`, `
510
+ )})`;
511
+ if (is(nestedQueryRelation, Many)) {
512
+ field = sql`json_agg(${field})`;
513
+ }
514
+ const nestedSelection = [{
515
+ dbKey: "data",
516
+ tsKey: "data",
517
+ field: field.as("data"),
518
+ isJson: true,
519
+ relationTableTsKey: tableConfig.tsName,
520
+ selection
521
+ }];
522
+ const needsSubquery = limit !== void 0 || offset !== void 0 || (orderBy?.length ?? 0) > 0;
523
+ if (needsSubquery) {
524
+ result = this.buildSelectQuery({
525
+ table: aliasedTable(table, tableAlias),
526
+ fields: {},
527
+ fieldsFlat: [
528
+ {
529
+ path: [],
530
+ field: sql.raw("*")
531
+ },
532
+ ...((orderBy?.length ?? 0) > 0 ? [{
533
+ path: [],
534
+ field: sql`row_number() over (order by ${sql.join(orderBy, sql`, `)})`
535
+ }] : [])
536
+ ],
537
+ where,
538
+ limit,
539
+ offset,
540
+ setOperators: []
541
+ });
542
+ where = void 0;
543
+ limit = void 0;
544
+ offset = void 0;
545
+ orderBy = void 0;
546
+ } else {
547
+ result = aliasedTable(table, tableAlias);
548
+ }
549
+ result = this.buildSelectQuery({
550
+ table: is(result, SingleStoreTable) ? result : new Subquery(result, {}, tableAlias),
551
+ fields: {},
552
+ fieldsFlat: nestedSelection.map(({ field: field2 }) => ({
553
+ path: [],
554
+ field: is(field2, Column) ? aliasedTableColumn(field2, tableAlias) : field2
555
+ })),
556
+ joins,
557
+ where,
558
+ limit,
559
+ offset,
560
+ orderBy,
561
+ setOperators: []
562
+ });
563
+ } else {
564
+ result = this.buildSelectQuery({
565
+ table: aliasedTable(table, tableAlias),
566
+ fields: {},
567
+ fieldsFlat: selection.map(({ field }) => ({
568
+ path: [],
569
+ field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field
570
+ })),
571
+ joins,
572
+ where,
573
+ limit,
574
+ offset,
575
+ orderBy,
576
+ setOperators: []
577
+ });
578
+ }
579
+ return {
580
+ tableTsKey: tableConfig.tsName,
581
+ sql: result,
582
+ selection
583
+ };
584
+ }
585
+ }
586
+ export {
587
+ SingleStoreDialect
588
+ };
589
+ //# sourceMappingURL=dialect.js.map