List <IVector> createListVector()
        {
            int cols = colTypes_.Count;
            BasicEntityFactory basicEntityFactory = (BasicEntityFactory)BasicEntityFactory.instance();
            List <IVector>     tmp = new List <IVector>();

            for (int i = 0; i < cols; ++i)
            {
                tmp.Add(basicEntityFactory.createVectorWithDefaultValue(colTypes_[i], 0));
            }
            return(tmp);
        }
        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);
        }