private String[] generateCreateTableSql(TableDesc tableDesc) { logger.info("Generate create table sql: {}", tableDesc); String tableIdentity = String .format(Locale.ROOT, "%s.%s", tableDesc.getDatabase().toUpperCase(Locale.ROOT), tableDesc.getName()) .toUpperCase(Locale.ROOT); String dropsql = "DROP TABLE IF EXISTS " + tableIdentity; String dropsql2 = "DROP VIEW IF EXISTS " + tableIdentity; StringBuilder ddl = new StringBuilder(); ddl.append("CREATE TABLE " + tableIdentity + "\n"); ddl.append("(" + "\n"); for (int i = 0; i < tableDesc.getColumns().length; i++) { ColumnDesc col = tableDesc.getColumns()[i]; if (i > 0) { ddl.append(","); } ddl.append(col.getName() + " " + getSqlDataType((col.getDatatype())) + "\n"); } ddl.append(")"); return new String[] { dropsql, dropsql2, ddl.toString() }; }
@Override public int compare(ColumnDesc o1, ColumnDesc o2) { return o1.getZeroBasedIndex() - o2.getZeroBasedIndex(); } });
private boolean isColumnCompatible(ColumnDesc column, ColumnDesc newCol) { if (!column.getName().equalsIgnoreCase(newCol.getName())) { return false; } if (column.getType().isIntegerFamily()) { // OLAPTable.listSourceColumns converts some integer columns to bigint, // therefore strict type comparison won't work. // changing from one integer type to another should be fine. return newCol.getType().isIntegerFamily(); } else if (column.getType().isNumberFamily()) { // Both are float/double should be fine. return newCol.getType().isNumberFamily(); } else { // only compare base type name, changing precision or scale should be fine return column.getTypeName().equals(newCol.getTypeName()); } }
public static ColumnDesc mockup(TableDesc table, int oneBasedColumnIndex, String name, String datatype) { ColumnDesc desc = new ColumnDesc(); String id = "" + oneBasedColumnIndex; desc.setId(id); desc.setName(name); desc.setDatatype(datatype); desc.init(table); return desc; }
@Deprecated public TblColRef makeFakeColumn(String name) { ColumnDesc colDesc = new ColumnDesc(); colDesc.setName(name); colDesc.setTable(table); return new TblColRef(this, colDesc); }
public DictionaryInfo(ColumnDesc col, String dataType, TableSignature input) { this(col.getTable().getIdentity(), col.getName(), col.getZeroBasedIndex(), dataType, input); }
@Override public CoprocessorRowType deserialize(ByteBuffer in) { int n = BytesUtil.readVInt(in); int bodyOffset = BytesUtil.readVInt(in); TblColRef[] cols = new TblColRef[n]; int[] colSizes = new int[n]; for (int i = 0; i < n; i++) { String tableName = BytesUtil.readAsciiString(in); String colName = BytesUtil.readAsciiString(in); String datatype = BytesUtil.readAsciiString(in); TableDesc table = new TableDesc(); table.setName(tableName); ColumnDesc col = new ColumnDesc(); col.setTable(table); col.setName(colName); col.setDatatype(datatype); col.init(table); cols[i] = col.getRef(); int colSize = BytesUtil.readVInt(in); colSizes[i] = colSize; } return new CoprocessorRowType(cols, colSizes, bodyOffset); } };
private void generateCreateTableDDL(Set<TableDesc> tables, PrintWriter out) { for (TableDesc t : tables) { if (t.isView()) continue; out.print("DROP TABLE IF EXISTS " + normHiveIdentifier(t.getIdentity()) + ";\n"); out.print("CREATE TABLE " + normHiveIdentifier(t.getIdentity()) + "(" + "\n"); for (int i = 0; i < t.getColumns().length; i++) { ColumnDesc col = t.getColumns()[i]; out.print(" "); if (i > 0) { out.print(","); } out.print(normHiveIdentifier(col.getName()) + " " + hiveType(col.getType()) + "\n"); } out.print(")" + "\n"); out.print("ROW FORMAT DELIMITED FIELDS TERMINATED BY ','" + "\n"); out.print("STORED AS TEXTFILE" + ";\n"); out.print("\n"); } }
public ColumnDesc newFakeRewriteColumn(TableDesc sourceTable) { ColumnDesc fakeCol = new ColumnDesc(); fakeCol.setName(getRewriteFieldName()); fakeCol.setDatatype(getRewriteFieldType().toString()); if (isCount()) fakeCol.setNullable(false); fakeCol.init(sourceTable); return fakeCol; }
public String getName() { return column.getName(); }
@Test public void testLoadTableMetadata() throws Exception { Pair<TableDesc, TableExtDesc> pair = explorer.loadTableMetadata("DEFAULT", "TEST_KYLIN_FACT", "DEFAULT"); Assert.assertNotNull(pair.getFirst()); Assert.assertNotNull(pair.getSecond()); TableDesc tblDesc = pair.getFirst(); TableExtDesc tblExtDesc = pair.getSecond(); Assert.assertEquals("TEST_KYLIN_FACT", tblDesc.getName()); Assert.assertEquals("TABLE", tblDesc.getTableType()); Assert.assertEquals("DEFAULT.TEST_KYLIN_FACT", tblDesc.getIdentity()); Assert.assertEquals("DEFAULT", tblDesc.getDatabase()); Assert.assertEquals("DEFAULT", tblDesc.getProject()); Assert.assertEquals(tblDesc.getIdentity(), tblExtDesc.getIdentity()); Assert.assertEquals(tblDesc.getProject(), tblExtDesc.getProject()); ColumnDesc[] columnDescs = tblDesc.getColumns(); Assert.assertEquals(tblDesc.getColumnCount(), columnDescs.length); Assert.assertNotNull(columnDescs[0].getName()); Assert.assertNotNull(columnDescs[0].getDatatype()); Assert.assertNotNull(columnDescs[0].getType()); Assert.assertNotNull(columnDescs[0].getId()); }
public DataType getType() { return column.getType(); }
private String generateCreateH2TableSql(TableDesc tableDesc, String csvFilePath) { StringBuilder ddl = new StringBuilder(); StringBuilder csvColumns = new StringBuilder(); ddl.append("CREATE TABLE " + tableDesc.getIdentity() + "\n"); ddl.append("(" + "\n"); for (int i = 0; i < tableDesc.getColumns().length; i++) { ColumnDesc col = tableDesc.getColumns()[i]; if (col.isComputedColumn()) { continue; } if (i > 0) { ddl.append(","); csvColumns.append(","); } ddl.append(col.getName() + " " + getH2DataType((col.getDatatype())) + "\n"); csvColumns.append(col.getName()); } ddl.append(")" + "\n"); ddl.append("AS SELECT * FROM CSVREAD('" + csvFilePath + "', '" + csvColumns + "', 'charset=UTF-8 fieldSeparator=,');"); return ddl.toString(); }
public int hashCode() { // NOTE: tableRef MUST NOT participate in hashCode(). // Because fixUnknownModel() can change tableRef while TblColRef is held as set/map keys. final int prime = 31; int result = 1; result = prime * result + column.getTable().getIdentity().hashCode(); result = prime * result + column.getName().hashCode(); return result; }
@Test public void testSerialize08() { TableDesc table = new TableDesc(); table.setDatabase("DEFAULT"); ColumnDesc column = new ColumnDesc(); column.setTable(table); TblColRef colRef = column.getRef(); List<TblColRef> groups = new ArrayList<TblColRef>(); groups.add(colRef); assertFilterSerDe(buildEQCompareFilter(groups, 0)); }
@Override public void createSampleTable(TableDesc table) throws Exception { LinkedHashMap<String, String> columnInfo = Maps.newLinkedHashMap(); for (ColumnDesc columnDesc : table.getColumns()) { columnInfo.put(columnDesc.getName(), columnDesc.getTypeName()); } String[] sqls = dataSource.buildSqlToCreateTable(table.getIdentity(), columnInfo); dataSource.executeUpdate(sqls); }
@Test public void testSerialize06() { ColumnDesc column = new ColumnDesc(); column.setName("META_CATEG_NAME"); TblColRef colRef = column.getRef(); List<TblColRef> groups = new ArrayList<TblColRef>(); groups.add(colRef); assertFilterSerDe(buildEQCompareFilter(groups, 0)); }
TableRef(DataModelDesc model, String alias, TableDesc table, boolean filterOutComputedColumns) { this.model = model; this.modelName = model.getName(); this.alias = alias; this.table = table; this.columns = Maps.newLinkedHashMap(); for (ColumnDesc col : table.getColumns()) { if (!filterOutComputedColumns || !col.isComputedColumn()) { columns.put(col.getName(), new TblColRef(this, col)); } } }
@SuppressWarnings("deprecation") private RelDataType deriveRowType(RelDataTypeFactory typeFactory) { RelDataTypeFactory.FieldInfoBuilder fieldInfo = typeFactory.builder(); for (ColumnDesc column : sourceColumns) { RelDataType sqlType = createSqlType(typeFactory, column.getUpgradedType(), column.isNullable()); sqlType = SqlTypeUtil.addCharsetAndCollation(sqlType, typeFactory); fieldInfo.add(column.getName(), sqlType); } return typeFactory.createStructType(fieldInfo); }
int aggrIdxOnSql = aggrOutCol.getColumnDesc().getZeroBasedIndex(); // aggr index marked in OLAPAggregateRel FunctionDesc aggrFunc = aggregations.get(aggrIdxOnSql); aggrIdxAmongMetrics++; aggrOutCol.getColumnDesc().setId("" + (aggrIdxAmongMetrics + 1));