Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consolidate and expand ident normalization tests #14374

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 0 additions & 40 deletions datafusion/sqllogictest/test_files/ddl.slt
Original file line number Diff line number Diff line change
Expand Up @@ -637,46 +637,6 @@ select * from table_without_values;
statement ok
set datafusion.catalog.information_schema = true;

statement ok
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I moved these tests to a new file

CREATE OR REPLACE TABLE TABLE_WITH_NORMALIZATION(FIELD1 BIGINT, FIELD2 BIGINT);

# Check table name is in lowercase
query TTTT
show create table table_with_normalization
----
datafusion public table_with_normalization NULL

# Check column name is in uppercase
query TTT
describe table_with_normalization
----
field1 Int64 YES
field2 Int64 YES

# Disable ident normalization
statement ok
set datafusion.sql_parser.enable_ident_normalization = false;

statement ok
CREATE TABLE TABLE_WITHOUT_NORMALIZATION(FIELD1 BIGINT, FIELD2 BIGINT) AS VALUES (1,2);

# Check table name is in uppercase
query TTTT
show create table TABLE_WITHOUT_NORMALIZATION
----
datafusion public TABLE_WITHOUT_NORMALIZATION NULL

# Check column name is in uppercase
query TTT
describe TABLE_WITHOUT_NORMALIZATION
----
FIELD1 Int64 YES
FIELD2 Int64 YES

statement ok
set datafusion.sql_parser.enable_ident_normalization = true;


statement ok
create table foo(x int);

Expand Down
134 changes: 134 additions & 0 deletions datafusion/sqllogictest/test_files/ident_normalization.slt
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# Enable information_schema, so we can execute show create table
statement ok
set datafusion.catalog.information_schema = true;

# Check ident normalization is enabled by default

statement ok
CREATE OR REPLACE TABLE TABLE_WITH_NORMALIZATION(FIELD1 BIGINT, FIELD2 BIGINT);

# Check table name is in lowercase
query TTTT
show create table table_with_normalization
----
datafusion public table_with_normalization NULL

# Check column name is in uppercase
query TTT
describe table_with_normalization
----
field1 Int64 YES
field2 Int64 YES

# Disable ident normalization
statement ok
set datafusion.sql_parser.enable_ident_normalization = false;

statement ok
CREATE TABLE TABLE_WITHOUT_NORMALIZATION(FIELD1 BIGINT, FIELD2 BIGINT) AS VALUES (1,2);

# Check table name is in uppercase
query TTTT
show create table TABLE_WITHOUT_NORMALIZATION
----
datafusion public TABLE_WITHOUT_NORMALIZATION NULL

# Check column name is in uppercase
query TTT
describe TABLE_WITHOUT_NORMALIZATION
----
FIELD1 Int64 YES
FIELD2 Int64 YES

statement ok
DROP TABLE TABLE_WITHOUT_NORMALIZATION

############
## Column Name Normalization
############

# Table x (lowercase) with a column named "A" (uppercase)
statement ok
create table x as select 1 "A"

query TTT
describe x
----
A Int64 NO

# Expect error as 'a' is not a column -- "A" is and the identifiers
# are not normalized
query error DataFusion error: Schema error: No field named a\. Valid fields are x\."A"\.
select a from x;

# should work (note the uppercase 'A')
query I
select A from x;
----
1

statement ok
drop table x;

############
## Table Name Normalization
############

# Table Y (uppercase) with a column named a (lower case)
statement ok
create table Y as select 1 a;

query TTT
describe Y
----
a Int64 NO

# Expect error as y is not a a table -- "Y" is
query error DataFusion error: Error during planning: table 'datafusion\.public\.y' not found
select * from y;

# should work (note the uppercase 'Y')
query I
select * from Y;
----
1

statement ok
drop table Y;

############
## Function Name Normalization
############

## Check function names are still normalized even though column names are not
query I
SELECT length('str');
----
3

query I
SELECT LENGTH('str');
----
3

query T
SELECT CONCAT('Hello', 'World')
----
HelloWorld
18 changes: 0 additions & 18 deletions datafusion/sqllogictest/test_files/scalar.slt
Original file line number Diff line number Diff line change
Expand Up @@ -1802,24 +1802,6 @@ SELECT acos();
statement error
SELECT isnan();

# turn off enable_ident_normalization
Copy link
Contributor Author

Choose a reason for hiding this comment

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

moved to a new file

statement ok
set datafusion.sql_parser.enable_ident_normalization = false;

query I
SELECT LENGTH('str');
----
3

query T
SELECT CONCAT('Hello', 'World')
----
HelloWorld

# turn on enable_ident_normalization
statement ok
set datafusion.sql_parser.enable_ident_normalization = true;

query I
SELECT LENGTH('str');
----
Expand Down