You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by lo...@apache.org on 2016/11/01 08:41:20 UTC
metamodel git commit: METAMODEL-1127: Fixed setting of null Map on
postgres Fixes apache/metamodel#135
Repository: metamodel
Updated Branches:
refs/heads/master c32a2bb44 -> 11710afe2
METAMODEL-1127: Fixed setting of null Map on postgres
Fixes apache/metamodel#135
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/11710afe
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/11710afe
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/11710afe
Branch: refs/heads/master
Commit: 11710afe2d92d816a5cf850eb87a19e6e3af4ee1
Parents: c32a2bb
Author: Kasper S�rensen <i....@gmail.com>
Authored: Tue Nov 1 09:04:33 2016 +0100
Committer: Dennis Du Kr�ger <de...@humaninference.com>
Committed: Tue Nov 1 09:04:33 2016 +0100
----------------------------------------------------------------------
CHANGES.md | 3 +-
.../jdbc/dialects/AbstractQueryRewriter.java | 2 +-
.../jdbc/dialects/DefaultQueryRewriter.java | 4 ++
.../jdbc/dialects/PostgresqlQueryRewriter.java | 6 ++-
.../dialects/PostgresqlQueryRewriterTest.java | 49 ++++++++++++++++++++
5 files changed, 60 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/11710afe/CHANGES.md
----------------------------------------------------------------------
diff --git a/CHANGES.md b/CHANGES.md
index 236602e..0ee551c 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -10,7 +10,8 @@
* [METAMODEL-1119] - Worked around Hive JDBC driver issues, avoiding non-compliant metadata calls.
* [METAMODEL-1123] - Fixed the treatment of a Salesforce.com 'currency' value as a number, not a string.
* [METAMODEL-1124] - Fixed the date formatting of date values in MS SQL server.
-
+ * [METAMODEL-1127] - Fixed setting of null Map on postgres
+
### Apache MetaModel 4.5.4
* [METAMODEL-1099] - Created a new DataContextFactory SPI and a extensible registry of implementations based on ServiceLoader.
http://git-wip-us.apache.org/repos/asf/metamodel/blob/11710afe/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/AbstractQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/AbstractQueryRewriter.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/AbstractQueryRewriter.java
index 5ce4445..98c8369 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/AbstractQueryRewriter.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/AbstractQueryRewriter.java
@@ -63,7 +63,7 @@ import org.slf4j.LoggerFactory;
*/
public abstract class AbstractQueryRewriter implements IQueryRewriter {
- protected final Logger logger = LoggerFactory.getLogger(getClass());
+ private static final Logger logger = LoggerFactory.getLogger(AbstractQueryRewriter.class);
private final JdbcDataContext _dataContext;
http://git-wip-us.apache.org/repos/asf/metamodel/blob/11710afe/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DefaultQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DefaultQueryRewriter.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DefaultQueryRewriter.java
index fcefb9f..0dec7c1 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DefaultQueryRewriter.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/DefaultQueryRewriter.java
@@ -41,12 +41,16 @@ import org.apache.metamodel.query.SelectItem;
import org.apache.metamodel.query.SumAggregateFunction;
import org.apache.metamodel.schema.ColumnType;
import org.apache.metamodel.util.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Generic query rewriter that adds syntax enhancements that are only possible
* to resolve just before execution time.
*/
public class DefaultQueryRewriter extends AbstractQueryRewriter {
+
+ private static final Logger logger = LoggerFactory.getLogger(DefaultQueryRewriter.class);
private static final String SPECIAL_ALIAS_CHARACTERS = "- ,.|*%()!#�/\\=?;:~";
private static final Set<Class<? extends FunctionType>> SUPPORTED_FUNCTION_CLASSES = new HashSet<>(
http://git-wip-us.apache.org/repos/asf/metamodel/blob/11710afe/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriter.java b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriter.java
index 531306f..7fe03cb 100644
--- a/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriter.java
+++ b/jdbc/src/main/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriter.java
@@ -83,7 +83,9 @@ public class PostgresqlQueryRewriter extends LimitOffsetQueryRewriter {
case "json":
case "jsonb":
assert column.getType() == ColumnType.MAP;
- if (value != null) {
+ if (value == null) {
+ st.setObject(valueIndex, null);
+ } else {
final PGobject pgo = new PGobject();
pgo.setType(column.getNativeType());
if (value instanceof Map) {
@@ -96,8 +98,8 @@ public class PostgresqlQueryRewriter extends LimitOffsetQueryRewriter {
pgo.setValue(value.toString());
}
st.setObject(valueIndex, pgo);
- return;
}
+ return;
}
super.setStatementParameter(st, valueIndex, column, value);
}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/11710afe/jdbc/src/test/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriterTest.java
----------------------------------------------------------------------
diff --git a/jdbc/src/test/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriterTest.java b/jdbc/src/test/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriterTest.java
new file mode 100644
index 0000000..d7ecb3a
--- /dev/null
+++ b/jdbc/src/test/java/org/apache/metamodel/jdbc/dialects/PostgresqlQueryRewriterTest.java
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.metamodel.jdbc.dialects;
+
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import org.apache.metamodel.schema.Column;
+import org.apache.metamodel.schema.ColumnType;
+import org.apache.metamodel.schema.MutableColumn;
+import org.easymock.EasyMock;
+import org.junit.Test;
+
+public class PostgresqlQueryRewriterTest {
+
+ @Test
+ public void testInsertNullMap() throws SQLException {
+ final PreparedStatement statementMock = EasyMock.createMock(PreparedStatement.class);
+
+ final PostgresqlQueryRewriter queryRewriter = new PostgresqlQueryRewriter(null);
+ final Column column = new MutableColumn("col").setType(ColumnType.MAP).setNativeType("jsonb");
+ final Object value = null;
+
+ // mock behaviour recording
+ statementMock.setObject(0, null);
+
+ EasyMock.replay(statementMock);
+
+ queryRewriter.setStatementParameter(statementMock, 0, column, value);
+
+ EasyMock.verify(statementMock);
+ }
+}