diff --git a/src/hive_fork_manager/hived_api.sql b/src/hive_fork_manager/hived_api.sql index 965efbe4b4a86769e5282d8b6ede55ba0ed0672c..339c4c74fbc0dda95fc5568a56403fcfc7dfa0f7 100644 --- a/src/hive_fork_manager/hived_api.sql +++ b/src/hive_fork_manager/hived_api.sql @@ -565,15 +565,3 @@ END; $BODY$ ; - -CREATE OR REPLACE FUNCTION hive.test() - RETURNS VOID - LANGUAGE plpgsql - IMMUTABLE -AS -$BODY$ -BEGIN - RETURN; -END; -$BODY$ -; diff --git a/tests/integration/functional/hive_fork_manager/test_extension_update.sh b/tests/integration/functional/hive_fork_manager/test_extension_update.sh index 34ee3cf09ca24b73d307163dc1a5119e707a9be0..84e9f842861331e57acf1da8af4453f61f2a8951 100755 --- a/tests/integration/functional/hive_fork_manager/test_extension_update.sh +++ b/tests/integration/functional/hive_fork_manager/test_extension_update.sh @@ -1,4 +1,4 @@ -#! /bin/bash +#! /bin/bash -x set -euo pipefail @@ -64,6 +64,13 @@ done test_extension_update() { + # copy sources to build directory, they will be modified there to create real new version of hfm extension + COPY_SRC_PATH="${HAF_DIR}/src_copy" + COPY_BUILD_PATH="${HAF_DIR}/src_copy/build" + rm -rf ${COPY_SRC_PATH} + mkdir -p ${COPY_SRC_PATH} + mkdir -p ${COPY_BUILD_PATH} + cp -a ${DIR}/. ${COPY_SRC_PATH} POSTGRES_VERSION=17 echo "Add function testfun to schema hive" @@ -72,18 +79,17 @@ test_extension_update() { # old libhfm has to be removed so in case of an corrupted setup of haf the old libhfm won't be used sudo rm -rf /usr/lib/postgresql/${POSTGRES_VERSION}/lib/libhfm-* - # modify the hived_api.sql file - echo -e "CREATE OR REPLACE FUNCTION hive.test() \n RETURNS void \n LANGUAGE plpgsql \n VOLATILE AS \n\$BODY\$ \nBEGIN \nRAISE NOTICE 'test'; \nEND; \n\$BODY\$;" >> $DIR/src/hive_fork_manager/hived_api.sql + # modify the hived_api.sql file, new function test added to the new version of hfm + echo -e "CREATE OR REPLACE FUNCTION hive.test() \n RETURNS void \n LANGUAGE plpgsql \n VOLATILE AS \n\$BODY\$ \nBEGIN \nRAISE NOTICE 'test'; \nEND; \n\$BODY\$;" >> "${COPY_SRC_PATH}/src/hive_fork_manager/hived_api.sql" # commit changes to make a new hash - git -C $DIR config --global user.name "abc" - git -C $DIR config --global user.email "abc@example.com" - git -C $DIR config --global --add safe.directory /builds/hive/haf - git -C $DIR add src/hive_fork_manager/hived_api.sql - git -C $DIR commit -m "test" - # rebuild haf - test -n "$HAF_DIR" && rm "$HAF_DIR"/* -rf - $SETUP_DIR/build.sh --cmake-arg="-DHIVE_LINT=OFF" --haf-source-dir="$DIR" --haf-binaries-dir="$HAF_DIR" extension.hive_fork_manager - (cd $HAF_DIR; sudo ninja install) + git -C ${COPY_BUILD_PATH} config --global user.name "abc" + git -C ${COPY_BUILD_PATH} config --global user.email "abc@example.com" + git -C ${COPY_BUILD_PATH} config --global --add safe.directory /builds/hive/haf + git -C ${COPY_BUILD_PATH} add "${COPY_SRC_PATH}/src/hive_fork_manager/hived_api.sql" + git -C ${COPY_BUILD_PATH} commit -m "test" + # rebuild copy of haf + ${COPY_SRC_PATH}/scripts/build.sh --cmake-arg="-DHIVE_LINT=OFF" --haf-source-dir="${COPY_SRC_PATH}" --haf-binaries-dir="${COPY_BUILD_PATH}" extension.hive_fork_manager + (cd ${COPY_BUILD_PATH}; sudo ninja install) # run generator script sudo /usr/share/postgresql/${POSTGRES_VERSION}/extension/hive_fork_manager_update_script_generator.sh @@ -101,7 +107,19 @@ test_extension_update() { END \$\$ LANGUAGE plpgsql;" - + # check if function test added in new hfm version exists + sudo -Enu "$DB_ADMIN" psql -d "$DB_NAME" -v ON_ERROR_STOP=on -U "$DB_ADMIN" -c " + DO \$\$ + BEGIN + ASSERT EXISTS ( + SELECT 1 + FROM pg_proc + JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid + WHERE pg_proc.proname = 'test' + AND pg_namespace.nspname = 'hive' + ), 'Function hive.test() not exists when it should not.'; + END + \$\$ LANGUAGE plpgsql;" } test_extension_update