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;
 +    }
 +}