[teiid-commits] teiid SVN: r4403 - in trunk/engine/src: test/java/org/teiid/query/metadata and 1 other directory.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Thu Sep 6 07:18:07 EDT 2012
Author: shawkins
Date: 2012-09-06 07:18:06 -0400 (Thu, 06 Sep 2012)
New Revision: 4403
Modified:
trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java
trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java
Log:
TEIID-2187 switching to always use the constraint form in ddl and adding options
Modified: trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java 2012-09-06 10:59:21 UTC (rev 4402)
+++ trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java 2012-09-06 11:18:06 UTC (rev 4403)
@@ -30,6 +30,7 @@
import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.regex.Pattern;
import org.teiid.adminapi.Admin.SchemaObjectType;
@@ -154,7 +155,7 @@
else {
buffer.append(COMMA);
}
- visit(c, table);
+ visit(c);
}
buildContraints(table);
buffer.append(NEWLINE);
@@ -235,7 +236,7 @@
KeyRecord pk = table.getPrimaryKey();
if (pk != null) {
- addConstraint("PK", PRIMARY_KEY, pk); //$NON-NLS-1$
+ addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$
}
addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE);
@@ -243,28 +244,26 @@
for (int i = 0; i < table.getForeignKeys().size(); i++) {
ForeignKey key = table.getForeignKeys().get(i);
- addConstraint("FK" + i, FOREIGN_KEY, key); //$NON-NLS-1$
+ addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$
buffer.append(SPACE).append(REFERENCES);
if (key.getReferenceTableName() != null) {
buffer.append(SPACE).append(key.getReferenceTableName());
}
buffer.append(SPACE);
addNames(buffer, key.getReferenceColumns());
+ appendOptions(key);
}
}
private void addConstraints(List<KeyRecord> constraints, String defaultName, String type) {
for (int i = 0; i < constraints.size(); i++) {
KeyRecord constraint = constraints.get(i);
- addConstraint(defaultName + i, type, constraint);
+ addConstraint(defaultName + i, type, constraint, true);
}
}
private void addConstraint(String defaultName, String type,
- KeyRecord constraint) {
- if (constraint.getType() != KeyRecord.Type.AccessPattern && constraint.getColumns().size() <= 1) {
- return;
- }
+ KeyRecord constraint, boolean addOptions) {
buffer.append(COMMA).append(NEWLINE).append(TAB);
boolean nameMatches = defaultName.equals(constraint.getName());
if (!nameMatches) {
@@ -272,6 +271,9 @@
}
buffer.append(type);
addColumns(buffer, constraint.getColumns(), false);
+ if (addOptions) {
+ appendOptions(constraint);
+ }
}
private void addColumns(StringBuilder builder, List<Column> columns, boolean includeType) {
@@ -309,7 +311,7 @@
}
}
- private void visit(Column column, Table table) {
+ private void visit(Column column) {
buffer.append(NEWLINE).append(TAB);
appendColumn(buffer, column, true, true);
@@ -317,32 +319,6 @@
buffer.append(SPACE).append(AUTO_INCREMENT);
}
- KeyRecord pk = table.getPrimaryKey();
- if (pk != null && pk.getColumns().size() == 1) {
- Column c = pk.getColumns().get(0);
- if (column.equals(c)) {
- buffer.append(SPACE).append(PRIMARY_KEY);
- }
- }
-
- for (KeyRecord key:table.getUniqueKeys()) {
- if (key != null && key.getColumns().size() == 1) {
- Column c = key.getColumns().get(0);
- if (column.equals(c)) {
- buffer.append(SPACE).append(UNIQUE);
- }
- }
- }
-
- for (KeyRecord key:table.getIndexes()) {
- if (key != null && key.getColumns().size() == 1) {
- Column c = key.getColumns().get(0);
- if (column.equals(c)) {
- buffer.append(SPACE).append(INDEX);
- }
- }
- }
-
appendDefault(column);
// options
@@ -460,9 +436,21 @@
addOption(options, DISTINCT_VALUES, column.getDistinctValues());
}
- if (!column.getProperties().isEmpty()) {
- for (String key:column.getProperties().keySet()) {
- addOption(options, key, column.getProperty(key, false));
+ buildOptions(column, options);
+ }
+
+ private void appendOptions(AbstractMetadataRecord record) {
+ StringBuilder options = new StringBuilder();
+ buildOptions(record, options);
+ if (options.length() != 0) {
+ buffer.append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN);
+ }
+ }
+
+ private void buildOptions(AbstractMetadataRecord record, StringBuilder options) {
+ if (!record.getProperties().isEmpty()) {
+ for (Map.Entry<String, String> entry:record.getProperties().entrySet()) {
+ addOption(options, entry.getKey(), entry.getValue());
}
}
}
Modified: trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java 2012-09-06 10:59:21 UTC (rev 4402)
+++ trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java 2012-09-06 11:18:06 UTC (rev 4403)
@@ -44,12 +44,17 @@
public void testForeignTable() throws Exception {
String ddl = "CREATE FOREIGN TABLE G1 (\n" +
- " e1 integer PRIMARY KEY,\n" +
- " e2 string(10) UNIQUE,\n" +
- " e3 date NOT NULL UNIQUE,\n" +
+ " e1 integer,\n" +
+ " e2 string(10),\n" +
+ " e3 date NOT NULL,\n" +
" e4 bigdecimal(12,3),\n" +
- " e5 integer AUTO_INCREMENT INDEX OPTIONS (UUID 'uuid', NAMEINSOURCE 'nis', SELECTABLE false),\n" +
- " e6 string INDEX DEFAULT 'hello'\n" +
+ " e5 integer AUTO_INCREMENT OPTIONS (UUID 'uuid', NAMEINSOURCE 'nis', SELECTABLE false),\n" +
+ " e6 string DEFAULT 'hello',\n" +
+ " PRIMARY KEY(e1),\n" +
+ " UNIQUE(e2),\n" +
+ " UNIQUE(e3),\n" +
+ " INDEX(e5),\n" +
+ " INDEX(e6)\n" +
") OPTIONS (ANNOTATION 'Test Table', CARDINALITY '12', FOO 'BAR', UPDATABLE 'true', UUID 'uuid2');";
MetadataFactory mf = new MetadataFactory("test", 1, "model", TestDDLParser.getDataTypes(), new Properties(), null);
@@ -110,12 +115,12 @@
@Test
public void testConstraints2() throws Exception {
String ddl = "CREATE FOREIGN TABLE G1( e1 integer, e2 varchar, e3 date, " +
- "ACCESSPATTERN(e1), UNIQUE(e1), ACCESSPATTERN(e2, e3))";
+ "ACCESSPATTERN(e1), UNIQUE(e1) options (x true), ACCESSPATTERN(e2, e3))";
String expected = "CREATE FOREIGN TABLE G1 (\n" +
- " e1 integer UNIQUE,\n" +
+ " e1 integer,\n" +
" e2 string,\n" +
" e3 date,\n" +
- " ACCESSPATTERN(e1),\n ACCESSPATTERN(e2, e3)\n" +
+ " ACCESSPATTERN(e1),\n ACCESSPATTERN(e2, e3),\n UNIQUE(e1) OPTIONS (x 'true')\n" +
");";
helpTest(ddl, expected);
}
More information about the teiid-commits
mailing list