Identifier Case Sensitivity

December 31, 2025 ยท View on GitHub

KalamDB uses case-insensitive identifiers for table names, namespace names, and column names.

Behavior

All identifiers are normalized to lowercase on creation:

-- These all refer to the same table:
CREATE TABLE Users (...)
SELECT * FROM users
SELECT * FROM USERS
-- These all refer to the same column:
SELECT FirstName FROM users
SELECT firstname FROM users
SELECT FIRSTNAME FROM users

Comparison with Other Databases

DatabaseUnquoted IdentifiersQuoted Identifiers
KalamDBLowercase (case-insensitive)N/A
PostgreSQLLowercase (case-insensitive)Preserved (case-sensitive)
MySQLOS-dependentOS-dependent
SQL StandardUppercasePreserved

Rationale

  • Predictable: No OS-dependent behavior
  • Simple: Users don't need to remember exact casing
  • Compatible: Matches DataFusion's default behavior
  • Portable: Queries work consistently across platforms