File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 77from src .schemas .translation import SqlQueryRequest , TranslateApiResponse
88from src .utils .ai_analyzer import analyze_sql_translation_error
99from src .utils .vdb_transformer import transform_vdb_table_qualification
10+ from src .utils .dual_transformer import transform_dual_function
1011from src .schemas .translation import TranslationError
1112
1213logger = logging .getLogger (__name__ )
@@ -30,8 +31,10 @@ def translate_sql_to_vql(request: SqlQueryRequest) -> TranslateApiResponse:
3031 expression_tree = parse_one (source_sql , dialect = dialect )
3132 if vdb : # Only apply transformation if vdb is provided
3233 expression_tree = expression_tree .transform (transform_vdb_table_qualification , vdb )
33- converted_vql = expression_tree .sql (dialect = "denodo" , pretty = True )
34+ if dialect == "oracle" :
35+ expression_tree = expression_tree .transform (transform_dual_function )
3436
37+ converted_vql = expression_tree .sql (dialect = "denodo" , pretty = True )
3538 logger .info (f"Successfully translated SQL to VQL. VQL: { converted_vql [:100 ]} ..." )
3639 return TranslateApiResponse (vql = converted_vql )
3740
Original file line number Diff line number Diff line change 1+ import logging
2+ from sqlglot import exp , parse_one
3+
4+ logger = logging .getLogger (__name__ )
5+
6+
7+ def transform_dual_function (node : exp .Expression ) -> exp .Expression :
8+ """
9+ Recursively prefixes transforms Oracle dual to Denodo dual().
10+ """
11+ if isinstance (node , exp .Table ) and node .name == "dual" :
12+ logger .info (f"Transforming table: { node .sql ()} " )
13+
14+ return parse_one ("dual()" )
15+ return node
You can’t perform that action at this time.
0 commit comments