Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 76B2B200B4F for ; Tue, 26 Jul 2016 08:56:13 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 756FB160A75; Tue, 26 Jul 2016 06:56:13 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8B329160A56 for ; Tue, 26 Jul 2016 08:56:12 +0200 (CEST) Received: (qmail 83579 invoked by uid 500); 26 Jul 2016 06:56:11 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 83569 invoked by uid 99); 26 Jul 2016 06:56:11 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Jul 2016 06:56:11 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8E216E69FC; Tue, 26 Jul 2016 06:56:11 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.apache.org Date: Tue, 26 Jul 2016 06:56:11 -0000 Message-Id: <435e0924d7ec434a965943ff4f7cd1c8@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [01/14] ignite git commit: IGNITE-3389 metadata result set throws NPE when closed - fixed archived-at: Tue, 26 Jul 2016 06:56:13 -0000 Repository: ignite Updated Branches: refs/heads/ignite-3300 7ca0d8d59 -> 93899a01c IGNITE-3389 metadata result set throws NPE when closed - fixed Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7fb03c7c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7fb03c7c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7fb03c7c Branch: refs/heads/ignite-3300 Commit: 7fb03c7ca0e4f64ff1629404f0b34d3d7a6e2bf1 Parents: 6c5218f Author: Alexandre Boudnik Authored: Fri Jul 22 18:40:47 2016 +0300 Committer: agura Committed: Fri Jul 22 19:27:42 2016 +0300 ---------------------------------------------------------------------- .../internal/jdbc2/JdbcMetadataSelfTest.java | 63 ++++++++++++++------ .../ignite/jdbc/JdbcMetadataSelfTest.java | 18 ++++++ .../ignite/internal/jdbc2/JdbcResultSet.java | 2 +- 3 files changed, 64 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7fb03c7c/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java old mode 100644 new mode 100755 index f601dbc..7184b8d --- a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java +++ b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcMetadataSelfTest.java @@ -17,24 +17,33 @@ package org.apache.ignite.internal.jdbc2; -import org.apache.ignite.*; -import org.apache.ignite.cache.affinity.*; -import org.apache.ignite.cache.query.annotations.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.spi.discovery.tcp.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.sql.*; -import java.util.*; - -import static java.sql.Types.*; -import static org.apache.ignite.IgniteJdbcDriver.*; -import static org.apache.ignite.cache.CacheMode.*; -import static org.apache.ignite.cache.CacheWriteSynchronizationMode.*; +import java.io.Serializable; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Collection; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.cache.affinity.AffinityKey; +import org.apache.ignite.cache.query.annotations.QuerySqlField; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.ConnectorConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; +import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; +import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; + +import static java.sql.Types.INTEGER; +import static java.sql.Types.OTHER; +import static java.sql.Types.VARCHAR; +import static org.apache.ignite.IgniteJdbcDriver.CFG_URL_PREFIX; +import static org.apache.ignite.cache.CacheMode.PARTITIONED; +import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC; /** * Metadata tests. @@ -277,6 +286,24 @@ public class JdbcMetadataSelfTest extends GridCommonAbstractTest { } /** + * @throws Exception If failed. + */ + public void testMetadataResultSetClose() throws Exception { + try (Connection conn = DriverManager.getConnection(BASE_URL); + ResultSet tbls = conn.getMetaData().getTables(null, null, "%", null)) { + int colCnt = tbls.getMetaData().getColumnCount(); + + while (tbls.next()) { + for (int i = 0; i < colCnt; i++) + tbls.getObject(i + 1); + } + } + catch (Exception e) { + fail(); + } + } + + /** * Person. */ @SuppressWarnings("UnusedDeclaration") http://git-wip-us.apache.org/repos/asf/ignite/blob/7fb03c7c/modules/clients/src/test/java/org/apache/ignite/jdbc/JdbcMetadataSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/JdbcMetadataSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/JdbcMetadataSelfTest.java index 0deb45d..72d93c9 100644 --- a/modules/clients/src/test/java/org/apache/ignite/jdbc/JdbcMetadataSelfTest.java +++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/JdbcMetadataSelfTest.java @@ -289,6 +289,24 @@ public class JdbcMetadataSelfTest extends GridCommonAbstractTest { } /** + * @throws Exception If failed. + */ + public void testMetadataResultSetClose() throws Exception { + try (Connection conn = DriverManager.getConnection(URL); + ResultSet tbls = conn.getMetaData().getTables(null, null, "%", null)) { + int colCnt = tbls.getMetaData().getColumnCount(); + + while (tbls.next()) { + for (int i = 0; i < colCnt; i++) + tbls.getObject(i + 1); + } + } + catch (Exception e) { + fail(); + } + } + + /** * Person. */ @SuppressWarnings("UnusedDeclaration") http://git-wip-us.apache.org/repos/asf/ignite/blob/7fb03c7c/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java old mode 100644 new mode 100755 index 5092b42..69dddad --- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java @@ -182,7 +182,7 @@ public class JdbcResultSet implements ResultSet { * If this result set is associated with locally executed query then query cursor will also closed. */ void closeInternal() throws SQLException { - if (((JdbcConnection)stmt.getConnection()).nodeId() == null) + if (((JdbcConnection)stmt.getConnection()).nodeId() == null && uuid != null) JdbcQueryTask.remove(uuid); closed = true;