表題のとおり、MariaDB10.3とOracleをconnectエンジンで繋いでみた。
つなぎ方は、odbcかjdbcを使うことで実現できる。
Oracleのクライアント設定とかも必要なので、
ここでは詳細な設定について割愛。
なお、Oracleとの互換性を最大限たかめるため、
SQL_MODE=ORACLE
という、MariaDB10.3で導入されたモードを設定している。
おおよそのデータについては、問題なくconnectエンジン経由で扱えるのだが、
最大の難関は日付けである。
Oracleはtimestamp型を拡張しているため、
MariaDB(MySQL)のtimestamp型とカバー範囲が異なる。
そのため、以下の条件のいずれかの場合において、
connectで持ってきた時に「0000-00-00 00:00:00」という日時になってしまう。
- Oracleのtimestamp型データがMySQLのtimestamp型の範囲外のとき
- Oracleのtimestamp型データがNULLのとき
前者はその通りの話ではあるが、後者のパターンも有り得るのがやっかいである。
しかも、条件句で指定した時は、NULLと認識するくせに、結果セットが変るのである。
これはconnectで自動作成させるテーブル定義上仕方ないことなのであるが。。
その他、BLOB、CLOBなどのバイナリ型が、
connect上はvarcharになるので、このあたりも場合によっては、注意が必要。
以上
コメントがあればどうぞ