protected override List <MemoryQueryResultRow> Init(ShardingRule rule, SchemaMetaData schemaMetaData, ISqlCommandContext <ISqlCommand> sqlCommandContext,
                                                            List <IStreamDataReader> streamDataReaders)
        {
            ICollection <MemoryQueryResultRow> result = new LinkedList <MemoryQueryResultRow>();
            var tableNames = new HashSet <string>();

            foreach (var streamDataReader in streamDataReaders)
            {
                while (streamDataReader.Read())
                {
                    MemoryQueryResultRow memoryResultSetRow = new MemoryQueryResultRow(streamDataReader);
                    var actualTableName = memoryResultSetRow.GetCell(0).ToString();
                    var tableRule       = rule.FindTableRuleByActualTable(actualTableName);
                    if (tableRule == null)
                    {
                        if (rule.TableRules.IsEmpty() || schemaMetaData.ContainsTable(actualTableName) && tableNames.Add(actualTableName))
                        {
                            result.Add(memoryResultSetRow);
                        }
                    }
                    else if (tableNames.Add(tableRule.LogicTable))
                    {
                        memoryResultSetRow.SetCell(1, tableRule.LogicTable);
                        SetCellValue(memoryResultSetRow, tableRule.LogicTable, actualTableName);
                        result.Add(memoryResultSetRow);
                    }
                }
            }
            return(result.ToList());
        }
 protected virtual void SetCellValue(MemoryQueryResultRow memoryResultSetRow, string logicTableName, string actualTableName)
 {
 }
Exemple #3
0
 protected override void SetCellValue(MemoryQueryResultRow memoryResultSetRow, string logicTableName, string actualTableName)
 {
     memoryResultSetRow.SetCell(2, memoryResultSetRow.GetCell(2).ToString().ReplaceFirst(actualTableName, logicTableName));
 }