>From Janhavi Tripurwar <[email protected]>:
Janhavi Tripurwar has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19831 )
Change subject: wip rpad func
......................................................................
wip rpad func
Change-Id: I9f003b52549177cdbbd15927dc9d7baa85040c99
---
M
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
A
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadDescriptor.java
A
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadEval.java
M
asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
4 files changed, 112 insertions(+), 0 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/31/19831/1
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
index f907aaf..6b3c2aa 100644
---
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/BuiltinFunctions.java
@@ -399,6 +399,7 @@
public static final FunctionIdentifier STRING_SPLIT =
FunctionConstants.newAsterix("split", 2);
public static final FunctionIdentifier STRING_PARSE_JSON =
FunctionConstants.newAsterix("parse-json", 1);
public static final FunctionIdentifier STRING_LPAD =
FunctionConstants.newAsterix("lpad", 3);
+ public static final FunctionIdentifier STRING_RPAD =
FunctionConstants.newAsterix("rpad", 3);
public static final FunctionIdentifier DATASET =
FunctionConstants.newAsterix("dataset",
FunctionIdentifier.VARARGS); // 1, 2 or 3
@@ -1340,6 +1341,7 @@
addFunction(GET_TYPE, AStringTypeComputer.INSTANCE, true);
addFunction(STRING_LPAD, AStringTypeComputer.INSTANCE_NULLABLE, true);
+ addFunction(STRING_RPAD, AStringTypeComputer.INSTANCE_NULLABLE, true);
addPrivateFunction(EQ, BooleanFunctionTypeComputer.INSTANCE, true);
addPrivateFunction(LE, BooleanFunctionTypeComputer.INSTANCE, true);
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadDescriptor.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadDescriptor.java
new file mode 100644
index 0000000..ce4fb74
--- /dev/null
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadDescriptor.java
@@ -0,0 +1,54 @@
+/*
+ * 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.asterix.runtime.evaluators.functions;
+
+import org.apache.asterix.om.functions.BuiltinFunctions;
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import
org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IEvaluatorContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+
+public class StringRpadDescriptor extends
AbstractScalarFunctionDynamicDescriptor {
+ private static final long serialVersionUID = 1L;
+
+ public static final IFunctionDescriptorFactory FACTORY =
StringRpadDescriptor::new;
+
+ @Override
+ public FunctionIdentifier getIdentifier() {
+ return BuiltinFunctions.STRING_RPAD;
+ }
+
+ @Override
+ public IScalarEvaluatorFactory
createEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+ return new IScalarEvaluatorFactory() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public IScalarEvaluator createScalarEvaluator(IEvaluatorContext
ctx) throws HyracksDataException {
+ return new StringRpadEval(ctx, args[0], args[1], args[2],
StringRpadDescriptor.this.getIdentifier(),
+ sourceLoc) {
+ };
+ }
+ };
+ }
+}
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadEval.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadEval.java
new file mode 100644
index 0000000..728f22a
--- /dev/null
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/StringRpadEval.java
@@ -0,0 +1,45 @@
+/*
+ * 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.asterix.runtime.evaluators.functions;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import org.apache.hyracks.api.context.IEvaluatorContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.exceptions.SourceLocation;
+
+public class StringRpadEval extends StringPadEvaluator {
+
+ public StringRpadEval(IEvaluatorContext context, IScalarEvaluatorFactory
eval0, IScalarEvaluatorFactory eval1,
+ IScalarEvaluatorFactory eval2, FunctionIdentifier
funcID, SourceLocation sourceLoc)
+ throws HyracksDataException {
+ super(context, eval0, eval1, eval2, funcID, sourceLoc);
+ }
+
+ @Override
+ public void doPad(List<Integer> originalStringCps, List<Integer>
padStringCps, int numCodePointsToPad)
+ throws IOException {
+ appendCodePoints(originalStringCps);
+ appendPaddingCodepoints(padStringCps, numCodePointsToPad);
+ }
+}
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
index 434a4fc..584c44e 100644
---
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
@@ -501,6 +501,7 @@
import org.apache.asterix.runtime.evaluators.functions.StringReplaceDescriptor;
import
org.apache.asterix.runtime.evaluators.functions.StringReplaceWithLimitDescriptor;
import org.apache.asterix.runtime.evaluators.functions.StringReverseDescriptor;
+import org.apache.asterix.runtime.evaluators.functions.StringRpadDescriptor;
import org.apache.asterix.runtime.evaluators.functions.StringSplitDescriptor;
import
org.apache.asterix.runtime.evaluators.functions.StringStartsWithDescriptor;
import
org.apache.asterix.runtime.evaluators.functions.StringToCodePointDescriptor;
@@ -1144,6 +1145,7 @@
fc.add(StringReverseDescriptor.FACTORY);
fc.add(StringSplitDescriptor.FACTORY);
fc.add(StringLpadDescriptor.FACTORY);
+ fc.add(StringRpadDescriptor.FACTORY);
// Constructors
fc.add(ABooleanConstructorDescriptor.FACTORY);
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19831
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: ionic
Gerrit-Change-Id: I9f003b52549177cdbbd15927dc9d7baa85040c99
Gerrit-Change-Number: 19831
Gerrit-PatchSet: 1
Gerrit-Owner: Janhavi Tripurwar <[email protected]>
Gerrit-MessageType: newchange