You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by th...@apache.org on 2002/09/23 18:53:25 UTC
cvs commit: jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder PostgreSqlBuilder.java
thorhauer 2002/09/23 09:53:24
Modified: sql/src/java/org/apache/commons/sql/builder
PostgreSqlBuilder.java
Log:
- adding support for postgres oid type since they dont support blob or varbinary
- fixing serial column creation so that postgres takes care of most of the work
Revision Changes Path
1.2 +53 -3 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/PostgreSqlBuilder.java
Index: PostgreSqlBuilder.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/PostgreSqlBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PostgreSqlBuilder.java 20 Sep 2002 20:50:51 -0000 1.1
+++ PostgreSqlBuilder.java 23 Sep 2002 16:53:24 -0000 1.2
@@ -58,6 +58,7 @@
package org.apache.commons.sql.builder;
+import org.apache.commons.sql.model.Column;
import java.io.IOException;
/**
@@ -74,6 +75,55 @@
}
protected void printAutoIncrementColumn() throws IOException {
- print( "DEFAULT NEXTVAL('serial')" );
+ print(" ");
+ print("serial");
+ print(" ");
+
+ }
+
+ /**
+ * Outputs the DDL to add a column to a table.
+ */
+ public void createColumn(Column column) throws IOException {
+ this.column = column;
+ print(column.getName());
+ print(" ");
+ if (column.isAutoIncrement()) {
+ printAutoIncrementColumn();
+ }
+ else
+ {
+
+ print(getSqlType(column));
+ print(" ");
+
+ if (column.getDefaultValue() != null)
+ {
+ print("DEFAULT '" + column.getDefaultValue() + "' ");
+ }
+ if (column.isRequired()) {
+ printNotNullable();
+ }
+ else {
+ printNullable();
+ }
+ print(" ");
+ }
}
+
+ /**
+ * @return the full SQL type string including the size
+ */
+ protected String getSqlType(Column column) {
+
+ if (column.getTypeString().equalsIgnoreCase("VARBINARY"))
+ {
+ return "OID";
+ }
+ else
+ {
+ return column.getTypeString();
+ }
+ }
+
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: cvs commit: jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder PostgreSqlBuilder.java
Posted by Tim Anderson <ti...@intalio.com>.
This is the sort of change I would like to see avoided -
commons-sql will end up full of *Builder classes which work for
one version of a database, and not another. What happens if the next release
of postgres supports varbinary?
What I am aiming at with the proposal described in
http://www.mail-archive.com/commons-dev%40jakarta.apache.org/msg08742.html
should eventually avoid the need for this.
Ideally, all vendor specific features should be described in XML:
. there is only one main concrete SqlBuilder implementation
. SqlBuilderFactory supplies the configuration to the SqlBuilder
based on a database name, and optionally, version.
. removes the need for users to create and register *Builder implementations
for vendor X - instead, all that is required is a configuration to be
located in /META-INF/<vendor x> which will by dynamically discovered and
loaded
by SqlBuilderFactory
I'll modify my proposal and send out an updated version towards the end of
the
week, but I'd appreciate feedback on the existing implementation.
Regards,
Tim
> -----Original Message-----
> From: thorhauer@apache.org [mailto:thorhauer@apache.org]
> Sent: Tuesday, September 24, 2002 2:53 AM
> To: jakarta-commons-sandbox-cvs@apache.org
> Subject: cvs commit:
> jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder
> PostgreSqlBuilder.java
>
>
> thorhauer 2002/09/23 09:53:24
>
> Modified: sql/src/java/org/apache/commons/sql/builder
> PostgreSqlBuilder.java
> Log:
> - adding support for postgres oid type since they dont support
> blob or varbinary
>
> - fixing serial column creation so that postgres takes care of
> most of the work
>
> Revision Changes Path
> 1.2 +53 -3
> jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builde
r/PostgreSqlBuilder.java
>
> Index: PostgreSqlBuilder.java
> ===================================================================
> RCS file:
> /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/
sql/builder/PostgreSqlBuilder.java,v
> retrieving revision 1.1
> retrieving revision 1.2
> diff -u -r1.1 -r1.2
> --- PostgreSqlBuilder.java 20 Sep 2002 20:50:51 -0000 1.1
> +++ PostgreSqlBuilder.java 23 Sep 2002 16:53:24 -0000 1.2
> @@ -58,6 +58,7 @@
>
> package org.apache.commons.sql.builder;
>
> +import org.apache.commons.sql.model.Column;
> import java.io.IOException;
>
> /**
> @@ -74,6 +75,55 @@
> }
>
> protected void printAutoIncrementColumn() throws IOException {
> - print( "DEFAULT NEXTVAL('serial')" );
> + print(" ");
> + print("serial");
> + print(" ");
> +
> + }
> +
> + /**
> + * Outputs the DDL to add a column to a table.
> + */
> + public void createColumn(Column column) throws IOException {
> + this.column = column;
> + print(column.getName());
> + print(" ");
> + if (column.isAutoIncrement()) {
> + printAutoIncrementColumn();
> + }
> + else
> + {
> +
> + print(getSqlType(column));
> + print(" ");
> +
> + if (column.getDefaultValue() != null)
> + {
> + print("DEFAULT '" + column.getDefaultValue() + "' ");
> + }
> + if (column.isRequired()) {
> + printNotNullable();
> + }
> + else {
> + printNullable();
> + }
> + print(" ");
> + }
> }
> +
> + /**
> + * @return the full SQL type string including the size
> + */
> + protected String getSqlType(Column column) {
> +
> + if (column.getTypeString().equalsIgnoreCase("VARBINARY"))
> + {
> + return "OID";
> + }
> + else
> + {
> + return column.getTypeString();
> + }
> + }
> +
> }
>
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>