Skip to content

Oracle regression framework restructure #891

Merged
gaoxueyu merged 2 commits intoIvorySQL:masterfrom
OreoYang:oracle_regression
Sep 22, 2025
Merged

Oracle regression framework restructure #891
gaoxueyu merged 2 commits intoIvorySQL:masterfrom
OreoYang:oracle_regression

Conversation

@OreoYang
Copy link
Copy Markdown
Collaborator

@OreoYang OreoYang commented Sep 19, 2025

  1. cherry-pick from V4 Stable PR fix #836 test_extension are wrongly compiled and installed #861
  2. fix issue after make clean under oracle_test/regression, then make oracle-check failed when load regress.so

Summary by CodeRabbit

  • Tests

    • Added a dedicated Oracle regression test target and updated related targets to depend on an Oracle-specific temporary install.
    • Switched isolation and recovery tests to Oracle module paths and updated regression library references to /oraregress.
    • Ensured bigcheck and oracle-check-tests run after Oracle temp install for consistent setup.
    • Relocated Oracle test modules to oracle_test paths.
  • Chores

    • Updated test driver description to “ora_pg_regress.”
    • Standardized pre-install preparation to use the Oracle-specific check preparation step.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Sep 19, 2025

Walkthrough

Introduces Oracle-specific test prerequisites and path updates. Adds an order-only prerequisite for oracle-check-tests, switches temp install prep to oracle-checkprep, changes several test targets to depend on oracle-temp-install, updates module/test paths to oracle_test, and adjusts regresslib paths to /oraregress. Also updates PGFILEDESC to “ora_pg_regress - test driver”.

Changes

