@devrev/meerkat-core 0.0.92 → 0.0.93

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 (298) hide show
  1. package/ast-builder/ast-builder.js.map +1 -0
  2. package/ast-deserializer/ast-deserializer.js.map +1 -0
  3. package/ast-serializer/ast-serializer.js.map +1 -0
  4. package/{src/ast-validator → ast-validator}/dimension-validator.js +3 -3
  5. package/ast-validator/dimension-validator.js.map +1 -0
  6. package/{src/ast-validator → ast-validator}/index.js +3 -3
  7. package/ast-validator/index.js.map +1 -0
  8. package/{src/ast-validator → ast-validator}/measure-validator.js +3 -3
  9. package/ast-validator/measure-validator.js.map +1 -0
  10. package/{src/ast-validator → ast-validator}/tests/test-data.js +9 -9
  11. package/ast-validator/tests/test-data.js.map +1 -0
  12. package/ast-validator/types.js.map +1 -0
  13. package/ast-validator/utils.js.map +1 -0
  14. package/{src/context-params → context-params}/context-params-ast.js +3 -3
  15. package/context-params/context-params-ast.js.map +1 -0
  16. package/cube-filter-transformer/and/and.js.map +1 -0
  17. package/{src/cube-filter-transformer → cube-filter-transformer}/base-condition-builder/base-condition-builder.js +3 -3
  18. package/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
  19. package/cube-filter-transformer/contains/contains.js.map +1 -0
  20. package/cube-filter-transformer/equals/equals-array.js +77 -0
  21. package/cube-filter-transformer/equals/equals-array.js.map +1 -0
  22. package/cube-filter-transformer/equals/equals.js.map +1 -0
  23. package/cube-filter-transformer/factory.js.map +1 -0
  24. package/cube-filter-transformer/gt/gt.js.map +1 -0
  25. package/cube-filter-transformer/gte/gte.js.map +1 -0
  26. package/cube-filter-transformer/in/in.js.map +1 -0
  27. package/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -0
  28. package/cube-filter-transformer/lt/lt.js.map +1 -0
  29. package/cube-filter-transformer/lte/lte.js.map +1 -0
  30. package/cube-filter-transformer/not/not.js.map +1 -0
  31. package/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -0
  32. package/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
  33. package/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
  34. package/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
  35. package/cube-filter-transformer/not-in/not-in.js.map +1 -0
  36. package/cube-filter-transformer/not-set/not-set.js.map +1 -0
  37. package/cube-filter-transformer/or/or.js.map +1 -0
  38. package/cube-filter-transformer/set/set.js.map +1 -0
  39. package/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -0
  40. package/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +1 -0
  41. package/{src/cube-measure-transformer → cube-measure-transformer}/cube-measure-transformer.js +5 -5
  42. package/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
  43. package/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
  44. package/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
  45. package/{src/filter-params → filter-params}/filter-params-ast.js +7 -7
  46. package/filter-params/filter-params-ast.js.map +1 -0
  47. package/get-filter-params-sql/get-filter-params-sql.js.map +1 -0
  48. package/get-final-base-sql/get-final-base-sql.js.map +1 -0
  49. package/{src/get-wrapped-base-query-with-projections → get-wrapped-base-query-with-projections}/get-aliased-columns-from-filters.js +3 -3
  50. package/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -0
  51. package/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -0
  52. package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
  53. package/{src/get-wrapped-base-query-with-projections → get-wrapped-base-query-with-projections}/sql-expression-modifiers.js +6 -6
  54. package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -0
  55. package/{src/index.js → index.js} +8 -8
  56. package/index.js.map +1 -0
  57. package/{src/joins → joins}/joins.js +4 -4
  58. package/joins/joins.js.map +1 -0
  59. package/member-formatters/constants.js.map +1 -0
  60. package/member-formatters/index.js.map +1 -0
  61. package/member-formatters/member-key-to-safe-key.js.map +1 -0
  62. package/member-formatters/split-into-data-source-and-fields.js.map +1 -0
  63. package/package.json +4 -3
  64. package/types/cube-types/index.d.js.map +1 -0
  65. package/types/cube-types/index.js.map +1 -0
  66. package/types/cube-types/query.d.js.map +1 -0
  67. package/types/cube-types/query.js.map +1 -0
  68. package/types/cube-types/table.d.js.map +1 -0
  69. package/types/cube-types/table.js.map +1 -0
  70. package/types/duckdb-serialization-types/index.d.js.map +1 -0
  71. package/types/duckdb-serialization-types/index.js.map +1 -0
  72. package/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
  73. package/{src/types → types}/duckdb-serialization-types/serialization/CreateInfo.js +9 -9
  74. package/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
  75. package/types/duckdb-serialization-types/serialization/Expression.d.js.map +1 -0
  76. package/{src/types → types}/duckdb-serialization-types/serialization/Expression.js +3 -3
  77. package/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
  78. package/{src/types → types}/duckdb-serialization-types/serialization/LogicalOperator.js +3 -3
  79. package/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
  80. package/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
  81. package/types/duckdb-serialization-types/serialization/Misc.d.js.map +1 -0
  82. package/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
  83. package/types/duckdb-serialization-types/serialization/Nodes.d.js +3 -0
  84. package/types/duckdb-serialization-types/serialization/Nodes.d.js.map +1 -0
  85. package/{src/types → types}/duckdb-serialization-types/serialization/Nodes.js +7 -7
  86. package/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
  87. package/{src/types → types}/duckdb-serialization-types/serialization/ParseInfo.js +14 -14
  88. package/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
  89. package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +1 -0
  90. package/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
  91. package/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +1 -0
  92. package/{src/types → types}/duckdb-serialization-types/serialization/QueryNode.js +3 -3
  93. package/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
  94. package/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +1 -0
  95. package/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
  96. package/types/duckdb-serialization-types/serialization/Statement.d.js.map +1 -0
  97. package/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
  98. package/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +1 -0
  99. package/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
  100. package/types/duckdb-serialization-types/serialization/TableRef.d.js.map +1 -0
  101. package/{src/types → types}/duckdb-serialization-types/serialization/TableRef.js +4 -4
  102. package/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
  103. package/types/duckdb-serialization-types/serialization/Types.d.js.map +1 -0
  104. package/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
  105. package/types/duckdb-serialization-types/serialization/example.js.map +1 -0
  106. package/{src/types → types}/utils.js +9 -9
  107. package/types/utils.js.map +1 -0
  108. package/{src/utils → utils}/__fixtures__/joins.fixtures.js +16 -16
  109. package/utils/__fixtures__/joins.fixtures.js.map +1 -0
  110. package/utils/base-ast.js.map +1 -0
  111. package/{src/utils → utils}/cube-filter-enrichment.js +3 -3
  112. package/utils/cube-filter-enrichment.js.map +1 -0
  113. package/utils/cube-to-table-schema.js +104 -0
  114. package/utils/cube-to-table-schema.js.map +1 -0
  115. package/utils/cube-type-to-duckdb-type.js.map +1 -0
  116. package/utils/find-in-table-schema.js.map +1 -0
  117. package/utils/get-column-names-from-ast.js.map +1 -0
  118. package/utils/get-possible-nodes.js.map +1 -0
  119. package/{src/utils → utils}/get-type-info.js +3 -3
  120. package/utils/get-type-info.js.map +1 -0
  121. package/utils/is-array-member-type.js.map +1 -0
  122. package/utils/key-from-measures-dimension.js.map +1 -0
  123. package/utils/meerkat-placeholder-replacer.js.map +1 -0
  124. package/utils/modify-meerkat-filter.js.map +1 -0
  125. package/{src/utils → utils}/type-guards.js +8 -8
  126. package/utils/type-guards.js.map +1 -0
  127. package/src/ast-builder/ast-builder.js.map +0 -1
  128. package/src/ast-deserializer/ast-deserializer.js.map +0 -1
  129. package/src/ast-serializer/ast-serializer.js.map +0 -1
  130. package/src/ast-validator/dimension-validator.js.map +0 -1
  131. package/src/ast-validator/index.js.map +0 -1
  132. package/src/ast-validator/measure-validator.js.map +0 -1
  133. package/src/ast-validator/tests/test-data.js.map +0 -1
  134. package/src/ast-validator/types.js.map +0 -1
  135. package/src/ast-validator/utils.js.map +0 -1
  136. package/src/context-params/context-params-ast.js.map +0 -1
  137. package/src/cube-filter-transformer/and/and.js.map +0 -1
  138. package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +0 -1
  139. package/src/cube-filter-transformer/contains/contains.js.map +0 -1
  140. package/src/cube-filter-transformer/equals/equals-array.js +0 -30
  141. package/src/cube-filter-transformer/equals/equals-array.js.map +0 -1
  142. package/src/cube-filter-transformer/equals/equals.js.map +0 -1
  143. package/src/cube-filter-transformer/factory.js.map +0 -1
  144. package/src/cube-filter-transformer/gt/gt.js.map +0 -1
  145. package/src/cube-filter-transformer/gte/gte.js.map +0 -1
  146. package/src/cube-filter-transformer/in/in.js.map +0 -1
  147. package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +0 -1
  148. package/src/cube-filter-transformer/lt/lt.js.map +0 -1
  149. package/src/cube-filter-transformer/lte/lte.js.map +0 -1
  150. package/src/cube-filter-transformer/not/not.js.map +0 -1
  151. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +0 -1
  152. package/src/cube-filter-transformer/not-contains/not-contains.js.map +0 -1
  153. package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +0 -1
  154. package/src/cube-filter-transformer/not-equals/not-equals.js.map +0 -1
  155. package/src/cube-filter-transformer/not-in/not-in.js.map +0 -1
  156. package/src/cube-filter-transformer/not-set/not-set.js.map +0 -1
  157. package/src/cube-filter-transformer/or/or.js.map +0 -1
  158. package/src/cube-filter-transformer/set/set.js.map +0 -1
  159. package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +0 -1
  160. package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +0 -1
  161. package/src/cube-measure-transformer/cube-measure-transformer.js.map +0 -1
  162. package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +0 -1
  163. package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +0 -1
  164. package/src/filter-params/filter-params-ast.js.map +0 -1
  165. package/src/get-filter-params-sql/get-filter-params-sql.js.map +0 -1
  166. package/src/get-final-base-sql/get-final-base-sql.js.map +0 -1
  167. package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +0 -1
  168. package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +0 -1
  169. package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +0 -1
  170. package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +0 -1
  171. package/src/index.js.map +0 -1
  172. package/src/joins/joins.js.map +0 -1
  173. package/src/member-formatters/constants.js.map +0 -1
  174. package/src/member-formatters/index.js.map +0 -1
  175. package/src/member-formatters/member-key-to-safe-key.js.map +0 -1
  176. package/src/member-formatters/split-into-data-source-and-fields.js.map +0 -1
  177. package/src/types/cube-types/index.d.js.map +0 -1
  178. package/src/types/cube-types/index.js.map +0 -1
  179. package/src/types/cube-types/query.d.js.map +0 -1
  180. package/src/types/cube-types/query.js.map +0 -1
  181. package/src/types/cube-types/table.d.js.map +0 -1
  182. package/src/types/cube-types/table.js.map +0 -1
  183. package/src/types/duckdb-serialization-types/index.d.js.map +0 -1
  184. package/src/types/duckdb-serialization-types/index.js.map +0 -1
  185. package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +0 -1
  186. package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +0 -1
  187. package/src/types/duckdb-serialization-types/serialization/Expression.d.js.map +0 -1
  188. package/src/types/duckdb-serialization-types/serialization/Expression.js.map +0 -1
  189. package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +0 -1
  190. package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +0 -1
  191. package/src/types/duckdb-serialization-types/serialization/Misc.d.js.map +0 -1
  192. package/src/types/duckdb-serialization-types/serialization/Misc.js.map +0 -1
  193. package/src/types/duckdb-serialization-types/serialization/Nodes.d.js +0 -10
  194. package/src/types/duckdb-serialization-types/serialization/Nodes.d.js.map +0 -1
  195. package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +0 -1
  196. package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +0 -1
  197. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +0 -1
  198. package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +0 -1
  199. package/src/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +0 -1
  200. package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +0 -1
  201. package/src/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +0 -1
  202. package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +0 -1
  203. package/src/types/duckdb-serialization-types/serialization/Statement.d.js.map +0 -1
  204. package/src/types/duckdb-serialization-types/serialization/Statement.js.map +0 -1
  205. package/src/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +0 -1
  206. package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +0 -1
  207. package/src/types/duckdb-serialization-types/serialization/TableRef.d.js.map +0 -1
  208. package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +0 -1
  209. package/src/types/duckdb-serialization-types/serialization/Types.d.js.map +0 -1
  210. package/src/types/duckdb-serialization-types/serialization/Types.js.map +0 -1
  211. package/src/types/duckdb-serialization-types/serialization/example.js.map +0 -1
  212. package/src/types/utils.js.map +0 -1
  213. package/src/utils/__fixtures__/joins.fixtures.js.map +0 -1
  214. package/src/utils/base-ast.js.map +0 -1
  215. package/src/utils/cube-filter-enrichment.js.map +0 -1
  216. package/src/utils/cube-to-table-schema.js +0 -104
  217. package/src/utils/cube-to-table-schema.js.map +0 -1
  218. package/src/utils/cube-type-to-duckdb-type.js.map +0 -1
  219. package/src/utils/find-in-table-schema.js.map +0 -1
  220. package/src/utils/get-column-names-from-ast.js.map +0 -1
  221. package/src/utils/get-possible-nodes.js.map +0 -1
  222. package/src/utils/get-type-info.js.map +0 -1
  223. package/src/utils/is-array-member-type.js.map +0 -1
  224. package/src/utils/key-from-measures-dimension.js.map +0 -1
  225. package/src/utils/meerkat-placeholder-replacer.js.map +0 -1
  226. package/src/utils/modify-meerkat-filter.js.map +0 -1
  227. package/src/utils/type-guards.js.map +0 -1
  228. /package/{src/ast-builder → ast-builder}/ast-builder.js +0 -0
  229. /package/{src/ast-deserializer → ast-deserializer}/ast-deserializer.js +0 -0
  230. /package/{src/ast-serializer → ast-serializer}/ast-serializer.js +0 -0
  231. /package/{src/ast-validator → ast-validator}/types.js +0 -0
  232. /package/{src/ast-validator → ast-validator}/utils.js +0 -0
  233. /package/{src/cube-filter-transformer → cube-filter-transformer}/and/and.js +0 -0
  234. /package/{src/cube-filter-transformer → cube-filter-transformer}/contains/contains.js +0 -0
  235. /package/{src/cube-filter-transformer → cube-filter-transformer}/equals/equals.js +0 -0
  236. /package/{src/cube-filter-transformer → cube-filter-transformer}/factory.js +0 -0
  237. /package/{src/cube-filter-transformer → cube-filter-transformer}/gt/gt.js +0 -0
  238. /package/{src/cube-filter-transformer → cube-filter-transformer}/gte/gte.js +0 -0
  239. /package/{src/cube-filter-transformer → cube-filter-transformer}/in/in.js +0 -0
  240. /package/{src/cube-filter-transformer → cube-filter-transformer}/in-date-range/in-date-range.js +0 -0
  241. /package/{src/cube-filter-transformer → cube-filter-transformer}/lt/lt.js +0 -0
  242. /package/{src/cube-filter-transformer → cube-filter-transformer}/lte/lte.js +0 -0
  243. /package/{src/cube-filter-transformer → cube-filter-transformer}/not/not.js +0 -0
  244. /package/{src/cube-filter-transformer → cube-filter-transformer}/not-In-date-range/not-In-date-range.js +0 -0
  245. /package/{src/cube-filter-transformer → cube-filter-transformer}/not-contains/not-contains.js +0 -0
  246. /package/{src/cube-filter-transformer → cube-filter-transformer}/not-equals/not-equals-array.js +0 -0
  247. /package/{src/cube-filter-transformer → cube-filter-transformer}/not-equals/not-equals.js +0 -0
  248. /package/{src/cube-filter-transformer → cube-filter-transformer}/not-in/not-in.js +0 -0
  249. /package/{src/cube-filter-transformer → cube-filter-transformer}/not-set/not-set.js +0 -0
  250. /package/{src/cube-filter-transformer → cube-filter-transformer}/or/or.js +0 -0
  251. /package/{src/cube-filter-transformer → cube-filter-transformer}/set/set.js +0 -0
  252. /package/{src/cube-group-by-transformer → cube-group-by-transformer}/cube-group-by-transformer.js +0 -0
  253. /package/{src/cube-limit-offset-transformer → cube-limit-offset-transformer}/cube-limit-offset-transformer.js +0 -0
  254. /package/{src/cube-order-by-transformer → cube-order-by-transformer}/cube-order-by-transformer.js +0 -0
  255. /package/{src/cube-to-duckdb → cube-to-duckdb}/cube-filter-to-duckdb.js +0 -0
  256. /package/{src/get-filter-params-sql → get-filter-params-sql}/get-filter-params-sql.js +0 -0
  257. /package/{src/get-final-base-sql → get-final-base-sql}/get-final-base-sql.js +0 -0
  258. /package/{src/get-wrapped-base-query-with-projections → get-wrapped-base-query-with-projections}/get-projection-clause.js +0 -0
  259. /package/{src/get-wrapped-base-query-with-projections → get-wrapped-base-query-with-projections}/get-wrapped-base-query-with-projections.js +0 -0
  260. /package/{src/member-formatters → member-formatters}/constants.js +0 -0
  261. /package/{src/member-formatters → member-formatters}/index.js +0 -0
  262. /package/{src/member-formatters → member-formatters}/member-key-to-safe-key.js +0 -0
  263. /package/{src/member-formatters → member-formatters}/split-into-data-source-and-fields.js +0 -0
  264. /package/{src/types → types}/cube-types/index.d.js +0 -0
  265. /package/{src/types → types}/cube-types/index.js +0 -0
  266. /package/{src/types → types}/cube-types/query.d.js +0 -0
  267. /package/{src/types → types}/cube-types/query.js +0 -0
  268. /package/{src/types → types}/cube-types/table.d.js +0 -0
  269. /package/{src/types → types}/cube-types/table.js +0 -0
  270. /package/{src/types → types}/duckdb-serialization-types/index.d.js +0 -0
  271. /package/{src/types → types}/duckdb-serialization-types/index.js +0 -0
  272. /package/{src/types → types}/duckdb-serialization-types/serialization/Constraint.js +0 -0
  273. /package/{src/types → types}/duckdb-serialization-types/serialization/Expression.d.js +0 -0
  274. /package/{src/types → types}/duckdb-serialization-types/serialization/MacroFunction.js +0 -0
  275. /package/{src/types → types}/duckdb-serialization-types/serialization/Misc.d.js +0 -0
  276. /package/{src/types → types}/duckdb-serialization-types/serialization/Misc.js +0 -0
  277. /package/{src/types → types}/duckdb-serialization-types/serialization/ParsedExpression.d.js +0 -0
  278. /package/{src/types → types}/duckdb-serialization-types/serialization/ParsedExpression.js +0 -0
  279. /package/{src/types → types}/duckdb-serialization-types/serialization/QueryNode.d.js +0 -0
  280. /package/{src/types → types}/duckdb-serialization-types/serialization/ResultModifier.d.js +0 -0
  281. /package/{src/types → types}/duckdb-serialization-types/serialization/ResultModifier.js +0 -0
  282. /package/{src/types → types}/duckdb-serialization-types/serialization/Statement.d.js +0 -0
  283. /package/{src/types → types}/duckdb-serialization-types/serialization/Statement.js +0 -0
  284. /package/{src/types → types}/duckdb-serialization-types/serialization/TableFilter.d.js +0 -0
  285. /package/{src/types → types}/duckdb-serialization-types/serialization/TableFilter.js +0 -0
  286. /package/{src/types → types}/duckdb-serialization-types/serialization/TableRef.d.js +0 -0
  287. /package/{src/types → types}/duckdb-serialization-types/serialization/Types.d.js +0 -0
  288. /package/{src/types → types}/duckdb-serialization-types/serialization/Types.js +0 -0
  289. /package/{src/types → types}/duckdb-serialization-types/serialization/example.js +0 -0
  290. /package/{src/utils → utils}/base-ast.js +0 -0
  291. /package/{src/utils → utils}/cube-type-to-duckdb-type.js +0 -0
  292. /package/{src/utils → utils}/find-in-table-schema.js +0 -0
  293. /package/{src/utils → utils}/get-column-names-from-ast.js +0 -0
  294. /package/{src/utils → utils}/get-possible-nodes.js +0 -0
  295. /package/{src/utils → utils}/is-array-member-type.js +0 -0
  296. /package/{src/utils → utils}/key-from-measures-dimension.js +0 -0
  297. /package/{src/utils → utils}/meerkat-placeholder-replacer.js +0 -0
  298. /package/{src/utils → utils}/modify-meerkat-filter.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-builder/ast-builder.ts"],"sourcesContent":["import { cubeFilterToDuckdbAST } from '../cube-filter-transformer/factory';\nimport { cubeDimensionToGroupByAST } from '../cube-group-by-transformer/cube-group-by-transformer';\nimport { cubeLimitOffsetToAST } from '../cube-limit-offset-transformer/cube-limit-offset-transformer';\nimport { cubeOrderByToAST } from '../cube-order-by-transformer/cube-order-by-transformer';\nimport {\n QueryFiltersWithInfo,\n QueryFiltersWithInfoSingular,\n} from '../cube-to-duckdb/cube-filter-to-duckdb';\nimport { traverseAndFilter } from '../filter-params/filter-params-ast';\nimport { memberKeyToSafeKey } from '../member-formatters/member-key-to-safe-key';\nimport {\n FilterType,\n MeerkatQueryFilter,\n Query,\n} from '../types/cube-types/query';\nimport { TableSchema } from '../types/cube-types/table';\nimport { SelectStatement } from '../types/duckdb-serialization-types';\nimport { SelectNode } from '../types/duckdb-serialization-types/serialization/QueryNode';\nimport { getBaseAST } from '../utils/base-ast';\nimport { cubeFiltersEnrichment } from '../utils/cube-filter-enrichment';\nimport { modifyLeafMeerkatFilter } from '../utils/modify-meerkat-filter';\n\nconst formatFilters = (\n queryFiltersWithInfo: QueryFiltersWithInfo,\n filterType?: FilterType\n) => {\n /*\n * If the type of filter is set to base filter where\n */\n return filterType === 'BASE_FILTER'\n ? queryFiltersWithInfo\n : (modifyLeafMeerkatFilter(queryFiltersWithInfo, (item) => {\n return {\n ...item,\n member: memberKeyToSafeKey(item.member),\n };\n }) as QueryFiltersWithInfo);\n};\n\nconst getFormattedFilters = ({\n queryFiltersWithInfo,\n filterType,\n mapperFn,\n baseAST,\n}: {\n queryFiltersWithInfo: QueryFiltersWithInfo;\n filterType?: FilterType;\n baseAST: SelectStatement;\n mapperFn: (val: QueryFiltersWithInfoSingular) => MeerkatQueryFilter | null;\n}) => {\n const filters = queryFiltersWithInfo\n .map((item) => mapperFn(item))\n .filter(Boolean) as QueryFiltersWithInfoSingular[];\n const formattedFilters = formatFilters(filters, filterType);\n return cubeFilterToDuckdbAST(formattedFilters, baseAST);\n};\n\nexport const cubeToDuckdbAST = (\n query: Query,\n tableSchema: TableSchema,\n options?: { filterType: FilterType }\n) => {\n /**\n * Obviously, if no table schema was found, return null.\n */\n if (!tableSchema) {\n return null;\n }\n\n const baseAST = getBaseAST();\n const node = baseAST.node as SelectNode;\n if (query.filters && query.filters.length > 0) {\n /**\n * Make a copy of the query filters and enrich them with the table schema.\n */\n const queryFiltersWithInfo = cubeFiltersEnrichment(\n JSON.parse(JSON.stringify(query.filters)),\n tableSchema\n );\n\n if (!queryFiltersWithInfo) {\n return null;\n }\n\n const whereClause = getFormattedFilters({\n baseAST,\n mapperFn: (item) =>\n traverseAndFilter(\n item,\n (value) => !query.measures.includes(value.member)\n ),\n queryFiltersWithInfo,\n filterType: options?.filterType,\n });\n\n const havingClause = getFormattedFilters({\n baseAST,\n mapperFn: (item) =>\n traverseAndFilter(item, (value) =>\n query.measures.includes(value.member)\n ),\n queryFiltersWithInfo,\n filterType: options?.filterType,\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n node.where_clause = whereClause;\n node.having = havingClause;\n }\n if (\n query.measures.length &&\n query.dimensions &&\n query.dimensions?.length > 0\n ) {\n node.group_expressions = cubeDimensionToGroupByAST(query.dimensions);\n const groupSets = [];\n /**\n * We only support one group set for now.\n */\n for (let i = 0; i < node.group_expressions.length; i++) {\n groupSets.push(i);\n }\n node.group_sets = [groupSets];\n }\n node.modifiers = [];\n if (query.order) {\n node.modifiers.push(cubeOrderByToAST(query.order));\n }\n if (query.limit || query.offset) {\n // Type assertion is needed here because the AST is not typed correctly.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n node.modifiers.push(cubeLimitOffsetToAST(query.limit, query.offset));\n }\n\n return baseAST;\n};\n"],"names":["cubeToDuckdbAST","formatFilters","queryFiltersWithInfo","filterType","modifyLeafMeerkatFilter","item","member","memberKeyToSafeKey","getFormattedFilters","mapperFn","baseAST","filters","map","filter","Boolean","formattedFilters","cubeFilterToDuckdbAST","query","tableSchema","options","getBaseAST","node","length","cubeFiltersEnrichment","JSON","parse","stringify","whereClause","traverseAndFilter","value","measures","includes","havingClause","where_clause","having","dimensions","group_expressions","cubeDimensionToGroupByAST","groupSets","i","push","group_sets","modifiers","order","cubeOrderByToAST","limit","offset","cubeLimitOffsetToAST"],"mappings":";+BAyDaA;;;eAAAA;;;;yBAzDyB;wCACI;4CACL;wCACJ;iCAKC;oCACC;yBASR;sCACW;qCACE;AAExC,MAAMC,gBAAgB,CACpBC,sBACAC;IAEA;;GAEC,GACD,OAAOA,eAAe,gBAClBD,uBACCE,IAAAA,4CAAuB,EAACF,sBAAsB,CAACG;QAC9C,OAAO,eACFA;YACHC,QAAQC,IAAAA,sCAAkB,EAACF,KAAKC,MAAM;;IAE1C;AACN;AAEA,MAAME,sBAAsB,CAAC,EAC3BN,oBAAoB,EACpBC,UAAU,EACVM,QAAQ,EACRC,OAAO,EAMR;IACC,MAAMC,UAAUT,qBACbU,GAAG,CAAC,CAACP,OAASI,SAASJ,OACvBQ,MAAM,CAACC;IACV,MAAMC,mBAAmBd,cAAcU,SAASR;IAChD,OAAOa,IAAAA,8BAAqB,EAACD,kBAAkBL;AACjD;AAEO,MAAMV,kBAAkB,CAC7BiB,OACAC,aACAC;QAqDEF;IAnDF;;GAEC,GACD,IAAI,CAACC,aAAa;QAChB,OAAO;IACT;IAEA,MAAMR,UAAUU,IAAAA,mBAAU;IAC1B,MAAMC,OAAOX,QAAQW,IAAI;IACzB,IAAIJ,MAAMN,OAAO,IAAIM,MAAMN,OAAO,CAACW,MAAM,GAAG,GAAG;QAC7C;;KAEC,GACD,MAAMpB,uBAAuBqB,IAAAA,2CAAqB,EAChDC,KAAKC,KAAK,CAACD,KAAKE,SAAS,CAACT,MAAMN,OAAO,IACvCO;QAGF,IAAI,CAAChB,sBAAsB;YACzB,OAAO;QACT;QAEA,MAAMyB,cAAcnB,oBAAoB;YACtCE;YACAD,UAAU,CAACJ,OACTuB,IAAAA,kCAAiB,EACfvB,MACA,CAACwB,QAAU,CAACZ,MAAMa,QAAQ,CAACC,QAAQ,CAACF,MAAMvB,MAAM;YAEpDJ;YACAC,UAAU,EAAEgB,2BAAAA,QAAShB,UAAU;QACjC;QAEA,MAAM6B,eAAexB,oBAAoB;YACvCE;YACAD,UAAU,CAACJ,OACTuB,IAAAA,kCAAiB,EAACvB,MAAM,CAACwB,QACvBZ,MAAMa,QAAQ,CAACC,QAAQ,CAACF,MAAMvB,MAAM;YAExCJ;YACAC,UAAU,EAAEgB,2BAAAA,QAAShB,UAAU;QACjC;QAEA,6DAA6D;QAC7D,YAAY;QACZkB,KAAKY,YAAY,GAAGN;QACpBN,KAAKa,MAAM,GAAGF;IAChB;IACA,IACEf,MAAMa,QAAQ,CAACR,MAAM,IACrBL,MAAMkB,UAAU,IAChBlB,EAAAA,oBAAAA,MAAMkB,UAAU,qBAAhBlB,kBAAkBK,MAAM,IAAG,GAC3B;QACAD,KAAKe,iBAAiB,GAAGC,IAAAA,iDAAyB,EAACpB,MAAMkB,UAAU;QACnE,MAAMG,YAAY,EAAE;QACpB;;KAEC,GACD,IAAK,IAAIC,IAAI,GAAGA,IAAIlB,KAAKe,iBAAiB,CAACd,MAAM,EAAEiB,IAAK;YACtDD,UAAUE,IAAI,CAACD;QACjB;QACAlB,KAAKoB,UAAU,GAAG;YAACH;SAAU;IAC/B;IACAjB,KAAKqB,SAAS,GAAG,EAAE;IACnB,IAAIzB,MAAM0B,KAAK,EAAE;QACftB,KAAKqB,SAAS,CAACF,IAAI,CAACI,IAAAA,wCAAgB,EAAC3B,MAAM0B,KAAK;IAClD;IACA,IAAI1B,MAAM4B,KAAK,IAAI5B,MAAM6B,MAAM,EAAE;QAC/B,wEAAwE;QACxE,6DAA6D;QAC7D,YAAY;QACZzB,KAAKqB,SAAS,CAACF,IAAI,CAACO,IAAAA,gDAAoB,EAAC9B,MAAM4B,KAAK,EAAE5B,MAAM6B,MAAM;IACpE;IAEA,OAAOpC;AACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-deserializer/ast-deserializer.ts"],"sourcesContent":["import { SelectStatement } from '../types/duckdb-serialization-types';\n\nexport const astDeserializerQuery = (ast: SelectStatement) => {\n return `SELECT json_deserialize_sql('${JSON.stringify({\n statements: [ast],\n })}');`;\n};\n\nexport const deserializeQuery = (\n queryOutput: {\n [key: string]: string;\n }[]\n) => {\n const deserializeObj = queryOutput[0];\n const deserializeKey = Object.keys(deserializeObj)[0];\n const deserializeQuery = deserializeObj[deserializeKey];\n return deserializeQuery;\n};\n"],"names":["astDeserializerQuery","deserializeQuery","ast","JSON","stringify","statements","queryOutput","deserializeObj","deserializeKey","Object","keys"],"mappings":";;;;;;;;IAEaA,oBAAoB;eAApBA;;IAMAC,gBAAgB;eAAhBA;;;AANN,MAAMD,uBAAuB,CAACE;IACnC,OAAO,CAAC,6BAA6B,EAAEC,KAAKC,SAAS,CAAC;QACpDC,YAAY;YAACH;SAAI;IACnB,GAAG,GAAG,CAAC;AACT;AAEO,MAAMD,mBAAmB,CAC9BK;IAIA,MAAMC,iBAAiBD,WAAW,CAAC,EAAE;IACrC,MAAME,iBAAiBC,OAAOC,IAAI,CAACH,eAAe,CAAC,EAAE;IACrD,MAAMN,mBAAmBM,cAAc,CAACC,eAAe;IACvD,OAAOP;AACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-serializer/ast-serializer.ts"],"sourcesContent":["export const astSerializerQuery = (query: string) => {\n return `SELECT json_serialize_sql('${query}')`;\n};\n"],"names":["astSerializerQuery","query"],"mappings":";+BAAaA;;;eAAAA;;;AAAN,MAAMA,qBAAqB,CAACC;IACjC,OAAO,CAAC,2BAA2B,EAAEA,MAAM,EAAE,CAAC;AAChD"}
@@ -6,11 +6,11 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
- validateExpressionNode: function() {
10
- return validateExpressionNode;
11
- },
12
9
  validateDimension: function() {
13
10
  return validateDimension;
11
+ },
12
+ validateExpressionNode: function() {
13
+ return validateExpressionNode;
14
14
  }
15
15
  });
16
16
  const _utils = require("../types/utils");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-validator/dimension-validator.ts"],"sourcesContent":["import { ParsedExpression } from '../types/duckdb-serialization-types';\nimport {\n isCaseExpression,\n isCastExpression,\n isColumnRefExpression,\n isConstantExpression,\n isFunctionExpression,\n isOperatorExpression,\n} from '../types/utils';\nimport { ParsedSerialization } from './types';\nimport { getSelectNode } from './utils';\n\n/**\n * Validates an individual expression node\n */\nexport const validateExpressionNode = (\n node: ParsedExpression,\n validFunctions: Set<string>\n): boolean => {\n // Column references and value constants\n if (isColumnRefExpression(node) || isConstantExpression(node)) {\n return true;\n }\n\n // Cast expression\n if (isCastExpression(node)) {\n return validateExpressionNode(node.child, validFunctions);\n }\n\n // Operator expression\n if (isOperatorExpression(node)) {\n return node.children.every((child) =>\n validateExpressionNode(child, validFunctions)\n );\n }\n\n // Function expression\n if (isFunctionExpression(node)) {\n if (!validFunctions.has(node.function_name)) {\n throw new Error(`Invalid function: ${node.function_name}`);\n }\n return node.children.every((child) =>\n validateExpressionNode(child, validFunctions)\n );\n }\n\n // Case expression\n if (isCaseExpression(node)) {\n return (\n node.case_checks.every((check) =>\n validateExpressionNode(check.then_expr, validFunctions)\n ) && validateExpressionNode(node.else_expr, validFunctions)\n );\n }\n\n throw new Error(`Invalid expression type: ${node.type}`);\n};\n\n/**\n * Validates if the parsed serialization represents a valid dimension\n */\nexport const validateDimension = (\n parsedSerialization: ParsedSerialization,\n validFunctions: string[]\n): boolean => {\n const node = getSelectNode(parsedSerialization);\n\n const validFunctionSet = new Set(validFunctions);\n\n // Validate the expression\n if (validateExpressionNode(node, validFunctionSet)) {\n return true;\n }\n\n throw new Error('Expression contains invalid functions or operators');\n};\n"],"names":["validateDimension","validateExpressionNode","node","validFunctions","isColumnRefExpression","isConstantExpression","isCastExpression","child","isOperatorExpression","children","every","isFunctionExpression","has","function_name","Error","isCaseExpression","case_checks","check","then_expr","else_expr","type","parsedSerialization","getSelectNode","validFunctionSet","Set"],"mappings":";;;;;;;;IA6DaA,iBAAiB;eAAjBA;;IA9CAC,sBAAsB;eAAtBA;;;uBAPN;wBAEuB;AAKvB,MAAMA,yBAAyB,CACpCC,MACAC;IAEA,wCAAwC;IACxC,IAAIC,IAAAA,4BAAqB,EAACF,SAASG,IAAAA,2BAAoB,EAACH,OAAO;QAC7D,OAAO;IACT;IAEA,kBAAkB;IAClB,IAAII,IAAAA,uBAAgB,EAACJ,OAAO;QAC1B,OAAOD,uBAAuBC,KAAKK,KAAK,EAAEJ;IAC5C;IAEA,sBAAsB;IACtB,IAAIK,IAAAA,2BAAoB,EAACN,OAAO;QAC9B,OAAOA,KAAKO,QAAQ,CAACC,KAAK,CAAC,CAACH,QAC1BN,uBAAuBM,OAAOJ;IAElC;IAEA,sBAAsB;IACtB,IAAIQ,IAAAA,2BAAoB,EAACT,OAAO;QAC9B,IAAI,CAACC,eAAeS,GAAG,CAACV,KAAKW,aAAa,GAAG;YAC3C,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEZ,KAAKW,aAAa,CAAC,CAAC;QAC3D;QACA,OAAOX,KAAKO,QAAQ,CAACC,KAAK,CAAC,CAACH,QAC1BN,uBAAuBM,OAAOJ;IAElC;IAEA,kBAAkB;IAClB,IAAIY,IAAAA,uBAAgB,EAACb,OAAO;QAC1B,OACEA,KAAKc,WAAW,CAACN,KAAK,CAAC,CAACO,QACtBhB,uBAAuBgB,MAAMC,SAAS,EAAEf,oBACrCF,uBAAuBC,KAAKiB,SAAS,EAAEhB;IAEhD;IAEA,MAAM,IAAIW,MAAM,CAAC,yBAAyB,EAAEZ,KAAKkB,IAAI,CAAC,CAAC;AACzD;AAKO,MAAMpB,oBAAoB,CAC/BqB,qBACAlB;IAEA,MAAMD,OAAOoB,IAAAA,qBAAa,EAACD;IAE3B,MAAME,mBAAmB,IAAIC,IAAIrB;IAEjC,0BAA0B;IAC1B,IAAIF,uBAAuBC,MAAMqB,mBAAmB;QAClD,OAAO;IACT;IAEA,MAAM,IAAIT,MAAM;AAClB"}
@@ -6,14 +6,14 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
+ getSelectNode: function() {
10
+ return _utils.getSelectNode;
11
+ },
9
12
  validateDimension: function() {
10
13
  return _dimensionvalidator.validateDimension;
11
14
  },
12
15
  validateMeasure: function() {
13
16
  return _measurevalidator.validateMeasure;
14
- },
15
- getSelectNode: function() {
16
- return _utils.getSelectNode;
17
17
  }
18
18
  });
19
19
  const _export_star = require("@swc/helpers/_/_export_star");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-validator/index.ts"],"sourcesContent":["export { validateDimension } from './dimension-validator';\nexport { validateMeasure } from './measure-validator';\nexport * from './types';\nexport { getSelectNode } from './utils';\n"],"names":["getSelectNode","validateDimension","validateMeasure"],"mappings":";;;;;;;;IAGSA,aAAa;eAAbA,oBAAa;;IAHbC,iBAAiB;eAAjBA,qCAAiB;;IACjBC,eAAe;eAAfA,iCAAe;;;;oCADU;kCACF;uBAClB;uBACgB"}
@@ -6,12 +6,12 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
- validateExpressionNode: function() {
10
- return validateExpressionNode;
11
- },
12
9
  containsAggregation: function() {
13
10
  return containsAggregation;
14
11
  },
12
+ validateExpressionNode: function() {
13
+ return validateExpressionNode;
14
+ },
15
15
  validateMeasure: function() {
16
16
  return validateMeasure;
17
17
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-validator/measure-validator.ts"],"sourcesContent":["import { ParsedExpression } from '../types/duckdb-serialization-types';\nimport {\n isCaseExpression,\n isCastExpression,\n isColumnRefExpression,\n isConstantExpression,\n isFunctionExpression,\n isOperatorExpression,\n isSelectNode,\n isSubqueryExpression,\n isWindowExpression,\n} from '../types/utils';\nimport { ParsedSerialization } from './types';\nimport { getSelectNode } from './utils';\n\nexport const validateExpressionNode = ({\n node,\n validFunctions,\n parentNode,\n validScalarFunctions,\n hasAggregation = false,\n}: {\n node: ParsedExpression;\n validFunctions: Set<string>;\n parentNode: ParsedExpression | null;\n hasAggregation?: boolean;\n validScalarFunctions: Set<string>;\n}): boolean => {\n // Base cases for column references and constants\n if (isColumnRefExpression(node) || isConstantExpression(node)) {\n // Allow column references inside aggregation functions\n return !!parentNode;\n }\n\n // Check for valid aggregation functions\n if (isFunctionExpression(node) || isWindowExpression(node)) {\n // count_star don't have children\n if (node.function_name === 'count_star') return true;\n\n // This is a valid aggregation function - verify its children don't contain nested aggregations\n if (validFunctions.has(node.function_name)) {\n return node.children.some((child) =>\n validateExpressionNode({\n node: child,\n validFunctions,\n parentNode: node,\n validScalarFunctions,\n hasAggregation: true,\n })\n );\n }\n\n // For non-aggregation functions\n if (validScalarFunctions.has(node.function_name)) {\n return node.children.some((child) => {\n return (\n validateExpressionNode({\n node: child,\n validFunctions,\n parentNode: node,\n validScalarFunctions,\n }) &&\n (containsAggregation(child, validFunctions) || hasAggregation)\n );\n });\n }\n\n throw new Error(`Invalid function type: ${node.function_name}`);\n }\n\n // Operator expression\n if (isOperatorExpression(node)) {\n return node.children.some((child) =>\n validateExpressionNode({\n node: child,\n validFunctions,\n parentNode,\n validScalarFunctions,\n })\n );\n }\n\n // Cast expression\n if (isCastExpression(node)) {\n return validateExpressionNode({\n node: node.child,\n validFunctions,\n parentNode,\n validScalarFunctions,\n });\n }\n\n // Case expression\n if (isCaseExpression(node)) {\n const checksValid = node.case_checks.every((caseCheck) => {\n // WHEN conditions cannot contain aggregations\n const whenValid = !containsAggregation(\n caseCheck.when_expr,\n validFunctions\n );\n\n // THEN expressions must be valid aggregations or contain no aggregations\n const thenValid =\n validateExpressionNode({\n node: caseCheck.then_expr,\n validFunctions,\n parentNode: node,\n validScalarFunctions,\n }) || !containsAggregation(caseCheck.then_expr, validFunctions);\n return whenValid && thenValid;\n });\n\n const elseValid =\n validateExpressionNode({\n node: node.else_expr,\n validFunctions,\n parentNode: node,\n validScalarFunctions,\n }) || !containsAggregation(node.else_expr, validFunctions);\n\n return checksValid && elseValid;\n }\n\n // Subquery expression\n if (isSubqueryExpression(node) && isSelectNode(node.subquery.node)) {\n return node.subquery.node.select_list.every((node) => {\n return validateExpressionNode({\n node,\n validFunctions,\n parentNode,\n validScalarFunctions,\n });\n });\n }\n\n // Window expression\n if (isWindowExpression(node)) {\n return node.children.every((node) => {\n return validateExpressionNode({\n node,\n validFunctions,\n parentNode,\n validScalarFunctions,\n });\n });\n }\n\n throw new Error(`Invalid expression type: ${node.type}`);\n};\n\nexport const containsAggregation = (\n node: ParsedExpression,\n validFunctions: Set<string>\n): boolean => {\n if (!node) return false;\n\n // Function expression\n if (isFunctionExpression(node) || isWindowExpression(node)) {\n return (\n validFunctions.has(node.function_name) ||\n node.children.some((child) => containsAggregation(child, validFunctions))\n );\n }\n\n // Case expression\n if (isCaseExpression(node)) {\n return (\n node.case_checks.some(\n (check) =>\n containsAggregation(check.when_expr, validFunctions) ||\n containsAggregation(check.then_expr, validFunctions)\n ) || containsAggregation(node.else_expr, validFunctions)\n );\n }\n\n // Operator expression\n if (isOperatorExpression(node)) {\n return node.children.some((child) =>\n containsAggregation(child, validFunctions)\n );\n }\n\n if (isCastExpression(node)) {\n return containsAggregation(node.child, validFunctions);\n }\n\n // Window expression\n if (isWindowExpression(node)) {\n return node.children.some((child) =>\n containsAggregation(child, validFunctions)\n );\n }\n\n // Subquery expression\n if (isSubqueryExpression(node) && isSelectNode(node.subquery.node)) {\n return node.subquery.node.select_list.every((node) => {\n return containsAggregation(node, validFunctions);\n });\n }\n\n return false;\n};\n\nexport const validateMeasure = (\n parsedSerialization: ParsedSerialization,\n validFunctions: string[],\n validScalarFunctions: string[]\n): boolean => {\n const node = getSelectNode(parsedSerialization);\n\n const validFunctionSet = new Set(validFunctions);\n const validScalarFunctionSet = new Set(validScalarFunctions);\n\n // Validate the expression\n if (\n validateExpressionNode({\n node: node,\n validFunctions: validFunctionSet,\n parentNode: null,\n validScalarFunctions: validScalarFunctionSet,\n })\n ) {\n return true;\n }\n\n throw new Error('Expression contains invalid functions or operators');\n};\n"],"names":["containsAggregation","validateExpressionNode","validateMeasure","node","validFunctions","parentNode","validScalarFunctions","hasAggregation","isColumnRefExpression","isConstantExpression","isFunctionExpression","isWindowExpression","function_name","has","children","some","child","Error","isOperatorExpression","isCastExpression","isCaseExpression","checksValid","case_checks","every","caseCheck","whenValid","when_expr","thenValid","then_expr","elseValid","else_expr","isSubqueryExpression","isSelectNode","subquery","select_list","type","check","parsedSerialization","getSelectNode","validFunctionSet","Set","validScalarFunctionSet"],"mappings":"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"}
@@ -6,23 +6,23 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
- EMPTY_VALID_FUNCTIONS: function() {
10
- return EMPTY_VALID_FUNCTIONS;
11
- },
12
- VALID_FUNCTIONS: function() {
13
- return VALID_FUNCTIONS;
14
- },
15
9
  COLUMN_REF_NODE: function() {
16
10
  return COLUMN_REF_NODE;
17
11
  },
18
- INVALID_NODE: function() {
19
- return INVALID_NODE;
20
- },
21
12
  DIMENSION_TEST_CASES: function() {
22
13
  return DIMENSION_TEST_CASES;
23
14
  },
15
+ EMPTY_VALID_FUNCTIONS: function() {
16
+ return EMPTY_VALID_FUNCTIONS;
17
+ },
18
+ INVALID_NODE: function() {
19
+ return INVALID_NODE;
20
+ },
24
21
  MEASURE_TEST_CASES: function() {
25
22
  return MEASURE_TEST_CASES;
23
+ },
24
+ VALID_FUNCTIONS: function() {
25
+ return VALID_FUNCTIONS;
26
26
  }
27
27
  });
28
28
  const _duckdbserializationtypes = require("../../types/duckdb-serialization-types");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/ast-validator/tests/test-data.ts"],"sourcesContent":["import {\n ExpressionType,\n ParsedExpression,\n ResultModifierType,\n} from '../../types/duckdb-serialization-types';\nimport { ExpressionClass } from '../../types/duckdb-serialization-types/serialization/Expression';\n\nexport const EMPTY_VALID_FUNCTIONS = new Set<string>();\nexport const VALID_FUNCTIONS = new Set(['contains', 'round', 'power']);\n\nexport const COLUMN_REF_NODE: ParsedExpression = {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: 'alias',\n query_location: 0,\n column_names: ['column_name'],\n};\n\nexport const INVALID_NODE: ParsedExpression = {\n class: ExpressionClass.INVALID,\n type: ExpressionType.INVALID,\n alias: '',\n query_location: 0,\n};\n\nexport const DIMENSION_TEST_CASES = [\n {\n description: 'node type COLUMN_REF',\n node: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 0,\n column_names: ['column_name'],\n },\n validFunctions: EMPTY_VALID_FUNCTIONS,\n columnNames: ['column_name'],\n expected: true,\n },\n {\n description: 'node type COLUMN_REF with alias',\n node: COLUMN_REF_NODE,\n validFunctions: EMPTY_VALID_FUNCTIONS,\n columnNames: ['column_name'],\n expected: true,\n },\n {\n description: 'node type VALUE_CONSTANT',\n node: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 0,\n value: '1',\n },\n columnNames: [],\n validFunctions: EMPTY_VALID_FUNCTIONS,\n expected: true,\n },\n {\n description: 'node type OPERATOR_CAST',\n node: {\n class: ExpressionClass.CAST,\n type: ExpressionType.OPERATOR_CAST,\n alias: '',\n query_location: 7,\n child: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 12,\n column_names: ['column_name1'],\n },\n cast_type: {\n id: 1,\n },\n try_cast: false,\n },\n validFunctions: EMPTY_VALID_FUNCTIONS,\n columnNames: ['column_name1'],\n expected: true,\n },\n {\n description: 'node type OPERATOR_COALESCE',\n node: {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.OPERATOR_COALESCE,\n alias: '',\n query_location: 18446744073709552000,\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 16,\n column_names: ['column_name2'],\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 38,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n ],\n },\n validFunctions: EMPTY_VALID_FUNCTIONS,\n columnNames: ['column_name2'],\n expected: true,\n },\n {\n description:\n 'node type FUNCTION with ROUND function and if it contains in validFunctions',\n columnNames: ['schema.column_name'],\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'round',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 13,\n column_names: ['schema', 'column_name'],\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 41,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 1,\n },\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n },\n validFunctions: VALID_FUNCTIONS,\n expected: true,\n },\n {\n description: 'node type CASE',\n columnNames: ['actual_close_date1', 'actual_close_date', 'created_date'],\n node: {\n class: ExpressionClass.CASE,\n type: ExpressionType.CASE_EXPR,\n alias: '',\n query_location: 7,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_GREATERTHAN,\n alias: '',\n query_location: 35,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 17,\n column_names: ['actual_close_date'],\n },\n right: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 37,\n column_names: ['created_date'],\n },\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 55,\n column_names: ['actual_close_date1'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n validFunctions: EMPTY_VALID_FUNCTIONS,\n expected: true,\n },\n];\n\nexport const MEASURE_TEST_CASES = [\n {\n description: 'node type FUNCTION with count_star',\n query: 'count_star()',\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'count_star',\n schema: '',\n children: [],\n },\n validFunctions: new Set(['count_star']),\n validScalarFunctions: EMPTY_VALID_FUNCTIONS,\n columnNames: [],\n expected: true,\n },\n {\n description: 'node type FUNCTION with SUM',\n query: 'sum(column1)',\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'sum',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n query_location: 11,\n column_names: ['column1'],\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n },\n validFunctions: new Set(['sum']),\n validScalarFunctions: EMPTY_VALID_FUNCTIONS,\n columnNames: ['column1'],\n expected: true,\n },\n {\n description: 'node type FUNCTION with SUM and invalid function type',\n query: 'sum(column1)',\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'sum',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n query_location: 11,\n column_names: ['column1'],\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n },\n validFunctions: new Set(['min']),\n validScalarFunctions: new Set(['/']),\n error: 'Invalid function type: sum',\n expected: 'error',\n columnNames: ['column1'],\n },\n {\n description: 'node type FUNCTION with MAX and operator',\n columnNames: ['column1'],\n query: 'max(column1) / 1000',\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 38,\n function_name: '/',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'max',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 11,\n column_names: ['column1'],\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 40,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 1000,\n },\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n validFunctions: new Set(['max']),\n validScalarFunctions: new Set(['/']),\n expected: true,\n },\n {\n description: 'node type CASE_EXPR',\n query: 'CASE WHEN COUNT(id) > 1 THEN AVG(mtbf_hours) ELSE null END',\n columnNames: ['mtbf_hours', 'id'],\n node: {\n class: ExpressionClass.CASE,\n type: ExpressionType.CASE_EXPR,\n alias: '',\n query_location: 7,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_GREATERTHAN,\n alias: '',\n query_location: 27,\n left: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 17,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 23,\n column_names: ['id'],\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 29,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 1,\n },\n },\n },\n then_expr: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 36,\n function_name: 'avg',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 40,\n column_names: ['mtbf_hours'],\n },\n ],\n filter: null,\n order_bys: {\n type: ResultModifierType.ORDER_MODIFIER,\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 57,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n validFunctions: new Set(['count', 'avg']),\n validScalarFunctions: EMPTY_VALID_FUNCTIONS,\n expected: true,\n },\n {\n description:\n 'node type FUNCTION with aggregation and case statement within',\n columnNames: ['modified_date', 'stage_json'],\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'max',\n schema: '',\n children: [\n {\n class: 'CASE',\n type: 'CASE_EXPR',\n alias: '',\n query_location: 11,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: 'COMPARE_EQUAL',\n alias: '',\n query_location: 43,\n left: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 32,\n function_name: '->>',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 21,\n column_names: ['stage_json'],\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 36,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'name',\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 45,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'Tech Doc Inprogress',\n },\n },\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 72,\n column_names: ['modified_date'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 91,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n validFunctions: new Set(['max']),\n validScalarFunctions: EMPTY_VALID_FUNCTIONS,\n expected: true,\n query:\n 'max(CASE WHEN stage_json->>name = \"Tech\" THEN modified_date ELSE NULL END)',\n },\n {\n description:\n 'node type FUNCTION two children of aggregation and operator operation on them',\n columnNames: ['mean_reciprocal_rank', 'total_queries'],\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 49,\n function_name: '/',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 7,\n function_name: 'sum',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 32,\n function_name: '*',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 11,\n column_names: ['mean_reciprocal_rank'],\n },\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 34,\n column_names: ['total_queries'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 51,\n function_name: 'sum',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 55,\n column_names: ['total_queries'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n validFunctions: new Set(['sum']),\n validScalarFunctions: new Set(['/', '*']),\n expected: true,\n query: 'sum(mean_reciprocal_rank * total_queries) / sum(total_queries)',\n },\n {\n description: 'node type CAST',\n query:\n \"CAST(COUNT(DISTINCT(id)) AS FLOAT) / NULLIF(DATEDIFF('day', MIN(created_date), MAX(created_date)) / 7 + 1, 0)\",\n columnNames: ['id', 'created_date', 'created_date1'],\n node: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 42,\n function_name: '/',\n schema: '',\n children: [\n {\n class: 'CAST',\n type: 'OPERATOR_CAST',\n alias: '',\n query_location: 7,\n child: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 12,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 27,\n column_names: ['id'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: true,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n cast_type: {\n id: 'FLOAT',\n type_info: null,\n },\n try_cast: false,\n },\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 44,\n function_name: 'nullif',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 109,\n function_name: '+',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 105,\n function_name: '/',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 51,\n function_name: 'datediff',\n schema: '',\n children: [\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 60,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'day',\n },\n },\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 67,\n function_name: 'min',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 71,\n column_names: ['created_date'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 86,\n function_name: 'max',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 90,\n column_names: ['created_date1'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 107,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 7,\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 111,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 1,\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 114,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n validFunctions: new Set(['count', 'datediff', 'min', 'max']),\n validScalarFunctions: new Set(['/', '*']),\n expected: true,\n },\n {\n description: 'node type COALESCE',\n query: 'COALESCE(SUM(amount) FILTER(direction = \"Income\"), 0)',\n columnNames: ['amount'],\n node: {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.OPERATOR_COALESCE,\n alias: '',\n query_location: 18446744073709552000,\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 16,\n function_name: 'sum',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 20,\n column_names: ['amount'],\n },\n ],\n filter: {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_EQUAL,\n alias: '',\n query_location: 45,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 35,\n column_names: ['direction'],\n },\n right: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 47,\n column_names: ['Income'],\n },\n },\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 58,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n ],\n },\n validFunctions: new Set(['sum']),\n validScalarFunctions: new Set(['/']),\n expected: true,\n },\n {\n description: 'node type WINDOW_AGGREGATE',\n query:\n 'AVG(COUNT(column1)) OVER (ORDER BY (MEERKAT).record_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)',\n columnNames: ['column1'],\n node: {\n class: ExpressionClass.WINDOW,\n type: ExpressionType.WINDOW_AGGREGATE,\n alias: '',\n query_location: 7,\n function_name: 'avg',\n schema: '',\n catalog: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 11,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 17,\n column_names: ['column1'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n partitions: [],\n orders: [\n {\n type: 'ORDER_DEFAULT',\n null_order: 'ORDER_DEFAULT',\n expression: {\n class: 'OPERATOR',\n type: 'STRUCT_EXTRACT',\n alias: '',\n query_location: 18446744073709552000,\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 54,\n column_names: ['MEERKAT'],\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'record_date',\n },\n },\n ],\n },\n },\n ],\n start: 'EXPR_PRECEDING_ROWS',\n end: 'CURRENT_ROW_ROWS',\n start_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 88,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 6,\n },\n },\n end_expr: null,\n offset_expr: null,\n default_expr: null,\n ignore_nulls: false,\n filter_expr: null,\n exclude_clause: 'NO_OTHER',\n distinct: false,\n },\n validFunctions: new Set(['avg', 'count']),\n validScalarFunctions: new Set(['/']),\n expected: true,\n },\n {\n description: 'node type FUNCTION - AVG with nested scalar function',\n query: \"AVG(DATE_DIFF('minute', created_date, first_response_time))\",\n columnNames: ['created_date', 'first_response_time'],\n node: {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 7,\n function_name: 'avg',\n schema: '',\n children: [\n {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 11,\n function_name: 'date_diff',\n schema: '',\n children: [\n {\n class: 'CONSTANT',\n type: 'VALUE_CONSTANT',\n alias: '',\n query_location: 21,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'minute',\n },\n },\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n query_location: 31,\n column_names: ['created_date'],\n },\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n query_location: 45,\n column_names: ['first_response_time'],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n validFunctions: new Set(['avg', 'count']),\n validScalarFunctions: new Set(['date_diff']),\n expected: true,\n },\n {\n description: 'node type SUBQUERY',\n columnNames: [\n 'id',\n 'sla_stage',\n 'first_resp_time_arr',\n 'total_first_resp_breaches_ever',\n ],\n query:\n \"(SELECT CASE WHEN COUNT(DISTINCT CASE WHEN sla_stage = ''breached'' THEN id END) + COUNT(DISTINCT CASE WHEN sla_stage = ''completed'' AND ARRAY_LENGTH(first_resp_time_arr) > 0 AND (total_first_resp_breaches_ever = 0 OR total_first_resp_breaches_ever IS NULL) THEN id END) > 0 THEN 100 - (COUNT(DISTINCT CASE WHEN sla_stage = ''breached'' THEN id END) * 100.0 / (COUNT(DISTINCT CASE WHEN sla_stage = ''breached'' THEN id END) + COUNT(DISTINCT CASE WHEN sla_stage = ''completed'' AND ARRAY_LENGTH(first_resp_time_arr) > 0 AND (total_first_resp_breaches_ever = 0 OR total_first_resp_breaches_ever IS NULL) THEN id END))) ELSE NULL END AS result)\",\n node: {\n class: ExpressionClass.SUBQUERY,\n type: ExpressionType.SUBQUERY,\n alias: '',\n query_location: 7,\n\n subquery: {\n node: {\n type: 'SELECT_NODE',\n modifiers: [],\n cte_map: {\n map: [],\n },\n select_list: [\n {\n class: ExpressionClass.CASE,\n type: ExpressionType.CASE_EXPR,\n alias: 'result',\n query_location: 15,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_GREATERTHAN,\n alias: '',\n query_location: 275,\n left: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 86,\n function_name: '+',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 25,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: ExpressionClass.CASE,\n type: ExpressionType.CASE_EXPR,\n alias: '',\n query_location: 40,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_EQUAL,\n alias: '',\n query_location: 60,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 50,\n column_names: ['sla_stage'],\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 62,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'breached',\n },\n },\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 78,\n column_names: ['id'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: true,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 88,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: ExpressionClass.CASE,\n type: ExpressionType.CASE_EXPR,\n alias: '',\n query_location: 103,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.CONJUNCTION,\n type: ExpressionType.CONJUNCTION_AND,\n alias: '',\n query_location: 137,\n children: [\n {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_EQUAL,\n alias: '',\n query_location: 123,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 113,\n column_names: ['sla_stage'],\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 125,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'completed',\n },\n },\n },\n {\n class: ExpressionClass.COMPARISON,\n type: 'COMPARE_GREATERTHAN',\n alias: '',\n query_location: 175,\n left: {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 141,\n function_name: 'array_length',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 154,\n column_names: [\n 'first_resp_time_arr',\n ],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 177,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n },\n {\n class: 'CONJUNCTION',\n type: 'CONJUNCTION_OR',\n alias: '',\n query_location: 219,\n children: [\n {\n class: ExpressionClass.COMPARISON,\n type: 'COMPARE_EQUAL',\n alias: '',\n query_location: 215,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 184,\n column_names: [\n 'total_first_resp_breaches_ever',\n ],\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 217,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n },\n {\n class: 'OPERATOR',\n type: 'OPERATOR_IS_NULL',\n alias: '',\n query_location: 253,\n children: [\n {\n class:\n ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 222,\n column_names: [\n 'total_first_resp_breaches_ever',\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 267,\n column_names: ['id'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: true,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 277,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n },\n then_expr: {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 288,\n function_name: '-',\n schema: '',\n children: [\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 284,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 100,\n },\n },\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 360,\n function_name: '/',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 352,\n function_name: '*',\n schema: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n query_location: 291,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: ExpressionClass.CASE,\n type: ExpressionType.CASE_EXPR,\n alias: '',\n query_location: 306,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: ExpressionType.COMPARE_EQUAL,\n alias: '',\n query_location: 326,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 316,\n column_names: ['sla_stage'],\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 328,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'breached',\n },\n },\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 344,\n column_names: ['id'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: true,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 354,\n value: {\n type: {\n id: 'DECIMAL',\n type_info: {\n type: 'DECIMAL_TYPE_INFO',\n alias: '',\n modifiers: [],\n width: 4,\n scale: 1,\n },\n },\n is_null: false,\n value: 1000,\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 424,\n function_name: '+',\n schema: '',\n children: [\n {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 363,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: 'CASE',\n type: 'CASE_EXPR',\n alias: '',\n query_location: 378,\n case_checks: [\n {\n when_expr: {\n class: ExpressionClass.COMPARISON,\n type: 'COMPARE_EQUAL',\n alias: '',\n query_location: 398,\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 388,\n column_names: ['sla_stage'],\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 400,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'breached',\n },\n },\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 416,\n column_names: ['id'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: true,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 426,\n function_name: 'count',\n schema: '',\n children: [\n {\n class: 'CASE',\n type: 'CASE_EXPR',\n alias: '',\n query_location: 441,\n case_checks: [\n {\n when_expr: {\n class: 'CONJUNCTION',\n type: 'CONJUNCTION_AND',\n alias: '',\n query_location: 475,\n children: [\n {\n class: ExpressionClass.COMPARISON,\n type: 'COMPARE_EQUAL',\n alias: '',\n query_location: 461,\n left: {\n class:\n ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 451,\n column_names: ['sla_stage'],\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 463,\n value: {\n type: {\n id: 'VARCHAR',\n type_info: null,\n },\n is_null: false,\n value: 'completed',\n },\n },\n },\n {\n class: ExpressionClass.COMPARISON,\n type: 'COMPARE_GREATERTHAN',\n alias: '',\n query_location: 513,\n left: {\n class: 'FUNCTION',\n type: 'FUNCTION',\n alias: '',\n query_location: 479,\n function_name: 'array_length',\n schema: '',\n children: [\n {\n class:\n ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 492,\n column_names: [\n 'first_resp_time_arr',\n ],\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 515,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n },\n {\n class: 'CONJUNCTION',\n type: 'CONJUNCTION_OR',\n alias: '',\n query_location: 557,\n children: [\n {\n class:\n ExpressionClass.COMPARISON,\n type: 'COMPARE_EQUAL',\n alias: '',\n query_location: 553,\n left: {\n class:\n ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 522,\n column_names: [\n 'total_first_resp_breaches_ever',\n ],\n },\n right: {\n class:\n ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 555,\n value: {\n type: {\n id: 'INTEGER',\n type_info: null,\n },\n is_null: false,\n value: 0,\n },\n },\n },\n {\n class: 'OPERATOR',\n type: 'OPERATOR_IS_NULL',\n alias: '',\n query_location: 591,\n children: [\n {\n class:\n ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 560,\n column_names: [\n 'total_first_resp_breaches_ever',\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n then_expr: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n query_location: 605,\n column_names: ['id'],\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 18446744073709552000,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: true,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n },\n ],\n else_expr: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n query_location: 620,\n value: {\n type: {\n id: 'NULL',\n type_info: null,\n },\n is_null: true,\n },\n },\n },\n ],\n from_table: {\n type: 'EMPTY',\n alias: '',\n sample: null,\n query_location: 18446744073709552000,\n },\n where_clause: null,\n group_expressions: [],\n group_sets: [],\n aggregate_handling: 'STANDARD_HANDLING',\n having: null,\n sample: null,\n qualify: null,\n },\n },\n child: null,\n comparison_type: 'INVALID',\n },\n validFunctions: new Set(['count', 'count_star']),\n validScalarFunctions: new Set(['-', '/', '*', '+']),\n expected: true,\n },\n];\n"],"names":["COLUMN_REF_NODE","DIMENSION_TEST_CASES","EMPTY_VALID_FUNCTIONS","INVALID_NODE","MEASURE_TEST_CASES","VALID_FUNCTIONS","Set","class","ExpressionClass","COLUMN_REF","type","ExpressionType","alias","query_location","column_names","INVALID","description","node","validFunctions","columnNames","expected","CONSTANT","VALUE_CONSTANT","value","CAST","OPERATOR_CAST","child","cast_type","id","try_cast","OPERATOR","OPERATOR_COALESCE","children","type_info","is_null","FUNCTION","function_name","schema","filter","order_bys","ResultModifierType","ORDER_MODIFIER","orders","distinct","is_operator","export_state","CASE","CASE_EXPR","case_checks","when_expr","COMPARISON","COMPARE_GREATERTHAN","left","right","then_expr","else_expr","query","validScalarFunctions","error","catalog","COMPARE_EQUAL","WINDOW","WINDOW_AGGREGATE","partitions","null_order","expression","start","end","start_expr","end_expr","offset_expr","default_expr","ignore_nulls","filter_expr","exclude_clause","SUBQUERY","subquery","modifiers","cte_map","map","select_list","CONJUNCTION","CONJUNCTION_AND","width","scale","from_table","sample","where_clause","group_expressions","group_sets","aggregate_handling","having","qualify","comparison_type"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-validator/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/ast-validator/utils.ts"],"sourcesContent":["import { ParsedExpression } from '../types/duckdb-serialization-types';\nimport { ParsedSerialization } from './types';\n\nexport function getSelectNode(\n parsedSerialization: ParsedSerialization\n): ParsedExpression {\n const statement = parsedSerialization.statements?.[0];\n if (!statement) {\n throw new Error('No statement found');\n }\n\n if (statement.node.type !== 'SELECT_NODE') {\n throw new Error('Statement must be a SELECT node');\n }\n\n const selectList = statement.node.select_list;\n if (!selectList?.length || selectList.length !== 1) {\n throw new Error('SELECT must contain exactly one expression');\n }\n\n return selectList[0];\n}\n\nexport const isError = (data: ParsedSerialization): boolean => {\n return !!data.error;\n};\n"],"names":["getSelectNode","isError","parsedSerialization","statement","statements","Error","node","type","selectList","select_list","length","data","error"],"mappings":";;;;;;;;IAGgBA,aAAa;eAAbA;;IAoBHC,OAAO;eAAPA;;;AApBN,SAASD,cACdE,mBAAwC;QAEtBA;IAAlB,MAAMC,aAAYD,kCAAAA,oBAAoBE,UAAU,qBAA9BF,+BAAgC,CAAC,EAAE;IACrD,IAAI,CAACC,WAAW;QACd,MAAM,IAAIE,MAAM;IAClB;IAEA,IAAIF,UAAUG,IAAI,CAACC,IAAI,KAAK,eAAe;QACzC,MAAM,IAAIF,MAAM;IAClB;IAEA,MAAMG,aAAaL,UAAUG,IAAI,CAACG,WAAW;IAC7C,IAAI,EAACD,8BAAAA,WAAYE,MAAM,KAAIF,WAAWE,MAAM,KAAK,GAAG;QAClD,MAAM,IAAIL,MAAM;IAClB;IAEA,OAAOG,UAAU,CAAC,EAAE;AACtB;AAEO,MAAMP,UAAU,CAACU;IACtB,OAAO,CAAC,CAACA,KAAKC,KAAK;AACrB"}
@@ -6,12 +6,12 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
- detectAllContextParams: function() {
10
- return detectAllContextParams;
11
- },
12
9
  applyContextParamsToBaseSQL: function() {
13
10
  return applyContextParamsToBaseSQL;
14
11
  },
12
+ detectAllContextParams: function() {
13
+ return detectAllContextParams;
14
+ },
15
15
  detectApplyContextParamsToBaseSQL: function() {
16
16
  return detectApplyContextParamsToBaseSQL;
17
17
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../meerkat-core/src/context-params/context-params-ast.ts"],"sourcesContent":["import { ContextParams } from '../types/cube-types/table';\n\nexport const detectAllContextParams = (\n sql: string\n): {\n memberKey: string;\n matchKey: string;\n}[] => {\n const regex = /\\$\\{CONTEXT_PARAMS\\.([^}]*)\\}/g;\n const matches = [];\n let match;\n\n while ((match = regex.exec(sql)) !== null) {\n matches.push({\n memberKey: match[1],\n matchKey: match[0],\n });\n }\n\n return matches;\n};\n\nexport const applyContextParamsToBaseSQL = (\n baseSQL: string,\n contextParamsSQL: {\n memberKey: string;\n contextParamSQL: string;\n matchKey: string;\n }[]\n) => {\n let newSQL = baseSQL;\n for (const contextParamSQL of contextParamsSQL) {\n // Replace matchKey with contextParamSQL\n newSQL = newSQL.replace(\n contextParamSQL.matchKey,\n contextParamSQL.contextParamSQL\n );\n }\n return newSQL;\n};\n\nexport const detectApplyContextParamsToBaseSQL = (\n baseSQL: string,\n contextParams: ContextParams\n) => {\n const contextParamsSQL = [];\n const contextParamsKeys = detectAllContextParams(baseSQL);\n\n for (const contextParamsKey of contextParamsKeys) {\n const contextParamSQL = contextParams[contextParamsKey.memberKey];\n if (contextParamSQL) {\n contextParamsSQL.push({\n memberKey: contextParamsKey.memberKey,\n matchKey: contextParamsKey.matchKey,\n contextParamSQL: contextParamSQL,\n });\n }\n }\n\n return applyContextParamsToBaseSQL(baseSQL, contextParamsSQL);\n};\n"],"names":["applyContextParamsToBaseSQL","detectAllContextParams","detectApplyContextParamsToBaseSQL","sql","regex","matches","match","exec","push","memberKey","matchKey","baseSQL","contextParamsSQL","newSQL","contextParamSQL","replace","contextParams","contextParamsKeys","contextParamsKey"],"mappings":";;;;;;;;IAsBaA,2BAA2B;eAA3BA;;IApBAC,sBAAsB;eAAtBA;;IAuCAC,iCAAiC;eAAjCA;;;AAvCN,MAAMD,yBAAyB,CACpCE;IAKA,MAAMC,QAAQ;IACd,MAAMC,UAAU,EAAE;IAClB,IAAIC;IAEJ,MAAO,AAACA,CAAAA,QAAQF,MAAMG,IAAI,CAACJ,IAAG,MAAO,KAAM;QACzCE,QAAQG,IAAI,CAAC;YACXC,WAAWH,KAAK,CAAC,EAAE;YACnBI,UAAUJ,KAAK,CAAC,EAAE;QACpB;IACF;IAEA,OAAOD;AACT;AAEO,MAAML,8BAA8B,CACzCW,SACAC;IAMA,IAAIC,SAASF;IACb,KAAK,MAAMG,mBAAmBF,iBAAkB;QAC9C,wCAAwC;QACxCC,SAASA,OAAOE,OAAO,CACrBD,gBAAgBJ,QAAQ,EACxBI,gBAAgBA,eAAe;IAEnC;IACA,OAAOD;AACT;AAEO,MAAMX,oCAAoC,CAC/CS,SACAK;IAEA,MAAMJ,mBAAmB,EAAE;IAC3B,MAAMK,oBAAoBhB,uBAAuBU;IAEjD,KAAK,MAAMO,oBAAoBD,kBAAmB;QAChD,MAAMH,kBAAkBE,aAAa,CAACE,iBAAiBT,SAAS,CAAC;QACjE,IAAIK,iBAAiB;YACnBF,iBAAiBJ,IAAI,CAAC;gBACpBC,WAAWS,iBAAiBT,SAAS;gBACrCC,UAAUQ,iBAAiBR,QAAQ;gBACnCI,iBAAiBA;YACnB;QACF;IACF;IAEA,OAAOd,4BAA4BW,SAASC;AAC9C"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/and/and.ts"],"sourcesContent":["import {\n ConjunctionExpression,\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/index';\n\nexport const andDuckdbCondition = (): ConjunctionExpression => {\n return {\n class: ExpressionClass.CONJUNCTION,\n type: ExpressionType.CONJUNCTION_AND,\n alias: '',\n children: [],\n };\n};\n"],"names":["andDuckdbCondition","class","ExpressionClass","CONJUNCTION","type","ExpressionType","CONJUNCTION_AND","alias","children"],"mappings":";+BAMaA;;;eAAAA;;;uBAFN;AAEA,MAAMA,qBAAqB;IAChC,OAAO;QACLC,OAAOC,sBAAe,CAACC,WAAW;QAClCC,MAAMC,qBAAc,CAACC,eAAe;QACpCC,OAAO;QACPC,UAAU,EAAE;IACd;AACF"}
@@ -6,12 +6,12 @@ function _export(target, all) {
6
6
  });
7
7
  }
8
8
  _export(exports, {
9
- baseDuckdbCondition: function() {
10
- return baseDuckdbCondition;
11
- },
12
9
  baseArrayDuckdbCondition: function() {
13
10
  return baseArrayDuckdbCondition;
14
11
  },
12
+ baseDuckdbCondition: function() {
13
+ return baseDuckdbCondition;
14
+ },
15
15
  valueBuilder: function() {
16
16
  return valueBuilder;
17
17
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/base-condition-builder/base-condition-builder.ts"],"sourcesContent":["import { Dimension, Measure } from '../../types/cube-types/index';\n\nimport { COLUMN_NAME_DELIMITER } from '../../member-formatters/constants';\nimport {\n ExpressionClass,\n ExpressionType,\n QueryNodeType,\n SubqueryType,\n} from '../../types/duckdb-serialization-types/index';\nimport { CUBE_TYPE_TO_DUCKDB_TYPE } from '../../utils/cube-type-to-duckdb-type';\nimport { convertFloatToInt, getTypeInfo } from '../../utils/get-type-info';\n\nexport const baseDuckdbCondition = (\n columnName: string,\n type: ExpressionType,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.COMPARISON,\n type: type,\n alias: '',\n left: {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n },\n right: {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n value: valueBuilder(value, memberInfo),\n },\n };\n};\n\nexport const baseArrayDuckdbCondition = (\n columnName: string,\n type: ExpressionType,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.SUBQUERY,\n type: ExpressionType.SUBQUERY,\n alias: '',\n subquery_type: SubqueryType.ANY,\n subquery: {\n node: {\n type: QueryNodeType.SELECT_NODE,\n modifiers: [],\n cte_map: {\n map: [],\n },\n select_list: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: 'unnest',\n schema: '',\n children: [\n {\n class: ExpressionClass.COLUMN_REF,\n type: ExpressionType.COLUMN_REF,\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: false,\n export_state: false,\n catalog: '',\n },\n ],\n from_table: {\n type: 'EMPTY',\n alias: '',\n sample: null,\n },\n where_clause: null,\n group_expressions: [],\n group_sets: [],\n aggregate_handling: 'STANDARD_HANDLING',\n having: null,\n sample: null,\n qualify: null,\n },\n },\n child: {\n class: 'CONSTANT',\n type: 'VALUE_CONSTANT',\n alias: '',\n value: valueBuilder(value, memberInfo),\n },\n comparison_type: type,\n };\n};\n\nexport const valueBuilder = (\n value: string,\n memberInfo: Measure | Dimension\n) => {\n switch (memberInfo.type) {\n case 'string':\n return {\n type: {\n id: CUBE_TYPE_TO_DUCKDB_TYPE[memberInfo.type],\n type_info: null,\n },\n is_null: false,\n value: value,\n };\n\n case 'number': {\n const parsedValue = parseFloat(value);\n return {\n type: {\n id: CUBE_TYPE_TO_DUCKDB_TYPE[memberInfo.type],\n type_info: getTypeInfo(parsedValue),\n },\n is_null: false,\n value: convertFloatToInt(parsedValue),\n };\n }\n case 'boolean': {\n const parsedValue = value === 'true';\n return {\n type: {\n id: CUBE_TYPE_TO_DUCKDB_TYPE[memberInfo.type],\n type_info: null,\n },\n is_null: false,\n value: parsedValue,\n };\n }\n case 'time':\n return {\n type: {\n id: CUBE_TYPE_TO_DUCKDB_TYPE[memberInfo.type],\n type_info: null,\n },\n is_null: false,\n value: value,\n };\n\n default:\n return {\n type: {\n id: CUBE_TYPE_TO_DUCKDB_TYPE.string,\n type_info: null,\n },\n is_null: false,\n value: value,\n };\n }\n};\n"],"names":["baseArrayDuckdbCondition","baseDuckdbCondition","valueBuilder","columnName","type","value","memberInfo","class","ExpressionClass","COMPARISON","alias","left","COLUMN_REF","ExpressionType","column_names","split","COLUMN_NAME_DELIMITER","right","CONSTANT","VALUE_CONSTANT","SUBQUERY","subquery_type","SubqueryType","ANY","subquery","node","QueryNodeType","SELECT_NODE","modifiers","cte_map","map","select_list","FUNCTION","function_name","schema","children","filter","order_bys","orders","distinct","is_operator","export_state","catalog","from_table","sample","where_clause","group_expressions","group_sets","aggregate_handling","having","qualify","child","comparison_type","id","CUBE_TYPE_TO_DUCKDB_TYPE","type_info","is_null","parsedValue","parseFloat","getTypeInfo","convertFloatToInt","string"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/contains/contains.ts"],"sourcesContent":["import { Member, QueryFilter } from '../../types/cube-types/query';\nimport { Dimension, Measure } from '../../types/cube-types/table';\n\nimport { COLUMN_NAME_DELIMITER } from '../../member-formatters/constants';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport interface ContainsFilters extends QueryFilter {\n member: Member;\n operator: 'contains';\n values: string[];\n}\n\nexport const containsDuckdbCondition = (\n columnName: string,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '~~*',\n schema: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n },\n {\n class: 'CONSTANT',\n type: 'VALUE_CONSTANT',\n alias: '',\n value: valueBuilder(`%${value}%`, memberInfo),\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n };\n};\n\nexport const containsTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n\n if (!values || values.length === 0) {\n throw new Error('Contains filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple Contains condition\n */\n if (values.length === 1) {\n return containsDuckdbCondition(member, values[0], memberInfo);\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n containsDuckdbCondition(member, value, memberInfo)\n );\n });\n return orCondition;\n};\n"],"names":["containsDuckdbCondition","containsTransform","columnName","value","memberInfo","class","ExpressionClass","FUNCTION","type","ExpressionType","alias","function_name","schema","children","column_names","split","COLUMN_NAME_DELIMITER","valueBuilder","filter","order_bys","orders","distinct","is_operator","export_state","catalog","query","member","values","length","Error","orCondition","orDuckdbCondition","forEach","push"],"mappings":";;;;;;;;IAkBaA,uBAAuB;eAAvBA;;IAqCAC,iBAAiB;eAAjBA;;;2BApDyB;4BAI/B;sCACsB;oBAEK;AAQ3B,MAAMD,0BAA0B,CACrCE,YACAC,OACAC;IAEA,OAAO;QACLC,OAAOC,2BAAe,CAACC,QAAQ;QAC/BC,MAAMC,0BAAc,CAACF,QAAQ;QAC7BG,OAAO;QACPC,eAAe;QACfC,QAAQ;QACRC,UAAU;YACR;gBACER,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPI,cAAcZ,WAAWa,KAAK,CAACC,gCAAqB;YACtD;YACA;gBACEX,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPP,OAAOc,IAAAA,kCAAY,EAAC,CAAC,CAAC,EAAEd,MAAM,CAAC,CAAC,EAAEC;YACpC;SACD;QACDc,QAAQ;QACRC,WAAW;YACTX,MAAM;YACNY,QAAQ,EAAE;QACZ;QACAC,UAAU;QACVC,aAAa;QACbC,cAAc;QACdC,SAAS;IACX;AACF;AAEO,MAAMvB,oBAAoD,CAACwB;IAChE,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEvB,UAAU,EAAE,GAAGqB;IAEvC,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAO5B,wBAAwB0B,QAAQC,MAAM,CAAC,EAAE,EAAEvB;IACpD;IAEA;;GAEC,GACD,MAAM0B,cAAcC,IAAAA,qBAAiB;IACrCJ,OAAOK,OAAO,CAAC,CAAC7B;QACd2B,YAAYjB,QAAQ,CAACoB,IAAI,CACvBjC,wBAAwB0B,QAAQvB,OAAOC;IAE3C;IACA,OAAO0B;AACT"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "equalsArrayTransform", {
3
+ enumerable: true,
4
+ get: function() {
5
+ return equalsArrayTransform;
6
+ }
7
+ });
8
+ const _constants = require("../../member-formatters/constants");
9
+ const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
10
+ const _ResultModifier = require("../../types/duckdb-serialization-types/serialization/ResultModifier");
11
+ const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
12
+ const equalsDuckDbCondition = (columnName, values, memberInfo)=>{
13
+ const columnRef = {
14
+ class: _Expression.ExpressionClass.COLUMN_REF,
15
+ type: _Expression.ExpressionType.COLUMN_REF,
16
+ alias: '',
17
+ column_names: columnName.split(_constants.COLUMN_NAME_DELIMITER)
18
+ };
19
+ const sqlTreeValues = values.map((value)=>{
20
+ const children = {
21
+ class: _Expression.ExpressionClass.CONSTANT,
22
+ type: _Expression.ExpressionType.VALUE_CONSTANT,
23
+ alias: '',
24
+ value: (0, _baseconditionbuilder.valueBuilder)(value, memberInfo)
25
+ };
26
+ return children;
27
+ });
28
+ const filterValuesArray = {
29
+ class: _Expression.ExpressionClass.FUNCTION,
30
+ type: _Expression.ExpressionType.FUNCTION,
31
+ alias: '',
32
+ function_name: 'list_value',
33
+ schema: 'main',
34
+ children: sqlTreeValues,
35
+ filter: null,
36
+ order_bys: {
37
+ type: _ResultModifier.ResultModifierType.ORDER_MODIFIER,
38
+ orders: []
39
+ },
40
+ distinct: false,
41
+ is_operator: false,
42
+ export_state: false,
43
+ catalog: ''
44
+ };
45
+ const sqlTree = {
46
+ class: _Expression.ExpressionClass.FUNCTION,
47
+ type: _Expression.ExpressionType.FUNCTION,
48
+ alias: '',
49
+ function_name: 'list_has_all',
50
+ schema: '',
51
+ children: [
52
+ columnRef,
53
+ filterValuesArray
54
+ ],
55
+ filter: null,
56
+ order_bys: {
57
+ type: _ResultModifier.ResultModifierType.ORDER_MODIFIER,
58
+ orders: []
59
+ },
60
+ distinct: false,
61
+ is_operator: false,
62
+ export_state: false,
63
+ catalog: ''
64
+ };
65
+ return sqlTree;
66
+ };
67
+ const equalsArrayTransform = (query)=>{
68
+ const { member, values, memberInfo } = query;
69
+ /**
70
+ * If there is only one value, we can create a simple equals condition
71
+ */ if (!values) {
72
+ throw new Error('In filter must have at least one value');
73
+ }
74
+ return equalsDuckDbCondition(member, values, memberInfo);
75
+ };
76
+
77
+ //# sourceMappingURL=equals-array.js.map