[ 
https://issues.apache.org/jira/browse/FLINK-40637?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-40637:
-----------------------------------
    Labels: pull-request-available  (was: )

> Catalog view expansion falls back to the session database for unresolved 
> references
> -----------------------------------------------------------------------------------
>
>                 Key: FLINK-40637
>                 URL: https://issues.apache.org/jira/browse/FLINK-40637
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>            Reporter: Talat Uyarer
>            Priority: Major
>              Labels: pull-request-available
>
> When the planner expands a catalog view, references in the view's expanded 
> query that cannot be resolved against the view's own catalog/database are 
> silently resolved
> against the reader's current session database instead of failing. The same 
> view can
> therefore return data in one session and fail (or read a different table) in 
> another.
> [FLIP-71|https://cwiki.apache.org/confluence/spaces/FLINK/pages/130027509/FLIP-71+E2E+View+support+in+FLINK+SQL]
>  stores the expanded form "to remember query context such as current 
> database", so for views written by Flink's own catalogs every reference is 
> already fully qualified and the fallback is unobservable. External catalogs 
> backing cross-engine
> view formats such as Apache Iceberg views store the original, portable SQL 
> and return it from CatalogView#getExpandedQuery(), which makes the fallback 
> reachable.
> How you can reproduce (I tested in Flink 2.3, any external catalog whose 
> getExpandedQuery can contain an unqualified reference; observed with the 
> Iceberg connector):
> 1. USE CATALOG c; USE db2;
> 2. CREATE TABLE t (id BIGINT); INSERT INTO t VALUES (7);
> 3. Create view c.db.v whose stored/expanded SQL is: SELECT id FROM t
> 4. SELECT * FROM c.db.v – from a session in db2: returns 7
> 5. USE db;
> SELECT * FROM c.db.v – fails: "Object 't' not found"
> Step 4 succeeds only because resolution fell back to the session database 
> after
> missing in the view's database. the view's meaning depends on who reads it.
> Expected behaviour is view expansion should be hermetic — resolve references 
> against the view's
> own catalog/database (per FLIP-71's stored-context model) and fail with a 
> clear error
> if a reference cannot be resolved there, rather than consulting the reader's 
> session.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to