This commit is contained in:
Alexey Arno 2015-08-10 13:03:44 +03:00
commit 99a62d3608
9 changed files with 468 additions and 13 deletions

View File

@ -803,7 +803,7 @@ public:
{
Cell x;
x.read(rb);
insert(x.getValue());
insert(x);
}
}
@ -827,7 +827,7 @@ public:
Cell x;
DB::assertString(",", rb);
x.readText(rb);
insert(x.getValue());
insert(x);
}
}

View File

@ -30,7 +30,7 @@ public:
ASTCreateQuery() = default;
ASTCreateQuery(const StringRange range_) : IAST(range_) {}
/** Получить текст, который идентифицирует этот элемент. */
String getID() const override { return (attach ? "AttachQuery_" : "CreateQuery_") + database + "_" + table; };
@ -87,8 +87,9 @@ protected:
if (columns)
{
settings.ostr << (settings.one_line ? " (" : "\n(");
++frame.indent;
columns->formatImpl(settings, state, frame);
FormatStateStacked frame_nested = frame;
++frame_nested.indent;
columns->formatImpl(settings, state, frame_nested);
settings.ostr << (settings.one_line ? ")" : "\n)");
}

View File

@ -106,7 +106,9 @@ protected:
settings.ostr << "JOIN "
<< (settings.hilite ? hilite_none : "");
table->formatImpl(settings, state, frame);
FormatStateStacked frame_with_indent = frame;
++frame_with_indent.indent;
table->formatImpl(settings, state, frame_with_indent);
if (kind != ASTJoin::Cross)
{

View File

@ -42,9 +42,10 @@ protected:
std::string nl_or_nothing = settings.one_line ? "" : "\n";
settings.ostr << nl_or_nothing << indent_str << "(" << nl_or_nothing;
FormatStateStacked frame_dont_need_parens = frame;
frame_dont_need_parens.need_parens = false;
children[0]->formatImpl(settings, state, frame_dont_need_parens);
FormatStateStacked frame_nested = frame;
frame_nested.need_parens = false;
++frame_nested.indent;
children[0]->formatImpl(settings, state, frame_nested);
settings.ostr << nl_or_nothing << indent_str << ")";
}
};

View File

@ -164,7 +164,7 @@ public:
/// Состояние, которое копируется при форматировании каждого узла. Например, уровень вложенности.
struct FormatStateStacked
{
bool indent = 0;
UInt8 indent = 0;
bool need_parens = false;
const IAST * current_select = nullptr;
};

View File

@ -39,8 +39,6 @@ void ASTFunction::formatImplWithoutAlias(const FormatSettings & settings, Format
if (name == "negate" && typeid_cast<const ASTLiteral *>(&*arguments->children[0]))
settings.ostr << ' ';
FormatStateStacked nested_frame;
nested_frame.need_parens = true;
arguments->formatImpl(settings, state, nested_need_parens);
written = true;
}

View File

