diff --git a/.github/workflows/trigger-build.yml b/.github/workflows/trigger-build.yml deleted file mode 100644 index 85781d2366c..00000000000 --- a/.github/workflows/trigger-build.yml +++ /dev/null @@ -1,19 +0,0 @@ -# No longer used - -name: Trigger docs website build -on: - workflow_dispatch: - push: - branches: [main] - -jobs: - build: - name: Dispatch to clickhouse-docs-content - runs-on: ubuntu-latest - steps: - - name: Trigger build of docs website - uses: peter-evans/repository-dispatch@v3 - with: - token: ${{ secrets.DEPLOY_DOCS_TOKEN }} - repository: clickhouse/clickhouse-docs-content - event-type: build_docs diff --git a/.github/workflows/vale-linter.yml b/.github/workflows/vale-linter.yml new file mode 100644 index 00000000000..410f59facc5 --- /dev/null +++ b/.github/workflows/vale-linter.yml @@ -0,0 +1,76 @@ +name: Style check + +on: + pull_request: + types: + - synchronize + - reopened + - opened + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + vale: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + path: . + + - name: Install Vale + run: | + sudo snap install vale + vale -v # Verify installation + + - name: Set up Python + run: | + curl -Ls https://astral.sh/uv/install.sh | sh + uv python install 3.12 + + - name: Log changed lines + run: | + # Make sure script is executable + chmod +x scripts/vale/changed_lines_to_json.py + + # Run the script to get changed lines + python scripts/vale/changed_lines_to_json.py ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} + + # Check if the report was created + if [ -f "logs/changed_lines.json" ]; then + echo "Changed lines log generated successfully." + else + echo "Error: Failed to generate changed lines report." + exit 1 + fi + + - name: Run vale on changed files + run: | + # Extract file names from the JSON report + CHANGED_FILES=$(cat logs/changed_lines.json | jq -r '.[].filename' | tr '\n' ' ') + + # Check if we have any files to process + if [ -z "$CHANGED_FILES" ]; then + echo "No changed files to analyze" + exit 0 + fi + + echo "Running Vale on: $CHANGED_FILES" + vale --config='.vale.ini' \ + ${CHANGED_FILES} \ + --output=scripts/vale/vale_output_template.tmpl --no-exit > logs/vale_output.log + + - name: Parse Vale output + run: | + # Read the changed_lines.json to get line numbers + CHANGED_LINES=$(cat logs/changed_lines.json) + + # Run the parser script + python scripts/vale/vale_annotations.py --git-log-file="logs/changed_lines.json" --vale-log-file="logs/vale_output.log" diff --git a/.gitignore b/.gitignore index 2299a319c8f..aed9769beb0 100644 --- a/.gitignore +++ b/.gitignore @@ -57,7 +57,7 @@ docs/settings/beta-and-experimental-features.md **.translated **.translate -ClickHouse/ +/ClickHouse/ # Ignore table of contents files diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 00000000000..3956a8b4fc5 --- /dev/null +++ b/.vale.ini @@ -0,0 +1,5 @@ +StylesPath = styles +MinAlertLevel = suggestion + +[*.{md}] +BasedOnStyles = ClickHouse diff --git a/docs/best-practices/json_type.md b/docs/best-practices/json_type.md index 8b292c907b8..22d3b28f6d5 100644 --- a/docs/best-practices/json_type.md +++ b/docs/best-practices/json_type.md @@ -36,7 +36,7 @@ The JSON type enables efficient columnar storage by flattening paths into subcol Type hits offer more than just a way to avoid unnecessary type inference - they eliminate storage and processing indirection entirely. JSON paths with type hints are always stored just like traditional columns, bypassing the need for [**discriminator columns**](https://clickhouse.com/blog/a-new-powerful-json-data-type-for-clickhouse#storage-extension-for-dynamically-changing-data) or dynamic resolution during query time. This means that with well-defined type hints, nested JSON fields achieve the same performance and efficiency as if they were modeled as top-level fields from the outset. As a result, for datasets that are mostly consistent but still benefit from the flexibility of JSON, type hints provide a convenient way to preserve performance without needing to restructure your schema or ingest pipeline. ::: -## Advanced Features {#advanced-features} +## Advanced features {#advanced-features} * JSON columns **can be used in primary keys** like any other columns. Codecs cannot be specified for a sub-column. * They support introspection via functions like [`JSONAllPathsWithTypes()` and `JSONDynamicPaths()`](/sql-reference/data-types/newjson#introspection-functions). diff --git a/package.json b/package.json index 54877f2b50b..ceab630df57 100644 --- a/package.json +++ b/package.json @@ -25,10 +25,11 @@ "write-heading-ids": "docusaurus write-heading-ids", "run-markdown-linter": "yarn check-markdown", "run-indexer": "bash ./scripts/search/run_indexer.sh", - "check-style": "yarn check-markdown && yarn check-spelling && yarn check-kb", + "check-style": "yarn check-markdown && yarn check-spelling && yarn check-kb && yarn check-prose", "check-spelling": "./scripts/check-doc-aspell", "check-kb": "./scripts/check-kb.sh", - "check-markdown": "./scripts/check-markdown.sh" + "check-markdown": "./scripts/check-markdown.sh", + "check-prose": "./scripts/vale/check-prose.sh" }, "dependencies": { "@clickhouse/click-ui": "^0.0.199", diff --git a/scripts/vale/changed_lines_to_json.py b/scripts/vale/changed_lines_to_json.py new file mode 100644 index 00000000000..f9079621524 --- /dev/null +++ b/scripts/vale/changed_lines_to_json.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +""" +Script to identify changed lines in Markdown files from a git diff. + +This script finds all changed markdown files in the docs directory +and creates a JSON file showing which lines were modified. + +Usage: + python scripts/changed_lines_to_json.py + +Output: + Creates a JSON file at logs/changed_lines.json with format: + [ + { + "filename": "docs/path/to/file.md", + "changed_lines": [11, 15, 20] + }, + ... + ] +""" + +import json +import subprocess +import sys +import re +import os +from pathlib import Path + +def get_changed_files(base_sha, head_sha, pattern=r'^docs/.*\.(md|mdx)$'): + """Get list of changed files matching the pattern.""" + try: + cmd = f"git diff --name-only {base_sha} {head_sha}" + result = subprocess.check_output(cmd, shell=True, text=True) + all_files = result.splitlines() + + # Filter files by pattern + changed_files = [f for f in all_files if re.match(pattern, f) and os.path.isfile(f)] + + print(f"Found {len(changed_files)} changed files matching pattern") + return changed_files + except subprocess.CalledProcessError as e: + print(f"Error getting changed files: {e}") + return [] + +def get_changed_lines(file_path, base_sha, head_sha): + """Get line numbers that were changed in a specific file.""" + try: + cmd = f"git diff --unified=0 {base_sha} {head_sha} -- {file_path}" + diff_output = subprocess.check_output(cmd, shell=True, text=True) + + changed_lines = [] + for line in diff_output.splitlines(): + if line.startswith("@@"): + # Extract line number from git diff header + match = re.search(r"^@@ -[0-9]+(?:,[0-9]+)? \+([0-9]+)(?:,[0-9]+)? @@", line) + if match: + line_number = int(match.group(1)) + changed_lines.append(line_number) + + return changed_lines + except subprocess.CalledProcessError as e: + print(f"Error getting changed lines for {file_path}: {e}") + return [] + +def main(): + if len(sys.argv) < 3: + print("Usage: python changed_lines_to_json.py ") + sys.exit(1) + + base_sha = sys.argv[1] + head_sha = sys.argv[2] + + # Create output directory + Path("logs").mkdir(exist_ok=True) + + # Get changed files + changed_files = get_changed_files(base_sha, head_sha) + + # Process each file + result = [] + for file in changed_files: + print(f"Processing file: {file}") + changed_lines = get_changed_lines(file, base_sha, head_sha) + + if changed_lines: + result.append({ + "filename": file, + "changed_lines": changed_lines + }) + print(f"Found {len(changed_lines)} changed lines in {file}") + + # Write results to JSON file + output_path = "logs/changed_lines.json" + with open(output_path, "w") as f: + json.dump(result, f, indent=2) + + print(f"Generated JSON log at {output_path}") + + # Print the log for debugging + with open(output_path, "r") as f: + print(f.read()) + +if __name__ == "__main__": + main() diff --git a/scripts/vale/check-prose.sh b/scripts/vale/check-prose.sh new file mode 100755 index 00000000000..68c1c49cfa1 --- /dev/null +++ b/scripts/vale/check-prose.sh @@ -0,0 +1,129 @@ +#!/bin/bash +# Script to run Vale on locally changed files or specified files +# Usage: +# 1. Run on changed files: ./run_vale_local.sh +# 2. Run on specific files: ./run_vale_local.sh -f "docs/**/*.md" +# 3. Run on list of files: ./run_vale_local.sh -f "docs/file1.md docs/file2.md" + +# Get script directory and repository root +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" + +# Change to repository root for reliable paths +cd "$REPO_ROOT" + +SCRIPT_NAME=$(basename "$0") + +# Colors for ANSI output formatting +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +# Check that Vale is installed +vale -v +if [ $? -eq 1 ] +then + echo "[$SCRIPT_NAME] Error: Vale not found. Please install vale." + exit 1; +else + echo "[$SCRIPT_NAME] Success: Found Vale." +fi + +# Default values +BASE_BRANCH="main" +FILE_PATTERN="" +USE_CHANGED_FILES=true + +# Parse arguments +while [[ $# -gt 0 ]]; do + case "$1" in + -f|--files) + USE_CHANGED_FILES=false + FILE_PATTERN="$2" + shift 2 + ;; + *) + echo -e "${RED}Invalid argument: $1${NC}" + echo "Usage: ./run_vale_local.sh [-f|--files \"file_pattern_or_list\"]" + exit 1 + ;; + esac +done + +if $USE_CHANGED_FILES; then + # Get current branch name + CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) + + echo -e "${GREEN}Running Vale check on files changed on $CURRENT_BRANCH branch${NC}" + + # Create logs directory + mkdir -p logs + + # Find the merge-base (common ancestor) of main and current branch + MERGE_BASE=$(git merge-base $BASE_BRANCH $CURRENT_BRANCH) + + # Get changed files between merge-base and current branch + CHANGED_FILES=$(git diff --name-only $MERGE_BASE $CURRENT_BRANCH | grep -E '^docs/.*\.(md|mdx)$' | tr '\n' ' ') + + # Also check for uncommitted changes + UNCOMMITTED_FILES=$(git diff --name-only HEAD | grep -E '^docs/.*\.(md|mdx)$' | tr '\n' ' ') + + # And new untracked files that match our pattern + UNTRACKED_FILES=$(git ls-files --others --exclude-standard | grep -E '^docs/.*\.(md|mdx)$' | tr '\n' ' ') + + # Combine all files and remove duplicates + ALL_FILES="$CHANGED_FILES $UNCOMMITTED_FILES $UNTRACKED_FILES" + UNIQUE_FILES=$(echo "$ALL_FILES" | tr ' ' '\n' | sort | uniq | tr '\n' ' ') + CHANGED_FILES="$UNIQUE_FILES" + + # Check if there are any changed files + if [ -z "$CHANGED_FILES" ]; then + echo -e "${GREEN}No changed files to analyze${NC}" + exit 0 + fi + + echo -e "${YELLOW}Running Vale on changed files: $CHANGED_FILES${NC}" + + # Run Vale on the changed files + vale --config="$REPO_ROOT/.vale.ini" $CHANGED_FILES +else + # Run Vale on the specified files using glob pattern or list + echo -e "${YELLOW}Running Vale on files: $FILE_PATTERN${NC}" + + # Handle the case where multiple files or patterns are specified + if [[ "$FILE_PATTERN" == *"*"* ]]; then + # Contains wildcard, use find to expand + FILES_TO_CHECK=$(find . -type f -path "$FILE_PATTERN" | tr '\n' ' ') + + if [ -z "$FILES_TO_CHECK" ]; then + echo -e "${RED}No files found matching pattern: $FILE_PATTERN${NC}" + exit 1 + fi + + echo -e "${YELLOW}Found files: $FILES_TO_CHECK${NC}" + vale --config="$REPO_ROOT/.vale.ini" $FILES_TO_CHECK + else + # Could be a space-separated list of files or a single file + FILES_TO_CHECK="" + + # Split the input by spaces and check each file/pattern + for file in $FILE_PATTERN; do + if [ -f "$file" ]; then + FILES_TO_CHECK="$FILES_TO_CHECK $file" + else + echo -e "${RED}Warning: File not found: $file${NC}" + fi + done + + if [ -z "$FILES_TO_CHECK" ]; then + echo -e "${RED}No valid files found${NC}" + exit 1 + fi + + echo -e "${YELLOW}Checking files: $FILES_TO_CHECK${NC}" + vale --config="$REPO_ROOT/.vale.ini" $FILES_TO_CHECK + fi +fi + +echo -e "${GREEN}Vale check complete${NC}" diff --git a/scripts/vale/test/changed_lines.json b/scripts/vale/test/changed_lines.json new file mode 100644 index 00000000000..82e03e27a83 --- /dev/null +++ b/scripts/vale/test/changed_lines.json @@ -0,0 +1,9 @@ +[ + { + "filename": "docs/best-practices/json_type.md", + "changed_lines": [ + 11, + 29 + ] + } +] diff --git a/scripts/vale/test/test.py b/scripts/vale/test/test.py new file mode 100644 index 00000000000..7060e27f7da --- /dev/null +++ b/scripts/vale/test/test.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +""" +Test script to run vale_annotations.py with sample data +""" +import os +import sys +import subprocess +import json + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +def main(): + """Run the vale_annotations.py script with sample data""" + # Get paths to files + changed_lines_path = 'changed_lines.json' + vale_output_path = 'vale_output.log' + + # Find script path + script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), + "vale_annotations.py") + + # Make sure the script exists + if not os.path.exists(script_path): + print(f"Error: Script not found at {script_path}") + return + + # Check if the input files exist + if not os.path.exists(changed_lines_path): + print(f"Error: Changed lines file not found at {changed_lines_path}") + return + if not os.path.exists(vale_output_path): + print(f"Error: Vale output file not found at {vale_output_path}") + return + + print(f"Running: {script_path} --git-log-file={changed_lines_path} --vale-log-file={vale_output_path}") + result = subprocess.run( + [sys.executable, script_path, f"--git-log-file={changed_lines_path}", + f"--vale-log-file={vale_output_path}"], + capture_output=True, + text=True + ) + + # Print the output + print("STDOUT:") + print(result.stdout) + + print("STDERR:") + print(result.stderr) + + print(f"Return code: {result.returncode}") + +if __name__ == "__main__": + main() diff --git a/scripts/vale/test/vale_output.log b/scripts/vale/test/vale_output.log new file mode 100644 index 00000000000..f49a01aeb5a --- /dev/null +++ b/scripts/vale/test/vale_output.log @@ -0,0 +1,6 @@ +docs/best-practices/json_type.md:9:312:suggestion:ClickHouse.Contractions:Use 'doesn't' instead of 'does not'. +docs/best-practices/json_type.md:11:4:warning:ClickHouse.Headings:'When To Use the JSON type {#when-to-use-the-json-type}' should use sentence-style capitalization. +docs/best-practices/json_type.md:39:4:warning:ClickHouse.Headings:'Advanced Features {#advanced-features}' should use sentence-style capitalization. +docs/best-practices/json_type.md:41:79:suggestion:ClickHouse.Contractions:Use 'can't' instead of 'cannot'. +docs/best-practices/json_type.md:125:57:suggestion:ClickHouse.Contractions:Use 'it's' instead of 'it is'. +docs/best-practices/json_type.md:125:110:suggestion:ClickHouse.Contractions:Use 'won't' instead of 'will not'. diff --git a/scripts/vale/vale_annotations.py b/scripts/vale/vale_annotations.py new file mode 100644 index 00000000000..b74c757e66a --- /dev/null +++ b/scripts/vale/vale_annotations.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 + +import json +import argparse +import sys + +def process_data(data): + logs = [] + for line in data.splitlines(): + try: + line_array = (line.split(':', 5)) + logs.append({ + 'Filename': line_array[0], + 'Severity': line_array[3], + 'Check': line_array[4], + 'Line': int(line_array[1]), + 'Col': int(line_array[2]), + 'Message': line_array[5] + }) + except: print('Did not process line: ', line) + return logs + +# Compares git log data and vale log data and returns the GitHub annotations +def compare_log(git_filename, vale_log): + severity = vale_log.get('Severity') + line = vale_log.get('Line') + column = vale_log.get('Col') + title = vale_log.get('Check') + message = vale_log.get('Message') + # Convert vale severity to Github annotation level + match severity: + case 'suggestion': level = 'notice' + case 'warning': level = 'warning' + case 'error': level = 'error' + if level == 'notice': + message = 'Suggestion: ' + message + + command = f"::{level} file={git_filename},line={line},col={column},title={title}::{message}" + error_present = True if severity == 'error' else False + return command, error_present + +if __name__ == '__main__': + log_list = [] + error_list = [] + parser = argparse.ArgumentParser() + parser.add_argument('--git-log-file', help='Path to JSON file with changed lines data', type=str) + parser.add_argument('--vale-log-file', help='Path to Vale output log file', type=str) + args = parser.parse_args() + + with open(args.git_log_file, 'r') as f: + git_data = json.load(f) + with open(args.vale_log_file, 'r') as f: + vale_logs = process_data(f.read()) + + if vale_logs: + for vale_log in vale_logs: + vale_filename = vale_log['Filename'] + line = vale_log['Line'] + + for item in git_data: + git_filename = item['filename'] + git_line_data = item['changed_lines'] + if vale_filename == git_filename and line in git_line_data: + try: + annotation, error_present = compare_log(git_filename, vale_log) + log_list.append(annotation) + error_list.append(error_present) + except: + raise Exception(f'Failed to parse log entry for {git_filename}') + + for entry in log_list: + print(entry) + + if any(error_list): + print("\nYour PR contains a style error flagged by Vale. " + "Please see comments in your PR.") + sys.exit(1) diff --git a/scripts/vale/vale_output_template.tmpl b/scripts/vale/vale_output_template.tmpl new file mode 100644 index 00000000000..5a18b6e19c0 --- /dev/null +++ b/scripts/vale/vale_output_template.tmpl @@ -0,0 +1,2 @@ +{{range .Files}}{{$file_name := .Path}}{{range .Alerts}}{{$file_name}}:{{.Line}}:{{(index .Span 0)}}:{{.Severity}}:{{.Check}}:{{.Message}} +{{end}}{{end}} \ No newline at end of file diff --git a/styles/.vale-config/5-MDX.ini b/styles/.vale-config/5-MDX.ini new file mode 100644 index 00000000000..02ea72b3858 --- /dev/null +++ b/styles/.vale-config/5-MDX.ini @@ -0,0 +1,5 @@ +[*.mdx] +# Exclude: +# +# - Non-JS inline expressions (which cause Acorn to throw) +TokenIgnores = '({#[^\n}]+})(?!`)' diff --git a/styles/ClickHouse/Ability.yml b/styles/ClickHouse/Ability.yml new file mode 100644 index 00000000000..9bfee047f4d --- /dev/null +++ b/styles/ClickHouse/Ability.yml @@ -0,0 +1,15 @@ +--- +name: gitlab_base.Ability +description: | + Focus on the feature, not the user's capabilities. +extends: existence +message: "Try to replace ('%s') with more precise language, unless this content is about security. See the word list for details." +ignorecase: true +vocab: false +level: suggestion +link: https://docs.gitlab.com/development/documentation/styleguide/word_list/#ability-able +tokens: + - ability to + - ability + - able to + - able diff --git a/styles/ClickHouse/BackTicksFormats.yml b/styles/ClickHouse/BackTicksFormats.yml new file mode 100644 index 00000000000..e18c1ce697a --- /dev/null +++ b/styles/ClickHouse/BackTicksFormats.yml @@ -0,0 +1,109 @@ +extends: existence +message: "ClickHouse formats '%s' should be enclosed in backticks." +level: suggestion +ignorecase: true +tokens: + -'One' + -'ParquetMetadata' + -'MySQLDump' + -'CapnProto' + -'PostgreSQLWire' + -'TSV' + -'PrettyCompactMonoBlock' + -'JSONEachRowWithProgress' + -'JSONCompactStrings' + -'JSONStringsEachRowWithProgress' + -'Vertical' + -'PrettySpaceNoEscapesMonoBlock' + -'Null' + -'PrettySpaceNoEscapes' + -'Markdown' + -'Form' + -'ODBCDriver2' + -'PrettySpaceMonoBlock' + -'PrettyCompactNoEscapesMonoBlock' + -'PrettyCompactNoEscapes' + -'JSONStringsEachRow' + -'PrettyCompact' + -'Values' + -'PrettyNoEscapesMonoBlock' + -'PrettyNoEscapes' + -'PrettyMonoBlock' + -'AvroConfluent' + -'RawBLOB' + -'Parquet' + -'JSONCompactEachRowWithProgress' + -'CustomSeparatedIgnoreSpacesWithNamesAndTypes' + -'CustomSeparatedIgnoreSpacesWithNames' + -'CustomSeparatedWithNamesAndTypes' + -'PrettySpace' + -'Arrow' + -'JSONAsString' + -'CustomSeparatedWithNames' + -'CustomSeparated' + -'BSONEachRow' + -'Template' + -'XML' + -'ProtobufList' + -'ProtobufSingle' + -'JSONColumnsWithMetadata' + -'TSVRawWithNamesAndTypes' + -'Npy' + -'TemplateIgnoreSpaces' + -'JSONCompactColumns' + -'JSONColumns' + -'ArrowStream' + -'JSONObjectEachRow' + -'NDJSON' + -'PrettyNDJSON' + -'LineAsStringWithNamesAndTypes' + -'PrettyJSONLines' + -'CSVWithNamesAndTypes' + -'ORC' + -'Protobuf' + -'PrettyJSONEachRow' + -'JSONStrings' + -'JSON' + -'RawWithNames' + -'MsgPack' + -'LineAsStringWithNames' + -'JSONCompactStringsEachRowWithProgress' + -'LineAsString' + -'RowBinaryWithNames' + -'RowBinary' + -'SQLInsert' + -'Native' + -'Prometheus' + -'TSVRaw' + -'JSONLines' + -'CustomSeparatedIgnoreSpaces' + -'JSONAsObject' + -'HiveText' + -'RowBinaryWithDefaults' + -'JSONCompactStringsEachRowWithNamesAndTypes' + -'RawWithNamesAndTypes' + -'JSONCompactStringsEachRow' + -'TabSeparatedWithNamesAndTypes' + -'JSONCompactStringsEachRowWithNames' + -'JSONCompactEachRowWithNamesAndTypes' + -'JSONCompactEachRow' + -'TSKV' + -'Avro' + -'JSONEachRow' + -'Pretty' + -'TSVRawWithNames' + -'TabSeparatedRaw' + -'Regexp' + -'TabSeparatedRawWithNamesAndTypes' + -'MySQLWire' + -'CSVWithNames' + -'Raw' + -'TabSeparatedRawWithNames' + -'RowBinaryWithNamesAndTypes' + -'JSONCompact' + -'CSV' + -'JSONCompactEachRowWithNames' + -'TSVWithNamesAndTypes' + -'TabSeparatedWithNames' + -'TabSeparated' + -'TSVWithNames' diff --git a/styles/ClickHouse/BackTicksFunctions.yml b/styles/ClickHouse/BackTicksFunctions.yml new file mode 100644 index 00000000000..768e25b5a35 --- /dev/null +++ b/styles/ClickHouse/BackTicksFunctions.yml @@ -0,0 +1,1611 @@ +extends: existence +message: "ClickHouse function '%s' should be enclosed in backticks." +level: suggestion +ignorecase: true +tokens: + -'trunc' + -'ceil' + -'floor' + -'roundBankers' + -'log2' + -'regionToName' + -'regionIn' + -'regionToArea' + -'regionToCity' + -'cutQueryString' + -'roundDown' + -'UUIDStringToNum' + -'multiFuzzyMatchAnyIndex' + -'blockSerializedSize' + -'generateSerialID' + -'polygonsDistanceCartesian' + -'unbin' + -'unhex' + -'hex' + -'toIntervalHour' + -'toIntervalMinute' + -'toIntervalMillisecond' + -'parseDateTime64BestEffortUSOrZero' + -'parseDateTime64BestEffortUS' + -'parseDateTime64BestEffortOrZero' + -'parseDateTime64BestEffort' + -'parseDateTime32BestEffort' + -'detectProgrammingLanguage' + -'parseDateTimeBestEffortUSOrNull' + -'parseDateTimeBestEffortOrNull' + -'parseDateTimeBestEffortOrZero' + -'toIPv6OrNull' + -'toUUIDOrNull' + -'toDecimal64OrNull' + -'toDecimal32OrNull' + -'toDateTimeOrNull' + -'toDate32OrNull' + -'toDateOrNull' + -'toBFloat16OrNull' + -'toInt128OrNull' + -'UUIDv7ToDateTime' + -'toInt64OrNull' + -'parseDateTimeBestEffortUSOrZero' + -'toInt32OrNull' + -'toUInt128OrNull' + -'toUInt64OrNull' + -'toIPv6OrZero' + -'toDecimal256OrZero' + -'toDecimal64OrZero' + -'toDecimal32OrZero' + -'toDateTimeOrZero' + -'toDate32OrZero' + -'toDateOrZero' + -'toFloat64OrZero' + -'toBFloat16OrZero' + -'toInt128OrZero' + -'toInt8OrZero' + -'toUInt128OrZero' + -'toUInt32OrZero' + -'toIPv6' + -'toIPv4' + -'toDateTime' + -'toDate32' + -'DATE' + -'toDate' + -'toDecimal128' + -'toDecimal32' + -'toFloat64' + -'toFloat32' + -'toBFloat16' + -'toInt128' + -'toInt64' + -'toInt32' + -'toInt16' + -'toUInt256' + -'toUInt64' + -'formatDateTimeInJodaSyntax' + -'bitmapContains' + -'bitmapXor' + -'bitmapOr' + -'bitmapAnd' + -'bitmapAndnotCardinality' + -'bitmapOrCardinality' + -'bitmapAndCardinality' + -'bitmapCardinality' + -'bitmapBuild' + -'h3GetIndexesFromUnidirectionalEdge' + -'alphaTokens' + -'halfMD5' + -'wyHash64' + -'xxHash64' + -'toUInt8OrNull' + -'hiveHash' + -'javaHashUTF16LE' + -'javaHash' + -'metroHash64' + -'farmFingerprint64' + -'regionToTopContinent' + -'cityHash64' + -'addMicroseconds' + -'formatDateTime' + -'sipHash128Keyed' + -'sipHash128' + -'__bitBoolMaskOr' + -'ngramSearchCaseInsensitiveUTF8' + -'ngramSearchCaseInsensitive' + -'ngramDistance' + -'extractAllGroupsVertical' + -'getTypeSerializationStreams' + -'gcd' + -'substringIndex' + -'less' + -'atan' + -'multiSearchAllPositionsCaseInsensitiveUTF8' + -'detectTonality' + -'bitXor' + -'round' + -'hasTokenCaseInsensitiveOrNull' + -'hasTokenCaseInsensitive' + -'geoToH3' + -'intExp10' + -'toInt16OrNull' + -'timeSlots' + -'char' + -'addDays' + -'erf' + -'toIntervalSecond' + -'kostikConsistentHash' + -'proportionsZTest' + -'if' + -'regexpQuoteMeta' + -'toUTCTimestamp' + -'cbrt' + -'JSONExtractKeys' + -'JSONExtractKeysAndValuesRaw' + -'toUInt16OrNull' + -'JSONExtractRaw' + -'JSONExtractString' + -'arrayReduce' + -'JSONExtractUInt' + -'JSONType' + -'bitmapMin' + -'JSONKey' + -'extract' + -'JSONLength' + -'isValidJSON' + -'JSONHas' + -'extractAllGroupsHorizontal' + -'reverse' + -'simpleJSONHas' + -'arrayPartialReverseSort' + -'toHour' + -'arrayPartialSort' + -'bitRotateRight' + -'arrayReverseSort' + -'arraySort' + -'isConstant' + -'toIntervalQuarter' + -'multiSearchAny' + -'pointInEllipses' + -'right' + -'coalesce' + -'intHash64' + -'intHash32' + -'arrayStringConcat' + -'splitByNonAlpha' + -'parseDateTimeBestEffort' + -'toDecimal128OrNull' + -'locate' + -'toInt256' + -'formatReadableDecimalSize' + -'FQDN' + -'lcm' + -'base64URLEncode' + -'jaroWinklerSimilarity' + -'stringJaccardIndexUTF8' + -'stringJaccardIndex' + -'damerauLevenshteinDistance' + -'UUIDToNum' + -'editDistanceUTF8' + -'editDistance' + -'toIPv4OrZero' + -'byteHammingDistance' + -'bitShiftLeft' + -'bitCount' + -'SHA512_256' + -'SHA384' + -'h3Distance' + -'SHA256' + -'MD5' + -'extractGroups' + -'transactionLatestSnapshot' + -'transactionID' + -'polygonsEqualsCartesian' + -'arraySlice' + -'hilbertEncode' + -'arrayJaccardIndex' + -'base64Encode' + -'__actionName' + -'arrayReduceInRanges' + -'polygonsDistanceSpherical' + -'bitHammingDistance' + -'bitRotateLeft' + -'isNaN' + -'intDivOrZero' + -'__bitSwapLastTwo' + -'lowCardinalityKeys' + -'timeSlot' + -'changeMinute' + -'changeDay' + -'changeYear' + -'bitTestAny' + -'bitOr' + -'showCertificate' + -'blockSize' + -'isNotNull' + -'seriesPeriodDetectFFT' + -'leftUTF8' + -'lowCardinalityIndices' + -'bitmapHasAny' + -'generateSnowflakeID' + -'arrayEnumerateUniq' + -'fromModifiedJulianDayOrNull' + -'fromModifiedJulianDay' + -'toIntervalMonth' + -'fromUTCTimestamp' + -'defaultProfiles' + -'enabledProfiles' + -'convertCharset' + -'arrayRandomSample' + -'cosh' + -'countDigits' + -'currentDatabase' + -'hilbertDecode' + -'currentQueryID' + -'exp' + -'replaceRegexpAll' + -'toDayOfMonth' + -'currentRoles' + -'h3ExactEdgeLengthKm' + -'positiveModulo' + -'bitmaskToList' + -'bitmaskToArray' + -'bitPositionsToArray' + -'currentSchemas' + -'currentUser' + -'neighbor' + -'sipHash64Keyed' + -'extractAll' + -'__bitWrapperFunc' + -'lemmatize' + -'dateTrunc' + -'toNullable' + -'formatReadableSize' + -'h3GetResolution' + -'toInt256OrNull' + -'toUInt32' + -'decodeHTMLComponent' + -'fragment' + -'polygonsSymDifferenceSpherical' + -'substringIndexUTF8' + -'polygonsSymDifferenceCartesian' + -'visibleWidth' + -'toFloat32OrNull' + -'h3IndexesAreNeighbors' + -'endsWithUTF8' + -'degrees' + -'exp2' + -'svg' + -'modulo' + -'getOSKernelVersion' + -'bitTest' + -'countSubstringsCaseInsensitive' + -'changeHour' + -'wordShingleMinHashArgCaseInsensitive' + -'wordShingleMinHashArg' + -'ngramMinHashArgUTF8' + -'ngramMinHashArg' + -'wordShingleMinHashCaseInsensitiveUTF8' + -'arrayDifference' + -'wordShingleMinHash' + -'ngramMinHash' + -'formatRowNoNewline' + -'wordShingleSimHashCaseInsensitiveUTF8' + -'wordShingleSimHashUTF8' + -'parseDateTime32BestEffortOrNull' + -'cutToFirstSignificantSubdomainWithWWW' + -'mapApply' + -'wordShingleSimHashCaseInsensitive' + -'finalizeAggregation' + -'ngramSimHashCaseInsensitiveUTF8' + -'ngramSimHash' + -'regionToCountry' + -'generateUUIDv7' + -'toTimezone' + -'notEmpty' + -'tumbleEnd' + -'isInfinite' + -'murmurHash2_32' + -'exp10' + -'replaceRegexpOne' + -'isNull' + -'factorial' + -'parseDateTime' + -'initialQueryStartTime' + -'cutToFirstSignificantSubdomainCustomRFC' + -'dictGetInt16OrDefault' + -'cutToFirstSignificantSubdomainCustom' + -'JSONExtractArrayRaw' + -'atan2' + -'joinGetOrNull' + -'lengthUTF8' + -'aes_decrypt_mysql' + -'position' + -'formatQuerySingleLine' + -'mapAll' + -'overlay' + -'toStartOfMinute' + -'tokens' + -'wordShingleSimHash' + -'arrayCumSum' + -'IPv4StringToNumOrNull' + -'trimLeft' + -'formatReadableQuantity' + -'countMatchesCaseInsensitive' + -'toQuarter' + -'isFinite' + -'countMatches' + -'fromDaysSinceYearZero' + -'arrayWithConstant' + -'toStartOfNanosecond' + -'fromUnixTimestamp64Second' + -'countEqual' + -'JSONArrayLength' + -'timezone' + -'dynamicElement' + -'divide' + -'uniqThetaNot' + -'h3EdgeAngle' + -'acos' + -'fromUnixTimestamp64Micro' + -'cos' + -'windowID' + -'multiMatchAnyIndex' + -'hopStart' + -'dateDiff' + -'hop' + -'ngrams' + -'tumble' + -'hasAny' + -'fuzzBits' + -'formatQuerySingleLineOrNull' + -'randLogNormal' + -'ifNull' + -'generateULID' + -'bar' + -'space' + -'toMillisecond' + -'parseDateTime64InJodaSyntax' + -'generateUUIDv4' + -'formatReadableTimeDelta' + -'geohashEncode' + -'cutToFirstSignificantSubdomainCustomWithWWW' + -'addHours' + -'arrayFill' + -'toFloat32OrZero' + -'bitAnd' + -'dateName' + -'stringToH3' + -'decodeXMLComponent' + -'subtractMicroseconds' + -'parseDateTime64InJodaSyntaxOrNull' + -'getMaxTableNameLengthForDatabase' + -'toDecimal128OrZero' + -'toInt16OrDefault' + -'extractURLParameters' + -'toIPv6OrDefault' + -'toIPv4OrDefault' + -'emptyArrayInt64' + -'arraySum' + -'L2SquaredDistance' + -'toDecimal256OrDefault' + -'SHA224' + -'partitionId' + -'mapSubtract' + -'roundToExp2' + -'toDecimal32OrDefault' + -'addMinutes' + -'toDate32OrDefault' + -'toInt256OrDefault' + -'toInt8OrDefault' + -'__bitBoolMaskAnd' + -'hasSubstr' + -'toUInt64OrDefault' + -'toUInt16OrDefault' + -'shardNum' + -'h3GetFaces' + -'__getScalar' + -'arrayExists' + -'JSONSharedDataPaths' + -'JSONDynamicPathsWithTypes' + -'geoDistance' + -'isIPv4String' + -'JSON_QUERY' + -'greater' + -'gccMurmurHash' + -'reverseUTF8' + -'murmurHash3_64' + -'greaterOrEquals' + -'printf' + -'CRC32' + -'domainWithoutWWWRFC' + -'arrayEnumerateDenseRanked' + -'queryString' + -'getSubcolumn' + -'h3HexAreaM2' + -'toYYYYMMDDhhmmss' + -'h3NumHexagons' + -'reinterpretAsUUID' + -'simpleJSONExtractFloat' + -'h3EdgeLengthM' + -'arrayRotateLeft' + -'toDateTimeOrDefault' + -'changeMonth' + -'cutToFirstSignificantSubdomainWithWWWRFC' + -'intDiv' + -'dateTimeToSnowflake' + -'domain' + -'cutToFirstSignificantSubdomain' + -'getMacro' + -'toYear' + -'log' + -'errorCodeToName' + -'endsWith' + -'rand64' + -'h3GetDestinationIndexFromUnidirectionalEdge' + -'roundDuration' + -'URLPathHierarchy' + -'h3HexRing' + -'h3GetUnidirectionalEdgesFromHexagon' + -'simpleJSONExtractUInt' + -'dictGetUInt16OrDefault' + -'h3IsPentagon' + -'ngramMinHashUTF8' + -'compareSubstrings' + -'plus' + -'readWKTMultiPolygon' + -'subtractYears' + -'detectLanguageMixed' + -'acosh' + -'arrayPushBack' + -'accurateCastOrDefault' + -'domainWithoutWWW' + -'hasSubsequenceCaseInsensitive' + -'ngramSearchUTF8' + -'JSONExtractBool' + -'tupleHammingDistance' + -'h3ExactEdgeLengthRads' + -'dictGetDateTime' + -'h3ToGeoBoundary' + -'arrayShiftRight' + -'h3ToString' + -'arrayRotateRight' + -'hasSubsequence' + -'JSON_VALUE' + -'JSONExtract' + -'tumbleStart' + -'bitShiftRight' + -'today' + -'tryBase58Decode' + -'flattenTuple' + -'polygonsWithinSpherical' + -'tryPunycodeDecode' + -'L2Normalize' + -'YYYYMMDDhhmmssToDateTime64' + -'pow' + -'geohashesInBox' + -'hasSubsequenceUTF8' + -'rightPadUTF8' + -'rightPad' + -'aes_encrypt_mysql' + -'hasTokenOrNull' + -'dictGetUUIDOrDefault' + -'hasToken' + -'idnaEncode' + -'tan' + -'substring' + -'identity' + -'regionHierarchy' + -'toDateTime64OrNull' + -'polygonsWithinCartesian' + -'materialize' + -'toDecimalString' + -'idnaDecode' + -'SHA512' + -'notLike' + -'shardCount' + -'geohashDecode' + -'tryIdnaEncode' + -'readWKTMultiLineString' + -'ignore' + -'h3GetUnidirectionalEdgeBoundary' + -'globalNullInIgnoreSet' + -'fromDaysSinceYearZero32' + -'globalNotInIgnoreSet' + -'splitByChar' + -'toRelativeDayNum' + -'notInIgnoreSet' + -'globalInIgnoreSet' + -'arrayConcat' + -'globalNotNullIn' + -'sqrt' + -'notNullIn' + -'globalNullIn' + -'nullIn' + -'dictGetHierarchy' + -'globalIn' + -'indexHint' + -'toDateTime32' + -'arraySplit' + -'initcapUTF8' + -'queryID' + -'appendTrailingCharIfAbsent' + -'negate' + -'structureToProtobufSchema' + -'polygonAreaSpherical' + -'base58Encode' + -'ngramDistanceCaseInsensitive' + -'connectionId' + -'startsWith' + -'initialQueryID' + -'murmurHash2_64' + -'parseReadableSizeOrNull' + -'h3GetBaseCell' + -'bitmapHasAll' + -'base58Decode' + -'isIPAddressInRange' + -'JSON_EXISTS' + -'dictGetDescendants' + -'dictGetChildren' + -'dictIsIn' + -'dictGetStringOrDefault' + -'evalMLMethod' + -'dictGetIPv6OrDefault' + -'_CAST' + -'dictGetIPv4OrDefault' + -'UTCTimestamp' + -'dictGetFloat64OrDefault' + -'s2RectAdd' + -'dictGetFloat32OrDefault' + -'keccak256' + -'dictGetInt64OrDefault' + -'hasAll' + -'bitTestAll' + -'normalizedQueryHash' + -'dictGetInt32OrDefault' + -'globalNotIn' + -'dateTime64ToSnowflake' + -'dictGetInt8OrDefault' + -'wordShingleMinHashCaseInsensitive' + -'dictGetDateOrDefault' + -'dictGetUInt64OrDefault' + -'dictGetUInt32OrDefault' + -'h3ExactEdgeLengthM' + -'countSubstringsCaseInsensitiveUTF8' + -'dictGetString' + -'dictGetIPv6' + -'multiSearchFirstPosition' + -'dictGetDate' + -'YYYYMMDDToDate32' + -'reinterpretAsInt32' + -'dictGetFloat64' + -'greatCircleAngle' + -'IPv6StringToNum' + -'dictGetInt64' + -'min2' + -'dictGetInt16' + -'isValidUTF8' + -'h3PointDistKm' + -'dictGetInt8' + -'dictGetUInt64' + -'dictGetUInt32' + -'dictGetAll' + -'h3GetPentagonIndexes' + -'emptyArrayInt16' + -'replaceOne' + -'dictGetOrDefault' + -'isNotDistinctFrom' + -'addWeeks' + -'lgamma' + -'h3PointDistM' + -'runningDifferenceStartingWithFirstValue' + -'h3CellAreaM2' + -'normalizeUTF8NFC' + -'like' + -'cosineDistance' + -'extractURLParameterNames' + -'LinfNormalize' + -'toIntervalMicrosecond' + -'L1Normalize' + -'toIntervalNanosecond' + -'addDate' + -'tupleIntDivOrZero' + -'LpDistance' + -'LinfDistance' + -'JSONSharedDataPathsWithTypes' + -'dictHas' + -'L1Distance' + -'getSetting' + -'LpNorm' + -'toYYYYMM' + -'L2Norm' + -'readWKTRing' + -'caseWithExpression' + -'extractTextFromHTML' + -'L1Norm' + -'fromUnixTimestamp64Milli' + -'addSeconds' + -'tupleIntDivOrZeroByNumber' + -'toUnixTimestamp' + -'clamp' + -'h3GetRes0Indexes' + -'tupleIntDivByNumber' + -'h3ToCenterChild' + -'dictGetFloat32' + -'tupleModuloByNumber' + -'ngramSimHashUTF8' + -'emptyArrayUInt8' + -'dictGetUInt8' + -'subtractTupleOfIntervals' + -'toInt128OrDefault' + -'addTupleOfIntervals' + -'__scalarSubqueryResult' + -'tupleDivide' + -'tupleMultiply' + -'least' + -'tupleMinus' + -'JSONAllPathsWithTypes' + -'log10' + -'lower' + -'hasSubsequenceCaseInsensitiveUTF8' + -'pi' + -'randCanonical' + -'lowerUTF8' + -'YYYYMMDDToDate' + -'subDate' + -'ngramMinHashCaseInsensitiveUTF8' + -'makeDateTime64' + -'regionToContinent' + -'makeDate32' + -'makeDate' + -'filesystemUnreserved' + -'bitNot' + -'CRC64' + -'JSONDynamicPaths' + -'has' + -'leftPad' + -'reinterpretAsDate' + -'filesystemAvailable' + -'firstLine' + -'currentProfiles' + -'CAST' + -'mapUpdate' + -'match' + -'JSONExtractInt' + -'subtractMonths' + -'toUUIDOrZero' + -'h3GetUnidirectionalEdge' + -'log1p' + -'isZeroOrNull' + -'leftPadUTF8' + -'toUInt8OrDefault' + -'notILike' + -'toDateTime64OrDefault' + -'concatWithSeparatorAssumeInjective' + -'concatWithSeparator' + -'monthName' + -'dictGetInt32' + -'mortonEncode' + -'toTypeName' + -'polygonsUnionCartesian' + -'toDaysSinceYearZero' + -'reinterpretAsUInt16' + -'arraySymmetricDifference' + -'addYears' + -'toStartOfSecond' + -'enabledRoles' + -'concat' + -'mapAdd' + -'ngramSearch' + -'fromUnixTimestamp64Nano' + -'lessOrEquals' + -'subtractQuarters' + -'addMilliseconds' + -'multiSearchFirstPositionUTF8' + -'encrypt' + -'arrayUnion' + -'multiSearchAllPositions' + -'toUInt16' + -'upper' + -'arrayFlatten' + -'tupleIntDiv' + -'toInt256OrZero' + -'pointInPolygon' + -'splitByWhitespace' + -'countSubstrings' + -'parseDateTimeOrZero' + -'reinterpretAsFloat64' + -'s2GetNeighbors' + -'multiSearchAnyCaseInsensitive' + -'ascii' + -'bitmapMax' + -'ngramDistanceCaseInsensitiveUTF8' + -'h3GetOriginIndexFromUnidirectionalEdge' + -'parseDateTime32BestEffortOrZero' + -'blockNumber' + -'rightUTF8' + -'cutURLParameter' + -'positionCaseInsensitiveUTF8' + -'multiSearchFirstPositionCaseInsensitive' + -'indexOf' + -'emptyArrayString' + -'tryBase64URLDecode' + -'h3IsValid' + -'emptyArrayUInt32' + -'concatAssumeInjective' + -'toStartOfHour' + -'isDecimalOverflow' + -'sinh' + -'toModifiedJulianDayOrNull' + -'multiplyDecimal' + -'normalizeQuery' + -'randExponential' + -'randomString' + -'normalizeUTF8NFKD' + -'toUnixTimestamp64Milli' + -'firstSignificantSubdomainCustom' + -'simpleJSONExtractBool' + -'normalizeUTF8NFKC' + -'multiSearchFirstIndexCaseInsensitiveUTF8' + -'normalizeUTF8NFD' + -'toDateTime64OrZero' + -'tid' + -'port' + -'subtractSeconds' + -'ifNotFinite' + -'bitmapSubsetInRange' + -'nullIf' + -'toDecimal256OrNull' + -'multiMatchAny' + -'parseDateTime64OrNull' + -'extractKeyValuePairsWithEscaping' + -'parseDateTime64OrZero' + -'snowflakeToDateTime64' + -'parseDateTimeOrNull' + -'cutToFirstSignificantSubdomainCustomWithWWWRFC' + -'empty' + -'dotProduct' + -'emptyArrayUInt16' + -'parseReadableSizeOrZero' + -'parseReadableSize' + -'parseTimeDelta' + -'tupleMultiplyByNumber' + -'mapFromArrays' + -'randomStringUTF8' + -'max2' + -'stem' + -'subtractMinutes' + -'e' + -'arrayProduct' + -'polygonsIntersectionSpherical' + -'wkt' + -'soundex' + -'polygonPerimeterSpherical' + -'polygonsIntersectionCartesian' + -'h3PointDistRads' + -'polygonsUnionSpherical' + -'greatCircleDistance' + -'bitmapAndnot' + -'bitmapXorCardinality' + -'IPv6StringToNumOrDefault' + -'tryDecrypt' + -'toInt32OrZero' + -'randStudentT' + -'IPv6NumToString' + -'byteSize' + -'IPv4StringToNum' + -'positionUTF8' + -'MACStringToNum' + -'UUIDNumToString' + -'IPv4StringToNumOrDefault' + -'IPv4CIDRToRange' + -'MACStringToOUI' + -'subtractHours' + -'geoToS2' + -'MACNumToString' + -'cutToFirstSignificantSubdomainRFC' + -'wordShingleMinHashUTF8' + -'toBool' + -'radians' + -'reinterpretAsUInt64' + -'erfc' + -'hopEnd' + -'map' + -'rand' + -'toMonthNumSinceEpoch' + -'minSampleSizeContinuous' + -'tgamma' + -'multiSearchAllPositionsCaseInsensitive' + -'randConstant' + -'randPoisson' + -'nowInBlock' + -'randNegativeBinomial' + -'toUnixTimestamp64Micro' + -'randBinomial' + -'splitByRegexp' + -'mapContains' + -'randBernoulli' + -'sipHash64' + -'catboostEvaluate' + -'randNormal' + -'arrayReverseFill' + -'in' + -'ngramMinHashArgCaseInsensitiveUTF8' + -'pathFull' + -'xxh3' + -'trimBoth' + -'normalizeQueryKeepNames' + -'toDateTime64' + -'initializeAggregation' + -'yesterday' + -'wordShingleMinHashArgUTF8' + -'variantElement' + -'asinh' + -'randUniform' + -'randomFixedString' + -'globalNotNullInIgnoreSet' + -'toUInt64OrZero' + -'dictGetUInt16' + -'parseDateTime64InJodaSyntaxOrZero' + -'YYYYMMDDhhmmssToDateTime' + -'readWKTPolygon' + -'arrayShiftLeft' + -'netloc' + -'regionToDistrict' + -'reinterpret' + -'reinterpretAsFixedString' + -'reinterpretAsString' + -'sipHash128ReferenceKeyed' + -'mapPartialSort' + -'toLastDayOfMonth' + -'randomPrintableASCII' + -'snowflakeToDateTime' + -'notEquals' + -'left' + -'reinterpretAsDateTime' + -'toIntervalDay' + -'reinterpretAsFloat32' + -'parseDateTime64' + -'reinterpretAsInt256' + -'mortonDecode' + -'subBitmap' + -'decrypt' + -'base64Decode' + -'defaultValueOfArgumentType' + -'h3ToChildren' + -'emptyArrayToSingle' + -'reinterpretAsInt128' + -'JSONAllPaths' + -'toStartOfMillisecond' + -'reinterpretAsInt64' + -'reinterpretAsInt16' + -'normalizedQueryHashKeepNames' + -'toUInt256OrZero' + -'tupleModulo' + -'toStringCutToZero' + -'toUInt8OrZero' + -'not' + -'reinterpretAsInt8' + -'fromUnixTimestamp' + -'LinfNorm' + -'reinterpretAsUInt8' + -'toUInt8' + -'range' + -'kafkaMurmurHash' + -'notIn' + -'dictGetUInt8OrDefault' + -'arrayIntersect' + -'subtractDays' + -'ngramSimHashCaseInsensitive' + -'repeat' + -'JSONExtractKeysAndValues' + -'extractKeyValuePairs' + -'replicate' + -'formatRow' + -'detectLanguage' + -'tupleElement' + -'roundAge' + -'s2CapUnion' + -'reinterpretAsUInt256' + -'ngramDistanceUTF8' + -'s2RectUnion' + -'s2ToGeo' + -'trimRight' + -'formatQueryOrNull' + -'translate' + -'seriesDecomposeSTL' + -'sipHash128Reference' + -'seriesOutliersDetectTukey' + -'ngramMinHashCaseInsensitive' + -'randFisherF' + -'firstSignificantSubdomainCustomRFC' + -'serverUUID' + -'hostName' + -'toUInt256OrDefault' + -'L2SquaredNorm' + -'mapPartialReverseSort' + -'toJSONString' + -'uptime' + -'extractURLParameter' + -'zookeeperSessionUptime' + -'jumpConsistentHash' + -'minSampleSizeConversion' + -'getClientHTTPHeader' + -'displayName' + -'sigmoid' + -'sign' + -'sin' + -'intExp2' + -'toYearNumSinceEpoch' + -'getServerPort' + -'runningDifference' + -'sleepEachRow' + -'sleep' + -'farmHash64' + -'snowflakeIDToDateTime64' + -'emptyArrayDate' + -'CRC32IEEE' + -'IPv4NumToStringClassC' + -'polygonConvexHullCartesian' + -'murmurHash3_32' + -'arrayElementOrNull' + -'toInt16OrZero' + -'toWeek' + -'reinterpretAsUInt32' + -'base64URLDecode' + -'arrayDotProduct' + -'punycodeEncode' + -'arrayElement' + -'RIPEMD160' + -'sqidDecode' + -'arrayReverseSplit' + -'transactionOldestSnapshot' + -'dumpColumnStructure' + -'multiSearchFirstIndex' + -'arrayPopFront' + -'subtractMilliseconds' + -'snowflakeIDToDateTime' + -'protocol' + -'multiSearchAllPositionsUTF8' + -'toFixedString' + -'toYearWeek' + -'toInt8' + -'s2RectContains' + -'equals' + -'simpleJSONExtractInt' + -'toLastDayOfWeek' + -'synonyms' + -'ULIDStringToDateTime' + -'addNanoseconds' + -'timestamp' + -'toDayOfWeek' + -'randChiSquared' + -'toStartOfYear' + -'demangle' + -'abs' + -'toValidUTF8' + -'emptyArrayFloat32' + -'toUInt32OrDefault' + -'bin' + -'toDayOfYear' + -'toDecimal256' + -'asin' + -'h3Line' + -'multiSearchFirstPositionCaseInsensitiveUTF8' + -'cutFragment' + -'arrayCompact' + -'mapSort' + -'h3CellAreaRads2' + -'arrayAUCPR' + -'SHA1' + -'toModifiedJulianDay' + -'toMonth' + -'greatest' + -'toRelativeMinuteNum' + -'hypot' + -'initcap' + -'dictGetDateTimeOrDefault' + -'file' + -'toRelativeMonthNum' + -'multiFuzzyMatchAny' + -'toStartOfWeek' + -'emptyArrayFloat64' + -'multiSearchAnyUTF8' + -'age' + -'mapConcat' + -'toUInt128OrDefault' + -'subtractNanoseconds' + -'queryStringAndFragment' + -'multiFuzzyMatchAllIndices' + -'IPv6CIDRToRange' + -'emptyArrayInt32' + -'array' + -'simpleJSONExtractString' + -'toUInt128' + -'emptyArrayUInt64' + -'mapKeys' + -'arrayEnumerate' + -'tupleNegate' + -'toRelativeQuarterNum' + -'widthBucket' + -'logTrace' + -'minus' + -'toIntervalWeek' + -'replaceAll' + -'toUnixTimestamp64Second' + -'toRelativeSecondNum' + -'bitmapToArray' + -'arrayMax' + -'toRelativeYearNum' + -'LpNormalize' + -'toStartOfDay' + -'toYYYYMMDD' + -'toStartOfFifteenMinutes' + -'topLevelDomain' + -'isIPv6String' + -'toRelativeWeekNum' + -'arrayROCAUC' + -'toStartOfFiveMinutes' + -'IPv4ToIPv6' + -'toStartOfMicrosecond' + -'reinterpretAsUInt128' + -'regionToPopulation' + -'toInt8OrNull' + -'format' + -'toStartOfISOYear' + -'toFloat32OrDefault' + -'arrayDistinct' + -'toDecimal128OrDefault' + -'byteSwap' + -'arrayCount' + -'hasColumnInTable' + -'toRelativeHourNum' + -'joinGet' + -'multiSearchAnyCaseInsensitiveUTF8' + -'upperUTF8' + -'validateNestedArraySizes' + -'toStartOfInterval' + -'toStartOfMonth' + -'toStartOfQuarter' + -'xxHash32' + -'dateTimeToSnowflakeID' + -'mapFilter' + -'assumeNotNull' + -'changeSecond' + -'dateTime64ToSnowflakeID' + -'toTime' + -'structureToCapnProtoSchema' + -'variantType' + -'mapExtractKeyLike' + -'overlayUTF8' + -'tanh' + -'s2RectIntersection' + -'timeDiff' + -'mapContainsKeyLike' + -'murmurHash3_128' + -'polygonPerimeterCartesian' + -'runningAccumulate' + -'L2Distance' + -'decodeURLFormComponent' + -'mapReverseSort' + -'h3EdgeLengthKm' + -'parseDateTime64BestEffortUSOrNull' + -'moduloLegacy' + -'h3kRing' + -'dictGetOrNull' + -'arrayShingles' + -'inIgnoreSet' + -'dictGetUUID' + -'notNullInIgnoreSet' + -'mapValues' + -'isDynamicElementInSharedData' + -'encodeXMLComponent' + -'tcpPort' + -'BLAKE3' + -'toMinute' + -'timezoneOffset' + -'transform' + -'arrayResize' + -'IPv6StringToNumOrNull' + -'subtractWeeks' + -'tupleConcat' + -'toFloat64OrDefault' + -'toUUID' + -'arrayLast' + -'MD4' + -'moduloOrZero' + -'s2CapContains' + -'defaultValueOfTypeName' + -'tuplePlus' + -'IPv4NumToString' + -'readWKTPoint' + -'firstSignificantSubdomain' + -'h3HexAreaKm2' + -'toUnixTimestamp64Nano' + -'path' + -'now' + -'toInt32OrDefault' + -'arrayCumSumNonNegative' + -'detectCharset' + -'dynamicType' + -'translateUTF8' + -'emptyArrayInt8' + -'parseDateTimeInJodaSyntax' + -'formatQuery' + -'tupleToNameValuePairs' + -'simpleJSONExtractRaw' + -'accurateCastOrNull' + -'length' + -'h3ToGeo' + -'arrayEnumerateDense' + -'parseDateTime64BestEffortOrNull' + -'domainRFC' + -'bitmapSubsetLimit' + -'mapExists' + -'arrayNormalizedGini' + -'rowNumberInAllBlocks' + -'multiSearchFirstIndexCaseInsensitive' + -'JSONExtractFloat' + -'tuple' + -'atanh' + -'kql_array_sort_desc' + -'bitmapTransform' + -'revision' + -'cutIPv6' + -'arrayShuffle' + -'generateRandomStructure' + -'isNullable' + -'regexpExtract' + -'sqidEncode' + -'toColumnTypeName' + -'toMonday' + -'fromUnixTimestampInJodaSyntax' + -'arrayFold' + -'arrayMin' + -'basename' + -'toISOWeek' + -'toUInt32OrNull' + -'accurateCast' + -'kql_array_sort_asc' + -'h3ToParent' + -'makeDateTime' + -'getSizeOfEnumType' + -'encodeURLFormComponent' + -'toUUIDOrDefault' + -'arrayAvg' + -'arrayPopBack' + -'arrayReverse' + -'icebergTruncate' + -'toDecimal64' + -'now64' + -'tupleNames' + -'toInt64OrZero' + -'arrayAll' + -'addMonths' + -'URLHash' + -'topLevelDomainRFC' + -'arrayLastIndex' + -'bitSlice' + -'firstSignificantSubdomainRFC' + -'parseDateTimeInJodaSyntaxOrZero' + -'startsWithUTF8' + -'portRFC' + -'decodeURLComponent' + -'arrayLastOrNull' + -'timezoneOf' + -'tupleDivideByNumber' + -'toUInt16OrZero' + -'toString' + -'emptyArrayDateTime' + -'indexOfAssumeSorted' + -'xor' + -'arrayEnumerateUniqRanked' + -'or' + -'arrayPushFront' + -'arrayMap' + -'arrayPartialShuffle' + -'arrayFirstIndex' + -'multiSearchFirstIndexUTF8' + -'parseDateTimeBestEffortUS' + -'mapPopulateSeries' + -'toDecimal64OrDefault' + -'divideDecimal' + -'globalVariable' + -'dictGetIPv4' + -'tryBase64Decode' + -'throwIf' + -'detectLanguageUnknown' + -'and' + -'uniqThetaIntersect' + -'ilike' + -'arrayJoin' + -'addQuarters' + -'multiply' + -'toStartOfTenMinutes' + -'nullInIgnoreSet' + -'arrayZipUnaligned' + -'cutWWW' + -'dictGet' + -'toLowCardinality' + -'runningConcurrency' + -'toDateOrDefault' + -'ngramMinHashArgCaseInsensitive' + -'getSettingOrDefault' + -'uniqThetaUnion' + -'wordShingleMinHashArgCaseInsensitiveUTF8' + -'encodeURLComponent' + -'URLHierarchy' + -'version' + -'toFloat64OrNull' + -'arrayZip' + -'subtractInterval' + -'defaultRoles' + -'arrayFilter' + -'multiIf' + -'h3UnidirectionalEdgeIsValid' + -'serverTimezone' + -'substringUTF8' + -'JSONMergePatch' + -'arrayFirst' + -'toIntervalYear' + -'addInterval' + -'polygonAreaCartesian' + -'arrayUniq' + -'toISOYear' + -'toInt64OrDefault' + -'s2CellsIntersect' + -'rowNumberInBlock' + -'splitByString' + -'parseDateTimeInJodaSyntaxOrNull' + -'multiMatchAllIndices' + -'hasThreadFuzzer' + -'nested' + -'punycodeDecode' + -'toIPv4OrNull' + -'readWKTLineString' + -'jaroSimilarity' + -'h3IsResClassIII' + -'cutQueryStringAndFragment' + -'toUInt256OrNull' + -'arrayFirstOrNull' + -'positionCaseInsensitive' + -'filesystemCapacity' + -'toSecond' + -'truncate' + -'ceiling' + -'FROM_UNIXTIME' + -'splitByAlpha' + -'HOUR' + -'SUBSTRING_INDEX' + -'LAST_DAY' + -'fullHostName' + -'mapFromString' + -'str_to_map' + -'levenshteinDistanceUTF8' + -'levenshteinDistance' + -'mismatches' + -'SVG' + -'connection_id' + -'SCHEMA' + -'REGEXP_REPLACE' + -'DAY' + -'pmod' + -'replace' + -'DATE_TRUNC' + -'visitParamExtractFloat' + -'TIMESTAMP_DIFF' + -'visitParamHas' + -'timeZoneOffset' + -'timestamp_diff' + -'distanceL2' + -'lcase' + -'DATE_DIFF' + -'time_bucket' + -'rand32' + -'date_diff' + -'timestampDiff' + -'toTimeZone' + -'timeZone' + -'INET6_NTOA' + -'JSON_ARRAY_LENGTH' + -'initial_query_start_time' + -'CHAR_LENGTH' + -'caseWithExpr' + -'byteSlice' + -'mid' + -'curdate' + -'current_date' + -'date_bin' + -'MILLISECOND' + -'minSampleSizeContinous' + -'power' + -'rpad' + -'SECOND' + -'normalizeLinf' + -'initial_query_id' + -'normalizeL2' + -'current_query_id' + -'REGEXP_EXTRACT' + -'normalizeL1' + -'CHARACTER_LENGTH' + -'substr' + -'distanceLinf' + -'partitionID' + -'distanceL2Squared' + -'TO_BASE64' + -'normL1' + -'yandexConsistentHash' + -'scalarProduct' + -'DAYOFMONTH' + -'vectorDifference' + -'vectorSum' + -'positive_modulo' + -'MAP_FROM_ARRAYS' + -'caseWithoutExpression' + -'concat_ws' + -'FROM_BASE64' + -'extractAllGroups' + -'UTC_timestamp' + -'ln' + -'distanceLp' + -'QUARTER' + -'current_timestamp' + -'user' + -'normL2Squared' + -'hostname' + -'instr' + -'current_database' + -'INET_NTOA' + -'normLinf' + -'visitParamExtractInt' + -'sqid' + -'normLp' + -'current_schemas' + -'current_user' + -'TO_UNIXTIME' + -'distanceL1' + -'INET_ATON' + -'OCTET_LENGTH' + -'timeZoneOf' + -'visitParamExtractString' + -'INET6_ATON' + -'normalizeLp' + -'yearweek' + -'visitParamExtractUInt' + -'week' + -'trim' + -'FORMAT_BYTES' + -'rtrim' + -'visitParamExtractBool' + -'flatten' + -'to_utc_timestamp' + -'DATABASE' + -'width_bucket' + -'MINUTE' + -'jsonMergePatch' + -'ltrim' + -'DAYOFYEAR' + -'from_utc_timestamp' + -'TO_DAYS' + -'str_to_date' + -'toStartOfFiveMinute' + -'ucase' + -'mod' + -'MONTH' + -'YEAR' + -'serverTimeZone' + -'visitParamExtractRaw' + -'arrayPRAUC' + -'arrayAUC' + -'query_id' + -'REGEXP_MATCHES' + -'FROM_DAYS' + -'normL2' + -'DATE_FORMAT' + -'caseWithoutExpr' + -'lpad' + -'DAYOFWEEK' + -'exponentialTimeDecayedCount' + -'exponentialTimeDecayedMax' + -'lagInFrame' + -'nth_value' + -'ntile' + -'row_number' + -'percentRank' + -'largestTriangleThreeBuckets' + -'flameGraph' + -'exponentialMovingAverage' + -'nothingUInt64' + -'nothingNull' + -'nothing' + -'singleValueOrNull' + -'meanZTest' + -'analysisOfVariance' + -'studentTTest' + -'rankCorr' + -'aggThrow' + -'categoricalInformationValue' + -'groupArrayMovingSum' + -'simpleLinearRegression' + -'entropy' + -'stochasticLogisticRegression' + -'histogram' + -'mannWhitneyUTest' + -'maxIntersections' + -'groupBitmapXor' + -'cramersVBiasCorrected' + -'contingency' + -'theilsU' + -'groupBitmapAnd' + -'cramersV' + -'groupBitXor' + -'groupBitAnd' + -'approx_top_sum' + -'exponentialTimeDecayedSum' + -'topKWeighted' + -'topK' + -'uniqUpTo' + -'stochasticLinearRegression' + -'uniqCombined64' + -'intervalLengthSum' + -'uniqCombined' + -'uniqTheta' + -'nonNegativeDerivative' + -'uniqExact' + -'uniq' + -'kurtPop' + -'sumMapFiltered' + -'distinctJSONPathsAndTypes' + -'distinctJSONPaths' + -'minMappedArrays' + -'quantiles' + -'sum' + -'corrMatrix' + -'quantileExactWeighted' + -'sumMapFilteredWithOverflow' + -'corr' + -'skewPop' + -'corrStable' + -'covarPopMatrix' + -'groupBitmapOr' + -'covarSampMatrix' + -'sumMappedArrays' + -'quantileExactWeightedInterpolated' + -'skewSamp' + -'distinctDynamicTypes' + -'sumMapWithOverflow' + -'stddevSamp' + -'quantileExactHigh' + -'varPop' + -'sumCount' + -'covarPop' + -'varSamp' + -'quantileTimingWeighted' + -'covarPopStable' + -'stddevPopStable' + -'any_respect_nulls' + -'argMin' + -'windowFunnel' + -'retention' + -'sequenceMatch' + -'quantilesExactHigh' + -'quantileGK' + -'anyLast_respect_nulls' + -'quantilesBFloat16Weighted' + -'quantileBFloat16Weighted' + -'deltaSumTimestamp' + -'varSampStable' + -'any' + -'sparkbar' + -'sequenceMatchEvents' + -'max' + -'quantilesDD' + -'denseRank' + -'quantile' + -'quantilesExact' + -'uniqHLL12' + -'min' + -'quantileExactInclusive' + -'quantileDD' + -'kurtSamp' + -'estimateCompressionRatio' + -'quantileTDigest' + -'quantileTDigestWeighted' + -'quantileDeterministic' + -'quantilesTDigest' + -'avg' + -'covarSampStable' + -'quantilesTiming' + -'leadInFrame' + -'quantilesExactExclusive' + -'groupArrayMovingAvg' + -'anyHeavy' + -'groupArrayIntersect' + -'quantileInterpolatedWeighted' + -'quantileExactLow' + -'groupBitmap' + -'quantilesInterpolatedWeighted' + -'quantilesTDigestWeighted' + -'stddevSampStable' + -'quantilesExactWeightedInterpolated' + -'groupUniqArray' + -'sumKahan' + -'quantilesExactWeighted' + -'quantilesDeterministic' + -'groupArrayInsertAt' + -'quantilesGK' + -'rank' + -'maxIntersectionsPosition' + -'quantilesBFloat16' + -'quantilesExactInclusive' + -'groupConcat' + -'boundingRatio' + -'sequenceNextNode' + -'anyLast' + -'quantilesTimingWeighted' + -'groupArray' + -'count' + -'quantileExact' + -'groupArraySorted' + -'maxMappedArrays' + -'stddevPop' + -'groupArrayLast' + -'kolmogorovSmirnovTest' + -'sumWithOverflow' + -'sequenceCount' + -'exponentialTimeDecayedAvg' + -'quantileExactExclusive' + -'avgWeighted' + -'argMax' + -'quantileBFloat16' + -'groupBitOr' + -'approx_top_k' + -'deltaSum' + -'welchTTest' + -'covarSamp' + -'varPopStable' + -'quantileTiming' + -'quantilesExactLow' + -'groupArraySample' + -'BIT_AND' + -'approx_top_count' + -'STD' + -'lttb' + -'STDDEV_POP' + -'anova' + -'STDDEV_SAMP' + -'VAR_SAMP' + -'VAR_POP' + -'lastValueRespectNulls' + -'last_value_respect_nulls' + -'any_value_respect_nulls' + -'BIT_OR' + -'anyLastRespectNulls' + -'firstValueRespectNulls' + -'first_value_respect_nulls' + -'COVAR_SAMP' + -'any_value' + -'medianDD' + -'percent_rank' + -'sparkBar' + -'medianInterpolatedWeighted' + -'medianTDigestWeighted' + -'medianBFloat16' + -'first_value' + -'medianTDigest' + -'BIT_XOR' + -'medianTimingWeighted' + -'group_concat' + -'medianExactHigh' + -'dense_rank' + -'medianExactWeightedInterpolated' + -'medianBFloat16Weighted' + -'anyValueRespectNulls' + -'medianExactWeighted' + -'median' + -'medianExact' + -'medianExactLow' + -'medianTiming' + -'array_agg' + -'medianGK' + -'medianDeterministic' + -'last_value' + -'COVAR_POP' + -'anyRespectNulls' + -'array_concat_agg' diff --git a/styles/ClickHouse/BackTicksServerSettings.yml b/styles/ClickHouse/BackTicksServerSettings.yml new file mode 100644 index 00000000000..84794dfc0ea --- /dev/null +++ b/styles/ClickHouse/BackTicksServerSettings.yml @@ -0,0 +1,204 @@ +extends: existence +message: "ClickHouse server settings '%s' should be enclosed in backticks." +level: suggestion +ignorecase: true +tokens: + -'dictionary_background_reconnect_interval' + -'show_addresses_in_stack_traces' + -'shutdown_wait_unfinished_queries' + -'shutdown_wait_unfinished' + -'max_thread_pool_size' + -'max_thread_pool_free_size' + -'thread_pool_queue_size' + -'max_io_thread_pool_size' + -'max_io_thread_pool_free_size' + -'io_thread_pool_queue_size' + -'max_prefixes_deserialization_thread_pool_size' + -'max_prefixes_deserialization_thread_pool_free_size' + -'prefixes_deserialization_thread_pool_thread_pool_queue_size' + -'max_fetch_partition_thread_pool_size' + -'max_active_parts_loading_thread_pool_size' + -'max_outdated_parts_loading_thread_pool_size' + -'max_unexpected_parts_loading_thread_pool_size' + -'max_parts_cleaning_thread_pool_size' + -'max_mutations_bandwidth_for_server' + -'max_merges_bandwidth_for_server' + -'max_replicated_fetches_network_bandwidth_for_server' + -'max_replicated_sends_network_bandwidth_for_server' + -'max_remote_read_network_bandwidth_for_server' + -'max_remote_write_network_bandwidth_for_server' + -'max_local_read_bandwidth_for_server' + -'max_local_write_bandwidth_for_server' + -'max_backups_io_thread_pool_size' + -'max_backups_io_thread_pool_free_size' + -'backups_io_thread_pool_queue_size' + -'backup_threads' + -'max_backup_bandwidth_for_server' + -'restore_threads' + -'shutdown_wait_backups_and_restores' + -'cannot_allocate_thread_fault_injection_probability' + -'max_connections' + -'asynchronous_metrics_update_period_s' + -'asynchronous_metrics_enable_heavy_metrics' + -'asynchronous_heavy_metrics_update_period_s' + -'default_database' + -'tmp_policy' + -'max_temporary_data_on_disk_size' + -'temporary_data_in_cache' + -'aggregate_function_group_array_max_element_size' + -'aggregate_function_group_array_action_when_limit_is_reached' + -'max_server_memory_usage' + -'max_server_memory_usage_to_ram_ratio' + -'merges_mutations_memory_usage_soft_limit' + -'merges_mutations_memory_usage_to_ram_ratio' + -'allow_use_jemalloc_memory' + -'cgroups_memory_usage_observer_wait_time' + -'cgroup_memory_watcher_hard_limit_ratio' + -'cgroup_memory_watcher_soft_limit_ratio' + -'async_insert_threads' + -'async_insert_queue_flush_on_shutdown' + -'ignore_empty_sql_security_in_create_view_query' + -'max_build_vector_similarity_index_thread_pool_size' + -'database_atomic_delay_before_drop_table_sec' + -'database_catalog_unused_dir_hide_timeout_sec' + -'database_catalog_unused_dir_rm_timeout_sec' + -'database_catalog_unused_dir_cleanup_period_sec' + -'database_catalog_drop_error_cooldown_sec' + -'database_catalog_drop_table_concurrency' + -'max_concurrent_queries' + -'max_concurrent_insert_queries' + -'max_concurrent_select_queries' + -'max_waiting_queries' + -'cache_size_to_ram_max_ratio' + -'uncompressed_cache_policy' + -'uncompressed_cache_size' + -'uncompressed_cache_size_ratio' + -'mark_cache_policy' + -'mark_cache_size' + -'mark_cache_size_ratio' + -'mark_cache_prewarm_ratio' + -'primary_index_cache_policy' + -'primary_index_cache_size' + -'primary_index_cache_size_ratio' + -'primary_index_cache_prewarm_ratio' + -'vector_similarity_index_cache_policy' + -'vector_similarity_index_cache_size' + -'vector_similarity_index_cache_max_entries' + -'vector_similarity_index_cache_size_ratio' + -'index_uncompressed_cache_policy' + -'index_uncompressed_cache_size' + -'index_uncompressed_cache_size_ratio' + -'index_mark_cache_policy' + -'index_mark_cache_size' + -'index_mark_cache_size_ratio' + -'page_cache_block_size' + -'page_cache_history_window_ms' + -'page_cache_policy' + -'page_cache_size_ratio' + -'page_cache_min_size' + -'page_cache_max_size' + -'page_cache_free_memory_ratio' + -'page_cache_lookahead_blocks' + -'page_cache_shards' + -'mmap_cache_size' + -'compiled_expression_cache_size' + -'compiled_expression_cache_elements_size' + -'query_condition_cache_policy' + -'query_condition_cache_size' + -'query_condition_cache_size_ratio' + -'disable_internal_dns_cache' + -'dns_cache_max_entries' + -'dns_cache_update_period' + -'dns_max_consecutive_failures' + -'dns_allow_resolve_names_to_ipv4' + -'dns_allow_resolve_names_to_ipv6' + -'max_table_size_to_drop' + -'max_partition_size_to_drop' + -'max_table_num_to_warn' + -'max_pending_mutations_to_warn' + -'max_view_num_to_warn' + -'max_dictionary_num_to_warn' + -'max_database_num_to_warn' + -'max_part_num_to_warn' + -'max_table_num_to_throw' + -'max_replicated_table_num_to_throw' + -'max_dictionary_num_to_throw' + -'max_view_num_to_throw' + -'max_database_num_to_throw' + -'max_authentication_methods_per_user' + -'concurrent_threads_soft_limit_num' + -'concurrent_threads_soft_limit_ratio_to_cores' + -'concurrent_threads_scheduler' + -'background_pool_size' + -'background_merges_mutations_concurrency_ratio' + -'background_merges_mutations_scheduling_policy' + -'background_move_pool_size' + -'background_fetches_pool_size' + -'background_common_pool_size' + -'background_buffer_flush_schedule_pool_size' + -'background_schedule_pool_size' + -'background_message_broker_schedule_pool_size' + -'background_distributed_schedule_pool_size' + -'tables_loader_foreground_pool_size' + -'tables_loader_background_pool_size' + -'async_load_databases' + -'async_load_system_database' + -'display_secrets_in_show_and_select' + -'keep_alive_timeout' + -'max_keep_alive_requests' + -'replicated_fetches_http_connection_timeout' + -'replicated_fetches_http_send_timeout' + -'replicated_fetches_http_receive_timeout' + -'total_memory_profiler_step' + -'total_memory_tracker_sample_probability' + -'total_memory_profiler_sample_min_allocation_size' + -'total_memory_profiler_sample_max_allocation_size' + -'validate_tcp_client_information' + -'storage_metadata_write_full_object_key' + -'max_materialized_views_count_for_table' + -'max_database_replicated_create_table_thread_pool_size' + -'database_replicated_allow_detach_permanently' + -'format_alter_operations_with_parentheses' + -'default_replica_path' + -'default_replica_name' + -'disk_connections_soft_limit' + -'disk_connections_warn_limit' + -'disk_connections_store_limit' + -'storage_connections_soft_limit' + -'storage_connections_warn_limit' + -'storage_connections_store_limit' + -'http_connections_soft_limit' + -'http_connections_warn_limit' + -'http_connections_store_limit' + -'global_profiler_real_time_period_ns' + -'global_profiler_cpu_time_period_ns' + -'enable_azure_sdk_logging' + -'max_entries_for_hash_table_stats' + -'merge_workload' + -'mutation_workload' + -'throw_on_unknown_workload' + -'series_keeper_path' + -'prepare_system_log_tables_on_startup' + -'config_reload_interval_ms' + -'memory_worker_period_ms' + -'memory_worker_correct_memory_tracker' + -'memory_worker_use_cgroup' + -'disable_insertion_and_mutation' + -'parts_kill_delay_period' + -'parts_kill_delay_period_random_add' + -'parts_killer_pool_size' + -'keeper_multiread_batch_size' + -'use_legacy_mongodb_integration' + -'license_key' + -'prefetch_threadpool_pool_size' + -'prefetch_threadpool_queue_size' + -'load_marks_threadpool_pool_size' + -'load_marks_threadpool_queue_size' + -'threadpool_writer_pool_size' + -'threadpool_writer_queue_size' + -'iceberg_catalog_threadpool_pool_size' + -'iceberg_catalog_threadpool_queue_size' + -'allow_feature_tier' + -'dictionaries_lazy_load' + -'wait_dictionaries_load_at_startup' + -'storage_shared_set_join_use_inner_uuid' diff --git a/styles/ClickHouse/BackTicksSessionSettings.yml b/styles/ClickHouse/BackTicksSessionSettings.yml new file mode 100644 index 00000000000..96268be2a8f --- /dev/null +++ b/styles/ClickHouse/BackTicksSessionSettings.yml @@ -0,0 +1,1233 @@ +extends: existence +message: "ClickHouse settings '%s' should be enclosed in backticks." +level: suggestion +ignorecase: true +tokens: + -'dialect' + -'min_compress_block_size' + -'max_compress_block_size' + -'max_block_size' + -'max_insert_block_size' + -'min_insert_block_size_rows' + -'min_insert_block_size_bytes' + -'min_insert_block_size_rows_for_materialized_views' + -'min_insert_block_size_bytes_for_materialized_views' + -'min_external_table_block_size_rows' + -'min_external_table_block_size_bytes' + -'max_joined_block_size_rows' + -'min_joined_block_size_bytes' + -'max_insert_threads' + -'max_insert_delayed_streams_for_parallel_write' + -'max_final_threads' + -'max_threads_for_indexes' + -'max_threads' + -'use_concurrency_control' + -'max_download_threads' + -'max_parsing_threads' + -'max_download_buffer_size' + -'max_read_buffer_size' + -'max_read_buffer_size_local_fs' + -'max_read_buffer_size_remote_fs' + -'max_distributed_connections' + -'max_query_size' + -'interactive_delay' + -'connect_timeout' + -'handshake_timeout_ms' + -'connect_timeout_with_failover_ms' + -'connect_timeout_with_failover_secure_ms' + -'receive_timeout' + -'send_timeout' + -'tcp_keep_alive_timeout' + -'hedged_connection_timeout_ms' + -'receive_data_timeout_ms' + -'use_hedged_requests' + -'allow_changing_replica_until_first_data_packet' + -'queue_max_wait_ms' + -'connection_pool_max_wait_ms' + -'replace_running_query_max_wait_ms' + -'kafka_max_wait_ms' + -'rabbitmq_max_wait_ms' + -'poll_interval' + -'idle_connection_timeout' + -'distributed_connections_pool_size' + -'connections_with_failover_max_tries' + -'s3_strict_upload_part_size' + -'azure_strict_upload_part_size' + -'azure_max_blocks_in_multipart_upload' + -'s3_min_upload_part_size' + -'s3_max_upload_part_size' + -'azure_min_upload_part_size' + -'azure_max_upload_part_size' + -'s3_upload_part_size_multiply_factor' + -'s3_upload_part_size_multiply_parts_count_threshold' + -'s3_max_part_number' + -'s3_allow_multipart_copy' + -'s3_max_single_operation_copy_size' + -'azure_upload_part_size_multiply_factor' + -'azure_upload_part_size_multiply_parts_count_threshold' + -'s3_max_inflight_parts_for_one_file' + -'azure_max_inflight_parts_for_one_file' + -'s3_max_single_part_upload_size' + -'azure_max_single_part_upload_size' + -'azure_max_single_part_copy_size' + -'s3_max_single_read_retries' + -'azure_max_single_read_retries' + -'azure_max_unexpected_write_error_retries' + -'s3_max_unexpected_write_error_retries' + -'s3_max_redirects' + -'s3_max_connections' + -'s3_max_get_rps' + -'s3_max_get_burst' + -'s3_max_put_rps' + -'s3_max_put_burst' + -'s3_list_object_keys_size' + -'s3_use_adaptive_timeouts' + -'azure_list_object_keys_size' + -'s3_truncate_on_insert' + -'azure_truncate_on_insert' + -'s3_create_new_file_on_insert' + -'s3_skip_empty_files' + -'azure_create_new_file_on_insert' + -'s3_check_objects_after_upload' + -'azure_check_objects_after_upload' + -'s3_allow_parallel_part_upload' + -'azure_allow_parallel_part_upload' + -'s3_throw_on_zero_files_match' + -'hdfs_throw_on_zero_files_match' + -'azure_throw_on_zero_files_match' + -'s3_ignore_file_doesnt_exist' + -'hdfs_ignore_file_doesnt_exist' + -'azure_ignore_file_doesnt_exist' + -'azure_sdk_max_retries' + -'azure_sdk_retry_initial_backoff_ms' + -'azure_sdk_retry_max_backoff_ms' + -'s3_validate_request_settings' + -'s3_disable_checksum' + -'s3_retry_attempts' + -'s3_request_timeout_ms' + -'s3_connect_timeout_ms' + -'enable_s3_requests_logging' + -'s3queue_default_zookeeper_path' + -'s3queue_migrate_old_metadata_to_buckets' + -'s3queue_enable_logging_to_s3queue_log' + -'hdfs_replication' + -'hdfs_truncate_on_insert' + -'hdfs_create_new_file_on_insert' + -'hdfs_skip_empty_files' + -'azure_skip_empty_files' + -'hsts_max_age' + -'extremes' + -'use_uncompressed_cache' + -'replace_running_query' + -'max_remote_read_network_bandwidth' + -'max_remote_write_network_bandwidth' + -'max_local_read_bandwidth' + -'max_local_write_bandwidth' + -'stream_like_engine_allow_direct_select' + -'stream_like_engine_insert_queue' + -'dictionary_validate_primary_key_type' + -'distributed_insert_skip_read_only_replicas' + -'distributed_foreground_insert' + -'insert_distributed_sync' + -'distributed_background_insert_timeout' + -'insert_distributed_timeout' + -'distributed_background_insert_sleep_time_ms' + -'distributed_directory_monitor_sleep_time_ms' + -'distributed_background_insert_max_sleep_time_ms' + -'distributed_directory_monitor_max_sleep_time_ms' + -'distributed_background_insert_batch' + -'distributed_directory_monitor_batch_inserts' + -'distributed_background_insert_split_batch_on_failure' + -'distributed_directory_monitor_split_batch_on_failure' + -'optimize_move_to_prewhere' + -'optimize_move_to_prewhere_if_final' + -'move_all_conditions_to_prewhere' + -'enable_multiple_prewhere_read_steps' + -'move_primary_key_columns_to_end_of_prewhere' + -'allow_reorder_prewhere_conditions' + -'alter_sync' + -'replication_alter_partitions_sync' + -'replication_wait_for_inactive_replica_timeout' + -'alter_move_to_space_execute_async' + -'load_balancing' + -'load_balancing_first_offset' + -'totals_mode' + -'totals_auto_threshold' + -'allow_suspicious_low_cardinality_types' + -'allow_suspicious_fixed_string_types' + -'allow_suspicious_indices' + -'allow_suspicious_ttl_expressions' + -'allow_suspicious_variant_types' + -'allow_suspicious_primary_key' + -'allow_suspicious_types_in_group_by' + -'allow_suspicious_types_in_order_by' + -'allow_not_comparable_types_in_order_by' + -'allow_not_comparable_types_in_comparison_functions' + -'compile_expressions' + -'min_count_to_compile_expression' + -'compile_aggregate_expressions' + -'min_count_to_compile_aggregate_expression' + -'compile_sort_description' + -'min_count_to_compile_sort_description' + -'group_by_two_level_threshold' + -'group_by_two_level_threshold_bytes' + -'distributed_aggregation_memory_efficient' + -'aggregation_memory_efficient_merge_threads' + -'enable_memory_bound_merging_of_aggregation_results' + -'enable_positional_arguments' + -'enable_extended_results_for_datetime_functions' + -'allow_nonconst_timezone_arguments' + -'function_locate_has_mysql_compatible_argument_order' + -'group_by_use_nulls' + -'skip_unavailable_shards' + -'parallel_distributed_insert_select' + -'distributed_group_by_no_merge' + -'distributed_push_down_limit' + -'optimize_distributed_group_by_sharding_key' + -'optimize_skip_unused_shards_limit' + -'optimize_skip_unused_shards' + -'optimize_skip_unused_shards_rewrite_in' + -'allow_nondeterministic_optimize_skip_unused_shards' + -'force_optimize_skip_unused_shards' + -'optimize_skip_unused_shards_nesting' + -'force_optimize_skip_unused_shards_nesting' + -'input_format_parallel_parsing' + -'min_chunk_bytes_for_parallel_parsing' + -'output_format_parallel_formatting' + -'output_format_compression_level' + -'output_format_compression_zstd_window_log' + -'enable_parsing_to_custom_serialization' + -'merge_tree_use_v1_object_and_dynamic_serialization' + -'merge_tree_min_rows_for_concurrent_read' + -'merge_tree_min_bytes_for_concurrent_read' + -'merge_tree_min_rows_for_seek' + -'merge_tree_min_bytes_for_seek' + -'merge_tree_coarse_index_granularity' + -'merge_tree_max_rows_to_use_cache' + -'merge_tree_max_bytes_to_use_cache' + -'merge_tree_use_deserialization_prefixes_cache' + -'merge_tree_use_prefixes_deserialization_thread_pool' + -'do_not_merge_across_partitions_select_final' + -'split_parts_ranges_into_intersecting_and_non_intersecting_final' + -'split_intersecting_parts_ranges_into_layers_final' + -'mysql_max_rows_to_insert' + -'mysql_map_string_to_text_in_show_columns' + -'mysql_map_fixed_string_to_text_in_show_columns' + -'optimize_min_equality_disjunction_chain_length' + -'optimize_min_inequality_conjunction_chain_length' + -'min_bytes_to_use_direct_io' + -'min_bytes_to_use_mmap_io' + -'checksum_on_read' + -'force_index_by_date' + -'force_primary_key' + -'use_skip_indexes' + -'use_skip_indexes_if_final' + -'materialize_skip_indexes_on_insert' + -'materialize_statistics_on_insert' + -'ignore_data_skipping_indices' + -'force_data_skipping_indices' + -'max_streams_to_max_threads_ratio' + -'max_streams_multiplier_for_merge_tables' + -'network_compression_method' + -'network_zstd_compression_level' + -'zstd_window_log_max' + -'priority' + -'os_thread_priority' + -'log_queries' + -'log_formatted_queries' + -'log_queries_min_type' + -'log_queries_min_query_duration_ms' + -'log_queries_cut_to_length' + -'log_queries_probability' + -'log_processors_profiles' + -'distributed_product_mode' + -'max_concurrent_queries_for_all_users' + -'max_concurrent_queries_for_user' + -'insert_deduplicate' + -'async_insert_deduplicate' + -'insert_quorum' + -'insert_quorum_timeout' + -'insert_quorum_parallel' + -'select_sequential_consistency' + -'table_function_remote_max_addresses' + -'read_backoff_min_latency_ms' + -'read_backoff_max_throughput' + -'read_backoff_min_interval_between_events_ms' + -'read_backoff_min_events' + -'read_backoff_min_concurrency' + -'memory_tracker_fault_probability' + -'merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_injection_probability' + -'enable_http_compression' + -'http_zlib_compression_level' + -'http_native_compression_disable_checksumming_on_decompress' + -'http_response_headers' + -'count_distinct_implementation' + -'add_http_cors_header' + -'max_http_get_redirects' + -'use_client_time_zone' + -'send_progress_in_http_headers' + -'http_headers_progress_interval_ms' + -'http_wait_end_of_query' + -'http_write_exception_in_output_format' + -'http_response_buffer_size' + -'fsync_metadata' + -'join_use_nulls' + -'join_output_by_rowlist_perkey_rows_threshold' + -'join_default_strictness' + -'any_join_distinct_right_table_keys' + -'single_join_prefer_left_table' + -'query_plan_join_swap_table' + -'preferred_block_size_bytes' + -'max_replica_delay_for_distributed_queries' + -'fallback_to_stale_replicas_for_distributed_queries' + -'preferred_max_column_in_block_size_bytes' + -'parts_to_delay_insert' + -'parts_to_throw_insert' + -'number_of_mutations_to_delay' + -'number_of_mutations_to_throw' + -'distributed_ddl_task_timeout' + -'stream_flush_interval_ms' + -'stream_poll_timeout_ms' + -'min_free_disk_bytes_to_perform_insert' + -'min_free_disk_ratio_to_perform_insert' + -'final' + -'partial_result_on_first_cancel' + -'ignore_on_cluster_for_replicated_udf_queries' + -'ignore_on_cluster_for_replicated_access_entities_queries' + -'ignore_on_cluster_for_replicated_named_collections_queries' + -'sleep_in_send_tables_status_ms' + -'sleep_in_send_data_ms' + -'sleep_after_receiving_query_ms' + -'unknown_packet_in_send_data' + -'insert_allow_materialized_columns' + -'http_connection_timeout' + -'http_send_timeout' + -'http_receive_timeout' + -'http_max_uri_size' + -'http_max_fields' + -'http_max_field_name_size' + -'http_max_field_value_size' + -'http_skip_not_found_url_for_globs' + -'http_make_head_request' + -'optimize_throw_if_noop' + -'use_index_for_in_with_subqueries' + -'use_index_for_in_with_subqueries_max_values' + -'analyze_index_with_space_filling_curves' + -'joined_subquery_requires_alias' + -'empty_result_for_aggregation_by_empty_set' + -'empty_result_for_aggregation_by_constant_keys_on_empty_set' + -'allow_distributed_ddl' + -'allow_suspicious_codecs' + -'enable_zstd_qat_codec' + -'enable_deflate_qpl_codec' + -'query_profiler_real_time_period_ns' + -'query_profiler_cpu_time_period_ns' + -'metrics_perf_events_enabled' + -'metrics_perf_events_list' + -'opentelemetry_start_trace_probability' + -'opentelemetry_trace_processors' + -'prefer_column_name_to_alias' + -'skip_redundant_aliases_in_udf' + -'prefer_global_in_and_join' + -'enable_vertical_final' + -'max_rows_to_read' + -'max_bytes_to_read' + -'read_overflow_mode' + -'max_rows_to_read_leaf' + -'max_bytes_to_read_leaf' + -'read_overflow_mode_leaf' + -'max_rows_to_group_by' + -'group_by_overflow_mode' + -'max_bytes_before_external_group_by' + -'max_bytes_ratio_before_external_group_by' + -'max_rows_to_sort' + -'max_bytes_to_sort' + -'sort_overflow_mode' + -'prefer_external_sort_block_bytes' + -'min_external_sort_block_bytes' + -'max_bytes_before_external_sort' + -'max_bytes_ratio_before_external_sort' + -'max_bytes_before_remerge_sort' + -'remerge_sort_lowered_memory_bytes_ratio' + -'max_result_rows' + -'max_result_bytes' + -'result_overflow_mode' + -'max_execution_time' + -'timeout_overflow_mode' + -'max_execution_time_leaf' + -'timeout_overflow_mode_leaf' + -'min_execution_speed' + -'max_execution_speed' + -'min_execution_speed_bytes' + -'max_execution_speed_bytes' + -'timeout_before_checking_execution_speed' + -'max_estimated_execution_time' + -'max_columns_to_read' + -'max_temporary_columns' + -'max_temporary_non_const_columns' + -'max_sessions_for_user' + -'max_subquery_depth' + -'max_analyze_depth' + -'max_ast_depth' + -'max_ast_elements' + -'max_expanded_ast_elements' + -'readonly' + -'max_rows_in_set' + -'max_bytes_in_set' + -'set_overflow_mode' + -'max_rows_in_join' + -'max_bytes_in_join' + -'join_overflow_mode' + -'join_any_take_last_row' + -'join_algorithm' + -'cross_join_min_rows_to_compress' + -'cross_join_min_bytes_to_compress' + -'default_max_bytes_in_join' + -'partial_merge_join_left_table_buffer_bytes' + -'partial_merge_join_rows_in_right_blocks' + -'join_on_disk_max_files_to_merge' + -'max_rows_in_set_to_optimize_join' + -'compatibility_ignore_collation_in_create_table' + -'temporary_files_codec' + -'max_rows_to_transfer' + -'max_bytes_to_transfer' + -'transfer_overflow_mode' + -'max_rows_in_distinct' + -'max_bytes_in_distinct' + -'distinct_overflow_mode' + -'max_memory_usage' + -'memory_overcommit_ratio_denominator' + -'max_memory_usage_for_user' + -'memory_overcommit_ratio_denominator_for_user' + -'max_untracked_memory' + -'memory_profiler_step' + -'memory_profiler_sample_probability' + -'memory_profiler_sample_min_allocation_size' + -'memory_profiler_sample_max_allocation_size' + -'trace_profile_events' + -'memory_usage_overcommit_max_wait_microseconds' + -'max_network_bandwidth' + -'max_network_bytes' + -'max_network_bandwidth_for_user' + -'max_network_bandwidth_for_all_users' + -'max_temporary_data_on_disk_size_for_user' + -'max_temporary_data_on_disk_size_for_query' + -'backup_restore_keeper_max_retries' + -'backup_restore_keeper_retry_initial_backoff_ms' + -'backup_restore_keeper_retry_max_backoff_ms' + -'backup_restore_failure_after_host_disconnected_for_seconds' + -'backup_restore_keeper_max_retries_while_initializing' + -'backup_restore_keeper_max_retries_while_handling_error' + -'backup_restore_finish_timeout_after_error_sec' + -'backup_restore_keeper_value_max_size' + -'backup_restore_batch_size_for_keeper_multi' + -'backup_restore_batch_size_for_keeper_multiread' + -'backup_restore_keeper_fault_injection_probability' + -'backup_restore_keeper_fault_injection_seed' + -'backup_restore_s3_retry_attempts' + -'max_backup_bandwidth' + -'restore_replicated_merge_tree_to_shared_merge_tree' + -'log_profile_events' + -'log_query_settings' + -'log_query_threads' + -'log_query_views' + -'log_comment' + -'query_metric_log_interval' + -'send_logs_level' + -'send_logs_source_regexp' + -'enable_optimize_predicate_expression' + -'enable_optimize_predicate_expression_to_final_subquery' + -'allow_push_predicate_when_subquery_contains_with' + -'allow_push_predicate_ast_for_distributed_subqueries' + -'low_cardinality_max_dictionary_size' + -'low_cardinality_use_single_dictionary_for_part' + -'decimal_check_overflow' + -'allow_custom_error_code_in_throwif' + -'prefer_localhost_replica' + -'max_fetch_partition_retries_count' + -'http_max_multipart_form_data_size' + -'calculate_text_stack_trace' + -'enable_job_stack_trace' + -'allow_ddl' + -'parallel_view_processing' + -'enable_unaligned_array_join' + -'optimize_read_in_order' + -'read_in_order_use_virtual_row' + -'optimize_read_in_window_order' + -'optimize_aggregation_in_order' + -'read_in_order_use_buffering' + -'aggregation_in_order_max_block_bytes' + -'read_in_order_two_level_merge_threshold' + -'low_cardinality_allow_in_native_format' + -'cancel_http_readonly_queries_on_client_close' + -'external_table_functions_use_nulls' + -'external_table_strict_query' + -'allow_hyperscan' + -'max_hyperscan_regexp_length' + -'max_hyperscan_regexp_total_length' + -'reject_expensive_hyperscan_regexps' + -'allow_simdjson' + -'allow_introspection_functions' + -'splitby_max_substrings_includes_remaining_string' + -'allow_execute_multiif_columnar' + -'formatdatetime_f_prints_single_zero' + -'formatdatetime_f_prints_scale_number_of_digits' + -'formatdatetime_parsedatetime_m_is_month_name' + -'parsedatetime_parse_without_leading_zeros' + -'formatdatetime_format_without_leading_zeros' + -'least_greatest_legacy_null_behavior' + -'h3togeo_lon_lat_result_order' + -'max_partitions_per_insert_block' + -'throw_on_max_partitions_per_insert_block' + -'max_partitions_to_read' + -'check_query_single_value_result' + -'allow_drop_detached' + -'max_parts_to_move' + -'max_table_size_to_drop' + -'max_partition_size_to_drop' + -'postgresql_connection_pool_size' + -'postgresql_connection_attempt_timeout' + -'postgresql_connection_pool_wait_timeout' + -'postgresql_connection_pool_retries' + -'postgresql_connection_pool_auto_close_connection' + -'postgresql_fault_injection_probability' + -'glob_expansion_max_elements' + -'odbc_bridge_connection_pool_size' + -'odbc_bridge_use_connection_pooling' + -'distributed_replica_error_half_life' + -'distributed_replica_error_cap' + -'distributed_replica_max_ignored_errors' + -'min_free_disk_space_for_temporary_data' + -'default_temporary_table_engine' + -'default_table_engine' + -'show_table_uuid_in_table_create_query_if_not_nil' + -'database_atomic_wait_for_drop_and_detach_synchronously' + -'enable_scalar_subquery_optimization' + -'optimize_trivial_count_query' + -'optimize_trivial_approximate_count_query' + -'optimize_count_from_files' + -'use_cache_for_count_from_files' + -'optimize_respect_aliases' + -'mutations_sync' + -'enable_lightweight_delete' + -'allow_experimental_lightweight_delete' + -'lightweight_deletes_sync' + -'apply_deleted_mask' + -'optimize_normalize_count_variants' + -'optimize_injective_functions_inside_uniq' + -'rewrite_count_distinct_if_with_count_distinct_implementation' + -'convert_query_to_cnf' + -'optimize_or_like_chain' + -'optimize_arithmetic_operations_in_aggregate_functions' + -'optimize_redundant_functions_in_order_by' + -'optimize_if_chain_to_multiif' + -'optimize_multiif_to_if' + -'optimize_if_transform_strings_to_enum' + -'optimize_functions_to_subcolumns' + -'optimize_using_constraints' + -'optimize_substitute_columns' + -'optimize_append_index' + -'optimize_time_filter_with_preimage' + -'normalize_function_names' + -'enable_early_constant_folding' + -'deduplicate_blocks_in_dependent_materialized_views' + -'throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert' + -'materialized_views_ignore_errors' + -'ignore_materialized_views_with_dropped_target_table' + -'allow_materialized_view_with_bad_select' + -'use_compact_format_in_distributed_parts_names' + -'validate_polygons' + -'max_parser_depth' + -'max_parser_backtracks' + -'max_recursive_cte_evaluation_depth' + -'allow_settings_after_format_in_insert' + -'periodic_live_view_refresh' + -'transform_null_in' + -'allow_nondeterministic_mutations' + -'validate_mutation_query' + -'lock_acquire_timeout' + -'materialize_ttl_after_modify' + -'function_implementation' + -'data_type_default_nullable' + -'cast_keep_nullable' + -'cast_ipv4_ipv6_default_on_conversion_error' + -'alter_partition_verbose_result' + -'system_events_show_zero_values' + -'mysql_datatypes_support_level' + -'optimize_trivial_insert_select' + -'allow_non_metadata_alters' + -'enable_global_with_statement' + -'aggregate_functions_null_for_empty' + -'optimize_syntax_fuse_functions' + -'flatten_nested' + -'asterisk_include_materialized_columns' + -'asterisk_include_alias_columns' + -'optimize_skip_merged_partitions' + -'optimize_on_insert' + -'optimize_use_projections' + -'allow_experimental_projection_optimization' + -'optimize_use_implicit_projections' + -'force_optimize_projection' + -'force_optimize_projection_name' + -'preferred_optimize_projection_name' + -'async_socket_for_remote' + -'async_query_sending_for_remote' + -'insert_null_as_default' + -'describe_extend_object_types' + -'describe_include_subcolumns' + -'describe_include_virtual_columns' + -'describe_compact_output' + -'apply_mutations_on_fly' + -'mutations_execute_nondeterministic_on_initiator' + -'mutations_execute_subqueries_on_initiator' + -'mutations_max_literal_size_to_replace' + -'create_replicated_merge_tree_fault_injection_probability' + -'use_query_cache' + -'enable_writes_to_query_cache' + -'enable_reads_from_query_cache' + -'query_cache_nondeterministic_function_handling' + -'query_cache_system_table_handling' + -'query_cache_max_size_in_bytes' + -'query_cache_max_entries' + -'query_cache_min_query_runs' + -'query_cache_min_query_duration' + -'query_cache_compress_entries' + -'query_cache_squash_partial_results' + -'query_cache_ttl' + -'query_cache_share_between_users' + -'query_cache_tag' + -'enable_sharing_sets_for_mutations' + -'use_query_condition_cache' + -'optimize_rewrite_sum_if_to_count_if' + -'optimize_rewrite_aggregate_function_with_if' + -'optimize_rewrite_array_exists_to_has' + -'insert_shard_id' + -'collect_hash_table_stats_during_aggregation' + -'max_size_to_preallocate_for_aggregation' + -'collect_hash_table_stats_during_joins' + -'max_size_to_preallocate_for_joins' + -'kafka_disable_num_consumers_limit' + -'allow_experimental_kafka_offsets_storage_in_keeper' + -'enable_software_prefetch_in_aggregation' + -'allow_aggregate_partitions_independently' + -'force_aggregate_partitions_independently' + -'max_number_of_partitions_for_independent_aggregation' + -'min_hit_rate_to_use_consecutive_keys_optimization' + -'engine_file_empty_if_not_exists' + -'engine_file_truncate_on_insert' + -'engine_file_allow_create_multiple_files' + -'engine_file_skip_empty_files' + -'engine_url_skip_empty_files' + -'enable_url_encoding' + -'database_replicated_initial_query_timeout_sec' + -'database_replicated_enforce_synchronous_settings' + -'max_distributed_depth' + -'database_replicated_always_detach_permanently' + -'database_replicated_allow_only_replicated_engine' + -'database_replicated_allow_replicated_engine_arguments' + -'database_replicated_allow_explicit_uuid' + -'database_replicated_allow_heavy_create' + -'cloud_mode' + -'cloud_mode_engine' + -'cloud_mode_database_engine' + -'distributed_ddl_output_mode' + -'distributed_ddl_entry_format_version' + -'external_storage_max_read_rows' + -'external_storage_max_read_bytes' + -'external_storage_connect_timeout_sec' + -'external_storage_rw_timeout_sec' + -'union_default_mode' + -'intersect_default_mode' + -'except_default_mode' + -'optimize_aggregators_of_group_by_keys' + -'optimize_injective_functions_in_group_by' + -'optimize_group_by_function_keys' + -'optimize_group_by_constant_keys' + -'legacy_column_name_of_tuple_literal' + -'enable_named_columns_in_function_tuple' + -'query_plan_enable_optimizations' + -'query_plan_max_optimizations_to_apply' + -'query_plan_lift_up_array_join' + -'query_plan_push_down_limit' + -'query_plan_split_filter' + -'query_plan_merge_expressions' + -'query_plan_merge_filters' + -'query_plan_filter_push_down' + -'query_plan_convert_outer_join_to_inner_join' + -'query_plan_optimize_prewhere' + -'query_plan_execute_functions_after_sorting' + -'query_plan_reuse_storage_ordering_for_window_functions' + -'query_plan_lift_up_union' + -'query_plan_read_in_order' + -'query_plan_aggregation_in_order' + -'query_plan_remove_redundant_sorting' + -'query_plan_remove_redundant_distinct' + -'query_plan_try_use_vector_search' + -'query_plan_enable_multithreading_after_window_functions' + -'query_plan_use_new_logical_join_step' + -'regexp_max_matches_per_row' + -'limit' + -'offset' + -'function_range_max_elements_in_block' + -'function_sleep_max_microseconds_per_block' + -'function_visible_width_behavior' + -'short_circuit_function_evaluation' + -'storage_file_read_method' + -'local_filesystem_read_method' + -'remote_filesystem_read_method' + -'local_filesystem_read_prefetch' + -'remote_filesystem_read_prefetch' + -'read_priority' + -'merge_tree_min_rows_for_concurrent_read_for_remote_filesystem' + -'merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem' + -'remote_read_min_bytes_for_seek' + -'merge_tree_min_bytes_per_task_for_remote_reading' + -'filesystem_prefetch_min_bytes_for_single_read_task' + -'merge_tree_use_const_size_tasks_for_remote_reading' + -'merge_tree_determine_task_size_by_prewhere_columns' + -'merge_tree_min_read_task_size' + -'merge_tree_compact_parts_min_granules_to_multibuffer_read' + -'async_insert' + -'wait_for_async_insert' + -'wait_for_async_insert_timeout' + -'async_insert_max_data_size' + -'async_insert_max_query_number' + -'async_insert_poll_timeout_ms' + -'async_insert_use_adaptive_busy_timeout' + -'async_insert_busy_timeout_min_ms' + -'async_insert_busy_timeout_max_ms' + -'async_insert_busy_timeout_ms' + -'async_insert_busy_timeout_increase_rate' + -'async_insert_busy_timeout_decrease_rate' + -'remote_fs_read_max_backoff_ms' + -'remote_fs_read_backoff_max_tries' + -'enable_filesystem_cache' + -'filesystem_cache_name' + -'enable_filesystem_cache_on_write_operations' + -'enable_filesystem_cache_log' + -'read_from_filesystem_cache_if_exists_otherwise_bypass_cache' + -'filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit' + -'skip_download_if_exceeds_query_cache' + -'filesystem_cache_max_download_size' + -'throw_on_error_from_cache_on_write_operations' + -'filesystem_cache_segments_batch_size' + -'filesystem_cache_reserve_space_wait_lock_timeout_milliseconds' + -'filesystem_cache_prefer_bigger_buffer_size' + -'filesystem_cache_boundary_alignment' + -'temporary_data_in_cache_reserve_space_wait_lock_timeout_milliseconds' + -'use_page_cache_for_disks_without_file_cache' + -'use_page_cache_with_distributed_cache' + -'read_from_page_cache_if_exists_otherwise_bypass_cache' + -'page_cache_inject_eviction' + -'load_marks_asynchronously' + -'enable_filesystem_read_prefetches_log' + -'allow_prefetched_read_pool_for_remote_filesystem' + -'allow_prefetched_read_pool_for_local_filesystem' + -'prefetch_buffer_size' + -'filesystem_prefetch_step_bytes' + -'filesystem_prefetch_step_marks' + -'filesystem_prefetch_max_memory_usage' + -'filesystem_prefetches_limit' + -'use_structure_from_insertion_table_in_table_functions' + -'http_max_tries' + -'http_retry_initial_backoff_ms' + -'http_retry_max_backoff_ms' + -'force_remove_data_recursively_on_drop' + -'check_table_dependencies' + -'check_referential_table_dependencies' + -'use_local_cache_for_remote_storage' + -'allow_unrestricted_reads_from_keeper' + -'allow_deprecated_database_ordinary' + -'allow_deprecated_syntax_for_merge_tree' + -'allow_asynchronous_read_from_io_pool_for_merge_tree' + -'max_streams_for_merge_tree_reading' + -'force_grouping_standard_compatibility' + -'schema_inference_use_cache_for_file' + -'schema_inference_use_cache_for_s3' + -'schema_inference_use_cache_for_azure' + -'schema_inference_use_cache_for_hdfs' + -'schema_inference_use_cache_for_url' + -'schema_inference_cache_require_modification_time_for_url' + -'compatibility' + -'additional_table_filters' + -'additional_result_filter' + -'workload' + -'storage_system_stack_trace_pipe_read_timeout_ms' + -'rename_files_after_processing' + -'read_through_distributed_cache' + -'write_through_distributed_cache' + -'distributed_cache_throw_on_error' + -'distributed_cache_log_mode' + -'distributed_cache_fetch_metrics_only_from_current_az' + -'distributed_cache_connect_max_tries' + -'distributed_cache_receive_response_wait_milliseconds' + -'distributed_cache_receive_timeout_milliseconds' + -'distributed_cache_wait_connection_from_pool_milliseconds' + -'distributed_cache_bypass_connection_pool' + -'distributed_cache_pool_behaviour_on_limit' + -'distributed_cache_read_alignment' + -'distributed_cache_max_unacked_inflight_packets' + -'distributed_cache_data_packet_ack_window' + -'distributed_cache_discard_connection_if_unread_data' + -'distributed_cache_min_bytes_for_seek' + -'filesystem_cache_enable_background_download_for_metadata_files_in_packed_storage' + -'filesystem_cache_enable_background_download_during_fetch' + -'parallelize_output_from_storages' + -'insert_deduplication_token' + -'count_distinct_optimization' + -'throw_if_no_data_to_insert' + -'compatibility_ignore_auto_increment_in_create_table' + -'multiple_joins_try_to_keep_original_names' + -'optimize_sorting_by_input_stream_properties' + -'keeper_max_retries' + -'keeper_retry_initial_backoff_ms' + -'keeper_retry_max_backoff_ms' + -'insert_keeper_max_retries' + -'insert_keeper_retry_initial_backoff_ms' + -'insert_keeper_retry_max_backoff_ms' + -'insert_keeper_fault_injection_probability' + -'insert_keeper_fault_injection_seed' + -'force_aggregation_in_order' + -'http_max_request_param_data_size' + -'function_json_value_return_type_allow_nullable' + -'function_json_value_return_type_allow_complex' + -'use_with_fill_by_sorting_prefix' + -'optimize_uniq_to_count' + -'use_variant_as_common_type' + -'enable_order_by_all' + -'ignore_drop_queries_probability' + -'traverse_shadow_remote_data_paths' + -'geo_distance_returns_float64_on_float64_arguments' + -'allow_get_client_http_header' + -'cast_string_to_dynamic_use_inference' + -'enable_blob_storage_log' + -'use_json_alias_for_old_object_type' + -'allow_create_index_without_type' + -'create_index_ignore_unique' + -'print_pretty_type_names' + -'create_table_empty_primary_key_by_default' + -'allow_named_collection_override_by_default' + -'default_normal_view_sql_security' + -'default_materialized_view_sql_security' + -'default_view_definer' + -'cache_warmer_threads' + -'use_async_executor_for_materialized_views' + -'ignore_cold_parts_seconds' + -'short_circuit_function_evaluation_for_nulls' + -'short_circuit_function_evaluation_for_nulls_threshold' + -'prefer_warmed_unmerged_parts_seconds' + -'iceberg_timestamp_ms' + -'iceberg_snapshot_id' + -'allow_deprecated_error_prone_window_functions' + -'use_iceberg_partition_pruning' + -'allow_deprecated_snowflake_conversion_functions' + -'optimize_distinct_in_order' + -'keeper_map_strict_mode' + -'extract_key_value_pairs_max_pairs_per_row' + -'extract_kvp_max_pairs_per_row' + -'restore_replace_external_engines_to_null' + -'restore_replace_external_table_functions_to_null' + -'restore_replace_external_dictionary_source_to_null' + -'allow_experimental_parallel_reading_from_replicas' + -'enable_parallel_replicas' + -'max_parallel_replicas' + -'parallel_replicas_mode' + -'parallel_replicas_count' + -'parallel_replica_offset' + -'parallel_replicas_custom_key' + -'parallel_replicas_custom_key_range_lower' + -'parallel_replicas_custom_key_range_upper' + -'cluster_for_parallel_replicas' + -'parallel_replicas_allow_in_with_subquery' + -'parallel_replicas_for_non_replicated_merge_tree' + -'parallel_replicas_min_number_of_rows_per_replica' + -'parallel_replicas_prefer_local_join' + -'parallel_replicas_mark_segment_size' + -'parallel_replicas_local_plan' + -'parallel_replicas_index_analysis_only_on_coordinator' + -'parallel_replicas_only_with_analyzer' + -'parallel_replicas_for_cluster_engines' + -'allow_experimental_analyzer' + -'enable_analyzer' + -'analyzer_compatibility_join_using_top_level_identifier' + -'session_timezone' + -'create_if_not_exists' + -'enforce_strict_identifier_format' + -'mongodb_throw_on_unsupported_query' + -'implicit_select' + -'optimize_extract_common_expressions' + -'optimize_and_compare_chain' + -'push_external_roles_in_interserver_queries' + -'shared_merge_tree_sync_parts_on_partition_operations' + -'allow_experimental_variant_type' + -'enable_variant_type' + -'allow_experimental_dynamic_type' + -'enable_dynamic_type' + -'allow_experimental_json_type' + -'enable_json_type' + -'allow_general_join_planning' + -'merge_table_max_tables_to_look_for_schema_inference' + -'validate_enum_literals_in_operators' + -'max_autoincrement_series' + -'use_hive_partitioning' + -'apply_settings_from_server' + -'allow_experimental_materialized_postgresql_table' + -'allow_experimental_funnel_functions' + -'allow_experimental_nlp_functions' + -'allow_experimental_hash_functions' + -'allow_experimental_object_type' + -'allow_experimental_time_series_table' + -'allow_experimental_vector_similarity_index' + -'allow_experimental_codecs' + -'allow_experimental_shared_set_join' + -'max_limit_for_ann_queries' + -'hnsw_candidate_list_size_for_search' + -'throw_on_unsupported_query_inside_transaction' + -'wait_changes_become_visible_after_commit_mode' + -'implicit_transaction' + -'grace_hash_join_initial_buckets' + -'grace_hash_join_max_buckets' + -'join_to_sort_minimum_perkey_rows' + -'join_to_sort_maximum_table_rows' + -'allow_experimental_join_right_table_sorting' + -'allow_statistics_optimize' + -'allow_statistic_optimize' + -'allow_experimental_statistics' + -'allow_experimental_statistic' + -'allow_archive_path_syntax' + -'allow_experimental_inverted_index' + -'allow_experimental_full_text_index' + -'allow_experimental_join_condition' + -'allow_experimental_live_view' + -'live_view_heartbeat_interval' + -'max_live_view_insert_blocks_before_refresh' + -'allow_experimental_window_view' + -'window_view_clean_interval' + -'window_view_heartbeat_interval' + -'wait_for_window_view_fire_signal_timeout' + -'stop_refreshable_materialized_views_on_startup' + -'allow_experimental_database_materialized_postgresql' + -'allow_experimental_query_deduplication' + -'allow_experimental_database_iceberg' + -'allow_experimental_database_unity_catalog' + -'allow_experimental_database_glue_catalog' + -'allow_experimental_kusto_dialect' + -'allow_experimental_prql_dialect' + -'enable_adaptive_memory_spill_scheduler' + -'allow_experimental_ts_to_grid_aggregate_function' + -'update_insert_deduplication_token_in_dependent_materialized_views' + -'max_memory_usage_for_all_queries' + -'multiple_joins_rewriter_version' + -'enable_debug_queries' + -'allow_experimental_database_atomic' + -'allow_experimental_bigint_types' + -'allow_experimental_window_functions' + -'allow_experimental_geo_types' + -'allow_experimental_query_cache' + -'allow_experimental_alter_materialized_view_structure' + -'allow_experimental_shared_merge_tree' + -'allow_experimental_database_replicated' + -'allow_experimental_refreshable_materialized_view' + -'allow_experimental_bfloat16_type' + -'async_insert_stale_timeout_ms' + -'handle_kafka_error_mode' + -'database_replicated_ddl_output' + -'replication_alter_columns_timeout' + -'odbc_max_field_size' + -'allow_experimental_map_type' + -'merge_tree_clear_old_temporary_directories_interval_seconds' + -'merge_tree_clear_old_parts_interval_seconds' + -'partial_merge_join_optimizations' + -'max_alter_threads' + -'use_mysql_types_in_show_columns' + -'s3queue_allow_experimental_sharded_mode' + -'lightweight_mutation_projection_mode' + -'background_buffer_flush_schedule_pool_size' + -'background_pool_size' + -'background_merges_mutations_concurrency_ratio' + -'background_move_pool_size' + -'background_fetches_pool_size' + -'background_common_pool_size' + -'background_schedule_pool_size' + -'background_message_broker_schedule_pool_size' + -'background_distributed_schedule_pool_size' + -'max_remote_read_network_bandwidth_for_server' + -'max_remote_write_network_bandwidth_for_server' + -'async_insert_threads' + -'max_replicated_fetches_network_bandwidth_for_server' + -'max_replicated_sends_network_bandwidth_for_server' + -'max_entries_for_hash_table_stats' + -'default_database_engine' + -'max_pipeline_depth' + -'temporary_live_view_timeout' + -'async_insert_cleanup_timeout_ms' + -'optimize_fuse_sum_count_avg' + -'drain_timeout' + -'backup_threads' + -'restore_threads' + -'optimize_duplicate_order_by_and_distinct' + -'parallel_replicas_min_number_of_granules_to_enable' + -'parallel_replicas_custom_key_filter_type' + -'query_plan_optimize_projection' + -'query_cache_store_results_of_queries_with_nondeterministic_functions' + -'allow_experimental_annoy_index' + -'max_threads_for_annoy_index_creation' + -'annoy_index_search_k_nodes' + -'allow_experimental_usearch_index' + -'optimize_move_functions_out_of_any' + -'allow_experimental_undrop_table_query' + -'allow_experimental_s3queue' + -'query_plan_optimize_primary_key' + -'optimize_monotonous_functions_in_order_by' + -'http_max_chunk_size' + -'iceberg_engine_ignore_schema_evolution' + -'parallel_replicas_single_task_marks_count_multiplier' + -'allow_experimental_database_materialized_mysql' + -'format_csv_delimiter' + -'format_csv_allow_single_quotes' + -'format_csv_allow_double_quotes' + -'output_format_csv_serialize_tuple_into_separate_columns' + -'input_format_csv_deserialize_separate_columns_into_tuple' + -'output_format_csv_crlf_end_of_line' + -'input_format_csv_allow_cr_end_of_line' + -'input_format_csv_enum_as_number' + -'input_format_csv_arrays_as_nested_csv' + -'input_format_skip_unknown_fields' + -'input_format_with_names_use_header' + -'input_format_with_types_use_header' + -'input_format_import_nested_json' + -'input_format_defaults_for_omitted_fields' + -'input_format_csv_empty_as_default' + -'input_format_tsv_empty_as_default' + -'input_format_tsv_enum_as_number' + -'input_format_null_as_default' + -'input_format_force_null_for_omitted_fields' + -'input_format_arrow_case_insensitive_column_matching' + -'input_format_orc_row_batch_size' + -'input_format_orc_case_insensitive_column_matching' + -'input_format_parquet_case_insensitive_column_matching' + -'input_format_parquet_preserve_order' + -'input_format_parquet_filter_push_down' + -'input_format_parquet_bloom_filter_push_down' + -'input_format_parquet_use_native_reader' + -'input_format_allow_seeks' + -'input_format_orc_allow_missing_columns' + -'input_format_orc_use_fast_decoder' + -'input_format_orc_filter_push_down' + -'input_format_orc_reader_time_zone_name' + -'input_format_orc_dictionary_as_low_cardinality' + -'input_format_parquet_allow_missing_columns' + -'input_format_parquet_local_file_min_bytes_for_seek' + -'input_format_parquet_enable_row_group_prefetch' + -'input_format_arrow_allow_missing_columns' + -'input_format_hive_text_fields_delimiter' + -'input_format_hive_text_collection_items_delimiter' + -'input_format_hive_text_map_keys_delimiter' + -'input_format_hive_text_allow_variable_number_of_columns' + -'input_format_msgpack_number_of_columns' + -'output_format_msgpack_uuid_representation' + -'input_format_max_rows_to_read_for_schema_inference' + -'input_format_max_bytes_to_read_for_schema_inference' + -'input_format_csv_use_best_effort_in_schema_inference' + -'input_format_csv_try_infer_numbers_from_strings' + -'input_format_csv_try_infer_strings_from_quoted_tuples' + -'input_format_tsv_use_best_effort_in_schema_inference' + -'input_format_csv_detect_header' + -'input_format_csv_allow_whitespace_or_tab_as_delimiter' + -'input_format_csv_trim_whitespaces' + -'input_format_csv_use_default_on_bad_values' + -'input_format_csv_allow_variable_number_of_columns' + -'input_format_tsv_allow_variable_number_of_columns' + -'input_format_custom_allow_variable_number_of_columns' + -'input_format_json_compact_allow_variable_number_of_columns' + -'input_format_tsv_detect_header' + -'input_format_custom_detect_header' + -'input_format_parquet_skip_columns_with_unsupported_types_in_schema_inference' + -'input_format_parquet_max_block_size' + -'input_format_parquet_prefer_block_bytes' + -'input_format_protobuf_skip_fields_with_unsupported_types_in_schema_inference' + -'input_format_capn_proto_skip_fields_with_unsupported_types_in_schema_inference' + -'input_format_orc_skip_columns_with_unsupported_types_in_schema_inference' + -'input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference' + -'column_names_for_schema_inference' + -'schema_inference_hints' + -'schema_inference_mode' + -'schema_inference_make_columns_nullable' + -'schema_inference_make_json_columns_nullable' + -'input_format_json_read_bools_as_numbers' + -'input_format_json_read_bools_as_strings' + -'input_format_json_try_infer_numbers_from_strings' + -'input_format_json_validate_types_from_metadata' + -'input_format_json_read_numbers_as_strings' + -'input_format_json_read_objects_as_strings' + -'input_format_json_read_arrays_as_strings' + -'input_format_json_try_infer_named_tuples_from_objects' + -'input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects' + -'input_format_json_infer_incomplete_types_as_strings' + -'input_format_json_named_tuples_as_objects' + -'input_format_json_ignore_unknown_keys_in_named_tuple' + -'input_format_json_defaults_for_missing_elements_in_named_tuple' + -'input_format_json_throw_on_bad_escape_sequence' + -'input_format_json_ignore_unnecessary_fields' + -'input_format_try_infer_variants' + -'type_json_skip_duplicated_paths' + -'input_format_json_max_depth' + -'input_format_json_empty_as_default' + -'input_format_try_infer_integers' + -'input_format_try_infer_dates' + -'input_format_try_infer_datetimes' + -'input_format_try_infer_datetimes_only_datetime64' + -'input_format_try_infer_exponent_floats' + -'output_format_markdown_escape_special_characters' + -'input_format_protobuf_flatten_google_wrappers' + -'output_format_protobuf_nullables_with_google_wrappers' + -'input_format_csv_skip_first_lines' + -'input_format_tsv_skip_first_lines' + -'input_format_csv_skip_trailing_empty_lines' + -'input_format_tsv_skip_trailing_empty_lines' + -'input_format_custom_skip_trailing_empty_lines' + -'input_format_tsv_crlf_end_of_line' + -'input_format_native_allow_types_conversion' + -'input_format_native_decode_types_in_binary_format' + -'output_format_native_encode_types_in_binary_format' + -'output_format_native_write_json_as_string' + -'date_time_input_format' + -'date_time_output_format' + -'interval_output_format' + -'date_time_64_output_format_cut_trailing_zeros_align_to_groups_of_thousands' + -'input_format_ipv4_default_on_conversion_error' + -'input_format_ipv6_default_on_conversion_error' + -'bool_true_representation' + -'bool_false_representation' + -'input_format_values_interpret_expressions' + -'input_format_values_deduce_templates_of_expressions' + -'input_format_values_accurate_types_of_literals' + -'input_format_avro_allow_missing_fields' + -'input_format_avro_null_as_default' + -'format_binary_max_string_size' + -'format_binary_max_array_size' + -'input_format_binary_decode_types_in_binary_format' + -'output_format_binary_encode_types_in_binary_format' + -'format_avro_schema_registry_url' + -'input_format_binary_read_json_as_string' + -'output_format_binary_write_json_as_string' + -'output_format_json_quote_64bit_integers' + -'output_format_json_quote_denormals' + -'output_format_json_quote_decimals' + -'output_format_json_quote_64bit_floats' + -'output_format_json_escape_forward_slashes' + -'output_format_json_named_tuples_as_objects' + -'output_format_json_skip_null_value_in_named_tuples' + -'output_format_json_array_of_rows' + -'output_format_json_validate_utf8' + -'output_format_json_pretty_print' + -'format_json_object_each_row_column_for_object_name' + -'output_format_pretty_max_rows' + -'output_format_pretty_max_column_pad_width' + -'output_format_pretty_max_column_name_width_cut_to' + -'output_format_pretty_max_column_name_width_min_chars_to_cut' + -'output_format_pretty_max_value_width' + -'output_format_pretty_max_value_width_apply_for_single_value' + -'output_format_pretty_squash_consecutive_ms' + -'output_format_pretty_squash_max_wait_ms' + -'output_format_pretty_color' + -'output_format_pretty_grid_charset' + -'output_format_pretty_display_footer_column_names' + -'output_format_pretty_display_footer_column_names_min_rows' + -'output_format_parquet_row_group_size' + -'output_format_parquet_row_group_size_bytes' + -'output_format_parquet_string_as_string' + -'output_format_parquet_fixed_string_as_fixed_byte_array' + -'output_format_parquet_version' + -'output_format_parquet_compression_method' + -'output_format_parquet_compliant_nested_types' + -'output_format_parquet_use_custom_encoder' + -'output_format_parquet_parallel_encoding' + -'output_format_parquet_data_page_size' + -'output_format_parquet_batch_size' + -'output_format_parquet_write_page_index' + -'output_format_parquet_write_bloom_filter' + -'output_format_parquet_bloom_filter_bits_per_value' + -'output_format_parquet_bloom_filter_flush_threshold_bytes' + -'output_format_parquet_datetime_as_uint32' + -'output_format_avro_codec' + -'output_format_avro_sync_interval' + -'output_format_avro_string_column_pattern' + -'output_format_avro_rows_in_file' + -'output_format_tsv_crlf_end_of_line' + -'format_csv_null_representation' + -'format_tsv_null_representation' + -'output_format_decimal_trailing_zeros' + -'input_format_allow_errors_num' + -'input_format_allow_errors_ratio' + -'input_format_record_errors_file_path' + -'errors_output_format' + -'format_schema' + -'format_template_resultset' + -'format_template_row' + -'format_template_row_format' + -'format_template_resultset_format' + -'format_template_rows_between_delimiter' + -'format_custom_escaping_rule' + -'format_custom_field_delimiter' + -'format_custom_row_before_delimiter' + -'format_custom_row_after_delimiter' + -'format_custom_row_between_delimiter' + -'format_custom_result_before_delimiter' + -'format_custom_result_after_delimiter' + -'format_regexp' + -'format_regexp_escaping_rule' + -'format_regexp_skip_unmatched' + -'output_format_write_statistics' + -'output_format_pretty_row_numbers' + -'output_format_pretty_highlight_digit_groups' + -'output_format_pretty_single_large_number_tip_threshold' + -'output_format_pretty_highlight_trailing_spaces' + -'output_format_pretty_multiline_fields' + -'output_format_pretty_fallback_to_vertical' + -'output_format_pretty_fallback_to_vertical_max_rows_per_chunk' + -'output_format_pretty_fallback_to_vertical_min_table_width' + -'output_format_pretty_fallback_to_vertical_min_columns' + -'insert_distributed_one_random_shard' + -'exact_rows_before_limit' + -'rows_before_aggregation' + -'cross_to_inner_join_rewrite' + -'output_format_arrow_low_cardinality_as_dictionary' + -'output_format_arrow_use_signed_indexes_for_dictionary' + -'output_format_arrow_use_64_bit_indexes_for_dictionary' + -'output_format_arrow_string_as_string' + -'output_format_arrow_fixed_string_as_fixed_byte_array' + -'output_format_arrow_compression_method' + -'output_format_orc_string_as_string' + -'output_format_orc_compression_method' + -'output_format_orc_row_index_stride' + -'output_format_orc_dictionary_key_size_threshold' + -'output_format_orc_writer_time_zone_name' + -'format_capn_proto_enum_comparising_mode' + -'format_capn_proto_use_autogenerated_schema' + -'format_protobuf_use_autogenerated_schema' + -'output_format_schema' + -'input_format_mysql_dump_table_name' + -'input_format_mysql_dump_map_column_names' + -'output_format_sql_insert_max_batch_size' + -'output_format_sql_insert_table_name' + -'output_format_sql_insert_include_column_names' + -'output_format_sql_insert_use_replace' + -'output_format_sql_insert_quote_names' + -'output_format_values_escape_quote_with_quote' + -'output_format_bson_string_as_string' + -'input_format_bson_skip_fields_with_unsupported_types_in_schema_inference' + -'format_display_secrets_in_show_and_select' + -'regexp_dict_allow_hyperscan' + -'regexp_dict_flag_case_insensitive' + -'regexp_dict_flag_dotall' + -'dictionary_use_async_executor' + -'precise_float_parsing' + -'date_time_overflow_behavior' + -'validate_experimental_and_suspicious_types_inside_nested_types' + -'show_create_query_identifier_quoting_rule' + -'show_create_query_identifier_quoting_style' + -'input_format_arrow_import_nested' + -'input_format_parquet_import_nested' + -'input_format_orc_import_nested' + -'output_format_enable_streaming' diff --git a/styles/ClickHouse/BackTicksTableEngines.yml b/styles/ClickHouse/BackTicksTableEngines.yml new file mode 100644 index 00000000000..395727692e3 --- /dev/null +++ b/styles/ClickHouse/BackTicksTableEngines.yml @@ -0,0 +1,70 @@ +extends: existence +message: "ClickHouse table engines '%s' should be enclosed in backticks." +level: suggestion +ignorecase: true +tokens: + -'OSS' + -'AzureBlobStorage' + -'KeeperMap' + -'S3' + -'MaterializedPostgreSQL' + -'PostgreSQL' + -'NATS' + -'COSN' + -'Redis' + -'MongoDB' + -'MySQL' + -'S3Queue' + -'Distributed' + -'ReplicatedSummingMergeTree' + -'ExecutablePool' + -'IcebergLocal' + -'ODBC' + -'Hive' + -'View' + -'FuzzQuery' + -'Loop' + -'MaterializedView' + -'Join' + -'Executable' + -'Kafka' + -'Set' + -'Dictionary' + -'URL' + -'ReplicatedVersionedCollapsingMergeTree' + -'File' + -'IcebergS3' + -'Iceberg' + -'GenerateRandom' + -'LiveView' + -'Memory' + -'Merge' + -'WindowView' + -'Null' + -'SQLite' + -'VersionedCollapsingMergeTree' + -'ReplacingMergeTree' + -'TimeSeries' + -'HDFS' + -'EmbeddedRocksDB' + -'ReplicatedCollapsingMergeTree' + -'IcebergHDFS' + -'ReplicatedGraphiteMergeTree' + -'IcebergAzure' + -'ReplicatedMergeTree' + -'Hudi' + -'TinyLog' + -'FuzzJSON' + -'ReplicatedReplacingMergeTree' + -'JDBC' + -'SummingMergeTree' + -'MergeTree' + -'GraphiteMergeTree' + -'CollapsingMergeTree' + -'ReplicatedAggregatingMergeTree' + -'RabbitMQ' + -'Buffer' + -'AzureQueue' + -'AggregatingMergeTree' + -'StripeLog' + -'Log' diff --git a/styles/ClickHouse/BackTicksTableFunctions.yml b/styles/ClickHouse/BackTicksTableFunctions.yml new file mode 100644 index 00000000000..859354740fe --- /dev/null +++ b/styles/ClickHouse/BackTicksTableFunctions.yml @@ -0,0 +1,64 @@ +extends: existence +message: "ClickHouse table engines '%s' should be enclosed in backticks." +level: suggestion +ignorecase: true +tokens: + -'hudiCluster' + -'icebergAzureCluster' + -'icebergS3Cluster' + -'icebergLocal' + -'icebergHDFS' + -'icebergAzure' + -'icebergS3' + -'iceberg' + -'hdfsCluster' + -'azureBlobStorageCluster' + -'oss' + -'timeSeriesMetrics' + -'fuzzQuery' + -'timeSeriesData' + -'format' + -'loop' + -'postgresql' + -'clusterAllReplicas' + -'viewIfPermitted' + -'view' + -'jdbc' + -'icebergHDFSCluster' + -'s3Cluster' + -'timeSeriesTags' + -'hive' + -'hdfs' + -'dictionary' + -'numbers_mt' + -'mergeTreeIndex' + -'hudi' + -'s3' + -'cosn' + -'generateRandom' + -'merge' + -'url' + -'zeros_mt' + -'executable' + -'fuzzJSON' + -'urlCluster' + -'fileCluster' + -'values' + -'file' + -'redis' + -'zeros' + -'input' + -'mysql' + -'odbc' + -'generateSeries' + -'mongodb' + -'generate_series' + -'sqlite' + -'cluster' + -'gcs' + -'remoteSecure' + -'numbers' + -'azureBlobStorage' + -'viewExplain' + -'null' + -'remote' diff --git a/styles/ClickHouse/BadPlurals.yml b/styles/ClickHouse/BadPlurals.yml new file mode 100644 index 00000000000..4497d43e97b --- /dev/null +++ b/styles/ClickHouse/BadPlurals.yml @@ -0,0 +1,13 @@ +--- +name: gitlab_base.BadPlurals +description: | + Don't write plural words with the '(s)' construction. 'HTTP(S)' is acceptable. +extends: existence +message: "Rewrite '%s' to be plural without parentheses." +link: https://docs.gitlab.com/development/documentation/styleguide/word_list/#s +vocab: false +level: warning +ignorecase: true +nonword: true +tokens: + - '(?