mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 16:50:48 +00:00
Merge branch 'master' into sql-user-defined-functions-readonly-fix
This commit is contained in:
commit
d57d987a02
@ -5,7 +5,7 @@ sidebar_label: Caches
|
||||
|
||||
# Cache Types {#cache-types}
|
||||
|
||||
When performing queries, ClichHouse uses different caches.
|
||||
When performing queries, ClickHouse uses different caches.
|
||||
|
||||
Main cache types:
|
||||
|
||||
|
@ -546,8 +546,9 @@ static void sanityChecks(Server & server)
|
||||
#if defined(OS_LINUX)
|
||||
try
|
||||
{
|
||||
if (readString("/sys/devices/system/clocksource/clocksource0/current_clocksource").find("tsc") == std::string::npos)
|
||||
server.context()->addWarningMessage("Linux is not using a fast TSC clock source. Performance can be degraded.");
|
||||
const char * filename = "/sys/devices/system/clocksource/clocksource0/current_clocksource";
|
||||
if (readString(filename).find("tsc") == std::string::npos)
|
||||
server.context()->addWarningMessage("Linux is not using a fast TSC clock source. Performance can be degraded. Check " + String(filename));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@ -555,8 +556,9 @@ static void sanityChecks(Server & server)
|
||||
|
||||
try
|
||||
{
|
||||
if (readNumber("/proc/sys/vm/overcommit_memory") == 2)
|
||||
server.context()->addWarningMessage("Linux memory overcommit is disabled.");
|
||||
const char * filename = "/proc/sys/vm/overcommit_memory";
|
||||
if (readNumber(filename) == 2)
|
||||
server.context()->addWarningMessage("Linux memory overcommit is disabled. Check " + String(filename));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@ -564,8 +566,9 @@ static void sanityChecks(Server & server)
|
||||
|
||||
try
|
||||
{
|
||||
if (readString("/sys/kernel/mm/transparent_hugepage/enabled").find("[always]") != std::string::npos)
|
||||
server.context()->addWarningMessage("Linux transparent hugepages are set to \"always\".");
|
||||
const char * filename = "/sys/kernel/mm/transparent_hugepage/enabled";
|
||||
if (readString(filename).find("[always]") != std::string::npos)
|
||||
server.context()->addWarningMessage("Linux transparent hugepages are set to \"always\". Check " + String(filename));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@ -573,8 +576,9 @@ static void sanityChecks(Server & server)
|
||||
|
||||
try
|
||||
{
|
||||
if (readNumber("/proc/sys/kernel/pid_max") < 30000)
|
||||
server.context()->addWarningMessage("Linux max PID is too low.");
|
||||
const char * filename = "/proc/sys/kernel/pid_max";
|
||||
if (readNumber(filename) < 30000)
|
||||
server.context()->addWarningMessage("Linux max PID is too low. Check " + String(filename));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@ -582,8 +586,9 @@ static void sanityChecks(Server & server)
|
||||
|
||||
try
|
||||
{
|
||||
if (readNumber("/proc/sys/kernel/threads-max") < 30000)
|
||||
server.context()->addWarningMessage("Linux threads max count is too low.");
|
||||
const char * filename = "/proc/sys/kernel/threads-max";
|
||||
if (readNumber(filename) < 30000)
|
||||
server.context()->addWarningMessage("Linux threads max count is too low. Check " + String(filename));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
@ -591,7 +596,7 @@ static void sanityChecks(Server & server)
|
||||
|
||||
std::string dev_id = getBlockDeviceId(data_path);
|
||||
if (getBlockDeviceType(dev_id) == BlockDeviceType::ROT && getBlockDeviceReadAheadBytes(dev_id) == 0)
|
||||
server.context()->addWarningMessage("Rotational disk with disabled readahead is in use. Performance can be degraded.");
|
||||
server.context()->addWarningMessage("Rotational disk with disabled readahead is in use. Performance can be degraded. Used for data: " + String(data_path));
|
||||
#endif
|
||||
|
||||
try
|
||||
|
@ -707,6 +707,13 @@ namespace
|
||||
|
||||
void HashJoin::initRightBlockStructure(Block & saved_block_sample)
|
||||
{
|
||||
if (isCrossOrComma(kind))
|
||||
{
|
||||
/// cross join doesn't have keys, just add all columns
|
||||
saved_block_sample = sample_block_with_columns_to_add.cloneEmpty();
|
||||
return;
|
||||
}
|
||||
|
||||
bool multiple_disjuncts = !table_join->oneDisjunct();
|
||||
/// We could remove key columns for LEFT | INNER HashJoin but we should keep them for JoinSwitcher (if any).
|
||||
bool save_key_columns = !table_join->forceHashJoin() || isRightOrFull(kind) || multiple_disjuncts;
|
||||
@ -724,9 +731,7 @@ void HashJoin::initRightBlockStructure(Block & saved_block_sample)
|
||||
for (auto & column : sample_block_with_columns_to_add)
|
||||
{
|
||||
if (!saved_block_sample.findByName(column.name))
|
||||
{
|
||||
saved_block_sample.insert(column);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1184,7 +1184,7 @@ TreeRewriterResultPtr TreeRewriter::analyzeSelect(
|
||||
if (remove_duplicates)
|
||||
renameDuplicatedColumns(select_query);
|
||||
|
||||
/// Perform it before analyzing JOINs, because it may change number of columns with names unique and break some login inside JOINs
|
||||
/// Perform it before analyzing JOINs, because it may change number of columns with names unique and break some logic inside JOINs
|
||||
if (settings.optimize_normalize_count_variants)
|
||||
TreeOptimizer::optimizeCountConstantAndSumOne(query);
|
||||
|
||||
|
@ -0,0 +1,2 @@
|
||||
\N
|
||||
\N
|
16
tests/queries/0_stateless/02313_cross_join_dup_col_names.sql
Normal file
16
tests/queries/0_stateless/02313_cross_join_dup_col_names.sql
Normal file
@ -0,0 +1,16 @@
|
||||
-- Tags: no-backward-compatibility-check
|
||||
|
||||
-- https://github.com/ClickHouse/ClickHouse/issues/37561
|
||||
|
||||
SELECT NULL
|
||||
FROM
|
||||
(SELECT NULL) AS s1,
|
||||
(SELECT count(2), count(1)) AS s2
|
||||
;
|
||||
|
||||
SELECT NULL
|
||||
FROM
|
||||
(SELECT NULL) AS s1,
|
||||
(SELECT count(2.), 9223372036854775806, count('-1'), NULL) AS s2,
|
||||
(SELECT count('-2147483648')) AS any_query, (SELECT NULL) AS check_single_query
|
||||
;
|
Loading…
Reference in New Issue
Block a user