Skip to content

Enforce CREATE IF NOT EXISTS across all app DDLs (closes #34)#35

Merged
gangtao merged 1 commit into
mainfrom
feature/34-suppoprt-create-if-not-exist
May 22, 2026
Merged

Enforce CREATE IF NOT EXISTS across all app DDLs (closes #34)#35
gangtao merged 1 commit into
mainfrom
feature/34-suppoprt-create-if-not-exist

Conversation

@gangtao
Copy link
Copy Markdown
Contributor

@gangtao gangtao commented May 22, 2026

Summary

Closes #34. Makes every CREATE in apps/*/ddl/ idempotent so app upgrades (which re-run the DDL against an existing database) don't fail with already exists.

Validation

Tested CREATE … IF NOT EXISTS on the running Timeplus (proton 3.3.1-rc.9) for every framework resource type (stream, external_stream, mutable_stream, materialized_view, view, external_table, udf, task, alert, input, dictionary, format_schema, named_collection), plus random_stream and the access-control resources (user, role, row_policy, quota, settings_profile). All accept IF NOT EXISTS and are idempotent on rerun. The only outlier in the framework's surface is SYSTEM INSTALL PYTHON PACKAGE, which the parser rejects — but it's idempotent on re-run, and the project convention is to declare Python deps in manifest.yaml (python_packages:), not as DDL.

Test plan

  • make build APP=alpha-101 && make build APP=market-data && make build APP=cisco-asa-ddos — all three packages build clean (verified locally).
  • Install each app fresh against a clean Timeplus, then re-install the same .tpapp over the top — second install should succeed with no already exists errors.
  • Confirm the alpha-101 icon renders correctly in the Timeplus UI app cards.

@gangtao gangtao linked an issue May 22, 2026 that may be closed by this pull request
@gangtao gangtao merged commit ebca9a9 into main May 22, 2026
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.

Suppoprt CREATE IF NOT EXIST

1 participant