Why Nostr? What is Njump?
2023-10-07 08:19:31

ruto on Nostr: Tsurugi ...

Tsurugi (劔)よくわからない。LTXの仕様がドキュメント化されていなくて(解説本には書いてあるかも)、それっぽいコードを実行したら普通にwrite skewが起きた。使い方が悪いのかもしれない。
次のSQLを実行した場合、serializableでないのでどちらかはCOMMITできないはずだけど、なぜかコミットできる。


```sql
-- 準備

CREATE TABLE test (
id int PRIMARY KEY,
value int NOT NULL
);

INSERT INTO test (id, value) VALUES (1, 1);

COMMIT;


-- transaction 1
BEGIN LONG TRANSACTION WRITE PRESERVE test;

-- 本来は
-- INSERT INTO test (id, value) VALUES (2, SELECT SUM(VALUE) + 1 FROM test);
-- と書きたいが、まだサポートされていないので、クライアント側でSELECT結果をINSERTに渡しているものとする。

SELECT SUM(value) + 1 FROM test;
INSERT INTO test (id, value) VALUES (2, 2);

-- transaction 2 (別の接続で実行する)
BEGIN LONG TRANSACTION WRITE PRESERVE test;

SELECT SUM(value) + 1 FROM test;
INSERT INTO test (id, value) VALUES (3, 2);

-- transaction 1に戻る

COMMIT;

-- transaction 2に戻る

COMMIT;
```
Author Public Key
npub19zyfvxjkfcyqml344k8uv5tmjgxjlnft0qcvw0mu870j4whfp65sq5sfxh