private void checkTableConfig()

in adb2client/src/main/java/com/alibaba/cloud/analyticdb/adbclient/AdbClient.java [1195:1253]


    private void checkTableConfig(String tableName) {
        TableInfo tableInfoTmp = this.tableInfo.get(tableName);
        if (tableInfoTmp == null) {
            return;
        }
        if (!"realtime".equals(tableInfoTmp.getUpdateType().toLowerCase())) {
            throw new RuntimeException("table " + tableName + " is not realtime table, can not insert by Adb Client");
        }
        List<String> allColumns = new ArrayList<String>();
        List<ColumnInfo> columnInfo = tableInfoTmp.getColumns();
        for (ColumnInfo eachColumn : columnInfo) {
            allColumns.add(eachColumn.getName());
        }
        dealColumnConf(tableName, allColumns);

        this.tableColumnsMetaData.put(tableName, getColumnMetaData(tableInfoTmp, this.databaseConfig.getColumns(tableName)));
        Map<String, Pair<Integer, String>> configColumnMetaDataTmp = new HashMap<String, Pair<Integer, String>>();

        for (int i = 0; i < this.databaseConfig.getColumns(tableName).size(); i++) {
            String oriEachColumn = this.databaseConfig.getColumns(tableName).get(i);
            String eachColumn = oriEachColumn;
            // 防御性保留字
            if (eachColumn.startsWith(COLUMN_QUOTE_CHARACTER) && eachColumn.endsWith(COLUMN_QUOTE_CHARACTER)) {
                eachColumn = eachColumn.substring(1, eachColumn.length() - 1);
            }
            for (String eachAdsColumn : tableInfoTmp.getColumnsNames()) {
                if (eachColumn.equalsIgnoreCase(eachAdsColumn)) {
                    configColumnMetaDataTmp.put(oriEachColumn, this.tableColumnsMetaData.get(tableName).get(eachAdsColumn));
                }
            }
            if (eachColumn.equalsIgnoreCase(tableInfoTmp.getPartitionColumn())) {
                this.partitionColumnIndex.put(tableName, i);
            }
        }
        this.configColumnsMetaData.put(tableName, configColumnMetaDataTmp);

        // insertSqlPrefix init
        if (isAllColumn.get(tableName)) {
            if (!databaseConfig.isInsertWithColumnName()) {
                if (databaseConfig.isInsertIgnore()) {
                    this.insertSqlPrefix.put(tableName, String.format(INSERT_IGNORE_ALL_COLUMN_TEMPLATE, tableName));
                } else {
                    this.insertSqlPrefix.put(tableName, String.format(INSERT_ALL_COLUMN_TEMPLATE, tableName));
                }
            } else {
                if (databaseConfig.isInsertIgnore()) {
                    this.insertSqlPrefix.put(tableName, String.format(INSERT_IGNORE_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
                } else {
                    this.insertSqlPrefix.put(tableName, String.format(INSERT_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
                }
            }
        } else {
            if (databaseConfig.isInsertIgnore()) {
                this.insertSqlPrefix.put(tableName, String.format(INSERT_IGNORE_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
            } else {
                this.insertSqlPrefix.put(tableName, String.format(INSERT_TEMPLATE, tableName, StringUtils.join(this.databaseConfig.getColumns(tableName), ",")));
            }
        }
    }