示例#1
0
        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);
        }
示例#2
0
 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);
 }
示例#3
0
        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 ");
        }
示例#4
0
 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);
     }
 }
示例#5
0
 public abstract void GenerateSql(ISqlDumper dmp, IDataSynAdapter sada, SynSourceInfo info, SynQueryType qtype, Action <ISqlDumper> putCondition);