Пример #1
0
        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));
        }
Пример #2
0
        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));
        }