Skip to content
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

Extend syntax for Dynamic Catalogs #22188

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

ssheikin
Copy link
Contributor

@ssheikin ssheikin commented May 29, 2024

Description

  • Add ALTER CATALOG commands to change name, properties and owner with security checks
    RENAME, SET PROPERTIES implemented
    catalog owner is not supported yet.
    catalog comment is not supported yet.
  • Add CREATE CATALOG LIKE with security check
  • Add SHOW CREATE CATALOG

Additional context and related issues

Trino epic #12709

Release notes

( ) This is not user-visible or is docs only, and no release notes are required.
( ) Release notes are required. Please propose a release note for me.
(x) Release notes are required, with the following suggested text:

# Section
* Add support for CREATE CATALOG LIKE statement. ({issue}`22188`)
* Add support for SHOW CREATE CATALOG statement. ({issue}`22188`)
* Add support for ALTER CATALOG RENAME statement. ({issue}`22188`)
* Add support for ALTER CATALOG SET PROPERTIES statement. ({issue}`22188`) 

@cla-bot cla-bot bot added the cla-signed label May 29, 2024
@ssheikin ssheikin changed the title Improve usability of Dynamic Catologs Extend syntax for Dynamic Catologs May 29, 2024
@ssheikin ssheikin changed the title Extend syntax for Dynamic Catologs Extend syntax for Dynamic Catalogs May 29, 2024
@ssheikin
Copy link
Contributor Author

ssheikin commented Jun 3, 2024

@martint @dain @kokosing @nineinchnick @SemionPar please review

@@ -155,6 +162,7 @@ statement
| EXPLAIN ANALYZE VERBOSE? statement #explainAnalyze
| SHOW CREATE TABLE qualifiedName #showCreateTable
| SHOW CREATE SCHEMA qualifiedName #showCreateSchema
| SHOW CREATE CATALOG identifier #showCreateCatalog
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current implementation exposes all properties even if it's marked as @ConfigHidden or @ConfigSecuritySensitive. I think we should hide or redact such properties.

@@ -53,8 +53,15 @@ statement
(COMMENT string)?
(AUTHORIZATION principal)?
(WITH properties)? #createCatalog
| CREATE CATALOG (IF NOT EXISTS)? target=identifier
LIKE source=identifier
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the use case for "LIKE ..."? What are its semantics when WITH is also provided?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The use case is when you need to create target catalog similar to a source one, overriding some properties.
E.g. you have postgresql catalog configured, which points to db1, and for another database db2 you want to specify similar, but different catalog. So you have to override only URL/password via WITH.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LIKE is typically used for pattern matching and not for copying/templating .. so the grammar probably need to be changed. As this stands with LIKE it is counterintuitive to any user.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's already used in CREATE TABLE, this mimics it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh yeah .. you are right. I guess with that in mind it might actually make sense.

Copy link

This pull request has gone a while without any activity. Tagging the Trino developer relations team: @bitsondatadev @colebow @mosabua

@github-actions github-actions bot added the stale label Jul 15, 2024
@mosabua
Copy link
Member

mosabua commented Jul 15, 2024

I am adding the stale-ignore label under the assumption that you are still driving this PR to completion @ssheikin

@mosabua mosabua added stale-ignore Use this label on PRs that should be ignored by the stale bot so they are not flagged or closed. and removed stale labels Jul 15, 2024
Comment on lines +57 to +61
Session session = stateMachine.getSession();

accessControl.checkCanRenameCatalog(session.toSecurityContext(), statement.getSource().getValue(), statement.getTarget().getValue());

catalogManager.renameCatalog(new CatalogName(statement.getSource().getValue()), new CatalogName(statement.getTarget().getValue()));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you omit lowercase intentionally?

trino> CREATE CATALOG test USING memory;
CREATE CATALOG
trino> ALTER CATALOG test RENAME TO TEST;
RENAME CATALOG
trino> show catalogs;
 Catalog
---------
 TEST
 memory
 system
 tpch
(4 rows)

@hashhar hashhar mentioned this pull request Jul 31, 2024
21 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla-signed stale-ignore Use this label on PRs that should be ignored by the stale bot so they are not flagged or closed. syntax-needs-review
Development

Successfully merging this pull request may close these issues.

None yet

6 participants