@Override public TableMate loadMataData(Schema schema, TableRule tableRule) { String identifier = database.identifier(tableRule.getName()); TableMate tableMate = new TableMate(schema, identifier, tableRule); return tableMate; }
/** * @return the shardingColumns */ public Column[] getRuleColumns() { check(); return ruleColumns; }
/** * validation the rule columns is in the table columns */ private void setRuleColumns() { if (tableRule instanceof ShardedTableRule) { ShardedTableRule shardedTableRule = (ShardedTableRule) tableRule; String[] ruleColNames = shardedTableRule.getRuleColumns(); ruleColumns = new Column[ruleColNames.length]; for (int i = 0; i < ruleColNames.length; i++) { String colName = database.identifier(ruleColNames[i]); if(!doesColumnExist(colName)) { throw DbException.get(ErrorCode.SHARDING_COLUMN_NOT_FOUND, colName ,getName()); } ruleColumns[i] = getColumn(colName); } } }
n = convertColumnName(n); int sqlType = rs.getInt("DATA_TYPE"); long precision = rs.getInt("COLUMN_SIZE"); precision = convertPrecision(sqlType, precision); int scale = rs.getInt("DECIMAL_DIGITS"); scale = convertScale(sqlType, scale); int displaySize = MathUtils.convertLongToInt(precision); int type = DataType.convertSQLTypeToValueType(sqlType); for (i = 0; i < rsMeta.getColumnCount();) { String n = rsMeta.getColumnName(i + 1); n = convertColumnName(n); int sqlType = rsMeta.getColumnType(i + 1); long precision = rsMeta.getPrecision(i + 1); precision = convertPrecision(sqlType, precision); int scale = rsMeta.getScale(i + 1); scale = convertScale(sqlType, scale); int displaySize = rsMeta.getColumnDisplaySize(i + 1); int type = DataType.getValueTypeFromResultSet(rsMeta, i + 1); setColumns(cols); col = convertColumnName(col); Column column = columnMap.get(col); if (idx == 0) { addIndex(pkName, list, IndexType.createPrimaryKey(false)); rs.close();
TableFilter tableFilter = prepared.getTableFilter(); TableMate table = getTableMate(tableFilter); table.check(); List<Column> columns = prepared.getColumns(); Map<Column, Expression> valueMap = prepared.getExpressionMap(); Column[] ruleColumns = table.getRuleColumns(); for (Column column : ruleColumns) { if(valueMap.get(column) != null) { Row updateRow = table.getTemplateRow(); for (int i = 0, size = columns.size(); i < size; i++) { Column c = columns.get(i);
@Override public int doUpdate() { String tableName = prepared.getTableName(); TableMate tableMate = getTableMate(tableName); ArrayList<Sequence> sequences = New.arrayList(); for (Column c : tableMate.getColumns()) { if (c.isAutoIncrement()) { } Sequence seq = c.getSequence(); if (seq != null) { sequences.add(seq); } } for (Sequence sequence : sequences) { tableMate.addSequence(sequence); } int affectRows = invokeUpdateWorker(workers); if (asQueryInsert != null) { asQueryInsert.update(); } tableMate.loadMataData(session); return affectRows; }
@Override protected void doPrepare() { TableMate table = toTableMate(prepared.getTable()); table.check(); prepared.setCurrentRowNumber(0); ArrayList<Expression[]> list = prepared.getList(); prepared.setCurrentRowNumber(x + 1); Expression[] expr = list.get(x); Row newRow = table.getTemplateRow(); for (int i = 0, len = columns.length; i < len; i++) { Column c = columns[i];
private void shardingKeyIndex() { // create shardingKey index if (ruleColumns != null) { ArrayList<Index> indexes = getIndexes(); boolean isMatch = false; for (Index index : indexes) { Column[] columns = index.getColumns(); if (columns.length != ruleColumns.length) { continue; } boolean shardingKeyIndex = true; for (int idx = 0; idx < columns.length; idx++) { if (columns[idx] != ruleColumns[idx]) { shardingKeyIndex = false; break; } } if (shardingKeyIndex) { index.getIndexType().shardingKeyIndex(); isMatch = true; } } if (!isMatch) { List<Column> asList = Arrays.asList(ruleColumns); addIndex("$shardingKey", New.arrayList(asList), IndexType.createShardingKey(false)); } } }
for (TableRule tableRule : configuration.tableRules) { TableMate tableMate = repository.loadMataData(mainSchema, tableRule); tableMate.loadMataData(sysSession); if (configuration.forceLoadTableMate) { tableMate.check();
for (Column c : tableMate.getColumns()) { c.prepareExpression(session); ObjectNode refTableNode = null; if (refTable != null) { refTableNode = getConsistencyNode(refTable.getTableRule(), objectNode);
@Override protected void doPrepare() { TableMate table = toTableMate(prepared.getTable()); table.check(); prepared.setCurrentRowNumber(0); ArrayList<Expression[]> list = prepared.getList(); Map<Column, Expression> valueMap = prepared.getDuplicateKeyAssignmentMap(); if (valueMap != null) { Column[] ruleColumns = table.getRuleColumns(); for (Column column : ruleColumns) { if (valueMap.get(column) != null) { List<Row> values = New.arrayList(10); for (int x = 0; x < listSize; x++) { Row newRow = table.getTemplateRow(); Expression[] expr = list.get(x); prepared.setCurrentRowNumber(x + 1);
@Override protected void doPrepare() { TableMate table = toTableMate(prepared.getTable()); table.check(); prepared.setCurrentRowNumber(0); ArrayList<Expression[]> list = prepared.getList(); prepared.setCurrentRowNumber(x + 1); Expression[] expr = list.get(x); Row newRow = table.getTemplateRow(); for (int i = 0, len = columns.length; i < len; i++) { Column c = columns[i];