databendlabs / databend

๐——๐—ฎ๐˜๐—ฎ, ๐—”๐—ป๐—ฎ๐—น๐˜†๐˜๐—ถ๐—ฐ๐˜€ & ๐—”๐—œ. Modern alternative to Snowflake. Cost-effective and simple for massive-scale analytics. https://databend.com
https://docs.databend.com
Other
7.87k stars 751 forks source link

fix: StreamVersionMismatched when using CTAS in multi statement transโ€ฆ #16889

Closed SkyFan2002 closed 20 hours ago

SkyFan2002 commented 1 day ago

I hereby agree to the terms of the CLA available at: https://docs.databend.com/dev/policies/cla/

Summary

In the past, the implicit commit of DDLs in multi-statement transactions occurred after the bind phase, which cleared the QueryContext.table_cache. As a result, when the statement was executed, calling get_table() would access the meta service to fetch the latest TableMeta.

However, for some queries, the TableMeta was determined during the bind phase and cached in Metadata.tables, so get_table() was no longer called thereafter. Therefore, this PR moves the implicit commit of DDLs in multi-statement transactions to a point before the bind phase.

Tests

Type of change


This change isโ€‚Reviewable