Github user manishgupta88 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1297#discussion_r138941702
--- Diff:
core/src/main/java/org/apache/carbondata/core/datastore/page/UnsafeDecimalColumnPage.java
---
@@ -0,0 +1,274 @@
+/*
+ * 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.carbondata.core.datastore.page;
+
+import java.math.BigDecimal;
+
+import org.apache.carbondata.core.datastore.TableSpec;
+import org.apache.carbondata.core.memory.CarbonUnsafe;
+import org.apache.carbondata.core.memory.MemoryException;
+import org.apache.carbondata.core.memory.UnsafeMemoryManager;
+import org.apache.carbondata.core.metadata.datatype.DataType;
+import org.apache.carbondata.core.util.ByteUtil;
+
+/**
+ * Represents a columnar data for decimal data type column for one page
+ */
+public class UnsafeDecimalColumnPage extends DecimalColumnPage {
+
+ UnsafeDecimalColumnPage(TableSpec.ColumnSpec columnSpec, DataType
dataType, int pageSize)
+ throws MemoryException {
+ super(columnSpec, dataType, pageSize);
+ capacity = (int) (pageSize * DEFAULT_ROW_SIZE * FACTOR);
+ initMemory();
+ }
+
+ UnsafeDecimalColumnPage(TableSpec.ColumnSpec columnSpec, DataType
dataType, int pageSize,
+ int capacity) throws MemoryException {
+ super(columnSpec, dataType, pageSize);
+ this.capacity = capacity;
+ initMemory();
+ }
+
+ private void initMemory() throws MemoryException {
+ switch (dataType) {
+ case BYTE:
+ case SHORT:
+ case INT:
+ case LONG:
+ int size = pageSize << dataType.getSizeBits();
+ memoryBlock = UnsafeMemoryManager.allocateMemoryWithRetry(taskId,
size);
+ baseAddress = memoryBlock.getBaseObject();
+ baseOffset = memoryBlock.getBaseOffset();
+ break;
+ case SHORT_INT:
+ size = pageSize * 3;
+ memoryBlock = UnsafeMemoryManager.allocateMemoryWithRetry(taskId,
size);
+ baseAddress = memoryBlock.getBaseObject();
+ baseOffset = memoryBlock.getBaseOffset();
+ break;
+ case DECIMAL:
+ case STRING:
--- End diff --
yes it will not be string..I will remove
---