This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit ff271b71ac132def49f3d72653218aa31a58ae10 Author: Dmitry Lychagin <[email protected]> AuthorDate: Thu Oct 31 11:09:25 2019 -0700 [NO ISSUE][COMP] Fix internal error with composite key index - user model changes: no - storage format changes: no - interface changes: no Details: - Fixed ArrayIndexOutOfBoundsException in BTreeAccessMethod.createIndexSearchPlan() when there's a composite key index and a query predicate that operates on a subset of its key fields. E.g. create index ... on .. (a,b,c); select ... from ... where a = ... and c = ... Change-Id: I87deb2537a97789b93a7174f97470b46a0558188 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/4003 Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> --- .../am/AbstractIntroduceAccessMethodRule.java | 2 +- .../btree-index/btree-composite-key-03.sqlpp | 49 ++++++++++++++++++++++ .../btree-composite-key-non-enforced-03.sqlpp | 43 +++++++++++++++++++ .../btree-index/btree-composite-key-03.plan | 15 +++++++ .../btree-index/non-enforced-composite-key/11.plan | 2 +- .../btree-composite-key-non-enforced-03.plan | 17 ++++++++ .../btree-index-composite-key-03.1.ddl.sqlpp | 44 +++++++++++++++++++ .../btree-index-composite-key-03.2.update.sqlpp | 26 ++++++++++++ .../btree-index-composite-key-03.3.query.sqlpp | 28 +++++++++++++ .../btree-index-composite-key-03.1.ddl.sqlpp | 39 +++++++++++++++++ .../btree-index-composite-key-03.2.update.sqlpp | 35 ++++++++++++++++ .../btree-index-composite-key-03.3.query.sqlpp | 27 ++++++++++++ .../btree-index-composite-key-03.3.adm | 1 + .../btree-index-composite-key-03.3.adm | 1 + .../test/resources/runtimets/testsuite_sqlpp.xml | 10 +++++ 15 files changed, 337 insertions(+), 2 deletions(-) diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java index d232ce0..6583342 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/AbstractIntroduceAccessMethodRule.java @@ -285,13 +285,13 @@ public abstract class AbstractIntroduceAccessMethodRule implements IAlgebraicRew boolean allUsed = true; int lastFieldMatched = -1; - boolean foundKeyField = false; matchedExpressions.clear(); numMatchedKeys = 0; for (int i = 0; i < index.getKeyFieldNames().size(); i++) { List<String> keyField = index.getKeyFieldNames().get(i); final IAType keyType = index.getKeyFieldTypes().get(i); + boolean foundKeyField = false; Iterator<Pair<Integer, Integer>> exprsAndVarIter = indexExprAndVarEntry.getValue().iterator(); while (exprsAndVarIter.hasNext()) { final Pair<Integer, Integer> exprAndVarIdx = exprsAndVarIter.next(); diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-composite-key-03.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-composite-key-03.sqlpp new file mode 100644 index 0000000..5cfe1f3 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/btree-index/btree-composite-key-03.sqlpp @@ -0,0 +1,49 @@ +/* + * 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. + */ +/* + * Description : Test that BTree index is used in query plan. + * : Query predicate that skips one of the indexed + * : fields of a composite index. + * : Define the BTree index on a composite key (fname,age,lname) + * : predicate => WHERE fname = ... and lname = ... + * Expected Result : Success + */ + +drop dataverse test if exists; +create dataverse test; + +use test; + +create type test.Emp as + closed { + id : bigint, + fname : string, + lname : string, + age : bigint, + dept : string +}; + +create dataset employee(Emp) primary key id; + +create index idx_employee_fal on employee (fname,age,lname) type btree; + +select element l +from employee as l +where ((l.fname = 'Julio') and (l.lname = 'Isa')) +; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-03.sqlpp b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-03.sqlpp new file mode 100644 index 0000000..b644b15 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-03.sqlpp @@ -0,0 +1,43 @@ +/* + * 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. + */ +/* +* Description : Index selection for non-enforced indexes. +* : Query predicate that skips one of the indexed +* : fields of a composite index. +* : Define the BTree index on a composite key (c_x,c_y,c_z) +* : predicate => WHERE c_x = ... and c_z = ... +* Expected Res : Success +* Date : 10 Oct 2019 +*/ +drop dataverse test if exists; +create dataverse test; +use test; + +create type TestOpenType as open { + c_id: int64 +}; + +create dataset TestOpen(TestOpenType) +primary key c_id; + +create index idx_xyz on TestOpen(c_x:string, c_y:string, c_z:string); + +select value t.c_value +from TestOpen t +where c_x = "x2" AND c_z = "z2"; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-composite-key-03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-composite-key-03.plan new file mode 100644 index 0000000..eb0128b --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-composite-key-03.plan @@ -0,0 +1,15 @@ +-- DISTRIBUTE_RESULT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STABLE_SORT [$$23(ASC)] |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/btree-index/non-enforced-composite-key/11.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/btree-index/non-enforced-composite-key/11.plan index 9c6b8d7..813805c 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/btree-index/non-enforced-composite-key/11.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-open-index/btree-index/non-enforced-composite-key/11.plan @@ -15,7 +15,7 @@ -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- BTREE_SEARCH |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- STABLE_SORT [$$34(ASC)] |PARTITIONED| + -- STABLE_SORT [$$33(ASC)] |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-03.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-03.plan new file mode 100644 index 0000000..7a2ab4c --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/open-index-non-enforced/btree-composite-key-non-enforced/btree-composite-key-non-enforced-03.plan @@ -0,0 +1,17 @@ +-- DISTRIBUTE_RESULT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STABLE_SORT [$$25(ASC)] |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.1.ddl.sqlpp new file mode 100644 index 0000000..29c9879 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.1.ddl.sqlpp @@ -0,0 +1,44 @@ +/* + * 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. + */ +/* + * Description : Test that BTree index is used in query plan. + * : Query predicate that skips one of the indexed + * : fields of a composite index. + * : define the BTree index on a composite key (fname,age,lname) + * : predicate => WHERE fname = ... and lname = ... + * Expected Result : Success + */ + +drop dataverse test if exists; +create dataverse test; + +use test; + +create type test.Emp as + closed { + id : bigint, + fname : string, + lname : string, + age : bigint, + dept : string +}; + +create dataset employee(Emp) primary key id; + +create index idx_employee_fal on employee (fname,age,lname) type btree; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.2.update.sqlpp new file mode 100644 index 0000000..dd393dd --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.2.update.sqlpp @@ -0,0 +1,26 @@ +/* + * 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. + */ +/* + * Description : Test that BTree index is used in query plan + * Expected Result : Success + */ + +use test; + +load dataset employee using localfs ((`path`=`asterix_nc1://data/names.adm`),(`format`=`delimited-text`),(`delimiter`=`|`)); \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.query.sqlpp new file mode 100644 index 0000000..9890089 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.query.sqlpp @@ -0,0 +1,28 @@ +/* + * 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. + */ +/* + * Description : Test that BTree index is used in query plan + * Expected Result : Success + */ + +use test; + +select element l +from employee as l +where ((l.fname = 'Julio') and (l.lname = 'Isa')); \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.1.ddl.sqlpp new file mode 100644 index 0000000..88441c9 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.1.ddl.sqlpp @@ -0,0 +1,39 @@ +/* + * 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. + */ +/* +* Description : Index selection for non-enforced indexes. +* : Query predicate that skips one of the indexed +* : fields of a composite index. +* : Define the BTree index on a composite key (c_x,c_y,c_z) +* : predicate => WHERE c_x = ... and c_z = ... +* Expected Res : Success +* Date : 10 Oct 2019 +*/ +drop dataverse test if exists; +create dataverse test; +use test; + +create type TestOpenType as open { + c_id: int64 +}; + +create dataset TestOpen(TestOpenType) +primary key c_id; + +create index idx_xyz on TestOpen(c_x:string, c_y:string, c_z:string); \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.2.update.sqlpp new file mode 100644 index 0000000..9027b57 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.2.update.sqlpp @@ -0,0 +1,35 @@ +/* + * 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. + */ + +use test; + +insert into TestOpen ({ + "c_id": 1, + "c_x": "x1", + "c_y": "y1", + "c_z": "z1", + "c_value": 1 +}); +insert into TestOpen ({ + "c_id": 2, + "c_x": "x2", + "c_y": "y2", + "c_z": "z2", + "c_value": 2 +}); \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.query.sqlpp new file mode 100644 index 0000000..f9b4fdd --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.query.sqlpp @@ -0,0 +1,27 @@ +/* + * 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. + */ + +use test; + +/* The index is on (c_x, c_y, c_z), but + the WHERE clause only has c_x and c_z */ + +select value t.c_value +from TestOpen t +where c_x = "x2" AND c_z = "z2"; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.adm new file mode 100644 index 0000000..99238f8 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.adm @@ -0,0 +1 @@ +{ "id": 881, "fname": "Julio", "lname": "Isa", "age": 38, "dept": "Sales" } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.adm new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/open-index-non-enforced/index-selection/btree-index-composite-key-03/btree-index-composite-key-03.3.adm @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index e49b36d..929ecd5 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -3332,6 +3332,11 @@ </compilation-unit> </test-case> <test-case FilePath="index-selection"> + <compilation-unit name="btree-index-composite-key-03"> + <output-dir compare="Text">btree-index-composite-key-03</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="index-selection"> <compilation-unit name="btree-sec-primary-index"> <output-dir compare="Text">btree-sec-primary-index</output-dir> </compilation-unit> @@ -4243,6 +4248,11 @@ <output-dir compare="Text">btree-index-04</output-dir> </compilation-unit> </test-case> + <test-case FilePath="open-index-non-enforced/index-selection"> + <compilation-unit name="btree-index-composite-key-03"> + <output-dir compare="Text">btree-index-composite-key-03</output-dir> + </compilation-unit> + </test-case> <test-case FilePath="open-index-non-enforced/correlated-index-selection"> <compilation-unit name="btree-index-01"> <output-dir compare="Text">btree-index-01</output-dir>
