duckdb 0.6.2-dev1759.0 → 0.6.2-dev1764.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.
package/binding.gyp CHANGED
@@ -296,7 +296,8 @@
296
296
  "cflags": [
297
297
  "-frtti",
298
298
  "-fexceptions",
299
- "-Wno-redundant-move"
299
+ "-Wno-redundant-move",
300
+ "-frtti"
300
301
  ],
301
302
  "cflags!": [
302
303
  "-fno-rrti",
@@ -318,7 +319,8 @@
318
319
  "VCCLCompilerTool": {
319
320
  "ExceptionHandling": 1,
320
321
  "AdditionalOptions": [
321
- "/bigobj"
322
+ "/bigobj",
323
+ "/GR"
322
324
  ]
323
325
  }
324
326
  },
package/configure.py CHANGED
@@ -85,8 +85,8 @@ else:
85
85
  source_list = [os.path.relpath(x, basedir) if os.path.isabs(x) else os.path.join('src', x) for x in source_list]
86
86
  include_list = [os.path.join('src', 'duckdb', x) for x in include_list]
87
87
  libraries = []
88
- windows_options = []
89
- cflags = []
88
+ windows_options = ['/GR']
89
+ cflags = ['-frtti']
90
90
 
91
91
  def sanitize_path(x):
92
92
  return x.replace('\\', '/')
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "duckdb",
3
3
  "main": "./lib/duckdb.js",
4
4
  "types": "./lib/duckdb.d.ts",
5
- "version": "0.6.2-dev1759.0",
5
+ "version": "0.6.2-dev1764.0",
6
6
  "description": "DuckDB node.js API",
7
7
  "gypfile": true,
8
8
  "dependencies": {
@@ -1,8 +1,8 @@
1
1
  #ifndef DUCKDB_VERSION
2
- #define DUCKDB_VERSION "0.6.2-dev1759"
2
+ #define DUCKDB_VERSION "0.6.2-dev1764"
3
3
  #endif
4
4
  #ifndef DUCKDB_SOURCE_ID
5
- #define DUCKDB_SOURCE_ID "e345a2e505"
5
+ #define DUCKDB_SOURCE_ID "514ba34dec"
6
6
  #endif
7
7
  #include "duckdb/function/table/system_functions.hpp"
8
8
  #include "duckdb/main/database.hpp"
@@ -235,10 +235,11 @@ public:
235
235
  }
236
236
 
237
237
  void UpdateState(string_t uncompressed_string, unsigned char *compressed_string, size_t compressed_string_len) {
238
-
239
238
  if (!HasEnoughSpace(compressed_string_len)) {
240
239
  Flush();
241
- D_ASSERT(HasEnoughSpace(compressed_string_len));
240
+ if (!HasEnoughSpace(compressed_string_len)) {
241
+ throw InternalException("FSST string compression failed due to insufficient space in empty block");
242
+ };
242
243
  }
243
244
 
244
245
  UncompressedStringStorage::UpdateStringStats(current_segment->stats, uncompressed_string);
@@ -261,7 +262,9 @@ public:
261
262
  void AddNull() {
262
263
  if (!HasEnoughSpace(0)) {
263
264
  Flush();
264
- D_ASSERT(HasEnoughSpace(0));
265
+ if (!HasEnoughSpace(0)) {
266
+ throw InternalException("FSST string compression failed due to insufficient space in empty block");
267
+ };
265
268
  }
266
269
  index_buffer.push_back(0);
267
270
  current_segment->count++;
@@ -272,7 +275,7 @@ public:
272
275
  UncompressedStringStorage::UpdateStringStats(current_segment->stats, "");
273
276
  }
274
277
 
275
- bool HasEnoughSpace(size_t string_len) {
278
+ size_t GetRequiredSize(size_t string_len) {
276
279
  bitpacking_width_t required_minimum_width;
277
280
  if (string_len > max_compressed_string_length) {
278
281
  required_minimum_width = BitpackingPrimitives::MinimumBitWidth(string_len);
@@ -287,8 +290,13 @@ public:
287
290
  BitpackingPrimitives::GetRequiredSize(current_string_count + 1, required_minimum_width);
288
291
 
289
292
  // TODO switch to a symbol table per RowGroup, saves a bit of space
290
- auto required_size = sizeof(fsst_compression_header_t) + current_dict_size + dict_offsets_size + string_len +
291
- fsst_serialized_symbol_table_size;
293
+ return sizeof(fsst_compression_header_t) + current_dict_size + dict_offsets_size + string_len +
294
+ fsst_serialized_symbol_table_size;
295
+ }
296
+
297
+ // Checks if there is enough space, if there is, sets last_fitting_size
298
+ bool HasEnoughSpace(size_t string_len) {
299
+ auto required_size = GetRequiredSize(string_len);
292
300
 
293
301
  if (required_size <= Storage::BLOCK_SIZE) {
294
302
  last_fitting_size = required_size;