From 28a77d2c93d0c141a9e4c19a3d6e40eae23f5ecb Mon Sep 17 00:00:00 2001 From: Wlad Meixner Date: Tue, 28 Nov 2023 10:07:42 +0100 Subject: [PATCH] wip: resolves query results do not match min value query --- src/lib/store/dataStore/filterActions.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/lib/store/dataStore/filterActions.ts b/src/lib/store/dataStore/filterActions.ts index 0f67a41..f436527 100644 --- a/src/lib/store/dataStore/filterActions.ts +++ b/src/lib/store/dataStore/filterActions.ts @@ -148,6 +148,24 @@ export const dataStoreFilterExtension = (store: BaseStoreType) => { const zColValue = getSqlScaleWrapper(options.scaleZ, options.zColumnName, '"'); const yColValue = getSqlScaleWrapper(options.scaleY, options.yColumnName, '"'); + const queryV2 = ` + SELECT x, y, z, name, "${options.xColumnName}" as rawX, "${options.yColumnName}" as rawY, "${ + options.xColumnName + }" as rawX + FROM "${tableName}" a + RIGHT JOIN ( + SELECT FLOOR((${xColValue} - ${xMin}) / ${xBucketSize}) AS x, + FLOOR((${zColValue} - ${zMin}) / ${zBucketSize}) AS z, + ${options.aggregation}(${yColValue}) AS y + FROM "${tableName}" + GROUP BY x, z + ) b ON a."${options.yColumnName}" = b.y + WHERE "${options.yColumnName}" != 'NaN' and x != 'NaN' and z != 'NaN' + ${where ? `and "${where.columnName}" = '${where.value}'` : ''} + ${options.scaleY === DataScaling.LOG ? `and "${options.yColumnName}" >= 0` : ''} + ORDER BY x ASC, y ASC ${where ? `, "${where.columnName}"` : ''} + `; + // FIXME: this currently incorrectly pairs up x and z values within a mode/group const query = ` SELECT @@ -170,7 +188,7 @@ export const dataStoreFilterExtension = (store: BaseStoreType) => { // ORDER BY z ASC, x ASC; try { - const resp = await store.executeQuery(query); + const resp = await store.executeQuery(queryV2); if (!resp) { // TODO: fix/handle this return [];