diff --git a/core/src/main/java/org/apache/carbondata/core/datastore/TableSpec.java b/core/src/main/java/org/apache/carbondata/core/datastore/TableSpec.java
index d0b8b3c..1b5cfb5 100644
--- a/core/src/main/java/org/apache/carbondata/core/datastore/TableSpec.java
+++ b/core/src/main/java/org/apache/carbondata/core/datastore/TableSpec.java
@@ -84,19 +84,20 @@
     List<DimensionSpec> dictDimensionSpec = new ArrayList<>();
     int dimIndex = 0;
     DimensionSpec spec;
-    short actualPosition = 0;
+    short dictActualPosition = 0;
+    short noDictActualPosition = 0;
     // sort step's output is based on sort column order i.e sort columns data will be present
     // ahead of non sort columns, so table spec also need to add dimension spec in same manner
     for (int i = 0; i < dimensions.size(); i++) {
       CarbonDimension dimension = dimensions.get(i);
       if (dimension.isComplex()) {
-        spec = new DimensionSpec(ColumnType.COMPLEX, dimension, actualPosition++);
+        spec = new DimensionSpec(ColumnType.COMPLEX, dimension, noDictActualPosition++);
         dimensionSpec[dimIndex++] = spec;
         noDictionaryDimensionSpec.add(spec);
         noSortNoDictDimSpec.add(spec);
       } else if (dimension.getDataType() == DataTypes.TIMESTAMP && !dimension
           .isDirectDictionaryEncoding()) {
-        spec = new DimensionSpec(ColumnType.PLAIN_VALUE, dimension, actualPosition++);
+        spec = new DimensionSpec(ColumnType.PLAIN_VALUE, dimension, noDictActualPosition++);
         dimensionSpec[dimIndex++] = spec;
         noDictionaryDimensionSpec.add(spec);
         if (dimension.isSortColumn()) {
@@ -105,7 +106,7 @@
           noSortNoDictDimSpec.add(spec);
         }
       } else if (dimension.isDirectDictionaryEncoding()) {
-        spec = new DimensionSpec(ColumnType.DIRECT_DICTIONARY, dimension, actualPosition++);
+        spec = new DimensionSpec(ColumnType.DIRECT_DICTIONARY, dimension, dictActualPosition++);
         dimensionSpec[dimIndex++] = spec;
         dictDimensionSpec.add(spec);
         if (dimension.isSortColumn()) {
@@ -114,7 +115,7 @@
           noSortDictDimSpec.add(spec);
         }
       } else if (dimension.isGlobalDictionaryEncoding()) {
-        spec = new DimensionSpec(ColumnType.GLOBAL_DICTIONARY, dimension, actualPosition++);
+        spec = new DimensionSpec(ColumnType.GLOBAL_DICTIONARY, dimension, dictActualPosition++);
         dimensionSpec[dimIndex++] = spec;
         dictDimensionSpec.add(spec);
         if (dimension.isSortColumn()) {
@@ -123,7 +124,7 @@
           noSortDictDimSpec.add(spec);
         }
       } else {
-        spec = new DimensionSpec(ColumnType.PLAIN_VALUE, dimension, actualPosition++);
+        spec = new DimensionSpec(ColumnType.PLAIN_VALUE, dimension, noDictActualPosition++);
         dimensionSpec[dimIndex++] = spec;
         noDictionaryDimensionSpec.add(spec);
         if (dimension.isSortColumn()) {
