duckdb 0.5.2-dev12.0 → 0.5.2-dev1203.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7541,6 +7541,7 @@ class ParquetReader;
7541
7541
  using duckdb_apache::thrift::protocol::TProtocol;
7542
7542
 
7543
7543
  using duckdb_parquet::format::ColumnChunk;
7544
+ using duckdb_parquet::format::CompressionCodec;
7544
7545
  using duckdb_parquet::format::FieldRepetitionType;
7545
7546
  using duckdb_parquet::format::PageHeader;
7546
7547
  using duckdb_parquet::format::SchemaElement;
@@ -7617,9 +7618,10 @@ protected:
7617
7618
 
7618
7619
  private:
7619
7620
  void PrepareRead(parquet_filter_t &filter);
7620
- void PreparePage(idx_t compressed_page_size, idx_t uncompressed_page_size);
7621
+ void PreparePage(PageHeader &page_hdr);
7621
7622
  void PrepareDataPage(PageHeader &page_hdr);
7622
7623
  void PreparePageV2(PageHeader &page_hdr);
7624
+ void DecompressInternal(CompressionCodec::type codec, const char *src, idx_t src_size, char *dst, idx_t dst_size);
7623
7625
 
7624
7626
  const duckdb_parquet::format::ColumnChunk *chunk = nullptr;
7625
7627
 
