|
29 | 29 | import bigframes.core.compile.concat as concat_impl |
30 | 30 | import bigframes.core.compile.configs as configs |
31 | 31 | import bigframes.core.compile.explode |
| 32 | +from bigframes.core.logging import data_types as data_type_logger |
32 | 33 | import bigframes.core.nodes as nodes |
33 | 34 | import bigframes.core.ordering as bf_ordering |
34 | 35 | import bigframes.core.rewrite as rewrites |
@@ -56,23 +57,30 @@ def compile_sql(request: configs.CompileRequest) -> configs.CompileResult: |
56 | 57 | ) |
57 | 58 | if request.sort_rows: |
58 | 59 | result_node = cast(nodes.ResultNode, rewrites.column_pruning(result_node)) |
| 60 | + encoded_type_refs = data_type_logger.encode_type_refs(result_node) |
59 | 61 | sql = compile_result_node(result_node) |
60 | 62 | return configs.CompileResult( |
61 | | - sql, result_node.schema.to_bigquery(), result_node.order_by |
| 63 | + sql, |
| 64 | + result_node.schema.to_bigquery(), |
| 65 | + result_node.order_by, |
| 66 | + encoded_type_refs, |
62 | 67 | ) |
63 | 68 |
|
64 | 69 | ordering: Optional[bf_ordering.RowOrdering] = result_node.order_by |
65 | 70 | result_node = dataclasses.replace(result_node, order_by=None) |
66 | 71 | result_node = cast(nodes.ResultNode, rewrites.column_pruning(result_node)) |
67 | 72 | result_node = cast(nodes.ResultNode, rewrites.defer_selection(result_node)) |
| 73 | + encoded_type_refs = data_type_logger.encode_type_refs(result_node) |
68 | 74 | sql = compile_result_node(result_node) |
69 | 75 | # Return the ordering iff no extra columns are needed to define the row order |
70 | 76 | if ordering is not None: |
71 | 77 | output_order = ( |
72 | 78 | ordering if ordering.referenced_columns.issubset(result_node.ids) else None |
73 | 79 | ) |
74 | 80 | assert (not request.materialize_all_order_keys) or (output_order is not None) |
75 | | - return configs.CompileResult(sql, result_node.schema.to_bigquery(), output_order) |
| 81 | + return configs.CompileResult( |
| 82 | + sql, result_node.schema.to_bigquery(), output_order, encoded_type_refs |
| 83 | + ) |
76 | 84 |
|
77 | 85 |
|
78 | 86 | def _replace_unsupported_ops(node: nodes.BigFrameNode): |
|
0 commit comments