Skip to content

v3.0.2

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:51
· 38 commits to main since this release

What's Changed

  • TUR-169: Support MATCH seeded by a list index by @cyrusknopf in #1052
  • Remove Unused Lambda Variable Causing MacOS Failure by @sulaimansuhas in #1054
  • MLIR: fuse an UNWIND compared to a hop's start node into a const scan by @rjb32 in #1056
  • Test: split the IR unit tests into one directory per feature by @rjb32 in #1057
  • TUR-182: MLIR: fetch the nodes a column of IDs names instead of crossing whole node scans by @rjb32 in #1059
  • Samples: add a UK public transport fetcher by @rjb32 in #1060
  • TUR-178: Cypher: read CSV row fields inside OPTIONAL MATCH and subquery bodies by @rjb32 in #1062
  • TUR-196, TUR-197: MLIR: fix MERGE across statements of a change and outside one by @rjb32 in #1063
  • TUR-172: Cypher: group and dedup on a path variable by @rjb32 in #1065
  • TUR-183: MLIR: walk pass chains with worklists instead of recursion by @rjb32 in #1064
  • TUR-180: Net: render unmatched OPTIONAL MATCH entities as null by @rjb32 in #1066
  • TUR-200: Shell: only hide the prompt when linenoise is editing a terminal by @rjb32 in #1067
  • TUR-199: MLIR: read projected unwound node IDs through id() to keep the const scan by @rjb32 in #1068
  • TUR-181: MLIR: re-root a pattern at the node an equality binds to a column by @rjb32 in #1061
  • TUR-155: MLIR: filter hop predicates over many candidates at once by @rjb32 in #1071
  • TUR-114: MLIR: return a merged entity out of a CALL subquery by @rjb32 in #1074
  • TUR-194: Correctly parse null when loading JSONL by @cyrusknopf in #1072
  • Fix Column Const Null Logical Row Count Domination In Turing Proto by @sulaimansuhas in #1073
  • TUR-94: MLIR: test all() and none() over a walk's path on each hop by @rjb32 in #1070
  • TUR-177 TUR-195: Propagate LOAD JSONL errors to client; fix loading sparse IDs by @cyrusknopf in #1078
  • TUR-198: Fix spelling mistake in error message by @cyrusknopf in #1079
  • TUR-65: implement WHEN ... THEN ... ELSE conditional queries by @rjb32 in #1075
  • TUR-167: MLIR: check a disjunction of labels in one check_label_constraint by @rjb32 in #1069
  • TUR-203: MLIR: group by an entity the same query wrote by @rjb32 in #1080
  • Turing-106: Implement Static Map Accessors by @sulaimansuhas in #1053
  • TUR-107: Add Dynamic Map Accessors by @sulaimansuhas in #1076
  • TUR-202: MLIR: read a null entity an OPTIONAL CALL returned by @rjb32 in #1084
  • TUR-170: MLIR: read the nodes of a shortest path by @rjb32 in #1083
  • TUR-190: Vector: replace a reloaded vector by rebuilding the index by @rjb32 in #1085
  • MLIR: return written entities out of WHEN and UNION subqueries, and MERGE from created nodes by @rjb32 in #1082
  • Cypher: implement { WHEN ... } UNION { WHEN ... } by @rjb32 in #1086
  • TUR-208: MLIR: evaluate EXISTS over a node the same query created by @rjb32 in #1088
  • TUR-148: Enable list elements for CASE by @cyrusknopf in #1081
  • TUR-160: Cypher: implement abs and the common numeric and string functions by @rjb32 in #1090
  • MLIR: classify constant columns with a worklist by @rjb32 in #1089
  • Cypher: iterate a variable-length relationship in list comprehensions by @rjb32 in #1094
  • TUR-215: MLIR: fetch a constant node inside the factor it belongs to by @rjb32 in #1095
  • MLIR: walk long use-def chains with worklists by @rjb32 in #1091
  • TUR-56: Improve type-safety of procedures by @cyrusknopf in #1015
  • TUR-174: Cypher: implement reduce by @rjb32 in #1093
  • TUR-163: Cypher: support relationships with both arrow heads by @rjb32 in #1096
  • Claude: add stack-tickets and stack-merge commands by @rjb32 in #1097
  • TUR-213: MLIR: carry projection aliases into CASE and list bodies by @rjb32 in #1102
  • TUR-218: Cypher: concatenate a string cell plus a number by @rjb32 in #1103
  • TUR-217: Cypher: order NaN after every number by @rjb32 in #1104
  • TUR-189: MLIR: cost shortest path edges at their uncommitted weight by @rjb32 in #1098
  • TUR-201: Cypher: iterate a quantified group variable in list comprehensions by @rjb32 in #1099
  • TUR-127: MLIR: trim the carry sets of list comprehensions, predicates and reduce by @rjb32 in #1100
  • TUR-126: MLIR: stop a list predicate at the element that decides it by @rjb32 in #1101
  • CI: build only the top PR of a stack by @rjb32 in #1106
  • Claude: drop stale string predicate, VLP and list property limits by @rjb32 in #1107
  • TUR-212: Add overflow checks for modulo and divide by @cyrusknopf in #1113
  • TUR-185: Change persistence logic for vector DB shards by @cyrusknopf in #1112
  • TUR-229: Reads A Map In A List And A List In A Map by @sulaimansuhas in #1114
  • TUR-228: MLIR: implement min() and max() over lists and mixed-type values by @rjb32 in #1116
  • TUR-207: Cypher: test a null entity's label or edge type as null by @rjb32 in #1109
  • TUR-171: MLIR: read a dropped CSV row in the WHERE of a WITH by @rjb32 in #1110
  • TUR-179: Net: write JSON doubles at full precision by @rjb32 in #1111
  • Test: render NaN the same on every platform in StringRowSink by @rjb32 in #1120
  • TUR-230: Implement substr by @cyrusknopf in #1121
  • TUR-173: MLIR: place unwinds and filters in the factor they read by @rjb32 in #1119
  • Test: count DISTINCT over a CASE per pathway by @rjb32 in #1127
  • TUR-264: implement FOREACH by @rjb32 in #1126
  • TUR-255: Cypher: parse AND/OR/XOR chains as one n-ary expression by @rjb32 in #1125
  • TUR-225: Cypher: implement quantified path patterns with more than one hop by @rjb32 in #1118
  • TUR-175: MLIR: implement keys() and properties() by @rjb32 in #1108
  • TUR-231: Implement split by @cyrusknopf in #1122
  • QA: 3 failing Cypher tests on v3 by @rjb32 in #1092
  • TUR-271: System: name the graph in GRAPH_NOT_FOUND and say when it needs LOAD GRAPH by @rjb32 in #1128
  • TUR-256: HTTP: answer an over-limit request with a JSON error naming the limit by @rjb32 in #1129
  • TUR-246: HTTP: reject a commit or change parameter that does not parse by @rjb32 in #1130
  • TUR-242: HTTP: read a change ID in decimal, as CHANGE NEW returns it by @rjb32 in #1132
  • TUR-261: Cypher: implement stDev, stDevP, percentileCont and percentileDisc by @rjb32 in #1135
  • TUR-268: MLIR: compute the nodes a variable-length walk can end on before walking it by @rjb32 in #1131
  • CI: run macos26 on the self-hosted MacBook runner by @rjb32 in #1145
  • CI: pin CMake 3.x on macOS and key the dependency cache on submodule commits by @rjb32 in #1147
  • HTTP: split the URI with string_view so GCC 11 builds DBURIParser by @rjb32 in #1148
  • Enable Passing Parameters For Node Labels by @sulaimansuhas in #1136
  • Enable Parameterized Edge Types by @sulaimansuhas in #1137
  • Add /pr-explain Skill by @sulaimansuhas in #1144
  • Enable The Json Protocol To Send Parameters by @sulaimansuhas in #1150
  • Enable Encoding And Decoding Of ParameterMap Through The Binary Protocol by @sulaimansuhas in #1151
  • Send Encoded Param Maps From Clients To Servers by @sulaimansuhas in #1153
  • Send Query Parameters Over Every Client by @sulaimansuhas in #1154
  • HTTP: end a query pair at the query's end, not at npos, so GCC 11 builds DBURIParser by @rjb32 in #1156
  • Python: drop the dead abi_tag and python_tag overrides that setuptools 84.2 rejects by @rjb32 in #1160
  • Test: link test binaries without PIE and strip them outside debug builds by @rjb32 in #1158
  • Link all the test libraries to a dynamic turing engine library by @sulaimansuhas in #1159
  • CLAUDE.md: hold designs to the standard of the field and ask first by @rjb32 in #1163
  • CI: share the dependency cache between the runners of a host by @rjb32 in #1164
  • MLIR: unwind a range by counting it out instead of building its list by @rjb32 in #1161
  • TUR-288: MLIR: compare a node or an edge to a negative integer as unequal instead of raising by @rjb32 in #1162
  • MLIR: keep functions that raise on a row's value off rows the plan drops by @rjb32 in #1146
  • TUR-294: MLIR: read keyless aggregate inputs over the rows ahead of every reduction by @rjb32 in #1165
  • TUR-274: MLIR: free each chunk's lists, maps and strings instead of keeping them until the query ends by @rjb32 in #1133
  • TUR-280: MLIR: compute a row-wise op over constants once unless it can raise by @rjb32 in #1166
  • Deps: build Arrow's bundled dependencies from archives in external/arrow-thirdparty by @rjb32 in #1157
  • Enable HNSW Index to use mmap rather than loading everything into memory. by @sulaimansuhas in #1149
  • TUR-285: Cypher: answer null for a variable-length relationship list or node group in the OrNull conversions by @rjb32 in #1171
  • TUR-283: Cypher: answer null for NOT over a constant boolean conversion that yields null by @rjb32 in #1172
  • TUR-84: Cypher: compare integers and floats by their exact values by @rjb32 in #1174
  • TUR-303: Cypher: return one row per path when the RETURN reads no pattern variable by @rjb32 in #1176
  • TUR-221: MLIR: implement COLLECT subqueries by @rjb32 in #1175
  • QA: probe v3 through the shell and EXPLAIN, not the mlir sample by @rjb32 in #1178
  • TUR-236: Cypher: implement normalize and its four Unicode normal forms over utf8proc by @rjb32 in #1167
  • Cypher: implement the IS NORMALIZED predicate and give null for a non-string in normalize by @rjb32 in #1169
  • TUR-295: Cypher: implement NEXT by @rjb32 in #1168
  • MLIR: test the passes under a projection of constants by @rjb32 in #1183
  • TUR-118: Cypher: answer null for an ordering between types with no order by @rjb32 in #1181
  • TUR-204: MLIR: scan edges with both ends bound to a label by @rjb32 in #1180
  • TUR-313: Query: reject a MERGE key that is null at run time by @rjb32 in #1185
  • TUR-279: MLIR: unwind a list built per row without building a whole chunk of lists by @rjb32 in #1184
  • Skills: open the /pr-explain summary with the goal, the approach and where to look by @sulaimansuhas in #1190
  • TUR-315: Cypher: accept every keyword as a map key or a property name by @sulaimansuhas in #1187
  • TUR-316: MLIR: sort by a map by @sulaimansuhas in #1188
  • TUR-317: MLIR: test a map for null and compare it against a scalar by @sulaimansuhas in #1189
  • TUR-297: MLIR: carry only the columns an op over a list or a CASE reads by @rjb32 in #1191
  • TUR-311: Query: check a simple CASE's equality tests with the binary equality's rule by @rjb32 in #1192
  • TUR-286: Cypher: test char_length on a map cell by @rjb32 in #1194
  • TUR-206: Query: type a property read off an expression and drop the lowering's schema fallback by @rjb32 in #1196
  • TUR-319: MLIR: lay a RETURN of constants out over the rows in flight by @rjb32 in #1195
  • TUR-322: MLIR: compute a constant that can raise over the rows in flight by @rjb32 in #1197
  • TUR-270: CLI: fail the start when a listener cannot bind, and print why by @rjb32 in #1200
  • TUR-93: Cypher: test toString of bound, unwound and stored temporals by @rjb32 in #1202
  • Cypher: implement CASE and coalesce over every value type, and operators over !storage.any by @rjb32 in #1199
  • TUR-318: Query: compare an integer and a float with = and <> by @rjb32 in #1203
  • TUR-291: Query: concatenate and add list elements by the value each row holds by @rjb32 in #1204
  • TUR-166: MLIR: read the label sets or edge types of a column once by @rjb32 in #1205
  • TUR-224: Cypher: implement label expressions by @rjb32 in #1206
  • macOS: memory-map HNSW indexes and keep the dependency cache when a later step fails by @rjb32 in #1208

Full Changelog: v3.0...v3.0.2