8000 Push catalog lookups through an extensible EntryLookupInfo struct by Mytherin · Pull Request #16764 · duckdb/duckdb · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Push catalog lookups through an extensible EntryLookupInfo struct #16764

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

Merged
merged 8 commits into from
Mar 21, 2025

Conversation

Mytherin
Copy link
Collaborator

This PR reworks catalog lookups so they are performed through a struct - EntryLookupInfo - which can be extended with new parameters in the future without breaking the catalog APIs. The struct looks as follows:

struct EntryLookupInfo {
public:
	CatalogType GetCatalogType() const;
	const string &GetEntryName() const;
	const QueryErrorContext &GetErrorContext() const;

private:
	CatalogType catalog_type;
	const string &name;
	QueryErrorContext error_context;
};

Several of the old retrieval methods (that do not take this struct) are kept for backwards-compatibility reasons - but the main entry points now all use this struct. The idea is that this will be extended in the (very near) future with extra information that can be pushed along with the lookup.

@duckdb-draftbot duckdb-draftbot marked this pull request as draft March 21, 2025 07:02
@Mytherin Mytherin marked this pull request as ready for review March 21, 2025 07:02
@Mytherin Mytherin merged commit 51f1cd7 into duckdb:main Mar 21, 2025
50 checks passed
Mytherin added a commit that referenced this pull request Mar 24, 2025
This PR adds support for time travel syntax in the `FROM` clause,
specifically this syntax is now accepted:

```sql
SELECT * FROM tbl AT (TIMESTAMP => TIMESTAMP '2020-01-01')
SELECT * FROM tbl AT (VERSION => 42)
```

This is not yet supported in any catalogs, but is pushed into the
catalogs using the `EntryLookupInfo` introduced in
#16764. Catalogs need to indicate
they support this syntax by overloading this method, that defaults to
false:

```cpp
virtual bool SupportsTimeTravel() const {
	return false;
}
```

The information is passed to the catalog using the `BoundAtClause`:

```cpp
class BoundAtClause {
	//! The unit (e.g. TIMESTAMP or VERSION)
	string unit;
	//! The value that is associated with the unit (e.g. TIMESTAMP '2020-01-01')
	Value val;
};
```

### Keyword "AT"

In order to facilitate this in the parser, the keyword `AT` has been
moved from unreserved to partially reserved. It can no longer be used a
column name/alias without quotes.
@Mytherin Mytherin deleted the cataloglookup branch April 2, 2025 09:23
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 15, 2025
Push catalog lookups through an extensible EntryLookupInfo struct (duckdb/duckdb#16764)
Pyodide 0.27.2: conditionally skip tests (duckdb/duckdb#16772)
Avoid building Python 3.7 wheels also for Linux (duckdb/duckdb#16769)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 15, 2025
Push catalog lookups through an extensible EntryLookupInfo struct (duckdb/duckdb#16764)
Pyodide 0.27.2: conditionally skip tests (duckdb/duckdb#16772)
Avoid building Python 3.7 wheels also for Linux (duckdb/duckdb#16769)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 16, 2025
Push catalog lookups through an extensible EntryLookupInfo struct (duckdb/duckdb#16764)
Pyodide 0.27.2: conditionally skip tests (duckdb/duckdb#16772)
Avoid building Python 3.7 wheels also for Linux (duckdb/duckdb#16769)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 16, 2025
Push catalog lookups through an extensible EntryLookupInfo struct (duckdb/duckdb#16764)
Pyodide 0.27.2: conditionally skip tests (duckdb/duckdb#16772)
Avoid building Python 3.7 wheels also for Linux (duckdb/duckdb#16769)
krlmlr added a commit to duckdb/duckdb-r that referenced this pull request May 17, 2025
Push catalog lookups through an extensible EntryLookupInfo struct (duckdb/duckdb#16764)
Pyodide 0.27.2: conditionally skip tests (duckdb/duckdb#16772)
Avoid building Python 3.7 wheels also for Linux (duckdb/duckdb#16769)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant
0