You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/08/05 03:15:40 UTC
[49/50] incubator-ignite git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-843
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-843
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/53f12f53
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/53f12f53
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/53f12f53
Branch: refs/heads/ignite-843
Commit: 53f12f532133ae61e0c2a963f2d42350bf851c1f
Parents: d71b5cf c087be2
Author: AKuznetsov <ak...@gridgain.com>
Authored: Wed Aug 5 08:06:45 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Wed Aug 5 08:06:45 2015 +0700
----------------------------------------------------------------------
.../ClientAbstractMultiNodeSelfTest.java | 4 +-
.../JettyRestProcessorAbstractSelfTest.java | 14 +-
.../apache/ignite/IgniteSystemProperties.java | 2 +-
.../store/jdbc/CacheAbstractJdbcStore.java | 21 +-
.../apache/ignite/internal/IgniteKernal.java | 2 +-
.../org/apache/ignite/internal/IgnitionEx.java | 43 +-
.../managers/communication/GridIoManager.java | 188 +++++++-
.../processors/cache/GridCacheMvccManager.java | 73 +--
.../processors/cache/GridCacheProcessor.java | 2 +-
.../processors/cache/GridCacheProxyImpl.java | 42 +-
.../processors/cache/GridCacheSwapManager.java | 2 +-
.../GridDhtPartitionsExchangeFuture.java | 20 +-
.../distributed/near/GridNearGetFuture.java | 20 +-
.../handlers/query/QueryCommandHandler.java | 6 +-
.../ignite/internal/util/IgniteUtils.java | 16 +
.../util/nio/GridCommunicationClient.java | 5 +-
.../util/nio/GridNioFinishedFuture.java | 12 +
.../ignite/internal/util/nio/GridNioFuture.java | 14 +
.../internal/util/nio/GridNioFutureImpl.java | 15 +
.../util/nio/GridNioRecoveryDescriptor.java | 13 +-
.../ignite/internal/util/nio/GridNioServer.java | 5 +
.../util/nio/GridNioSessionMetaKey.java | 5 +-
.../util/nio/GridShmemCommunicationClient.java | 7 +-
.../util/nio/GridTcpNioCommunicationClient.java | 14 +-
.../communication/tcp/TcpCommunicationSpi.java | 84 +++-
.../ignite/spi/discovery/tcp/ClientImpl.java | 2 +-
.../ignite/spi/discovery/tcp/ServerImpl.java | 45 +-
.../spi/discovery/tcp/TcpDiscoverySpi.java | 2 +-
.../src/test/config/io-manager-benchmark.xml | 3 +-
.../GridJobMasterLeaveAwareSelfTest.java | 10 +-
.../IgniteClientReconnectAbstractTest.java | 5 +-
.../IgniteClientReconnectCacheTest.java | 5 +-
.../GridDeploymentMessageCountSelfTest.java | 5 +-
...cheDhtLocalPartitionAfterRemoveSelfTest.java | 107 +++++
.../cache/CacheStopAndDestroySelfTest.java | 8 +-
.../GridCacheAtomicMessageCountSelfTest.java | 6 +-
.../processors/cache/GridCacheMvccSelfTest.java | 1 -
...ridCacheReplicatedSynchronousCommitTest.java | 5 +-
.../cache/GridCacheSwapPreloadSelfTest.java | 2 +
.../IgniteCacheAbstractStopBusySelfTest.java | 6 +-
.../cache/IgniteCacheNearLockValueSelfTest.java | 6 +-
...eDynamicCacheStartNoExchangeTimeoutTest.java | 4 +-
.../cache/IgniteTxReentryAbstractSelfTest.java | 5 +-
...niteCacheClientNodeChangingTopologyTest.java | 6 +-
...teCacheClientNodePartitionsExchangeTest.java | 4 +-
.../IgniteCacheNearOffheapGetSelfTest.java | 131 ++++++
...xOriginatingNodeFailureAbstractSelfTest.java | 6 +-
...cOriginatingNodeFailureAbstractSelfTest.java | 6 +-
.../GridCacheDhtPreloadMessageCountTest.java | 5 +-
...ePrimaryNodeFailureRecoveryAbstractTest.java | 6 +-
...eAtomicInvalidPartitionHandlingSelfTest.java | 5 +-
.../near/IgniteCacheNearTxRollbackTest.java | 6 +-
.../GridCacheReplicatedInvalidateSelfTest.java | 6 +-
...CommunicationRecoveryAckClosureSelfTest.java | 464 +++++++++++++++++++
.../tcp/TcpDiscoveryMultiThreadedTest.java | 8 +-
.../testsuites/IgniteCacheTestSuite2.java | 1 +
.../IgniteSpiCommunicationSelfTestSuite.java | 1 +
.../ignite/util/TestTcpCommunicationSpi.java | 6 +-
.../query/h2/twostep/GridMergeIndex.java | 7 +
.../h2/twostep/GridMergeIndexUnsorted.java | 17 +-
.../query/h2/twostep/GridMergeTable.java | 52 +--
.../h2/twostep/GridReduceQueryExecutor.java | 62 +--
...CacheScanPartitionQueryFallbackSelfTest.java | 15 +-
...idCacheReduceQueryMultithreadedSelfTest.java | 21 +-
.../http/jetty/GridJettyRestHandler.java | 12 +-
.../parser/dialect/OracleMetadataDialect.java | 4 +-
.../src/test/java/config/ignite-test-config.xml | 43 ++
.../ignite/internal/GridFactorySelfTest.java | 9 +
.../visor/commands/kill/VisorKillCommand.scala | 2 +-
.../yardstick/config/benchmark-query.properties | 3 +-
modules/yardstick/config/ignite-base-config.xml | 2 -
.../yardstick/IgniteBenchmarkArguments.java | 11 +
.../cache/IgniteJdbcSqlQueryBenchmark.java | 134 ++++++
73 files changed, 1588 insertions(+), 323 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53f12f53/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/JettyRestProcessorAbstractSelfTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53f12f53/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53f12f53/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
index 35fbcef,1712dd4..43ecc0c
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/query/QueryCommandHandler.java
@@@ -252,9 -247,9 +252,9 @@@ public class QueryCommandHandler extend
if (cur == null)
return new GridRestResponse(GridRestResponse.STATUS_FAILED,
- "Cannot find query [qryId=" + req.queryId() + "]");
+ "Failed to find query with ID: " + req.queryId());
- CacheQueryResult res = createQueryResult(qryCurs, cur, req, req.queryId());
+ CacheQueryResult res = createQueryResult(qryCurs, cur, req, req.queryId(), ctx);
return new GridRestResponse(res);
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53f12f53/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/53f12f53/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
----------------------------------------------------------------------
diff --cc modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
index 855c9f7,0000000..860ff68
mode 100644,000000..100644
--- a/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
+++ b/modules/schema-import-db/src/main/java/org/apache/ignite/schema/parser/dialect/OracleMetadataDialect.java
@@@ -1,281 -1,0 +1,281 @@@
+/*
+ * 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.ignite.schema.parser.dialect;
+
+import org.apache.ignite.schema.parser.*;
+
+import java.sql.*;
+import java.util.*;
+
+import static java.sql.Types.*;
+
+/**
+ * Oracle specific metadata dialect.
+ */
+public class OracleMetadataDialect extends DatabaseMetadataDialect {
+ /** SQL to get columns metadata. */
+ private static final String SQL_COLUMNS = "SELECT a.owner, a.table_name, a.column_name, a.nullable," +
+ " a.data_type, a.data_precision, a.data_scale " +
+ "FROM all_tab_columns a %s" +
+ " WHERE a.owner = '%s'" +
+ " ORDER BY a.owner, a.table_name, a.column_id";
+
+ /** SQL to get list of PRIMARY KEYS columns. */
+ private static final String SQL_PRIMARY_KEYS = "SELECT b.column_name" +
+ " FROM all_constraints a" +
+ " INNER JOIN all_cons_columns b ON a.owner = b.owner AND a.constraint_name = b.constraint_name" +
+ " WHERE a.owner = ? and a.table_name = ? AND a.constraint_type = 'P'";
+
+ /** SQL to get indexes metadata. */
- private static final String SQL_INDEXES = "select i.index_name, u.column_expression, i.column_name, i.descend" +
++ private static final String SQL_INDEXES = "SELECT i.index_name, u.column_expression, i.column_name, i.descend" +
+ " FROM all_ind_columns i" +
+ " LEFT JOIN user_ind_expressions u on u.index_name = i.index_name and i.table_name = u.table_name" +
+ " WHERE i.index_owner = ? and i.table_name = ?" +
+ " ORDER BY i.index_name, i.column_position";
+
+ /** Owner index. */
+ private static final int OWNER_IDX = 1;
+
+ /** Table name index. */
+ private static final int TBL_NAME_IDX = 2;
+
+ /** Column name index. */
+ private static final int COL_NAME_IDX = 3;
+
+ /** Nullable index. */
+ private static final int NULLABLE_IDX = 4;
+
+ /** Data type index. */
+ private static final int DATA_TYPE_IDX = 5;
+
+ /** Numeric precision index. */
+ private static final int DATA_PRECISION_IDX = 6;
+
+ /** Numeric scale index. */
+ private static final int DATA_SCALE_IDX = 7;
+
+ /** Index name index. */
+ private static final int IDX_NAME_IDX = 1;
+
+ /** Index name index. */
+ private static final int IDX_EXPR_IDX = 2;
+
+ /** Index column name index. */
+ private static final int IDX_COL_NAME_IDX = 3;
+
+ /** Index column sort order index. */
+ private static final int IDX_COL_DESCEND_IDX = 4;
+
+ /**
+ * @param rs Result set with column type metadata from Oracle database.
+ * @return JDBC type.
+ * @throws SQLException If failed to decode type.
+ */
+ private int decodeType(ResultSet rs) throws SQLException {
+ switch (rs.getString(DATA_TYPE_IDX)) {
+ case "CHAR":
+ case "NCHAR":
+ return CHAR;
+
+ case "VARCHAR2":
+ case "NVARCHAR2":
+ return VARCHAR;
+
+ case "LONG":
+ return LONGVARCHAR;
+
+ case "LONG RAW":
+ return LONGVARBINARY;
+
+ case "FLOAT":
+ return FLOAT;
+
+ case "NUMBER":
+ int precision = rs.getInt(DATA_PRECISION_IDX);
+ int scale = rs.getInt(DATA_SCALE_IDX);
+
+ if (scale > 0) {
+ if (scale < 4 && precision < 19)
+ return FLOAT;
+
+ if (scale > 4 || precision > 19)
+ return DOUBLE;
+
+ return NUMERIC;
+ }
+ else {
+ if (precision < 1)
+ return INTEGER;
+
+ if (precision < 2)
+ return BOOLEAN;
+
+ if (precision < 4)
+ return TINYINT;
+
+ if (precision < 6)
+ return SMALLINT;
+
+ if (precision < 11)
+ return INTEGER;
+
+ if (precision < 20)
+ return BIGINT;
+
+ return NUMERIC;
+ }
+
+ case "DATE":
+ return DATE;
+
+ case "TIMESTAMP":
+ return TIMESTAMP;
+
+ case "BFILE":
+ case "BLOB":
+ return BLOB;
+
+ case "CLOB":
+ case "NCLOB":
+ case "XMLTYPE":
+ return CLOB;
+ }
+
+ return OTHER;
+ }
+
+ /**
+ * Retrieve primary key columns.
+ *
+ * @param stmt Prepared SQL statement to execute.
+ * @param owner DB owner.
+ * @param tbl Table name.
+ * @return Primary key columns.
+ * @throws SQLException If failed to retrieve primary key columns.
+ */
+ private Set<String> primaryKeys(PreparedStatement stmt, String owner, String tbl) throws SQLException {
+ Set<String> pkCols = new HashSet<>();
+
+ stmt.setString(1, owner);
+ stmt.setString(2, tbl);
+
+ try (ResultSet pkRs = stmt.executeQuery()) {
+ while(pkRs.next())
+ pkCols.add(pkRs.getString(1));
+ }
+
+ return pkCols;
+ }
+
+ /**
+ * Retrieve index columns.
+ *
+ * @param stmt Prepared SQL statement to execute.
+ * @param owner DB owner.
+ * @param tbl Table name.
+ * @return Index columns.
+ * @throws SQLException If failed to retrieve indexes columns.
+ */
+ private Map<String, Map<String, Boolean>> indexes(PreparedStatement stmt, String owner, String tbl)
+ throws SQLException {
+ Map<String, Map<String, Boolean>> idxs = new LinkedHashMap<>();
+
+ stmt.setString(1, owner);
+ stmt.setString(2, tbl);
+
+ try (ResultSet idxsRs = stmt.executeQuery()) {
+ while (idxsRs.next()) {
+ String idxName = idxsRs.getString(IDX_NAME_IDX);
+
+ Map<String, Boolean> idx = idxs.get(idxName);
+
+ if (idx == null) {
+ idx = new LinkedHashMap<>();
+
+ idxs.put(idxName, idx);
+ }
+
+ String expr = idxsRs.getString(IDX_EXPR_IDX);
+
+ String col = expr == null ? idxsRs.getString(IDX_COL_NAME_IDX) : expr.replaceAll("\"", "");
+
+ idx.put(col, "DESC".equals(idxsRs.getString(IDX_COL_DESCEND_IDX)));
+ }
+ }
+
+ return idxs;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Collection<DbTable> tables(Connection conn, boolean tblsOnly) throws SQLException {
+ Collection<DbTable> tbls = new ArrayList<>();
+
+ PreparedStatement pkStmt = conn.prepareStatement(SQL_PRIMARY_KEYS);
+
+ PreparedStatement idxStmt = conn.prepareStatement(SQL_INDEXES);
+
+ try (Statement colsStmt = conn.createStatement()) {
+ Collection<DbColumn> cols = new ArrayList<>();
+
+ Set<String> pkCols = Collections.emptySet();
+ Map<String, Map<String, Boolean>> idxs = Collections.emptyMap();
+
+ String user = conn.getMetaData().getUserName().toUpperCase();
+
+ String sql = String.format(SQL_COLUMNS,
- tblsOnly ? "INNER JOIN all_tables b on a.table_name = b.table_name" : "", user);
++ tblsOnly ? "INNER JOIN all_tables b on a.table_name = b.table_name and a.owner = b.owner" : "", user);
+
+ try (ResultSet colsRs = colsStmt.executeQuery(sql)) {
+ String prevSchema = "";
+ String prevTbl = "";
+
+ boolean first = true;
+
+ while (colsRs.next()) {
+ String owner = colsRs.getString(OWNER_IDX);
+ String tbl = colsRs.getString(TBL_NAME_IDX);
+
+ boolean changed = !owner.equals(prevSchema) || !tbl.equals(prevTbl);
+
+ if (changed) {
+ if (first)
+ first = false;
+ else
+ tbls.add(table(prevSchema, prevTbl, cols, idxs));
+
+ prevSchema = owner;
+ prevTbl = tbl;
+ cols = new ArrayList<>();
+ pkCols = primaryKeys(pkStmt, owner, tbl);
+ idxs = indexes(idxStmt, owner, tbl);
+ }
+
+ String colName = colsRs.getString(COL_NAME_IDX);
+
+ cols.add(new DbColumn(colName, decodeType(colsRs), pkCols.contains(colName),
+ !"N".equals(colsRs.getString(NULLABLE_IDX))));
+ }
+
+ if (!cols.isEmpty())
+ tbls.add(table(prevSchema, prevTbl, cols, idxs));
+ }
+ }
+
+ return tbls;
+ }
+}