@@ -0,0 +1,209 @@
1
+ import * as duckdb from "..";
2
+ import assert from "assert";
3
+ import fs from "fs";
4
+
5
+ describe("TypeScript declarataions", function () {
6
+ var db: duckdb.Database;
7
+ before(function (done) {
8
+ db = new duckdb.Database(":memory:", done);
9
+ });
10
+
11
+ it("typescript: Database constructor no callback", (done) => {
12
+ const tdb0 = new duckdb.Database(":memory:"); // no callback argument
13
+ done();
14
+ });
15
+
16
+ it("typescript: Database constructor path error", (done) => {
17
+ const tdb0 = new duckdb.Database("./bogusPath.db", (err, res) => {
18
+ // Issue: I'm a little surprised that specifying an invalid file path
19
+ // doesn't seem to immediately signal an error here, but it doesn't.
20
+ tdb0.all(
21
+ "PRAGMA show_tables",
22
+ (err: duckdb.DuckDbError | null, res: any) => {
23
+ done();
24
+ }
25
+ );
26
+ });
27
+ });
28
+
29
+ it("typescript: query with error", (done) => {
30
+ // query with an error:
31
+ db.all(
32
+ "SELECT * FROM sometable",
33
+ (err: duckdb.DuckDbError | null, res: any) => {
34
+ assert.equal(err?.code, "DUCKDB_NODEJS_ERROR");
35
+ assert.equal(err?.errno, -1);
36
+ done();
37
+ }
38
+ );
39
+ });
40
+
41
+ it("typescript: Database#exec", function (done) {
42
+ var sql = fs.readFileSync("test/support/script.sql", "utf8");
43
+ db.exec(sql, function (err: duckdb.DuckDbError | null) {
44
+ if (err) throw err;
45
+ done();
46
+ });
47
+ });
48
+
49
+ it("typescript: retrieve database structure", function (done) {
50
+ db.all(
51
+ "SELECT type, name FROM sqlite_master ORDER BY type, name",
52
+ function (err: duckdb.DuckDbError | null, rows: duckdb.TableData) {
53
+ if (err) throw err;
54
+ assert.deepEqual(rows, [
55
+ { type: "table", name: "grid_key" },
56
+ { type: "table", name: "grid_utfgrid" },
57
+ { type: "table", name: "images" },
58
+ { type: "table", name: "keymap" },
59
+ { type: "table", name: "map" },
60
+ { type: "table", name: "metadata" },
61
+ { type: "view", name: "grid_data" },
62
+ { type: "view", name: "grids" },
63
+ { type: "view", name: "tiles" },
64
+ ]);
65
+ done();
66
+ }
67
+ );
68
+ });
69
+
70
+ it("typescript: database#all with no callback", (done) => {
71
+ db.all("select 42 as x");
72
+ done();
73
+ });
74
+
75
+ it("typescript: database#connect", (done) => {
76
+ const conn = db.connect();
77
+ assert(conn instanceof duckdb.Connection);
78
+ done();
79
+ });
80
+
81
+ it("typescript: ensure empty results work ok", (done) => {
82
+ db.all(
83
+ "create table test_table as select 42 as x",
84
+ (err: duckdb.DuckDbError | null, res: duckdb.TableData) => {
85
+ db.all(
86
+ "drop table test_table",
87
+ (err: duckdb.DuckDbError | null, res: duckdb.TableData) => {
88
+ console.log("drop table results: ", err, res);
89
+ assert.deepEqual(res, []);
90
+ done();
91
+ }
92
+ );
93
+ }
94
+ );
95
+ });
96
+
97
+ it("typescript: ternary int udf", function (done) {
98
+ db.register(
99
+ "udf",
100
+ "integer",
101
+ (x: number, y: number, z: number) => x + y + z
102
+ );
103
+ db.all(
104
+ "select udf(21, 20, 1) v",
105
+ function (err: duckdb.DuckDbError | null, rows: duckdb.TableData) {
106
+ if (err) throw err;
107
+ assert.equal(rows[0].v, 42);
108
+ }
109
+ );
110
+ db.unregister("udf", done);
111
+ });
112
+ it("typescript: retrieve 100,000 rows with Statement#each", function (done) {
113
+ var total = 100000;
114
+ var retrieved = 0;
115
+
116
+ db.each(
117
+ "SELECT * FROM range(0, ?)",
118
+ total,
119
+ function (err: duckdb.DuckDbError | null, row: any) {
120
+ if (err) throw err;
121
+ retrieved++;
122
+
123
+ if (retrieved === total) {
124
+ assert.equal(
125
+ retrieved,
126
+ total,
127
+ "Only retrieved " + retrieved + " out of " + total + " rows."
128
+ );
129
+ done();
130
+ }
131
+ }
132
+ );
133
+ });
134
+ });
135
+
136
+ describe("typescript: simple prepared statement", function () {
137
+ var db: duckdb.Database;
138
+ before(function (done) {
139
+ db = new duckdb.Database(":memory:", done);
140
+ });
141
+
142
+ it("should prepare, run and finalize the statement", function (done) {
143
+ db.prepare("CREATE TABLE foo (bar text)").run().finalize(done);
144
+ });
145
+
146
+ after(function (done) {
147
+ db.close(done);
148
+ });
149
+ });
150
+
151
+ describe("typescript: prepared statements", function () {
152
+ var db: duckdb.Database;
153
+ before(function (done) {
154
+ db = new duckdb.Database(":memory:", done);
155
+ });
156
+
157
+ var inserted = 0;
158
+ var retrieved = 0;
159
+
160
+ // We insert and retrieve that many rows.
161
+ var count = 1000;
162
+
163
+ it("typescript: should create the table", function (done) {
164
+ db.prepare("CREATE TABLE foo (txt text, num int, flt double, blb blob)")
165
+ .run()
166
+ .finalize(done);
167
+ });
168
+
169
+ it("typescript: should insert " + count + " rows", function (done) {
170
+ for (var i = 0; i < count; i++) {
171
+ db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)")
172
+ .run(
173
+ "String " + i,
174
+ i,
175
+ i * Math.PI,
176
+ null,
177
+ function (err: duckdb.DuckDbError | null) {
178
+ if (err) throw err;
179
+ inserted++;
180
+ }
181
+ )
182
+ .finalize(function (err) {
183
+ if (err) throw err;
184
+ if (inserted == count) done();
185
+ });
186
+ }
187
+ });
188
+ });
189
+
190
+ describe("typescript: stream and QueryResult", function () {
191
+ const total = 1000;
192
+
193
+ let db: duckdb.Database;
194
+ let conn: duckdb.Connection;
195
+ before((done) => {
196
+ db = new duckdb.Database(":memory:", () => {
197
+ conn = new duckdb.Connection(db, done);
198
+ });
199
+ });
200
+
201
+ it("streams results", async () => {
202
+ let retrieved = 0;
203
+ const stream = conn.stream("SELECT * FROM range(0, ?)", total);
204
+ for await (const row of stream) {
205
+ retrieved++;
206
+ }
207
+ assert.equal(total, retrieved);
208
+ });
209
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "compilerOptions": {
3
+ "allowJs": false,
4
+ "esModuleInterop": true,
5
+ "noImplicitAny": true,
6
+ "strict": true,
7
+ "outDir": "./dist",
8
+ "types": ["node", "mocha"]
9
+ },
10
+ "include": ["test/**/*"],
11
+ "exclude": ["node_modules"]
12
+ }