You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ar...@apache.org on 2020/07/16 09:10:48 UTC

[metamodel] 03/07: (METAMODEL-1226) Metadata for numeric data types does not include number of digits

This is an automated email from the ASF dual-hosted git repository.

arjansh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metamodel.git

commit 7cf9d5a48f624ec1836d37c2a735c6446effc10e
Author: Tim Kingsbury <ti...@sas.com>
AuthorDate: Tue Jun 30 14:36:15 2020 -0400

    (METAMODEL-1226) Metadata for numeric data types does not include number of digits
---
 .../apache/metamodel/schema/ImmutableColumn.java   | 49 ++++++++++++++++++++--
 .../org/apache/metamodel/schema/MutableColumn.java | 11 +++++
 .../builder/SingleMapColumnSchemaBuilder.java      |  2 +-
 .../create/AbstractCreateTableBuilderTest.java     |  2 +-
 .../org/apache/metamodel/query/FilterItemTest.java |  4 +-
 .../java/org/apache/metamodel/csv/CsvTable.java    |  2 +-
 .../mongo2/MongoDbTableCreationBuilder.java        |  2 +-
 .../mongo3/MongoDbTableCreationBuilder.java        |  2 +-
 8 files changed, 63 insertions(+), 11 deletions(-)

diff --git a/core/src/main/java/org/apache/metamodel/schema/ImmutableColumn.java b/core/src/main/java/org/apache/metamodel/schema/ImmutableColumn.java
index 0a80de0..4feb928 100644
--- a/core/src/main/java/org/apache/metamodel/schema/ImmutableColumn.java
+++ b/core/src/main/java/org/apache/metamodel/schema/ImmutableColumn.java
@@ -47,6 +47,48 @@ public final class ImmutableColumn extends AbstractColumn implements Serializabl
 
     /**
      * Constructs a new {@link ImmutableColumn}.
+     *
+     * @param name
+     *            the name of the column
+     * @param type
+     *            the type of the column
+     * @param table
+     *            the table which the constructed column will pertain to
+     * @param columnNumber
+     *            the column number of the column
+     * @param columnSize
+     *            the size of the column
+     * @param nativeType
+     *            the native type of the column
+     * @param nullable
+     *            whether the column's values are nullable
+     * @param remarks
+     *            the remarks of the column
+     * @param indexed
+     *            whether the column is indexed or not
+     * @param quote
+     *            the quote character(s) of the column
+     * @param primaryKey
+     *            whether the column is a primary key or not
+     */
+    public ImmutableColumn(String name, ColumnType type, Table table, int columnNumber, Integer columnSize,
+                           String nativeType, Boolean nullable, String remarks, boolean indexed, String quote, boolean primaryKey) {
+        this.name = name;
+        this.type = type;
+        this.table = table;
+        this.columnNumber = columnNumber;
+        this.columnSize = columnSize;
+        this.decimalDigits = null;
+        this.nativeType = nativeType;
+        this.nullable = nullable;
+        this.remarks = remarks;
+        this.indexed = indexed;
+        this.quote = quote;
+        this.primaryKey = primaryKey;
+    }
+
+    /**
+     * Constructs a new {@link ImmutableColumn}.
      * 
      * @param name
      *            the name of the column
@@ -58,6 +100,8 @@ public final class ImmutableColumn extends AbstractColumn implements Serializabl
      *            the column number of the column
      * @param columnSize
      *            the size of the column
+     * @param decimalDigits
+     *            number of digits of precision for a numeric type
      * @param nativeType
      *            the native type of the column
      * @param nullable
@@ -151,10 +195,7 @@ public final class ImmutableColumn extends AbstractColumn implements Serializabl
     public Integer getDecimalDigits() {
         return decimalDigits;
     }
-
-    @Override
-    public Integer getDecimalDigits() { return decimalDigits; }
-
+    
     @Override
     public String getNativeType() {
         return nativeType;
diff --git a/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java b/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java
index da7e195..0a0933a 100644
--- a/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java
+++ b/core/src/main/java/org/apache/metamodel/schema/MutableColumn.java
@@ -71,6 +71,17 @@ public class MutableColumn extends AbstractColumn implements Serializable {
     }
 
     public MutableColumn(String name, ColumnType type, Table table, int columnNumber, Integer columnSize,
+                         String nativeType, Boolean nullable, String remarks, boolean indexed, String quote) {
+        this(name, type, table, columnNumber, nullable);
+        setColumnSize(columnSize);
+        setDecimalDigits(null);
+        setNativeType(nativeType);
+        setRemarks(remarks);
+        setIndexed(indexed);
+        setQuote(quote);
+    }
+
+    public MutableColumn(String name, ColumnType type, Table table, int columnNumber, Integer columnSize,
                          Integer decimalDigits, String nativeType, Boolean nullable, String remarks, boolean indexed, String quote) {
         this(name, type, table, columnNumber, nullable);
         setColumnSize(columnSize);
diff --git a/core/src/main/java/org/apache/metamodel/schema/builder/SingleMapColumnSchemaBuilder.java b/core/src/main/java/org/apache/metamodel/schema/builder/SingleMapColumnSchemaBuilder.java
index e7effe8..440f69e 100644
--- a/core/src/main/java/org/apache/metamodel/schema/builder/SingleMapColumnSchemaBuilder.java
+++ b/core/src/main/java/org/apache/metamodel/schema/builder/SingleMapColumnSchemaBuilder.java
@@ -67,7 +67,7 @@ public class SingleMapColumnSchemaBuilder implements SchemaBuilder, DocumentConv
     public MutableSchema build() {
         MutableSchema schema = new MutableSchema(_schemaName);
         MutableTable table = new MutableTable(_tableName, schema);
-        table.addColumn(new MutableColumn(_columnName, ColumnType.MAP, table, 1, null, null, null, false, null, false, null));
+        table.addColumn(new MutableColumn(_columnName, ColumnType.MAP, table, 1, null, null, false, null, false, null));
         schema.addTable(table);
         return schema;
     }
diff --git a/core/src/test/java/org/apache/metamodel/create/AbstractCreateTableBuilderTest.java b/core/src/test/java/org/apache/metamodel/create/AbstractCreateTableBuilderTest.java
index d95a1b0..e108277 100644
--- a/core/src/test/java/org/apache/metamodel/create/AbstractCreateTableBuilderTest.java
+++ b/core/src/test/java/org/apache/metamodel/create/AbstractCreateTableBuilderTest.java
@@ -83,7 +83,7 @@ public class AbstractCreateTableBuilderTest extends TestCase {
         assertFalse(executed.get().booleanValue());
 
         MutableTable likeTable = new MutableTable("blablablabla");
-        likeTable.addColumn(new MutableColumn("foo", ColumnType.VARCHAR, likeTable, 0, 1234, null, "vch", true, null, false,
+        likeTable.addColumn(new MutableColumn("foo", ColumnType.VARCHAR, likeTable, 0, 1234, "vch", true, null, false,
                 null).setPrimaryKey(true));
         likeTable.addColumn(new MutableColumn("bar"));
         likeTable.addColumn(new MutableColumn("baz"));
diff --git a/core/src/test/java/org/apache/metamodel/query/FilterItemTest.java b/core/src/test/java/org/apache/metamodel/query/FilterItemTest.java
index 0eea4e2..ab549b0 100644
--- a/core/src/test/java/org/apache/metamodel/query/FilterItemTest.java
+++ b/core/src/test/java/org/apache/metamodel/query/FilterItemTest.java
@@ -414,7 +414,7 @@ public class FilterItemTest extends TestCase {
     }
 
     public void testInOperandSql() throws Exception {
-        SelectItem selectItem = new SelectItem(new MutableColumn("foo", ColumnType.VARCHAR, null, 1, null, null, null, true,
+        SelectItem selectItem = new SelectItem(new MutableColumn("foo", ColumnType.VARCHAR, null, 1, null, null, true,
                 null, false, null));
         Object operand = new String[] { "foo", "bar" };
         assertEquals("foo IN ('foo' , 'bar')", new FilterItem(selectItem, OperatorType.IN, operand).toSql());
@@ -458,7 +458,7 @@ public class FilterItemTest extends TestCase {
     }
 
     public void testInOperandEvaluate() throws Exception {
-        SelectItem selectItem = new SelectItem(new MutableColumn("foo", ColumnType.VARCHAR, null, 1, null, null, null, true,
+        SelectItem selectItem = new SelectItem(new MutableColumn("foo", ColumnType.VARCHAR, null, 1, null, null, true,
                 null, false, null));
         Object operand = new String[] { "foo", "bar" };
 
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java b/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java
index 45f94c8..5e0081c 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvTable.java
@@ -134,7 +134,7 @@ final class CsvTable extends AbstractTable {
                         : columnNames.get(i);
                 final String columnName = namingSession.getNextColumnName(new ColumnNamingContextImpl(this,
                         intrinsicColumnName, i));
-                final Column column = new MutableColumn(columnName, ColumnType.STRING, this, i, null, null, null, nullable,
+                final Column column = new MutableColumn(columnName, ColumnType.STRING, this, i, null, null, nullable,
                         null, false, null);
                 columns.add(column);
             }
diff --git a/mongodb/mongo2/src/main/java/org/apache/metamodel/mongodb/mongo2/MongoDbTableCreationBuilder.java b/mongodb/mongo2/src/main/java/org/apache/metamodel/mongodb/mongo2/MongoDbTableCreationBuilder.java
index 816078b..c93acf1 100644
--- a/mongodb/mongo2/src/main/java/org/apache/metamodel/mongodb/mongo2/MongoDbTableCreationBuilder.java
+++ b/mongodb/mongo2/src/main/java/org/apache/metamodel/mongodb/mongo2/MongoDbTableCreationBuilder.java
@@ -46,7 +46,7 @@ final class MongoDbTableCreationBuilder extends
 			// all mongo db collections have an _id field as the first field.
 			ImmutableColumn idColumn = new ImmutableColumn("_id",
 					ColumnType.ROWID, table, table.getColumnCount(), null,
-					null, null, null, null, true, null, true);
+					null, null, null, true, null, true);
 			table.addColumn(idColumn);
 		}
 		table.setSchema(schema);
diff --git a/mongodb/mongo3/src/main/java/org/apache/metamodel/mongodb/mongo3/MongoDbTableCreationBuilder.java b/mongodb/mongo3/src/main/java/org/apache/metamodel/mongodb/mongo3/MongoDbTableCreationBuilder.java
index 2f41eee..aaec48e 100644
--- a/mongodb/mongo3/src/main/java/org/apache/metamodel/mongodb/mongo3/MongoDbTableCreationBuilder.java
+++ b/mongodb/mongo3/src/main/java/org/apache/metamodel/mongodb/mongo3/MongoDbTableCreationBuilder.java
@@ -46,7 +46,7 @@ final class MongoDbTableCreationBuilder extends
 			// all mongo db collections have an _id field as the first field.
 			ImmutableColumn idColumn = new ImmutableColumn("_id",
 					ColumnType.ROWID, table, table.getColumnCount(), null,
-					null, null, null, null, true, null, true);
+					null, null, null, true, null, true);
 			table.addColumn(idColumn);
 		}
 		table.setSchema(schema);