| 416 | } |
| 417 | |
| 418 | void checkTypesOfMasks(const Block & block_left, const String & condition_name_left, |
| 419 | const Block & block_right, const String & condition_name_right) |
| 420 | { |
| 421 | auto check_cond_column_type = [](const Block & block, const String & col_name) |
| 422 | { |
| 423 | if (col_name.empty()) |
| 424 | return; |
| 425 | |
| 426 | DataTypePtr dtype = block.getByName(col_name).type; |
| 427 | |
| 428 | if (!dtype->canBeUsedInBooleanContext()) |
| 429 | throw Exception(ErrorCodes::INVALID_JOIN_ON_EXPRESSION, |
| 430 | "Expected logical expression in JOIN ON section, got unexpected column '{}' of type '{}'", |
| 431 | col_name, dtype->getName()); |
| 432 | }; |
| 433 | check_cond_column_type(block_left, condition_name_left); |
| 434 | check_cond_column_type(block_right, condition_name_right); |
| 435 | } |
| 436 | |
| 437 | void createMissedColumns(Block & block) |
| 438 | { |
no test coverage detected