Cannot resolve columns with aliases in ORDER BY
When a column A
has an alias B
, we no longer can use ORDER BY {A | B | 1}
.
Note that this is a regression! The query used to work in 7dad8474 (picodata@56ab51a0).
Tg: https://t.me/c/1222144211/13617
Repro:
/* We should be able to use "relname" in ORDER BY according to the SQL standard. */
picodata> select name as relname from _pico_table order by relname;
2024-09-26 19:53:45.925 [25476] main/104/interactive storage.rs:77 E> Tarantool(BoxError { code: 153, message: Some("Field 'relname' was not found in space '_pico_table' format"), error_type: Some("ClientError"), errno: None, file: Some("./src/box/sql/resolve.c"), line: Some(431), fields: {}, cause: None }): prepare
2024-09-26 19:53:45.925 [25476] main/104/interactive helpers.rs:1489 E> failed to compile stmt: {_e:?}
---
- null
- 'sbroad: failed to create tarantool: Tarantool(BoxError { code: 153, message: Some("Field
''relname'' was not found in space ''_pico_table'' format"), error_type: Some("ClientError"),
errno: None, file: Some("./src/box/sql/resolve.c"), line: Some(431), fields: {},
cause: None })'
...
/* Similarly, "name" should still be available. */
picodata> select name as relname from _pico_table order by name;
---
- null
- 'sbroad: column with name "name" not found'
...
/* Sadly, even column numbers do not work... */
picodata> select name as relname from _pico_table order by 1;
2024-09-26 19:13:08.334 [25476] main/104/interactive storage.rs:77 E> Tarantool(BoxError { code: 153, message: Some("Field 'relname' was not found in space '_pico_table' format"), error_type: Some("ClientError"), errno: None, file: Some("./src/box/sql/resolve.c"), line: Some(431), fields: {}, cause: None }): prepare
2024-09-26 19:13:08.334 [25476] main/104/interactive helpers.rs:1489 E> failed to compile stmt: {_e:?}
---
- null
- 'sbroad: failed to create tarantool: Tarantool(BoxError { code: 153, message: Some("Field
''relname'' was not found in space ''_pico_table'' format"), error_type: Some("ClientError"),
errno: None, file: Some("./src/box/sql/resolve.c"), line: Some(431), fields: {},
cause: None })'
...