aboutsummaryrefslogtreecommitdiff
path: root/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java
diff options
context:
space:
mode:
authorDavies Liu <davies@databricks.com>2016-04-29 09:32:42 -0700
committerReynold Xin <rxin@databricks.com>2016-04-29 09:32:42 -0700
commit7feeb82cb7f462e44f7e698c7c3b6ac3a77aade4 (patch)
tree74935040264de3bb4453ec030aa6b94a4577d171 /sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java
parentb6fa7e5934ca5d1c3c757629833396b810894067 (diff)
downloadspark-7feeb82cb7f462e44f7e698c7c3b6ac3a77aade4.tar.gz
spark-7feeb82cb7f462e44f7e698c7c3b6ac3a77aade4.tar.bz2
spark-7feeb82cb7f462e44f7e698c7c3b6ac3a77aade4.zip
[SPARK-14987][SQL] inline hive-service (cli) into sql/hive-thriftserver
## What changes were proposed in this pull request? This PR copy the thrift-server from hive-service-1.2 (including TCLIService.thrift and generated Java source code) into sql/hive-thriftserver, so we can do further cleanup and improvements. ## How was this patch tested? Existing tests. Author: Davies Liu <davies@databricks.com> Closes #12764 from davies/thrift_server.
Diffstat (limited to 'sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java')
-rw-r--r--sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java
new file mode 100644
index 0000000000..c6da52c15a
--- /dev/null
+++ b/sql/hive-thriftserver/src/main/java/org/apache/hive/service/cli/TypeQualifiers.java
@@ -0,0 +1,133 @@
+/**
+ * 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.hive.service.cli;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hadoop.hive.serde2.typeinfo.CharTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.DecimalTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
+import org.apache.hadoop.hive.serde2.typeinfo.VarcharTypeInfo;
+import org.apache.hive.service.cli.thrift.TCLIServiceConstants;
+import org.apache.hive.service.cli.thrift.TTypeQualifierValue;
+import org.apache.hive.service.cli.thrift.TTypeQualifiers;
+
+/**
+ * This class holds type qualifier information for a primitive type,
+ * such as char/varchar length or decimal precision/scale.
+ */
+public class TypeQualifiers {
+ private Integer characterMaximumLength;
+ private Integer precision;
+ private Integer scale;
+
+ public TypeQualifiers() {}
+
+ public Integer getCharacterMaximumLength() {
+ return characterMaximumLength;
+ }
+ public void setCharacterMaximumLength(int characterMaximumLength) {
+ this.characterMaximumLength = characterMaximumLength;
+ }
+
+ public TTypeQualifiers toTTypeQualifiers() {
+ TTypeQualifiers ret = null;
+
+ Map<String, TTypeQualifierValue> qMap = new HashMap<String, TTypeQualifierValue>();
+ if (getCharacterMaximumLength() != null) {
+ TTypeQualifierValue val = new TTypeQualifierValue();
+ val.setI32Value(getCharacterMaximumLength().intValue());
+ qMap.put(TCLIServiceConstants.CHARACTER_MAXIMUM_LENGTH, val);
+ }
+
+ if (precision != null) {
+ TTypeQualifierValue val = new TTypeQualifierValue();
+ val.setI32Value(precision.intValue());
+ qMap.put(TCLIServiceConstants.PRECISION, val);
+ }
+
+ if (scale != null) {
+ TTypeQualifierValue val = new TTypeQualifierValue();
+ val.setI32Value(scale.intValue());
+ qMap.put(TCLIServiceConstants.SCALE, val);
+ }
+
+ if (qMap.size() > 0) {
+ ret = new TTypeQualifiers(qMap);
+ }
+
+ return ret;
+ }
+
+ public static TypeQualifiers fromTTypeQualifiers(TTypeQualifiers ttq) {
+ TypeQualifiers ret = null;
+ if (ttq != null) {
+ ret = new TypeQualifiers();
+ Map<String, TTypeQualifierValue> tqMap = ttq.getQualifiers();
+
+ if (tqMap.containsKey(TCLIServiceConstants.CHARACTER_MAXIMUM_LENGTH)) {
+ ret.setCharacterMaximumLength(
+ tqMap.get(TCLIServiceConstants.CHARACTER_MAXIMUM_LENGTH).getI32Value());
+ }
+
+ if (tqMap.containsKey(TCLIServiceConstants.PRECISION)) {
+ ret.setPrecision(tqMap.get(TCLIServiceConstants.PRECISION).getI32Value());
+ }
+
+ if (tqMap.containsKey(TCLIServiceConstants.SCALE)) {
+ ret.setScale(tqMap.get(TCLIServiceConstants.SCALE).getI32Value());
+ }
+ }
+ return ret;
+ }
+
+ public static TypeQualifiers fromTypeInfo(PrimitiveTypeInfo pti) {
+ TypeQualifiers result = null;
+ if (pti instanceof VarcharTypeInfo) {
+ result = new TypeQualifiers();
+ result.setCharacterMaximumLength(((VarcharTypeInfo)pti).getLength());
+ } else if (pti instanceof CharTypeInfo) {
+ result = new TypeQualifiers();
+ result.setCharacterMaximumLength(((CharTypeInfo)pti).getLength());
+ } else if (pti instanceof DecimalTypeInfo) {
+ result = new TypeQualifiers();
+ result.setPrecision(((DecimalTypeInfo)pti).precision());
+ result.setScale(((DecimalTypeInfo)pti).scale());
+ }
+ return result;
+ }
+
+ public Integer getPrecision() {
+ return precision;
+ }
+
+ public void setPrecision(Integer precision) {
+ this.precision = precision;
+ }
+
+ public Integer getScale() {
+ return scale;
+ }
+
+ public void setScale(Integer scale) {
+ this.scale = scale;
+ }
+
+}