tinybird-toolset 2.4.11__tar.gz → 2.4.14__tar.gz

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.
Files changed (29) hide show
  1. {tinybird_toolset-2.4.11/src/tinybird_toolset.egg-info → tinybird_toolset-2.4.14}/PKG-INFO +1 -1
  2. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/conf.py +39 -5
  3. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/setup.py +1 -1
  4. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14/src/tinybird_toolset.egg-info}/PKG-INFO +1 -1
  5. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_convert_to_row_binary.py +43 -4
  6. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/LICENSE +0 -0
  7. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/MANIFEST.in +0 -0
  8. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/README.md +0 -0
  9. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/setup.cfg +0 -0
  10. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/src/chtoolset/__init__.py +0 -0
  11. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/src/chtoolset/query.py +0 -0
  12. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/src/tinybird_toolset.egg-info/SOURCES.txt +0 -0
  13. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/src/tinybird_toolset.egg-info/dependency_links.txt +0 -0
  14. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/src/tinybird_toolset.egg-info/requires.txt +0 -0
  15. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/src/tinybird_toolset.egg-info/top_level.txt +0 -0
  16. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_check_compatible_types.py +0 -0
  17. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_check_write_query.py +0 -0
  18. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_chquery.py +0 -0
  19. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_explain_ast.py +0 -0
  20. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_get_columns_from_create_query.py +0 -0
  21. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_get_left_table.py +0 -0
  22. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_internal_cache.py +0 -0
  23. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_normalize_query_keep_names.py +0 -0
  24. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_normalize_table_column.py +0 -0
  25. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_parse_create_materialized_view_target_table.py +0 -0
  26. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_replace_tables.py +0 -0
  27. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_replace_tables_backward_compat.py +0 -0
  28. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_rewrite_aggregation_states.py +0 -0
  29. {tinybird_toolset-2.4.11 → tinybird_toolset-2.4.14}/tests/test_tables.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tinybird-toolset
3
- Version: 2.4.11
3
+ Version: 2.4.14
4
4
  Home-page: https://gitlab.com/tinybird/clickhouse-toolset
5
5
  Author: Tinybird.co
6
6
  Author-email: support@tinybird.co
@@ -32,6 +32,24 @@ MSAN_ENABLED = bool(os.environ.get('MSAN_ENABLED', '')) # MemorySanitizer
32
32
  TSAN_ENABLED = bool(os.environ.get('TSAN_ENABLED', '')) # ThreadSanitizer
33
33
  THINLTO_FLAG = '-flto=thin'
34
34
 
35
+ # Taken from https://github.com/cpp-best-practices/cmake_template/blob/a3971f5b45/cmake/CompilerWarnings.cmake
36
+ CLANG_WARNINGS = [
37
+ '-Wall',
38
+ '-Wextra',
39
+ '-Wshadow',
40
+ '-Wnon-virtual-dtor',
41
+ '-Wold-style-cast',
42
+ '-Wcast-align',
43
+ '-Wunused',
44
+ '-Woverloaded-virtual',
45
+ '-Wpedantic',
46
+ '-Wconversion',
47
+ '-Wnull-dereference',
48
+ '-Wdouble-promotion',
49
+ '-Wformat=2',
50
+ '-Wimplicit-fallthrough',
51
+ ]
52
+
35
53
 
36
54
  def apply_patch(patch_path):
37
55
  if OMIT_PATCHES:
@@ -123,6 +141,11 @@ class ClickHouseBuildExt(build_ext):
123
141
  # Temporary for debugging: some functions are missing from libdbms.a, this is in the private repo pmaster already so we should include it from the repo
124
142
  apply_patch("patches/dbmsfunctions.patch")
125
143
 
144
+ # Range-check narrow-integer Field inserts so JSON/Dynamic paths widen instead of
145
+ # silently wrapping (1944 -> -104). Backport of the ColumnVector::tryInsert fix;
146
+ # remove once the fix lands in the pinned ClickHouse submodule.
147
+ apply_patch("patches/ColumnVectorTryInsert.patch")
148
+
126
149
  if sys.platform == 'darwin':
127
150
  # We disable whole_archive options destined for AppleClang, which is unsupported but keeps being a PITA
