oceanbase / oceanbase/seekdb

Fix error 9731 on Windows when running SELECT INTO OUTFILE PARQUET with default permissions

Open
#689 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

dima type: bug
Dominant language
C++
Stars
2.9k
Forks
339
Avg merge
1d 19h
Merged PRs (30d)
52

Description

Description

When executing SELECT INTO OUTFILE PARQUET on Windows with default permissions, error 9731 is returned.

Actual Result:
Error 9731 occurs.

Expected Result:
The command should execute successfully.

Steps to Reproduce

  1. Log into the target machine.
  2. Navigate to the directory: /obdata/data/AndroidTest/ob_opensource_test/tools/deploy
  3. Execute the following commands to set up the test environment and run the specific mysqltest:
    export OCEANBASE_HOME=/obdata/data/AndroidTest/ob_opensource_test/
    cd ${OCEANBASE_HOME}/tools/deploy
    source activate_obd.sh
    export OBD_SEEKDB_STATUS_FALLBACK_TCP=1
    
    obd test mysqltest test_env --mysqltest-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/mysqltest --obclient-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/obclient --init-only --init-sql-dir=${OCEANBASE_HOME}/tools/deploy --init-sql-files='init.sql,init_user.sql|root@sys|test'
    obd test mysqltest test_env --mysqltest-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/mysqltest --obclient-bin=${OCEANBASE_HOME}/deps/3rd/u01/obclient/bin/obclient --disable-reboot --test-set=select_into_outfile_parquet_orc_sqlqa.select_outfile_parquet_from_mysql
    
  4. Prepare the output directory and clean any existing files:
    mkdir -p /obdata/data/AndroidTest/ob_opensource_test/tools/deploy/outfile_data_parquet
    rm -f /obdata/data/AndroidTest/ob_opensource_test/tools/deploy/outfile_data_parquet/tmp_parquet*
    
  5. Execute the following SQL to reproduce the issue (note the absolute path in the INTO OUTFILE clause):
    CREATE DATABASE IF NOT EXISTS zct;
    USE zct;
    
    DROP TABLE IF EXISTS zct1;
    CREATE TABLE zct1(
      a INT, b VARCHAR(50), c DATE, d DATETIME, e TIMESTAMP, f TIME,
      g SMALLINT, h CHAR(10), i BINARY(10), j FLOAT, k DOUBLE, l DECIMAL(10,2), m BIGINT
    );
    
    INSERT INTO zct1 VALUES
    (1, '一', '2020-01-01', '2020-01-01 00:00:00', '2020-01-01 00:00:00', '00:00:00', 2020, 'blob', 'text', 1.1, 2.2, 3.3, 1),
    (2, ' ', '2020-01-02', '2020-01-02 00:00:00', '2020-01-02 00:00:00', '00:00:01', 2021, 'Blob', 'Text', 2.1, 3.2, 4.3, 2);
    
    -- Core statement corresponding to the test case (using an absolute path)
    SELECT * FROM zct1
    INTO OUTFILE '/obdata/data/AndroidTest/ob_opensource_test/tools/deploy/outfile_data_parquet/tmp_parquet.parquet'
    FORMAT(
      type='parquet'
      COMPRESSION='UNCOMPRESSED'
      ROW_GROUP_SIZE='1MB'
    ) single = true;
    

mysqltest Actual Result:
The test fails with error 9731.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the named mysqltest case select_into_outfile_parquet_orc_sqlqa.select_outfile_parquet_from_mysql with the provided setup, then reproduce the absolute-path SELECT INTO OUTFILE PARQUET statement under Windows default permissions. Done means the test and SQL command execute successfully without error 9731.

Written by the indexing model from the issue text.

Assessment

Tech stack
sql
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.