Repository: vxquery Updated Branches: refs/heads/master 0419d3981 -> 8129616e9
Implement libjn:project and libjn:remove-keys Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/8129616e Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/8129616e Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/8129616e Branch: refs/heads/master Commit: 8129616e9e868b953e228de24bcb7a08202c3254 Parents: 0419d39 Author: riyafa <[email protected]> Authored: Mon Aug 8 22:25:37 2016 +0530 Committer: Preston Carman <[email protected]> Committed: Fri Aug 12 11:51:54 2016 -0700 ---------------------------------------------------------------------- .../vxquery/functions/builtin-functions.xml | 16 ++ .../AbstractLibjnProjectScalarEvaluator.java | 160 +++++++++++++++++++ .../json/LibjnProjectScalarEvaluator.java | 35 ++++ .../LibjnProjectScalarEvaluatorFactory.java | 39 +++++ .../json/LibjnRemoveKeysScalarEvaluator.java | 35 ++++ .../LibjnRemoveKeysScalarEvaluatorFactory.java | 39 +++++ .../SimpleObjectUnionScalarEvaluator.java | 1 - .../resources/ExpectedTestResults/project.txt | 13 ++ .../ExpectedTestResults/remove_keys.txt | 14 ++ .../Queries/XQuery/Json/Libraries/project.xq | 61 +++++++ .../XQuery/Json/Libraries/remove_keys.xq | 60 +++++++ .../test/resources/cat/LibrariesInJSONiq.xml | 10 ++ 12 files changed, 482 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml b/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml index 93f2cb3..43839f8 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml +++ b/vxquery-core/src/main/java/org/apache/vxquery/functions/builtin-functions.xml @@ -1241,4 +1241,20 @@ <return type="object()*"/> <runtime type="scalar" class="org.apache.vxquery.runtime.functions.json.LibjnDescendantPairsScalarEvaluatorFactory"/> </function> + + <!-- libjn:project($sequence as item()*, $keys as xs:string*) as item()* --> + <function name="libjn:project"> + <param name="sequence" type="item()*"/> + <param name="keys" type="xs:string*"/> + <return type="item()*"/> + <runtime type="scalar" class="org.apache.vxquery.runtime.functions.json.LibjnProjectScalarEvaluatorFactory"/> + </function> + + <!-- libjn:remove-keys($sequence as item()*, $keys as xs:string*) as item()* --> + <function name="libjn:remove-keys"> + <param name="sequence" type="item()*"/> + <param name="keys" type="xs:string*"/> + <return type="item()*"/> + <runtime type="scalar" class="org.apache.vxquery.runtime.functions.json.LibjnRemoveKeysScalarEvaluatorFactory"/> + </function> </functions> http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/AbstractLibjnProjectScalarEvaluator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/AbstractLibjnProjectScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/AbstractLibjnProjectScalarEvaluator.java new file mode 100644 index 0000000..d81cc7d --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/AbstractLibjnProjectScalarEvaluator.java @@ -0,0 +1,160 @@ +/* +* 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.vxquery.runtime.functions.json; + +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; +import org.apache.hyracks.api.context.IHyracksTaskContext; +import org.apache.hyracks.data.std.api.IPointable; +import org.apache.hyracks.data.std.primitive.UTF8StringPointable; +import org.apache.hyracks.data.std.util.ArrayBackedValueStorage; +import org.apache.vxquery.datamodel.accessors.SequencePointable; +import org.apache.vxquery.datamodel.accessors.TaggedValuePointable; +import org.apache.vxquery.datamodel.accessors.jsonitem.ObjectPointable; +import org.apache.vxquery.datamodel.builders.jsonitem.ObjectBuilder; +import org.apache.vxquery.datamodel.builders.sequence.SequenceBuilder; +import org.apache.vxquery.datamodel.values.ValueTag; +import org.apache.vxquery.exceptions.ErrorCode; +import org.apache.vxquery.exceptions.SystemException; +import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator; +import org.apache.vxquery.runtime.functions.util.FunctionHelper; + +import java.io.IOException; + +public abstract class AbstractLibjnProjectScalarEvaluator extends AbstractTaggedValueArgumentScalarEvaluator { + protected final IHyracksTaskContext ctx; + protected final ObjectPointable op; + protected final UTF8StringPointable stringKey; + protected final ObjectBuilder ob; + protected final ArrayBackedValueStorage abvs, abvs1; + protected final SequenceBuilder sb; + protected final SequencePointable sp1; + protected final TaggedValuePointable tvp1; + + public AbstractLibjnProjectScalarEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) { + super(args); + this.ctx = ctx; + stringKey = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable(); + ob = new ObjectBuilder(); + abvs = new ArrayBackedValueStorage(); + abvs1 = new ArrayBackedValueStorage(); + sb = new SequenceBuilder(); + op = (ObjectPointable) ObjectPointable.FACTORY.createPointable(); + sp1 = (SequencePointable) SequencePointable.FACTORY.createPointable(); + tvp1 = (TaggedValuePointable) TaggedValuePointable.FACTORY.createPointable(); + } + + @Override + protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException { + TaggedValuePointable sequence = args[0]; + TaggedValuePointable keys = args[1]; + if (keys.getTag() != ValueTag.SEQUENCE_TAG && keys.getTag() != ValueTag.XS_STRING_TAG) { + throw new SystemException(ErrorCode.FORG0006); + } + TaggedValuePointable tempTvp = ppool.takeOne(TaggedValuePointable.class); + SequencePointable sp = ppool.takeOne(SequencePointable.class); + try { + abvs1.reset(); + sb.reset(abvs1); + if (sequence.getTag() == ValueTag.SEQUENCE_TAG) { + sequence.getValue(sp); + for (int i = 0; i < sp.getEntryCount(); ++i) { + sp.getEntry(i, tempTvp); + if (tempTvp.getTag() == ValueTag.OBJECT_TAG) { + tempTvp.getValue(op); + op.getKeys(tempTvp); + addPairs(tempTvp, keys); + } else { + sb.addItem(tempTvp); + } + } + } else if (sequence.getTag() == ValueTag.OBJECT_TAG) { + sequence.getValue(op); + addPairs(tempTvp, keys); + } else { + sb.addItem(sequence); + } + sb.finish(); + result.set(abvs1); + } catch (IOException e) { + throw new SystemException(ErrorCode.SYSE0001, e); + } finally { + ppool.giveBack(tempTvp); + ppool.giveBack(sp); + } + } + + protected void addPair(TaggedValuePointable tempTvp, TaggedValuePointable tempValue) + throws IOException, SystemException { + tempTvp.getValue(stringKey); + op.getValue(stringKey, tempValue); + ob.addItem(stringKey, tempValue); + } + + private void addPairs(TaggedValuePointable tvp2, TaggedValuePointable keys) throws IOException, SystemException { + op.getKeys(tvp2); + if (tvp2.getTag() == ValueTag.XS_STRING_TAG) { + if (keyCheck(tvp2, keys)) { + abvs.reset(); + ob.reset(abvs); + addPair(tvp2, tvp1); + ob.finish(); + sb.addItem(abvs); + } + } else if (tvp2.getTag() == ValueTag.SEQUENCE_TAG) { + tvp2.getValue(sp1); + boolean found = false; + for (int j = 0; j < sp1.getEntryCount(); ++j) { + sp1.getEntry(j, tvp2); + if (keyCheck(tvp2, keys)) { + if (!found) { + abvs.reset(); + ob.reset(abvs); + found = true; + } + addPair(tvp2, tvp1); + } + } + if (found) { + ob.finish(); + sb.addItem(abvs); + } + } + + } + + protected abstract boolean keyCheck(TaggedValuePointable objTvp, TaggedValuePointable keys) throws SystemException; + + protected boolean isKeyFound(TaggedValuePointable tvp, TaggedValuePointable keys) throws SystemException { + if (keys.getTag() == ValueTag.SEQUENCE_TAG) { + keys.getValue(sp1); + for (int i = 0; i < sp1.getEntryCount(); i++) { + sp1.getEntry(i, tvp1); + if (tvp1.getTag() != ValueTag.XS_STRING_TAG) { + throw new SystemException(ErrorCode.FORG0006); + } + if (FunctionHelper.arraysEqual(tvp1, tvp)) { + return true; + } + } + } else if (keys.getTag() == ValueTag.XS_STRING_TAG) { + if (FunctionHelper.arraysEqual(tvp, keys)) { + return true; + } + } + return false; + } +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluator.java new file mode 100644 index 0000000..171179d --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluator.java @@ -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. +*/ +package org.apache.vxquery.runtime.functions.json; + +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; +import org.apache.hyracks.api.context.IHyracksTaskContext; +import org.apache.vxquery.datamodel.accessors.TaggedValuePointable; +import org.apache.vxquery.exceptions.SystemException; + +public class LibjnProjectScalarEvaluator extends AbstractLibjnProjectScalarEvaluator { + + public LibjnProjectScalarEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) { + super(ctx, args); + } + + @Override + protected boolean keyCheck(TaggedValuePointable objTvp, TaggedValuePointable keys) throws SystemException { + return isKeyFound(objTvp, keys); + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluatorFactory.java new file mode 100644 index 0000000..54f5fd0 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnProjectScalarEvaluatorFactory.java @@ -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. +*/ +package org.apache.vxquery.runtime.functions.json; + +import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException; +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory; +import org.apache.hyracks.api.context.IHyracksTaskContext; +import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory; + +public class LibjnProjectScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory { + + private static final long serialVersionUID = 1L; + + public LibjnProjectScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) { + super(args); + } + + @Override + protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) + throws AlgebricksException { + return new LibjnProjectScalarEvaluator(ctx, args); + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluator.java new file mode 100644 index 0000000..370e535 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluator.java @@ -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. +*/ +package org.apache.vxquery.runtime.functions.json; + +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; +import org.apache.hyracks.api.context.IHyracksTaskContext; +import org.apache.vxquery.datamodel.accessors.TaggedValuePointable; +import org.apache.vxquery.exceptions.SystemException; + +public class LibjnRemoveKeysScalarEvaluator extends AbstractLibjnProjectScalarEvaluator { + + public LibjnRemoveKeysScalarEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) { + super(ctx, args); + } + + @Override + protected boolean keyCheck(TaggedValuePointable objTvp, TaggedValuePointable keys) throws SystemException { + return !isKeyFound(objTvp, keys); + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluatorFactory.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluatorFactory.java new file mode 100644 index 0000000..4563014 --- /dev/null +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/json/LibjnRemoveKeysScalarEvaluatorFactory.java @@ -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. +*/ +package org.apache.vxquery.runtime.functions.json; + +import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException; +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; +import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory; +import org.apache.hyracks.api.context.IHyracksTaskContext; +import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory; + +public class LibjnRemoveKeysScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory { + + private static final long serialVersionUID = 1L; + + public LibjnRemoveKeysScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) { + super(args); + } + + @Override + protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args) + throws AlgebricksException { + return new LibjnRemoveKeysScalarEvaluator(ctx, args); + } + +} http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/jsonitem/SimpleObjectUnionScalarEvaluator.java ---------------------------------------------------------------------- diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/jsonitem/SimpleObjectUnionScalarEvaluator.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/jsonitem/SimpleObjectUnionScalarEvaluator.java index 7583918..2b13a9f 100644 --- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/jsonitem/SimpleObjectUnionScalarEvaluator.java +++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/jsonitem/SimpleObjectUnionScalarEvaluator.java @@ -102,7 +102,6 @@ public class SimpleObjectUnionScalarEvaluator extends AbstractObjectConstructorS } else if (tempTvp.getTag() == ValueTag.SEQUENCE_TAG) { tempTvp.getValue(sp1); for (int j = 0; j < sp1.getEntryCount(); ++j) { - key = ppool.takeOne(TaggedValuePointable.class); sp1.getEntry(j, tempTvp); addPair(tempTvp, tempValue); } http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-xtest/src/test/resources/ExpectedTestResults/project.txt ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/ExpectedTestResults/project.txt b/vxquery-xtest/src/test/resources/ExpectedTestResults/project.txt new file mode 100644 index 0000000..aefe4f5 --- /dev/null +++ b/vxquery-xtest/src/test/resources/ExpectedTestResults/project.txt @@ -0,0 +1,13 @@ +{"Captain":"Kirk","First Officer":"Spock"} +[1,2,3,4] +{"Captain":"Archer"} +true +1 +null +{"Captain":"Archer"} +true +1 +null +true +1 +null \ No newline at end of file http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-xtest/src/test/resources/ExpectedTestResults/remove_keys.txt ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/ExpectedTestResults/remove_keys.txt b/vxquery-xtest/src/test/resources/ExpectedTestResults/remove_keys.txt new file mode 100644 index 0000000..3fa2a35 --- /dev/null +++ b/vxquery-xtest/src/test/resources/ExpectedTestResults/remove_keys.txt @@ -0,0 +1,14 @@ +{"Engineer":"Scott"} +[1,2,3,4] +{"Engineer":"Trip"} +true +1 +null +{"Engineer":"Trip"} +true +1 +null +{"Captain":"Archer","Engineer":"Trip"} +true +1 +null \ No newline at end of file http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/project.xq ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/project.xq b/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/project.xq new file mode 100644 index 0000000..2e78867 --- /dev/null +++ b/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/project.xq @@ -0,0 +1,61 @@ +(: 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. :) + +(: JSONiq libjn:project :) +libjn:project( + ( + { + "Captain" : "Kirk", + "First Officer" : "Spock", + "Engineer" : "Scott" + }, + [ 1, 2, 3, 4 ], + { + "Captain" : "Archer", + "Engineer" : "Trip" + }, + true(), + 1, + jn:null() + ), + ("Captain", "First Officer", "XQuery Evangelist") +), +libjn:project( + ( + { + "Captain" : "Archer", + "Engineer" : "Trip" + }, + true(), + 1, + jn:null() + ), + "Captain" +), +libjn:project( + ( + { + "Captain" : "Archer", + "Engineer" : "Trip" + }, + true(), + 1, + jn:null() + ), + () +) + http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/remove_keys.xq ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/remove_keys.xq b/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/remove_keys.xq new file mode 100644 index 0000000..348e57c --- /dev/null +++ b/vxquery-xtest/src/test/resources/Queries/XQuery/Json/Libraries/remove_keys.xq @@ -0,0 +1,60 @@ +(: 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. :) + +(: JSONiq libjn:remove-keys :) +libjn:remove-keys( + ( + { + "Captain" : "Kirk", + "First Officer" : "Spock", + "Engineer" : "Scott" + }, + [ 1, 2, 3, 4 ], + { + "Captain" : "Archer", + "Engineer" : "Trip" + }, + true(), + 1, + jn:null() + ), + ("Captain", "First Officer", "XQuery Evangelist") +), +libjn:remove-keys( + ( + { + "Captain" : "Archer", + "Engineer" : "Trip" + }, + true(), + 1, + jn:null() + ), + "Captain" +), +libjn:remove-keys( + ( + { + "Captain" : "Archer", + "Engineer" : "Trip" + }, + true(), + 1, + jn:null() + ), + () +) http://git-wip-us.apache.org/repos/asf/vxquery/blob/8129616e/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml ---------------------------------------------------------------------- diff --git a/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml b/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml index fcd0eac..66cab65 100644 --- a/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml +++ b/vxquery-xtest/src/test/resources/cat/LibrariesInJSONiq.xml @@ -56,4 +56,14 @@ <query name="descendant_pairs" date="2016-07-29"/> <output-file compare="Text">descendant_pairs.txt</output-file> </test-case> + <test-case name="project" FilePath="Json/Libraries/" Creator="Riyafa Abdul Hameed"> + <description>Json Libraries.</description> + <query name="project" date="2016-07-31"/> + <output-file compare="Text">project.txt</output-file> + </test-case> + <test-case name="remove-keys" FilePath="Json/Libraries/" Creator="Riyafa Abdul Hameed"> + <description>Json Libraries.</description> + <query name="remove_keys" date="2016-07-31"/> + <output-file compare="Text">remove_keys.txt</output-file> + </test-case> </test-group>
