mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 03:12:43 +00:00
Done
This commit is contained in:
parent
4d37e37943
commit
d18aba1194
@ -30,24 +30,6 @@ namespace ErrorCodes
|
|||||||
|
|
||||||
Suggest::Suggest()
|
Suggest::Suggest()
|
||||||
{
|
{
|
||||||
/// Keywords may be not up to date with ClickHouse parser.
|
|
||||||
addWords({"CREATE", "DATABASE", "IF", "NOT", "EXISTS", "TEMPORARY", "TABLE", "ON",
|
|
||||||
"CLUSTER", "DEFAULT", "MATERIALIZED", "ALIAS", "ENGINE", "AS", "VIEW", "POPULATE",
|
|
||||||
"SETTINGS", "ATTACH", "DETACH", "DROP", "RENAME", "TO", "ALTER", "ADD",
|
|
||||||
"MODIFY", "CLEAR", "COLUMN", "AFTER", "COPY", "PROJECT", "PRIMARY", "KEY",
|
|
||||||
"CHECK", "PARTITION", "PART", "FREEZE", "FETCH", "FROM", "SHOW", "INTO",
|
|
||||||
"OUTFILE", "FORMAT", "TABLES", "DATABASES", "LIKE", "PROCESSLIST", "CASE", "WHEN",
|
|
||||||
"THEN", "ELSE", "END", "DESCRIBE", "DESC", "USE", "SET", "OPTIMIZE",
|
|
||||||
"FINAL", "DEDUPLICATE", "INSERT", "VALUES", "SELECT", "DISTINCT", "SAMPLE", "ARRAY",
|
|
||||||
"JOIN", "GLOBAL", "LOCAL", "ANY", "ALL", "INNER", "LEFT", "RIGHT",
|
|
||||||
"FULL", "OUTER", "CROSS", "USING", "PREWHERE", "WHERE", "GROUP", "BY",
|
|
||||||
"WITH", "TOTALS", "HAVING", "ORDER", "COLLATE", "LIMIT", "UNION", "AND",
|
|
||||||
"OR", "ASC", "IN", "KILL", "QUERY", "SYNC", "ASYNC", "TEST",
|
|
||||||
"BETWEEN", "TRUNCATE", "USER", "ROLE", "PROFILE", "QUOTA", "POLICY", "ROW",
|
|
||||||
"GRANT", "REVOKE", "OPTION", "ADMIN", "EXCEPT", "REPLACE", "IDENTIFIED", "HOST",
|
|
||||||
"NAME", "READONLY", "WRITABLE", "PERMISSIVE", "FOR", "RESTRICTIVE", "RANDOMIZED", "INTERVAL",
|
|
||||||
"LIMITS", "ONLY", "TRACKING", "IP", "REGEXP", "ILIKE", "CLEANUP", "APPEND",
|
|
||||||
"IGNORE NULLS", "RESPECT NULLS", "OVER", "PASTE"});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static String getLoadSuggestionQuery(Int32 suggestion_limit, bool basic_suggestion)
|
static String getLoadSuggestionQuery(Int32 suggestion_limit, bool basic_suggestion)
|
||||||
@ -82,6 +64,7 @@ static String getLoadSuggestionQuery(Int32 suggestion_limit, bool basic_suggesti
|
|||||||
add_column("name", "data_type_families", false, {});
|
add_column("name", "data_type_families", false, {});
|
||||||
add_column("name", "merge_tree_settings", false, {});
|
add_column("name", "merge_tree_settings", false, {});
|
||||||
add_column("name", "settings", false, {});
|
add_column("name", "settings", false, {});
|
||||||
|
add_column("keyword", "keywords", false, {});
|
||||||
|
|
||||||
if (!basic_suggestion)
|
if (!basic_suggestion)
|
||||||
{
|
{
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#include "Parsers/CommonParsers.h"
|
||||||
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include <Parsers/obfuscateQueries.h>
|
#include <Parsers/obfuscateQueries.h>
|
||||||
@ -10,6 +12,7 @@
|
|||||||
#include <IO/WriteBuffer.h>
|
#include <IO/WriteBuffer.h>
|
||||||
#include <IO/ReadHelpers.h>
|
#include <IO/ReadHelpers.h>
|
||||||
#include <IO/ReadBufferFromMemory.h>
|
#include <IO/ReadBufferFromMemory.h>
|
||||||
|
#include <iterator>
|
||||||
|
|
||||||
|
|
||||||
namespace DB
|
namespace DB
|
||||||
@ -24,8 +27,13 @@ namespace ErrorCodes
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
const std::unordered_set<std::string_view> keywords
|
const std::unordered_set<std::string_view> & getObfuscateKeywords()
|
||||||
{
|
{
|
||||||
|
static std::unordered_set<std::string_view> instance;
|
||||||
|
|
||||||
|
auto initialize = [&]() mutable
|
||||||
|
{
|
||||||
|
instance = {
|
||||||
"!=",
|
"!=",
|
||||||
"",
|
"",
|
||||||
"%",
|
"%",
|
||||||
@ -51,386 +59,18 @@ const std::unordered_set<std::string_view> keywords
|
|||||||
"]+|[",
|
"]+|[",
|
||||||
"^[",
|
"^[",
|
||||||
"||",
|
"||",
|
||||||
"]+$",
|
"]+$"
|
||||||
"ACCESS",
|
};
|
||||||
"ACTION",
|
|
||||||
"ADD",
|
auto & global_keywords = getAllKeyWords();
|
||||||
"ADMIN",
|
std::copy(global_keywords.begin(), global_keywords.end(), std::inserter(instance, instance.begin()));
|
||||||
"AFTER",
|
return true;
|
||||||
"ALGORITHM",
|
};
|
||||||
"ALIAS",
|
|
||||||
"ALL",
|
static bool initialized = initialize();
|
||||||
"ALLOWED_LATENESS",
|
(void) initialized;
|
||||||
"ALTER",
|
|
||||||
"AND",
|
return instance;
|
||||||
"ANTI",
|
|
||||||
"ANY",
|
|
||||||
"APPLY",
|
|
||||||
"ARRAY",
|
|
||||||
"AS",
|
|
||||||
"ASC",
|
|
||||||
"ASCENDING",
|
|
||||||
"ASOF",
|
|
||||||
"ASSUME",
|
|
||||||
"AST",
|
|
||||||
"ASYNC",
|
|
||||||
"ATTACH",
|
|
||||||
"AUTO_INCREMENT",
|
|
||||||
"BACKUP",
|
|
||||||
"BASE_BACKUP",
|
|
||||||
"BEGIN",
|
|
||||||
"BETWEEN",
|
|
||||||
"BIDIRECTIONAL",
|
|
||||||
"BOTH",
|
|
||||||
"BY",
|
|
||||||
"CACHE",
|
|
||||||
"CACHES",
|
|
||||||
"CASCADE",
|
|
||||||
"CASE",
|
|
||||||
"CASEWITHEXPRESSION",
|
|
||||||
"CAST",
|
|
||||||
"CHANGE",
|
|
||||||
"CHANGEABLE_IN_READONLY",
|
|
||||||
"CHANGED",
|
|
||||||
"CHAR",
|
|
||||||
"CHARACTER",
|
|
||||||
"CHECK",
|
|
||||||
"CLEANUP",
|
|
||||||
"CLEAR",
|
|
||||||
"CLUSTER",
|
|
||||||
"CLUSTER_HOST_IDS",
|
|
||||||
"CLUSTERS",
|
|
||||||
"CN",
|
|
||||||
"CODEC",
|
|
||||||
"COLLATE",
|
|
||||||
"COLLECTION",
|
|
||||||
"COLUMN",
|
|
||||||
"COLUMNS",
|
|
||||||
"COMMENT",
|
|
||||||
"COMMIT",
|
|
||||||
"COMPRESSION",
|
|
||||||
"CONCAT",
|
|
||||||
"CONSTRAINT",
|
|
||||||
"CREATE",
|
|
||||||
"CROSS",
|
|
||||||
"CUBE",
|
|
||||||
"CURRENT",
|
|
||||||
"CURRENT_USER",
|
|
||||||
"DATABASE",
|
|
||||||
"DATABASES",
|
|
||||||
"DATE",
|
|
||||||
"DATE_ADD",
|
|
||||||
"DATEADD",
|
|
||||||
"DATE_DIFF",
|
|
||||||
"DATEDIFF",
|
|
||||||
"DATE_SUB",
|
|
||||||
"DATESUB",
|
|
||||||
"DAY",
|
|
||||||
"DD",
|
|
||||||
"DDL",
|
|
||||||
"DEDUPLICATE",
|
|
||||||
"DEFAULT",
|
|
||||||
"DELAY",
|
|
||||||
"DELETE",
|
|
||||||
"DESC",
|
|
||||||
"DESCENDING",
|
|
||||||
"DESCRIBE",
|
|
||||||
"DETACH",
|
|
||||||
"DETACHED",
|
|
||||||
"DICTIONARIES",
|
|
||||||
"DICTIONARY",
|
|
||||||
"DISK",
|
|
||||||
"DISTINCT",
|
|
||||||
"DIV",
|
|
||||||
"DOUBLE_SHA1_HASH",
|
|
||||||
"DROP",
|
|
||||||
"ELSE",
|
|
||||||
"EMPTY",
|
|
||||||
"ENABLED",
|
|
||||||
"END",
|
|
||||||
"ENFORCED",
|
|
||||||
"ENGINE",
|
|
||||||
"EPHEMERAL",
|
|
||||||
"EQUALS",
|
|
||||||
"ESTIMATE",
|
|
||||||
"EVENT",
|
|
||||||
"EVENTS",
|
|
||||||
"EXCEPT",
|
|
||||||
"EXCHANGE",
|
|
||||||
"EXISTS",
|
|
||||||
"EXPLAIN",
|
|
||||||
"EXPRESSION",
|
|
||||||
"EXTERNAL",
|
|
||||||
"EXTRACT",
|
|
||||||
"FALSE",
|
|
||||||
"FETCH",
|
|
||||||
"FILE",
|
|
||||||
"FILESYSTEM",
|
|
||||||
"FILL",
|
|
||||||
"FILTER",
|
|
||||||
"FINAL",
|
|
||||||
"FIRST",
|
|
||||||
"FOLLOWING",
|
|
||||||
"FOR",
|
|
||||||
"FOREIGN",
|
|
||||||
"FORMAT",
|
|
||||||
"FREEZE",
|
|
||||||
"FROM",
|
|
||||||
"FULL",
|
|
||||||
"FULLTEXT",
|
|
||||||
"FUNCTION",
|
|
||||||
"GLOBAL",
|
|
||||||
"GRANT",
|
|
||||||
"GRANTEES",
|
|
||||||
"GRANTS",
|
|
||||||
"GRANULARITY",
|
|
||||||
"GREATER",
|
|
||||||
"GREATEROREQUALS",
|
|
||||||
"GROUP",
|
|
||||||
"GROUPING",
|
|
||||||
"GROUPS",
|
|
||||||
"HASH",
|
|
||||||
"HAVING",
|
|
||||||
"HDFS",
|
|
||||||
"HH",
|
|
||||||
"HIERARCHICAL",
|
|
||||||
"HOST",
|
|
||||||
"HOUR",
|
|
||||||
"ID",
|
|
||||||
"IDENTIFIED",
|
|
||||||
"IF",
|
|
||||||
"ILIKE",
|
|
||||||
"IN",
|
|
||||||
"INDEX",
|
|
||||||
"INFILE",
|
|
||||||
"INHERIT",
|
|
||||||
"INJECTIVE",
|
|
||||||
"INNER",
|
|
||||||
"INSERT",
|
|
||||||
"INTERPOLATE",
|
|
||||||
"INTERSECT",
|
|
||||||
"INTERVAL",
|
|
||||||
"INTO",
|
|
||||||
"INVISIBLE",
|
|
||||||
"IP",
|
|
||||||
"IS",
|
|
||||||
"IS_OBJECT_ID",
|
|
||||||
"JOIN",
|
|
||||||
"KEY",
|
|
||||||
"KEYED",
|
|
||||||
"KILL",
|
|
||||||
"LAMBDA",
|
|
||||||
"LARGE",
|
|
||||||
"LAST",
|
|
||||||
"LAYOUT",
|
|
||||||
"LEADING",
|
|
||||||
"LEFT",
|
|
||||||
"LESS",
|
|
||||||
"LESSOREQUALS",
|
|
||||||
"LEVEL",
|
|
||||||
"LIFETIME",
|
|
||||||
"LIKE",
|
|
||||||
"LIMIT",
|
|
||||||
"LIMITS",
|
|
||||||
"LINEAR",
|
|
||||||
"LIST",
|
|
||||||
"LITERAL",
|
|
||||||
"LIVE",
|
|
||||||
"LOCAL",
|
|
||||||
"LTRIM",
|
|
||||||
"MATCH",
|
|
||||||
"MATERIALIZE",
|
|
||||||
"MATERIALIZED",
|
|
||||||
"MAX",
|
|
||||||
"MCS",
|
|
||||||
"MEMORY",
|
|
||||||
"MI",
|
|
||||||
"MICROSECOND",
|
|
||||||
"MILLISECOND",
|
|
||||||
"MIN",
|
|
||||||
"MINUS",
|
|
||||||
"MINUTE",
|
|
||||||
"MM",
|
|
||||||
"MOD",
|
|
||||||
"MODIFY",
|
|
||||||
"MONTH",
|
|
||||||
"MOVE",
|
|
||||||
"MS",
|
|
||||||
"MULTIIF",
|
|
||||||
"MUTATION",
|
|
||||||
"NAME",
|
|
||||||
"NAMED",
|
|
||||||
"NANOSECOND",
|
|
||||||
"NEXT",
|
|
||||||
"NO",
|
|
||||||
"NONE",
|
|
||||||
"NOT",
|
|
||||||
"NOTEQUALS",
|
|
||||||
"NOTIN",
|
|
||||||
"NS",
|
|
||||||
"NULL",
|
|
||||||
"NULLS",
|
|
||||||
"OBJECT",
|
|
||||||
"OFFSET",
|
|
||||||
"ON",
|
|
||||||
"ONLY",
|
|
||||||
"OPTIMIZE",
|
|
||||||
"OPTION",
|
|
||||||
"OR",
|
|
||||||
"ORDER",
|
|
||||||
"OUTER",
|
|
||||||
"OUTFILE",
|
|
||||||
"OVER",
|
|
||||||
"OVERRIDE",
|
|
||||||
"PART",
|
|
||||||
"PARTIAL",
|
|
||||||
"PARTITION",
|
|
||||||
"PARTITIONS",
|
|
||||||
"PART_MOVE_TO_SHARD",
|
|
||||||
"PERMANENTLY",
|
|
||||||
"PERMISSIVE",
|
|
||||||
"PIPELINE",
|
|
||||||
"PLAN",
|
|
||||||
"PLUS",
|
|
||||||
"POLICY",
|
|
||||||
"POPULATE",
|
|
||||||
"POSITION",
|
|
||||||
"PRECEDING",
|
|
||||||
"PRECISION",
|
|
||||||
"PREWHERE",
|
|
||||||
"PRIMARY",
|
|
||||||
"PRIVILEGES",
|
|
||||||
"PROCESSLIST",
|
|
||||||
"PROFILE",
|
|
||||||
"PROJECTION",
|
|
||||||
"QQ",
|
|
||||||
"QUARTER",
|
|
||||||
"QUERY",
|
|
||||||
"QUOTA",
|
|
||||||
"RANDOMIZED",
|
|
||||||
"RANGE",
|
|
||||||
"READONLY",
|
|
||||||
"REALM",
|
|
||||||
"RECOMPRESS",
|
|
||||||
"REFERENCES",
|
|
||||||
"REFRESH",
|
|
||||||
"REGEXP",
|
|
||||||
"REGEXPQUOTEMETA",
|
|
||||||
"REMOVE",
|
|
||||||
"RENAME",
|
|
||||||
"REPLACE",
|
|
||||||
"REPLACEREGEXPALL",
|
|
||||||
"REPLACEREGEXPONE",
|
|
||||||
"RESET",
|
|
||||||
"RESTORE",
|
|
||||||
"RESTRICT",
|
|
||||||
"RESTRICTIVE",
|
|
||||||
"RESUME",
|
|
||||||
"REVOKE",
|
|
||||||
"RIGHT",
|
|
||||||
"ROLE",
|
|
||||||
"ROLES",
|
|
||||||
"ROLLBACK",
|
|
||||||
"ROLLUP",
|
|
||||||
"ROW",
|
|
||||||
"ROWS",
|
|
||||||
"RTRIM",
|
|
||||||
"S3",
|
|
||||||
"SALT",
|
|
||||||
"SAMPLE",
|
|
||||||
"SECOND",
|
|
||||||
"SELECT",
|
|
||||||
"SEMI",
|
|
||||||
"SERVER",
|
|
||||||
"SET",
|
|
||||||
"SETS",
|
|
||||||
"SETTING",
|
|
||||||
"SETTINGS",
|
|
||||||
"SHA256_HASH",
|
|
||||||
"SHARD",
|
|
||||||
"SHOW",
|
|
||||||
"SIGNED",
|
|
||||||
"SIMPLE",
|
|
||||||
"SINGLEVALUEORNULL",
|
|
||||||
"SNAPSHOT",
|
|
||||||
"SOURCE",
|
|
||||||
"SPATIAL",
|
|
||||||
"SS",
|
|
||||||
"STDOUT",
|
|
||||||
"STEP",
|
|
||||||
"STORAGE",
|
|
||||||
"STRICT",
|
|
||||||
"STRICTLY_ASCENDING",
|
|
||||||
"SUBPARTITION",
|
|
||||||
"SUBPARTITIONS",
|
|
||||||
"SUBSTRING",
|
|
||||||
"SUSPEND",
|
|
||||||
"SYNC",
|
|
||||||
"SYNTAX",
|
|
||||||
"SYSTEM",
|
|
||||||
"TABLE",
|
|
||||||
"TABLES",
|
|
||||||
"TEMPORARY",
|
|
||||||
"TEST",
|
|
||||||
"THAN",
|
|
||||||
"THEN",
|
|
||||||
"TIES",
|
|
||||||
"TIMESTAMP",
|
|
||||||
"TIMESTAMP_ADD",
|
|
||||||
"TIMESTAMPADD",
|
|
||||||
"TIMESTAMP_DIFF",
|
|
||||||
"TIMESTAMPDIFF",
|
|
||||||
"TIMESTAMP_SUB",
|
|
||||||
"TIMESTAMPSUB",
|
|
||||||
"TO",
|
|
||||||
"TODATE",
|
|
||||||
"TODATETIME",
|
|
||||||
"TOP",
|
|
||||||
"TOTALS",
|
|
||||||
"TRACKING",
|
|
||||||
"TRAILING",
|
|
||||||
"TRANSACTION",
|
|
||||||
"TREE",
|
|
||||||
"TRIGGER",
|
|
||||||
"TRIM",
|
|
||||||
"TRIMBOTH",
|
|
||||||
"TRIMLEFT",
|
|
||||||
"TRIMRIGHT",
|
|
||||||
"TRUE",
|
|
||||||
"TRUNCATE",
|
|
||||||
"TTL",
|
|
||||||
"TUPLE",
|
|
||||||
"TYPE",
|
|
||||||
"UNBOUNDED",
|
|
||||||
"UNFREEZE",
|
|
||||||
"UNION",
|
|
||||||
"UNIQUE",
|
|
||||||
"UNSIGNED",
|
|
||||||
"UNTUPLE",
|
|
||||||
"UPDATE",
|
|
||||||
"URL",
|
|
||||||
"USE",
|
|
||||||
"USER",
|
|
||||||
"USING",
|
|
||||||
"UUID",
|
|
||||||
"VALUES",
|
|
||||||
"VARYING",
|
|
||||||
"VIEW",
|
|
||||||
"VIEWIFPERMITTED",
|
|
||||||
"VISIBLE",
|
|
||||||
"VOLUME",
|
|
||||||
"WATCH",
|
|
||||||
"WATERMARK",
|
|
||||||
"WEEK",
|
|
||||||
"WHEN",
|
|
||||||
"WHERE",
|
|
||||||
"WINDOW",
|
|
||||||
"WITH",
|
|
||||||
"WK",
|
|
||||||
"WRITABLE",
|
|
||||||
"YEAR",
|
|
||||||
"YYYY",
|
|
||||||
"ZKPATH"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// We want to keep some words inside quotes. For example we want to keep HOUR inside:
|
/// We want to keep some words inside quotes. For example we want to keep HOUR inside:
|
||||||
@ -1312,7 +952,7 @@ void obfuscateQueries(
|
|||||||
std::string whole_token_uppercase(whole_token);
|
std::string whole_token_uppercase(whole_token);
|
||||||
Poco::toUpperInPlace(whole_token_uppercase);
|
Poco::toUpperInPlace(whole_token_uppercase);
|
||||||
|
|
||||||
if (keywords.contains(whole_token_uppercase)
|
if (getObfuscateKeywords().contains(whole_token_uppercase)
|
||||||
|| known_identifier_func(whole_token))
|
|| known_identifier_func(whole_token))
|
||||||
{
|
{
|
||||||
/// Keep keywords as is.
|
/// Keep keywords as is.
|
||||||
|
@ -9,6 +9,7 @@ test_shard_localhost: OK
|
|||||||
default_path_test: OK
|
default_path_test: OK
|
||||||
default: OK
|
default: OK
|
||||||
uniqCombined64ForEach: OK
|
uniqCombined64ForEach: OK
|
||||||
|
CHANGEABLE_IN_READONLY: OK
|
||||||
system: OK
|
system: OK
|
||||||
aggregate_function_combinators: OK
|
aggregate_function_combinators: OK
|
||||||
primary_key_bytes_in_memory_allocated: OK
|
primary_key_bytes_in_memory_allocated: OK
|
||||||
|
@ -99,6 +99,8 @@ client_compwords_positive=(
|
|||||||
default
|
default
|
||||||
# system.aggregate_function_combinators
|
# system.aggregate_function_combinators
|
||||||
uniqCombined64ForEach
|
uniqCombined64ForEach
|
||||||
|
# system.keywords
|
||||||
|
CHANGEABLE_IN_READONLY
|
||||||
|
|
||||||
# FIXME: one may add separate case for suggestion_limit
|
# FIXME: one may add separate case for suggestion_limit
|
||||||
# system.databases
|
# system.databases
|
||||||
|
Loading…
Reference in New Issue
Block a user