CockroachDB に「禰󠄀」を INSERT
TL に「DB に『禰󠄀』を INSERT した際の異体字セレクタ」の話題が流れてきたので、CockroachDB で試してみました。
環境
今回は以下の環境 (Docker を利用したローカルの Secure クラスタ) で検証しています。
バージョン
Ubuntu : 20.04
Docker : 20.10.12
CockroachDB : 21.2.4
Container Image : cockroachdb/cockroach
クラスタ (3匹構成)
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3a847c27d48 cockroachdb/cockroach:v21.2.4 "/cockroach/cockroac…" 11 minutes ago Up 11 minutes 26257/tcp, 127.0.0.1:8083->8080/tcp cockroach-3 7c6036d2172d cockroachdb/cockroach:v21.2.4 "/cockroach/cockroac…" 11 minutes ago Up 11 minutes 26257/tcp, 127.0.0.1:8082->8080/tcp cockroach-2 b8a80a6847e3 cockroachdb/cockroach:v21.2.4 "/cockroach/cockroac…" 11 minutes ago Up 11 minutes 127.0.0.1:26257->26257/tcp, 127.0.0.1:8081->8080/tcp cockroach-1 5f5ea7063316 cockroachdb/cockroach:v21.2.4 "tail -f /dev/null" 11 minutes ago Up 11 minutes 8080/tcp, 26257/tcp cockroach-client
※cockroach-client は sql shell を実行するためのクライアント用コンテナ。
$ docker exec -it cockroach-client bash [root@cockroach-client cockroach]# [root@cockroach-client cockroach]# cockroach node status --certs-dir=certs --host=cockroach-1 id | address | sql_address | build | started_at | updated_at | locality | is_available | is_live -----+-------------------+-------------------+---------+----------------------------+----------------------------+-----------------------------+--------------+---------- 1 | cockroach-1:26257 | cockroach-1:26257 | v21.2.4 | 2022-02-06 11:01:14.758259 | 2022-02-06 11:13:37.299944 | region=region-1,zone=zone-a | true | true 2 | cockroach-2:26257 | cockroach-2:26257 | v21.2.4 | 2022-02-06 11:01:15.701614 | 2022-02-06 11:13:38.253956 | region=region-1,zone=zone-b | true | true 3 | cockroach-3:26257 | cockroach-3:26257 | v21.2.4 | 2022-02-06 11:01:16.204495 | 2022-02-06 11:13:38.742721 | region=region-1,zone=zone-c | true | true (3 rows)
「禰󠄀」を INSERT
root@cockroach-1:26257/defaultdb> CREATE TABLE t0 (c0 STRING); CREATE TABLE Time: 74ms total (execution 73ms / network 0ms) root@cockroach-1:26257/defaultdb> root@cockroach-1:26257/defaultdb> INSERT INTO t0 VALUES ('竈門禰豆子'); INSERT 1 Time: 16ms total (execution 16ms / network 0ms) root@cockroach-1:26257/defaultdb> root@cockroach-1:26257/defaultdb> SELECT * FROM t0; c0 --------------- 竈門禰󠄀豆子 (1 row) Time: 2ms total (execution 1ms / network 0ms)
特に問題なく INSERT / SELECT できました。
CockroachDB の文字コード関連の設定
CREATE DATABASE のページを見ると、CockroachDB の encoding
の設定は UTF-8 のみサポートされる旨の記載がありましたが、扱えるバイト数等の情報は確認できませんでした。
- ドキュメント抜粋
The CREATE DATABASE statement accepts an optional ENCODING clause for compatibility with PostgreSQL, but UTF-8 is the only supported encoding. The aliases UTF8 and UNICODE are also accepted. Values should be enclosed in single quotes and are case-insensitive.
また、SET (session variable) のページに server_encoding
/ client_encoding
の設定の記載がありますが、ORM との互換性を保つために用意されている設定項目のようであり、CockroachDB 自体の文字 (文字コード) の扱いには影響しなさそうな雰囲気でした。
ドキュメント抜粋
Variable name Description Initial value Modify with SET
?client_encoding
(Reserved; exposed only for ORM compatibility.) UTF8
No server_encoding
(Reserved; exposed only for ORM compatibility.) UTF8
Yes
まとめ
特に問題なく「禰󠄀」を INSERT できました。
ただ、ターミナルで「禰」と表示されたり「禰󠄀」と表示されたりする理由がよく分かりませんでした...