You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug fixes:
- parse_temporal_numeric now errors on unparseable strings instead of
silently returning 0.0, preventing corrupted bounds from propagating.
- NULL valid_from/valid_until boundaries now raise pgrx::error! instead
of silently becoming empty strings in both target and source readers.
Audit comments:
- lib.rs: Safety analysis of thread_local! per-connection caching (memory
ownership, cross-transaction safety, SPI data extraction).
- reader.rs: Prepared statement caching via SPI_keepplan (lifecycle,
automatic replanning, key format).
- executor_cache.rs: Executor introspection cache (invalidation via
source_cols_hash, growth bounds, no row data cached).
Refactor:
- Extract shared qi() function into native/src/util.rs, imported by both
reader.rs and executor_cache.rs.
- Add comprehensive doc comment to build_column_list_cte_query explaining
each CTE and the 6 output SQL fragments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: expected/063_temporal_merge_planner_cache.out
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -3332,11 +3332,11 @@ NOTICE: Explaining:
3332
3332
target_row.stable_pk_payload as discovered_stable_pk_payload,
3333
3333
target_row.es_id AS discovered_id_1, target_row.lu_id AS discovered_id_2, target_row.type AS discovered_id_3 /* v_propagated_id_cols_list */
3334
3334
FROM source_with_eclipsed_flag source_row
3335
-
LEFT JOIN target_rows target_row ON (source_row.type = target_row.type AND (source_row.lu_id = target_row.lu_id OR (source_row.lu_id IS NULL AND target_row.lu_id IS NULL)) AND (source_row.es_id = target_row.es_id OR (source_row.es_id IS NULL AND target_row.es_id IS NULL)) /* v_source_rows_exists_join_expr */)
3335
+
LEFT JOIN target_rows target_row ON ((source_row.es_id = target_row.es_id OR (source_row.es_id IS NULL AND target_row.es_id IS NULL)) AND (source_row.lu_id = target_row.lu_id OR (source_row.lu_id IS NULL AND target_row.lu_id IS NULL)) AND source_row.type = target_row.type /* v_source_rows_exists_join_expr */)
NOTICE: Join Filter: (((source_row.lu_id = target_row.lu_id) OR ((source_row.lu_id IS NULL) AND (target_row.lu_id IS NULL))) AND ((source_row.es_id = target_row.es_id) OR ((source_row.es_id IS NULL) AND (target_row.es_id IS NULL))))
3339
+
NOTICE: Join Filter: (((source_row.es_id = target_row.es_id) OR ((source_row.es_id IS NULL) AND (target_row.es_id IS NULL))) AND ((source_row.lu_id = target_row.lu_id) OR ((source_row.lu_id IS NULL) AND (target_row.lu_id IS NULL))))
3340
3340
NOTICE: Buffers: local hit=2
3341
3341
NOTICE: -> Seq Scan on source_with_eclipsed_flag source_row (actual rows=2.00 loops=1)
0 commit comments