Skip to content

Commit f00f554

Browse files
fixed duplicate meerkat projections (#111)
* fixed duplicate meerkat projections * updated failedcd '/Users/zaidjan/Documents/Projects/meerkat' * updated failing tests * bumped versions
1 parent c07ee54 commit f00f554

File tree

8 files changed

+24
-19
lines changed

8 files changed

+24
-19
lines changed

meerkat-browser/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devrev/meerkat-browser",
3-
"version": "0.0.78",
3+
"version": "0.0.79",
44
"dependencies": {
55
"@swc/helpers": "~0.5.0",
66
"@devrev/meerkat-core": "*",

meerkat-core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devrev/meerkat-core",
3-
"version": "0.0.79",
3+
"version": "0.0.80",
44
"dependencies": {
55
"@swc/helpers": "~0.5.0"
66
},

meerkat-core/src/get-wrapped-base-query-with-projections/__tests__/get-projection-clause.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('get-projection-clause', () => {
3131
});
3232
it('should skip aliased items present in already seen', () => {
3333
const members = ['test.a', 'test.c'];
34-
const aliasedColumnSet = new Set<string>(['test.c']);
34+
const aliasedColumnSet = new Set<string>(['test__c']);
3535
const result = getProjectionClause(
3636
{
3737
dimensions: members, measures: []
@@ -44,7 +44,7 @@ describe('get-projection-clause', () => {
4444

4545
it('should project columns used inside the measure string', () => {
4646
const members = ['test.a', 'test.c'];
47-
const aliasedColumnSet = new Set<string>(['test.c']);
47+
const aliasedColumnSet = new Set<string>(['test__c']);
4848
const result = getProjectionClause(
4949
{
5050
measures: ['test.total_rows'],

meerkat-core/src/get-wrapped-base-query-with-projections/get-projection-clause.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { memberKeyToSafeKey } from '../utils/member-key-to-safe-key';
44
import { getDimensionProjection, getFilterMeasureProjection } from './get-aliased-columns-from-filters';
55
import { MODIFIERS } from './sql-expression-modifiers';
66

7-
const aggregator = ({
7+
const memberClauseAggregator = ({
88
member,
99
aliasedColumnSet,
1010
acc,
@@ -45,8 +45,8 @@ export const getProjectionClause = (
4545
modifiers: MODIFIERS,
4646
query
4747
});
48-
return aggregator({
49-
member,
48+
return memberClauseAggregator({
49+
member: memberKeyToSafeKey(member),
5050
aliasedColumnSet,
5151
acc,
5252
currentIndex,
@@ -65,7 +65,7 @@ export const getProjectionClause = (
6565
tableSchema,
6666
measures,
6767
});
68-
return aggregator({
68+
return memberClauseAggregator({
6969
member,
7070
aliasedColumnSet,
7171
acc,

meerkat-core/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ export const getWrappedBaseQueryWithProjections = ({
2424
const newBaseSql = `SELECT * FROM (${baseQuery}) AS ${tableSchema.name}`;
2525
const aliasedColumnSet = new Set<string>();
2626

27+
const memberProjections = getProjectionClause(
28+
query,
29+
tableSchema,
30+
aliasedColumnSet
31+
);
32+
2733
const aliasFromFilters = getAliasedColumnsFromFilters({
2834
aliasedColumnSet,
2935
baseSql: 'SELECT *',
@@ -33,11 +39,6 @@ export const getWrappedBaseQueryWithProjections = ({
3339
meerkatFilters: query.filters,
3440
});
3541

36-
const memberProjections = getProjectionClause(
37-
query,
38-
tableSchema,
39-
aliasedColumnSet
40-
);
4142
const formattedMemberProjection = memberProjections
4243
? `, ${memberProjections}`
4344
: '';

meerkat-node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devrev/meerkat-node",
3-
"version": "0.0.76",
3+
"version": "0.0.77",
44
"dependencies": {
55
"@swc/helpers": "~0.5.0",
66
"@devrev/meerkat-core": "*",

meerkat-node/src/__tests__/having-filters.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ describe('cube-to-sql', () => {
101101
const sql = await cubeQueryToSQL(query, [TABLE_SCHEMA]);
102102
console.info(`SQL for Simple Cube Query: `, sql);
103103
expect(sql).toBe(
104-
`SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT *, customer_id AS orders__customer_id, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '2') GROUP BY orders__customer_id HAVING (orders__total_order_amount = 100) ORDER BY orders__total_order_amount DESC LIMIT 2`
104+
`SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT *, customer_id AS orders__customer_id FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '2') GROUP BY orders__customer_id HAVING (orders__total_order_amount = 100) ORDER BY orders__total_order_amount DESC LIMIT 2`
105105
);
106106
const output = await duckdbExec(sql);
107107
expect(output).toEqual([

meerkat-node/src/__tests__/joins.spec.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,10 @@ describe('Joins Tests', () => {
545545
'customers.customer_id',
546546
'customers.order_id',
547547
],
548+
order: {
549+
'orders.total_order_amount': 'desc',
550+
'customers.customer_id': 'asc'
551+
},
548552
};
549553

550554
const sql = await cubeQueryToSQL(query1, [ORDER_SCHEMA, CUSTOMER_SCHEMA]);
@@ -553,11 +557,11 @@ describe('Joins Tests', () => {
553557
const parsedOutput = JSON.parse(JSON.stringify(output));
554558
console.info('parsedOutput', parsedOutput);
555559
expect(parsedOutput).toHaveLength(3);
556-
expect(parsedOutput[0].customers__customer_id).toBe('2');
557-
expect(parsedOutput[1].customers__customer_id).toBe('1');
560+
expect(parsedOutput[0].customers__customer_id).toBe('1');
561+
expect(parsedOutput[1].customers__customer_id).toBe('2');
558562
expect(parsedOutput[2].customers__customer_id).toBe('1');
559-
expect(parsedOutput[0].customers__order_id).toBe('2');
560-
expect(parsedOutput[1].customers__order_id).toBe('3');
563+
expect(parsedOutput[0].customers__order_id).toBe('3');
564+
expect(parsedOutput[1].customers__order_id).toBe('2');
561565
expect(parsedOutput[2].customers__order_id).toBe('3');
562566

563567
const query2 = {

0 commit comments

Comments
 (0)