Skip to content

Commit 17d1356

Browse files
authored
Merge pull request #3 from boilingdata/partition-filtering-pushdown-tests
feat: Partition filtering pushdown tests
2 parents 45460b7 + 07cf00d commit 17d1356

3 files changed

Lines changed: 101 additions & 1 deletion

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@boilingdata/node-boilingdata",
3-
"version": "0.0.13",
3+
"version": "0.0.14",
44
"description": "BoilingData client",
55
"main": "dist/cjs/index.js",
66
"types": "dist/cjs/index.d.ts",

src/tests/__snapshots__/query.test.ts.snap

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,56 @@ Array [
118118
]
119119
`;
120120

121+
exports[`boilingdata with Glue Tables can do partition filter push down 1`] = `
122+
Array [
123+
Object {
124+
"count": 370164,
125+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=8/type=yellow/part-r-00268-6e222bd6-47be-424a-a29a-606961a23de1.gz.parquet",
126+
},
127+
Object {
128+
"count": 370164,
129+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=8/type=yellow/part-r-00268-90b05037-c70b-4bc7-978c-b53b496c4751.gz.parquet",
130+
},
131+
Object {
132+
"count": 370330,
133+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=8/type=yellow/part-r-00269-6e222bd6-47be-424a-a29a-606961a23de1.gz.parquet",
134+
},
135+
Object {
136+
"count": 370330,
137+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=8/type=yellow/part-r-00269-90b05037-c70b-4bc7-978c-b53b496c4751.gz.parquet",
138+
},
139+
Object {
140+
"count": 370214,
141+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=8/type=yellow/part-r-00270-6e222bd6-47be-424a-a29a-606961a23de1.gz.parquet",
142+
},
143+
]
144+
`;
145+
146+
exports[`boilingdata with Glue Tables can read S3 Keys from Glue Table 1`] = `
147+
Array [
148+
Object {
149+
"count": 372459,
150+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=1/type=yellow/part-r-00000-6e222bd6-47be-424a-a29a-606961a23de1.gz.parquet",
151+
},
152+
Object {
153+
"count": 372459,
154+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=1/type=yellow/part-r-00000-90b05037-c70b-4bc7-978c-b53b496c4751.gz.parquet",
155+
},
156+
Object {
157+
"count": 372633,
158+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=1/type=yellow/part-r-00001-6e222bd6-47be-424a-a29a-606961a23de1.gz.parquet",
159+
},
160+
Object {
161+
"count": 372633,
162+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=1/type=yellow/part-r-00001-90b05037-c70b-4bc7-978c-b53b496c4751.gz.parquet",
163+
},
164+
Object {
165+
"count": 372654,
166+
"s3key": "s3://isecurefi-serverless-analytics/NY-Pub/year=2009/month=1/type=yellow/part-r-00002-6e222bd6-47be-424a-a29a-606961a23de1.gz.parquet",
167+
},
168+
]
169+
`;
170+
121171
exports[`boilingdata with SQLite3 run single query 1`] = `
122172
Array [
123173
Object {

src/tests/query.test.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,53 @@ describe("boilingdata with SQLite3", () => {
133133
expect(rows.sort()).toMatchSnapshot();
134134
});
135135
});
136+
137+
describe("boilingdata with Glue Tables", () => {
138+
beforeAll(async () => {
139+
await bdInstance.connect();
140+
logger.info("connected.");
141+
});
142+
143+
afterAll(async () => {
144+
await bdInstance.close();
145+
logger.info("connection closed.");
146+
});
147+
148+
it("can read S3 Keys from Glue Table", async () => {
149+
const rows = await new Promise<any[]>((resolve, _reject) => {
150+
const r: any[] = [];
151+
bdInstance.execQuery({
152+
sql: `SELECT 's3://KEY' AS s3key, COUNT(*) AS count FROM parquet_scan('s3://KEY');`,
153+
engine: EEngineTypes.DUCKDB,
154+
keys: ["glue.default.nyctaxis"],
155+
callbacks: {
156+
onData: (data: IBDDataResponse | unknown) => {
157+
if (isDataResponse(data)) data.data.map(row => r.push(row));
158+
},
159+
onQueryFinished: () => resolve(r),
160+
// onLogError: (data: any) => reject(data),
161+
},
162+
});
163+
});
164+
expect(rows.sort((a, b) => a.s3key.localeCompare(b.s3key))).toMatchSnapshot();
165+
});
166+
167+
it("can do partition filter push down", async () => {
168+
const rows = await new Promise<any[]>((resolve, _reject) => {
169+
const r: any[] = [];
170+
bdInstance.execQuery({
171+
sql: `SELECT 's3://KEY' AS s3key, COUNT(*) AS count FROM parquet_scan('s3://KEY') WHERE year=2009 AND month=8;`,
172+
engine: EEngineTypes.DUCKDB,
173+
keys: ["glue.default.nyctaxis"],
174+
callbacks: {
175+
onData: (data: IBDDataResponse | unknown) => {
176+
if (isDataResponse(data)) data.data.map(row => r.push(row));
177+
},
178+
onQueryFinished: () => resolve(r),
179+
// onLogError: (data: any) => reject(data),
180+
},
181+
});
182+
});
183+
expect(rows.sort((a, b) => a.s3key.localeCompare(b.s3key))).toMatchSnapshot();
184+
});
185+
});

0 commit comments

Comments
 (0)