@ -248,7 +248,9 @@ void ASTSelectQuery::formatImpl(const FormatSettings & s, FormatState & state, F
else
s.ostr << "\n" << indent_str << "(\n";
table->formatImpl(s, state, frame);
FormatStateStacked frame_with_indent = frame;
++frame_with_indent.indent;
table->formatImpl(s, state, frame_with_indent);
if (s.one_line)
s.ostr << ")";

View File

@ -0,0 +1,416 @@
1 1
3 1
6 1
7 1
9 1
11 1
14 1
17 1
19 1
20 2
26 1
31 1
35 1
36 1
0 159
1 164
3 165
6 162
7 160
9 164
10 81
11 158
13 161
14 160
17 163
19 164
20 159
21 161
22 159
26 160
31 164
35 160
36 161
0 54571
1 55013
3 52912
6 52353
7 54011
9 54138
10 26870
11 54554
13 53951
14 53396
17 55227
19 55115
20 54370
21 54268
22 54620
26 53394
31 54151
35 54328
36 52997
0.125 1
0.5 1
0.05 1
0.143 1
0.056 1
0.048 2
0.083 1
0.25 1
0.1 1
0.028 1
0.027 1
0.031 1
0.067 1
0.037 1
0.045 161
0.125 160
0.5 164
0.05 164
0.143 162
0.091 81
0.056 163
0.048 159
0.083 158
0.25 165
1 159
0.1 164
0.028 160
0.027 161
0.031 164
0.067 160
0.043 159
0.037 160
0.071 161
0.045 54268
0.125 54011
0.5 55013
0.05 55115
0.143 52353
0.091 26870
0.056 55227
0.048 54370
0.083 54554
0.25 52912
1 54571
0.1 54138
0.028 54328
0.027 52997
0.031 54151
0.067 53396
0.043 54620
0.037 53394
0.071 53951
0.5 1
0.05 1
0.25 1
0.048 2
0.083 1
0.125 1
0.031 1
0.143 1
0.028 1
0.067 1
0.027 1
0.056 1
0.037 1
0.1 1
0.5 164
0.05 164
0.25 165
0.048 159
0.091 81
0.043 159
0.071 161
0.083 158
0.125 160
0.031 164
0.143 162
0.028 160
0.067 160
0.045 161
0.027 161
0.056 163
0.037 160
0.1 164
1 159
0.5 55013
0.05 55115
0.25 52912
0.048 54370
0.091 26870
0.043 54620
0.071 53951
0.083 54554
0.125 54011
0.031 54151
0.143 52353
0.028 54328
0.067 53396
0.045 54268
0.027 52997
0.056 55227
0.037 53394
0.1 54138
1 54571
1 1
3 1
6 1
7 1
9 1
11 1
14 1
17 1
19 1
20 2
26 1
31 1
35 1
36 1
0 162
1 158
3 162
6 163
7 162
9 162
10 79
11 162
13 163
14 160
17 163
19 158
20 162
21 157
22 164
26 162
31 161
35 162
36 163
0 54029
1 53772
3 53540
6 54012
7 53910
9 52761
10 26462
11 52701
13 54505
14 53790
17 54064
19 55420
20 56686
21 52639
22 54251
26 53827
31 53574
35 55022
36 53961
1 1
3 1
6 1
7 1
9 1
11 1
14 1
17 1
19 1
20 2
26 1
31 1
35 1
36 1
0 162
1 162
3 162
6 162
7 163
9 163
10 81
11 163
13 162
14 162
17 162
19 162
20 162
21 162
22 162
26 162
31 162
35 162
36 162
0 53988
1 54083
3 53994
6 53948
7 54209
9 54112
10 27000
11 54058
13 54158
14 53926
17 54094
19 54127
20 54065
21 54207
22 54056
26 53982
31 54156
35 53960
36 54076
0.125 1
0.5 1
0.05 1
0.143 1
0.056 1
0.048 2
0.083 1
0.25 1
0.1 1
0.028 1
0.027 1
0.031 1
0.067 1
0.037 1
0.045 162
0.125 163
0.5 162
0.05 162
0.143 162
0.091 81
0.056 162
0.048 162
0.083 163
0.25 162
1 162
0.1 163
0.028 162
0.027 162
0.031 162
0.067 162
0.043 162
0.037 162
0.071 162
0.045 54207
0.125 54209
0.5 54083
0.05 54127
0.143 53948
0.091 27000
0.056 54094
0.048 54065
0.083 54058
0.25 53994
1 53988
0.1 54112
0.028 53960
0.027 54076
0.031 54156
0.067 53926
0.043 54056
0.037 53982
0.071 54158
0.5 1
0.05 1
0.25 1
0.048 2
0.083 1
0.125 1
0.031 1
0.143 1
0.028 1
0.067 1
0.027 1
0.056 1
0.037 1
0.1 1
0.5 162
0.05 162
0.25 162
0.048 162
0.091 81
0.043 162
0.071 162
0.083 163
0.125 163
0.031 162
0.143 162
0.028 162
0.067 162
0.045 162
0.027 162
0.056 162
0.037 162
0.1 163
1 162
0.5 54083
0.05 54127
0.25 53994
0.048 54065
0.091 27000
0.043 54056
0.071 54158
0.083 54058
0.125 54209
0.031 54156
0.143 53948
0.028 53960
0.067 53926
0.045 54207
0.027 54076
0.056 54094
0.037 53982
0.1 54112
1 53988
1 1
3 1
6 1
7 1
9 1
11 1
14 1
17 1
19 1
20 2
26 1
31 1
35 1
36 1
0 162
1 162
3 162
6 162
7 163
9 163
10 81
11 163
13 162
14 162
17 162
19 162
20 162
21 162
22 162
26 162
31 162
35 162
36 162
0 54195
1 54086
3 54127
6 54173
7 53969
9 54257
10 26985
11 53880
13 54105
14 54043
17 54176
19 53913
20 54088
21 53991
22 54112
26 54136
31 54074
35 54153
36 53999

View File

@ -0,0 +1,35 @@
/* uniqHLL12 */
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, round(1/(1 + (3*X*X - 7*X + 11) % 37), 3) AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, round(1/(1 + (3*X*X - 7*X + 11) % 37), 3) AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, round(1/(1 + (3*X*X - 7*X + 11) % 37), 3) AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, round(toFloat32(1/(1 + (3*X*X - 7*X + 11) % 37)), 3) AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, round(toFloat32(1/(1 + (3*X*X - 7*X + 11) % 37)), 3) AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqHLL12(X) FROM (SELECT number AS X, round(toFloat32(1/(1 + (3*X*X - 7*X + 11) % 37)), 3) AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
SELECT Y, uniqHLL12(Z) FROM (SELECT number AS X, IPv4NumToString(toUInt32(X)) AS Z, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqHLL12(Z) FROM (SELECT number AS X, IPv4NumToString(toUInt32(X)) AS Z, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqHLL12(Z) FROM (SELECT number AS X, IPv4NumToString(toUInt32(X)) AS Z, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
/* uniqCombined */
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, round(1/(1 + (3*X*X - 7*X + 11) % 37), 3) AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, round(1/(1 + (3*X*X - 7*X + 11) % 37), 3) AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, round(1/(1 + (3*X*X - 7*X + 11) % 37), 3) AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, round(toFloat32(1/(1 + (3*X*X - 7*X + 11) % 37)), 3) AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, round(toFloat32(1/(1 + (3*X*X - 7*X + 11) % 37)), 3) AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqCombined(X) FROM (SELECT number AS X, round(toFloat32(1/(1 + (3*X*X - 7*X + 11) % 37)), 3) AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;
SELECT Y, uniqCombined(Z) FROM (SELECT number AS X, IPv4NumToString(toUInt32(X)) AS Z, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 15) GROUP BY Y;
SELECT Y, uniqCombined(Z) FROM (SELECT number AS X, IPv4NumToString(toUInt32(X)) AS Z, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 3000) GROUP BY Y;
SELECT Y, uniqCombined(Z) FROM (SELECT number AS X, IPv4NumToString(toUInt32(X)) AS Z, (3*X*X - 7*X + 11) % 37 AS Y FROM system.numbers LIMIT 1000000) GROUP BY Y;