package org.beanfuse.db.dialect;
import static java.sql.Types.BIGINT;
import static java.sql.Types.BIT;
import static java.sql.Types.BLOB;
import static java.sql.Types.BOOLEAN;
import static java.sql.Types.CHAR;
import static java.sql.Types.CLOB;
import static java.sql.Types.DATE;
import static java.sql.Types.DOUBLE;
import static java.sql.Types.FLOAT;
import static java.sql.Types.INTEGER;
import static java.sql.Types.NUMERIC;
import static java.sql.Types.SMALLINT;
import static java.sql.Types.TIME;
import static java.sql.Types.TIMESTAMP;
import static java.sql.Types.TINYINT;
import static java.sql.Types.VARBINARY;
import static java.sql.Types.VARCHAR;
public class PostgreSQLDialect extends AbstractDialect {
public PostgreSQLDialect() {
super();
ss = new SequenceSupport();
ss.setQuerySequenceSql("select seqname from sysibm.syssequences");
ss.setNextValSql("select nextval ('{}')");
ss.setSelectNextValSql("nextval ('{}')");
registerColumnType(BOOLEAN, "bool");
registerColumnType(BIT, "bool");
registerColumnType(BIGINT, "int8");
registerColumnType(SMALLINT, "int2");
registerColumnType(TINYINT, "int2");
registerColumnType(INTEGER, "int4");
registerColumnType(CHAR, "char(1)");
registerColumnType(VARCHAR, "varchar($l)");
registerColumnType(FLOAT, "float4");
registerColumnType(DOUBLE, "float8");
registerColumnType(DATE, "date");
registerColumnType(TIME, "time");
registerColumnType(TIMESTAMP, "timestamp");
registerColumnType(VARBINARY, "bytea");
registerColumnType(CLOB, "text");
registerColumnType(BLOB, "oid");
registerColumnType(NUMERIC, "numeric($p, $s)");
}
public String getLimitString(String sql, boolean hasOffset) {
return new StringBuffer(sql.length() + 20).append(sql).append(
hasOffset ? " limit ? offset ?" : " limit ?").toString();
}
}