Skip to content

Commit 2b00422

Browse files
authored
fix(sql): Fix database not preserving column alias casing in SQL (#5948)
1 parent 6375074 commit 2b00422

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

core/src/main/java/io/questdb/griffin/SqlCodeGenerator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@
231231
import io.questdb.griffin.engine.table.FilterOnSubQueryRecordCursorFactory;
232232
import io.questdb.griffin.engine.table.FilterOnValuesRecordCursorFactory;
233233
import io.questdb.griffin.engine.table.FilteredRecordCursorFactory;
234-
import io.questdb.griffin.engine.table.PageFrameRowCursorFactory;
235234
import io.questdb.griffin.engine.table.LatestByAllFilteredRecordCursorFactory;
236235
import io.questdb.griffin.engine.table.LatestByAllIndexedRecordCursorFactory;
237236
import io.questdb.griffin.engine.table.LatestByAllSymbolsFilteredRecordCursorFactory;
@@ -247,6 +246,7 @@
247246
import io.questdb.griffin.engine.table.LatestByValueIndexedRowCursorFactory;
248247
import io.questdb.griffin.engine.table.LatestByValuesIndexedFilteredRecordCursorFactory;
249248
import io.questdb.griffin.engine.table.PageFrameRecordCursorFactory;
249+
import io.questdb.griffin.engine.table.PageFrameRowCursorFactory;
250250
import io.questdb.griffin.engine.table.SelectedRecordCursorFactory;
251251
import io.questdb.griffin.engine.table.SortedSymbolIndexRecordCursorFactory;
252252
import io.questdb.griffin.engine.table.SymbolIndexFilteredRowCursorFactory;
@@ -4216,8 +4216,8 @@ private RecordCursorFactory generateSelectChoose(QueryModel model, SqlExecutionC
42164216
for (int i = 0; i < selectColumnCount; i++) {
42174217
QueryColumn qc = columns.getQuick(i);
42184218
if (
4219-
!Chars.equalsIgnoreCase(metadata.getColumnName(i), qc.getAst().token) ||
4220-
(qc.getAlias() != null && !Chars.equalsIgnoreCase(qc.getAlias(), qc.getAst().token))
4219+
!Chars.equals(metadata.getColumnName(i), qc.getAst().token) ||
4220+
(qc.getAlias() != null && !Chars.equals(qc.getAlias(), qc.getAst().token))
42214221
) {
42224222
entity = false;
42234223
break;

core/src/test/java/io/questdb/test/griffin/SqlCodeGeneratorTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,18 @@ public void testCg() throws Exception {
518518
);
519519
}
520520

521+
@Test
522+
public void testColumnAliasCaseSensitivity() throws Exception {
523+
assertMemoryLeak(() -> {
524+
execute("create table trades (symbol SYMBOL)");
525+
execute("insert into trades values ('USD'), ('EUR')");
526+
assertSql(
527+
"SYMBOL\nUSD\nEUR\n",
528+
"SELECT symbol AS SYMBOL FROM trades"
529+
);
530+
});
531+
}
532+
521533
@Test
522534
public void testCreateTableAsSelectUsesQueryTimestamp() throws Exception {
523535
assertQuery(

0 commit comments

Comments
 (0)