Skip to content

Commit 4cfbbbb

Browse files
committed
Fix df.rename not working for quoted and non quoted column names like 'ab', 'ab'
1 parent 294d96f commit 4cfbbbb

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/snowflake/snowpark/dataframe.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6171,7 +6171,9 @@ def with_column_renamed(
61716171
else:
61726172
raise TypeError(f"{str(existing)} must be a column name or Column object.")
61736173

6174-
to_be_renamed = [x for x in self._output if x.name.upper() == old_name.upper()]
6174+
to_be_renamed = [
6175+
x for x in self._output if quote_name(x.name) == quote_name(old_name)
6176+
]
61756177
if not to_be_renamed:
61766178
raise ValueError(
61776179
f'Unable to rename column "{existing}" because it doesn\'t exist.'

tests/integ/scala/test_dataframe_suite.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2686,6 +2686,17 @@ def test_rename_function_multiple(session):
26862686
Utils.check_answer(df2, [Row(1, 2)])
26872687

26882688

2689+
@pytest.mark.skipif(
2690+
"config.getoption('local_testing_mode', default=False)",
2691+
reason="DataFrame.rename is not supported in Local Testing",
2692+
)
2693+
def test_rename_with_case_sensitive_column_name(session):
2694+
df = session.create_dataframe([[1, 2]], schema=["ab", '"ab"'])
2695+
df2 = df.rename('"ab"', "ab1")
2696+
assert df2.schema.names[0] == "AB1" and df2.schema.names[1] == '"ab"'
2697+
Utils.check_answer(df2, [Row(1, 2)])
2698+
2699+
26892700
@pytest.mark.skipif(
26902701
"config.getoption('local_testing_mode', default=False)",
26912702
reason="DataFrame.rename is not supported in Local Testing",

0 commit comments

Comments
 (0)