rawsql-ts 0.12.0 → 0.13.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 (537) hide show
  1. package/LICENSE +21 -0
  2. package/dist/esm/index.js +11 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +16 -16
  5. package/dist/esm/index.min.js.map +3 -3
  6. package/dist/esm/src/index.d.ts +12 -0
  7. package/dist/esm/src/index.js +11 -0
  8. package/dist/esm/src/index.js.map +1 -1
  9. package/dist/esm/src/models/Clause.d.ts +7 -3
  10. package/dist/esm/src/models/Clause.js +17 -4
  11. package/dist/esm/src/models/Clause.js.map +1 -1
  12. package/dist/esm/src/models/DDLStatements.d.ts +14 -2
  13. package/dist/esm/src/models/DDLStatements.js +12 -0
  14. package/dist/esm/src/models/DDLStatements.js.map +1 -1
  15. package/dist/esm/src/models/InsertQuery.d.ts +1 -4
  16. package/dist/esm/src/models/InsertQuery.js +3 -5
  17. package/dist/esm/src/models/InsertQuery.js.map +1 -1
  18. package/dist/esm/src/models/SqlPrintToken.d.ts +1 -0
  19. package/dist/esm/src/models/SqlPrintToken.js +1 -0
  20. package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
  21. package/dist/esm/src/models/TableDefinitionModel.d.ts +39 -0
  22. package/dist/esm/src/models/TableDefinitionModel.js +77 -0
  23. package/dist/esm/src/models/TableDefinitionModel.js.map +1 -0
  24. package/dist/esm/src/models/ValuesQuery.d.ts +2 -0
  25. package/dist/esm/src/models/ValuesQuery.js +1 -0
  26. package/dist/esm/src/models/ValuesQuery.js.map +1 -1
  27. package/dist/esm/src/parsers/AlterTableParser.js +1 -1
  28. package/dist/esm/src/parsers/AlterTableParser.js.map +1 -1
  29. package/dist/esm/src/parsers/InsertQueryParser.js +4 -1
  30. package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
  31. package/dist/esm/src/parsers/ReturningClauseParser.js +33 -47
  32. package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
  33. package/dist/esm/src/parsers/SqlParser.d.ts +0 -1
  34. package/dist/esm/src/parsers/SqlParser.js +44 -58
  35. package/dist/esm/src/parsers/SqlParser.js.map +1 -1
  36. package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +1 -0
  37. package/dist/esm/src/parsers/SqlPrintTokenParser.js +23 -5
  38. package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
  39. package/dist/esm/src/tokenReaders/LiteralTokenReader.js +7 -0
  40. package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  41. package/dist/esm/src/transformers/DDLDiffGenerator.d.ts +14 -0
  42. package/dist/esm/src/transformers/DDLDiffGenerator.js +197 -0
  43. package/dist/esm/src/transformers/DDLDiffGenerator.js.map +1 -0
  44. package/dist/esm/src/transformers/DDLGeneralizer.d.ts +13 -0
  45. package/dist/esm/src/transformers/DDLGeneralizer.js +98 -0
  46. package/dist/esm/src/transformers/DDLGeneralizer.js.map +1 -0
  47. package/dist/esm/src/transformers/DDLToFixtureConverter.d.ts +19 -0
  48. package/dist/esm/src/transformers/DDLToFixtureConverter.js +202 -0
  49. package/dist/esm/src/transformers/DDLToFixtureConverter.js.map +1 -0
  50. package/dist/esm/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
  51. package/dist/esm/src/transformers/DeleteResultSelectConverter.js +394 -0
  52. package/dist/esm/src/transformers/DeleteResultSelectConverter.js.map +1 -0
  53. package/dist/esm/src/transformers/FixtureCteBuilder.d.ts +60 -0
  54. package/dist/esm/src/transformers/FixtureCteBuilder.js +147 -0
  55. package/dist/esm/src/transformers/FixtureCteBuilder.js.map +1 -0
  56. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
  57. package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
  58. package/dist/esm/src/transformers/InsertResultSelectConverter.d.ts +64 -0
  59. package/dist/esm/src/transformers/InsertResultSelectConverter.js +495 -0
  60. package/dist/esm/src/transformers/InsertResultSelectConverter.js.map +1 -0
  61. package/dist/esm/src/transformers/MergeResultSelectConverter.d.ts +38 -0
  62. package/dist/esm/src/transformers/MergeResultSelectConverter.js +306 -0
  63. package/dist/esm/src/transformers/MergeResultSelectConverter.js.map +1 -0
  64. package/dist/esm/src/transformers/QueryBuilder.d.ts +11 -0
  65. package/dist/esm/src/transformers/QueryBuilder.js +19 -3
  66. package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
  67. package/dist/esm/src/transformers/SelectResultSelectConverter.d.ts +10 -0
  68. package/dist/esm/src/transformers/SelectResultSelectConverter.js +32 -0
  69. package/dist/esm/src/transformers/SelectResultSelectConverter.js.map +1 -0
  70. package/dist/esm/src/transformers/SimulatedSelectConverter.d.ts +23 -0
  71. package/dist/esm/src/transformers/SimulatedSelectConverter.js +61 -0
  72. package/dist/esm/src/transformers/SimulatedSelectConverter.js.map +1 -0
  73. package/dist/esm/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
  74. package/dist/esm/src/transformers/UpdateResultSelectConverter.js +340 -0
  75. package/dist/esm/src/transformers/UpdateResultSelectConverter.js.map +1 -0
  76. package/dist/esm/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
  77. package/dist/esm/src/utils/SelectQueryWithClauseHelper.js +43 -0
  78. package/dist/esm/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
  79. package/dist/esm/src/utils/ValueComponentRewriter.d.ts +3 -0
  80. package/dist/esm/src/utils/ValueComponentRewriter.js +180 -0
  81. package/dist/esm/src/utils/ValueComponentRewriter.js.map +1 -0
  82. package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
  83. package/dist/formatters/OriginalFormatRestorer.js +139 -0
  84. package/dist/formatters/OriginalFormatRestorer.js.map +1 -0
  85. package/dist/index.js +144 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/index.min.js +17 -17
  88. package/dist/index.min.js.map +3 -3
  89. package/dist/models/BinarySelectQuery.js +198 -0
  90. package/dist/models/BinarySelectQuery.js.map +1 -0
  91. package/dist/models/CTEError.js +37 -0
  92. package/dist/models/CTEError.js.map +1 -0
  93. package/dist/models/Clause.js +535 -0
  94. package/dist/models/Clause.js.map +1 -0
  95. package/dist/models/CreateTableQuery.js +135 -0
  96. package/dist/models/CreateTableQuery.js.map +1 -0
  97. package/dist/models/DDLStatements.js +275 -0
  98. package/dist/models/DDLStatements.js.map +1 -0
  99. package/dist/models/DeleteQuery.js +20 -0
  100. package/dist/models/DeleteQuery.js.map +1 -0
  101. package/dist/models/FormattingLexeme.js +3 -0
  102. package/dist/models/FormattingLexeme.js.map +1 -0
  103. package/dist/models/HintClause.js +41 -0
  104. package/dist/models/HintClause.js.map +1 -0
  105. package/dist/models/InsertQuery.js +23 -0
  106. package/dist/models/InsertQuery.js.map +1 -0
  107. package/dist/models/KeywordTrie.js +54 -0
  108. package/dist/models/KeywordTrie.js.map +1 -0
  109. package/dist/models/Lexeme.js +22 -0
  110. package/dist/models/Lexeme.js.map +1 -0
  111. package/dist/models/MergeQuery.js +104 -0
  112. package/dist/models/MergeQuery.js.map +1 -0
  113. package/dist/models/SelectQuery.js +22 -0
  114. package/dist/models/SelectQuery.js.map +1 -0
  115. package/dist/models/SimpleSelectQuery.js +648 -0
  116. package/dist/models/SimpleSelectQuery.js.map +1 -0
  117. package/dist/models/SqlComponent.js +73 -0
  118. package/dist/models/SqlComponent.js.map +1 -0
  119. package/dist/models/SqlPrintToken.js +143 -0
  120. package/dist/models/SqlPrintToken.js.map +1 -0
  121. package/dist/models/TableDefinitionModel.js +86 -0
  122. package/dist/models/TableDefinitionModel.js.map +1 -0
  123. package/dist/models/UpdateQuery.js +29 -0
  124. package/dist/models/UpdateQuery.js.map +1 -0
  125. package/dist/models/ValueComponent.js +380 -0
  126. package/dist/models/ValueComponent.js.map +1 -0
  127. package/dist/models/ValuesQuery.js +62 -0
  128. package/dist/models/ValuesQuery.js.map +1 -0
  129. package/dist/parsers/AlterTableParser.js +490 -0
  130. package/dist/parsers/AlterTableParser.js.map +1 -0
  131. package/dist/parsers/AnalyzeStatementParser.js +94 -0
  132. package/dist/parsers/AnalyzeStatementParser.js.map +1 -0
  133. package/dist/parsers/CommandExpressionParser.js +213 -0
  134. package/dist/parsers/CommandExpressionParser.js.map +1 -0
  135. package/dist/parsers/CommonTableParser.js +177 -0
  136. package/dist/parsers/CommonTableParser.js.map +1 -0
  137. package/dist/parsers/CreateIndexParser.js +241 -0
  138. package/dist/parsers/CreateIndexParser.js.map +1 -0
  139. package/dist/parsers/CreateTableParser.js +738 -0
  140. package/dist/parsers/CreateTableParser.js.map +1 -0
  141. package/dist/parsers/DeleteClauseParser.js +37 -0
  142. package/dist/parsers/DeleteClauseParser.js.map +1 -0
  143. package/dist/parsers/DeleteQueryParser.js +77 -0
  144. package/dist/parsers/DeleteQueryParser.js.map +1 -0
  145. package/dist/parsers/DropConstraintParser.js +51 -0
  146. package/dist/parsers/DropConstraintParser.js.map +1 -0
  147. package/dist/parsers/DropIndexParser.js +73 -0
  148. package/dist/parsers/DropIndexParser.js.map +1 -0
  149. package/dist/parsers/DropTableParser.js +63 -0
  150. package/dist/parsers/DropTableParser.js.map +1 -0
  151. package/dist/parsers/ExplainStatementParser.js +189 -0
  152. package/dist/parsers/ExplainStatementParser.js.map +1 -0
  153. package/dist/parsers/FetchClauseParser.js +89 -0
  154. package/dist/parsers/FetchClauseParser.js.map +1 -0
  155. package/dist/parsers/ForClauseParser.js +58 -0
  156. package/dist/parsers/ForClauseParser.js.map +1 -0
  157. package/dist/parsers/FromClauseParser.js +54 -0
  158. package/dist/parsers/FromClauseParser.js.map +1 -0
  159. package/dist/parsers/FullNameParser.js +110 -0
  160. package/dist/parsers/FullNameParser.js.map +1 -0
  161. package/dist/parsers/FunctionExpressionParser.js +524 -0
  162. package/dist/parsers/FunctionExpressionParser.js.map +1 -0
  163. package/dist/parsers/GroupByParser.js +58 -0
  164. package/dist/parsers/GroupByParser.js.map +1 -0
  165. package/dist/parsers/HavingParser.js +36 -0
  166. package/dist/parsers/HavingParser.js.map +1 -0
  167. package/dist/parsers/IdentifierDecorator.js +17 -0
  168. package/dist/parsers/IdentifierDecorator.js.map +1 -0
  169. package/dist/parsers/IdentifierParser.js +15 -0
  170. package/dist/parsers/IdentifierParser.js.map +1 -0
  171. package/dist/parsers/InsertQueryParser.js +162 -0
  172. package/dist/parsers/InsertQueryParser.js.map +1 -0
  173. package/dist/parsers/JoinClauseParser.js +117 -0
  174. package/dist/parsers/JoinClauseParser.js.map +1 -0
  175. package/dist/parsers/JoinOnClauseParser.js +21 -0
  176. package/dist/parsers/JoinOnClauseParser.js.map +1 -0
  177. package/dist/parsers/JoinUsingClauseParser.js +23 -0
  178. package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
  179. package/dist/parsers/KeywordParser.js +99 -0
  180. package/dist/parsers/KeywordParser.js.map +1 -0
  181. package/dist/parsers/LimitClauseParser.js +38 -0
  182. package/dist/parsers/LimitClauseParser.js.map +1 -0
  183. package/dist/parsers/LiteralParser.js +48 -0
  184. package/dist/parsers/LiteralParser.js.map +1 -0
  185. package/dist/parsers/MergeQueryParser.js +483 -0
  186. package/dist/parsers/MergeQueryParser.js.map +1 -0
  187. package/dist/parsers/OffsetClauseParser.js +42 -0
  188. package/dist/parsers/OffsetClauseParser.js.map +1 -0
  189. package/dist/parsers/OrderByClauseParser.js +108 -0
  190. package/dist/parsers/OrderByClauseParser.js.map +1 -0
  191. package/dist/parsers/OverExpressionParser.js +44 -0
  192. package/dist/parsers/OverExpressionParser.js.map +1 -0
  193. package/dist/parsers/ParameterDecorator.js +40 -0
  194. package/dist/parsers/ParameterDecorator.js.map +1 -0
  195. package/dist/parsers/ParameterExpressionParser.js +24 -0
  196. package/dist/parsers/ParameterExpressionParser.js.map +1 -0
  197. package/dist/parsers/ParenExpressionParser.js +109 -0
  198. package/dist/parsers/ParenExpressionParser.js.map +1 -0
  199. package/dist/parsers/ParseError.js +25 -0
  200. package/dist/parsers/ParseError.js.map +1 -0
  201. package/dist/parsers/PartitionByParser.js +53 -0
  202. package/dist/parsers/PartitionByParser.js.map +1 -0
  203. package/dist/parsers/ReturningClauseParser.js +64 -0
  204. package/dist/parsers/ReturningClauseParser.js.map +1 -0
  205. package/dist/parsers/SelectClauseParser.js +244 -0
  206. package/dist/parsers/SelectClauseParser.js.map +1 -0
  207. package/dist/parsers/SelectQueryParser.js +564 -0
  208. package/dist/parsers/SelectQueryParser.js.map +1 -0
  209. package/dist/parsers/SequenceParser.js +245 -0
  210. package/dist/parsers/SequenceParser.js.map +1 -0
  211. package/dist/parsers/SetClauseParser.js +125 -0
  212. package/dist/parsers/SetClauseParser.js.map +1 -0
  213. package/dist/parsers/SourceAliasExpressionParser.js +60 -0
  214. package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
  215. package/dist/parsers/SourceExpressionParser.js +69 -0
  216. package/dist/parsers/SourceExpressionParser.js.map +1 -0
  217. package/dist/parsers/SourceParser.js +144 -0
  218. package/dist/parsers/SourceParser.js.map +1 -0
  219. package/dist/parsers/SqlParser.js +431 -0
  220. package/dist/parsers/SqlParser.js.map +1 -0
  221. package/dist/parsers/SqlPrintTokenParser.js +3289 -0
  222. package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
  223. package/dist/parsers/SqlTokenizer.js +553 -0
  224. package/dist/parsers/SqlTokenizer.js.map +1 -0
  225. package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
  226. package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
  227. package/dist/parsers/UnaryExpressionParser.js +39 -0
  228. package/dist/parsers/UnaryExpressionParser.js.map +1 -0
  229. package/dist/parsers/UpdateClauseParser.js +21 -0
  230. package/dist/parsers/UpdateClauseParser.js.map +1 -0
  231. package/dist/parsers/UpdateQueryParser.js +98 -0
  232. package/dist/parsers/UpdateQueryParser.js.map +1 -0
  233. package/dist/parsers/UsingClauseParser.js +33 -0
  234. package/dist/parsers/UsingClauseParser.js.map +1 -0
  235. package/dist/parsers/ValueParser.js +562 -0
  236. package/dist/parsers/ValueParser.js.map +1 -0
  237. package/dist/parsers/ValuesQueryParser.js +112 -0
  238. package/dist/parsers/ValuesQueryParser.js.map +1 -0
  239. package/dist/parsers/WhereClauseParser.js +51 -0
  240. package/dist/parsers/WhereClauseParser.js.map +1 -0
  241. package/dist/parsers/WindowClauseParser.js +57 -0
  242. package/dist/parsers/WindowClauseParser.js.map +1 -0
  243. package/dist/parsers/WindowExpressionParser.js +163 -0
  244. package/dist/parsers/WindowExpressionParser.js.map +1 -0
  245. package/dist/parsers/WithClauseParser.js +165 -0
  246. package/dist/parsers/WithClauseParser.js.map +1 -0
  247. package/dist/parsers/utils/LexemeCommentUtils.js +29 -0
  248. package/dist/parsers/utils/LexemeCommentUtils.js.map +1 -0
  249. package/dist/reporting/models/DataFlowEdge.js +58 -0
  250. package/dist/reporting/models/DataFlowEdge.js.map +1 -0
  251. package/dist/reporting/models/DataFlowGraph.js +138 -0
  252. package/dist/reporting/models/DataFlowGraph.js.map +1 -0
  253. package/dist/reporting/models/DataFlowNode.js +148 -0
  254. package/dist/reporting/models/DataFlowNode.js.map +1 -0
  255. package/dist/reporting/services/CTEHandler.js +58 -0
  256. package/dist/reporting/services/CTEHandler.js.map +1 -0
  257. package/dist/reporting/services/DataSourceHandler.js +95 -0
  258. package/dist/reporting/services/DataSourceHandler.js.map +1 -0
  259. package/dist/reporting/services/JoinHandler.js +84 -0
  260. package/dist/reporting/services/JoinHandler.js.map +1 -0
  261. package/dist/reporting/services/ProcessHandler.js +26 -0
  262. package/dist/reporting/services/ProcessHandler.js.map +1 -0
  263. package/dist/src/index.d.ts +15 -0
  264. package/dist/src/index.js +13 -1
  265. package/dist/src/index.js.map +1 -1
  266. package/dist/src/models/Clause.d.ts +7 -3
  267. package/dist/src/models/Clause.js +16 -3
  268. package/dist/src/models/Clause.js.map +1 -1
  269. package/dist/src/models/DDLStatements.d.ts +97 -2
  270. package/dist/src/models/DDLStatements.js +14 -1
  271. package/dist/src/models/DDLStatements.js.map +1 -1
  272. package/dist/src/models/InsertQuery.d.ts +1 -4
  273. package/dist/src/models/InsertQuery.js +3 -5
  274. package/dist/src/models/InsertQuery.js.map +1 -1
  275. package/dist/src/models/SqlPrintToken.d.ts +6 -0
  276. package/dist/src/models/SqlPrintToken.js +1 -0
  277. package/dist/src/models/SqlPrintToken.js.map +1 -1
  278. package/dist/src/models/TableDefinitionModel.d.ts +41 -0
  279. package/dist/src/models/TableDefinitionModel.js +85 -0
  280. package/dist/src/models/TableDefinitionModel.js.map +1 -0
  281. package/dist/src/models/ValueComponent.d.ts +2 -1
  282. package/dist/src/models/ValuesQuery.d.ts +2 -0
  283. package/dist/src/models/ValuesQuery.js +1 -0
  284. package/dist/src/models/ValuesQuery.js.map +1 -1
  285. package/dist/src/parsers/AlterTableParser.d.ts +1 -0
  286. package/dist/src/parsers/AlterTableParser.js +26 -5
  287. package/dist/src/parsers/AlterTableParser.js.map +1 -1
  288. package/dist/src/parsers/FunctionExpressionParser.d.ts +1 -0
  289. package/dist/src/parsers/InsertQueryParser.js +4 -1
  290. package/dist/src/parsers/InsertQueryParser.js.map +1 -1
  291. package/dist/src/parsers/ReturningClauseParser.js +33 -47
  292. package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
  293. package/dist/src/parsers/SequenceParser.d.ts +16 -0
  294. package/dist/src/parsers/SqlParser.d.ts +4 -3
  295. package/dist/src/parsers/SqlParser.js +44 -63
  296. package/dist/src/parsers/SqlParser.js.map +1 -1
  297. package/dist/src/parsers/SqlPrintTokenParser.d.ts +9 -0
  298. package/dist/src/parsers/SqlPrintTokenParser.js +22 -4
  299. package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
  300. package/dist/src/parsers/SqlTokenizer.d.ts +1 -0
  301. package/dist/src/tokenReaders/LiteralTokenReader.js +7 -0
  302. package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
  303. package/dist/src/transformers/DDLDiffGenerator.d.ts +18 -0
  304. package/dist/src/transformers/DDLDiffGenerator.js +313 -0
  305. package/dist/src/transformers/DDLDiffGenerator.js.map +1 -0
  306. package/dist/src/transformers/DDLGeneralizer.d.ts +13 -0
  307. package/dist/src/transformers/DDLGeneralizer.js +119 -0
  308. package/dist/src/transformers/DDLGeneralizer.js.map +1 -0
  309. package/dist/src/transformers/DDLToFixtureConverter.d.ts +19 -0
  310. package/dist/src/transformers/DDLToFixtureConverter.js +206 -0
  311. package/dist/src/transformers/DDLToFixtureConverter.js.map +1 -0
  312. package/dist/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
  313. package/dist/src/transformers/DeleteResultSelectConverter.js +398 -0
  314. package/dist/src/transformers/DeleteResultSelectConverter.js.map +1 -0
  315. package/dist/src/transformers/FixtureCteBuilder.d.ts +60 -0
  316. package/dist/src/transformers/FixtureCteBuilder.js +151 -0
  317. package/dist/src/transformers/FixtureCteBuilder.js.map +1 -0
  318. package/dist/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
  319. package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
  320. package/dist/src/transformers/InsertResultSelectConverter.d.ts +67 -0
  321. package/dist/src/transformers/InsertResultSelectConverter.js +499 -0
  322. package/dist/src/transformers/InsertResultSelectConverter.js.map +1 -0
  323. package/dist/src/transformers/MergeResultSelectConverter.d.ts +38 -0
  324. package/dist/src/transformers/MergeResultSelectConverter.js +310 -0
  325. package/dist/src/transformers/MergeResultSelectConverter.js.map +1 -0
  326. package/dist/src/transformers/QueryBuilder.d.ts +11 -0
  327. package/dist/src/transformers/QueryBuilder.js +19 -3
  328. package/dist/src/transformers/QueryBuilder.js.map +1 -1
  329. package/dist/src/transformers/SelectResultSelectConverter.d.ts +10 -0
  330. package/dist/src/transformers/SelectResultSelectConverter.js +36 -0
  331. package/dist/src/transformers/SelectResultSelectConverter.js.map +1 -0
  332. package/dist/src/transformers/SimulatedSelectConverter.d.ts +23 -0
  333. package/dist/src/transformers/SimulatedSelectConverter.js +65 -0
  334. package/dist/src/transformers/SimulatedSelectConverter.js.map +1 -0
  335. package/dist/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
  336. package/dist/src/transformers/UpdateResultSelectConverter.js +344 -0
  337. package/dist/src/transformers/UpdateResultSelectConverter.js.map +1 -0
  338. package/dist/src/types/GenericFixture.d.ts +17 -0
  339. package/dist/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
  340. package/dist/src/utils/SelectQueryWithClauseHelper.js +47 -0
  341. package/dist/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
  342. package/dist/src/utils/TableNameUtils.d.ts +10 -0
  343. package/dist/src/utils/ValueComponentRewriter.d.ts +3 -0
  344. package/dist/src/utils/ValueComponentRewriter.js +183 -0
  345. package/dist/src/utils/ValueComponentRewriter.js.map +1 -0
  346. package/dist/tokenReaders/BaseTokenReader.js +86 -0
  347. package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
  348. package/dist/tokenReaders/CommandTokenReader.js +221 -0
  349. package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
  350. package/dist/tokenReaders/EscapedIdentifierTokenReader.js +99 -0
  351. package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
  352. package/dist/tokenReaders/FunctionTokenReader.js +47 -0
  353. package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
  354. package/dist/tokenReaders/IdentifierTokenReader.js +34 -0
  355. package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
  356. package/dist/tokenReaders/LiteralTokenReader.js +329 -0
  357. package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
  358. package/dist/tokenReaders/OperatorTokenReader.js +152 -0
  359. package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
  360. package/dist/tokenReaders/ParameterTokenReader.js +190 -0
  361. package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
  362. package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
  363. package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
  364. package/dist/tokenReaders/SymbolTokenReader.js +35 -0
  365. package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
  366. package/dist/tokenReaders/TokenReaderManager.js +110 -0
  367. package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
  368. package/dist/tokenReaders/TypeTokenReader.js +69 -0
  369. package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
  370. package/dist/transformers/AliasRenamer.js +600 -0
  371. package/dist/transformers/AliasRenamer.js.map +1 -0
  372. package/dist/transformers/CTEBuilder.js +188 -0
  373. package/dist/transformers/CTEBuilder.js.map +1 -0
  374. package/dist/transformers/CTECollector.js +409 -0
  375. package/dist/transformers/CTECollector.js.map +1 -0
  376. package/dist/transformers/CTEComposer.js +302 -0
  377. package/dist/transformers/CTEComposer.js.map +1 -0
  378. package/dist/transformers/CTEDependencyAnalyzer.js +285 -0
  379. package/dist/transformers/CTEDependencyAnalyzer.js.map +1 -0
  380. package/dist/transformers/CTEDependencyTracer.js +253 -0
  381. package/dist/transformers/CTEDependencyTracer.js.map +1 -0
  382. package/dist/transformers/CTEDisabler.js +355 -0
  383. package/dist/transformers/CTEDisabler.js.map +1 -0
  384. package/dist/transformers/CTEInjector.js +83 -0
  385. package/dist/transformers/CTEInjector.js.map +1 -0
  386. package/dist/transformers/CTENormalizer.js +46 -0
  387. package/dist/transformers/CTENormalizer.js.map +1 -0
  388. package/dist/transformers/CTEQueryDecomposer.js +589 -0
  389. package/dist/transformers/CTEQueryDecomposer.js.map +1 -0
  390. package/dist/transformers/CTERenamer.js +486 -0
  391. package/dist/transformers/CTERenamer.js.map +1 -0
  392. package/dist/transformers/CTETableReferenceCollector.js +358 -0
  393. package/dist/transformers/CTETableReferenceCollector.js.map +1 -0
  394. package/dist/transformers/ColumnReferenceCollector.js +478 -0
  395. package/dist/transformers/ColumnReferenceCollector.js.map +1 -0
  396. package/dist/transformers/DDLDiffGenerator.js +313 -0
  397. package/dist/transformers/DDLDiffGenerator.js.map +1 -0
  398. package/dist/transformers/DDLGeneralizer.js +119 -0
  399. package/dist/transformers/DDLGeneralizer.js.map +1 -0
  400. package/dist/transformers/DDLToFixtureConverter.js +206 -0
  401. package/dist/transformers/DDLToFixtureConverter.js.map +1 -0
  402. package/dist/transformers/DeleteResultSelectConverter.js +414 -0
  403. package/dist/transformers/DeleteResultSelectConverter.js.map +1 -0
  404. package/dist/transformers/DynamicQueryBuilder.js +164 -0
  405. package/dist/transformers/DynamicQueryBuilder.js.map +1 -0
  406. package/dist/transformers/EnhancedJsonMapping.js +223 -0
  407. package/dist/transformers/EnhancedJsonMapping.js.map +1 -0
  408. package/dist/transformers/FilterableItemCollector.js +259 -0
  409. package/dist/transformers/FilterableItemCollector.js.map +1 -0
  410. package/dist/transformers/FixtureCteBuilder.js +151 -0
  411. package/dist/transformers/FixtureCteBuilder.js.map +1 -0
  412. package/dist/transformers/FormatOptionResolver.js +67 -0
  413. package/dist/transformers/FormatOptionResolver.js.map +1 -0
  414. package/dist/transformers/Formatter.js +38 -0
  415. package/dist/transformers/Formatter.js.map +1 -0
  416. package/dist/transformers/InsertQuerySelectValuesConverter.js +125 -0
  417. package/dist/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
  418. package/dist/transformers/InsertResultSelectConverter.js +589 -0
  419. package/dist/transformers/InsertResultSelectConverter.js.map +1 -0
  420. package/dist/transformers/JoinAggregationDecomposer.js +497 -0
  421. package/dist/transformers/JoinAggregationDecomposer.js.map +1 -0
  422. package/dist/transformers/JsonMappingConverter.js +392 -0
  423. package/dist/transformers/JsonMappingConverter.js.map +1 -0
  424. package/dist/transformers/JsonMappingUnifier.js +216 -0
  425. package/dist/transformers/JsonMappingUnifier.js.map +1 -0
  426. package/dist/transformers/LinePrinter.js +148 -0
  427. package/dist/transformers/LinePrinter.js.map +1 -0
  428. package/dist/transformers/MergeResultSelectConverter.js +310 -0
  429. package/dist/transformers/MergeResultSelectConverter.js.map +1 -0
  430. package/dist/transformers/ModelDrivenJsonMapping.js +122 -0
  431. package/dist/transformers/ModelDrivenJsonMapping.js.map +1 -0
  432. package/dist/transformers/OnelineFormattingHelper.js +99 -0
  433. package/dist/transformers/OnelineFormattingHelper.js.map +1 -0
  434. package/dist/transformers/ParameterCollector.js +37 -0
  435. package/dist/transformers/ParameterCollector.js.map +1 -0
  436. package/dist/transformers/PostgresArrayEntityCteBuilder.js +458 -0
  437. package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
  438. package/dist/transformers/PostgresJsonQueryBuilder.js +245 -0
  439. package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
  440. package/dist/transformers/PostgresObjectEntityCteBuilder.js +347 -0
  441. package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
  442. package/dist/transformers/QueryBuilder.js +649 -0
  443. package/dist/transformers/QueryBuilder.js.map +1 -0
  444. package/dist/transformers/QueryFlowDiagramGenerator.js +157 -0
  445. package/dist/transformers/QueryFlowDiagramGenerator.js.map +1 -0
  446. package/dist/transformers/SchemaCollector.js +523 -0
  447. package/dist/transformers/SchemaCollector.js.map +1 -0
  448. package/dist/transformers/SelectResultSelectConverter.js +36 -0
  449. package/dist/transformers/SelectResultSelectConverter.js.map +1 -0
  450. package/dist/transformers/SelectValueCollector.js +244 -0
  451. package/dist/transformers/SelectValueCollector.js.map +1 -0
  452. package/dist/transformers/SelectableColumnCollector.js +674 -0
  453. package/dist/transformers/SelectableColumnCollector.js.map +1 -0
  454. package/dist/transformers/SimulatedSelectConverter.js +65 -0
  455. package/dist/transformers/SimulatedSelectConverter.js.map +1 -0
  456. package/dist/transformers/SmartRenamer.js +422 -0
  457. package/dist/transformers/SmartRenamer.js.map +1 -0
  458. package/dist/transformers/SqlFormatter.js +77 -0
  459. package/dist/transformers/SqlFormatter.js.map +1 -0
  460. package/dist/transformers/SqlIdentifierRenamer.js +504 -0
  461. package/dist/transformers/SqlIdentifierRenamer.js.map +1 -0
  462. package/dist/transformers/SqlOutputToken.js +13 -0
  463. package/dist/transformers/SqlOutputToken.js.map +1 -0
  464. package/dist/transformers/SqlPaginationInjector.js +108 -0
  465. package/dist/transformers/SqlPaginationInjector.js.map +1 -0
  466. package/dist/transformers/SqlParamInjector.js +802 -0
  467. package/dist/transformers/SqlParamInjector.js.map +1 -0
  468. package/dist/transformers/SqlParameterBinder.js +70 -0
  469. package/dist/transformers/SqlParameterBinder.js.map +1 -0
  470. package/dist/transformers/SqlPrinter.js +1478 -0
  471. package/dist/transformers/SqlPrinter.js.map +1 -0
  472. package/dist/transformers/SqlSortInjector.js +153 -0
  473. package/dist/transformers/SqlSortInjector.js.map +1 -0
  474. package/dist/transformers/TableColumnResolver.js +3 -0
  475. package/dist/transformers/TableColumnResolver.js.map +1 -0
  476. package/dist/transformers/TableSourceCollector.js +439 -0
  477. package/dist/transformers/TableSourceCollector.js.map +1 -0
  478. package/dist/transformers/TypeTransformationPostProcessor.js +363 -0
  479. package/dist/transformers/TypeTransformationPostProcessor.js.map +1 -0
  480. package/dist/transformers/UpdateResultSelectConverter.js +359 -0
  481. package/dist/transformers/UpdateResultSelectConverter.js.map +1 -0
  482. package/dist/transformers/UpstreamSelectQueryFinder.js +184 -0
  483. package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
  484. package/dist/tsconfig.tsbuildinfo +1 -1
  485. package/dist/types/Formatting.js +3 -0
  486. package/dist/types/Formatting.js.map +1 -0
  487. package/dist/types/GenericFixture.js +3 -0
  488. package/dist/types/GenericFixture.js.map +1 -0
  489. package/dist/utils/CTERegionDetector.js +464 -0
  490. package/dist/utils/CTERegionDetector.js.map +1 -0
  491. package/dist/utils/CommentEditor.js +345 -0
  492. package/dist/utils/CommentEditor.js.map +1 -0
  493. package/dist/utils/CommentUtils.js +69 -0
  494. package/dist/utils/CommentUtils.js.map +1 -0
  495. package/dist/utils/CursorContextAnalyzer.js +338 -0
  496. package/dist/utils/CursorContextAnalyzer.js.map +1 -0
  497. package/dist/utils/IntelliSenseApi.js +292 -0
  498. package/dist/utils/IntelliSenseApi.js.map +1 -0
  499. package/dist/utils/JsonSchemaValidator.js +215 -0
  500. package/dist/utils/JsonSchemaValidator.js.map +1 -0
  501. package/dist/utils/KeywordCache.js +206 -0
  502. package/dist/utils/KeywordCache.js.map +1 -0
  503. package/dist/utils/LexemeCursor.js +314 -0
  504. package/dist/utils/LexemeCursor.js.map +1 -0
  505. package/dist/utils/MultiQuerySplitter.js +292 -0
  506. package/dist/utils/MultiQuerySplitter.js.map +1 -0
  507. package/dist/utils/OperatorPrecedence.js +107 -0
  508. package/dist/utils/OperatorPrecedence.js.map +1 -0
  509. package/dist/utils/ParameterDetector.js +53 -0
  510. package/dist/utils/ParameterDetector.js.map +1 -0
  511. package/dist/utils/ParameterHelper.js +31 -0
  512. package/dist/utils/ParameterHelper.js.map +1 -0
  513. package/dist/utils/ParameterRemover.js +783 -0
  514. package/dist/utils/ParameterRemover.js.map +1 -0
  515. package/dist/utils/ParserStringUtils.js +31 -0
  516. package/dist/utils/ParserStringUtils.js.map +1 -0
  517. package/dist/utils/PositionAwareParser.js +363 -0
  518. package/dist/utils/PositionAwareParser.js.map +1 -0
  519. package/dist/utils/SchemaManager.js +217 -0
  520. package/dist/utils/SchemaManager.js.map +1 -0
  521. package/dist/utils/ScopeResolver.js +272 -0
  522. package/dist/utils/ScopeResolver.js.map +1 -0
  523. package/dist/utils/SelectQueryWithClauseHelper.js +47 -0
  524. package/dist/utils/SelectQueryWithClauseHelper.js.map +1 -0
  525. package/dist/utils/SqlSchemaValidator.js +55 -0
  526. package/dist/utils/SqlSchemaValidator.js.map +1 -0
  527. package/dist/utils/TableNameUtils.js +35 -0
  528. package/dist/utils/TableNameUtils.js.map +1 -0
  529. package/dist/utils/TextPositionUtils.js +128 -0
  530. package/dist/utils/TextPositionUtils.js.map +1 -0
  531. package/dist/utils/ValueComponentRewriter.js +187 -0
  532. package/dist/utils/ValueComponentRewriter.js.map +1 -0
  533. package/dist/utils/charLookupTable.js +73 -0
  534. package/dist/utils/charLookupTable.js.map +1 -0
  535. package/dist/utils/stringUtils.js +230 -0
  536. package/dist/utils/stringUtils.js.map +1 -0
  537. package/package.json +62 -62
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimulatedSelectConverter.js","sourceRoot":"","sources":["../../../../src/transformers/SimulatedSelectConverter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAA6B,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,2BAA2B,EAA6B,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,2BAA2B,EAA6B,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,0BAA0B,EAA4B,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAA6B,MAAM,+BAA+B,CAAC;AASvG,MAAM,OAAO,wBAAwB;IACjC;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,OAAO,CAAC,GAAiB,EAAE,OAAgC;QACrE,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO,2BAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO,2BAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO,2BAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC5B,OAAO,0BAA0B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YACrG,qDAAqD;YACrD,OAAO,2BAA2B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YAClC,qCAAqC;YACrC,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvC,8CAA8C;gBAC9C,uEAAuE;gBACvE,MAAM,eAAe,GAAG,2BAA2B,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBAC9F,GAAG,CAAC,aAAa,GAAG,eAAe,CAAC;gBACpC,OAAO,GAAG,CAAC;YACf,CAAC;YACD,uCAAuC;YACvC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,0CAA0C;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,51 @@
1
+ import { UpdateQuery } from '../models/UpdateQuery';
2
+ import { SimpleSelectQuery } from '../models/SelectQuery';
3
+ import { TableDefinitionModel, TableDefinitionRegistry } from '../models/TableDefinitionModel';
4
+ import { FixtureTableDefinition } from './FixtureCteBuilder';
5
+ import type { MissingFixtureStrategy } from './InsertResultSelectConverter';
6
+ /** Options that control how UPDATE-to-SELECT conversion resolves metadata and fixtures. */
7
+ export interface UpdateResultSelectOptions {
8
+ /** Optional registry keyed by table name (matching the target table name case). */
9
+ tableDefinitions?: TableDefinitionRegistry;
10
+ /** Optional callback that resolves metadata by table name (useful for schemified targets). */
11
+ tableDefinitionResolver?: (tableName: string) => TableDefinitionModel | undefined;
12
+ /** Optional fixtures that should shadow real tables inside the generated SELECT. */
13
+ fixtureTables?: FixtureTableDefinition[];
14
+ /** Strategy for how missing fixtures should be tolerated. */
15
+ missingFixtureStrategy?: MissingFixtureStrategy;
16
+ }
17
+ export declare class UpdateResultSelectConverter {
18
+ private static readonly DEFAULT_MISSING_FIXTURE_STRATEGY;
19
+ /**
20
+ * Converts an UPDATE with RETURNING (or a bare UPDATE) into a SELECT that mirrors its output rows.
21
+ */
22
+ static toSelectQuery(updateQuery: UpdateQuery, options?: UpdateResultSelectOptions): SimpleSelectQuery;
23
+ private static buildReturningSelectClause;
24
+ private static buildReturningSelectItems;
25
+ private static isWildcardReturningItem;
26
+ private static expandReturningWildcard;
27
+ private static buildUpdateReturningSelectItem;
28
+ private static buildUpdateColumnExpression;
29
+ private static getColumnReferenceName;
30
+ private static getReturningAlias;
31
+ private static buildCountSelectClause;
32
+ private static buildFromClause;
33
+ private static mapSetExpressions;
34
+ private static ensureColumnExists;
35
+ private static resolveTableDefinition;
36
+ private static convertFixtureToTableDefinition;
37
+ private static buildTableDefinitionMap;
38
+ private static extractTargetTableName;
39
+ private static extractColumnName;
40
+ private static buildFixtureCtes;
41
+ private static collectPhysicalTableReferences;
42
+ private static filterFixtureTablesForReferences;
43
+ private static collectReferencedTablesFromWithClause;
44
+ private static buildFixtureTableMap;
45
+ private static ensureFixtureCoverage;
46
+ private static collectReferencedTables;
47
+ private static collectCteNamesFromWithClause;
48
+ private static getMissingFixtureTables;
49
+ private static mergeWithClause;
50
+ private static normalizeIdentifier;
51
+ }
@@ -0,0 +1,340 @@
1
+ import { FromClause, JoinClause, SelectClause, SelectItem, TableSource, WithClause } from '../models/Clause';
2
+ import { SimpleSelectQuery } from '../models/SelectQuery';
3
+ import { ColumnReference, FunctionCall, IdentifierString, RawString } from '../models/ValueComponent';
4
+ import { TableSourceCollector } from './TableSourceCollector';
5
+ import { FixtureCteBuilder } from './FixtureCteBuilder';
6
+ import { SelectQueryWithClauseHelper } from '../utils/SelectQueryWithClauseHelper';
7
+ import { rewriteValueComponentWithColumnResolver } from '../utils/ValueComponentRewriter';
8
+ export class UpdateResultSelectConverter {
9
+ /**
10
+ * Converts an UPDATE with RETURNING (or a bare UPDATE) into a SELECT that mirrors its output rows.
11
+ */
12
+ static toSelectQuery(updateQuery, options) {
13
+ var _a, _b, _c, _d;
14
+ const targetTableName = this.extractTargetTableName(updateQuery.updateClause);
15
+ const tableDefinition = this.resolveTableDefinition(targetTableName, options);
16
+ const targetAlias = updateQuery.updateClause.getSourceAliasName();
17
+ const fromClause = this.buildFromClause(updateQuery.updateClause.source, updateQuery.fromClause);
18
+ const whereClause = (_a = updateQuery.whereClause) !== null && _a !== void 0 ? _a : null;
19
+ // Decide whether RETURNING or a row count should drive the SELECT clause.
20
+ const selectClause = updateQuery.returningClause
21
+ ? this.buildReturningSelectClause(updateQuery.returningClause, updateQuery.setClause, targetAlias, tableDefinition)
22
+ : this.buildCountSelectClause();
23
+ // Assemble the skeleton SELECT that mirrors the UPDATE's source and predicates.
24
+ const selectQuery = new SimpleSelectQuery({
25
+ withClause: (_b = updateQuery.withClause) !== null && _b !== void 0 ? _b : undefined,
26
+ selectClause,
27
+ fromClause,
28
+ whereClause
29
+ });
30
+ // Prepare fixture descriptors for the tables that will be touched by the SELECT.
31
+ const fixtureTables = (_c = options === null || options === void 0 ? void 0 : options.fixtureTables) !== null && _c !== void 0 ? _c : [];
32
+ const fixtureMap = this.buildFixtureTableMap(fixtureTables);
33
+ const missingStrategy = (_d = options === null || options === void 0 ? void 0 : options.missingFixtureStrategy) !== null && _d !== void 0 ? _d : this.DEFAULT_MISSING_FIXTURE_STRATEGY;
34
+ const originalWithClause = SelectQueryWithClauseHelper.detachWithClause(selectQuery);
35
+ const referencedTables = this.collectPhysicalTableReferences(selectQuery, originalWithClause);
36
+ const cteNames = this.collectCteNamesFromWithClause(originalWithClause);
37
+ const normalizedTarget = this.normalizeIdentifier(targetTableName);
38
+ if (!cteNames.has(normalizedTarget)) {
39
+ referencedTables.add(normalizedTarget);
40
+ }
41
+ // Ensure each referenced table is covered by a fixture (or allowed to skip it).
42
+ this.ensureFixtureCoverage(referencedTables, fixtureMap, missingStrategy);
43
+ const filteredFixtures = this.filterFixtureTablesForReferences(fixtureTables, referencedTables);
44
+ // Turn the fixture definitions into CommonTable entries before reinjecting the WITH clause.
45
+ const fixtureCtes = this.buildFixtureCtes(filteredFixtures);
46
+ const recombinedWithClause = this.mergeWithClause(originalWithClause, fixtureCtes);
47
+ // Reattach the combined WITH clause so fixture CTEs precede any existing definitions.
48
+ SelectQueryWithClauseHelper.setWithClause(selectQuery, recombinedWithClause);
49
+ return selectQuery;
50
+ }
51
+ static buildReturningSelectClause(returning, setClause, targetAlias, tableDefinition) {
52
+ const setExpressionMap = this.mapSetExpressions(setClause);
53
+ const selectItems = this.buildReturningSelectItems(returning, setExpressionMap, targetAlias, tableDefinition);
54
+ return new SelectClause(selectItems);
55
+ }
56
+ static buildReturningSelectItems(returning, setExpressions, targetAlias, tableDefinition) {
57
+ // Convert each RETURNING item into a select entry, expanding wildcards up front.
58
+ const selectItems = [];
59
+ for (const item of returning.items) {
60
+ if (this.isWildcardReturningItem(item)) {
61
+ selectItems.push(...this.expandReturningWildcard(tableDefinition, setExpressions, targetAlias));
62
+ continue;
63
+ }
64
+ selectItems.push(this.buildUpdateReturningSelectItem(item, setExpressions, targetAlias, tableDefinition));
65
+ }
66
+ return selectItems;
67
+ }
68
+ static isWildcardReturningItem(item) {
69
+ return (item.value instanceof ColumnReference &&
70
+ item.value.column.name === '*');
71
+ }
72
+ static expandReturningWildcard(tableDefinition, setExpressions, targetAlias) {
73
+ // Use metadata to expand RETURNING * so each column can honor SET overrides.
74
+ if (!tableDefinition) {
75
+ throw new Error('Cannot expand RETURNING * without table definition.');
76
+ }
77
+ return tableDefinition.columns.map((column) => {
78
+ const expression = this.buildUpdateColumnExpression(column.name, setExpressions, targetAlias, tableDefinition);
79
+ return new SelectItem(expression, column.name);
80
+ });
81
+ }
82
+ static buildUpdateReturningSelectItem(item, setExpressions, targetAlias, tableDefinition) {
83
+ // Rewrite the item expression so column references honor SET overrides.
84
+ const expression = rewriteValueComponentWithColumnResolver(item.value, (column) => this.buildUpdateColumnExpression(column, setExpressions, targetAlias, tableDefinition));
85
+ const alias = this.getReturningAlias(item);
86
+ return new SelectItem(expression, alias);
87
+ }
88
+ static buildUpdateColumnExpression(columnOrName, setExpressions, targetAlias, tableDefinition) {
89
+ const columnName = typeof columnOrName === 'string'
90
+ ? columnOrName
91
+ : this.getColumnReferenceName(columnOrName);
92
+ const normalized = this.normalizeIdentifier(columnName);
93
+ const overrideExpression = setExpressions.get(normalized);
94
+ // Prefer the SET expression when the column is updated, otherwise preserve the target reference.
95
+ if (overrideExpression) {
96
+ return overrideExpression;
97
+ }
98
+ this.ensureColumnExists(columnName, tableDefinition);
99
+ return new ColumnReference(targetAlias, columnName);
100
+ }
101
+ static getColumnReferenceName(column) {
102
+ const nameComponent = column.qualifiedName.name;
103
+ if (nameComponent instanceof IdentifierString) {
104
+ return nameComponent.name;
105
+ }
106
+ return nameComponent.value;
107
+ }
108
+ static getReturningAlias(item) {
109
+ var _a;
110
+ if ((_a = item.identifier) === null || _a === void 0 ? void 0 : _a.name) {
111
+ return item.identifier.name;
112
+ }
113
+ if (item.value instanceof ColumnReference) {
114
+ return item.value.toString();
115
+ }
116
+ return null;
117
+ }
118
+ static buildCountSelectClause() {
119
+ // Count rows when the UPDATE does not expose RETURNING output.
120
+ const countFunction = new FunctionCall(null, 'count', new RawString('*'), null);
121
+ const selectItem = new SelectItem(countFunction, 'count');
122
+ return new SelectClause([selectItem]);
123
+ }
124
+ static buildFromClause(targetSource, fromClause) {
125
+ if (!fromClause) {
126
+ return new FromClause(targetSource, null);
127
+ }
128
+ const joins = [];
129
+ // Cross join any explicit FROM sources so their columns remain accessible.
130
+ joins.push(new JoinClause('cross join', fromClause.source, null, false));
131
+ if (fromClause.joins) {
132
+ joins.push(...fromClause.joins);
133
+ }
134
+ return new FromClause(targetSource, joins);
135
+ }
136
+ static mapSetExpressions(setClause) {
137
+ // Normalize each column name so lookups are case-insensitive.
138
+ const expressionMap = new Map();
139
+ for (const item of setClause.items) {
140
+ const columnName = this.extractColumnName(item);
141
+ expressionMap.set(this.normalizeIdentifier(columnName), item.value);
142
+ }
143
+ return expressionMap;
144
+ }
145
+ static ensureColumnExists(columnName, tableDefinition) {
146
+ // Guard against referencing columns that do not exist when metadata is available.
147
+ if (!tableDefinition) {
148
+ return;
149
+ }
150
+ const normalized = this.normalizeIdentifier(columnName);
151
+ const exists = tableDefinition.columns.some((column) => this.normalizeIdentifier(column.name) === normalized);
152
+ if (!exists) {
153
+ throw new Error(`Column '${columnName}' cannot be resolved for RETURNING output.`);
154
+ }
155
+ }
156
+ static resolveTableDefinition(tableName, options) {
157
+ // Prefer resolver callback results before falling back to the static registry.
158
+ if (options === null || options === void 0 ? void 0 : options.tableDefinitionResolver) {
159
+ const resolved = options.tableDefinitionResolver(tableName);
160
+ if (resolved !== undefined) {
161
+ return resolved;
162
+ }
163
+ }
164
+ const normalized = this.normalizeIdentifier(tableName);
165
+ if (options === null || options === void 0 ? void 0 : options.tableDefinitions) {
166
+ const map = this.buildTableDefinitionMap(options.tableDefinitions);
167
+ const definition = map.get(normalized);
168
+ if (definition) {
169
+ return definition;
170
+ }
171
+ }
172
+ if (options === null || options === void 0 ? void 0 : options.fixtureTables) {
173
+ const fixture = options.fixtureTables.find(f => this.normalizeIdentifier(f.tableName) === normalized);
174
+ if (fixture) {
175
+ return this.convertFixtureToTableDefinition(fixture);
176
+ }
177
+ }
178
+ return undefined;
179
+ }
180
+ static convertFixtureToTableDefinition(fixture) {
181
+ return {
182
+ name: fixture.tableName,
183
+ columns: fixture.columns.map(col => {
184
+ var _a;
185
+ return ({
186
+ name: col.name,
187
+ typeName: col.typeName,
188
+ required: false,
189
+ defaultValue: (_a = col.defaultValue) !== null && _a !== void 0 ? _a : null
190
+ });
191
+ })
192
+ };
193
+ }
194
+ static buildTableDefinitionMap(registry) {
195
+ // Normalize registry keys so lookups ignore casing.
196
+ const map = new Map();
197
+ for (const definition of Object.values(registry)) {
198
+ map.set(this.normalizeIdentifier(definition.name), definition);
199
+ }
200
+ return map;
201
+ }
202
+ static extractTargetTableName(updateClause) {
203
+ const datasource = updateClause.source.datasource;
204
+ if (datasource instanceof TableSource) {
205
+ return datasource.getSourceName();
206
+ }
207
+ throw new Error('Update target must be a table source for conversion.');
208
+ }
209
+ static extractColumnName(item) {
210
+ const columnComponent = item.qualifiedName.name;
211
+ if (columnComponent instanceof RawString) {
212
+ return columnComponent.value;
213
+ }
214
+ return columnComponent.name;
215
+ }
216
+ static buildFixtureCtes(fixtures) {
217
+ if (!fixtures || fixtures.length === 0) {
218
+ return [];
219
+ }
220
+ return FixtureCteBuilder.buildFixtures(fixtures);
221
+ }
222
+ static collectPhysicalTableReferences(selectQuery, withClause) {
223
+ const referencedTables = this.collectReferencedTables(selectQuery);
224
+ const ignoredTables = this.collectCteNamesFromWithClause(withClause);
225
+ const tablesToShadow = new Set();
226
+ // Record only concrete tables that are not already defined via CTE aliases.
227
+ for (const table of referencedTables) {
228
+ if (ignoredTables.has(table)) {
229
+ continue;
230
+ }
231
+ tablesToShadow.add(table);
232
+ }
233
+ const cteReferencedTables = this.collectReferencedTablesFromWithClause(withClause);
234
+ for (const table of cteReferencedTables) {
235
+ if (ignoredTables.has(table)) {
236
+ continue;
237
+ }
238
+ tablesToShadow.add(table);
239
+ }
240
+ return tablesToShadow;
241
+ }
242
+ static filterFixtureTablesForReferences(fixtures, referencedTables) {
243
+ if (!fixtures.length || referencedTables.size === 0) {
244
+ return [];
245
+ }
246
+ const filtered = [];
247
+ for (const fixture of fixtures) {
248
+ if (referencedTables.has(this.normalizeIdentifier(fixture.tableName))) {
249
+ filtered.push(fixture);
250
+ }
251
+ }
252
+ return filtered;
253
+ }
254
+ static collectReferencedTablesFromWithClause(withClause) {
255
+ const tables = new Set();
256
+ if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
257
+ return tables;
258
+ }
259
+ for (const cte of withClause.tables) {
260
+ for (const table of this.collectReferencedTables(cte.query)) {
261
+ tables.add(table);
262
+ }
263
+ }
264
+ return tables;
265
+ }
266
+ static buildFixtureTableMap(fixtures) {
267
+ // Normalize fixture table names to keep comparisons consistent.
268
+ const map = new Map();
269
+ for (const fixture of fixtures) {
270
+ map.set(this.normalizeIdentifier(fixture.tableName), fixture);
271
+ }
272
+ return map;
273
+ }
274
+ static ensureFixtureCoverage(referencedTables, fixtureMap, strategy) {
275
+ if (referencedTables.size === 0) {
276
+ return;
277
+ }
278
+ const missingTables = this.getMissingFixtureTables(referencedTables, fixtureMap);
279
+ if (missingTables.length === 0) {
280
+ return;
281
+ }
282
+ if (strategy === 'error') {
283
+ throw new Error(`Update SELECT refers to tables without fixture coverage: ${missingTables.join(', ')}.`);
284
+ }
285
+ }
286
+ static collectReferencedTables(query) {
287
+ // Use the collector to track every TableSource referenced by the SELECT.
288
+ const collector = new TableSourceCollector(false);
289
+ const sources = collector.collect(query);
290
+ const normalized = new Set();
291
+ for (const source of sources) {
292
+ normalized.add(this.normalizeIdentifier(source.getSourceName()));
293
+ }
294
+ return normalized;
295
+ }
296
+ static collectCteNamesFromWithClause(withClause) {
297
+ // Determine which table names come from CTE aliases so they can be ignored.
298
+ const names = new Set();
299
+ if (!(withClause === null || withClause === void 0 ? void 0 : withClause.tables)) {
300
+ return names;
301
+ }
302
+ for (const table of withClause.tables) {
303
+ names.add(this.normalizeIdentifier(table.getSourceAliasName()));
304
+ }
305
+ return names;
306
+ }
307
+ static getMissingFixtureTables(referencedTables, fixtureMap) {
308
+ // Return every referenced table that lacks an overriding fixture definition.
309
+ const missing = [];
310
+ for (const table of referencedTables) {
311
+ if (!fixtureMap.has(table)) {
312
+ missing.push(table);
313
+ }
314
+ }
315
+ return missing;
316
+ }
317
+ static mergeWithClause(original, fixtureCtes) {
318
+ var _a;
319
+ // Combine fixture CTEs ahead of any original definitions so they shadow physical tables.
320
+ if (!fixtureCtes.length && !original) {
321
+ return null;
322
+ }
323
+ const combinedTables = [...fixtureCtes];
324
+ if (original === null || original === void 0 ? void 0 : original.tables) {
325
+ combinedTables.push(...original.tables);
326
+ }
327
+ if (!combinedTables.length) {
328
+ return null;
329
+ }
330
+ const merged = new WithClause((_a = original === null || original === void 0 ? void 0 : original.recursive) !== null && _a !== void 0 ? _a : false, combinedTables);
331
+ merged.globalComments = (original === null || original === void 0 ? void 0 : original.globalComments) ? [...original.globalComments] : null;
332
+ merged.trailingComments = (original === null || original === void 0 ? void 0 : original.trailingComments) ? [...original.trailingComments] : null;
333
+ return merged;
334
+ }
335
+ static normalizeIdentifier(value) {
336
+ return value.trim().toLowerCase();
337
+ }
338
+ }
339
+ UpdateResultSelectConverter.DEFAULT_MISSING_FIXTURE_STRATEGY = 'error';
340
+ //# sourceMappingURL=UpdateResultSelectConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateResultSelectConverter.js","sourceRoot":"","sources":["../../../../src/transformers/UpdateResultSelectConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,UAAU,EACV,UAAU,EAEV,YAAY,EACZ,UAAU,EAIV,WAAW,EACX,UAAU,EACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAe,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACH,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,SAAS,EAEZ,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAA0B,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,uCAAuC,EAAE,MAAM,iCAAiC,CAAC;AAe1F,MAAM,OAAO,2BAA2B;IAGpC;;OAEG;IACI,MAAM,CAAC,aAAa,CAAC,WAAwB,EAAE,OAAmC;;QACrF,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAElE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;QACjG,MAAM,WAAW,GAAG,MAAA,WAAW,CAAC,WAAW,mCAAI,IAAI,CAAC;QAEpD,0EAA0E;QAC1E,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe;YAC5C,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAC7B,WAAW,CAAC,eAAe,EAC3B,WAAW,CAAC,SAAS,EACrB,WAAW,EACX,eAAe,CAClB;YACD,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEpC,gFAAgF;QAChF,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC;YACtC,UAAU,EAAE,MAAA,WAAW,CAAC,UAAU,mCAAI,SAAS;YAC/C,YAAY;YACZ,UAAU;YACV,WAAW;SACd,CAAC,CAAC;QAEH,iFAAiF;QACjF,MAAM,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,mCAAI,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,mCAAI,IAAI,CAAC,gCAAgC,CAAC;QAEjG,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrF,MAAM,gBAAgB,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,CAAC;QACxE,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC;QACD,gFAAgF;QAChF,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAE1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,gCAAgC,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAChG,4FAA4F;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACnF,sFAAsF;QACtF,2BAA2B,CAAC,aAAa,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAE7E,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACrC,SAA0B,EAC1B,SAAoB,EACpB,WAA0B,EAC1B,eAAsC;QAEtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAC9C,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,eAAe,CAClB,CAAC;QAEF,OAAO,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAEO,MAAM,CAAC,yBAAyB,CACpC,SAA0B,EAC1B,cAA2C,EAC3C,WAA0B,EAC1B,eAAsC;QAEtC,iFAAiF;QACjF,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,WAAW,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC,CAChF,CAAC;gBACF,SAAS;YACb,CAAC;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,CAAC,CAC1F,CAAC;QACN,CAAC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,IAAgB;QACnD,OAAO,CACH,IAAI,CAAC,KAAK,YAAY,eAAe;YACrC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,CACjC,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAClC,eAAiD,EACjD,cAA2C,EAC3C,WAA0B;QAE1B,6EAA6E;QAC7E,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,CAC/C,MAAM,CAAC,IAAI,EACX,cAAc,EACd,WAAW,EACX,eAAe,CAClB,CAAC;YACF,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,8BAA8B,CACzC,IAAgB,EAChB,cAA2C,EAC3C,WAA0B,EAC1B,eAAsC;QAEtC,wEAAwE;QACxE,MAAM,UAAU,GAAG,uCAAuC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9E,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,CAAC,CACzF,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEO,MAAM,CAAC,2BAA2B,CACtC,YAAsC,EACtC,cAA2C,EAC3C,WAA0B,EAC1B,eAAsC;QAEtC,MAAM,UAAU,GACZ,OAAO,YAAY,KAAK,QAAQ;YAC5B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,iGAAiG;QACjG,IAAI,kBAAkB,EAAE,CAAC;YACrB,OAAO,kBAAkB,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACrD,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,MAAuB;QACzD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;QAChD,IAAI,aAAa,YAAY,gBAAgB,EAAE,CAAC;YAC5C,OAAO,aAAa,CAAC,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,IAAgB;;QAC7C,IAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,YAAY,eAAe,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,+DAA+D;QAC/D,MAAM,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,YAA8B,EAAE,UAA6B;QACxF,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,2EAA2E;QAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,SAAoB;QACjD,8DAA8D;QAC9D,MAAM,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAChD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,UAAkB,EAAE,eAAsC;QACxF,kFAAkF;QAClF,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CACvC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,CACnE,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,4CAA4C,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,sBAAsB,CACjC,SAAiB,EACjB,OAAmC;QAEnC,+EAA+E;QAC/E,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,uBAAuB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,UAAU,EAAE,CAAC;gBACb,OAAO,UAAU,CAAC;YACtB,CAAC;QACL,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC;YACtG,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,+BAA+B,CAAC,OAA+B;QAC1E,OAAO;YACH,IAAI,EAAE,OAAO,CAAC,SAAS;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;;gBAAC,OAAA,CAAC;oBACjC,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,QAAQ,EAAE,KAAK;oBACf,YAAY,EAAE,MAAA,GAAG,CAAC,YAAY,mCAAI,IAAI;iBACzC,CAAC,CAAA;aAAA,CAAC;SACN,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAClC,QAAiC;QAEjC,oDAAoD;QACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgC,CAAC;QACpD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,YAAyC;QAC3E,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,IAAI,UAAU,YAAY,WAAW,EAAE,CAAC;YACpC,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC5E,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,IAAmB;QAChD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAChD,IAAI,eAAe,YAAY,SAAS,EAAE,CAAC;YACvC,OAAO,eAAe,CAAC,KAAK,CAAC;QACjC,CAAC;QACD,OAAO,eAAe,CAAC,IAAI,CAAC;IAChC,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,QAAkC;QAC9D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEO,MAAM,CAAC,8BAA8B,CACzC,WAAwB,EACxB,UAA6B;QAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QAErE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,4EAA4E;QAC5E,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACb,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,qCAAqC,CAAC,UAAU,CAAC,CAAC;QACnF,KAAK,MAAM,KAAK,IAAI,mBAAmB,EAAE,CAAC;YACtC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACb,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,MAAM,CAAC,gCAAgC,CAC3C,QAAkC,EAClC,gBAA6B;QAE7B,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBACpE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,qCAAqC,CAAC,UAA6B;QAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QACjC,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,QAAkC;QAClE,gEAAgE;QAChE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkC,CAAC;QACtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAChC,gBAA6B,EAC7B,UAA+C,EAC/C,QAAgC;QAEhC,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QACjF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACX,4DAA4D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1F,CAAC;QACN,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,KAAkB;QACrD,yEAAyE;QACzE,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,UAA8B;QACvE,4EAA4E;QAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAClC,gBAA6B,EAC7B,UAA+C;QAE/C,6EAA6E;QAC7E,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,QAA2B,EAAE,WAA0B;;QAClF,yFAAyF;QACzF,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QACxC,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,EAAE,CAAC;YACnB,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,mCAAI,KAAK,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,CAAC,cAAc,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,EAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,MAAM,CAAC,gBAAgB,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,EAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7F,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,KAAa;QAC5C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;;AA9buB,4DAAgC,GAA2B,OAAO,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { SelectQuery } from '../models/SelectQuery';
2
+ import { WithClause } from '../models/Clause';
3
+ /**
4
+ * Utility to manage WITH clause placement for statements that promote the
5
+ * CTE definitions outside of the SELECT body (for example, INSERT).
6
+ */
7
+ export declare class SelectQueryWithClauseHelper {
8
+ static getWithClause(selectQuery: SelectQuery | null): WithClause | null;
9
+ static setWithClause(selectQuery: SelectQuery, withClause: WithClause | null): void;
10
+ static detachWithClause(selectQuery: SelectQuery): WithClause | null;
11
+ private static findClauseOwner;
12
+ }
@@ -0,0 +1,43 @@
1
+ import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from '../models/SelectQuery';
2
+ /**
3
+ * Utility to manage WITH clause placement for statements that promote the
4
+ * CTE definitions outside of the SELECT body (for example, INSERT).
5
+ */
6
+ export class SelectQueryWithClauseHelper {
7
+ static getWithClause(selectQuery) {
8
+ const owner = this.findClauseOwner(selectQuery);
9
+ if (!owner) {
10
+ return null;
11
+ }
12
+ return owner.withClause;
13
+ }
14
+ static setWithClause(selectQuery, withClause) {
15
+ const owner = this.findClauseOwner(selectQuery);
16
+ if (!owner) {
17
+ throw new Error("Cannot attach WITH clause to the provided select query.");
18
+ }
19
+ owner.withClause = withClause;
20
+ }
21
+ static detachWithClause(selectQuery) {
22
+ const owner = this.findClauseOwner(selectQuery);
23
+ if (!owner) {
24
+ return null;
25
+ }
26
+ const clause = owner.withClause;
27
+ owner.withClause = null;
28
+ return clause;
29
+ }
30
+ static findClauseOwner(selectQuery) {
31
+ if (!selectQuery) {
32
+ return null;
33
+ }
34
+ if (selectQuery instanceof SimpleSelectQuery || selectQuery instanceof ValuesQuery) {
35
+ return selectQuery;
36
+ }
37
+ if (selectQuery instanceof BinarySelectQuery) {
38
+ return this.findClauseOwner(selectQuery.left);
39
+ }
40
+ throw new Error("Unsupported select query type for WITH clause management.");
41
+ }
42
+ }
43
+ //# sourceMappingURL=SelectQueryWithClauseHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectQueryWithClauseHelper.js","sourceRoot":"","sources":["../../../../src/utils/SelectQueryWithClauseHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAe,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGvG;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IAC7B,MAAM,CAAC,aAAa,CAAC,WAA+B;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,WAAwB,EAAE,UAA6B;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QACD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,WAAwB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAChC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,WAA+B;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,WAAW,YAAY,iBAAiB,IAAI,WAAW,YAAY,WAAW,EAAE,CAAC;YACjF,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,IAAI,WAAW,YAAY,iBAAiB,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ import { ColumnReference, ValueComponent } from '../models/ValueComponent';
2
+ export type ColumnReferenceResolver = (column: ColumnReference) => ValueComponent;
3
+ export declare function rewriteValueComponentWithColumnResolver(value: ValueComponent, resolver: ColumnReferenceResolver): ValueComponent;