diff --git a/API-Changes-3.0.md b/API-Changes-3.0.md index 6b95296347..7e0aec09b3 100644 --- a/API-Changes-3.0.md +++ b/API-Changes-3.0.md @@ -52,6 +52,12 @@ Overview 13. the HTTP API for modifying documents (/_api/document) does not return the `error` attribute with a value of `false` in case an operation succeeds. +14. calling either collection.edges(), collection.outEdges(), collection.inEdges() + with an array of edge ids will now make the edge ids unique before returning the + connected edges. This is probably desired anyway, as results will be returned only + once per distinct input edge id. However, it may break client applications that + rely on the old behavior. + ### New capabilities: diff --git a/arangod/VocBase/server.cpp b/arangod/VocBase/server.cpp index 060f457b18..3579f68078 100644 --- a/arangod/VocBase/server.cpp +++ b/arangod/VocBase/server.cpp @@ -1571,7 +1571,6 @@ int TRI_CreateDatabaseServer(TRI_server_t* server, TRI_voc_tick_t databaseId, try { builder.openObject(); builder.add("database", VPackValue(databaseId)); - builder.add("data", VPackValue(VPackValueType::Object)); // name not yet in use defaults->toVelocyPack(builder); @@ -1677,7 +1676,6 @@ int TRI_CreateDatabaseServer(TRI_server_t* server, TRI_voc_tick_t databaseId, // write marker into log if (writeMarker) { - builder.close(); // close inner builder.close(); res = WriteCreateMarker(databaseId, builder.slice()); } diff --git a/js/client/modules/@arangodb/testing.js b/js/client/modules/@arangodb/testing.js index c1c2c0fad2..07f7a4d1a9 100644 --- a/js/client/modules/@arangodb/testing.js +++ b/js/client/modules/@arangodb/testing.js @@ -3312,7 +3312,6 @@ const recoveryTests = [ "indexes-sparse-skiplist", "indexes-geo", "edges", - "cap-constraint", "indexes", "many-inserts", "many-updates", diff --git a/js/server/tests/recovery/cap-constraint.js b/js/server/tests/recovery/cap-constraint.js deleted file mode 100644 index b6d45e787b..0000000000 --- a/js/server/tests/recovery/cap-constraint.js +++ /dev/null @@ -1,112 +0,0 @@ -/*jshint globalstrict:false, strict:false, unused : false */ -/*global assertEqual */ - -//////////////////////////////////////////////////////////////////////////////// -/// @brief tests for dump/reload -/// -/// @file -/// -/// DISCLAIMER -/// -/// Copyright 2010-2012 triagens GmbH, Cologne, Germany -/// -/// Licensed 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. -/// -/// Copyright holder is triAGENS GmbH, Cologne, Germany -/// -/// @author Jan Steemann -/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany -//////////////////////////////////////////////////////////////////////////////// - -var db = require("@arangodb").db; -var internal = require("internal"); -var jsunity = require("jsunity"); - - -function runSetup () { - 'use strict'; - internal.debugClearFailAt(); - - var i, j, c; - for (i = 0; i < 5; ++i) { - db._drop("UnitTestsRecovery" + i); - c = db._create("UnitTestsRecovery" + i); - - c.ensureCapConstraint((i + 1) * 10); - - for (j = 0; j < 100; ++j) { - c.save({ _key: "test" + j, value1: i, value2: j }); - } - } - - db._drop("test"); - c = db._create("test"); - c.save({ _key: "crashme" }, true); - - internal.debugSegfault("crashing server"); -} - -//////////////////////////////////////////////////////////////////////////////// -/// @brief test suite -//////////////////////////////////////////////////////////////////////////////// - -function recoverySuite () { - 'use strict'; - jsunity.jsUnity.attachAssertions(); - - return { - setUp: function () { - }, - tearDown: function () { - }, - -//////////////////////////////////////////////////////////////////////////////// -/// @brief test whether we can restore the trx data -//////////////////////////////////////////////////////////////////////////////// - - testCapConstraint : function () { - var i, j, c, n, doc; - for (i = 0; i < 5; ++i) { - c = db._collection("UnitTestsRecovery" + i); - - n = (i + 1) * 10; - assertEqual(n, c.count()); - - for (j = 100 - n; j < 100; ++j) { - doc = c.document("test" + j); - assertEqual(i, doc.value1); - assertEqual(j, doc.value2); - } - } - - } - - }; -} - -//////////////////////////////////////////////////////////////////////////////// -/// @brief executes the test suite -//////////////////////////////////////////////////////////////////////////////// - -function main (argv) { - 'use strict'; - if (argv[1] === "setup") { - runSetup(); - return 0; - } - else { - jsunity.run(recoverySuite); - return jsunity.done().status ? 0 : 1; - } -} - diff --git a/js/server/tests/recovery/create-indexes.js b/js/server/tests/recovery/create-indexes.js index bec786422c..e6f37364f0 100644 --- a/js/server/tests/recovery/create-indexes.js +++ b/js/server/tests/recovery/create-indexes.js @@ -46,7 +46,6 @@ function runSetup () { c.ensureUniqueConstraint("value1"); c.ensureUniqueSkiplist("value2"); - c.ensureCapConstraint(50); } db._drop("test"); @@ -79,11 +78,11 @@ function recoverySuite () { var hash = null, skip = null; for (i = 0; i < 5; ++i) { c = db._collection("UnitTestsRecovery" + i); - assertEqual(50, c.count()); + assertEqual(100, c.count()); idx = c.getIndexes(); - assertEqual(4, idx.length); + assertEqual(3, idx.length); - for (j = 1; j < 4; ++j) { + for (j = 1; j < 3; ++j) { if (idx[j].type === 'hash') { hash = idx[j]; } @@ -95,13 +94,13 @@ function recoverySuite () { assertNotNull(hash); assertNotNull(skip); - for (j = 50; j < 100; ++j) { + for (j = 0; j < 100; ++j) { doc = c.document("test" + j); assertEqual("foo" + j, doc.value1); assertEqual("bar" + j, doc.value2); - assertEqual(1, c.byExampleHash(hash.id, { value1: "foo" + j }).toArray().length); - assertEqual(1, c.byExampleSkiplist(skip.id, { value2: "bar" + j }).toArray().length); + assertEqual(1, c.byExample({ value1: "foo" + j }).toArray().length); + assertEqual(1, c.byExample({ value2: "bar" + j }).toArray().length); } } diff --git a/js/server/tests/recovery/drop-indexes.js b/js/server/tests/recovery/drop-indexes.js index ff0f51c8e4..089eb315f3 100644 --- a/js/server/tests/recovery/drop-indexes.js +++ b/js/server/tests/recovery/drop-indexes.js @@ -44,7 +44,6 @@ function runSetup () { c.ensureHashIndex("value1"); c.ensureSkiplist("value2"); - c.ensureCapConstraint(1000); } // drop all indexes but primary @@ -91,7 +90,7 @@ function recoverySuite () { c = db._collection("UnitTestsRecovery4"); idx = c.getIndexes(); - assertEqual(4, idx.length); + assertEqual(3, idx.length); } }; diff --git a/js/server/tests/recovery/indexes-hash.js b/js/server/tests/recovery/indexes-hash.js index f3675e414b..2e2d123366 100644 --- a/js/server/tests/recovery/indexes-hash.js +++ b/js/server/tests/recovery/indexes-hash.js @@ -93,7 +93,7 @@ function recoverySuite () { assertFalse(idx.sparse); assertEqual([ "value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleHash(idx.id, { value: i }).toArray().length); + assertEqual(1, c.byExample({ value: i }).toArray().length); } c = db._collection("UnitTestsRecovery2"); @@ -102,7 +102,7 @@ function recoverySuite () { assertFalse(idx.sparse); assertEqual([ "a.value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleHash(idx.id, { "a.value": i }).toArray().length); + assertEqual(1, c.byExample({ "a.value": i }).toArray().length); } c = db._collection("UnitTestsRecovery3"); @@ -110,10 +110,10 @@ function recoverySuite () { assertFalse(idx.unique); assertFalse(idx.sparse); assertEqual([ "a", "b" ], idx.fields); - assertEqual(250, c.byExampleHash(idx.id, { a: 1, b: 1 }).toArray().length); - assertEqual(250, c.byExampleHash(idx.id, { a: 1, b: 2 }).toArray().length); - assertEqual(250, c.byExampleHash(idx.id, { a: 2, b: 1 }).toArray().length); - assertEqual(250, c.byExampleHash(idx.id, { a: 2, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 2 }).toArray().length); } }; diff --git a/js/server/tests/recovery/indexes-skiplist.js b/js/server/tests/recovery/indexes-skiplist.js index 62649fef7a..fcc28bb685 100644 --- a/js/server/tests/recovery/indexes-skiplist.js +++ b/js/server/tests/recovery/indexes-skiplist.js @@ -93,7 +93,7 @@ function recoverySuite () { assertFalse(idx.sparse); assertEqual([ "value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleSkiplist(idx.id, { value: i }).toArray().length); + assertEqual(1, c.byExample({ value: i }).toArray().length); } c = db._collection("UnitTestsRecovery2"); @@ -102,7 +102,7 @@ function recoverySuite () { assertFalse(idx.sparse); assertEqual([ "a.value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleSkiplist(idx.id, { "a.value" : i }).toArray().length); + assertEqual(1, c.byExample({ "a.value" : i }).toArray().length); } c = db._collection("UnitTestsRecovery3"); @@ -110,10 +110,10 @@ function recoverySuite () { assertFalse(idx.unique); assertFalse(idx.sparse); assertEqual([ "a", "b" ], idx.fields); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 1, b: 1 }).toArray().length); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 1, b: 2 }).toArray().length); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 2, b: 1 }).toArray().length); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 2, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 2 }).toArray().length); } }; diff --git a/js/server/tests/recovery/indexes-sparse-hash.js b/js/server/tests/recovery/indexes-sparse-hash.js index 87de584873..e10cf1b785 100644 --- a/js/server/tests/recovery/indexes-sparse-hash.js +++ b/js/server/tests/recovery/indexes-sparse-hash.js @@ -93,7 +93,7 @@ function recoverySuite () { assertTrue(idx.sparse); assertEqual([ "value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleHash(idx.id, { value: i }).toArray().length); + assertEqual(1, c.byExample({ value: i }).toArray().length); } c = db._collection("UnitTestsRecovery2"); @@ -102,7 +102,7 @@ function recoverySuite () { assertTrue(idx.sparse); assertEqual([ "a.value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleHash(idx.id, { "a.value": i }).toArray().length); + assertEqual(1, c.byExample({ "a.value": i }).toArray().length); } c = db._collection("UnitTestsRecovery3"); @@ -110,10 +110,10 @@ function recoverySuite () { assertFalse(idx.unique); assertTrue(idx.sparse); assertEqual([ "a", "b" ], idx.fields); - assertEqual(250, c.byExampleHash(idx.id, { a: 1, b: 1 }).toArray().length); - assertEqual(250, c.byExampleHash(idx.id, { a: 1, b: 2 }).toArray().length); - assertEqual(250, c.byExampleHash(idx.id, { a: 2, b: 1 }).toArray().length); - assertEqual(250, c.byExampleHash(idx.id, { a: 2, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 2 }).toArray().length); } }; diff --git a/js/server/tests/recovery/indexes-sparse-skiplist.js b/js/server/tests/recovery/indexes-sparse-skiplist.js index 01cce27919..49a5f974c5 100644 --- a/js/server/tests/recovery/indexes-sparse-skiplist.js +++ b/js/server/tests/recovery/indexes-sparse-skiplist.js @@ -93,7 +93,7 @@ function recoverySuite () { assertTrue(idx.sparse); assertEqual([ "value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleSkiplist(idx.id, { value: i }).toArray().length); + assertEqual(1, c.byExample({ value: i }).toArray().length); } c = db._collection("UnitTestsRecovery2"); @@ -102,7 +102,7 @@ function recoverySuite () { assertTrue(idx.sparse); assertEqual([ "a.value" ], idx.fields); for (i = 0; i < 1000; ++i) { - assertEqual(1, c.byExampleSkiplist(idx.id, { "a.value" : i }).toArray().length); + assertEqual(1, c.byExample({ "a.value" : i }).toArray().length); } c = db._collection("UnitTestsRecovery3"); @@ -110,10 +110,10 @@ function recoverySuite () { assertFalse(idx.unique); assertTrue(idx.sparse); assertEqual([ "a", "b" ], idx.fields); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 1, b: 1 }).toArray().length); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 1, b: 2 }).toArray().length); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 2, b: 1 }).toArray().length); - assertEqual(250, c.byExampleSkiplist(idx.id, { a: 2, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 1, b: 2 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 1 }).toArray().length); + assertEqual(250, c.byExample({ a: 2, b: 2 }).toArray().length); } }; diff --git a/js/server/tests/recovery/indexes.js b/js/server/tests/recovery/indexes.js index 981e2f80d5..078ed4723d 100644 --- a/js/server/tests/recovery/indexes.js +++ b/js/server/tests/recovery/indexes.js @@ -41,7 +41,6 @@ function runSetup () { c.ensureHashIndex("value1"); c.ensureSkiplist("value2"); - c.ensureCapConstraint(5000); for (i = 0; i < 1000; ++i) { c.save({ _key: "test" + i, value1: i, value2: "test" + (i % 10) }); @@ -88,25 +87,19 @@ function recoverySuite () { return 0; }); - assertEqual(4, idx.length); + assertEqual(3, idx.length); assertEqual("primary", idx[0].type); assertEqual("hash", idx[1].type); assertFalse(idx[1].unique); assertFalse(idx[1].sparse); assertEqual([ "value1" ], idx[1].fields); - var hash = idx[1]; assertEqual("skiplist", idx[2].type); assertFalse(idx[2].unique); assertFalse(idx[2].sparse); assertEqual([ "value2" ], idx[2].fields); - var skip = idx[2]; - assertEqual("cap", idx[3].type); - assertEqual(5000, idx[3].size); - assertEqual(0, idx[3].byteSize); - for (i = 0; i < 1000; ++i) { var doc = c.document("test" + i); assertEqual(i, doc.value1); @@ -114,13 +107,13 @@ function recoverySuite () { } for (i = 0; i < 1000; ++i) { - docs = c.byExampleHash(hash.id, { value1: i }).toArray(); + docs = c.byExample({ value1: i }).toArray(); assertEqual(1, docs.length); assertEqual("test" + i, docs[0]._key); } for (i = 0; i < 1000; ++i) { - docs = c.byExampleSkiplist(skip.id, { value2: "test" + (i % 10) }).toArray(); + docs = c.byExample({ value2: "test" + (i % 10) }).toArray(); assertEqual(100, docs.length); } diff --git a/js/server/tests/recovery/resume-recovery-all.js b/js/server/tests/recovery/resume-recovery-all.js index 7fac8dd6ef..b6f06f6716 100644 --- a/js/server/tests/recovery/resume-recovery-all.js +++ b/js/server/tests/recovery/resume-recovery-all.js @@ -86,7 +86,6 @@ function recoverySuite () { testResumeRecoveryAll : function () { var c = db._collection("UnitTestsRecovery"), i, j, doc; - var idx = c.getIndexes()[1]; assertEqual(50001, c.count()); @@ -94,7 +93,7 @@ function recoverySuite () { doc = c.document("test" + i); assertEqual("test" + i, doc.value1); assertEqual(i + 1, doc.value2); - assertEqual(1, c.byExampleSkiplist(idx.id, { value2: i + 1 }).toArray().length); + assertEqual(1, c.byExample({ value2: i + 1 }).toArray().length); } for (j = 0; j < 4; ++j) { @@ -103,7 +102,7 @@ function recoverySuite () { assertEqual("test" + i, doc.value1); assertEqual("abc" + i, doc.value2); - assertEqual(4, c.byExampleSkiplist(idx.id, { value2: "abc" + i }).toArray().length); + assertEqual(4, c.byExample({ value2: "abc" + i }).toArray().length); } } } diff --git a/js/server/tests/recovery/resume-recovery-other.js b/js/server/tests/recovery/resume-recovery-other.js index 4734a2feb8..a275a16fcd 100644 --- a/js/server/tests/recovery/resume-recovery-other.js +++ b/js/server/tests/recovery/resume-recovery-other.js @@ -86,7 +86,6 @@ function recoverySuite () { testResumeRecoveryOther : function () { var c = db._collection("UnitTestsRecovery"), i, j, doc; - var idx = c.getIndexes()[1]; assertEqual(50001, c.count()); @@ -94,7 +93,7 @@ function recoverySuite () { doc = c.document("test" + i); assertEqual("test" + i, doc.value1); assertEqual(i + 1, doc.value2); - assertEqual(1, c.byExampleSkiplist(idx.id, { value2: i + 1 }).toArray().length); + assertEqual(1, c.byExample({ value2: i + 1 }).toArray().length); } for (j = 0; j < 4; ++j) { @@ -103,7 +102,7 @@ function recoverySuite () { assertEqual("test" + i, doc.value1); assertEqual("abc" + i, doc.value2); - assertEqual(4, c.byExampleSkiplist(idx.id, { value2: "abc" + i }).toArray().length); + assertEqual(4, c.byExample({ value2: "abc" + i }).toArray().length); } } } diff --git a/js/server/tests/recovery/resume-recovery-simple.js b/js/server/tests/recovery/resume-recovery-simple.js index 6e0af4cab3..ffaa75c0b9 100644 --- a/js/server/tests/recovery/resume-recovery-simple.js +++ b/js/server/tests/recovery/resume-recovery-simple.js @@ -70,14 +70,13 @@ function recoverySuite () { testResumeRecoverySimple : function () { var c = db._collection("UnitTestsRecovery"), doc; - var idx = c.getIndexes()[1]; assertEqual(1, c.count()); doc = c.document("test"); assertEqual(1, doc.foo); assertEqual(2, doc.bar); - assertEqual(1, c.byExampleHash(idx.id, { foo: 1, bar: 2 }).toArray().length); + assertEqual(1, c.byExample({ foo: 1, bar: 2 }).toArray().length); } }; diff --git a/js/server/tests/recovery/resume-recovery.js b/js/server/tests/recovery/resume-recovery.js index 0a2bc5d8ec..28afeb5061 100644 --- a/js/server/tests/recovery/resume-recovery.js +++ b/js/server/tests/recovery/resume-recovery.js @@ -81,7 +81,6 @@ function recoverySuite () { testResumeRecovery : function () { var c = db._collection("UnitTestsRecovery"), i, j, doc; - var idx = c.getIndexes()[1]; assertEqual(50001, c.count()); @@ -89,7 +88,7 @@ function recoverySuite () { doc = c.document("test" + i); assertEqual("test" + i, doc.value1); assertEqual(i, doc.value2); - assertEqual(1, c.byExampleSkiplist(idx.id, { value2: i }).toArray().length); + assertEqual(1, c.byExample({ value2: i }).toArray().length); } for (j = 0; j < 4; ++j) { @@ -98,7 +97,7 @@ function recoverySuite () { assertEqual("test" + i, doc.value1); assertEqual("abc" + i, doc.value2); - assertEqual(4, c.byExampleSkiplist(idx.id, { value2: "abc" + i }).toArray().length); + assertEqual(4, c.byExample({ value2: "abc" + i }).toArray().length); } } }