Commit 8bf37c8f authored by Marcel Huber's avatar Marcel Huber
Browse files

more shellcheck based cleanup

parent c9866fba
...@@ -4,9 +4,6 @@ _MY_DIR="$(cd "$(dirname "${0:-.}")" && pwd)" ...@@ -4,9 +4,6 @@ _MY_DIR="$(cd "$(dirname "${0:-.}")" && pwd)"
_EX_DIR="$(realpath --relative-to=. "$_MY_DIR")" _EX_DIR="$(realpath --relative-to=. "$_MY_DIR")"
test -z "$_EX_DIR" && _EX_DIR=. test -z "$_EX_DIR" && _EX_DIR=.
eo0=""
eo1=""
# shellcheck source=./Queries_common.sh # shellcheck source=./Queries_common.sh
. $_EX_DIR/Queries_common.sh . $_EX_DIR/Queries_common.sh
# disable globbing for star queries (*) # disable globbing for star queries (*)
...@@ -24,36 +21,37 @@ set schema ds2; ...@@ -24,36 +21,37 @@ set schema ds2;
set role sysadmin; set role sysadmin;
-- --
$(for q in "${queries[@]}"; do $(for q in "${queries[@]}"; do
explainopts="$(eval echo $(echo \"\$$(cut -d'|' -f1 <<<"$q")\"))"; aufgabe="$(cut -d'|' -f2 <<<"$q")";
aufgabe="$(cut -d'|' -f2 <<<"$q")"; aufgabe_desc="$(cut -d'|' -f3 <<<"$q")";
aufgabe_desc="$(cut -d'|' -f3 <<<"$q")"; query="$(cut -d'|' -f4 <<<"$q")";
query="$(cut -d'|' -f4 <<<"$q")"; query_escaped="$(echo -n "$query" | sed 's/\x27/\\\x27/g')";
query_escaped="$(echo -n "$query" | sed 's/\x27/\\\x27/g')"; echo "\f tab"
echo "\f tab" echo "select '--== Query $aufgabe_desc ==--';"
echo "select '--== Query $aufgabe_desc ==--';" echo "select '-- tag::${aufgabe}[]';"
echo "select '-- tag::${aufgabe}[]';" echo "select '-- tag::${aufgabe}-query[]';"
echo "select '-- tag::${aufgabe}-query[]';" echo "select '$query_escaped';"
echo "select '$query_escaped';" echo "select '-- end::${aufgabe}-query[]';"
echo "select '-- end::${aufgabe}-query[]';" echo "select '-- tag::${aufgabe}-plan[]';"
echo "select '-- tag::${aufgabe}-plan[]';" echo "\f raw"
echo "\f raw" echo "plan $query"
echo "plan $query" echo "\f tab"
echo "\f tab" echo "select '-- end::${aufgabe}-plan[]';"
echo "select '-- end::${aufgabe}-plan[]';" echo "select '-- tag::${aufgabe}-timing[]';"
echo "select '-- tag::${aufgabe}-timing[]';" echo "\f trash"
echo "\f trash" # shellcheck disable=SC2028
echo "\t performance" echo "\t performance"
echo "$query" echo "$query"
echo "\t none" # shellcheck disable=SC2028
echo "\f tab" echo "\t none"
echo "select '-- end::${aufgabe}-timing[]';" echo "\f tab"
echo "select '-- tag::${aufgabe}-trace[]';" echo "select '-- end::${aufgabe}-timing[]';"
echo "\f rowcount" echo "select '-- tag::${aufgabe}-trace[]';"
echo "trace $query" echo "\f rowcount"
echo "\f csv+;" echo "trace $query"
echo "select ticks as usec, stmt from sys.tracelog;" echo "\f csv+;"
echo "\f tab" echo "select ticks as usec, stmt from sys.tracelog;"
echo "select '-- end::${aufgabe}-trace[]';" echo "\f tab"
echo "select '-- end::${aufgabe}[]';" echo "select '-- end::${aufgabe}-trace[]';"
echo "select '-- end::${aufgabe}[]';"
done) done)
EOF EOF
...@@ -6,8 +6,9 @@ test -z "$_EX_DIR" && _EX_DIR=. ...@@ -6,8 +6,9 @@ test -z "$_EX_DIR" && _EX_DIR=.
db_name=${1:-ds2} db_name=${1:-ds2}
db_user=${2:-$db_name} db_user=${2:-$db_name}
# shellcheck disable=SC2034
eo0="" eo0=""
# shellcheck disable=SC2034
eo1="EXPLAIN (ANALYZE 1,COSTS 0,TIMING 1,BUFFERS 0,VERBOSE 0,FORMAT TEXT)" eo1="EXPLAIN (ANALYZE 1,COSTS 0,TIMING 1,BUFFERS 0,VERBOSE 0,FORMAT TEXT)"
# shellcheck source=./Queries_common.sh # shellcheck source=./Queries_common.sh
...@@ -41,30 +42,30 @@ VACUUM (ANALYZE); ...@@ -41,30 +42,30 @@ VACUUM (ANALYZE);
\c $db_name $db_user \c $db_name $db_user
$(for q in "${queries[@]}"; do $(for q in "${queries[@]}"; do
explainopts="$(eval echo $(echo \"\$$(cut -d'|' -f1 <<<"$q")\"))"; explainopts="$(eval echo \$"$(cut -d'|' -f1 <<<"$q")")";
aufgabe="$(cut -d'|' -f2 <<<"$q")"; aufgabe="$(cut -d'|' -f2 <<<"$q")";
aufgabe_desc="$(cut -d'|' -f3 <<<"$q")"; aufgabe_desc="$(cut -d'|' -f3 <<<"$q")";
query="$(cut -d'|' -f4 <<<"$q")"; query="$(cut -d'|' -f4 <<<"$q")";
echo "${echostr}--== Query $aufgabe_desc ==--" echo "${echostr}--== Query $aufgabe_desc ==--"
echo "${echostr}-- tag::${aufgabe}[]" echo "${echostr}-- tag::${aufgabe}[]"
echo "\! echo \"$explainopts\" >/tmp/qa" echo "\! echo \"$explainopts\" >/tmp/qa"
echo "${echostr}-- tag::${aufgabe}-eo[]" echo "${echostr}-- tag::${aufgabe}-eo[]"
echo "\! cat /tmp/qa" echo "\! cat /tmp/qa"
echo "${echostr}-- end::${aufgabe}-eo[]" echo "${echostr}-- end::${aufgabe}-eo[]"
echo "\! echo \"$query\" | pg_format -f1 -s2 -u2 | tee -a /tmp/qa >/tmp/q" echo "\! echo \"$query\" | pg_format -f1 -s2 -u2 | tee -a /tmp/qa >/tmp/q"
echo "${echostr}-- tag::${aufgabe}-query[]" echo "${echostr}-- tag::${aufgabe}-query[]"
echo "\! cat /tmp/q" echo "\! cat /tmp/q"
echo "${echostr}-- end::${aufgabe}-query[]" echo "${echostr}-- end::${aufgabe}-query[]"
echo "${echostr}-- tag::${aufgabe}-explain[]" echo "${echostr}-- tag::${aufgabe}-explain[]"
echo "\pset format asciidoc" echo "\pset format asciidoc"
echo "${echostr}-- tag::${aufgabe}-explain-adoc[]" echo "${echostr}-- tag::${aufgabe}-explain-adoc[]"
echo "\i /tmp/qa" echo "\i /tmp/qa"
echo "${echostr}-- end::${aufgabe}-explain-adoc[]" echo "${echostr}-- end::${aufgabe}-explain-adoc[]"
echo "\pset format ${format_text}" echo "\pset format ${format_text}"
echo "${echostr}-- tag::${aufgabe}-explain-text[]" echo "${echostr}-- tag::${aufgabe}-explain-text[]"
echo "\i /tmp/qa" echo "\i /tmp/qa"
echo "${echostr}-- end::${aufgabe}-explain-text[]" echo "${echostr}-- end::${aufgabe}-explain-text[]"
echo "${echostr}-- end::${aufgabe}-explain[]" echo "${echostr}-- end::${aufgabe}-explain[]"
echo "${echostr}-- end::${aufgabe}[]" echo "${echostr}-- end::${aufgabe}[]"
done) done)
EOF EOF
...@@ -10,18 +10,18 @@ _WAIT_FOR_IT_LOCATION=${_PARENT_DIR}/wait-for-it.sh ...@@ -10,18 +10,18 @@ _WAIT_FOR_IT_LOCATION=${_PARENT_DIR}/wait-for-it.sh
_RM_LIST="" _RM_LIST=""
_setup_execqueries() { _setup_execqueries() {
test -f "${_WAIT_FOR_IT_LOCATION}" || { test -f "${_WAIT_FOR_IT_LOCATION}" || {
wget --quiet -O "${_WAIT_FOR_IT_LOCATION}" https://gitlab.dev.ifs.hsr.ch/ifs/wait-for-it/raw/master/wait-for-it.sh ; wget --quiet -O "${_WAIT_FOR_IT_LOCATION}" https://gitlab.dev.ifs.hsr.ch/ifs/wait-for-it/raw/master/wait-for-it.sh ;
chmod +x "${_WAIT_FOR_IT_LOCATION}"; chmod +x "${_WAIT_FOR_IT_LOCATION}";
} }
test -f "${_WAIT_FOR_IT_LOCATION}" && _RM_LIST="$_RM_LIST:$_WAIT_FOR_IT_LOCATION" test -f "${_WAIT_FOR_IT_LOCATION}" && _RM_LIST="$_RM_LIST:$_WAIT_FOR_IT_LOCATION"
} }
_exitproc() { _exitproc() {
IFS=":" IFS=":"
for f in $_RM_LIST; do for f in $_RM_LIST; do
rm -f "$f" rm -f "$f"
done done
} }
trap _exitproc INT HUP TERM trap _exitproc INT HUP TERM
...@@ -35,206 +35,206 @@ db_data_path="/src/Databases/dvdstore_500mb" ...@@ -35,206 +35,206 @@ db_data_path="/src/Databases/dvdstore_500mb"
db_script_PostgreSQL="${db_data_path}/0_runAllScripts.sql" db_script_PostgreSQL="${db_data_path}/0_runAllScripts.sql"
_load_db_PostgreSQL() { _load_db_PostgreSQL() {
_passfilename="$1"; _passfilename="$1";
_passfilepath="$2"; _passfilepath="$2";
_compose_file="$3"; _compose_file="$3";
_root_dir="${4:-.}"; _root_dir="${4:-.}";
_host="$5" _host="$5"
_name="$6" _name="$6"
_user="$7" _user="$7"
docker-compose --file "$_compose_file" \ docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
up -d \ up -d \
postgres-dflt postgres-dflt
printf "\\n\\n" | docker-compose --file "$_compose_file" \ printf "\\n\\n" | docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
run \ run \
-e "PGPASSFILE=/$_passfilename" -v "${_passfilepath}:/${_passfilename}:ro" \ -e "PGPASSFILE=/$_passfilename" -v "${_passfilepath}:/${_passfilename}:ro" \
psql-dflt \ psql-dflt \
wait-for-it.sh --timeout=20 --strict \ wait-for-it.sh --timeout=20 --strict \
--host=postgres --port=5432 -- \ --host=postgres --port=5432 -- \
su -c "psql -h \"$_host\" -U \"postgres\" -d \"postgres\" \ su -c "psql -h \"$_host\" -U \"postgres\" -d \"postgres\" \
--no-readline \ --no-readline \
-f \"$db_script_PostgreSQL\"" -f \"$db_script_PostgreSQL\""
} }
_run_queries_PostgreSQL() { _run_queries_PostgreSQL() {
_logfile="$1"; _logfile="$1";
_queries_file="$2"; _queries_file="$2";
_passfilename="$3"; _passfilename="$3";
_passfilepath="$4"; _passfilepath="$4";
_compose_file="$5"; _compose_file="$5";
_root_dir="${6:-.}"; _root_dir="${6:-.}";
_host="$7" _host="$7"
_name="$8" _name="$8"
_user="$9" _user="$9"
echo "Logging into $_logfile" echo "Logging into $_logfile"
_cname=$(docker-compose --file "$_compose_file" \ _cname=$(docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
run -d \ run -d \
-e "PGPASSFILE=/$_passfilename" -v "${_passfilepath}:/${_passfilename}:ro" \ -e "PGPASSFILE=/$_passfilename" -v "${_passfilepath}:/${_passfilename}:ro" \
psql-dflt \ psql-dflt \
wait-for-it.sh --timeout=20 --strict \ wait-for-it.sh --timeout=20 --strict \
--host=postgres --port=5432 -- \ --host=postgres --port=5432 -- \
su -c "psql -h \"$_host\" -U \"$_user\" -d \"$_name\" \ su -c "psql -h \"$_host\" -U \"$_user\" -d \"$_name\" \
--no-readline \ --no-readline \
--tuples-only \ --tuples-only \
-f \"/src/$_queries_file\"") -f \"/src/$_queries_file\"")
if docker container wait "$_cname"; then if docker container wait "$_cname"; then
docker container logs "$_cname" >"$_logfile" 2>&1; docker container logs "$_cname" >"$_logfile" 2>&1;
sed -i -r -e 's/ \(actual[^)]+\)//' \ sed -i -r -e 's/ \(actual[^)]+\)//' \
-e '/^(SET|BEGIN;?|ROLLBACK;?|CREATE INDEX)$/ d' "$_logfile"; -e '/^(SET|BEGIN;?|ROLLBACK;?|CREATE INDEX)$/ d' "$_logfile";
else else
echo "Failed to wait on removed? PostgreSQL container, did it start?" echo "Failed to wait on removed? PostgreSQL container, did it start?"
fi fi
} }
_load_db_MonetDB() { _load_db_MonetDB() {
_passfilename="$1"; _passfilename="$1";
_passfilepath="$2"; _passfilepath="$2";
_compose_file="$3"; _compose_file="$3";
_root_dir="${4:-.}"; _root_dir="${4:-.}";
_host="$5" _host="$5"
_name="$6" _name="$6"
_user="$7" _user="$7"
docker-compose --file "$_compose_file" \ docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
up -d \ up -d \
monetdb-dflt monetdb-dflt
docker-compose --file "$_compose_file" \ docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
run \ run \
--workdir=$db_data_path \ --workdir=$db_data_path \
--volume "${_PARENT_DIR}":/my_bin:ro \ --volume "${_PARENT_DIR}":/my_bin:ro \
-e "DOTMONETDBFILE=/src/ColumnStore/.monetdb-monetdb" \ -e "DOTMONETDBFILE=/src/ColumnStore/.monetdb-monetdb" \
mclient-batch-dflt \ mclient-batch-dflt \
/my_bin/wait-for-it.sh --timeout=20 --strict \ /my_bin/wait-for-it.sh --timeout=20 --strict \
--host=monetdb --port=50000 -- \ --host=monetdb --port=50000 -- \
true; true;
docker-compose --file "$_compose_file" \ docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
exec monetdb-dflt \ exec monetdb-dflt \
sh -c "monetdb status; monetdb destroy -f \"$_name\"; \ sh -c "monetdb status; monetdb destroy -f \"$_name\"; \
monetdb create \"$_name\" && monetdb release \"$_name\" && \ monetdb create \"$_name\" && monetdb release \"$_name\" && \
monetdb start \"$_name\"; monetdb status" monetdb start \"$_name\"; monetdb status"
docker-compose --file "$_compose_file" \ docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
run \ run \
--workdir=$db_data_path \ --workdir=$db_data_path \
--volume "${_PARENT_DIR}":/my_bin:ro \ --volume "${_PARENT_DIR}":/my_bin:ro \
-e "DOTMONETDBFILE=/src/ColumnStore/.monetdb-monetdb" \ -e "DOTMONETDBFILE=/src/ColumnStore/.monetdb-monetdb" \
mclient-batch-dflt \ mclient-batch-dflt \
/my_bin/wait-for-it.sh --timeout=20 --strict \ /my_bin/wait-for-it.sh --timeout=20 --strict \
--host=monetdb --port=50000 -- \ --host=monetdb --port=50000 -- \
mclient -h monetdb -d "$_name" \ mclient -h monetdb -d "$_name" \
--history --interactive \ --history --interactive \
--encoding="UTF-8" \ --encoding="UTF-8" \
2_schema.monetdb.sql 3_inserts.monetdb.sql 4_keys.monetdb.sql 2_schema.monetdb.sql 3_inserts.monetdb.sql 4_keys.monetdb.sql
docker-compose --file "$_compose_file" \ docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
run \ run \
--workdir=$db_data_path \ --workdir=$db_data_path \
--volume "${_PARENT_DIR}":/my_bin:ro \ --volume "${_PARENT_DIR}":/my_bin:ro \
-e "DOTMONETDBFILE=/src/ColumnStore/.monetdb-monetdb" \ -e "DOTMONETDBFILE=/src/ColumnStore/.monetdb-monetdb" \
mclient-batch-dflt \ mclient-batch-dflt \
/my_bin/wait-for-it.sh --timeout=20 --strict \ /my_bin/wait-for-it.sh --timeout=20 --strict \
--host=monetdb --port=50000 -- \ --host=monetdb --port=50000 -- \
mclient -h monetdb -d "$_name" \ mclient -h monetdb -d "$_name" \
--history \ --history \
-s "ANALYZE $_name; select * from sys.statistics; grant sysadmin to $_user with admin option;" -s "ANALYZE $_name; select * from sys.statistics; grant sysadmin to $_user with admin option;"
#FIXME: set correct permissions to select from sys.tracelog as ds2 user #FIXME: set correct permissions to select from sys.tracelog as ds2 user
} }
_run_queries_MonetDB() { _run_queries_MonetDB() {
_logfile="$1"; _logfile="$1";
_queries_file="$2"; _queries_file="$2";
_passfilename="$3"; _passfilename="$3";
_passfilepath="$4"; _passfilepath="$4";
_compose_file="$5"; _compose_file="$5";
_root_dir="${6:-.}"; _root_dir="${6:-.}";
echo "Logging into $_logfile" echo "Logging into $_logfile"
_cname=$(docker-compose --file "$_compose_file" \ _cname=$(docker-compose --file "$_compose_file" \
--project-name "$_EX_NAME" \ --project-name "$_EX_NAME" \
--project-directory "$_root_dir" \ --project-directory "$_root_dir" \
run -d \ run -d \
-e "DOTMONETDBFILE=/$_passfilename" -v "${_passfilepath}:/${_passfilename}:ro" \ -e "DOTMONETDBFILE=/$_passfilename" -v "${_passfilepath}:/${_passfilename}:ro" \
--volume "${_PARENT_DIR}":/my_bin:ro \ --volume "${_PARENT_DIR}":/my_bin:ro \
mclient-batch-dflt \ mclient-batch-dflt \
/my_bin/wait-for-it.sh --timeout=20 --strict \ /my_bin/wait-for-it.sh --timeout=20 --strict \
--host=monetdb --port=50000 -- \ --host=monetdb --port=50000 -- \
mclient -h monetdb \ mclient -h monetdb \
--history --interactive \ --history --interactive \
--encoding="UTF-8" \ --encoding="UTF-8" \
"/src/$_queries_file") "/src/$_queries_file")
if docker container wait "$_cname"; then if docker container wait "$_cname"; then
docker container logs "$_cname" >"$_logfile" 2>&1; docker container logs "$_cname" >"$_logfile" 2>&1;
sed -i -r -e '/^%.*$/ d' -e 's|\r$||' "$_logfile"; sed -i -r -e '/^%.*$/ d' -e 's|\r$||' "$_logfile";
else else
echo "Failed to wait on removed? PostgreSQL container, did it start?" echo "Failed to wait on removed? PostgreSQL container, did it start?"
fi fi
} }
_create_passfile_PostgreSQL() { _create_passfile_PostgreSQL() {
_passfilepath="$1"; _passfilepath="$1";
_host="$2" _host="$2"
_name="$3" _name="$3"
_user="$4" _user="$4"
_pass="$5" _pass="$5"
# see https://wiki.postgresql.org/wiki/Pgpass and https://www.postgresql.org/docs/current/libpq-pgpass.html # see https://wiki.postgresql.org/wiki/Pgpass and https://www.postgresql.org/docs/current/libpq-pgpass.html
# hostname:port:database:username:password # hostname:port:database:username:password
printf "%s:%s:%s:%s:%s\n" "$_host" "*" "*" "postgres" "postgres" >"$_passfilepath" printf "%s:%s:%s:%s:%s\n" "$_host" "*" "*" "postgres" "postgres" >"$_passfilepath"
printf "%s:%s:%s:%s:%s\n" "$_host" "*" "$_name" "$_user" "$_pass" >>"$_passfilepath" printf "%s:%s:%s:%s:%s\n" "$_host" "*" "$_name" "$_user" "$_pass" >>"$_passfilepath"
chmod 0600 "$_passfilepath" chmod 0600 "$_passfilepath"
} }
_create_passfile_MonetDB() { _create_passfile_MonetDB() {
_passfilepath="$1"; _passfilepath="$1";
_host="$2" _host="$2"
_name="$3" _name="$3"
_user="$4" _user="$4"
_pass="$5" _pass="$5"
# see https://www.monetdb.org/Documentation/mclient-man-page # see https://www.monetdb.org/Documentation/mclient-man-page
printf "database=%s\nuser=%s\npassword=%s\n" "$_name" "$_user" "$_pass" >"$_passfilepath" printf "database=%s\nuser=%s\npassword=%s\n" "$_name" "$_user" "$_pass" >"$_passfilepath"
chmod 0600 "$_passfilepath" chmod 0600 "$_passfilepath"
} }
_setup_execqueries _setup_execqueries
for dbtype in MonetDB PostgreSQL; do for dbtype in MonetDB PostgreSQL; do
_queries_generate_script="${_EX_DIR}/${docname}_${dbtype}.sh" _queries_generate_script="${_EX_DIR}/${docname}_${dbtype}.sh"
test -f "$_queries_generate_script" || continue test -f "$_queries_generate_script" || continue
_queries_file=${_EX_DIR}/${docname}_${dbtype}.sql _queries_file=${_EX_DIR}/${docname}_${dbtype}.sql
_test_date="$(date +%Y%m%d%H%M%S)" _test_date="$(date +%Y%m%d%H%M%S)"
_logbase="${_EX_DIR}/${_EX_NAME}.${dbtype}" _logbase="${_EX_DIR}/${_EX_NAME}.${dbtype}"
_logfile="${_logbase}.${_test_date}.log" _logfile="${_logbase}.${_test_date}.log"
sh "${_queries_generate_script}" "$db_name" "$db_user" >"$_queries_file" sh "${_queries_generate_script}" "$db_name" "$db_user" >"$_queries_file"
_passfilename=".passfile.$dbtype" _passfilename=".passfile.$dbtype"
_passfilepath="${_MY_DIR}/$_passfilename" _passfilepath="${_MY_DIR}/$_passfilename"
_create_passfile_${dbtype} "$_passfilepath" "$db_host" "$db_name" "$db_user" "$db_pass" _create_passfile_${dbtype} "$_passfilepath" "$db_host" "$db_name" "$db_user" "$db_pass"
_load_db_$dbtype "$_passfilename" "$_passfilepath" "${_HELPERS_DIR}/docker-compose.yml" "$_PARENT_DIR" "$db_host" "$db_name" "$db_user" _load_db_$dbtype "$_passfilename" "$_passfilepath" "${_HELPERS_DIR}/docker-compose.yml" "$_PARENT_DIR" "$db_host" "$db_name" "$db_user"
_run_queries_${dbtype} "$_logfile" "$_queries_file" "$_passfilename" "$_passfilepath" "${_HELPERS_DIR}/docker-compose.yml" "$_PARENT_DIR" "$db_host" "$db_name" "$db_user" _run_queries_${dbtype} "$_logfile" "$_queries_file" "$_passfilename" "$_passfilepath" "${_HELPERS_DIR}/docker-compose.yml" "$_PARENT_DIR" "$db_host" "$db_name" "$db_user"
cp -fp "$_logfile" "${_logbase}.log" cp -fp "$_logfile" "${_logbase}.log"
_RM_LIST="$_RM_LIST:$_passfilepath" _RM_LIST="$_RM_LIST:$_passfilepath"
done done
_exitproc _exitproc
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment