Merge remote-tracking branch 'apache/ignite-2.0' into ignite-4490 # Conflicts: # modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java # modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java # modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheUpdateSqlQuerySelfTest.java
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e526948e Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e526948e Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e526948e Branch: refs/heads/ignite-6022-proto Commit: e526948e3d557787c5160bda672ca86eeead2d0d Parents: 5982e39 9ce099c Author: Alexander Paschenko <[email protected]> Authored: Thu Feb 9 15:23:46 2017 +0300 Committer: Alexander Paschenko <[email protected]> Committed: Thu Feb 9 15:25:16 2017 +0300 ---------------------------------------------------------------------- assembly/LICENSE_FABRIC | 35 ++- assembly/LICENSE_HADOOP | 17 +- examples/schema-import/bin/h2-server.bat | 2 +- examples/schema-import/bin/h2-server.sh | 4 +- .../schema-import/bin/schema-import.properties | 2 +- .../src/main/resources/META-INF/licenses.txt.vm | 7 +- .../apache/ignite/IgniteSystemProperties.java | 11 + .../configuration/CacheConfiguration.java | 16 +- .../processors/cache/GridCacheProcessor.java | 85 +++++++ .../distributed/dht/GridDhtCacheAdapter.java | 10 +- .../distributed/dht/GridDhtLocalPartition.java | 120 ++++++++-- .../processors/query/GridQueryProcessor.java | 81 +++++-- .../processors/query/GridQueryProperty.java | 21 +- .../ignite/lang/IgniteProductVersion.java | 2 +- .../cache/CacheDeferredDeleteQueueTest.java | 134 +++++++++++ .../ignite/testsuites/IgniteCacheTestSuite.java | 2 + .../query/h2/DmlStatementsProcessor.java | 70 +++--- .../processors/query/h2/IgniteH2Indexing.java | 8 +- .../query/h2/dml/UpdatePlanBuilder.java | 105 ++++++--- .../h2/twostep/GridReduceQueryExecutor.java | 2 +- ...niteCacheAbstractInsertSqlQuerySelfTest.java | 4 + .../IgniteCacheAbstractSqlDmlQuerySelfTest.java | 2 +- .../IgniteCacheInsertSqlQuerySelfTest.java | 22 ++ .../cache/IgniteCacheMergeSqlQuerySelfTest.java | 24 ++ .../IgniteCacheUpdateSqlQuerySelfTest.java | 61 ++++- .../IgniteSqlEntryCacheModeAgnosticTest.java | 140 +++++++++++ .../h2/GridIndexingSpiAbstractSelfTest.java | 5 + .../IgniteCacheQuerySelfTestSuite.java | 2 + .../Cache/CacheAbstractTransactionalTest.cs | 105 +++++---- .../Cache/Configuration/QueryEntity.cs | 2 +- .../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs | 9 +- .../Apache.Ignite.Examples.csproj | 1 + .../Datagrid/TransactionExample.cs | 75 ++++-- modules/web-console/backend/app/agent.js | 10 +- modules/web-console/backend/app/mongo.js | 49 ++-- modules/web-console/backend/app/routes.js | 5 +- .../web-console/backend/routes/activities.js | 52 +++++ modules/web-console/backend/routes/admin.js | 2 +- modules/web-console/backend/routes/agent.js | 10 +- modules/web-console/backend/routes/public.js | 1 - .../web-console/backend/services/activities.js | 136 +++++++++++ modules/web-console/backend/services/users.js | 13 +- modules/web-console/frontend/app/app.config.js | 9 + modules/web-console/frontend/app/app.js | 29 ++- .../activities-user-dialog.controller.js | 60 +++++ .../activities-user-dialog.jade | 36 +++ .../components/activities-user-dialog/index.js | 36 +++ .../form-field-datepicker.jade | 55 +++++ .../form-field-datepicker.scss | 20 ++ .../list-of-registered-users/index.js | 28 +++ .../list-of-registered-users.categories.js | 30 +++ .../list-of-registered-users.column-defs.js | 80 +++++++ .../list-of-registered-users.controller.js | 207 ++++++++++++++++ .../list-of-registered-users.jade | 54 +++++ .../ui-grid-header/ui-grid-header.jade | 27 +++ .../ui-grid-header/ui-grid-header.scss | 84 +++++++ .../ui-grid-settings/ui-grid-settings.jade | 33 +++ .../ui-grid-settings/ui-grid-settings.scss | 70 ++++++ .../app/core/activities/Activities.data.js | 39 ++++ .../frontend/app/core/admin/Admin.data.js | 77 ++++++ modules/web-console/frontend/app/core/index.js | 25 ++ modules/web-console/frontend/app/data/i18n.js | 38 +++ .../ui-grid-settings/ui-grid-settings.jade | 33 --- .../ui-grid-settings/ui-grid-settings.scss | 38 --- .../app/filters/uiGridSubcategories.filter.js | 24 ++ .../frontend/app/modules/Demo/Demo.module.js | 166 ------------- .../frontend/app/modules/demo/Demo.module.js | 172 ++++++++++++++ .../frontend/app/modules/sql/sql.controller.js | 14 +- .../frontend/app/modules/sql/sql.module.js | 2 +- .../frontend/app/modules/states/admin.state.js | 2 +- .../configuration/summary/summary.controller.js | 6 +- .../app/modules/user/AclRoute.provider.js | 31 +-- .../frontend/app/modules/user/Auth.service.js | 2 +- .../frontend/app/modules/user/permissions.js | 2 +- .../frontend/app/modules/user/user.module.js | 6 +- modules/web-console/frontend/app/vendor.js | 1 + .../frontend/controllers/admin-controller.js | 234 ------------------- .../frontend/controllers/domains-controller.js | 12 +- modules/web-console/frontend/package.json | 1 + .../stylesheets/_font-awesome-custom.scss | 28 +++ .../frontend/public/stylesheets/style.scss | 39 +++- .../frontend/public/stylesheets/variables.scss | 1 + .../frontend/views/settings/admin.jade | 32 +-- modules/web-console/frontend/views/sql/sql.jade | 4 +- .../views/templates/agent-download.jade | 2 +- modules/web-console/web-agent/README.txt | 2 +- .../cache/IgnitePutRemoveBenchmark.java | 42 ++++ .../cache/IgnitePutRemoveTxBenchmark.java | 30 +++ 88 files changed, 2609 insertions(+), 818 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/e526948e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java ---------------------------------------------------------------------- diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java index 70bd2bd,7995083..0abe2cb --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/DmlStatementsProcessor.java @@@ -58,9 -58,7 +58,8 @@@ import org.apache.ignite.internal.proce import org.apache.ignite.internal.processors.query.GridQueryProperty; import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor; import org.apache.ignite.internal.processors.query.IgniteSQLException; +import org.apache.ignite.internal.processors.query.h2.dml.FastUpdateArgument; import org.apache.ignite.internal.processors.query.h2.dml.FastUpdateArguments; - import org.apache.ignite.internal.processors.query.h2.dml.KeyValueSupplier; import org.apache.ignite.internal.processors.query.h2.dml.UpdatePlan; import org.apache.ignite.internal.processors.query.h2.dml.UpdatePlanBuilder; import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor; @@@ -913,13 -841,32 +894,32 @@@ public class DmlStatementsProcessor if (val == null) throw new IgniteSQLException("Value for INSERT or MERGE must not be null", IgniteQueryErrorCode.NULL_VALUE); - GridQueryTypeDescriptor desc = rowDesc.type(); + GridQueryTypeDescriptor desc = plan.tbl.rowDescriptor().type(); - for (int i = 0; i < cols.length; i++) { - if (i == keyColIdx || i == valColIdx) + Map<String, Object> newColVals = new HashMap<>(); + + for (int i = 0; i < plan.colNames.length; i++) { + if (i == plan.keyColIdx || i == plan.valColIdx) continue; - desc.setValue(cols[i], key, val, convert(row[i], cols[i], rowDesc)); + newColVals.put(plan.colNames[i], convert(row.get(i), plan.colNames[i], - plan.tbl.rowDescriptor(), plan.colTypes[i])); ++ plan.tbl.rowDescriptor())); + } + + // We update columns in the order specified by the table for a reason - table's + // column order preserves their precedence for correct update of nested properties. + Column[] cols = plan.tbl.getColumns(); + + // First 2 columns are _key and _val, skip 'em. + for (int i = 2; i < cols.length; i++) { + String colName = cols[i].getName(); + + if (!newColVals.containsKey(colName)) + continue; + + Object colVal = newColVals.get(colName); + + desc.setValue(colName, key, val, colVal); } if (cctx.binaryMarshaller()) { http://git-wip-us.apache.org/repos/asf/ignite/blob/e526948e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java ---------------------------------------------------------------------- diff --cc modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java index 0303fa4,ce2971a..8700b9a --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/UpdatePlanBuilder.java @@@ -225,15 -193,15 +226,15 @@@ public final class UpdatePlanBuilder hasValProps = true; } - KeyValueSupplier keySupplier = createSupplier(cctx, desc.type(), keyColIdx, hasKeyProps, true); - KeyValueSupplier valSupplier = createSupplier(cctx, desc.type(), valColIdx, hasValProps, false); + KeyValueSupplier keySupplier = createSupplier(cctx, desc.type(), keyColIdx, hasKeyProps, true, false); + KeyValueSupplier valSupplier = createSupplier(cctx, desc.type(), valColIdx, hasValProps, false, false); if (stmt instanceof GridSqlMerge) - return UpdatePlan.forMerge(tbl.dataTable(), colNames, colTypes, keySupplier, valSupplier, keyColIdx, - valColIdx, sel.getSQL(), !isTwoStepSubqry, rowsNum); + return UpdatePlan.forMerge(tbl.dataTable(), colNames, keySupplier, valSupplier, keyColIdx, + valColIdx, sel != null ? sel.getSQL() : null, !isTwoStepSubqry, rows, rowsNum); else - return UpdatePlan.forInsert(tbl.dataTable(), colNames, colTypes, keySupplier, valSupplier, keyColIdx, - valColIdx, sel.getSQL(), !isTwoStepSubqry, rowsNum); + return UpdatePlan.forInsert(tbl.dataTable(), colNames, keySupplier, valSupplier, keyColIdx, + valColIdx, sel != null ? sel.getSQL() : null, !isTwoStepSubqry, rows, rowsNum); } /**
