Skip to content

Commit 88d17f0

Browse files
committed
make cte name deterministic
1 parent 85d6b13 commit 88d17f0

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/snowflake/snowpark/_internal/compiler/repeated_subquery_elimination.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
update_resolvable_node,
1919
)
2020
from snowflake.snowpark._internal.utils import (
21+
TEMP_OBJECT_NAME_PREFIX,
2122
TempObjectType,
22-
random_name_for_temp_object,
2323
)
2424

2525

@@ -164,10 +164,11 @@ def _update_parents(
164164
node.encoded_node_id_with_query
165165
]
166166
else:
167-
# create a WithQueryBlock node
168-
with_block = WithQueryBlock(
169-
name=random_name_for_temp_object(TempObjectType.CTE), child=node
170-
)
167+
# create a WithQueryBlock node with deterministic name
168+
# Use first 16 chars of encoded_node_id_with_query (SHA256 hash)
169+
# This ensures the same node always gets the same CTE name
170+
cte_name = f"{TEMP_OBJECT_NAME_PREFIX}{TempObjectType.CTE.value}_{node.encoded_node_id_with_query[:16].upper()}"
171+
with_block = WithQueryBlock(name=cte_name, child=node)
171172
with_block._is_valid_for_replacement = True
172173

173174
resolved_with_block = self._query_generator.resolve(with_block)

0 commit comments

Comments
 (0)