128
151
  apply_patch("patches/darwin.patch")
@@ -276,10 +299,13 @@ class CustomBuildWithFromCH(build_ext):
276
299
  def cflags():
277
300
  cflags_list = CustomBuildWithFromCH.ninja_extractor_other('FLAGS')
278
301
  include_list = list(map(transform_path, CustomBuildWithFromCH.ninja_extractor_other('INCLUDES')))
279
- # Reduce the noise coming from python since those flags are added later as -I and not -isystem
280
- other_list = ['-Wno-reserved-identifier', '-Wno-zero-as-null-pointer-constant', '-Wno-old-style-cast',
281
- '-Wno-cast-function-type', '-Wno-unused-function', '-Wno-redundant-decls',
282
- '-Wno-missing-include-dirs']
302
+ # Replace -I with -isystem: these are external headers and we don't want to see warnings from them
303
+ include_list = [flag.replace('-I', '-isystem', 1) if flag.startswith('-I') else flag for flag in include_list]
304
+ # Remove -W flags, set our own warnings
305
+ cflags_list = [flag for flag in cflags_list if not flag.startswith('-W')]
306
+ other_list = CLANG_WARNINGS.copy()
307
+ other_list += ['-Werror'] # Treat warnings as errors
308
+
283
309
  if BUILD_FOR_VALGRIND:
284
310
  other_list += ['-g', '-gdwarf-4']
285
311
  elif DEBUG_SYMBOLS:
@@ -332,6 +358,10 @@ class CustomBuildWithFromCH(build_ext):
332
358
 
333
359
  # Remove -Wl,--no-undefined since Python symbols will undefined
334
360
  link_flags = filter(lambda flag: flag.find('--no-undefined') == -1, link_flags)
361
+ if sys.platform == 'darwin':
362
+ # -undefined dynamic_lookup (added in extra_libs) already permits all undefined
363
+ # symbols, so an explicit -Wl,-U,<symbol> is redundant and makes ld emit a warning.
364
+ link_flags = filter(lambda flag: not flag.startswith('-Wl,-U,'), link_flags)
335
365
  return " ".join(link_flags)
336
366
 
337
367
  @staticmethod
@@ -384,7 +414,11 @@ class CustomBuildWithFromCH(build_ext):
384
414
  linker = getattr(self.compiler, "linker_so_cxx")
385
415
  linker = [COMPILER_CC] + split_quoted(self.ldflags()) + linker[1:]
386
416
 
387
- compiler += ['-isystem', TOOLSET_PATH]
417
+ compiler += ['-I', TOOLSET_PATH]
418
+ # Make include_dirs (Python headers; set by setuptools) to -isystem: prevents warnings from Python headers
419
+ for d in self.include_dirs or []:
420
+ compiler += ['-isystem', d]
421
+ self.include_dirs = []
388
422
 
389
423
  self.compiler.set_executable("compiler_so", compiler)
390
424
  self.compiler.set_executable("compiler_so_cxx", compiler)
@@ -1,7 +1,7 @@
1
1
  from setuptools import setup, Extension
2
2
 
3
3
  NAME = 'tinybird-toolset'
4
- VERSION = '2.4.11'
4
+ VERSION = '2.4.14'
5
5
 
6
6
  try:
7
7
  from conf import *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tinybird-toolset
3
- Version: 2.4.11
3
+ Version: 2.4.14
4
4
  Home-page: https://gitlab.com/tinybird/clickhouse-toolset
5
5
  Author: Tinybird.co
6
6
  Author-email: support@tinybird.co
@@ -5134,6 +5134,43 @@ TEST_CASES = [
5134
5134
  b'\x00\x00L-100000000000000000000000000000000000000000000000000000000000000000000000000\x00\x01\x1dInvalid decimal string format\x00\x01\x05value\x01\x01',
5135
5135
  0, 1),
5136
5136
 
