public ITableStructure GetTableStructure(SynQueryType qtype) { var res = new TableStructure(); FillKey(res); switch (qtype) { case SynQueryType.SelectAll: FillDataColumns(res); break; case SynQueryType.SelectKeyNull: case SynQueryType.SelectKeyMd5: res.AddColumn(new ColumnStructure { DataType = new DbTypeString(), ColumnName = "HashColumn" }, true); break; } return(res); }
public override void GenerateSql(ISqlDumper dmp, IDataSynAdapter sada, SynSourceInfo info, SynQueryType qtype, Action <ISqlDumper> putCondition) { GenerateSqlToFrom(dmp, sada, info, qtype); dmp.Put("("); dmp.WriteRaw(Sql); dmp.Put(") sub"); if (putCondition != null) { putCondition(dmp); } GenerateSqlOrder(dmp, sada, info, qtype); }
protected void GenerateSqlToFrom(ISqlDumper dmp, IDataSynAdapter sada, SynSourceInfo info, SynQueryType qtype) { dmp.Put("^select %,i", (IEnumerable <string>)info.KeyCols); if (qtype == SynQueryType.SelectKeyMd5) { var colexprs = new List <string>(); bool was = false; foreach (string col in info.CompareCols) { if (was) { colexprs.Add("'(SEP#n3f9)'"); } var type = info.Model.Columns[col].DataType; colexprs.Add(sada.Coalesce(sada.GetHashableString(dmp.Dialect.QuoteIdentifier(col), type), "'(NULL#093foew)'")); was = true; } if (colexprs.Count == 0) { colexprs.Add("'(NONEswgg5)'"); } dmp.Put(","); dmp.WriteRaw(sada.Md5(sada.Concat(colexprs))); } if (qtype == SynQueryType.SelectKeyNull) { dmp.Put(",^null"); } if (qtype == SynQueryType.SelectAll) { if (info.DataCols.Length > 0) { dmp.Put(",%,i", (IEnumerable <string>)info.DataCols); } } dmp.Put(" from "); }
protected void GenerateSqlOrder(ISqlDumper dmp, IDataSynAdapter sada, SynSourceInfo info, SynQueryType qtype) { if (qtype == SynQueryType.SelectKeyMd5 || qtype == SynQueryType.SelectKeyNull) { dmp.Put(" order by %,i", (IEnumerable <string>)info.KeyCols); } }
public abstract void GenerateSql(ISqlDumper dmp, IDataSynAdapter sada, SynSourceInfo info, SynQueryType qtype, Action <ISqlDumper> putCondition);