public QueryResult Parse(Select select, Hubble.Core.Data.DBProvider dbProvider, Service.ConnectionInformation connInfo) { BigTable bigTable = dbProvider.BigTableCfg; //if (!string.IsNullOrEmpty(tc.ConnectString)) //{ // throw new ParseException("Free version does not provider distributable BigTable. You should use HubblePro for it"); //} if (bigTable.Tablets.Count <= 0) { throw new ParseException("The Bigtable must have at least one table in table collection"); } List <Select> unionSelect = new List <Select>(); foreach (TabletInfo tf in bigTable.Tablets) { string tableName = tf.TableName; Select sel = select.Clone(); sel.SelectFroms[0].Name = tableName; sel.SelectFroms[0].Alias = tableName; unionSelect.Add(sel); } string unionSelectTableName; string tableTicksReturn = null; QueryResult datacacheQuery = null; List <QueryResult> unionQueryResult = _SFQLParse.UnionSelectDistribute(connInfo, unionSelect, out unionSelectTableName, out tableTicksReturn, out datacacheQuery); if (datacacheQuery != null) { return(datacacheQuery); } return(SFQLParse.ExcuteUnionSelect(unionSelectTableName, tableTicksReturn, unionQueryResult, connInfo)); }
public void Run() { Global.UserRightProvider.CanDo(Right.RightItem.ManageDB); if (Parameters.Count < 1) { throw new ArgumentException("the number of parameters must be large than 0. Parameter 1 is directory"); } string directory = null; string tableName = null; string connectString = null; string dbTableName = null; if (Parameters.Count >= 4) { dbTableName = Parameters[3]; } if (Parameters.Count >= 3) { connectString = Parameters[2]; } if (Parameters.Count >= 2) { tableName = Parameters[1]; } if (Parameters.Count >= 1) { directory = Parameters[0]; } Data.DBProvider dbProvider = new Hubble.Core.Data.DBProvider(); dbProvider.Attach(directory, tableName, connectString, dbTableName); OutputMessage(string.Format("Attach table {0} successul.", dbProvider.TableName)); }