Skip to content

Case-insensitive identifiers#92323

Open
yariks5s wants to merge 42 commits intomasterfrom
yarik/case-insensitive-identifiers
Open

Case-insensitive identifiers#92323
yariks5s wants to merge 42 commits intomasterfrom
yarik/case-insensitive-identifiers

Conversation

@yariks5s
Copy link
Copy Markdown
Member

@yariks5s yariks5s commented Dec 16, 2025

Changelog category (leave one):

  • Improvement

Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):

Provides an ability to use all identifiers (database, table, column) case-insensitively under the setting. Used for SQL-standard compatibility: when the setting is enabled, all identifiers are resolved to lowercase, so identifiers that are different only by case will be considered the same. Closes #33935

Documentation entry for user-facing changes

  • Documentation is written (mandatory for new features)

@clickhouse-gh
Copy link
Copy Markdown
Contributor

clickhouse-gh bot commented Dec 16, 2025

Workflow [PR], commit [220603a]

Summary:

job_name test_name status info comment
Fast test failure
02995_new_settings_history FAIL cidb
Stateless tests (amd_llvm_coverage, 3/3) failure
02995_new_settings_history FAIL cidb
Build (amd_debug) dropped
Build (amd_asan) dropped
Build (amd_tsan) dropped
Build (amd_msan) dropped
Build (amd_ubsan) dropped
Build (amd_binary) dropped
Build (arm_asan) dropped
Build (arm_binary) dropped

@clickhouse-gh clickhouse-gh bot added the pr-improvement Pull request with some product improvements label Dec 16, 2025
@yariks5s yariks5s marked this pull request as draft December 16, 2025 23:33
@yariks5s yariks5s marked this pull request as ready for review December 16, 2025 23:41
@yariks5s yariks5s changed the title Case-insensitive identifiers Case-insensitive identifiers for SELECT queries Dec 16, 2025
@jkartseva jkartseva self-assigned this Dec 18, 2025
Copy link
Copy Markdown
Member

@jkartseva jkartseva left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Copy Markdown
Member

@novikd novikd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR requires changes. Please, consider:

  1. Filling table expression data in case-insensitive way in QueryAnalyzer.
  2. Maybe aliases also should work in case-insensitive pashion.
  3. Other databases may use upper-case -- may be we should as well.

@yariks5s yariks5s changed the title Case-insensitive identifiers for SELECT queries Case-insensitive identifiers Jan 14, 2026
@yariks5s yariks5s requested review from jkartseva and novikd January 15, 2026 19:36
yariks5s and others added 2 commits January 19, 2026 15:58
Resolved conflicts:
- `IdentifierNode.cpp`: adapted `setQuoteStyles` to use `make_intrusive` instead of `std::make_shared`
- `QueryAnalyzer.cpp`: combined PR's `is_part_double_quoted` tracking with master's `allow_to_resolve_niladic_functions` parameter; added both new extern settings
- `Settings.h`: added both `CaseInsensitiveNames` and `DeduplicateInsertMode` setting types
- `ExpressionElementParsers.cpp`: adapted `setQuoteStyle`/`setQuoteStyles` calls to use `make_intrusive`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-improvement Pull request with some product improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A setting to allow case insensitive column, table and database names.

5 participants