Comments (19)
承知しました。ご回答ありがとうございました。
from tsurugi_fdw.
インストール等に手間取りましたが、aptコマンドでインストールしたPostgreSQL12.14上で実行してみました。
PostgreSQLは正常に起動しましたが、CREATE TABLE
を実行したタイミングでSIGABRT
が発生しています。
環境周りで少し気になるところがありますので、この辺を中心に確認している状況になります。
時間も経ってしまっていますので、一旦現在の状況をご報告させていただきます。
tsurugi=# CREATE TABLE table3 (column1 INTEGER NOT NULL PRIMARY KEY) TABLESPACE tsurugi;
*** Aborted at 1681951607 (unix time) try "date -d @1681951607" if you are using GNU date ***
PC: @ 0x7fcd944ed00b gsignal
*** SIGABRT (@0x7100019b7c) received by PID 105340 (TID 0x7fcd80ef9700) from PID 105340; stack trace: ***
@ 0x7fcd948de631 (unknown)
@ 0x7fcd94f2b420 (unknown)
@ 0x7fcd944ed00b gsignal
@ 0x7fcd944cc859 abort
@ 0x7fcd94bb6926 (unknown)
@ 0x7fcd94be497f ogawayama::bridge::Worker::run()
@ 0x7fcd94bba2ab _ZNSt17_Function_handlerIFSt10unique_ptrINSt13__future_base12_Result_baseENS2_8_DeleterEEvENS1_12_Task_setterIS0_INS1_7_ResultIvEES3_EZNS1_11_Task_stateIZN9ogawayama6bridge8listenerclEvEUlvE_SaIiEFvvEE6_M_runEvEUlvE_vEEE9_M_invokeERKSt9_Any_data
@ 0x7fcd94bbab42 std::__future_base::_State_baseV2::_M_do_set()
@ 0x7fcd94f284df __pthread_once_slow
@ 0x7fcd94bbc05a std::call_once<>()
@ 0x7fcd94bbc271 std::thread::_State_impl<>::_M_run()
@ 0x7fcd9478dde4 (unknown)
@ 0x7fcd94f1f609 start_thread
@ 0x7fcd945c9133 clone
from tsurugi_fdw.
再度環境を作成しなおしたところ、無事成功しました。
お騒がせして申し訳ございませんでした。
[email protected]:~$ psql -d tsurugi
psql (12.14 (Ubuntu 12.14-1.pgdg20.04+1))
Type "help" for help.
tsurugi=# CREATE TABLE table1 (column1 INTEGER NOT NULL PRIMARY KEY) TABLESPACE tsurugi;
CREATE TABLE
tsurugi=# CREATE FOREIGN TABLE table1 (column1 INTEGER NOT NULL) SERVER ogawayama;
CREATE FOREIGN TABLE
tsurugi=# SELECT * FROM table1;
column1
---------
(0 rows)
tsurugi=# INSERT INTO table1(column1) VALUES (100);
INSERT 0 0
tsurugi=# SELECT * FROM table1;
column1
---------
100
(1 row)
from tsurugi_fdw.
PostgreSQL12.14以外での実行結果を以下に示します。
- PostgreSQL13.10 → NG
[2023-04-21 16:18:42 JST] 21677[41]FATAL: could not load library "/usr/lib/postgresql/13/lib/ogawayama_fdw.so": /usr/lib/postgresql/13/lib/ogawayama_fdw.so: undefined symbol: elog_finish
- PostgreSQL14.7 → NG
[2023-04-21 16:25:19 JST] 22319[41]FATAL: could not load library "/usr/lib/postgresql/14/lib/ogawayama_fdw.so": /usr/lib/postgresql/14/lib/ogawayama_fdw.so: undefined symbol: elog_finish
- PostgreSQL15.2 → NG
[2023-04-21 16:32:29 JST] 22668[41]FATAL: could not load library "/usr/lib/postgresql/15/lib/ogawayama_fdw.so": /usr/lib/postgresql/15/lib/ogawayama_fdw.so: undefined symbol: elog_finish
from tsurugi_fdw.
以下のページなどを参照して、照合順序がどのように設定されているか確認してみてください。
https://www.postgresql.jp/document/14/html/sql-expressions.html#SQL-SYNTAX-COLLATE-EXPRS
tsurugi=# show lc_collate;
lc_collate
-------------
en_US.UTF-8
(1 row)
from tsurugi_fdw.
動作検証の結果についてご報告させていただきます。
frontendのビルド環境
- Ubuntu 20.04
- PostgreSQL 12.4
検証結果一覧
# | 結果 | Ubuntu20.04 | Ubuntu22.04 | PostgreSQL 12.14 | PostgreSQL13.10 | PostgreSQL14.7 | PostgreSQL15.2 |
---|---|---|---|---|---|---|---|
1. | 〇 | ✓ | ✓ | ||||
2. | × | ✓ | ✓ | ||||
3. | × | ✓ | ✓ | ||||
4. | × | ✓ | ✓ | ||||
5. | △ | ✓ | ✓ | ||||
6. | - | ✓ | ✓ | ||||
7. | - | ✓ | ✓ | ||||
8. | - | ✓ | ✓ |
検証NGログ
-
(2.) Ubuntu20.04 + PostgreSQL13.10
[2023-04-21 16:18:42 JST] 21677[41]FATAL: could not load library "/usr/lib/postgresql/13/lib/ogawayama_fdw.so": /usr/lib/postgresql/13/lib/ogawayama_fdw.so: undefined symbol: elog_finish
-
(3.) Ubuntu20.04 + PostgreSQL14.7
[2023-04-21 16:25:19 JST] 22319[41]FATAL: could not load library "/usr/lib/postgresql/14/lib/ogawayama_fdw.so": /usr/lib/postgresql/14/lib/ogawayama_fdw.so: undefined symbol: elog_finish
-
(4.) Ubuntu20.04 + PostgreSQL15.2
[2023-04-21 16:32:29 JST] 22668[41]FATAL: could not load library "/usr/lib/postgresql/15/lib/ogawayama_fdw.so": /usr/lib/postgresql/15/lib/ogawayama_fdw.so: undefined symbol: elog_finish
-
(5.) Ubuntu22.04 + PostgreSQL12.14
tsurugi
がUbuntu22.04でビルドできていないため、検証としては参考レベル。psql
にてCREATE TABLE
を実行した結果、oltp
が起動していないためエラーは発生するものの、各メタデータが正常に格納されているため、frontend
としては正常に動作していると考えられる。
from tsurugi_fdw.
こちらになります。
$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
from tsurugi_fdw.
すみません。ちょっと勘違いしていました。
frontendとmetadata-managerは、Ubuntu22.04ではビルドしていません。
frontend、metadata-manager、message-managerは、Ubuntu20.04でビルドしたモジュールになります。
Ubuntu22.04上でビルドを試みていたのは、tsurugi-distributionの一式になります。
※metadata-managerとmessage-managerはこれに含まれますが、これらのビルドに到達する前にエラーで止まっています。
from tsurugi_fdw.
以下の項目を追加。
- UbuntuにデフォルトでインストールされるPostgreSQLでの動作可否
from tsurugi_fdw.
UbuntuにデフォルトでインストールされるPostgreSQLに関して質問させてください。
当方の環境下では標準でインストールされていませんでしたので、再インストールしてみましたがデフォルトではインストールされていませんでした。
Ubuntsuのインストール標準インストールされているPostgreSQLの情報など、何か情報をお持ちであればご教示ください。
※Ubuntuインストール後に、sudo apt install postgresql
を実行すれば12.14(12系最新)のパッケージをインストールできますが、この環境でも同等になるのでしょうか。
from tsurugi_fdw.
※Ubuntuインストール後に、
sudo apt install postgresql
を実行すれば12.14(12系最新)のパッケージをインストールできますが、この環境でも同等になるのでしょうか。
それでOKです。
from tsurugi_fdw.
OKのパターンでmake tests
を実行する。
from tsurugi_fdw.
PostgreSQL12.14の環境下 にて、make tests
を実行してみたところ1件FAILED
となっています。
ログを見る限り、ORDER BY
での大文字小文字の扱いの違いが原因で、期待値は大文字小文字を無視ですが、実績値は大文字→小文字の順となっているためと思われます。
念のためご確認いただけますでしょうか。
※ちなみに、ビルド環境下 (Ubuntu20.04+PostgreSQL12.04) でも同様となりましたので、PostgreSQL12.14固有ではないと認識しています。
$ ../../src/test/regress/pg_regress --inputdir=. --bindir='/usr/lib/postgresql/12/bin' --dbname=contrib_regression test_preparation create_table insert_select_happy update_delete select_statements user_management
(using postmaster on Unix socket, port 5432)
============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries ==============
test test_preparation ... ok 63 ms
test create_table ... ok 2027 ms
test insert_select_happy ... ok 11538 ms
test update_delete ... ok 6342 ms
test select_statements ... FAILED 8319 ms
test user_management ... ok 3763 ms
======================
1 of 6 tests failed.
======================
The differences that caused some tests to fail can be viewed in the
file "/home/vagrant/postgresql-12.4/contrib/frontend/regression.diffs". A copy of the test summary that you see
above is saved in the file "/home/vagrant/postgresql-12.4/contrib/frontend/regression.out".
$ cat regression.diffs
diff -U3 /home/vagrant/postgresql-12.4/contrib/frontend/expected/select_statements.out /home/vagrant/postgresql-12.4/contrib/frontend/results/select_statements.out
--- /home/vagrant/postgresql-12.4/contrib/frontend/expected/select_statements.out 2023-04-25 07:33:07.483279924 +0900
+++ /home/vagrant/postgresql-12.4/contrib/frontend/results/select_statements.out 2023-04-25 14:59:57.368237582 +0900
@@ -325,8 +325,8 @@
c6;
c1 | c2 | c3 | c4 | c5 | c6 | c7
----+----+-----+-----+------+------------+-----
- 5 | 55 | 555 | 5.5 | 5.55 | five | XYZ
4 | | | | | NULL |
+ 5 | 55 | 555 | 5.5 | 5.55 | five | XYZ
1 | 11 | 111 | 1.1 | 1.11 | one | ABC
3 | 33 | 333 | 3.3 | 3.33 | three | ABC
2 | 22 | 222 | 2.2 | 2.22 | two | XYZ
@@ -358,8 +358,8 @@
6;
c1 | c2 | c3 | c4 | c5 | c6 | c7
----+----+-----+-----+------+------------+-----
- 5 | 55 | 555 | 5.5 | 5.55 | five | XYZ
4 | | | | | NULL |
+ 5 | 55 | 555 | 5.5 | 5.55 | five | XYZ
1 | 11 | 111 | 1.1 | 1.11 | one | ABC
3 | 33 | 333 | 3.3 | 3.33 | three | ABC
2 | 22 | 222 | 2.2 | 2.22 | two | XYZ
from tsurugi_fdw.
OKです。
該当のSQLはPostgreSQL用のクエリだと思うので、ORDER句にNULLS FIRSTなどを付けるなどして結果が一定になるように修正をお願いします。
クエリ文は sql/select_statements.sql
にあります。
from tsurugi_fdw.
c6
のカラムには、'NULL'という文字列が入っているようで、NULLS FIRST
ではダメなようです。
expected/select_statements.out
の期待値の順序を入れ替えるなどでも良いものでしょうか。
それともPostgreSQLのデフォルトの設定などでしょうか。
from tsurugi_fdw.
当方の環境ですと、postgres
はC.UTF-8
、tsurugi
はC
となっていました。
※postgres
はインストールしたままのデフォルト状態、tsurugi
はmetadata-manager/sql/ddl.sql
で指定した状態です。
postgres=# show lc_collate;
lc_collate
------------
C.UTF-8
(1 row)
postgres=# \c tsurugi
You are now connected to database "tsurugi" as user "postgres".
tsurugi=# show lc_collate;
lc_collate
------------
C
(1 row)
クエリをSELECT * FROM pt2 ORDER BY c6 COLLATE "en_US";
とすることで行けそうですが、これで良いでしょうか?
from tsurugi_fdw.
OKです。
from tsurugi_fdw.
承知しました。
from tsurugi_fdw.
鬼木さん
Ubuntu22.04でfrontend, metadata-managerをビルドしたgccのバージョンはわかりますか?
(参考)
Tsurugiの都合でUbuntu22.04でもgcc9系でビルドするようになる予定です。
from tsurugi_fdw.
Related Issues (20)
- PostgreSQLと実行エンジン間でのデータ型仕様の相違について検討する
- テーブル名のlowercase/uppercaseの区別について(Minor)
- CIをUbuntu 20.04に移行 HOT 2
- build scriptの更新 #1 HOT 8
- PostgreSQLの起動に失敗する HOT 2
- CREATE TABLEを連続で実行すると失敗することがある HOT 4
- timestamp型データのテーブルが作成できない
- PostgreSQLテーブルとTsurugiテーブルのJOINを実現する
- WHERE句付きSELECT文の実行に失敗する HOT 1
- 文字列型カラムを指定してSELECT文を実行するとSegmentation faultが発生する HOT 1
- ORDER BY付きのSELECT文の実行に失敗する
- JOIN文実行後にSELECT文を実行するとSegmentation faujltが発生する
- 数値型列の値がNULL値の場合に0を返す
- ORDER BYの並べ替え順序がPostgreSQLと異なる
- ORDER BYのデフォルトのNULLS FIRST/LASTがPostgreSQLと異なる HOT 1
- create tableにおいて、float型columnのdataTypeIdが700ではなく701となる HOT 4
- LTx対応 & DDL閉塞実行機能
- Prepared Statement対応
- metadata-managerを更新した環境でfrontendのテストに失敗する HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tsurugi_fdw.