Skip to content

Commit f19d73f

Browse files
authored
Fix ORDER BY with named aggregates that expand to subqueries (#34)
* Fix ORDER BY subquery aliases with parser rewrite * Fix ORDER BY alias inlining * Avoid ORDER BY alias rewrites in subqueries * Respect real alias table qualifiers * Fix alias qualifier regression test * Group alias qualifier regression explicitly * Narrow alias qualifier regression * Avoid alias binder ambiguity in regression
1 parent f620c77 commit f19d73f

6 files changed

Lines changed: 467 additions & 14 deletions

File tree

include/yardstick_ffi.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,13 @@ void yardstick_free_aggregate_list(YardstickAggregateCallList* list);
177177
*/
178178
YardstickSelectInfo* yardstick_parse_select(const char* sql);
179179

180+
/**
181+
* Inline SELECT aliases inside complex ORDER BY expressions when they reference
182+
* a SELECT alias whose expression contains a subquery. Returns NULL when no
183+
* rewrite is needed or parsing fails.
184+
*/
185+
char* yardstick_inline_order_by_subquery_aliases(const char* sql);
186+
180187
/**
181188
* Free a select info structure.
182189
*/

src/yardstick_extension.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ extern "C" {
6363
char* (*replace_range)(const char*, uint32_t, uint32_t, const char*),
6464
char* (*apply_replacements)(const char*, const YardstickReplacement*, size_t),
6565
char* (*qualify_expression)(const char*, const char*),
66+
char* (*inline_order_by_subquery_aliases)(const char*),
6667
void (*free_string)(char*),
6768
char* (*expand_aggregate_call)(const char*, const char*, const YardstickAtModifier*, size_t, const char*, const char*, const char*, const char* const*, size_t)
6869
);
@@ -635,6 +636,7 @@ static void LoadInternal(ExtensionLoader &loader) {
635636
yardstick_replace_range,
636637
yardstick_apply_replacements,
637638
yardstick_qualify_expression,
639+
yardstick_inline_order_by_subquery_aliases,
638640
yardstick_free_string,
639641
yardstick_expand_aggregate_call
640642
);

0 commit comments

Comments
 (0)