<Jetplume>ようやく、OUTER JOIN の問題を解決できたっぽい。HSQLのChangelogを見ていたら、1.7.2でJOIN周りを変更したとあった。というわけで、1.7.3.3へバージョンアップしたら、動いた。あとで、コミットしておこう。とりあえず、一安心かな。まぁ、バージョンアップによる、regression がないかみないとは、いけないと思うが。
Jetplume
<Jetplume>GraffitoがHSQLですべてのフォルダを返してくる問題を調べているが、どうやら、原因は、OUTER JOINを使っていることにありそうだ。フォルダの場合、
SELECT A0.CLASS_NAME,A0.LINK_TARGET_ID,A0.VERSION_NUM,A0.OBJECT_ID,A0.DELTA,A0.LANGUAGE,A0.PARENT_ID,A0.CREATION_DATE,A0.IS_LAST_VERSION,A0.TITLE,A0.CONTENT_ID,A0.NAME,A0.DESCRIPTION,A0.URI,A0.CONTENT_TYPE,A0.OWNER,A0.CONTENT_SIZE FROM CMS_OBJECT A0 LEFT OUTER JOIN CMS_OBJECT A1 ON A0.PARENT_ID=A1.OBJECT_ID WHERE ( A1.URI = ‘/graffito/site1’) AND (A0.CLASS_NAME = ‘org.apache.portals.graffito.model.impl.FolderImpl’)
を発行しているが、ドキュメントの場合は、
SELECT A0.CLASS_NAME,A0.LINK_TARGET_ID,A0.VERSION_NUM,A0.OBJECT_ID,A0.DELTA,A0.LANGUAGE,A0.PARENT_ID,A0.CREATION_DATE,A0.IS_LAST_VERSION,A0.CONTENT_ID,A0.TITLE,A0.NAME,A0.DESCRIPTION,A0.URI,A0.CONTENT_TYPE,A0.OWNER,A0.CONTENT_SIZE FROM CMS_OBJECT A0 INNER JOIN CMS_OBJECT A1 ON A0.PARENT_ID=A1.OBJECT_ID WHERE ( A1.URI = ‘/graffito/site1/category2’) AND (A0.CLASS_NAME = ‘org.apache.portals.graffito.model.impl.DocumentImpl’)
が発行されている。Graffitoが悪いのか、HSQLのバグなのか・・・。調べないとわからん。
<HSQL>MySQLでも同じものを発行してみたら、普通に期待通りの動きをしている。つまり、HSQLの問題の気がする。そもそもA1.URI = ‘/graffito/site1’という条件があるのに、nullに対してもマッチするのが意味不明。仕様なのか、バグなのか・・・。というか、バグだろう・・・。
Jetplume
<Jetplume>HSQLを利用しているときに、OJBでフォルダを正しくとれない Graffitoの問題を調査。しかし、いまいち、OJBを理解していないので、原因もよくわからん。これは、まず、OJBを学習する必要がありそうだ・・・。
<Graffito>FileSystemContentStore みたいなものがあった。これを使えば、コンテンツをファイルシステムに置くことができるのだろうか。それなら、興味深いな。