S2JDBC用のTeradataDialect調査
中の人はstandardDialectで問題ないって言ってたけど、折角だからそれっぽく作ってみる。
2008-07-29追記
convertGetCountSql | order by句対策が必要 |
convertLimitSql | distinct, order by句対策が必要 |
getDefaultGenerationType | GenerationType#IDENTITY |
getIdentitySelectString | null(default) |
isInsertIdentityColumn | false(default) |
isUniqueConstraintViolation | ベンダーコード= |
needsParameterForResultSet | false(default)。複数ResultSetはどうするんだろう? |
supportsCursor | true(default) |
supportsForUpdate | 常にfalse |
supportsGetGeneratedKeys | true |
supportsIdentity | true |
supportsLimit | true |
supportsLockHint | false(default) |
supportsOffset | false |
supportsOffsetWithoutLimit | false(default) |
supportsOuterJoinForUpdate | false |
supportsSequence | false(default) |
- SEQUENCE, FOR UPDATE文は無し。*2
- TOP句はあるけど、OFFSETに対応するものは無し。
- TOPとDISTINCTは併用不可。
- ORDER BY句はサブクエリーに適用不可。
TOPとDISTINCTは同じレベルで書けないだけみたいです。
select distinct * from emp order by id
を、こんな感じに書き換えれば問題ありませんでした。(nはlimit + offset)
select top n * from (select distinct * from emp) temp_ order by id
*1:2008-10-12追記。PIとSI(Unique制約等)でエラーコードが異なる。2802はどういうタイミングで発生するか不明ですが、やはり一意制約違反の模様。
*2:ただし、java.sql.DatabaseMetaData#supportsSelectForUpdate()はtrue