Parsing baseline coverage from /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp//base_llvm_coverage.info ... 6760 files in baseline Parsing current coverage from /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp//llvm_coverage.info ... 6760 files in current Parsing second baseline coverage from /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp//base_llvm_coverage_2.info ... 6759 files in second baseline cross-validation enabled: requiring uncovered in both master baselines (142,077 candidate lines / 82,606 functions in B2) Overall coverage delta (current vs master baseline): Lines : +0.0306 pp (84.5899% -> 84.6205%, +286 covered) Functions: +0.0067 pp (91.3973% -> 91.4040%, +65 covered) Newly covered: 371 line(s), 22 function(s) across 148 file(s) All 148 file(s) with newly-covered code, ranked by line count: src/IO/S3/copyS3File.cpp: 10 line(s) src/Coordination/KeeperServer.cpp: 9 line(s), 1 function(s) src/Storages/StorageReplicatedMergeTree.cpp: 9 line(s) src/AggregateFunctions/AggregateFunctionQuantileExact.cpp: 8 line(s) src/Functions/array/FunctionArrayMapped.h: 8 line(s) src/Storages/MergeTree/DataPartStorageOnDiskBase.cpp: 8 line(s) src/Storages/MergeTree/ReplicatedMergeTreeSink.cpp: 8 line(s) src/Common/StringUtils.h: 7 line(s), 1 function(s) src/Common/ZooKeeper/ZooKeeperImpl.cpp: 7 line(s) src/Functions/FunctionGenerateRandomStructure.cpp: 7 line(s) src/Analyzer/Resolve/QueryAnalyzer.cpp: 6 line(s) src/Functions/printf.cpp: 6 line(s) src/Functions/transform.cpp: 6 line(s) src/Storages/ObjectStorageQueue/ObjectStorageQueueUnorderedFileMetadata.cpp: 6 line(s) programs/client/FuzzLoop.cpp: 5 line(s) src/AggregateFunctions/AggregateFunctionQuantileDD.cpp: 5 line(s) src/Functions/FunctionsBitmap.h: 5 line(s) src/Functions/structureToFormatSchema.cpp: 5 line(s) src/Functions/substring.cpp: 5 line(s) src/DataTypes/Serializations/SerializationFixedString.cpp: 4 line(s), 1 function(s) src/AggregateFunctions/AggregateFunctionQuantileExactLow.cpp: 4 line(s) src/AggregateFunctions/AggregateFunctionSumMap.cpp: 4 line(s) src/AggregateFunctions/TimeSeries/AggregateFunctionLast2Samples.cpp: 4 line(s) src/Functions/FunctionsEmbeddedDictionaries.h: 4 line(s) src/Functions/castOrDefault.cpp: 4 line(s) src/Functions/h3GetIndexesFromUnidirectionalEdge.cpp: 4 line(s) src/Functions/h3NumHexagons.cpp: 4 line(s) src/Functions/h3ToString.cpp: 4 line(s) src/IO/parseDateTimeBestEffort.cpp: 4 line(s) src/Interpreters/DDLWorker.cpp: 4 line(s) src/TableFunctions/TableFunctionGenerateSeries.cpp: 4 line(s) src/Functions/FunctionsNumericIndexedVector.h: 3 line(s), 3 function(s) base/base/scope_guard.h: 3 line(s), 1 function(s) src/Functions/formatRow.cpp: 3 line(s), 1 function(s) src/Storages/StorageAlias.h: 3 line(s), 1 function(s) src/AggregateFunctions/AggregateFunctionBoundingRatio.cpp: 3 line(s) src/Columns/ColumnVariant.cpp: 3 line(s) src/Common/ProgressIndication.cpp: 3 line(s) src/Common/threadPoolCallbackRunner.h: 3 line(s) src/Functions/FunctionChar.cpp: 3 line(s) src/Functions/FunctionSQLJSON.h: 3 line(s) src/Functions/FunctionsExternalDictionaries.h: 3 line(s) src/Functions/UniqTheta/FunctionsUniqTheta.h: 3 line(s) src/Functions/array/arrayEnumerateExtended.h: 3 line(s) src/Functions/array/arraySlice.cpp: 3 line(s) src/Functions/array/arrayUniq.cpp: 3 line(s) src/Functions/date_trunc.cpp: 3 line(s) src/Functions/finalizeAggregation.cpp: 3 line(s) src/Interpreters/FileCache/EvictionCandidates.cpp: 3 line(s) src/Planner/CollectTableExpressionData.cpp: 3 line(s) src/Processors/Transforms/TTLCalcTransform.cpp: 3 line(s) src/Processors/Transforms/WindowTransform.cpp: 3 line(s) src/Storages/System/StorageSystemParts.cpp: 3 line(s) src/BridgeHelper/XDBCBridgeHelper.h: 2 line(s), 2 function(s) src/Common/Scheduler/CPUSlotsAllocation.cpp: 2 line(s), 1 function(s) src/Functions/randDistribution.cpp: 2 line(s), 1 function(s) base/base/BorrowedObjectPool.h: 2 line(s) src/AggregateFunctions/AggregateFunctionCategoricalInformationValue.cpp: 2 line(s) src/AggregateFunctions/AggregateFunctionDistinctDynamicTypes.cpp: 2 line(s) src/AggregateFunctions/AggregateFunctionGroupArrayMoving.cpp: 2 line(s) src/AggregateFunctions/AggregateFunctionGroupNumericIndexedVector.cpp: 2 line(s) src/AggregateFunctions/AggregateFunctionQuantileTDigestWeighted.cpp: 2 line(s) src/AggregateFunctions/AggregateFunctionStatisticsSimple.h: 2 line(s) src/AggregateFunctions/AggregateFunctionUniq.cpp: 2 line(s) src/Common/Scheduler/Nodes/CustomResourceManager.cpp: 2 line(s) src/Common/SystemLogBase.cpp: 2 line(s) src/Common/atomicRename.cpp: 2 line(s) src/Functions/CastOverloadResolver.cpp: 2 line(s) src/Functions/FunctionsCodingIP.cpp: 2 line(s) src/Functions/FunctionsConversion.cpp: 2 line(s) src/Functions/FunctionsConversion.h: 2 line(s) src/Functions/Kusto/KqlArraySort.cpp: 2 line(s) src/Functions/LeftRight.h: 2 line(s) src/Functions/dateDiff.cpp: 2 line(s) src/Functions/obfuscateQuery.cpp: 2 line(s) src/IO/Archives/ZipArchiveReader.cpp: 2 line(s) src/Interpreters/Aggregator.cpp: 2 line(s) src/Interpreters/InsertDependenciesBuilder.cpp: 2 line(s) src/Parsers/ExpressionElementParsers.cpp: 2 line(s) src/Processors/QueryPlan/Optimizations/optimizeReadInOrder.cpp: 2 line(s) src/Processors/Transforms/MergeJoinTransform.cpp: 2 line(s) src/Storages/MergeTree/Compaction/MergePredicates/ReplicatedMergeTreeMergePredicate.cpp: 2 line(s) src/Storages/MergeTree/EphemeralLockInZooKeeper.cpp: 2 line(s) src/Storages/MergeTree/ReplicatedMergeTreeCleanupThread.cpp: 2 line(s) src/Storages/StorageDistributed.cpp: 2 line(s) src/Columns/ColumnBLOB.h: 1 line(s), 1 function(s) src/Columns/ColumnReplicated.h: 1 line(s), 1 function(s) src/Functions/addressToLineWithInlines.cpp: 1 line(s), 1 function(s) src/Functions/ifNull.cpp: 1 line(s), 1 function(s) src/Functions/patchPartitionID.cpp: 1 line(s), 1 function(s) src/Functions/reverse.cpp: 1 line(s), 1 function(s) src/Functions/yesterday.cpp: 1 line(s), 1 function(s) src/Storages/MergeTree/MergeTreeReadPoolParallelReplicas.h: 1 line(s), 1 function(s) src/TableFunctions/ITableFunctionXDBC.cpp: 1 line(s), 1 function(s) programs/server/Server.cpp: 1 line(s) src/Access/EnabledQuota.cpp: 1 line(s) src/AggregateFunctions/AggregateFunctionGroupConcat.cpp: 1 line(s) src/AggregateFunctions/AggregateFunctionQuantileBFloat16Weighted.cpp: 1 line(s) src/AggregateFunctions/AggregateFunctionStudentTTestOneSample.cpp: 1 line(s) src/AggregateFunctions/AggregateFunctionUniqCombined.cpp: 1 line(s) src/BridgeHelper/IBridgeHelper.cpp: 1 line(s) src/Columns/ColumnReplicated.cpp: 1 line(s) src/Columns/validateColumnType.cpp: 1 line(s) src/Common/AsyncLoader.cpp: 1 line(s) src/Common/Elf.cpp: 1 line(s) src/Common/FailPoint.cpp: 1 line(s) src/Common/Macros.cpp: 1 line(s) src/Common/RWLock.cpp: 1 line(s) src/Common/UDFProcessSubtreeSampler.cpp: 1 line(s) src/DataTypes/Serializations/SerializationSubObjectSharedData.cpp: 1 line(s) src/Disks/DiskObjectStorage/MetadataStorages/Plain/MetadataStorageFromPlainObjectStorage.cpp: 1 line(s) src/Disks/IO/AsynchronousBoundedReadBuffer.cpp: 1 line(s) src/Disks/IO/CachedOnDiskReadBufferFromFile.cpp: 1 line(s) src/Disks/createVolume.cpp: 1 line(s) src/Functions/FunctionUnaryArithmetic.h: 1 line(s) src/Functions/FunctionsJSON.cpp: 1 line(s) src/Functions/JSONPaths.cpp: 1 line(s) src/Functions/array/arrayConcat.cpp: 1 line(s) src/Functions/array/arrayShiftRotate.cpp: 1 line(s) src/Functions/caseWithExpression.cpp: 1 line(s) src/Functions/getMacro.cpp: 1 line(s) src/Functions/readWkb.cpp: 1 line(s) src/Functions/readWkt.cpp: 1 line(s) src/IO/AzureBlobStorage/PocoHTTPClient.cpp: 1 line(s) src/IO/PipelineReadBuffer.cpp: 1 line(s) src/Interpreters/Access/InterpreterShowCreateAccessEntityQuery.cpp: 1 line(s) src/Interpreters/DDLTask.cpp: 1 line(s) src/Interpreters/RewriteSumFunctionWithSumAndCountVisitor.cpp: 1 line(s) src/Interpreters/SystemLog.cpp: 1 line(s) src/Loggers/OwnSplitChannel.cpp: 1 line(s) src/Parsers/ASTFunction.cpp: 1 line(s) src/Parsers/ParserPartition.cpp: 1 line(s) src/Processors/Formats/Impl/ConstantExpressionTemplate.cpp: 1 line(s) src/Processors/Formats/Impl/Parquet/Decoding.cpp: 1 line(s) src/Processors/Formats/Impl/Parquet/Reader.cpp: 1 line(s) src/Processors/QueryPlan/Optimizations/optimizeJoin.cpp: 1 line(s) src/Processors/QueryPlan/ReadFromSystemNumbersStep.cpp: 1 line(s) src/Server/KeeperTCPHandler.cpp: 1 line(s) src/Storages/MergeTree/KeyCondition.cpp: 1 line(s) src/Storages/MergeTree/MergeTreeData.cpp: 1 line(s) src/Storages/ObjectStorage/StorageObjectStorage.cpp: 1 line(s) src/Storages/ObjectStorageQueue/ObjectStorageQueueMetadata.cpp: 1 line(s) src/Storages/Statistics/Statistics.cpp: 1 line(s) src/Storages/StorageFile.cpp: 1 line(s) src/Storages/StreamingStorageRegistry.cpp: 1 line(s) src/Storages/System/StorageSystemDroppedTablesParts.cpp: 1 line(s) src/TableFunctions/TableFunctionLoop.cpp: 1 line(s) src/TableFunctions/TableFunctionMergeTreeAnalyzeIndexes.cpp: 1 line(s) Newly covered code (with context): ================================================================================ src/IO/S3/copyS3File.cpp ================================================================================ --- newly covered block 514-514 --- 512 | } 513 | >> 514 | if (outcome.GetError().GetExceptionName() == "EntityTooLarge" || outcome.GetError().GetExceptionName() == "InvalidRequest") 515 | { 516 | // Can't come here with MinIO, MinIO allows single part upload for large objects. --- newly covered block 528-528 --- 526 | } 527 | >> 528 | if ((outcome.GetError().GetErrorType() == Aws::S3::S3Errors::NO_SUCH_KEY) && (retries < max_retries)) 529 | { 530 | /// For unknown reason, at least MinIO can respond with NO_SUCH_KEY for put requests --- newly covered block 539-546 --- 537 | continue; /// will retry 538 | } >> 539 | ProfileEvents::increment(ProfileEvents::WriteBufferFromS3RequestsErrors, 1); >> 540 | throw S3Exception( >> 541 | outcome.GetError().GetErrorType(), >> 542 | "Message: {}, Key: {}, Bucket: {}, Object size: {}", >> 543 | outcome.GetError().GetMessage(), >> 544 | dest_key, >> 545 | dest_bucket, >> 546 | request.GetContentLength()); 547 | } 548 | } ================================================================================ src/Coordination/KeeperServer.cpp ================================================================================ --- newly covered block 933-933 --- 931 | { 932 | if (entry && entry->get_val_type() == nuraft::log_val_type::app_log) >> 933 | state_machine->pre_commit(idx, entry->get_buf()); 934 | 935 | ++idx; --- newly covered block 1008-1008 --- 1006 | /// to the last common log index from leader 1007 | if (req.get_last_log_idx() < last_log_idx_on_disk) >> 1008 | last_log_idx_on_disk = req.get_last_log_idx(); 1009 | 1010 | /// if local logs detects invalid entry from leader we don't want to allow --- newly covered block 1396-1396 --- 1394 | { 1395 | if (raft_instance->get_srv_config(add->id) != nullptr) >> 1396 | return applied(); 1397 | if (isLeader()) 1398 | return became_leader(); --- newly covered block 1402-1410 --- 1400 | } 1401 | } >> 1402 | else if (const auto* remove = std::get_if(&action)) 1403 | { >> 1404 | for (size_t i = 0; i < coordination_settings[CoordinationSetting::configuration_change_tries_count] && !is_recovering; ++i) 1405 | { >> 1406 | if (raft_instance->get_srv_config(remove->id) == nullptr) >> 1407 | return applied(); >> 1408 | if (isLeader()) 1409 | return became_leader(); >> 1410 | backoff(i); 1411 | } 1412 | } ================================================================================ src/Storages/StorageReplicatedMergeTree.cpp ================================================================================ --- newly covered block 1282-1284 --- 1280 | 1281 | if (!zookeeper->tryGet(zookeeper_path + "/replicas", replicas_value, &replicas_stat)) >> 1282 | throw Exception(ErrorCodes::ALL_REPLICAS_LOST, >> 1283 | "Cannot create a replica of the table {}, because the last replica of the table was dropped right now", >> 1284 | zookeeper_path); 1285 | 1286 | /// It is not the first replica, we will mark it as "lost", to immediately repair (clone) from existing replica. --- newly covered block 4028-4029 --- 4026 | if (get_is_lost.error != Coordination::Error::ZOK) 4027 | { >> 4028 | LOG_INFO(log, "Not cloning {}, cannot get '/is_lost': {}", source_replica_name, get_is_lost.error); >> 4029 | continue; 4030 | } 4031 | if (get_is_lost.data != "0") --- newly covered block 7490-7490 --- 7488 | zookeeper_table_path = zookeeper_path; 7489 | else >> 7490 | zookeeper_table_path = zookeeper_path_prefix; 7491 | 7492 | String block_numbers_path = fs::path(zookeeper_table_path) / "block_numbers"; --- newly covered block 8779-8783 --- 8777 | else 8778 | { >> 8779 | if (parts_should_be_retried) 8780 | parts_should_be_retried->insert(part_names[i]); 8781 | >> 8782 | if (!Coordination::isHardwareError(response.error)) >> 8783 | LOG_WARNING(log, "Cannot remove part {} from ZooKeeper: {}", part_names[i], Coordination::errorMessage(response.error)); 8784 | } 8785 | } ================================================================================ src/AggregateFunctions/AggregateFunctionQuantileExact.cpp ================================================================================ --- newly covered block 47-56 --- 45 | if (which.idx == TypeIndex::Decimal64) return std::make_shared>(argument_types, params); 46 | if (which.idx == TypeIndex::Decimal128) return std::make_shared>(argument_types, params); >> 47 | if (which.idx == TypeIndex::Decimal256) return std::make_shared>(argument_types, params); >> 48 | if (which.idx == TypeIndex::DateTime64) return std::make_shared>(argument_types, params); 49 | >> 50 | if (which.idx == TypeIndex::Int128) return std::make_shared>(argument_types, params); >> 51 | if (which.idx == TypeIndex::UInt128) return std::make_shared>(argument_types, params); >> 52 | if (which.idx == TypeIndex::Int256) return std::make_shared>(argument_types, params); >> 53 | if (which.idx == TypeIndex::UInt256) return std::make_shared>(argument_types, params); 54 | >> 55 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument for aggregate function {}", >> 56 | argument_type->getName(), name); 57 | } 58 | ================================================================================ src/Functions/array/FunctionArrayMapped.h ================================================================================ --- newly covered block 185-192 --- 183 | 184 | if (!array_type) >> 185 | throw Exception( >> 186 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 187 | "The {}{}{} argument for function {} must be array. Found {} instead", >> 188 | num_fixed_params + 1, >> 189 | getOrdinalSuffix(num_fixed_params + 1), >> 190 | (num_fixed_params == 0 ? " and only" : ""), >> 191 | getName(), >> 192 | arguments[num_fixed_params].type->getName()); 193 | 194 | if constexpr (num_fixed_params) ================================================================================ src/Storages/MergeTree/DataPartStorageOnDiskBase.cpp ================================================================================ --- newly covered block 735-743 --- 733 | if (disk->existsDirectory(to)) 734 | { >> 735 | LOG_WARNING(log, "Directory {} (to which part must be renamed before removing) already exists. " >> 736 | "Most likely this is due to unclean restart or race condition. Removing it.", fullPath(disk, to)); >> 737 | try 738 | { >> 739 | can_remove_description.emplace(can_remove_callback()); >> 740 | disk->removeSharedRecursive( >> 741 | fs::path(to) / "", !can_remove_description->can_remove_anything, can_remove_description->files_not_to_remove); 742 | } >> 743 | catch (const fs::filesystem_error & e) 744 | { 745 | if (e.code() == std::errc::no_such_file_or_directory) --- newly covered block 752-752 --- 750 | throw; 751 | } >> 752 | catch (...) 753 | { 754 | LOG_ERROR( ================================================================================ src/Storages/MergeTree/ReplicatedMergeTreeSink.cpp ================================================================================ --- newly covered block 625-631 --- 623 | if (deduplicate && deduplicated) 624 | { >> 625 | error = ErrorCodes::INSERT_WAS_DEDUPLICATED; >> 626 | error_message = "The part was deduplicated"; 627 | >> 628 | const auto & relative_path = part->getDataPartStorage().getRelativePath(); >> 629 | const auto part_dir = fs::path(relative_path).parent_path().filename().string(); 630 | >> 631 | if (relative_path.ends_with("detached/attaching_" + part->name + "/")) 632 | { 633 | /// Part came from ATTACH PART - rename back to detached/ (remove attaching_ prefix) --- newly covered block 637-642 --- 635 | part->renameTo(new_relative_path, false); 636 | } >> 637 | else if (part_dir.starts_with("tmp_restore_" + part->name)) 638 | { 639 | /// Part came from RESTORE with a temporary directory. 640 | /// Just remove the temporary part since it's a duplicate. >> 641 | LOG_DEBUG(log, "Removing deduplicated part {} from temporary path {}", part->name, relative_path); >> 642 | part->removeIfNeeded(); 643 | } 644 | else ================================================================================ src/Common/StringUtils.h ================================================================================ --- newly covered block 48-59 --- 46 | std::string getOrdinalSuffix(T n) 47 | { >> 48 | static_assert(std::is_integral_v && std::is_unsigned_v, >> 49 | "Unsigned integer value required"); 50 | >> 51 | const auto last_digit = n % 10; 52 | >> 53 | if ((last_digit < 1 || last_digit > 3) >> 54 | || ((n > 10) && (((n / 10) % 10) == 1))) 55 | return "th"; 56 | >> 57 | switch (last_digit) 58 | { >> 59 | case 1: return "st"; 60 | case 2: return "nd"; 61 | case 3: return "rd"; ================================================================================ src/Common/ZooKeeper/ZooKeeperImpl.cpp ================================================================================ --- newly covered block 1501-1509 --- 1499 | if (info.watch) 1500 | { >> 1501 | WatchResponse response; >> 1502 | response.type = SESSION; >> 1503 | response.state = EXPIRED_SESSION; >> 1504 | response.error = Error::ZSESSIONEXPIRED; >> 1505 | try 1506 | { >> 1507 | triggerWatchCallback(info.watch, response); 1508 | } >> 1509 | catch (...) 1510 | { 1511 | tryLogCurrentException(log); ================================================================================ src/Functions/FunctionGenerateRandomStructure.cpp ================================================================================ --- newly covered block 219-227 --- 217 | writeString("FixedString(" + std::to_string(rng() % MAX_FIXEDSTRING_SIZE_WITHOUT_SUSPICIOUS + 1) + ")", buf); 218 | break; >> 219 | case TypeIndex::LowCardinality: >> 220 | writeCString("LowCardinality(", buf); 221 | /// Map key supports only String and FixedString inside LowCardinality. >> 222 | if (rng() % 2) 223 | writeCString("String", buf); 224 | else >> 225 | writeString("FixedString(" + std::to_string(rng() % MAX_FIXEDSTRING_SIZE_WITHOUT_SUSPICIOUS + 1) + ")", buf); >> 226 | writeChar(')', buf); >> 227 | break; 228 | case TypeIndex::Enum8: 229 | writeCString("Enum8(", buf); --- newly covered block 415-415 --- 413 | pcg64 rng(seed); 414 | if (number_of_columns == 0) >> 415 | number_of_columns = generateNumberOfColumns(rng); 416 | 417 | auto col_res = ColumnString::create(); ================================================================================ src/Analyzer/Resolve/QueryAnalyzer.cpp ================================================================================ --- newly covered block 2889-2894 --- 2887 | size_t arguments_size = lambda_arguments.size(); 2888 | if (lambda_arguments_nodes_size != arguments_size) >> 2889 | throw Exception(ErrorCodes::BAD_ARGUMENTS, >> 2890 | "Lambda {} expect {} arguments. Actual: {}. In scope {}", >> 2891 | lambda_to_resolve.formatASTForErrorMessage(), >> 2892 | lambda_arguments_nodes_size, >> 2893 | arguments_size, >> 2894 | scope.scope_node->formatASTForErrorMessage()); 2895 | 2896 | /// Initialize aliases in lambda scope ================================================================================ src/Functions/printf.cpp ================================================================================ --- newly covered block 488-493 --- 486 | /// Check if all arguments are used 487 | if (idx != arguments.size()) >> 488 | throw Exception( >> 489 | ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 490 | "Number of arguments for function {} doesn't match: passed {}, but format is {}", >> 491 | getName(), >> 492 | arguments.size(), >> 493 | format); 494 | 495 | return instructions; ================================================================================ src/Functions/transform.cpp ================================================================================ --- newly covered block 864-869 --- 862 | const auto args_size = arguments.size(); 863 | if (args_size != 3 && args_size != 4) >> 864 | throw Exception( >> 865 | ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 866 | "Number of arguments for function {} doesn't match: " >> 867 | "passed {}, should be 3 or 4", >> 868 | getName(), >> 869 | args_size); 870 | 871 | const DataTypePtr & type_x = arguments[0]; ================================================================================ src/Storages/ObjectStorageQueue/ObjectStorageQueueUnorderedFileMetadata.cpp ================================================================================ --- newly covered block 91-93 --- 89 | if (data == processor_info) 90 | { >> 91 | LOG_TRACE(log, "Considering operation as succeeded"); >> 92 | code = Coordination::Error::ZOK; >> 93 | return; 94 | } 95 | } --- newly covered block 110-110 --- 108 | 109 | if (has_request_failed(result.processed_path_doesnt_exist_idx)) >> 110 | return {false, FileStatus::State::Processed}; 111 | 112 | if (has_request_failed(result.failed_path_doesnt_exist_idx)) --- newly covered block 118-120 --- 116 | return {false, FileStatus::State::Processing}; 117 | >> 118 | throw Exception( 119 | ErrorCodes::LOGICAL_ERROR, >> 120 | "Failed to set file processing, last error: {}", code); 121 | } 122 | ================================================================================ programs/client/FuzzLoop.cpp ================================================================================ --- newly covered block 129-129 --- 127 | if (have_error) 128 | { >> 129 | fmt::print(stderr, "Error on processing query '{}': {}\n", parsed_query->formatForErrorMessage(), exception->message()); 130 | } 131 | return tryToReconnect(1, 10); --- newly covered block 422-425 --- 420 | // Also discard the exception that we now know to be non-fatal, 421 | // so that it doesn't influence the exit code. >> 422 | server_exception.reset(); >> 423 | client_exception.reset(); >> 424 | fuzzer.notifyQueryFailed(ast_to_process); >> 425 | have_error = false; 426 | } 427 | else if (ast_to_process->formatForErrorMessage().size() > 2000) ================================================================================ src/AggregateFunctions/AggregateFunctionQuantileDD.cpp ================================================================================ --- newly covered block 40-45 --- 38 | if (which.idx == TypeIndex::TYPE) return std::make_shared>(argument_types, params); 39 | FOR_BASIC_NUMERIC_TYPES(DISPATCH) >> 40 | #undef DISPATCH >> 41 | if (which.idx == TypeIndex::Date) return std::make_shared>(argument_types, params); >> 42 | if (which.idx == TypeIndex::DateTime) return std::make_shared>(argument_types, params); 43 | >> 44 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument for aggregate function {}", >> 45 | argument_type->getName(), name); 46 | } 47 | ================================================================================ src/Functions/FunctionsBitmap.h ================================================================================ --- newly covered block 183-184 --- 181 | if (which.isInt64()) 182 | return executeBitmapData(argument_types, arguments, input_rows_count); >> 183 | throw Exception( >> 184 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Unexpected type {} of argument of function {}", from_type->getName(), getName()); 185 | } 186 | --- newly covered block 687-689 --- 685 | const auto * bitmap_type = typeid_cast(arguments[0].get()); 686 | if (!(bitmap_type && bitmap_type->getFunctionName() == "groupBitmap")) >> 687 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 688 | "First argument for function {} must be a bitmap but it has type {}.", >> 689 | getName(), arguments[0]->getName()); 690 | return std::make_shared>(); 691 | } ================================================================================ src/Functions/structureToFormatSchema.cpp ================================================================================ --- newly covered block 68-72 --- 66 | if (!isString(arguments[0])) 67 | { >> 68 | throw Exception( >> 69 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 70 | "Illegal type {} of the first argument of function {}, expected constant string", >> 71 | arguments[0]->getName(), >> 72 | getName()); 73 | } 74 | ================================================================================ src/Functions/substring.cpp ================================================================================ --- newly covered block 52-53 --- 50 | 51 | if (number_of_arguments < 2 || number_of_arguments > 3) >> 52 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Number of arguments for function {} doesn't match: " >> 53 | "passed {}, should be 2 or 3", getName(), number_of_arguments); 54 | 55 | if (is_utf8) --- newly covered block 66-68 --- 64 | { 65 | if (!isStringOrFixedString(arguments[0]) && !isEnum(arguments[0])) >> 66 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 67 | "Illegal type {} of first argument of function {}, expected String, FixedString or Enum", >> 68 | arguments[0]->getName(), getName()); 69 | } 70 | ================================================================================ src/DataTypes/Serializations/SerializationFixedString.cpp ================================================================================ --- newly covered block 63-66 --- 61 | void SerializationFixedString::deserializeBinary(Field & field, ReadBuffer & istr, const FormatSettings &) const 62 | { >> 63 | field = String(); >> 64 | String & s = field.safeGet(); >> 65 | s.resize(n); >> 66 | istr.readStrict(s.data(), n); 67 | } 68 | ================================================================================ src/AggregateFunctions/AggregateFunctionQuantileExactLow.cpp ================================================================================ --- newly covered block 46-50 --- 44 | if (which.idx == TypeIndex::Decimal64) return std::make_shared>(argument_types, params); 45 | if (which.idx == TypeIndex::Decimal128) return std::make_shared>(argument_types, params); >> 46 | if (which.idx == TypeIndex::Decimal256) return std::make_shared>(argument_types, params); >> 47 | if (which.idx == TypeIndex::DateTime64) return std::make_shared>(argument_types, params); 48 | >> 49 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument for aggregate function {}", >> 50 | argument_type->getName(), name); 51 | } 52 | ================================================================================ src/AggregateFunctions/AggregateFunctionSumMap.cpp ================================================================================ --- newly covered block 373-375 --- 371 | value = DecimalField(source.getValue(), source.getScale()); 372 | } >> 373 | else if (value_type.isDecimal64()) 374 | { >> 375 | value = DecimalField(source.getValue(), source.getScale()); 376 | } 377 | } --- newly covered block 770-771 --- 768 | const auto * array_type = checkAndGetDataType(args[0].get()); 769 | if (!array_type) >> 770 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Argument #1 for function {} must be an array, not {}", >> 771 | name, args[0]->getName()); 772 | 773 | DataTypePtr keys_type = array_type->getNestedType(); ================================================================================ src/AggregateFunctions/TimeSeries/AggregateFunctionLast2Samples.cpp ================================================================================ --- newly covered block 85-88 --- 83 | { 84 | if (settings && (*settings)[Setting::allow_experimental_time_series_aggregate_functions] == 0) >> 85 | throw Exception( >> 86 | ErrorCodes::UNKNOWN_AGGREGATE_FUNCTION, >> 87 | "Aggregate function {} is experimental and disabled by default. Enable it with setting allow_experimental_time_series_aggregate_functions", >> 88 | name); 89 | 90 | assertBinary(name, argument_types); ================================================================================ src/Functions/FunctionsEmbeddedDictionaries.h ================================================================================ --- newly covered block 163-164 --- 161 | 162 | if (arguments[0]->getName() != TypeName) >> 163 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument of function {} (must be {})", >> 164 | arguments[0]->getName(), getName(), TypeName); 165 | 166 | if (arguments.size() == 2 && arguments[1]->getName() != "String") --- newly covered block 386-387 --- 384 | 385 | if (arguments[0]->getName() != TypeName) >> 386 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument of function {} (must be {})", >> 387 | arguments[0]->getName(), getName(), TypeName); 388 | 389 | if (arguments.size() == 2 && arguments[1]->getName() != "String") ================================================================================ src/Functions/castOrDefault.cpp ================================================================================ --- newly covered block 76-79 --- 74 | 75 | if (!type_column_typed) >> 76 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 77 | "Second argument to {} must be a constant string describing type. Actual {}", >> 78 | getName(), >> 79 | arguments[1].type->getName()); 80 | 81 | DataTypePtr result_type = DataTypeFactory::instance().get(type_column_typed->getValue()); ================================================================================ src/Functions/h3GetIndexesFromUnidirectionalEdge.cpp ================================================================================ --- newly covered block 48-51 --- 46 | const auto * arg = arguments[0].get(); 47 | if (!WhichDataType(arg).isUInt64()) >> 48 | throw Exception( >> 49 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 50 | "Illegal type {} of argument {} of function {}. Must be UInt64", >> 51 | arg->getName(), 1, getName()); 52 | 53 | return std::make_shared( ================================================================================ src/Functions/h3NumHexagons.cpp ================================================================================ --- newly covered block 44-47 --- 42 | const auto * arg = arguments[0].get(); 43 | if (!WhichDataType(arg).isUInt8()) >> 44 | throw Exception( >> 45 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 46 | "Illegal type {} of argument {} of function {}. Must be UInt8", >> 47 | arg->getName(), 1, getName()); 48 | 49 | return std::make_shared(); ================================================================================ src/Functions/h3ToString.cpp ================================================================================ --- newly covered block 44-47 --- 42 | const auto * arg = arguments[0].get(); 43 | if (!WhichDataType(arg).isUInt64()) >> 44 | throw Exception( >> 45 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 46 | "Illegal type {} of argument {} of function {}. Must be UInt64", >> 47 | arg->getName(), 1, getName()); 48 | 49 | return std::make_shared(); ================================================================================ src/IO/parseDateTimeBestEffort.cpp ================================================================================ --- newly covered block 556-559 --- 554 | } 555 | else >> 556 | return on_error( >> 557 | ErrorCodes::CANNOT_PARSE_DATETIME, >> 558 | "Cannot read DateTime: unexpected number of decimal digits after day of month and month: {}", >> 559 | num_digits); 560 | } 561 | } ================================================================================ src/Interpreters/DDLWorker.cpp ================================================================================ --- newly covered block 1116-1116 --- 1114 | return; 1115 | >> 1116 | if (is_currently_deleting) 1117 | { 1118 | cleanup_event->set(); --- newly covered block 1124-1125 --- 1122 | 1123 | /// Connection lost or entry was removed >> 1124 | chassert(Coordination::isHardwareError(code) || code == Coordination::Error::ZNONODE); >> 1125 | zkutil::KeeperMultiException::check(code, ops, responses); 1126 | } 1127 | --- newly covered block 1224-1224 --- 1222 | catch (...) 1223 | { >> 1224 | tryLogCurrentException(log, "Cannot initialize DDL queue."); 1225 | } 1226 | ================================================================================ src/TableFunctions/TableFunctionGenerateSeries.cpp ================================================================================ --- newly covered block 129-132 --- 127 | Field converted = convertFieldToType(field, DataTypeUInt64()); 128 | if (converted.isNull()) >> 129 | throw Exception( >> 130 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 131 | "The value {} is not representable as UInt64", >> 132 | applyVisitor(FieldVisitorToString(), field)); 133 | 134 | return converted.safeGet(); ================================================================================ src/Functions/FunctionsNumericIndexedVector.h ================================================================================ --- newly covered block 627-633 --- 625 | static FunctionPtr create(ContextPtr) { return std::make_shared(); } 626 | >> 627 | String getName() const override { return name; } 628 | >> 629 | bool isVariadic() const override { return false; } 630 | 631 | bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & /*arguments*/) const override { return true; } 632 | >> 633 | size_t getNumberOfArguments() const override { return 2; } 634 | 635 | DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override ================================================================================ base/base/scope_guard.h ================================================================================ --- newly covered block 81-84 --- 79 | if (function) 80 | { >> 81 | function = [x = std::make_shared>(std::move(function), other.release())]() 82 | { >> 83 | std::move(x->first)(); >> 84 | std::move(x->second)(); 85 | }; 86 | } ================================================================================ src/Functions/formatRow.cpp ================================================================================ --- newly covered block 127-127 --- 125 | } 126 | >> 127 | String getName() const override { return function_name; } 128 | bool isVariadic() const override { return true; } 129 | size_t getNumberOfArguments() const override { return 0; } --- newly covered block 136-137 --- 134 | { 135 | if (arguments.size() < 2) >> 136 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 137 | "Function {} requires at least two arguments: the format name and its output expression(s)", getName()); 138 | 139 | Names arguments_column_names; ================================================================================ src/Storages/StorageAlias.h ================================================================================ --- newly covered block 266-270 --- 264 | std::optional tryGetColumnSizes() const override 265 | { >> 266 | auto target = tryGetTargetTable(); >> 267 | if (!target) 268 | return std::nullopt; 269 | >> 270 | return target->getColumnSizes(); 271 | } 272 | ================================================================================ src/AggregateFunctions/AggregateFunctionBoundingRatio.cpp ================================================================================ --- newly covered block 151-153 --- 149 | 150 | if (!x_arg->isValueRepresentedByNumber() || !y_arg->isValueRepresentedByNumber()) >> 151 | throw Exception(ErrorCodes::BAD_ARGUMENTS, >> 152 | "Illegal types of arguments of aggregate function {}, must have number representation.", >> 153 | getName()); 154 | } 155 | ================================================================================ src/Columns/ColumnVariant.cpp ================================================================================ --- newly covered block 1493-1497 --- 1491 | if (direction == IColumn::PermutationSortDirection::Ascending && stability == IColumn::PermutationSortStability::Unstable) 1492 | updatePermutationImpl(limit, res, equal_ranges, ComparatorAscendingUnstable(*this, nan_direction_hint), comparator_equal, DefaultSort(), DefaultPartialSort()); >> 1493 | else if (direction == IColumn::PermutationSortDirection::Ascending && stability == IColumn::PermutationSortStability::Stable) 1494 | updatePermutationImpl(limit, res, equal_ranges, ComparatorAscendingStable(*this, nan_direction_hint), comparator_equal, DefaultSort(), DefaultPartialSort()); >> 1495 | else if (direction == IColumn::PermutationSortDirection::Descending && stability == IColumn::PermutationSortStability::Unstable) 1496 | updatePermutationImpl(limit, res, equal_ranges, ComparatorDescendingUnstable(*this, nan_direction_hint), comparator_equal, DefaultSort(), DefaultPartialSort()); >> 1497 | else if (direction == IColumn::PermutationSortDirection::Descending && stability == IColumn::PermutationSortStability::Stable) 1498 | updatePermutationImpl(limit, res, equal_ranges, ComparatorDescendingStable(*this, nan_direction_hint), comparator_equal, DefaultSort(), DefaultPartialSort()); 1499 | } ================================================================================ src/Common/ProgressIndication.cpp ================================================================================ --- newly covered block 258-260 --- 256 | /// Render profiling_msg at left on top of the progress bar. 257 | >> 258 | message << "\033[30;42m" << profiling_msg << "\033[0m" >> 259 | << "\033[0;32m" << bar.substr(profiling_msg.size() * UNICODE_BAR_CHAR_SIZE) << "\033[0m" >> 260 | << std::string(width_of_progress_bar - bar_width_in_terminal, ' '); 261 | } 262 | else ================================================================================ src/Common/threadPoolCallbackRunner.h ================================================================================ --- newly covered block 210-211 --- 208 | if (!task->state.compare_exchange_strong(expected, RUNNING)) 209 | { >> 210 | if (expected == CANCELLED) >> 211 | return; 212 | throw Exception(ErrorCodes::LOGICAL_ERROR, "Unexpected state {} when running a task in {}", expected, thread_name); 213 | } --- newly covered block 255-255 --- 253 | /// It can be cancelled only when waiting in dtor 254 | if (state == CANCELLED) >> 255 | continue; 256 | if (task->future.valid()) 257 | task->future.wait(); ================================================================================ src/Functions/FunctionChar.cpp ================================================================================ --- newly covered block 46-48 --- 44 | WhichDataType which(arg); 45 | if (!(which.isInt() || which.isUInt() || which.isFloat())) >> 46 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 47 | "Illegal type {} of argument of function {}, must be Int, UInt or Float number", >> 48 | arg->getName(), getName()); 49 | } 50 | return std::make_shared(); ================================================================================ src/Functions/FunctionSQLJSON.h ================================================================================ --- newly covered block 148-150 --- 146 | if (!isString(json_column.type)) 147 | { >> 148 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 149 | "JSONPath functions require first argument to be JSON of string, illegal type: {}", >> 150 | json_column.type->getName()); 151 | } 152 | ================================================================================ src/Functions/FunctionsExternalDictionaries.h ================================================================================ --- newly covered block 190-192 --- 188 | { 189 | if (arguments.size() < 2) >> 190 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 191 | "Wrong argument count for function {}", >> 192 | getName()); 193 | 194 | if (!isString(arguments[0])) ================================================================================ src/Functions/UniqTheta/FunctionsUniqTheta.h ================================================================================ --- newly covered block 73-75 --- 71 | const auto * sketch_type0 = typeid_cast(arguments[0].get()); 72 | if (!(sketch_type0 && sketch_type0->getFunctionName() == "uniqTheta")) >> 73 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 74 | "First argument for function {} must be a uniqTheta but it has type {}", >> 75 | getName(), arguments[0]->getName()); 76 | 77 | const auto * sketch_type1 = typeid_cast(arguments[1].get()); ================================================================================ src/Functions/array/arrayEnumerateExtended.h ================================================================================ --- newly covered block 45-47 --- 43 | { 44 | if (arguments.empty()) >> 45 | throw Exception(ErrorCodes::TOO_FEW_ARGUMENTS_FOR_FUNCTION, >> 46 | "Number of arguments for function {} doesn't match: passed {}, should be at least 1.", >> 47 | getName(), arguments.size()); 48 | 49 | for (size_t i = 0; i < arguments.size(); ++i) ================================================================================ src/Functions/array/arraySlice.cpp ================================================================================ --- newly covered block 60-62 --- 58 | const auto * array_type = typeid_cast(arguments[0].get()); 59 | if (!array_type) >> 60 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 61 | "First argument for function {} must be an array but it has type {}.", >> 62 | getName(), arguments[0]->getName()); 63 | 64 | for (size_t i = 1; i < number_of_arguments; ++i) ================================================================================ src/Functions/array/arrayUniq.cpp ================================================================================ --- newly covered block 53-55 --- 51 | const DataTypeArray * array_type = checkAndGetDataType(arguments[i].get()); 52 | if (!array_type) >> 53 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 54 | "All arguments for function {} must be arrays but argument {} has type {}.", >> 55 | getName(), i + 1, arguments[i]->getName()); 56 | } 57 | ================================================================================ src/Functions/date_trunc.cpp ================================================================================ --- newly covered block 137-137 --- 135 | 136 | if (!IntervalKind::tryParseString(datepart_param, datepart_kind)) >> 137 | throw Exception(ErrorCodes::BAD_ARGUMENTS, "{} doesn't look like datepart name in {}", datepart_param, getName()); 138 | 139 | if ((datepart_kind == IntervalKind::Kind::Year) || (datepart_kind == IntervalKind::Kind::Quarter) --- newly covered block 232-233 --- 230 | const ColumnConst * datepart_column = checkAndGetColumnConst(args[0].column.get()); 231 | if (!datepart_column) >> 232 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "First argument for function {} must be constant string: " >> 233 | "name of datepart", getName()); 234 | 235 | String datepart_param = Poco::toLower(datepart_column->getValue()); ================================================================================ src/Functions/finalizeAggregation.cpp ================================================================================ --- newly covered block 51-53 --- 49 | if (!type) 50 | { >> 51 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 52 | "Argument for function '{}' must have type AggregateFunction - state of aggregate function." >> 53 | " Got '{}' instead", getName(), arguments[0]->getName()); 54 | } 55 | ================================================================================ src/Interpreters/FileCache/EvictionCandidates.cpp ================================================================================ --- newly covered block 148-151 --- 146 | else 147 | { >> 148 | throw Exception( 149 | ErrorCodes::LOGICAL_ERROR, >> 150 | "Eviction info for queue with id {} does not exist ({})", >> 151 | queue_id, toString()); 152 | } 153 | } ================================================================================ src/Planner/CollectTableExpressionData.cpp ================================================================================ --- newly covered block 360-362 --- 358 | else 359 | { >> 360 | throw Exception(ErrorCodes::ILLEGAL_PREWHERE, >> 361 | "Subquery {} does not support PREWHERE", >> 362 | table_expression->formatASTForErrorMessage()); 363 | } 364 | } ================================================================================ src/Processors/Transforms/TTLCalcTransform.cpp ================================================================================ --- newly covered block 103-107 --- 101 | return {}; 102 | >> 103 | Chunk res; >> 104 | for (const auto & col : getOutputPort().getHeader()) 105 | res.addColumn(block.getByName(col.name).column); 106 | >> 107 | return res; 108 | } 109 | ================================================================================ src/Processors/Transforms/WindowTransform.cpp ================================================================================ --- newly covered block 1279-1279 --- 1277 | // devirtualized and become a single never-taken branch that is 1278 | // basically free. >> 1279 | return; 1280 | } 1281 | --- newly covered block 1823-1824 --- 1821 | if (parameters_.size() != 1) 1822 | { >> 1823 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 1824 | "Function {} takes exactly one parameter", name_); 1825 | } 1826 | return applyVisitor(FieldVisitorConvertToNumber(), parameters_[0]); ================================================================================ src/Storages/System/StorageSystemParts.cpp ================================================================================ --- newly covered block 36-37 --- 34 | case DB::DataPartRemovalState::EMPTY_PART_COVERS_OTHER_PARTS: 35 | return "Waiting for covered parts to be removed first"; >> 36 | case DB::DataPartRemovalState::REMOVE: >> 37 | return "Part was selected to be removed"; 38 | case DB::DataPartRemovalState::REMOVE_ROLLED_BACK: 39 | return "Part was selected to be removed but then it had been rolled back. The remove will be retried"; --- newly covered block 276-276 --- 274 | columns[res_index++]->insert(part->getDataPartStorage().getFullPath()); 275 | else >> 276 | columns[res_index++]->insertDefault(); 277 | } 278 | ================================================================================ src/BridgeHelper/XDBCBridgeHelper.h ================================================================================ --- newly covered block 190-190 --- 188 | static String serviceAlias() 189 | { >> 190 | return "clickhouse-jdbc-bridge"; 191 | } 192 | --- newly covered block 205-205 --- 203 | static bool startBridgeManually() 204 | { >> 205 | return true; 206 | } 207 | }; ================================================================================ src/Common/Scheduler/CPUSlotsAllocation.cpp ================================================================================ --- newly covered block 106-107 --- 104 | { 105 | // Request was not canceled, it means it is currently processed by the scheduler thread, we have to wait >> 106 | allocated = total_slots; // to prevent enqueueing of the next request - see grant() >> 107 | schedule_cv.wait(lock, [this] { return allocated == total_slots + 1; }); 108 | } 109 | } ================================================================================ src/Functions/randDistribution.cpp ================================================================================ --- newly covered block 174-174 --- 172 | { 173 | using ReturnType = DataTypeUInt8; >> 174 | static constexpr const char * getName() { return "randBernoulli"; } 175 | static constexpr size_t getNumberOfArguments() { return 1; } 176 | --- newly covered block 180-180 --- 178 | { 179 | if (p < 0.0 || p > 1.0) >> 180 | throw Exception(ErrorCodes::BAD_ARGUMENTS, "Argument of function {} should be inside [0, 1] because it is a probability", getName()); 181 | 182 | auto distribution = std::bernoulli_distribution(p); ================================================================================ base/base/BorrowedObjectPool.h ================================================================================ --- newly covered block 82-85 --- 80 | bool wait_result = condition_variable.wait_for(lock, std::chrono::milliseconds(timeout_in_milliseconds), [this] { return !objects.empty(); }); 81 | >> 82 | if (wait_result) 83 | dest = borrowFromObjects(lock); 84 | >> 85 | return wait_result; 86 | } 87 | ================================================================================ src/AggregateFunctions/AggregateFunctionCategoricalInformationValue.cpp ================================================================================ --- newly covered block 168-169 --- 166 | 167 | if (arguments.size() < 2) >> 168 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Aggregate function {} requires two or more arguments", >> 169 | name); 170 | 171 | for (const auto & argument : arguments) ================================================================================ src/AggregateFunctions/AggregateFunctionDistinctDynamicTypes.cpp ================================================================================ --- newly covered block 149-150 --- 147 | assertNoParameters(name, parameters); 148 | if (argument_types.size() != 1) >> 149 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 150 | "Incorrect number of arguments for aggregate function {}. Expected single argument with type Dynamic, got {} arguments", name, argument_types.size()); 151 | 152 | if (!isDynamic(argument_types[0])) ================================================================================ src/AggregateFunctions/AggregateFunctionGroupArrayMoving.cpp ================================================================================ --- newly covered block 241-242 --- 239 | 240 | if (!res) >> 241 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument for aggregate function {}", >> 242 | argument_type->getName(), name); 243 | 244 | return res; ================================================================================ src/AggregateFunctions/AggregateFunctionGroupNumericIndexedVector.cpp ================================================================================ --- newly covered block 31-32 --- 29 | types, params, std::forward(args)...); 30 | FOR_BASIC_NUMERIC_TYPES(DISPATCH) >> 31 | #undef DISPATCH >> 32 | return nullptr; 33 | } 34 | ================================================================================ src/AggregateFunctions/AggregateFunctionQuantileTDigestWeighted.cpp ================================================================================ --- newly covered block 43-44 --- 41 | if (which.idx == TypeIndex::DateTime) return std::make_shared>(argument_types, params); 42 | >> 43 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument for aggregate function {}", >> 44 | argument_type->getName(), name); 45 | } 46 | ================================================================================ src/AggregateFunctions/AggregateFunctionStatisticsSimple.h ================================================================================ --- newly covered block 249-250 --- 247 | 248 | if (!res) >> 249 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument for aggregate function {}", >> 250 | argument_types[0]->getName(), name); 251 | return res; 252 | } ================================================================================ src/AggregateFunctions/AggregateFunctionUniq.cpp ================================================================================ --- newly covered block 42-43 --- 40 | 41 | if (argument_types.empty()) >> 42 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 43 | "Incorrect number of arguments for aggregate function {}", name); 44 | 45 | bool use_exact_hash_function = !isAllArgumentsContiguousInMemory(argument_types); ================================================================================ src/Common/Scheduler/Nodes/CustomResourceManager.cpp ================================================================================ --- newly covered block 175-178 --- 173 | if (auto iter = resources.find(resource_name); iter != resources.end()) 174 | return iter->second; >> 175 | if (settings.throw_on_unknown_workload) 176 | throw Exception(ErrorCodes::RESOURCE_ACCESS_DENIED, "Access denied to resource '{}'", resource_name); 177 | else >> 178 | return ResourceLink{}; // unlimited access 179 | } 180 | ================================================================================ src/Common/SystemLogBase.cpp ================================================================================ --- newly covered block 186-187 --- 184 | if (!result) 185 | { >> 186 | throw Exception(ErrorCodes::TIMEOUT_EXCEEDED, "Timeout exceeded ({} s) while flushing system log '{}'.", >> 187 | toString(timeout_seconds), demangle(typeid(*this).name())); 188 | } 189 | ================================================================================ src/Common/atomicRename.cpp ================================================================================ --- newly covered block 110-112 --- 108 | if (!error.has_value()) 109 | return true; >> 110 | if (out_message) 111 | *out_message = error.value(); >> 112 | return false; 113 | } 114 | ================================================================================ src/Functions/CastOverloadResolver.cpp ================================================================================ --- newly covered block 213-214 --- 211 | const auto * type_col = checkAndGetColumnConst(column.get()); 212 | if (!type_col) >> 213 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Second argument to {} must be a constant string describing type. " >> 214 | "Instead there is a column with the following structure: {}", getName(), column->dumpStructure()); 215 | 216 | DataTypePtr type = DataTypeFactory::instance().get(type_col->getValue()); ================================================================================ src/Functions/FunctionsCodingIP.cpp ================================================================================ --- newly covered block 470-471 --- 468 | if (!isString(removeNullable(arguments[0]))) 469 | { >> 470 | throw Exception( >> 471 | ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of argument of function {}", arguments[0]->getName(), getName()); 472 | } 473 | ================================================================================ src/Functions/FunctionsConversion.cpp ================================================================================ --- newly covered block 826-827 --- 824 | { 825 | throw Exception(ErrorCodes::LOGICAL_ERROR, >> 826 | "Illegal column {} for function CAST AS Array", >> 827 | argument_column.column->getName()); 828 | } 829 | }; ================================================================================ src/Functions/FunctionsConversion.h ================================================================================ --- newly covered block 2466-2467 --- 2464 | } 2465 | else >> 2466 | throw Exception(ErrorCodes::ILLEGAL_COLUMN, "Illegal column {} of first argument of function {}", >> 2467 | arguments[0].column->getName(), Name::name); 2468 | } 2469 | else if constexpr (std::is_same_v) ================================================================================ src/Functions/Kusto/KqlArraySort.cpp ================================================================================ --- newly covered block 60-61 --- 58 | 59 | if (!isUInt8(last_arg.type)) >> 60 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, >> 61 | "Argument null_last of function {} must have type UInt8 or Bool.", getName()); 62 | if (!last_arg.column || !last_arg.column->isConst()) 63 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, ================================================================================ src/Functions/LeftRight.h ================================================================================ --- newly covered block 66-67 --- 64 | 65 | if (!isNativeNumber(arguments[1])) >> 66 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal type {} of second argument of function {}", >> 67 | arguments[1]->getName(), getName()); 68 | 69 | return std::make_shared(); ================================================================================ src/Functions/dateDiff.cpp ================================================================================ --- newly covered block 94-94 --- 92 | vectorConstant(x, y_const_64->getValue>(), timezone_x, timezone_y, input_rows_count, result); 93 | else >> 94 | throw Exception(ErrorCodes::ILLEGAL_COLUMN, "Illegal column for second argument of function {}, must be Date, Date32, DateTime or DateTime64", name); 95 | } 96 | --- newly covered block 408-408 --- 406 | impl.template dispatchForColumns>(col_x, col_y, timezone_x, timezone_y, input_rows_count, col_res->getData()); 407 | else >> 408 | throw Exception(ErrorCodes::BAD_ARGUMENTS, "Function {} does not support '{}' unit", getName(), unit); 409 | 410 | return col_res; ================================================================================ src/Functions/obfuscateQuery.cpp ================================================================================ --- newly covered block 296-297 --- 294 | { 295 | if (arguments.empty()) >> 296 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, >> 297 | "Function {} requires at least 1 argument", getName()); 298 | 299 | if (arguments.size() > 2) ================================================================================ src/IO/Archives/ZipArchiveReader.cpp ================================================================================ --- newly covered block 749-750 --- 747 | return; 748 | >> 749 | String message = "Code = "; >> 750 | switch (code) 751 | { 752 | case UNZ_OK: return; ================================================================================ src/Interpreters/Aggregator.cpp ================================================================================ --- newly covered block 3718-3719 --- 3716 | 3717 | APPLY_FOR_AGGREGATED_VARIANTS(M) >> 3718 | #undef M >> 3719 | else if (result.type != AggregatedDataVariants::Type::without_key) 3720 | throw Exception(ErrorCodes::UNKNOWN_AGGREGATED_DATA_VARIANT, "Unknown aggregated data variant."); 3721 | } ================================================================================ src/Interpreters/InsertDependenciesBuilder.cpp ================================================================================ --- newly covered block 957-958 --- 955 | /// This can happen when a Kafka/FileLog/etc. engine table has no materialized views attached. 956 | /// Instead of throwing, just discard the data, matching the old behavior. >> 957 | LOG_WARNING(logger, "Table '{}' doesn't have any dependencies, data will be discarded", init_table_id); >> 958 | result.addSink(std::make_shared(output_headers.at(root_view))); 959 | } 960 | ================================================================================ src/Parsers/ExpressionElementParsers.cpp ================================================================================ --- newly covered block 759-759 --- 757 | else 758 | { >> 759 | return false; 760 | } 761 | --- newly covered block 778-778 --- 776 | else 777 | { >> 778 | return false; 779 | } 780 | } ================================================================================ src/Processors/QueryPlan/Optimizations/optimizeReadInOrder.cpp ================================================================================ --- newly covered block 1456-1456 --- 1454 | } 1455 | >> 1456 | if (auto * object_storage_step = typeid_cast(reading_node->step.get())) 1457 | { 1458 | auto order_info = buildInputOrderFromUnorderedKeys( --- newly covered block 1474-1474 --- 1472 | } 1473 | >> 1474 | return {}; 1475 | } 1476 | ================================================================================ src/Processors/Transforms/MergeJoinTransform.cpp ================================================================================ --- newly covered block 947-951 --- 945 | auto & current_left = cursors[0]; 946 | if (!current_left.isValid()) >> 947 | return Status(0); 948 | 949 | auto & current_right = cursors[1]; 950 | if (!current_right.isValid()) >> 951 | return Status(1); 952 | 953 | /// join doesn't build result block, but returns indices where result rows should be placed ================================================================================ src/Storages/MergeTree/Compaction/MergePredicates/ReplicatedMergeTreeMergePredicate.cpp ================================================================================ --- newly covered block 270-270 --- 268 | /// Maybe we already know that there are no relevant uncommitted blocks 269 | if (checked_partitions_cache.contains(partition_id)) >> 270 | continue; 271 | 272 | if (partition_ids_hint && !partition_ids_hint->contains(partition_id)) --- newly covered block 311-311 --- 309 | 310 | LOG_TRACE(queue.log, "Mutation {} is not done because some parts [{}] were just committed", znode_name, fmt::join(it->second.parts_to_do.getParts(), ", ")); >> 311 | return false; 312 | } 313 | ================================================================================ src/Storages/MergeTree/EphemeralLockInZooKeeper.cpp ================================================================================ --- newly covered block 199-200 --- 197 | if (rc == Coordination::Error::ZBADVERSION) 198 | { >> 199 | LOG_TRACE(getLogger("EphemeralLocksInAllPartitions"), "Someone has inserted a block in a new partition while we were creating locks. Retry."); >> 200 | continue; 201 | } 202 | if (rc != Coordination::Error::ZOK) ================================================================================ src/Storages/MergeTree/ReplicatedMergeTreeCleanupThread.cpp ================================================================================ --- newly covered block 564-565 --- 562 | { 563 | /// Another replica already deleted the same node concurrently. >> 564 | if (e.code == Coordination::Error::ZNONODE) >> 565 | break; 566 | 567 | throw; ================================================================================ src/Storages/StorageDistributed.cpp ================================================================================ --- newly covered block 1759-1761 --- 1757 | CREATE_FOR_TYPE(Int64) 1758 | >> 1759 | #undef CREATE_FOR_TYPE 1760 | >> 1761 | throw Exception(ErrorCodes::TYPE_MISMATCH, "Sharding key expression does not evaluate to an integer type"); 1762 | } 1763 | /// NOLINTEND(readability-else-after-return) ================================================================================ src/Columns/ColumnBLOB.h ================================================================================ --- newly covered block 75-75 --- 73 | 74 | public: >> 75 | const char * getFamilyName() const override { return "BLOB"; } 76 | 77 | size_t size() const override { return rows; } ================================================================================ src/Columns/ColumnReplicated.h ================================================================================ --- newly covered block 62-62 --- 60 | bool isReplicated() const override { return true; } 61 | const char * getFamilyName() const override { return "Replicated"; } >> 62 | std::string getName() const override { return "Replicated(" + nested_column->getName() + ")"; } 63 | TypeIndex getDataType() const override { return nested_column->getDataType(); } 64 | MutableColumnPtr cloneResized(size_t new_size) const override; ================================================================================ src/Functions/addressToLineWithInlines.cpp ================================================================================ --- newly covered block 28-28 --- 26 | public: 27 | static constexpr auto name = "addressToLineWithInlines"; >> 28 | String getName() const override { return name; } 29 | static FunctionPtr create(ContextPtr context) 30 | { ================================================================================ src/Functions/ifNull.cpp ================================================================================ --- newly covered block 52-52 --- 50 | bool useDefaultImplementationForNulls() const override { return false; } 51 | bool useDefaultImplementationForConstants() const override { return true; } >> 52 | bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & /*arguments*/) const override { return false; } 53 | ColumnNumbers getArgumentsThatDontImplyNullableReturnType(size_t /*number_of_arguments*/) const override { return {0}; } 54 | ================================================================================ src/Functions/patchPartitionID.cpp ================================================================================ --- newly covered block 31-31 --- 29 | static FunctionPtr create(ContextPtr) { return std::make_shared(); } 30 | >> 31 | String getName() const override { return name; } 32 | size_t getNumberOfArguments() const override { return 2; } 33 | ColumnNumbers getArgumentsThatAreAlwaysConstant() const override { return {1}; } ================================================================================ src/Functions/reverse.cpp ================================================================================ --- newly covered block 129-129 --- 127 | } 128 | >> 129 | String getName() const override { return name; } 130 | size_t getNumberOfArguments() const override { return 1; } 131 | ================================================================================ src/Functions/yesterday.cpp ================================================================================ --- newly covered block 65-65 --- 63 | static constexpr auto name = "yesterday"; 64 | >> 65 | String getName() const override { return name; } 66 | 67 | bool isDeterministic() const override { return false; } ================================================================================ src/Storages/MergeTree/MergeTreeReadPoolParallelReplicas.h ================================================================================ --- newly covered block 31-31 --- 29 | String getName() const override { return "ReadPoolParallelReplicas"; } 30 | bool preservesOrderOfRanges() const override { return false; } >> 31 | void profileFeedback(ReadBufferFromFileBase::ProfileInfo) override {} 32 | MergeTreeReadTaskPtr getTask(size_t task_idx, MergeTreeReadTask * previous_task) override; 33 | ================================================================================ src/TableFunctions/ITableFunctionXDBC.cpp ================================================================================ --- newly covered block 82-82 --- 80 | bool use_connection_pooling_) const override 81 | { >> 82 | return std::make_shared>(context, http_timeout_, connection_string_, use_connection_pooling_); 83 | } 84 | ================================================================================ programs/server/Server.cpp ================================================================================ --- newly covered block 1799-1799 --- 1797 | if (stored_binary_hash.empty()) 1798 | { >> 1799 | LOG_WARNING(log, "Integrity check of the executable skipped because the reference checksum could not be read."); 1800 | } 1801 | else ================================================================================ src/Access/EnabledQuota.cpp ================================================================================ --- newly covered block 243-243 --- 241 | break; 242 | } >> 243 | end = std::chrono::system_clock::time_point{end_loaded}; 244 | } 245 | while (current_time >= end); ================================================================================ src/AggregateFunctions/AggregateFunctionGroupConcat.cpp ================================================================================ --- newly covered block 138-138 --- 136 | { 137 | if (cur_data.data_size != 0) >> 138 | cur_data.insertChar(delimiter.c_str(), delimiter.size(), arena); 139 | 140 | cur_data.insertChar(rhs_data.data, rhs_data.data_size, arena); ================================================================================ src/AggregateFunctions/AggregateFunctionQuantileBFloat16Weighted.cpp ================================================================================ --- newly covered block 30-30 --- 28 | { 29 | if (argument_types.empty()) >> 30 | throw Exception(ErrorCodes::TOO_FEW_ARGUMENTS_FOR_FUNCTION, "Aggregate function {} requires at least one argument", name); 31 | 32 | const DataTypePtr & argument_type = argument_types[0]; ================================================================================ src/AggregateFunctions/AggregateFunctionStudentTTestOneSample.cpp ================================================================================ --- newly covered block 57-57 --- 55 | { 56 | if (argument_types.size() != 1 && argument_types.size() != 2) >> 57 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Aggregate function {} requires one or two arguments.", name); 58 | 59 | if (!isNumber(argument_types[0]) || (argument_types.size() == 2 && !isNumber(argument_types[1]))) ================================================================================ src/AggregateFunctions/AggregateFunctionUniqCombined.cpp ================================================================================ --- newly covered block 37-37 --- 35 | 36 | if (argument_types.empty()) >> 37 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Incorrect number of arguments for aggregate function {}", name); 38 | 39 | switch (precision) // NOLINT(bugprone-switch-missing-default-case) ================================================================================ src/BridgeHelper/IBridgeHelper.cpp ================================================================================ --- newly covered block 58-58 --- 56 | { 57 | if (startBridgeManually()) >> 58 | throw Exception(ErrorCodes::EXTERNAL_SERVER_IS_NOT_RESPONDING, "{} is not running. Please, start it manually", serviceAlias()); 59 | 60 | const auto & config = getConfig(); ================================================================================ src/Columns/ColumnReplicated.cpp ================================================================================ --- newly covered block 432-432 --- 430 | else if (direction == PermutationSortDirection::Descending && stability == PermutationSortStability::Unstable) 431 | updatePermutationImpl(limit, res, equal_ranges, ComparatorDescendingUnstable(*this, nan_direction_hint), comparator_equal, DefaultSort(), DefaultPartialSort()); >> 432 | else if (direction == PermutationSortDirection::Descending && stability == PermutationSortStability::Stable) 433 | updatePermutationImpl(limit, res, equal_ranges, ComparatorDescendingStable(*this, nan_direction_hint), comparator_equal, DefaultSort(), DefaultPartialSort()); 434 | } ================================================================================ src/Columns/validateColumnType.cpp ================================================================================ --- newly covered block 66-66 --- 64 | if (const auto * type_map = typeid_cast(&type)) 65 | return columnMatchesType(col_map->getNestedColumn(), *type_map->getNestedType()); >> 66 | return false; 67 | } 68 | ================================================================================ src/Common/AsyncLoader.cpp ================================================================================ --- newly covered block 655-655 --- 653 | auto dpt_info = scheduled_jobs.find(dpt); 654 | if (dpt_info == scheduled_jobs.end()) >> 655 | continue; 656 | dpt_info->second.dependencies_left--; 657 | if (!dpt_info->second.isBlocked()) ================================================================================ src/Common/Elf.cpp ================================================================================ --- newly covered block 186-186 --- 184 | if (auto section = findSectionByName(".clickhouse.hash")) 185 | return {section->begin(), section->end()}; >> 186 | return {}; 187 | } 188 | ================================================================================ src/Common/FailPoint.cpp ================================================================================ --- newly covered block 340-340 --- 338 | auto iter = fail_point_wait_channels.find(fail_point_name); 339 | if (iter == fail_point_wait_channels.end()) >> 340 | return; 341 | 342 | auto channel = iter->second; ================================================================================ src/Common/Macros.cpp ================================================================================ --- newly covered block 88-88 --- 86 | size_t end = s.find('}', begin); 87 | if (end == String::npos) >> 88 | throw Exception(ErrorCodes::SYNTAX_ERROR, "Unbalanced {{ and }} in string with macros: '{}'", s); 89 | 90 | String macro_name = s.substr(begin, end - begin); ================================================================================ src/Common/RWLock.cpp ================================================================================ --- newly covered block 393-393 --- 391 | { 392 | if (need_comma) >> 393 | out << ", "; 394 | out << query_id; 395 | if (num_owners != 1) ================================================================================ src/Common/UDFProcessSubtreeSampler.cpp ================================================================================ --- newly covered block 87-87 --- 85 | std::ifstream in(children_path); 86 | if (!in.is_open()) >> 87 | continue; 88 | 89 | pid_t child = 0; ================================================================================ src/DataTypes/Serializations/SerializationSubObjectSharedData.cpp ================================================================================ --- newly covered block 205-205 --- 203 | { 204 | /// If we add new serialization version in future and forget to implement something, better to get an exception instead of doing nothing. >> 205 | throw Exception(ErrorCodes::NOT_IMPLEMENTED, "deserializeBinaryBulkStatePrefix is not implemented for shared data serialization version {}", serialization_version.value); 206 | } 207 | ================================================================================ src/Disks/DiskObjectStorage/MetadataStorages/Plain/MetadataStorageFromPlainObjectStorage.cpp ================================================================================ --- newly covered block 97-97 --- 95 | return *res; 96 | else >> 97 | throw Exception(ErrorCodes::FILE_DOESNT_EXIST, "File or directory {} does not exist on {}", path, object_storage->getName()); 98 | } 99 | ================================================================================ src/Disks/IO/AsynchronousBoundedReadBuffer.cpp ================================================================================ --- newly covered block 476-476 --- 474 | return impl->readBigAt(to, n, range_begin, progress_callback); 475 | else >> 476 | throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Method readBigAt() is not implemented for a given implementation"); 477 | } 478 | ================================================================================ src/Disks/IO/CachedOnDiskReadBufferFromFile.cpp ================================================================================ --- newly covered block 280-280 --- 278 | return info.cache_file_reader; 279 | >> 280 | info.cache_file_reader.reset(); 281 | } 282 | ================================================================================ src/Disks/createVolume.cpp ================================================================================ --- newly covered block 25-25 --- 23 | return std::make_shared(other_volume->getName(), reservation->getDisk(), other_volume->max_data_part_size); 24 | } >> 25 | return nullptr; 26 | } 27 | ================================================================================ src/Functions/FunctionUnaryArithmetic.h ================================================================================ --- newly covered block 185-185 --- 183 | 184 | if constexpr (!IsUnaryOperation::negate) >> 185 | return {}; 186 | 187 | return FunctionFactory::instance().get("tupleNegate", context_); ================================================================================ src/Functions/FunctionsJSON.cpp ================================================================================ --- newly covered block 1090-1090 --- 1088 | { 1089 | if (arguments.size() < 2) >> 1090 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Function {} requires at least two arguments", String(function_name)); 1091 | 1092 | const auto & col = arguments.back(); ================================================================================ src/Functions/JSONPaths.cpp ================================================================================ --- newly covered block 106-106 --- 104 | 105 | if (data_types[0]->getTypeId() != TypeIndex::Object) >> 106 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Function {} requires argument with type JSON, got: {}", getName(),data_types[0]->getName()); 107 | 108 | if constexpr (Impl::with_types) ================================================================================ src/Functions/array/arrayConcat.cpp ================================================================================ --- newly covered block 24-24 --- 22 | { 23 | if (arguments.empty()) >> 24 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Function {} requires at least one argument.", getName()); 25 | 26 | for (auto i : collections::range(0, arguments.size())) ================================================================================ src/Functions/array/arrayShiftRotate.cpp ================================================================================ --- newly covered block 53-53 --- 51 | { 52 | if (arguments.size() < 2) >> 53 | throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH, "Function {} requires at least two arguments.", getName()); 54 | 55 | if (arguments.size() > 3) ================================================================================ src/Functions/caseWithExpression.cpp ================================================================================ --- newly covered block 53-53 --- 51 | { 52 | if (args.empty()) >> 53 | throw Exception(ErrorCodes::TOO_FEW_ARGUMENTS_FOR_FUNCTION, "Function {} expects at least 1 arguments", getName()); 54 | 55 | /// We expect an even number of arguments, with the first argument being the expression, ================================================================================ src/Functions/getMacro.cpp ================================================================================ --- newly covered block 66-66 --- 64 | { 65 | if (!isString(arguments[0])) >> 66 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "The argument of function {} must have String type", getName()); 67 | return std::make_shared(); 68 | } ================================================================================ src/Functions/readWkb.cpp ================================================================================ --- newly covered block 58-58 --- 56 | && checkAndGetDataType(arguments[0].get()) == nullptr) 57 | { >> 58 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "First argument should be String"); 59 | } 60 | ================================================================================ src/Functions/readWkt.cpp ================================================================================ --- newly covered block 36-36 --- 34 | { 35 | /// Rethrow a more convenient exception type. >> 36 | throw Exception(ErrorCodes::CANNOT_PARSE_TEXT, "Cannot parse WKT string: {}", e.what()); 37 | } 38 | } ================================================================================ src/IO/AzureBlobStorage/PocoHTTPClient.cpp ================================================================================ --- newly covered block 178-178 --- 176 | return AzureMetricKind::Write; 177 | >> 178 | throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Unsupported request method: {}", method); 179 | } 180 | ================================================================================ src/IO/PipelineReadBuffer.cpp ================================================================================ --- newly covered block 78-78 --- 76 | } 77 | else >> 78 | throw Exception(ErrorCodes::ARGUMENT_OUT_OF_BOUND, "PipelineReadBuffer::seek: unsupported whence"); 79 | 80 | LOG_DEBUG(log, "seek to {}", new_pos); ================================================================================ src/Interpreters/Access/InterpreterShowCreateAccessEntityQuery.cpp ================================================================================ --- newly covered block 252-252 --- 250 | if (const SettingsProfile * profile = typeid_cast(&entity)) 251 | return getCreateQueryImpl(*profile, access_control, attach_mode); >> 252 | throw Exception(ErrorCodes::NOT_IMPLEMENTED, "{}: type is not supported by SHOW CREATE query", entity.formatTypeWithName()); 253 | } 254 | } ================================================================================ src/Interpreters/DDLTask.cpp ================================================================================ --- newly covered block 202-202 --- 200 | rb >> "initiator: " >> initiator >> "\n"; 201 | else >> 202 | initiator.clear(); 203 | } 204 | else if (version >= SETTINGS_IN_ZK_VERSION) ================================================================================ src/Interpreters/RewriteSumFunctionWithSumAndCountVisitor.cpp ================================================================================ --- newly covered block 108-108 --- 106 | ast = new_ast; 107 | } >> 108 | else if (column_id == 1) 109 | { 110 | const auto new_ast = makeASTFunction(func_plus_minus->name, ================================================================================ src/Interpreters/SystemLog.cpp ================================================================================ --- newly covered block 526-526 --- 524 | catch (...) 525 | { >> 526 | tryLogCurrentException(__PRETTY_FUNCTION__); 527 | } 528 | } ================================================================================ src/Loggers/OwnSplitChannel.cpp ================================================================================ --- newly covered block 312-312 --- 310 | auto matches = masker->wipeSensitiveDataThrow(message_text); 311 | if (matches > 0) >> 312 | msg.setText(message_text); 313 | } 314 | } ================================================================================ src/Parsers/ASTFunction.cpp ================================================================================ --- newly covered block 280-280 --- 278 | } 279 | } >> 280 | return false; 281 | } 282 | ================================================================================ src/Parsers/ParserPartition.cpp ================================================================================ --- newly covered block 80-80 --- 78 | else 79 | { >> 80 | return false; 81 | } 82 | ================================================================================ src/Processors/Formats/Impl/ConstantExpressionTemplate.cpp ================================================================================ --- newly covered block 238-238 --- 236 | throw DB::Exception(ErrorCodes::SYNTAX_ERROR, "Identifier in constant expression"); 237 | else >> 238 | throw DB::Exception(ErrorCodes::SYNTAX_ERROR, "Syntax error in constant expression"); 239 | } 240 | ================================================================================ src/Processors/Formats/Impl/Parquet/Decoding.cpp ================================================================================ --- newly covered block 1346-1346 --- 1344 | } 1345 | else >> 1346 | chassert(false); 1347 | } 1348 | else ================================================================================ src/Processors/Formats/Impl/Parquet/Reader.cpp ================================================================================ --- newly covered block 1442-1442 --- 1440 | if (memchr(null_map.data(), 1, null_map.size()) != nullptr) 1441 | throw Exception(ErrorCodes::CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN, "Cannot convert NULL value to non-Nullable type for column {}", column_info.name); >> 1442 | subchunk.null_map = nullptr; 1443 | } 1444 | ================================================================================ src/Processors/QueryPlan/Optimizations/optimizeJoin.cpp ================================================================================ --- newly covered block 202-202 --- 200 | if (auto it = raw_hashes.find(node); it != raw_hashes.end()) 201 | return it->second; >> 202 | return 0; 203 | } 204 | ================================================================================ src/Processors/QueryPlan/ReadFromSystemNumbersStep.cpp ================================================================================ --- newly covered block 267-267 --- 265 | { 266 | if (ranges.empty() || isCancelled()) >> 267 | return {}; 268 | 269 | /// Find the data range. ================================================================================ src/Server/KeeperTCPHandler.cpp ================================================================================ --- newly covered block 733-733 --- 731 | { 732 | if (compressed_out) >> 733 | compressed_out->finalize(); 734 | out->finalize(); 735 | } ================================================================================ src/Storages/MergeTree/KeyCondition.cpp ================================================================================ --- newly covered block 2583-2583 --- 2581 | return func->prepare(new_arguments)->execute(new_arguments, result_type, input_rows_count, dry_run); 2582 | } >> 2583 | return func->prepare(arguments)->execute(arguments, result_type, input_rows_count, dry_run); 2584 | } 2585 | ================================================================================ src/Storages/MergeTree/MergeTreeData.cpp ================================================================================ --- newly covered block 3899-3899 --- 3897 | 3898 | if (!inserted) >> 3899 | it->second = std::min(it->second, data_version); 3900 | } 3901 | ================================================================================ src/Storages/ObjectStorage/StorageObjectStorage.cpp ================================================================================ --- newly covered block 804-804 --- 802 | return schema_cache; 803 | } >> 804 | throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Unsupported storage type: {}", storage_engine_name); 805 | } 806 | ================================================================================ src/Storages/ObjectStorageQueue/ObjectStorageQueueMetadata.cpp ================================================================================ --- newly covered block 1022-1022 --- 1020 | continue; 1021 | } >> 1022 | throw; 1023 | } 1024 | } ================================================================================ src/Storages/Statistics/Statistics.cpp ================================================================================ --- newly covered block 155-155 --- 153 | if (!stats.contains(stat_it.first)) 154 | { >> 155 | stats.insert(stat_it); 156 | } 157 | } ================================================================================ src/Storages/StorageFile.cpp ================================================================================ --- newly covered block 1317-1317 --- 1315 | Int64 lock_timeout = settings[Setting::lock_acquire_timeout].totalSeconds(); 1316 | if (settings[Setting::max_execution_time].totalSeconds() != 0 && settings[Setting::max_execution_time].totalSeconds() < lock_timeout) >> 1317 | lock_timeout = settings[Setting::max_execution_time].totalSeconds(); 1318 | return std::chrono::seconds{lock_timeout}; 1319 | } ================================================================================ src/Storages/StreamingStorageRegistry.cpp ================================================================================ --- newly covered block 242-242 --- 240 | catch (...) 241 | { >> 242 | tryLogCurrentException(__PRETTY_FUNCTION__); 243 | } 244 | } ================================================================================ src/Storages/System/StorageSystemDroppedTablesParts.cpp ================================================================================ --- newly covered block 45-45 --- 43 | String engine_name = storage->getName(); 44 | if (!dynamic_cast(storage.get())) >> 45 | continue; 46 | 47 | if (check_access_for_tables && !access->isGranted(AccessType::SHOW_TABLES, database_name, table_name)) ================================================================================ src/TableFunctions/TableFunctionLoop.cpp ================================================================================ --- newly covered block 81-81 --- 79 | else 80 | { >> 81 | throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Expected identifier or function for argument 1 of function 'loop', got {}", args[0]->getID()); 82 | } 83 | } ================================================================================ src/TableFunctions/TableFunctionMergeTreeAnalyzeIndexes.cpp ================================================================================ --- newly covered block 80-80 --- 78 | } 79 | >> 80 | throw Exception(ErrorCodes::BAD_ARGUMENTS, "Parts must be an array of strings, got: {}", argument->formatForLogging()); 81 | } 82 | WARNING: Failed to get start time for [Newly Covered Code] - start time and duration won't be set