Expose development installs as project dev version - #208
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eac34b9e31
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughIntroduces ChangesDev version string: unreleased → X.Y.Zdev
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
cmake/AddPostgreSQLExtension.cmake (1)
276-292: 🧹 Nitpick | 🔵 TrivialGlobal string replacement of "unreleased" affects non-version-string contexts.
Line 280 uses
string(REPLACE)which performs a blind global replacement of "unreleased" throughout the update file content. Current update files already contain "unreleased" outside version strings: in the echo/\quit directive at line 19 (e.g.,\echo Use "ALTER EXTENSION h3 UPDATE TO 'unreleased'"). This will be transformed whenever the CMake code processes these files, which could be problematic if the version string replacement is not the intended behavior for such directives.Consider using a more targeted replacement strategy, such as
string(REGEX REPLACE)with a pattern that specifically matches version-string contexts (e.g., only within SQL comments or specific line patterns).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@cmake/AddPostgreSQLExtension.cmake` around lines 276 - 292, The `string(REPLACE "unreleased" "${EXTENSION_VERSION}")` call on line 280 performs a global blind replacement throughout the entire update file contents, which unintentionally replaces "unreleased" text in non-version contexts like echo directives. Replace this global string replacement with a more targeted `string(REGEX REPLACE)` pattern that only matches "unreleased" in actual version-string contexts (such as within SQL version comments or specific patterns) to avoid replacing "unreleased" text appearing in other file directives and comments.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@cmake/AddPostgreSQLExtension.cmake`:
- Around line 276-292: The `string(REPLACE "unreleased" "${EXTENSION_VERSION}")`
call on line 280 performs a global blind replacement throughout the entire
update file contents, which unintentionally replaces "unreleased" text in
non-version contexts like echo directives. Replace this global string
replacement with a more targeted `string(REGEX REPLACE)` pattern that only
matches "unreleased" in actual version-string contexts (such as within SQL
version comments or specific patterns) to avoid replacing "unreleased" text
appearing in other file directives and comments.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 421ab766-180c-4f0c-b178-41e88e7a234d
⛔ Files ignored due to path filters (1)
h3/test/expected/extension.outis excluded by!**/*.out
📒 Files selected for processing (12)
CMakeLists.txtcmake/AddPostgreSQLExtension.cmakedocs/development.mdh3/CMakeLists.txth3/src/config.h.inh3/test/CMakeLists.txth3/test/sql/extension.sqlh3_postgis/CMakeLists.txth3_postgis/src/config.h.inh3_postgis/test/CMakeLists.txtscripts/postreleasescripts/release
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 99a9a3c0ae
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f385531aaf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if(DEFINED PROJECT_VERSION AND EXTENSION_VERSION STREQUAL PROJECT_VERSION | ||
| AND (NOT EXTENSION_PROJECT_DEV_RELEASE_TRANSITION_EMITTED OR NOT EXTENSION_SOURCE_DEV_RELEASE_TRANSITION_EMITTED)) |
There was a problem hiding this comment.
Generate dev-to-dev upgrade aliases
When the next development cycle starts (for example, after releasing 4.5.1 and returning INSTALL_VERSION to unreleased), EXTENSION_VERSION becomes 4.5.1dev, so this branch is skipped and the build only emits the normal 4.5.0--4.5.1 plus 4.5.1--4.5.1dev paths. A developer who installed the current 4.5.0dev version from source then has no 4.5.0dev--4.5.1 or 4.5.0dev--4.5.1dev update file in a fresh next-cycle build, so ALTER EXTENSION ... UPDATE cannot move their dev install forward unless they first install the release artifact. Please emit the source-dev compatibility transition when generating the dev default version as well as release builds.
Useful? React with 👍 / 👎.
|
@codex review |
|
Codex Review: Didn't find any major issues. Nice work! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
${PROJECT_VERSION}devwhen sourceINSTALL_VERSIONisunreleasedh3--4.5.0dev.sqlandh3--4.5.0--4.5.0dev.sqlwhile keeping source update files on--unreleased.sqlunreleased,${PROJECT_VERSION}dev, and release-source dev versions) to the generated/default versionunreleasedplaceholder and make the extension regression update to the control-file default versionscripts/releaseso they rewrite only the psql update guard and availability markers, not unrelatedunreleasedtextCloses #207
Validation
bash -n scripts/release scripts/postreleasescripts/check-metadatagit diff --checkcmake -S . -B /tmp/h3b208 -DCMAKE_BUILD_TYPE=Releasecmake --build /tmp/h3b208 -j 324.5.0devh3--4.5.0dev.sql,h3--4.5.0--4.5.0dev.sql,h3--unreleased--4.5.0dev.sql, and matchingh3_postgisfilesh3/sql/updates/h3--4.5.0--unreleased.sql, thencmake --build /tmp/h3b208 -j 32re-ran configure/generateunreleasedinstalls ofh3andh3_postgisupdate to4.5.0devRELEASE_DATE=2026-06-23 scripts/release 4.5.1, then CMake configure asserts generated release aliasesunreleased -> 4.5.1,4.5.0dev -> 4.5.1, and4.5.1dev -> 4.5.1for both extensionsunreleasedtext plusavailability: unreleasedinto both current update SQL files, configured CMake, and asserted generated update SQL changed only the update guard/availability markers while unrelated text stayed unchangedunreleasedtext plusavailability: unreleasedinto both current update SQL files, ranRELEASE_DATE=2026-06-23 scripts/release 4.5.1, and asserted only the update guard/availability markers changed while unrelated text stayed unchangedctest --test-dir /tmp/h3b208 --output-on-failure -R '^(h3_regress|h3_validate_extupgrade|h3_postgis_regress_fast|h3_postgis_regress|h3_postgis_validate_extupgrade)$'ctest --test-dir /tmp/h3b208scrub --output-on-failure -R '^(h3_regress|h3_postgis_regress_fast|h3_postgis_regress)$'pg_validate_extupgradeis unavailable in/tmp/h3b208scrub, so that configure registered*_validate_extupgrade_unavailableplaceholders; upgrade validation remains covered by the earlier/tmp/h3b208run and CIcodex review --uncommitted: no discrete correctness issues found in the changed CMake logiccodex review --uncommitted: no discrete correctness issues found in the release-script narrowing diffcodex review --uncommitted: no discrete correctness issues found in the generated-update scrub/shrink diff