Vladimir Dmitrienko created IGNITE-25173:
--------------------------------------------

             Summary: System object names are auto-capitalized, leading to 
unexpected query behavior
                 Key: IGNITE-25173
                 URL: https://issues.apache.org/jira/browse/IGNITE-25173
             Project: Ignite
          Issue Type: Bug
          Components: sql
    Affects Versions: 3.0.0-beta1
            Reporter: Vladimir Dmitrienko


System object names like table names, distribution zone names are capitalized 
implicitly unless enclosed in double quotes.

This behavior can lead to unexpected behavior when querying tables or 
referencing a distribution zone in a CREATE TABLE statement, especially when a 
user relies on the original casing they provided.

Consider the following examples:

1. Unquoted table name:
{code:java}
sql-cli> CREATE TABLE person (ID INT PRIMARY KEY, NAME VARCHAR);

// 1.
sql-cli> SELECT * FROM person;

OK

// 2.
sql-cli> SELECT * FROM PERSON;

OK

// 3.
sql-cli> SELECT * FROM "person";

SQL query execution error
Failed to validate query. From line 1, column 15 to line 1, column 22: 
Object 'person' not found within 'PUBLIC'; did you mean 'PERSON'?

// 4.
sql-cli> SELECT * FROM "PERSON";

OK{code}
In example #3, the query fails event despite using the original casing as 
defined in the CREATE TABLE statement.

2. Quoted table name:

 
{code:java}
sql-cli> CREATE TABLE "person_in_quotes" (ID INT PRIMARY KEY, NAME VARCHAR);

// 1.
sql-cli> SELECT * FROM person_in_quotes;

SQL query execution error
Failed to validate query. From line 1, column 15 to line 1, column 30: 
Object 'PERSON_IN_QUOTES' not found within 'PUBLIC'; 
did you mean 'person_in_quotes'?

// 2.
sql-cli> SELECT * FROM 'person_in_quotes';

SQL query execution error
Failed to parse query: 
Encountered "'person_in_quotes'" at line 1, column 15

// 3.
sql-cli> SELECT * FROM PERSON_IN_QUOTES;

SQL query execution error
Failed to validate query. 
>From line 1, column 15 to line 1, column 30: 
Object 'PERSON_IN_QUOTES' not found within 'PUBLIC'; 
did you mean 'person_in_quotes'?

// 4.
sql-cli> SELECT * FROM "person_in_quotes";

OK{code}
When the table name is quoted in the CREATE TABLE statement, it becomes 
case-sensitive. The only way to reference it successfully is to use double 
quotes with the exact same casing. Additionally, the error messages in examples 
#1 and #3 are misleading, as they suggest using single quotes 
('person_in_quotes'), which results in a validation error.

3. Quoted zone name:

 
{code:java}
sql-cli> CREATE ZONE "test_zone" WITH STORAGE_PROFILES='default';

// 1.
sql-cli> CREATE TABLE person_with_zone (ID INT PRIMARY KEY, NAME VARCHAR) ZONE 
test_zone;

SQL query execution error
Distribution zone with name 'TEST_ZONE' not found.{code}
Since the zone name was quoted when created, referencing it without quotes 
fails. The error message does not clarify the case-sensitivity issue.
 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to