Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

SQLDialect

SQLDialect(「Dialect」は「方言」という意味)は InterBase / Firebird? でシステムのバージョンを指定するもの。

SQLDialect には現在(2004-11-08)のところ1〜3があります。1は旧バージョンで、3が現在のバージョンです。

(1)Dialect による基本的な違いとして説明されているのは下の表のとおりですが、他にもありそうです。

http://firebird.sourceforge.net/index.php?op=faq

How do the SQL dialects differ?
From Dave Schnepper:

SQL Item      Dialect 3  Dialect 2 *         Dialect 1 **
DATE        Date only  ERROR Message        Date & Time (Timestamp)
TIMESTAMP     Timestamp  Timestamp          Timestamp (v.6.x only)
TIME        Time only  Error message?       Error message
"<quoted item>"  Symbol only Error message        String
Precision: 1/3 =  0 (exact)  0 (with warning?)      0.3333333... (double precision)
NUMERIC(11,*)   64 bit int  64 bit int (with warning?) double precision

(2)テーブル名の指定が、Dialect=1 では大文字でも小文字でも同一視されるが、Dialect=3 ではすべて大文字で書かなければならない。(小文字で作っても大文字に変換され、大文字でないとアクセスできない)。

(3)上の説明にもかかわらず、Apollo では dialect=3 では date型が使えない。(おそらく、ドライバが dialect=1 を想定していて Phi::DateTime に変換しようとしてエラーになる)。

(4)"<quoted item>" の引用符の扱いが微妙に違っています。「"」か「'」かで意味が違うようになったはずです。(SQLの規格自体が変ったため)。


Dialectの違いによるエラーが報告された例:

http://www.freeml.com/message/ap-list@freeml.com/0003284

Last modified:2004/11/08 13:58:16
Keyword(s):
References:[InterBase]