【誰もいないから】インメモリDBを作ろう【今のうち】 (30レス)
1-

11: 2014/07/07(月)19:46 ID:YkjIc2l9U(1/2) AAS
落ちてなかった!
やっと仕事が一段落したので作成再開。
selectにしろwhereにしろ一時的なtableを作成するという考え方を採用すると
全てがクリアになります。
joinの前にテーブルのカラムの持ち方とwhereを実装します。
カラムは今までは名前だったけどテーブル名と名前で管理する事にします。
joinしたときとかに区別できるように。後々の演算にも便利。カラム名だけで参照
した場合には、登録順で一番最初にマッチした名前になります。カラムには将来の拡張の
ために数値、文字などのenumも持たせておきます。

あと一応複数のテーブルを扱えるようにDatabaseクラスも用意します。Databaseクラスは
TableクラスのSetです。

whereの実装はカラム名や定数を比較して行毎に比較します。合致していれば元テーブルから
1行コピーするイメージです。カラムは予めカラム名か文字かの比較をしておいてこれを
引数に行ごとにマッチングするかの関数を作ります。将来は文字としての比較演算子>と
数値としての比較演算子>を区別できるように頭の隅っこにはいれておきます。

データベースはインメモリだからちまちま転送するよりもドカンとコピーした方が早い
はずです。だからWhereやSelectもなるべくまとめて転送するようにします。幸いvector
は代入可能なのでこれを最大限に利用します。Joinでは2つのvectorを合体させることで
1行を作るようなうまい処理ができるといいなぁと思っています。

ということで結構改造しましたがギリギリ300行でCreate,Insert,Select,Whereが
実装できました。次回こそJoinやります。

外部リンク:ideone.com
1-
あと 19 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s