5137
+ # Booleans imported into Decimal must produce EXACTLY 1.0 and 0.0, without precision loss
5138
+ (ConversionMode.ONLY_LEGACY,
5139
+ [('t', 'Decimal32(4)', '$.t', False), ('f', 'Decimal32(4)', '$.f', False)],
5140
+ '{"t":true,"f":false}',
5141
+ b'\x00\x10\x27\x00\x00\x00\x00\x00\x00\x00',
5142
+ b'',
5143
+ 1, 0),
5144
+
5145
+ (ConversionMode.ONLY_LEGACY,
5146
+ [('t', 'Decimal64(8)', '$.t', False), ('f', 'Decimal64(8)', '$.f', False)],
5147
+ '{"t":true,"f":false}',
5148
+ b'\x00\x00\xe1\xf5\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
5149
+ b'',
5150
+ 1, 0),
5151
+
5152
+ (ConversionMode.ONLY_LEGACY,
5153
+ [('t', 'Decimal128(30)', '$.t', False), ('f', 'Decimal128(30)', '$.f', False)],
5154
+ '{"t":true,"f":false}',
5155
+ b'\x00\x00\x00\x00\x40\xea\xed\x74\x46\xd0\x9c\x2c\x9f\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
5156
+ b'',
5157
+ 1, 0),
5158
+
5159
+ (ConversionMode.ONLY_LEGACY,
5160
+ [('t', 'Decimal256(50)', '$.t', False), ('f', 'Decimal256(50)', '$.f', False)],
5161
+ '{"t":true,"f":false}',
5162
+ b'\x00\x00\x00\x00\x00\x00\x00\x64\xb5\xfd\x34\x05\xc4\xd2\x87\x66\x92\xf9\x15\x3b\x6c\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
5163
+ b'',
5164
+ 1, 0),
5165
+
5166
+ # Non-legacy mode rejects booleans imported into Decimal columns: the row is quarantined.
5167
+ (ConversionMode.ONLY_NONLEGACY,
5168
+ [('value', 'Decimal128(30)', '$.value', False)],
5169
+ '{"value": true}',
5170
+ b'',
5171
+ b"\x00\x00\x04true\x00\x01XInvalid value true for type 'Decimal(38, 30)' in column 'value' with jsonpath '$.value'.\x00\x01\x05value\x01\x01",
5172
+ 0, 1),
5173
+
5137
5174
  (ConversionMode.ALWAYS,
5138
5175
  [('value', 'FixedString(6)', '$.value', False)],
5139
5176
  '{}',
@@ -8309,20 +8346,22 @@ TEST_CASES = [
8309
8346
  1, 0),
8310
8347
 
8311
8348
 
8312
- # schemaless JSON encoded as string can choose too-narrow integer types and overflow values
8349
+ # schemaless JSON encoded as string widens too-narrow integer types instead of
8350
+ # overflowing: y=22 first pins the path to Int8, then y=220 widens it to Int16
8351
+ # rather than wrapping to -36 (CH-440, ColumnVector::tryInsert range check)
8313
8352
  (ConversionMode.ONLY_LEGACY,
8314
8353
  [('v', 'Map(String, JSON)', '$', False)],
8315
8354
  '{"a":{"x":11,"y":22},"b":{"x":110,"y":220}}',
8316
- b'\x00\x02\x01a\x0f{"x":11,"y":22}\x01b\x11{"x":110,"y":-36}',
8355
+ b'\x00\x02\x01a\x0f{"x":11,"y":22}\x01b\x11{"x":110,"y":220}',
8317
8356
  b'',
8318
8357
  1, 0),
8319
8358
  (ConversionMode.ONLY_LEGACY,
8320
8359
  [('json', 'Map(String, JSON)', "$", False)],
8321
8360
  '{"a":"{\\"x\\":11,\\"y\\":22}","b":"{\\"x\\":110,\\"y\\":220}"}',
8322
- b'\x00\x02\x01a\x0f{"x":11,"y":22}\x01b\x11{"x":110,"y":-36}',
8361
+ b'\x00\x02\x01a\x0f{"x":11,"y":22}\x01b\x11{"x":110,"y":220}',
8323
8362
  b'',
8324
8363
  1, 0),
8325
- # doesn't happen with binary JSON encoding
8364
+ # binary JSON encoding stores per-value type tags, so it already preserved the value
8326
8365
  (ConversionMode.ONLY_NONLEGACY,
8327
8366
  [('v', 'Map(String, JSON)', '$', False)],
8328
8367
  '{"a":{"x":11,"y":22},"b":{"x":110,"y":220}}',