Commit Graph

7 Commits

Author SHA1 Message Date
Azat Khuzhin
ec6bae2b2a Fix optimize_skip_unused_shards_rewrite_in for signed columns
Fixes: #35131
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-03-09 08:29:28 +03:00
Azat Khuzhin
d5cb792e9e Add conversion of values from IN section for optimize_skip_unused_shards_rewrite_in 2021-07-07 00:18:24 +03:00
Azat Khuzhin
a3add4f85f Fix optimize_skip_unused_shards_rewrite_in for non-UInt64 types
The following should happens before:
- incorrect shards was selected
- "Cannot infer type of an empty tuple" exception for empty tuple() for localhost
- "Function tuple requires at least one argument" exception for empty tuple() for remote node
2021-07-07 00:18:24 +03:00
Azat Khuzhin
57da47e1fd Refactor code around optimize_skip_unused_shards_rewrite_in a little 2021-07-07 00:17:39 +03:00
Azat Khuzhin
d476a4a9bd Add type conversion for optimize_skip_unused_shards_rewrite_in
MSan reports [1]:

    2021.04.17 15:20:06.665152 [ 56 ] {2336bf92-0269-4acd-8b3f-f09623223d18} <Debug> executeQuery: (from [::1]:44744, using production parser) SELECT * FROM dist_01757 WHERE dummy IN ('255', 0) FORMAT Null
    ...
    0 0x305af885 in (anonymous namespace)::shardContains() obj-x86_64-linux-gnu/../src/Interpreters/OptimizeShardingKeyRewriteInVisitor.cpp:50:28
    ...
    Uninitialized value was created by an allocation of 'sharding_value' in the stack frame of function '_ZN12_GLOBAL__N_113shardContainsERKN2DB5FieldERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS4_10shared_ptrINS0_17ExpressionActionsEEESC_RKNS0_7Cluster9ShardInfoERKNS4_6vectorImNS8_ImEEEE'
    0 0x305ae260 in (anonymous namespace)::shardContains() obj-x86_64-linux-gnu/../src/Interpreters/OptimizeShardingKeyRewriteInVisitor.cpp:42

  [1]: https://clickhouse-test-reports.s3.yandex.net/23212/d02eb3f6b7a8dc07bbed5605e1afcf7634436b3a/fuzzer_msan/report.html#fail1

P.S. fuzzers are great!
2021-04-19 00:03:38 +03:00
Azat Khuzhin
3f156b83c9 Add some comments in OptimizeShardingKeyRewriteInVisitor 2021-04-18 09:07:51 +03:00
Azat Khuzhin
fbb386dca5 Rewrite IN in query for remote shards to exclude values that does not belongs to shard
v2: fix optimize_skip_unused_shards_rewrite_in for sharding_key wrapped into function
v3: fix column name for optimize_skip_unused_shards_rewrite_in
v4: fix optimize_skip_unused_shards_rewrite_in with Null
v5:
- squash with Remove query argument for IStreamFactory::createForShard()
- use proper column after function execution (using sharding_key_column_name)
- update the test reference since (X) now is tuple(X)
2021-04-12 10:37:28 +03:00