-
Notifications
You must be signed in to change notification settings - Fork 594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(batch,optimizer): support column pruning for iceberg source #16429
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rest LGTM
if required_cols.is_empty() { | ||
let mapping = ColIndexMapping::with_remaining_columns(required_cols, self.schema().len()); | ||
// If reuqiured_cols is empty, we use the first column of iceberg to avoid the empty schema. | ||
LogicalProject::with_mapping(self.clone_with_required_cols(&[0]).into() , mapping).into() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So iceberg scan does not support scan no fields? But the RW scan can do it (only the row count is meaningful in this case)
dev=> explain select 1 from t;
QUERY PLAN
-------------------------------------------
BatchExchange { order: [], dist: Single }
└─BatchProject { exprs: [1:Int32] }
└─BatchScan { table: t, columns: [] }
(3 rows)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a very corner case, but I am wondering if Iceberg supports creating a table without any columns. It should be possible in PG
postgres=# create table t();
CREATE TABLE
postgres=# \d+ t;
Table "public.t"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
--------+------+-----------+----------+---------+---------+-------------+--------------+-------------
Access method: heap
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So iceberg scan does not support scan no fields? But the RW scan can do it (only the row count is meaningful in this case)
Actually, the underlying sdk icelake doesn't handle the empty schema well and it will treat empty schema as all columns are required, so we need to make a trick here.
This is a very corner case, but I am wondering if Iceberg supports creating a table without any columns. It should be possible in PG
Iceberg doesn't support creating a table without any columns.
I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
Checklist
./risedev check
(or alias,./risedev c
)Documentation
Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.