MariaDBにOracle DB互換機能が搭載される 29
ストーリー by hylom
GoogleのJava-API利用ですら訴えたところだからなあ 部門より
GoogleのJava-API利用ですら訴えたところだからなあ 部門より
あるAnonymous Coward曰く、
MariaDB Foundationが5月27日、MariaDB 10.3系で初のstable版となるMariaDB 10.3.7のリリースを発表している(Publickey)。
MariaDB 10.3では新機能はとしてOracle Database互換機能がうたわれており(Changes & Improvements in MariaDB 10.3)、Oracle DB独自の関数や型がサポートされたほか、Oracle DB独自のストアドプロシージャ言語PL/SQLも実行可能となっている。
MariaDBは歴史的経緯からOracleとは対立関係にあるのだろうが、これは訴訟とか大丈夫なのだろうか? ちょっと心配である。
PL/SQLはフェーズ2が実装されてからかな (スコア:2, 興味深い)
MDEV-10142はStatus:CLOSEDでSub-Tasks 1~72 を見たら
基礎的な機能の対応。
MDEV-10764はStatus:OPENでSub-Tasks 1~37
ここまでCLOSEDになると(CLOSEDになって実装完了でいいんだよね?)
SEQUENCEオブジェクトも使えるみたいだし、
言語としては使えそうな感じです。
後は、DBMS_なんちゃら、UTL_なんちゃら等のパッケージがどの程度
使えるのかで移植難易度は変わりますが、I/O関連のものが
そろっていてDATABASE LINK、DIRECTORYオブジェクトが
使えれば、特殊なもの意外は簡単に移植できそうです。
MDEV-10764のSub-TasksにマルチテーブルUPDATE対応とか
あるけど、個人的にはこの機能だけなぜフェーズ2入りに
違和感があってクスっときた。
MySQLから取り込んだだけでしょ (スコア:0, 参考になる)
MySQL 5.5で既にSQL_MODEのOracleが登場してるので、それを取り込んだだけでしょ(マニュアル:SQL_MODE [opensource.srad.jp])
Re: (スコア:0)
英語のMySQL 5.5のSQL_MODEのページ [mysql.com]
かなり拡張されているっぽい (スコア:0)
リンク先を見るに、MySQLのsqlmode=oracleは
とあるので、あくまで基本的な振る舞いだけの話っぽいです。
MariaDBのsqlmode=oracleの説明ページ [mariadb.com]だと、ストアド周りも合わせてきたりと、かなり拡張されている様子。
Re: (スコア:0)
Re:MySQLから取り込んだだけでしょ (スコア:1, 荒らし)
Translating Empty String Literals to NULL
In Oracle, empty string ('') and NULL are the same thing,
By using sql_mode=EMPTY_STRING_IS_NULL you can get a similar experience in MariaDB:
SET sql_mode=EMPTY_STRING_IS_NULL;
SELECT '' IS NULL; -- returns TRUE
INSERT INTO t1 VALUES (''); -- inserts NULL
GUST NOTCH な気分でいこう!
Re: (スコア:0)
それMariaDBのドキュメントじゃね?元コメはMySQLのドキュメントに対して行っているようにみえる。
互換モードって、こんなクソ仕様まで再現しなきゃならんのか中の人も大変だな。
# MySQL/MariaDBもクソ仕様では負けてないけど。
Re: (スコア:0)
つまりどう見ても「取り込んだだけ」ではないってことね。
Re: (スコア:0)
でもそれに依存してる実装がたくさんあるからねぇ
# = (+)も対応してるんだろうか。
Re: (スコア:0)
「MySQLから取り込んだだけでしょう」というのは語弊があります
MySQL は元々はオープンソースでしたが
その後オラクルが買収して,現在はオラクルがサポートしています
現在のMySQLはライセンス含めてもオラクルの都合に合わせて改変されています.
そこでMySQLからMariaDBがフォークして,オラクルの制限を受けないコミュニティが誕生した
という経緯があります
このような経緯があるので
オラクルの成果物を MariaDBに取り込んでしまうと,ライセンスの問題が発生しかねません
ですから「取り込んだだけ」ではなく「ライセンスに配慮して MySQLに取り込んだ」と言うべきですし
今後オラクルから文句を言われる可能性はゼロではありません
Re: (スコア:0)
PL/SQLが動作するということなので、Javaと同様にAPI著作権で訴えられそう、というのは容易に想像できますね。
Re: (スコア:0)
ようするにMySQLは使えない。使うとあとあと面倒ってことですね。
Re: (スコア:0)
MySQLはOracleのものだから大丈夫でしょ。
問題なのはMariaDB。
Re: (スコア:0)
公式サイトを観る限りMySQLのCommunity EditionはGPLって書いてあるけど。
(Javaのライセンスみたいにクラスパス例外とかない、GNUのサイトに載ってるGPLそのもの)
「ライセンス含めて…改変されています」ってのは商用版の機能が別ライセンスになってることを指してんのかな?
そういうのって「改変」って言うもんなの?このSQLMODEとかいうのは別ライセンスで提供されてる機能じゃなくてCommunity版に含むよね?
それに「元々はオープンソースでした」って、GPLなら今もオープンソースなんじゃないの?
事情を知らない人間は書いてあることしか寄る辺ないから、実は違うって言われても困る。
どっかOracleのサイトの隅っこを探せば「これは例外」とか書いてあるのかな。
Re:MySQLから取り込んだだけでしょ (スコア:1)
> GPLなら今もオープンソースなんじゃないの?
ストールマン「GNU GPLはオープンソースライセンスじゃねぇ自由なソフトウェアのライセンスだ!」
Re: (スコア:0)
ライセンスの話で「実は違うって言われて困る」ようなことするつもりなら、
こんな所で匿名のコメントをアテにしないで自分で調べて自分で考えて自分で理解しなきゃダメ!
Re: (スコア:0)
風説を鵜呑みにして口を挟むやつがいると面倒なんだよ
余計な手間が増える
外部結合 (スコア:0)
外部結合のコレ(+)使えるんですかね。
(+)の方がわかりやすいと思ってるので、使えるなら使いたい。
Re: (スコア:0)
(+)の外部結合がわかりやすいってありえん・・・
つか既に廃止の方向になってるというに。
Re: (スコア:0)
・短い
・表現が他と違うのでパッと見区別可能
な点を「わかり易い」と言ってるのでは?
今の規格になるときにムダになげえよ!の意見はあったし。
そして、一つのSQL文=一メソッドと見た場合、保守性悪い長大なメソッドが常識となってる点は問題かと。
コードで長いメソッド書くのはアンチパターンなのにSQLだけは真逆行ってるからね。
Re: (スコア:0)
「保守性悪い長大」がどのようなものを指しておられるか分かりませんが、
SQL文においても、VIEW・FUNCTION・PROCEDURE等で適当なサイズにコードを
分割して実装することは行われていると思いますよ。
外部結合の (+) については SQLServer の * と付加するサイドが逆になっていたのが
紛らわしかったので、廃れる方向でよかったと思う。
データ調査時のその場限りSQLなんかでは(+)使うけどね。
Re: (スコア:0)
SQLServer使われてるトコではありませんが、Oracle+金融保険官公庁はSQLかストアド一つに延々と書く形。
テキストに落とすと一つ数十KBとかね。
データ処理が行フェッチ+ループで一行ずつ処理するCOBOLスタイルですね。
そういうとこはViewは知らん感じでストアドは一つに全部詰め込む為のモノ扱い。
Re: (スコア:0)
whereの条件と混じるし、内部結合はぱっと見抽出条件と見分けつかないし、表現できない外部結合条件があるし、他のRDBMSでは使えないのであんなクソ仕様なくなって当然です。
てかやっと廃止の方向になったのね。
SQLServerは2005ぐらいのときに実質廃止になったのに。
Re: (スコア:0)
(+)は11gから非推奨だったから約10年前?
Re: (スコア:0)
そうか11gでてからそんなに経つのかorz
Re: (スコア:0)
おまいさんのコードメンテさせられる人が不憫
Re:外部結合 (スコア:1)
SQLはコードとは限らず、コマンドの手打ちのこともあるから。
Re: (スコア:0)
ひどい言われようだけど、気持ちはわかる。
とりあえずざっとクエリ書きたいときに(+)使えたら楽なのになーと私もいつも思ってます。
チェック制約 (スコア:0)
あったんだ・・・
真面目に驚いた。