blob: 339b191601e141fade7e984a14a59c3e5d6a24d3 [file] [log] [blame]
/*
* 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.phoenix.util;
import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.apache.phoenix.schema.types.PDataType;
import org.apache.phoenix.schema.types.PDataTypeFactory;
import org.junit.Test;
import org.apache.phoenix.thirdparty.com.google.common.collect.Maps;
public class IndexUtilTest {
@Test
public void testIndexNonNullableColumnDataType() {
verifyIndexColumnDataTypes(false,
"{BIGINT=BIGINT, "
+ "BIGINT ARRAY=BIGINT ARRAY, "
+ "BINARY=BINARY, "
+ "BINARY ARRAY=BINARY ARRAY, "
+ "BOOLEAN=BOOLEAN, "
+ "BOOLEAN ARRAY=BOOLEAN ARRAY, "
+ "CHAR=CHAR, "
+ "CHAR ARRAY=CHAR ARRAY, "
+ "DATE=DATE, "
+ "DATE ARRAY=DATE ARRAY, "
+ "DECIMAL=DECIMAL, "
+ "DECIMAL ARRAY=DECIMAL ARRAY, "
+ "DOUBLE=DOUBLE, "
+ "DOUBLE ARRAY=DOUBLE ARRAY, "
+ "FLOAT=FLOAT, "
+ "FLOAT ARRAY=FLOAT ARRAY, "
+ "INTEGER=INTEGER, "
+ "INTEGER ARRAY=INTEGER ARRAY, "
+ "SMALLINT=SMALLINT, "
+ "SMALLINT ARRAY=SMALLINT ARRAY, "
+ "TIME=TIME, "
+ "TIME ARRAY=TIME ARRAY, "
+ "TIMESTAMP=TIMESTAMP, "
+ "TIMESTAMP ARRAY=TIMESTAMP ARRAY, "
+ "TINYINT=TINYINT, "
+ "TINYINT ARRAY=TINYINT ARRAY, "
+ "UNSIGNED_DATE=UNSIGNED_DATE, "
+ "UNSIGNED_DATE ARRAY=UNSIGNED_DATE ARRAY, "
+ "UNSIGNED_DOUBLE=UNSIGNED_DOUBLE, "
+ "UNSIGNED_DOUBLE ARRAY=UNSIGNED_DOUBLE ARRAY, "
+ "UNSIGNED_FLOAT=UNSIGNED_FLOAT, "
+ "UNSIGNED_FLOAT ARRAY=UNSIGNED_FLOAT ARRAY, "
+ "UNSIGNED_INT=UNSIGNED_INT, "
+ "UNSIGNED_INT ARRAY=UNSIGNED_INT ARRAY, "
+ "UNSIGNED_LONG=UNSIGNED_LONG, "
+ "UNSIGNED_LONG ARRAY=UNSIGNED_LONG ARRAY, "
+ "UNSIGNED_SMALLINT=UNSIGNED_SMALLINT, "
+ "UNSIGNED_SMALLINT ARRAY=UNSIGNED_SMALLINT ARRAY, "
+ "UNSIGNED_TIME=UNSIGNED_TIME, "
+ "UNSIGNED_TIME ARRAY=UNSIGNED_TIME ARRAY, "
+ "UNSIGNED_TIMESTAMP=UNSIGNED_TIMESTAMP, "
+ "UNSIGNED_TIMESTAMP ARRAY=UNSIGNED_TIMESTAMP ARRAY, "
+ "UNSIGNED_TINYINT=UNSIGNED_TINYINT, "
+ "UNSIGNED_TINYINT ARRAY=UNSIGNED_TINYINT ARRAY, "
+ "VARBINARY=VARBINARY, "
+ "VARBINARY ARRAY=VARBINARY ARRAY, "
+ "VARCHAR=VARCHAR, "
+ "VARCHAR ARRAY=VARCHAR ARRAY}");
}
@Test
public void testIndexNullableColumnDataType() {
verifyIndexColumnDataTypes(true,
"{BIGINT=DECIMAL, "
+ "BIGINT ARRAY=BIGINT ARRAY, "
+ "BINARY=VARBINARY, "
+ "BINARY ARRAY=BINARY ARRAY, "
+ "BOOLEAN=DECIMAL, "
+ "BOOLEAN ARRAY=BOOLEAN ARRAY, "
+ "CHAR=VARCHAR, "
+ "CHAR ARRAY=CHAR ARRAY, "
+ "DATE=DECIMAL, "
+ "DATE ARRAY=DATE ARRAY, "
+ "DECIMAL=DECIMAL, "
+ "DECIMAL ARRAY=DECIMAL ARRAY, "
+ "DOUBLE=DECIMAL, "
+ "DOUBLE ARRAY=DOUBLE ARRAY, "
+ "FLOAT=DECIMAL, "
+ "FLOAT ARRAY=FLOAT ARRAY, "
+ "INTEGER=DECIMAL, "
+ "INTEGER ARRAY=INTEGER ARRAY, "
+ "SMALLINT=DECIMAL, "
+ "SMALLINT ARRAY=SMALLINT ARRAY, "
+ "TIME=DECIMAL, "
+ "TIME ARRAY=TIME ARRAY, "
+ "TIMESTAMP=DECIMAL, "
+ "TIMESTAMP ARRAY=TIMESTAMP ARRAY, "
+ "TINYINT=DECIMAL, "
+ "TINYINT ARRAY=TINYINT ARRAY, "
+ "UNSIGNED_DATE=DECIMAL, "
+ "UNSIGNED_DATE ARRAY=UNSIGNED_DATE ARRAY, "
+ "UNSIGNED_DOUBLE=DECIMAL, "
+ "UNSIGNED_DOUBLE ARRAY=UNSIGNED_DOUBLE ARRAY, "
+ "UNSIGNED_FLOAT=DECIMAL, "
+ "UNSIGNED_FLOAT ARRAY=UNSIGNED_FLOAT ARRAY, "
+ "UNSIGNED_INT=DECIMAL, "
+ "UNSIGNED_INT ARRAY=UNSIGNED_INT ARRAY, "
+ "UNSIGNED_LONG=DECIMAL, "
+ "UNSIGNED_LONG ARRAY=UNSIGNED_LONG ARRAY, "
+ "UNSIGNED_SMALLINT=DECIMAL, "
+ "UNSIGNED_SMALLINT ARRAY=UNSIGNED_SMALLINT ARRAY, "
+ "UNSIGNED_TIME=DECIMAL, "
+ "UNSIGNED_TIME ARRAY=UNSIGNED_TIME ARRAY, "
+ "UNSIGNED_TIMESTAMP=DECIMAL, "
+ "UNSIGNED_TIMESTAMP ARRAY=UNSIGNED_TIMESTAMP ARRAY, "
+ "UNSIGNED_TINYINT=DECIMAL, "
+ "UNSIGNED_TINYINT ARRAY=UNSIGNED_TINYINT ARRAY, "
+ "VARBINARY=VARBINARY, "
+ "VARBINARY ARRAY=VARBINARY ARRAY, "
+ "VARCHAR=VARCHAR, "
+ "VARCHAR ARRAY=VARCHAR ARRAY}");
}
private void verifyIndexColumnDataTypes(boolean isNullable, String expected) {
Map<String, String> indexColumnDataTypes = Maps.newTreeMap();
for (PDataType dataType : PDataTypeFactory.getInstance().getTypes()) {
if (!dataType.isComparisonSupported()) {
// JSON Datatype can't be an IndexColumn
continue;
}
String indexColumnDataType = "unsupported";
try {
indexColumnDataType = IndexUtil.getIndexColumnDataType(isNullable, dataType).toString();
} catch (IllegalArgumentException e) {
}
indexColumnDataTypes.put(dataType.toString(), indexColumnDataType);
}
assertEquals(expected, indexColumnDataTypes.toString());
}
}