AWS EC2上に作成されたAmazon Linux 2023 + MariaDB 10.5の環境から、同じネットワーク内にある他DBMSを参照する(OracleでいうところのDBLINK、SQL Serverでいうところのリンクサーバー)のが思ったより大変だったので備忘録として残しておく。
FEDERATEDエンジンを当たるも空振り
まず適当に「MariaDB DBLINK」などとWeb検索すると、こういう記事が見つかった。
mysql/mariadb外部表(DBLINK,FEDERATED)の利用方法 #MySQL8.0 - Qiita
詳しくはよくわからないが、
MariaDB > create table dummyTable (id int ,name varchar(255))
-> ENGINE=FEDERATED
-> default charset=utf8
-> CONNECTION='mysql://xxxx:xxxx@xxxxx/xxxxxx/dummyTable';
という書き方をすればDBLINKに相当することが実現できるらしい・・・?
が、何度やっても上手く行かない。というか「mysql://」スキーマにOracleのIPアドレスを入れたところで動く気がしない。
「ENGINE=FEDERATED」と書かれているとおり、これは「Federatedエンジン」を使用して外部テーブルにアクセスする仕組みのようだ。
今の車を中古で買ったときにサービスで付けてもらったETC車載器の調子が悪い。
初めはETCゲートを通過できたりできなかったり不安定だったが、段々と反応すらしなくなり、遂に電源が入らなくなった。
元々販売店で要らなくなった物をオマケで付けてくれたもので、当然ながら中古品。
古いから仕方がないかなぁと思っていたけど、調べてみたらヒューズ切れの可能性があるらしい。
PowerbuilderとNullの扱い
PowerScriptやDatawindow式では、式や関数の引数にNull値が含まれると、結果は全てNullになる。
これは結構陥りやすい罠なので要注意。
Most functions that have a null value for any argument return null. Any expression that has a variable with a null value results in null.
引数にNULL値を持つ関数のほとんどはNULLを返します。NULL値を持つ変数を持つ式はすべてNULLになります。
A boolean expression that is null is considered undefined and therefore false.
nullである論理式は未定義とみなされ、したがって偽となります。
SyBooks Online (Archive)
つまり「どこか一つでもNullが入ると全部Nullが返ってくる」と考えた方がいい。Nullチェック重要。
データウィンドウ絡みでよく使うメソッド解説がいくつか集まったので記事化することに。
ここを結構参考にしたような気がする。
Powerbuilderのデータウィンドウ関連イベントの中でも便利なものをいくつか紹介する。
DWがテーブルへINSERT/UPDATE/DELETEした件数の取得
各DWの「UpdateEnd」イベントにて以下の情報を受け取ることができる。
追加行数はrowsinserted、更新行数はrowsupdated、削除行数はrowsdeletedから取得できる。
// 処理 : UpdateEnd event
messagebox("ROW COUNT: INSERTED, UPDATED, DELETED", String(rowsinserted) + " " + String(rowsupdated) + " " + String(rowsdeleted))
データベースへ追加・更新・削除処理を行った後、処理結果件数を確認したい時に便利。