@Test public void testArrayPrependFunction11() throws Exception { Object[] o = new Object[]{BigDecimal.valueOf(2345), BigDecimal.valueOf(-23.45), BigDecimal.valueOf(785)}; Object[] o2 = new Object[]{BigDecimal.valueOf(-19), BigDecimal.valueOf(2345), BigDecimal.valueOf(-23.45), BigDecimal.valueOf(785)}; Object element = BigDecimal.valueOf(-19); PDataType baseType = PDecimal.INSTANCE; PhoenixArray arr = new PhoenixArray(baseType, o); PhoenixArray expected = new PhoenixArray(baseType, o2); test(arr, element, PDataType.fromTypeId(baseType.getSqlType() + PDataType.ARRAY_TYPE_BASE), null, null, baseType, null, null, expected, SortOrder.ASC, SortOrder.ASC); }
@Test public void testForDate() throws SQLException { Object element = new Date(23); Object length = 3; PDataType baseType = PDate.INSTANCE; PhoenixArray e = new PhoenixArray(baseType, new Object[]{new Date(23), new Date(23), new Date(23)}); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.ASC, SortOrder.ASC); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.ASC, SortOrder.DESC); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.DESC, SortOrder.DESC); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.DESC, SortOrder.ASC); }
@Test public void testStringToArrayFunction3() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY(string1, delimiter1, 'a') FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{null, "b", "c", "d"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testStringToArrayFunction7() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY(string2, delimiter2, '1') FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{null, "2", "3", "4"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testStringToArrayFunction10() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY('hello,hello,hello', delimiter1) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"hello", "hello", "hello"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testStringToArrayFunctionWithNestedFunctions2() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY(ARRAY_TO_STRING(ARRAY['a', 'b', 'c'], delimiter2), delimiter2, 'b') FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"a", null, "c"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testArrayRemoveFunction3() throws Exception { Object[] o = new Object[] { "1", "2", "2", "4" }; Object[] o2 = new Object[] { "1", "4" }; Object element = "2"; PDataType baseType = PVarchar.INSTANCE; PhoenixArray arr = new PhoenixArray(baseType, o); PhoenixArray expected = new PhoenixArray(baseType, o2); test(arr, element, PDataType.fromTypeId(baseType.getSqlType() + PDataType.ARRAY_TYPE_BASE), null, null, baseType, null, null, expected, SortOrder.ASC, SortOrder.ASC); }
@Test public void testForNullsWithNullsInMiddle() throws Exception { Object[] o = new Object[]{"1 ", "2 ", null, "3 ", "4 "}; Object[] o2 = new Object[]{null, "1 ", "2 ", null, "3 ", "4 "}; Object element = null; PDataType baseType = PVarchar.INSTANCE; PhoenixArray arr = new PhoenixArray(baseType, o); PhoenixArray expected = new PhoenixArray(baseType, o2); test(arr, element, PDataType.fromTypeId(baseType.getSqlType() + PDataType.ARRAY_TYPE_BASE), null, null, baseType, 1, null, expected, SortOrder.ASC, SortOrder.DESC); }
@Test public void testStringToArrayFunction6() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY(string2, delimiter2, nullstring2) FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"1", "2", null, "4"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testStringToArrayFunction11() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY('a,hello,hello,hello,b', ',', 'hello') FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"a", null, null, null, "b"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testStringToArrayFunctionWithNestedFunctions3() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); ResultSet rs; rs = conn.createStatement().executeQuery( "SELECT STRING_TO_ARRAY(ARRAY_TO_STRING(ARRAY['a', 'b', 'c'], delimiter2), ARRAY_ELEM(ARRAY[',', '.'], 2), 'b') FROM " + tableName + " WHERE region_name = 'SF Bay Area'"); assertTrue(rs.next()); PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, new Object[]{"a", null, "c"}); assertEquals(expected, rs.getArray(1)); assertFalse(rs.next()); }
@Test public void testArrayPrependFunction24() throws Exception { byte[][] o = new byte[][]{new byte[]{2, 0}, new byte[]{13, 3}, new byte[]{5, 3}, new byte[]{6, 3}, new byte[]{2, 5}}; byte[][] o2 = new byte[][]{new byte[]{5, 6}, new byte[]{2, 0}, new byte[]{13, 3}, new byte[]{5, 3}, new byte[]{6, 3}, new byte[]{2, 5}}; byte[] element = new byte[]{5, 6}; PDataType baseType = PBinary.INSTANCE; PhoenixArray arr = new PhoenixArray(baseType, o); PhoenixArray expected = new PhoenixArray(baseType, o2); test(arr, element, PDataType.fromTypeId(baseType.getSqlType() + PDataType.ARRAY_TYPE_BASE), 3, null, baseType, 1, null, expected, SortOrder.ASC, SortOrder.DESC); }
@Test public void testForNullsWith1NullAtBeginning() throws Exception { Object[] o = new Object[]{"1 ", "2 ", "3 ", "4 "}; Object[] o2 = new Object[]{null, "1 ", "2 ", "3 ", "4 "}; Object element = null; PDataType baseType = PVarchar.INSTANCE; PhoenixArray arr = new PhoenixArray(baseType, o); PhoenixArray expected = new PhoenixArray(baseType, o2); test(arr, element, PDataType.fromTypeId(baseType.getSqlType() + PDataType.ARRAY_TYPE_BASE), 4, null, baseType, 1, null, expected, SortOrder.ASC, SortOrder.DESC); }
private List<Tuple> toTuples(PArrayDataType arrayType, List<Object[]> arrays) { List<Tuple> tuples = Lists.newArrayListWithExpectedSize(arrays.size()); PDataType baseType = PDataType.fromTypeId(arrayType.getSqlType() - PDataType.ARRAY_TYPE_BASE); for (Object[] array : arrays) { PhoenixArray pArray = new PhoenixArray(baseType, array); byte[] bytes = arrayType.toBytes(pArray); tuples.add(new SingleKeyValueTuple(PhoenixKeyValueUtil.newKeyValue(bytes, 0, bytes.length, bytes, 0, 0, bytes, 0, 0, 0, bytes, 0, 0, Cell.Type.Put))); } return tuples; } }
@Test public void testStringToArrayFunction10() throws SQLException { String string = "axbxcxdxexf"; Object[] o1 = new Object[]{"a", "b", "c", "d", "e", "f"}; PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, o1); String delimiter = "x"; String nullString = ""; test(string, delimiter, nullString, expected, SortOrder.ASC, SortOrder.ASC, SortOrder.ASC, PVarchar.INSTANCE, PVarchar.INSTANCE, PVarchar.INSTANCE); test(string, delimiter, nullString, expected, SortOrder.DESC, SortOrder.ASC, SortOrder.ASC, PVarchar.INSTANCE, PVarchar.INSTANCE, PVarchar.INSTANCE); }
@Test public void testStringToArrayFunction18() throws SQLException { String string = "null,a,null"; Object[] o1 = new Object[]{null, "a", null}; PhoenixArray expected = new PhoenixArray(PVarchar.INSTANCE, o1); String delimiter = ","; String nullString = "null"; test(string, delimiter, nullString, expected, SortOrder.ASC, SortOrder.ASC, SortOrder.ASC, PChar.INSTANCE, PChar.INSTANCE, PVarchar.INSTANCE); test(string, delimiter, nullString, expected, SortOrder.DESC, SortOrder.ASC, SortOrder.ASC, PChar.INSTANCE, PChar.INSTANCE, PVarchar.INSTANCE); }
@Test public void testVarchar6() throws SQLException { PDataType type = PVarcharArray.INSTANCE; PDataType base = PVarchar.INSTANCE; Object[] o1 = new Object[]{null, null, null, null, "hello"}; PhoenixArray arr = new PhoenixArray(base, o1); String delimiter = ", "; String nullString = ""; String expected = "hello"; test(arr, type, null, null, delimiter, nullString, expected, SortOrder.ASC, SortOrder.ASC, SortOrder.ASC); test(arr, type, null, null, delimiter, nullString, expected, SortOrder.DESC, SortOrder.ASC, SortOrder.ASC); }
@Test public void testIsRowKeyOrderOptimized1() { Object[] objects = new Object[]{"a", "b", "c"}; PhoenixArray arr = new PhoenixArray(PVarchar.INSTANCE, objects); byte[] bytes = PVarcharArray.INSTANCE.toBytes(arr, PVarchar.INSTANCE, SortOrder.ASC); assertTrue(PArrayDataType.isRowKeyOrderOptimized(PVarcharArray.INSTANCE, SortOrder.ASC, bytes, 0, bytes.length)); }
@Test public void testIsRowKeyOrderOptimized2() { Object[] objects = new Object[]{"a", "b", "c"}; PhoenixArray arr = new PhoenixArray(PVarchar.INSTANCE, objects); byte[] bytes = PVarcharArray.INSTANCE.toBytes(arr, SortOrder.DESC); assertTrue(PArrayDataType.isRowKeyOrderOptimized(PVarcharArray.INSTANCE, SortOrder.DESC, bytes, 0, bytes.length)); }
@Test public void testForChar() throws SQLException { Object element = "foo"; Object length = 3; PDataType baseType = PChar.INSTANCE; PhoenixArray e = new PhoenixArray(baseType, new Object[]{"foo", "foo", "foo"}); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.ASC, SortOrder.ASC); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.ASC, SortOrder.DESC); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.DESC, SortOrder.DESC); test(element, length, baseType, null, null, PInteger.INSTANCE, null, null, e, SortOrder.DESC, SortOrder.ASC); }