From 9738991a67d96a3b955f0f70c944fd85902a79ff Mon Sep 17 00:00:00 2001 From: Kodai Doki <52027276+KodaiD@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:57:51 +0900 Subject: [PATCH] Remove SQL Server set up for duplicate permission tests (#2959) Co-authored-by: Hiroyuki Yamada --- .github/workflows/ci.yaml | 31 +++--- .../create-no-superuser-sqlserver.sh | 94 ------------------- 2 files changed, 15 insertions(+), 110 deletions(-) delete mode 100755 ci/no-superuser/create-no-superuser-sqlserver.sh diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 17ce7bfcf3..31af0ee3b3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1147,6 +1147,10 @@ jobs: sa-password: "SqlServer17" version: 2017 + - name: Create database with Japanese collation for integration test + run: | + sqlcmd -S localhost -U sa -P SqlServer17 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) uses: actions/setup-java@v4 with: @@ -1184,16 +1188,11 @@ jobs: } echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} - - name: Create no superuser - run: ./ci/no-superuser/create-no-superuser-sqlserver.sh SqlServer17 10 3 - shell: bash - timeout-minutes: 1 - - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew.bat integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" "-Dfile.encoding=UTF-8" "-Dscalardb.jdbc.username=no_superuser" "-Dscalardb.jdbc.password=no_superuser_password" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew.bat integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" "-Dfile.encoding=UTF-8" "-Dscalardb.jdbc.username=sa" "-Dscalardb.jdbc.password=SqlServer17" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() @@ -1228,6 +1227,10 @@ jobs: steps: - uses: actions/checkout@v5 + - name: Create database with Japanese collation for integration test + run: | + docker exec sqlserver19 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer19 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) uses: actions/setup-java@v4 with: @@ -1255,15 +1258,11 @@ jobs: container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - name: Create no superuser - run: ./ci/no-superuser/create-no-superuser-sqlserver.sh SqlServer19 10 3 sqlserver19 - timeout-minutes: 1 - - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=no_superuser -Dscalardb.jdbc.password=no_superuser_password ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer19 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() @@ -1298,6 +1297,10 @@ jobs: steps: - uses: actions/checkout@v5 + - name: Create database with Japanese collation for integration test + run: | + docker exec sqlserver22 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer22 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) uses: actions/setup-java@v4 with: @@ -1325,15 +1328,11 @@ jobs: container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - name: Create no superuser - run: ./ci/no-superuser/create-no-superuser-sqlserver.sh SqlServer22 10 3 sqlserver22 - timeout-minutes: 1 - - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=no_superuser -Dscalardb.jdbc.password=no_superuser_password ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer22 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() diff --git a/ci/no-superuser/create-no-superuser-sqlserver.sh b/ci/no-superuser/create-no-superuser-sqlserver.sh deleted file mode 100755 index 7143e8aa2a..0000000000 --- a/ci/no-superuser/create-no-superuser-sqlserver.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash -set -u - -# Get container name and password from arguments -SQL_SERVER_PASSWORD=$1 -MAX_RETRY_COUNT=$2 -RETRY_INTERVAL=$3 -# If set, use `sqlcmd` of the SQL Server docker container. If unset, use `sqlcmd` installed on the host. -SQL_SERVER_CONTAINER_NAME=${4:-''} -COUNT=0 - -if [[ -n $SQL_SERVER_CONTAINER_NAME ]]; then - # Check if the `/opt/mssql-tools18/bin/sqlcmd` command exists or not. - docker exec -t ${SQL_SERVER_CONTAINER_NAME} ls /opt/mssql-tools18/bin/sqlcmd - if [[ $? -eq 0 ]]; then - SQLCMD="docker exec -t $SQL_SERVER_CONTAINER_NAME /opt/mssql-tools18/bin/sqlcmd" - else - # If there is no `/opt/mssql-tools18/bin/sqlcmd` command, we use old command. - SQLCMD="docker exec -t $SQL_SERVER_CONTAINER_NAME /opt/mssql-tools/bin/sqlcmd" - fi -else - SQLCMD=sqlcmd -fi - -echo "INFO: Creating no superuser start." - -# A SQL Server container takes a few seconds to start SQL Server process -# in the container. So, first, we wait ${RETRY_INTERVAL} seconds before -# we run the `sqlcmd` command in the container. -echo "INFO: Sleep ${RETRY_INTERVAL} seconds to wait for SQL Server start." - -while [[ ${COUNT} -lt ${MAX_RETRY_COUNT} ]] -do - sleep ${RETRY_INTERVAL} - - echo "INFO: Retry count: ${COUNT}" - - ${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d master -C -Q "SELECT 1" - - if [[ $? -eq 0 ]]; then - break - else - echo "INFO: sqlcmd command failed. Will retry after ${RETRY_INTERVAL} seconds." - fi - - COUNT=$((COUNT + 1)) - - if [[ ${COUNT} -eq ${MAX_RETRY_COUNT} ]]; then - echo "ERROR: sqlcmd command failed ${MAX_RETRY_COUNT} times. Please check your configuration." >&2 - exit 1 - fi -done - -echo "INFO: sqlcmd command succeeded. Continue creating no superuser." - -# Create login -echo "INFO: Create login start" -${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d master -C -Q "CREATE LOGIN no_superuser WITH PASSWORD = 'no_superuser_password', DEFAULT_DATABASE = master , CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF" -echo "INFO: Create login end" - -# Create database -echo "INFO: Create database start" -${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d master -C -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2" -echo "INFO: Create database end" - -# Create no_superuser -echo "INFO: Create no_superuser start" -${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d test_db -C -Q "CREATE USER no_superuser FOR LOGIN no_superuser" -echo "INFO: Create no_superuser end" - -# Add roles -echo "INFO: Add role db_ddladmin start" -${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d test_db -C -Q "EXEC sp_addrolemember @rolename = 'db_ddladmin', @membername = 'no_superuser'" -echo "INFO: Add role db_ddladmin end" - -echo "INFO: Add role db_datawriter start" -${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d test_db -C -Q "EXEC sp_addrolemember @rolename = 'db_datawriter', @membername = 'no_superuser'" -echo "INFO: Add role db_datawriter end" - -echo "INFO: Add role db_datareader start" -${SQLCMD} -S localhost -U sa -P ${SQL_SERVER_PASSWORD} -d test_db -C -Q "EXEC sp_addrolemember @rolename = 'db_datareader', @membername = 'no_superuser'" -echo "INFO: Add role db_datareader end" - -# Check the collation of test_db (for debugging purposes) -echo "INFO: Check collation start" -${SQLCMD} -S localhost -U no_superuser -P no_superuser_password -d test_db -C -Q "SELECT name, collation_name FROM sys.databases" -echo "INFO: Check collation end" - -# Check if no_superuser can access SQL Server (for debugging purposes) -echo "INFO: SELECT @@version start" -${SQLCMD} -S localhost -U no_superuser -P no_superuser_password -d test_db -C -Q "SELECT @@version" -echo "INFO: SELECT @@version end" - -echo "INFO: Creating no superuser succeeded."