Cohort / File(s) Summary
Top-level Oracle test target
GNUmakefile.in
Adds `oracle-check-tests:
Temp install prep change
src/Makefile.global.in
Replaces checkprep with oracle-checkprep in temp-install and oracle-temp-install flows.
Isolation tests deps
src/oracle_test/isolation/Makefile
Switches deps from temp-install to oracle-temp-install for oracle-installcheck-prepared-txns and oracle-check-prepared-txns.
Oracle regress driver and deps
src/oracle_test/regress/GNUmakefile
Sets PGFILEDESC to "ora_pg_regress - test driver". Updates oracle-check-tests and bigcheck to depend on oracle-temp-install.
Module path relocations
src/oracle_test/modules/test_oat_hooks/Makefile, src/oracle_test/modules/test_resowner/Makefile
Updates in-file comments and subdir from src/test/modules/... to src/oracle_test/modules/....
Recovery extras path fix
src/oracle_test/recovery/Makefile
Updates EXTRA_INSTALL path for injection_points to src/oracle_test/modules/injection_points.
Regr. library path updates
src/oracle_test/modules/injection_points/sql/injection_points.sql, src/oracle_test/regress/sql/type_sanity.sql
Changes regresslib from /regress to /oraregress; dlsuffix unchanged.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    actor Dev as Developer
    participant M as make
    participant OTI as oracle-temp-install
    participant OCP as oracle-checkprep
    participant DB as initdb
    participant RT as ora_pg_regress

    Note over Dev,M: Oracle regression run
    Dev->>M: make oracle-check-tests
    M->>OTI: Order-only prerequisite
    OTI->>OCP: Run oracle-checkprep
    OCP-->>OTI: Prep complete
    OTI->>DB: initdb (temp install)
    DB-->>OTI: Cluster ready
    OTI-->>M: oracle-temp-install done
    M->>RT: Run oracle-check-tests

    rect rgba(230,245,255,0.6)
    Note right of M: Also applies to bigcheck and isolation prepared-txns targets<br/>which now depend on oracle-temp-install
    end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

I thump my paw: tests align, hooray!
New oracle paths guide our hopping way.
Prep turns to oracle-checkprep’s tune,
Temp installs bloom like moons in June.
With ora-regress I bounce and cheer—
Makefile trails are crystal clear! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "Oracle regression framework restructure" succinctly captures the primary intent of the changeset—reorganizing Oracle regression test targets, paths, and related Makefile dependencies—without extraneous noise. It is concise, clearly related to the main changes in the PR, and readable for a teammate scanning history.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0ca347d and 202afcd.

⛔ Files ignored due to path filters (2)
  • src/oracle_test/modules/injection_points/expected/injection_points.out is excluded by !**/*.out
  • src/oracle_test/regress/expected/type_sanity.out is excluded by !**/*.out
📒 Files selected for processing (9)
  • GNUmakefile.in (1 hunks)
  • src/Makefile.global.in (1 hunks)
  • src/oracle_test/isolation/Makefile (1 hunks)
  • src/oracle_test/modules/injection_points/sql/injection_points.sql (1 hunks)
  • src/oracle_test/modules/test_oat_hooks/Makefile (2 hunks)
  • src/oracle_test/modules/test_resowner/Makefile (2 hunks)
  • src/oracle_test/recovery/Makefile (1 hunks)
  • src/oracle_test/regress/GNUmakefile (3 hunks)
  • src/oracle_test/regress/sql/type_sanity.sql (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-09-02T10:43:25.257Z
Learnt from: syasirs
PR: IvorySQL/IvorySQL#858
File: src/Makefile.global.in:513-514
Timestamp: 2025-09-02T10:43:25.257Z
Learning: In IvorySQL Makefile.global.in, $(wildcard t/oracle/*.pl) is used instead of t/oracle/*.pl in Oracle TAP test discovery because the t/oracle directory is optional and may not exist in most builds. The wildcard function safely returns empty string when the directory is missing, preventing shell expansion errors.

Applied to files:

  • src/oracle_test/modules/test_resowner/Makefile
  • src/oracle_test/modules/test_oat_hooks/Makefile
  • GNUmakefile.in
🪛 checkmake (0.2.2)
src/oracle_test/modules/test_resowner/Makefile

[warning] 1-1: Missing required phony target "all"

(minphony)


[warning] 1-1: Missing required phony target "clean"

(minphony)


[warning] 1-1: Missing required phony target "test"

(minphony)

src/oracle_test/modules/test_oat_hooks/Makefile

[warning] 1-1: Missing required phony target "all"

(minphony)


[warning] 1-1: Missing required phony target "clean"

(minphony)


[warning] 1-1: Missing required phony target "test"

(minphony)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: meson_build (ubuntu-latest)
  • GitHub Check: oracle_regression (ubuntu-latest)
  • GitHub Check: oracle_pg_regression (ubuntu-latest)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: pg_regression (ubuntu-latest)
  • GitHub Check: contrib_regression
🔇 Additional comments (12)
src/oracle_test/modules/injection_points/sql/injection_points.sql (1)

5-5: LGTM - Library path correctly updated for Oracle regression testing.

The change from /regress to /oraregress is consistent with the Oracle test restructure and aligns with the broader reorganization of regression testing infrastructure.

src/oracle_test/regress/sql/type_sanity.sql (1)

19-19: LGTM - Consistent library path update.

The regresslib path change from /regress to /oraregress matches the same change in injection_points.sql and is part of the Oracle regression framework restructure.

src/oracle_test/modules/test_resowner/Makefile (1)

1-1: LGTM - Path reorganization correctly implemented.

The header comment and subdir path have been appropriately updated to reflect the relocation from src/test/modules/test_resowner to src/oracle_test/modules/test_resowner, consistent with the Oracle test infrastructure reorganization.

Also applies to: 20-20

src/oracle_test/recovery/Makefile (1)

17-17: LGTM - Module path correctly updated.

The EXTRA_INSTALL path for injection_points has been properly updated from src/test/modules/injection_points to src/oracle_test/modules/injection_points, maintaining consistency with the Oracle test module reorganization.

src/Makefile.global.in (1)

466-466: LGTM - Oracle-specific checkprep properly implemented.

The oracle-temp-install target now correctly uses oracle-checkprep instead of checkprep, which aligns with the separate Oracle test infrastructure and ensures proper initialization of the Oracle temporary installation environment.

src/oracle_test/modules/test_oat_hooks/Makefile (1)

1-1: LGTM - Consistent path reorganization.

The header comment and subdir variable have been correctly updated to reflect the relocation to src/oracle_test/modules/test_oat_hooks, maintaining consistency with the Oracle test module reorganization.

Also applies to: 22-22

GNUmakefile.in (1)

72-72: LGTM - Top-level target dependency correctly established.

The new oracle-check-tests target with an order-only prerequisite on oracle-temp-install ensures that Oracle regression tests only run after the Oracle temporary installation is complete. This is consistent with the existing pattern for the regular check-tests target.

src/oracle_test/isolation/Makefile (1)

78-78: LGTM - Consistent dependency update for Oracle isolation tests.

Both oracle-installcheck-prepared-txns and oracle-check-prepared-txns now correctly depend on oracle-temp-install instead of temp-install, ensuring they use the Oracle-specific temporary installation environment.

Also applies to: 81-81

src/oracle_test/regress/GNUmakefile (4)

16-16: LGTM - Accurate description for Oracle regression test driver.

The change from "pg_regress - test driver" to "ora_pg_regress - test driver" correctly reflects that this is the Oracle-specific test driver, maintaining consistency with the Oracle regression framework restructure.


104-105: LGTM - Proper dependency alignment for Oracle test framework.

The change from temp-install to oracle-temp-install as an order-only prerequisite correctly aligns with the Oracle-specific installation target, ensuring that the Oracle temporary installation is properly prepared before running tests.


127-128: LGTM - Consistent dependency update for bigcheck target.

The change from temp-install to oracle-temp-install maintains consistency with the oracle-check-tests target and ensures that the bigcheck target uses the proper Oracle-specific installation prerequisite.


65-65: Verify 'oraregress' naming is consistent across Oracle test modules

Found only: src/oracle_test/regress/GNUmakefile:65 — NAME = oraregress.
Confirm build rules, test code, and packaging/linking reference 'oraregress' (not 'regress'); if already consistent, resolve.

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@bigplaice
Copy link
Copy Markdown
Collaborator

No comments.

@gaoxueyu gaoxueyu merged commit c9c7975 into IvorySQL:master Sep 22, 2025
6 checks passed
@OreoYang OreoYang deleted the oracle_regression branch November 14, 2025 07:46
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.

4 participants