diff --git a/tests/queries/0_stateless/01941_multiple_pipe_read.reference b/tests/queries/0_stateless/01941_multiple_pipe_read.reference new file mode 100644 index 00000000000..77fd0948fc4 --- /dev/null +++ b/tests/queries/0_stateless/01941_multiple_pipe_read.reference @@ -0,0 +1,21 @@ +File generated: +0,BBB +1,BBB +2,BBB +3,BBB +4,AAA +5,BBB +6,AAA +****************** +Attempt to read twice from a pipeline +Return code: 0 +OK +****************** +Attempt to read twice from a regular file +Return code: 0 +OK +****************** +Attempt to read twice from a pipe +Return code: 0 +OK: cannot read from pipe twice + diff --git a/tests/queries/0_stateless/01941_multiple_pipe_read.sh b/tests/queries/0_stateless/01941_multiple_pipe_read.sh new file mode 100644 index 00000000000..d16ebe02d46 --- /dev/null +++ b/tests/queries/0_stateless/01941_multiple_pipe_read.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +# shellcheck source=../shell_config.sh +. "$CURDIR"/../shell_config.sh + +SAMPLE_FILE="$CURDIR/01941_sample_data.csv" +STD_ERROR_CAPTURED="$CURDIR/01941_std_error_captured.log" + +echo 'File generated:' +${CLICKHOUSE_LOCAL} -q "SELECT number, if(number in (4,6), 'AAA', 'BBB') from numbers(7) FORMAT TSV" | tr '\t' ',' >"$SAMPLE_FILE" +cat "$SAMPLE_FILE" + +echo '******************' +echo 'Attempt to read twice from a pipeline' +cat ${CLICKHOUSE_LOCAL} --structure 'key String' -q 'select * from table; select * from table;' <<"$STD_ERROR_CAPTURED" +ret = $? +echo "Return code: $ret" +if [ "$ret" -eq "0" ]; then + echo "OK" +else + echo "FAILED: return code is not 0" +fi + +echo '******************' +./clickhouse local --structure 'key String' -q 'select * from table; select * from table;' --file /tmp/foo +echo 'Attempt to read twice from a regular file' +${CLICKHOUSE_LOCAL} --structure 'key String' -q 'select * from table; select * from table;' --file "$SAMPLE_FILE" 2>"$STD_ERROR_CAPTURED" +ret = $? +echo "Return code: $ret" +if [ "$ret" -eq "0" ]; then + echo "OK" +else + echo "FAILED: return code is not 0" +fi + +echo '******************' +./clickhouse local --structure 'key String' -q 'select * from table; select * from table;' --file /tmp/foo +echo 'Attempt to read twice from a pipe' +mkfifo /tmp/pipe +echo "$SAMPLE_FILE" > /tmp/pipe & +${CLICKHOUSE_LOCAL} --structure 'key String' -q 'select * from table; select * from table;' --file /tmp/pipe 2>"$STD_ERROR_CAPTURED" +ret = $? +echo "Return code: $ret" +if [ "$ret" -eq "0" ]; then + echo "FAILED" +else + echo "OK: cannot read from pipe twice" +fi + +rm "$STD_ERROR_CAPTURED" "$SAMPLE_FILE" + +