MoodleというCMSのプラグインを作ってて思ったこと

Moodleというeラーニング特化型のCMSのプラグイン開発を受注しまして、いろいろと弄ってました。

該当の開発に使ってるバージョンは古くて1.7で今のバージョンで改善されているかわかりませんがDB周りのAPIがひどいこと。。。

特にget_records_sql()関数は、SELECT文でDBに問い合わせすれば結果のレコードを返してくれるものなんです。
結果が0件のときは空の配列ではなくfalseが帰ってきます。
そして、1件以上の結果があるときは、配列ではなく、問い合わせたSQLの最初のフィールドの値をキーにした連想配列が帰ってきます。
これのなにが困るって

オートインクリメントフィールドが不要なテーブルやUNIONをつかって他のテーブルと結合した時に
最初のフィールドがキーになるため、キーが重複したら最後のキーのレコードしか取れないこと。

なんでこんな仕様なんだ。。。