bool suitableType(ErrorCodeInfo errorCodeInfo, List <IEntity> args)
        {
            if (args.Count != colTypes_.Count)
            {
                errorCodeInfo.set(ErrorCodeInfo.Code.EC_InvalidObject, string.Format("Column counts don't match {0}.", colTypes_.Count));
                return(false);
            }
            int cols = args.Count();

            for (int i = 0; i < cols; ++i)
            {
                DATA_TYPE argsType;
                if (args[i] is IVector)
                {
                    argsType = ((IVector)args[i]).getDataType();
                }
                else
                {
                    argsType = args[i].getDataType();
                }
                DATA_TYPE colType = args[i] is IVector ? colTypes_[i] - 64 : colTypes_[i];
                if ((int)argsType != (int)colType)
                {
                    if (!((argsType == DATA_TYPE.DT_STRING && (int)colType == (int)DATA_TYPE.DT_SYMBOL) || (argsType == DATA_TYPE.DT_STRING && (int)colType == (int)DATA_TYPE.DT_BLOB)))
                    {
                        errorCodeInfo.set(ErrorCodeInfo.Code.EC_InvalidObject, "Failed to insert data, the type of argument does not match the type of column at column: " + i.ToString());
                        return(false);
                    }
                }
            }
            return(true);
        }
        public ErrorCodeInfo insertUnwrittenData(List <List <IEntity> > data)
        {
            if (hasError_)
            {
                throw new Exception("Thread is exiting. ");
            }
            BasicEntityFactory basicEntityFactory = (BasicEntityFactory)BasicEntityFactory.instance();
            ErrorCodeInfo      errorCodeInfo      = new ErrorCodeInfo();
            IVector            partitionCol       = basicEntityFactory.createVectorWithDefaultValue(colTypes_[partitionColumnIdx_], data.Count);
            int rows = data.Count;

            for (int i = 0; i < rows; ++i)
            {
                partitionCol.set(i, (IScalar)data[i][partitionColumnIdx_]);
            }

            if (threads_.Count() > 1)
            {
                List <int>         threadindexs = new List <int>();
                BasicEntityFactory factory      = (BasicEntityFactory)BasicEntityFactory.instance();
                if (isPartionedTable_)
                {
                    threadindexs = partitionDomain_.getPartitionKeys(partitionCol);
                }
                else
                {
                    for (int i = 0; i < rows; ++i)
                    {
                        threadindexs.Add(partitionCol.get(i).GetHashCode());
                    }
                }
                for (int i = 0; i < rows; ++i)
                {
                    insertThreadWrite(threadindexs[i], data[i]);
                }
            }
            else
            {
                for (int i = 0; i < rows; ++i)
                {
                    insertThreadWrite(0, data[i]);
                }
            }
            return(new ErrorCodeInfo());
        }
        ErrorCodeInfo insertRecursive(List <IEntity> args)
        {
            ErrorCodeInfo errorCodeInfo = new ErrorCodeInfo();

            if (!suitableType(errorCodeInfo, args))
            {
                return(errorCodeInfo);
            }
            int threadindex;

            if (threads_.Count() > 1)
            {
                BasicEntityFactory factory = (BasicEntityFactory)BasicEntityFactory.instance();
                if (isPartionedTable_)
                {
                    {
                        try
                        {
                            threadindex = partitionDomain_.getPartitionKey((IScalar)args[partitionColumnIdx_]);
                        }
                        catch (Exception e)
                        {
                            return(new ErrorCodeInfo(ErrorCodeInfo.Code.EC_InvalidObject, e.Message));
                        }
                    }
                }
                else
                {
                    threadindex = args[threadByColIndexForNonPartion_].GetHashCode();
                }
            }
            else
            {
                threadindex = 0;
            }
            insertThreadWrite(threadindex, args);
            return(errorCodeInfo);
        }
Пример #4
0
 public void set(ErrorCodeInfo errorCodeInfo)
 {
     set(errorCodeInfo.errorCode, errorCodeInfo.errorInfo);
 }
Пример #5
0
 public ErrorCodeInfo(ErrorCodeInfo src)
 {
     set(src.errorCode, src.errorInfo);
 }