From 2103ea5695398d8fea6741af5cd4eefe59ff9bb4 Mon Sep 17 00:00:00 2001 From: reshke Date: Fri, 26 Dec 2025 18:15:06 +0500 Subject: [PATCH 1/8] Update pg16-merge-validation.yml --- .github/workflows/pg16-merge-validation.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 62f88c2b15b..24e213a7c32 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -111,8 +111,14 @@ jobs: # Uncomment and add tests as features become available ALL_TESTS='{ "include": [ + ic-good-opt-off: Basic bare-minimum installcheck with optimizer off + {"test":"ic-good-opt-off", + "make_configs":["src/test/regress:installcheck-small"], + "pg_settings":{"optimizer":"off"} + } ] }' + # Tests to be added as PG16 support improves: # - ic-good-opt-off: Basic installcheck with optimizer off From 34d9bbe40eb9e5ca153b641532e9e118fa9ee01e Mon Sep 17 00:00:00 2001 From: reshke Date: Fri, 26 Dec 2025 18:30:35 +0500 Subject: [PATCH 2/8] Update pg16-merge-validation.yml --- .github/workflows/pg16-merge-validation.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 24e213a7c32..2d2848dc717 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -111,14 +111,12 @@ jobs: # Uncomment and add tests as features become available ALL_TESTS='{ "include": [ - ic-good-opt-off: Basic bare-minimum installcheck with optimizer off - {"test":"ic-good-opt-off", + {"test":"ic-small-opt-off", "make_configs":["src/test/regress:installcheck-small"], "pg_settings":{"optimizer":"off"} } ] }' - # Tests to be added as PG16 support improves: # - ic-good-opt-off: Basic installcheck with optimizer off From 3b28dd388b27a704889e79591ab0a368b2f2fffd Mon Sep 17 00:00:00 2001 From: reshke Date: Fri, 26 Dec 2025 18:40:12 +0500 Subject: [PATCH 3/8] Update pg16-merge-validation.yml: try to add --without-icu --- .github/workflows/pg16-merge-validation.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 2d2848dc717..5915c23880d 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -355,7 +355,8 @@ jobs: --disable-orca \ --disable-gpfdist \ --with-pythonsrc-ext \ - --with-gssapi + --with-gssapi \ + --without-icu "; then echo "::error::Configure failed" exit 1 From 94467f5f119e461dfb6d54539d7dcbfea5850f33 Mon Sep 17 00:00:00 2001 From: reshke Date: Fri, 26 Dec 2025 19:00:33 +0500 Subject: [PATCH 4/8] Update pg16-merge-validation.yml --- .github/workflows/pg16-merge-validation.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 5915c23880d..f7c4edde826 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -630,7 +630,8 @@ jobs: --disable-orca \ --disable-gpfdist \ --with-pythonsrc-ext \ - --with-gssapi + --with-gssapi \ + --without-icu " 2>&1 | tee -a ${LOGS_DIR}/details/configure.log - name: Create gpdemo Cluster From 574cdb542575024ed578ba68aa79eb8b463a9526 Mon Sep 17 00:00:00 2001 From: Dianjin Wang Date: Tue, 30 Dec 2025 11:01:47 +0800 Subject: [PATCH 5/8] Update .github/workflows/pg16-merge-validation.yml --- .github/workflows/pg16-merge-validation.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index f7c4edde826..0ba6d0c536a 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -642,6 +642,7 @@ jobs: # Create demo cluster with specified number of segments su - gpadmin -c " + cd ${SRC_DIR} source ${INSTALL_PREFIX}/greenplum_path.sh NUM_PRIMARY_MIRROR_PAIRS=${{ matrix.num_primary_mirror_pairs }} make create-demo-cluster " 2>&1 | tee -a ${LOGS_DIR}/details/cluster-creation.log From d8082b3cc6e1f59b7548ca09bfa88df4fff5be88 Mon Sep 17 00:00:00 2001 From: Dianjin Wang Date: Tue, 30 Dec 2025 16:24:04 +0800 Subject: [PATCH 6/8] Use join instead of toJson to avoid jq cmd --- .github/workflows/pg16-merge-validation.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 0ba6d0c536a..66eea932c89 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -642,7 +642,7 @@ jobs: # Create demo cluster with specified number of segments su - gpadmin -c " - cd ${SRC_DIR} + cd ${SRC_DIR} source ${INSTALL_PREFIX}/greenplum_path.sh NUM_PRIMARY_MIRROR_PAIRS=${{ matrix.num_primary_mirror_pairs }} make create-demo-cluster " 2>&1 | tee -a ${LOGS_DIR}/details/cluster-creation.log @@ -674,7 +674,7 @@ jobs: set -eo pipefail # Run each make target from the test configuration - MAKE_CONFIGS='${{ toJson(matrix.make_configs) }}' + MAKE_CONFIGS='${{ join(matrix.make_configs, ' ') }}' su - gpadmin -c " source ${INSTALL_PREFIX}/greenplum_path.sh @@ -684,7 +684,7 @@ jobs: echo 'Make configurations: ${MAKE_CONFIGS}' # Parse and run each make config - for config in \$(echo '${MAKE_CONFIGS}' | jq -r '.[]'); do + for config in ${MAKE_CONFIGS}; do DIR=\$(echo \$config | cut -d: -f1) TARGET=\$(echo \$config | cut -d: -f2) From 16fb2ad9091bc9818f83be9e0b7a3cc182b348bb Mon Sep 17 00:00:00 2001 From: Dianjin Wang Date: Tue, 30 Dec 2025 16:50:05 +0800 Subject: [PATCH 7/8] Fix: cd to SRC_DIR before running make in tests --- .github/workflows/pg16-merge-validation.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 66eea932c89..44d1f8e5798 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -680,6 +680,8 @@ jobs: source ${INSTALL_PREFIX}/greenplum_path.sh source ${SRC_DIR}/gpAux/gpdemo/gpdemo-env.sh + cd ${SRC_DIR} + echo '=== Running Tests for ${{ matrix.test }} ===' echo 'Make configurations: ${MAKE_CONFIGS}' From 6c07721c4b03aefc5e3826d523b785ee855fc903 Mon Sep 17 00:00:00 2001 From: Dianjin Wang Date: Tue, 30 Dec 2025 17:17:18 +0800 Subject: [PATCH 8/8] Add Parse Test Results and Check Regression Diffs steps --- .github/workflows/pg16-merge-validation.yml | 99 +++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/.github/workflows/pg16-merge-validation.yml b/.github/workflows/pg16-merge-validation.yml index 44d1f8e5798..db296a9c82e 100644 --- a/.github/workflows/pg16-merge-validation.yml +++ b/.github/workflows/pg16-merge-validation.yml @@ -722,6 +722,87 @@ jobs: echo "Test results collected" + - name: Parse Test Results + if: always() + env: + SRC_DIR: ${{ github.workspace }} + run: | + echo "=== Parsing Test Results for ${{ matrix.test }} ===" + + # Find regression.out and parse results + REGRESSION_OUT=$(find ${SRC_DIR} -name "regression.out" -type f | head -n 1) + + if [[ -n "$REGRESSION_OUT" && -f "$REGRESSION_OUT" ]]; then + echo "Found regression.out at: $REGRESSION_OUT" + echo "" + echo "=== Test Summary ===" + # Extract the summary lines from regression.out + grep -E "^(#|test |ok |FAILED|not ok)" "$REGRESSION_OUT" | tail -50 || true + echo "" + + # Count passed/failed tests + TOTAL=$(grep -c "^test " "$REGRESSION_OUT" 2>/dev/null || echo "0") + PASSED=$(grep -c "^ok " "$REGRESSION_OUT" 2>/dev/null || echo "0") + FAILED=$(grep -c "^not ok\|FAILED" "$REGRESSION_OUT" 2>/dev/null || echo "0") + + echo "=== Statistics ===" + echo "Total tests: $TOTAL" + echo "Passed: $PASSED" + echo "Failed: $FAILED" + + # Add to job summary + { + echo "### Test Results: ${{ matrix.test }}" + echo "| Metric | Count |" + echo "|--------|-------|" + echo "| Total | $TOTAL |" + echo "| Passed | $PASSED |" + echo "| Failed | $FAILED |" + } >> "$GITHUB_STEP_SUMMARY" + else + echo "No regression.out file found" + fi + + - name: Check and Display Regression Diffs + if: always() + env: + SRC_DIR: ${{ github.workspace }} + run: | + echo "=== Checking for Regression Diffs ===" + + # Search for regression.diffs recursively + DIFF_FILES=$(find ${SRC_DIR} -type f -name "regression.diffs" 2>/dev/null) + + if [[ -n "$DIFF_FILES" ]]; then + echo "$DIFF_FILES" | while read -r diff_file; do + if [[ -s "$diff_file" ]]; then + echo "" + echo "==========================================" + echo "Found regression.diffs at: $diff_file" + echo "==========================================" + echo "" + cat "$diff_file" + echo "" + echo "==========================================" + fi + done + + # Add diff summary to job summary + { + echo "" + echo "### Regression Diffs Found" + echo "The following test differences were detected:" + echo "\`\`\`" + # Show first 100 lines of first diff file + head -100 $(echo "$DIFF_FILES" | head -n 1) || true + echo "\`\`\`" + echo "" + echo "*Full diffs available in uploaded artifacts*" + } >> "$GITHUB_STEP_SUMMARY" + else + echo "No regression.diffs file found - all tests passed!" + fi + - name: "Generate Test Job Summary End: ${{ matrix.test }}" if: always() run: | @@ -739,6 +820,24 @@ jobs: name: test-logs-${{ matrix.test }}-${{ needs.build.outputs.build_timestamp }} path: | test-logs-${{ matrix.test }}/ + **/regression.out + **/regression.diffs + **/results/ + retention-days: ${{ env.LOG_RETENTION_DAYS }} + + - name: Upload Regression Logs on Failure + if: failure() || cancelled() + uses: actions/upload-artifact@v4 + with: + name: regression-logs-${{ matrix.test }}-${{ needs.build.outputs.build_timestamp }} + path: | + **/regression.out + **/regression.diffs + **/results/ + gpAux/gpdemo/datadirs/qddir/demoDataDir-1/log/ + gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/log/ + gpAux/gpdemo/datadirs/dbfast2/demoDataDir1/log/ + gpAux/gpdemo/datadirs/dbfast3/demoDataDir2/log/ retention-days: ${{ env.LOG_RETENTION_DAYS }} ## ======================================================================