Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stream socket test revise #238

Open
wants to merge 28 commits into
base: stream_socket_test
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d83a403
docs: update default for sql.enable_index_join
kuron99 Aug 23, 2024
b221a84
docs: remove dev_compiler_support config. parameters
kuron99 Aug 23, 2024
0956eaa
update docs/tgctl.mn
t-horikawa Aug 26, 2024
f093abf
revise docs/tgctl.md
t-horikawa Aug 26, 2024
c96c54c
follow limestone specification change that compateion_catalog file is…
t-horikawa Aug 26, 2024
e2359ee
add description of statement event log output threshold (stmt_duratio…
t-horikawa Aug 27, 2024
75dd68b
revise docs/config-parameters-altimeter_en.md
t-horikawa Aug 27, 2024
94947d5
add docs/endpoint_metrics_ja.md
t-horikawa Aug 27, 2024
d1bc3e2
revise docs/endpoint_metrics_ja.md in format
t-horikawa Aug 29, 2024
9977fdd
update docs/cli-spec-ja.md to describe 1.0.0-GA implementation status
t-horikawa Aug 29, 2024
e9d1c5c
revise docs/cli-spec-ja.md at version notation from 1.0.0-GA to 1.0.0
t-horikawa Aug 29, 2024
32baa79
add tateyama/session/resource.h to make session_resource::sessions_co…
t-horikawa Sep 4, 2024
97c9e81
make tateyama::session::session_resource::tag available to external m…
t-horikawa Sep 4, 2024
0d68534
make session_variable_set available via request
t-horikawa Sep 4, 2024
bfc128e
fix session_variable_set handling
t-horikawa Sep 5, 2024
769e4f1
revise bool handling
t-horikawa Sep 5, 2024
6477a93
fix tests that does not use session_variable_set
t-horikawa Sep 5, 2024
d071114
fix clang-tidy warnings
t-horikawa Sep 5, 2024
0c43fad
build: make RPATH relative
akirakw Sep 4, 2024
d476ac3
fix session_context at session_variable_set handling
t-horikawa Sep 5, 2024
a02672b
add unset session variable functionality
t-horikawa Sep 10, 2024
839ced1
docs: clarify how to unset session variables.
ashigeru Sep 9, 2024
ff32e48
docs: make `request.SessionSetVariable.value` optional.
ashigeru Sep 9, 2024
c719134
stream_socket_test is now actually doing the communication to check t…
t-horikawa Sep 12, 2024
9866412
revise stream_socket_test at connection_info check
t-horikawa Sep 13, 2024
1e034f7
fix stream endpoint at foforeign port number calculation
t-horikawa Sep 13, 2024
2692ca4
revise stream_write_test as well
t-horikawa Sep 13, 2024
ea2441d
revise stream_receiver on error handling
t-horikawa Sep 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/actions/install-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ runs:
rm -fr build
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBUILD_TESTS=OFF -DBUILD_DOCUMENTS=OFF -DFORCE_INSTALL_RPATH=ON -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/.local ..
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBUILD_TESTS=OFF -DBUILD_DOCUMENTS=OFF -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/.local ..
cmake --build . --target install --clean-first
shell: bash

Expand Down Expand Up @@ -88,7 +88,7 @@ runs:
rm -fr build
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBUILD_TESTS=OFF -DBUILD_DOCUMENTS=OFF -DBUILD_BENCHMARK=OFF -DFORCE_INSTALL_RPATH=ON -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/.local ..
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBUILD_TESTS=OFF -DBUILD_DOCUMENTS=OFF -DBUILD_BENCHMARK=OFF -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/.local ..
cmake --build . --target install --clean-first
shell: bash

Expand All @@ -98,7 +98,7 @@ runs:
rm -fr build
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBUILD_TESTS=OFF -DBUILD_DOCUMENTS=OFF -DBUILD_EXAMPLES=OFF -DFORCE_INSTALL_RPATH=ON -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/.local ..
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DBUILD_TESTS=OFF -DBUILD_DOCUMENTS=OFF -DBUILD_EXAMPLES=OFF -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/.local ..
cmake --build . --target install --clean-first
shell: bash

Expand Down
1 change: 0 additions & 1 deletion .vscode/samples/settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"cmake.configureArgs": [
"-DCMAKE_PREFIX_PATH=${env:HOME}/git/.opt",
"-DFORCE_INSTALL_RPATH=ON",
"-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",
"-DCMAKE_BUILD_TYPE=${env:BUILD_TYPE}",
"-DSHARKSFIN_IMPLEMENTATION=${env:SHARKSFIN_IMPLEMENTATION}",
Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ optional packages:
This requires below [tsurugidb](https://github.com/project-tsurugi/tsurugidb) modules to be installed.

* [takatori](https://github.com/project-tsurugi/takatori) (for takatori::util functionalities)
* [sharksfin](https://github.com/project-tsurugi/sharksfin)
* [sharksfin](https://github.com/project-tsurugi/sharksfin)

#### moodycamel::ConcurrentQueue

Expand Down Expand Up @@ -63,7 +63,6 @@ available options:
* `-DBUILD_DOCUMENTS=OFF` - don't build documents by doxygen
* `-DINSTALL_EXAMPLES=ON` - install example applications
* `-DBUILD_BENCHMARK=ON` - build benchmark programs
* `-DFORCE_INSTALL_RPATH=ON` - automatically configure `INSTALL_RPATH` for non-default library paths
* `-DSHARKSFIN_IMPLEMENTATION=<implementation name>` - switch sharksfin implementation. Available options are `memory` and `shirakami` (default: `memory`)
* `-DENABLE_ALTIMETER=ON` - turn on the `altimeter logging`.
* `-DMC_QUEUE=ON` - use moody camel queue instead of tbb queue to store tasks in tateyama task scheduler.
Expand All @@ -74,7 +73,7 @@ available options:
* `-DENABLE_COVERAGE=ON` - enable code coverage analysis (requires `-DCMAKE_BUILD_TYPE=Debug`)
* `-DTRACY_ENABLE=ON` - enable tracy profiler for multi-thread debugging. See section below.

### install
### install

```sh
cmake --build . --target install
Expand All @@ -93,19 +92,19 @@ ctest -V
cmake --build . --target doxygen
```

### Customize logging setting
### Customize logging setting
You can customize logging in the same way as sharksfin. See sharksfin [README.md](https://github.com/project-tsurugi/sharksfin/blob/master/README.md#customize-logging-setting) for more details.

```sh
GLOG_minloglevel=0 ./group-cli --minimum
GLOG_minloglevel=0 ./group-cli --minimum
```

### Multi-thread debugging/profiling with Tracy

You can use [Tracy Profiler](https://github.com/wolfpld/tracy) to graphically display the threads operations and improve printf debug by printing messages on the tooltips on the Tracy profiler UI.
By setting cmake build option `-DTRACY_ENABLE=ON`, TracyClient.cpp file is added to the build and tracing macros are enabled.

Prerequirement:
Prerequirement:

1. ensure tracy code is located under `third_party/tracy` directory.
```
Expand Down
31 changes: 0 additions & 31 deletions cmake/InstallOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,37 +14,6 @@ function(install_custom target_name export_name)
DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT Runtime
)
# Add INSTALL_RPATH from CMAKE_INSTALL_PREFIX and CMAKE_PREFIX_PATH
# The default behavior of CMake omits RUNPATH if it is already in CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES.
if (FORCE_INSTALL_RPATH)
get_target_property(target_type ${target_name} TYPE)
if (target_type STREQUAL "SHARED_LIBRARY"
OR target_type STREQUAL "EXECUTABLE")
get_target_property(rpath ${target_name} INSTALL_RPATH)

# add ${CMAKE_INSTALL_PREFIX}/lib if it is not in system link directories
get_filename_component(p "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" ABSOLUTE)
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${p}" is_system)
if (is_system STREQUAL "-1")
list(APPEND rpath "${p}")
endif()

# add each ${CMAKE_PREFIX_PATH}/lib
foreach (p IN LISTS CMAKE_PREFIX_PATH)
get_filename_component(p "${p}/${CMAKE_INSTALL_LIBDIR}" ABSOLUTE)
list(APPEND rpath "${p}")
endforeach()

if (rpath)
set_target_properties(${target_name} PROPERTIES
INSTALL_RPATH "${rpath}")
endif()

# add other than */lib paths
set_target_properties(${target_name} PROPERTIES
INSTALL_RPATH_USE_LINK_PATH ON)
endif()
endif (FORCE_INSTALL_RPATH)
# Install include files of interface libraries manually
# INTERFACE_INCLUDE_DIRECTORIES must contains the following entries:
# - one or more `$<BUILD_INTERFACE:...>` paths (may be absolute paths on source-tree)
Expand Down
40 changes: 20 additions & 20 deletions docs/cli-spec-ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ tgctl status [--conf </path/to/conf>]
* データベースプロセスを起動する
* options
* `--recovery` (default) - データベース起動時にリカバリ操作が必要であれば自動的に行う
* `--no-recovery` - データベース起動時にリカバリ操作が必要であれば何もせずにエラー終了する
* `--no-recovery` - データベース起動時にリカバリ操作が必要であれば何もせずにエラー終了する(1.0.0では未実装)
* note
* 同一の設定ファイルを参照するデータベースが稼働中である場合、コマンドは失敗する
* 同一の設定ファイルを参照するデータベースが完全に終了していない場合、コマンドは失敗する場合がある
Expand Down Expand Up @@ -155,7 +155,7 @@ tgctl status [--conf </path/to/conf>]
### backup サブコマンド

```sh
tgctl backup create </path/to/backup> [--conf </path/to/conf>] [--overwrite] [--label <text>] [-v|--verbose]
tgctl backup create </path/to/backup> [--conf </path/to/conf>] [--overwrite] [--label <text>] [--verbose]
tgctl backup estimate [--conf </path/to/conf>]
```

Expand All @@ -175,9 +175,9 @@ tgctl backup estimate [--conf </path/to/conf>]
* 現在のデータベースの状態を複製し、バックアップファイルとして書き出す
* options
* `</path/to/backup>` - バックアップ先のディレクトリ
* `--overwrite` - 出力先にディレクトリが既に存在していた場合、削除してからバックアップファイルを出力する
* `--overwrite` - 出力先にディレクトリが既に存在していた場合、削除してからバックアップファイルを出力する(1.0.0では未実装)
* `--label` - この操作のラベルを指定する
* `-v,--verbose` - 詳細情報を表示する
* `--verbose` - 詳細情報を表示する
* note
* 作成したバックアップは `tgctl restore backup` で復元できる
* 出力先に空でないディレクトリが既に存在し、かつ `--overwrite` が指定されていない場合、コマンドは失敗する
Expand Down Expand Up @@ -218,7 +218,7 @@ tgctl backup estimate [--conf </path/to/conf>]

```sh
tgctl restore backup </path/to/backup> [--conf </path/to/conf>] [--keep-backup|--no-keep-backup] [--label <text>] [--force] [--use-file-list </path/to/file-list>]
tgctl restore tag <tag-name> [--conf </path/to/conf>] [--label <text>] [--force]
tgctl restore tag <tag-name> [--conf </path/to/conf>] [--label <text>] [--force](1.0.0では未実装)
```

* overview
Expand Down Expand Up @@ -257,7 +257,7 @@ tgctl restore tag <tag-name> [--conf </path/to/conf>] [--label <text>] [--force]
* wait until service is absent
* otherwise
* raise error
* `tag`
* `tag` (1.0.0では未実装)
* overview
* Point-in-Time Recovery のタグ作成時点にデータベースをリストアする
* options
Expand All @@ -275,10 +275,10 @@ tgctl restore tag <tag-name> [--conf </path/to/conf>] [--label <text>] [--force]
* otherwise
* raise error

### Point-in-Time Recovery
### Point-in-Time Recovery(1.0.0では未実装)

```sh
tgctl tag list [--conf </path/to/conf>] [-v|--verbose]
tgctl tag list [--conf </path/to/conf>] [--verbose]
tgctl tag show <tag-name> [--conf </path/to/conf>]
tgctl tag add <tag-name> [--comment <message>] [--conf </path/to/conf>]
tgctl tag remove <tag-name> [--force] [--conf </path/to/conf>]
Expand Down Expand Up @@ -375,29 +375,29 @@ tgctl tag remove <tag-name> [--force] [--conf </path/to/conf>]
### コマンドグループ

```sh
tgctl [-h|--help]
tgctl backup [-h|--help]
tgctl restore [-h|--help]
tgctl tag [-h|--help]
tgctl [--help]
tgctl backup [--help](1.0.0では未実装)
tgctl restore [--help](1.0.0では未実装)
tgctl tag [--help](1.0.0では未実装)
```

* overview
* 各種コマンドグループのヘルプ情報を表示する
* options
* `-h,--help` - ヘルプ情報を表示する
* `--help` - ヘルプ情報を表示する

### ヘルプ情報

```sh
<any commands> [-h|--help]
<any commands> [--help](1.0.0では未実装)
```

* overview
* コマンドを実行する代わりに、コマンドのヘルプ情報を表示する
* options
* `-h,--help` - ヘルプ情報を表示する
* `--help` - ヘルプ情報を表示する

## 認証
## 認証(1.0.0では未実装)

* 本CLIの認証は以下の方法がある
* (A) ユーザー名とパスワードを指定
Expand Down Expand Up @@ -474,7 +474,7 @@ tgctl credentials [/path/to/credentials.json] [--user <user-name>] [--overwrite|
* if service is unknown
* raise error

## ユーザーコマンド案
## ユーザーコマンド案(1.0.0では未実装)

* コマンド体系を分ける?
* ユーザーコマンドと管理コマンドとでルートコマンド自体を分けてもよさそう?
Expand All @@ -483,7 +483,7 @@ tgctl credentials [/path/to/credentials.json] [--user <user-name>] [--overwrite|
### SQL実行

```sh
tgctl exec </path/to/statement-list> [-v|--verbose] <connection-options>
tgctl exec </path/to/statement-list> [--verbose] <connection-options>
tgctl shell [-e <sql-statement>] <connection-options>

connection-options:
Expand Down Expand Up @@ -543,8 +543,8 @@ connection-options:
### dump/load

```sh
tgctl data dump <table-name> </path/to/dump-target> [--fresh|--safe] [--overwrite] [-v|--verbose]
tgctl data load <table-name> </path/to/load-source>.. [--insert|--skip|--replace|--truncate] [--transaction|--no-transaction] [--force] [-v|--verbose] <connection-options>
tgctl data dump <table-name> </path/to/dump-target> [--fresh|--safe] [--overwrite] [--verbose]
tgctl data load <table-name> </path/to/load-source>.. [--insert|--skip|--replace|--truncate] [--transaction|--no-transaction] [--force] [--verbose] <connection-options>

connection-options:
--conf </path/to/conf> |
Expand Down
5 changes: 3 additions & 2 deletions docs/config-parameters-altimeter_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ altimeter関連セクションには、event_logセクションとaudit_logが
| flush_interval | 整数 | フラッシュ間隔 (ミリ秒)。デフォルトは10000。 | ログ同期保存が false の時に利用、値が 0 の場合はバッファリングなしでログを書き込む。
| flush_file_size | 整数 | フラッシュを行うファイルサイズ (バイト数)。デフォルトは1048576。 | ログ同期保存が false の時に利用、値が 0 の場合はバッファリングなしでログを書き込む。
| max_file_size | 整数 | ローテートを行うファイルサイズ (バイト数)。デフォルトは1073741824。 | 値が 0 の場合はローテートを行わない。

| stmt_duration_threshold | 整数 | ログ種類「stmt_end」を出力するduration_timeの閾値(ナノ秒)。デフォルトは1000000000。 | この値が1以上の値を設定した場合、stmt_endのduration_timeの値がこの閾値以上の場合のみstmt_endのイベントログを出力する。その際、ログレベルを最低値(10)に置き換えてイベントログを出力する。
セクション名
- audit_log

対象コンポーネント

- altimeter(audit log)

パラメータ名、型、値とも、directoryのデフォルト値(/var/log/altimeter/audit)以外はevent_logセクションと同じ。
パラメータ名、型、値とも、directoryのデフォルト値(/var/log/altimeter/audit)以外はevent_logセクションと同じ。
※stmt_duration_thresholdを除く
3 changes: 1 addition & 2 deletions docs/config-parameters-en.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Target component
| Parameter name | Type | Value | Remarks |
|---:| :---: | :--- |---|
| thread_pool_size | Integer | Number of threads used by the task scheduler in the SQL service. The default value is set according to the environment by the following formula. MIN( <default worker coefficient> * <number of physical cores>, <maximum default worker count> ) If the result is less than 1, it is set to 1. Here, the default worker coefficient = 0.8, and the maximum default worker count = 32. |
| enable_index_join | Boolean (true/false) | Whether to use index-based join processing for performance improvement. The default value is false. | This is for development and may be deleted in the future. |
| enable_index_join | Boolean (true/false) | Whether to use index-based join processing for performance improvement. The default value is true. | This is for development and may be deleted in the future. |
| stealing_enabled | Boolean (true/false) | Whether the scheduler steals tasks to utilize idle CPU cores. The default value is true. |
| default_partitions | Integer | Number of partitions when data is divided for parallelizable relational operators. The default value is 5. |
| use_preferred_worker_for_current_thread | Boolean (true/false) | Whether the scheduler uses a fixed worker for each thread that submits a task. The default is true. | This is for development and may be deleted in the future. |
Expand All @@ -69,7 +69,6 @@ Target component
| dev_try_insert_on_upserting_secondary | Boolean (true/false) | Whether to execute INSERT before INSERT OR REPLACE for tables with secondary indexes. The default value is true. | This is for development and may be deleted in the future. |
| dev_scan_concurrent_operation_as_not_found | Boolean (true/false) | Whether to treat records detected as concurrently inserted during scan operations (WARN_CONCURRENT_INSERT) as non-existent. The default value is true. | This is for development and may be deleted in the future. |
| dev_point_read_concurrent_operation_as_not_found | Boolean (true/false) | Whether to treat records detected as concurrently inserted during point read operations (WARN_CONCURRENT_INSERT) as non-existent. The default value is true. | This is for development and may be deleted in the future. |
|dev_compiler_support| Integer | The support level of SQL compiler. Use old compiler if this is set to 0 and new one if 1. The default value is 1. |This is for development and may be deleted in the future.|
|lowercase_regular_identifiers| Boolean (true/false) | Whether to lowercase the identifiers such as table names. This configuration is available only on new SQL compiler. The default value is false.||
|scan_block_size| Integer | Max records processed by scan operator before yielding to other tasks. The default is 0 (unlimited). | This is for development and may be deleted in the future. |

Expand Down
4 changes: 2 additions & 2 deletions docs/config_parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ parameter=value
|パラメーター名 | 型 | 値 |備考|
|---:| :---: | :--- |---|
|thread_pool_size | 整数 | SQLサービスが使用するタスクスケジューラの使用するスレッド数。デフォルトは次式により環境に合わせて設定される。MIN( <既定ワーカー係数> * <物理コア数>, <最大既定ワーカー数> ) 結果が1未満になる場合は1とする。ここで、既定ワーカー係数 = 0.8、最大既定ワーカー数 = 32||
|enable_index_join | ブール(true/false) | 性能向上のためインデックスを利用した結合処理を行うか。デフォルトはfalse|開発用のため将来的に削除される可能性あり|
|enable_index_join | ブール(true/false) | 性能向上のためインデックスを利用した結合処理を行うか。デフォルトはtrue|開発用のため将来的に削除される可能性あり|
|stealing_enabled | ブール(true/false) | 空いたCPUコアを活用するためにスケジューラーがタスクのstealingを行うか。デフォルトはtrue||
|default_partitions | 整数 | 並列化可能な関係演算子の実行においてデータ分割を行う際のパーティション数。デフォルトは5||
|use_preferred_worker_for_current_thread | ブール(true/false) | スケジューラーがワーカーを選択する際、タスクを提出したスレッドごとに固定的なワーカーを使うようにするか。デフォルトはtrue|開発用のため将来的に削除される可能性あり|
Expand All @@ -69,9 +69,9 @@ parameter=value
|dev_try_insert_on_upserting_secondary| ブール(true/false) | INSERT OR REPLACEをセカンダリインデックスのある表に対して実行する際、INSERTを事前に実行する最適化を実施するか。デフォルトはtrue|開発用のため将来的に削除される可能性あり|
|dev_scan_concurrent_operation_as_not_found| ブール(true/false) | スキャン操作において並列して挿入されたレコードを検知した際(WARN_CONCURRENT_INSERT)に、そのレコードが存在しないものとして取り扱うか。デフォルトはtrue|開発用のため将来的に削除される可能性あり|
|dev_point_read_concurrent_operation_as_not_found| ブール(true/false) | ポイントリード操作において並列して挿入されたレコードを検知した際(WARN_CONCURRENT_INSERT)に、そのレコードが存在しないものとして取り扱うか。デフォルトはtrue|開発用のため将来的に削除される可能性あり|
|dev_compiler_support| 整数 | SQLコンパイラのサポートレベル。0の場合は旧コンパイラを使用、1の場合は新コンパイラを使用する。デフォルトは1|開発用のため将来的に削除/変更される可能性あり|
|lowercase_regular_identifiers| ブール(true/false) | SQLコンパイラがテーブル名などのシンボルを小文字に変換して扱うか。新コンパイラのみ有効。デフォルトはfalse||
|scan_block_size| 整数 | スキャンが他のタスクにスレッドを譲渡する前に処理するレコードの最大数。デフォルトは0(無制限)|開発用のため将来的に削除/変更される可能性あり|

## ipc_endpointセクション

セクション名
Expand Down
Loading