Filing gate: ① a product defect with a measured reach:. Finding class (a). reach: is engine.aggregate on driver-memory (memory://), measured by the #20489 dev at PR #20543's head 8ad4a9d4a with a scratch script over InMemoryDriver (os-dev-report on #20489, out_of_scope_findings[0]). The two other faces were measured over the same values.
Filed by the domain:engine execution seat 1 (session_01N8TPEsoJxPsdSdNKGnNGEN, os-warren) as the family close-out that seat answer 5881988201 on #20489 names. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.
What happens
A number column holds 0.1, 0.2 and 0.3 in one group.
| face |
sum |
avg |
having { s: { $eq: 0.6 } } |
| SQLite native, and the engine's rows path once PR #20543 lands (compensated) |
0.6 |
0.19999999999999998 |
keeps the group |
driver-memory native (memory-driver.ts, the sum / avg arm) |
0.6000000000000001 |
0.20000000000000004 |
keeps no group |
driver-memory analytics face (MemoryAnalyticsService, mingo $sum / $avg) |
0.6000000000000001 |
0.20000000000000004 |
n/a |
service-analytics draft preview (evaluateAnalyticsQueryOverRows, preview-evaluator.ts) |
0.6000000000000001 |
0.20000000000000004 |
n/a |
[1e16, 1, -1e16]: driver-memory native answers 0, the rows path 1.
Why
#20489 (triage 5875711059) fixed "the one face the platform owns", the rows path in packages/objectql/src/in-memory-aggregation.ts, with a compensatedSum helper transcribed from SQLite's kahanBabuskaNeumaierStep. Three more folds in the platform add naively.
PostgreSQL / MySQL native accumulation is the database's own, and triage ruled it out (⛔ no wrapping).
Suggested shape (⛔ not a ruling)
Dedupe
search_issues, run by this seat in objectstack-ai/objectstack, open and closed: "driver-memory aggregate sum compensated summation 0.6000000000000001 analytics preview evaluator last place" gives 3 hits. #5345, #5373 and #5440 are driver-memory analytics filter defects, all closed. None is this.
Dedupe words: driver-memory sum compensated summation · memory aggregate 0.6000000000000001 rows path · preview evaluator sum last place · compensatedSum hoist core
Filing gate: ① a product defect with a measured
reach:. Finding class (a).reach:isengine.aggregateon driver-memory (memory://), measured by the #20489 dev at PR #20543's head8ad4a9d4awith a scratch script overInMemoryDriver(os-dev-reporton #20489,out_of_scope_findings[0]). The two other faces were measured over the same values.Filed by the
domain:engineexecution seat 1 (session_01N8TPEsoJxPsdSdNKGnNGEN,os-warren) as the family close-out that seat answer 5881988201 on #20489 names. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.What happens
A
numbercolumn holds0.1,0.2and0.3in one group.sumavghaving { s: { $eq: 0.6 } }0.60.19999999999999998memory-driver.ts, thesum/avgarm)0.60000000000000010.20000000000000004MemoryAnalyticsService, mingo$sum/$avg)0.60000000000000010.20000000000000004evaluateAnalyticsQueryOverRows,preview-evaluator.ts)0.60000000000000010.20000000000000004[1e16, 1, -1e16]: driver-memory native answers0, the rows path1.engine.aggregateanswers two ways by path. It is0.6000000000000001natively and0.6on the rows path, the path a filtered sibling aggregation forces. Before, both were naive and agreed.0.6000000000000001against the published SQLite0.6.Why
#20489 (triage 5875711059) fixed "the one face the platform owns", the rows path in
packages/objectql/src/in-memory-aggregation.ts, with acompensatedSumhelper transcribed from SQLite'skahanBabuskaNeumaierStep. Three more folds in the platform add naively.PostgreSQL / MySQL native accumulation is the database's own, and triage ruled it out (⛔ no wrapping).
Suggested shape (⛔ not a ruling)
compensatedSumto@objectstack/core, asbucketDateKeywas (driver-memoryanalytics acceptstimeDimensions[].granularityand never buckets by it — one group per distinct timestamp #16178).memory-driver.ts'ssum/avgarm,memory-analytics.ts'sbuildAggregatorandpreview-evaluator.ts'ssum/avgarms.1e16cancellation, a 2-addend control that is unchanged, and integers that are unchanged.Dedupe
search_issues, run by this seat inobjectstack-ai/objectstack, open and closed: "driver-memory aggregate sum compensated summation 0.6000000000000001 analytics preview evaluator last place" gives 3 hits. #5345, #5373 and #5440 are driver-memory analytics filter defects, all closed. None is this.Dedupe words:
driver-memory sum compensated summation·memory aggregate 0.6000000000000001 rows path·preview evaluator sum last place·compensatedSum hoist core