Пример #1
0
        public InsertStatementImpl(SQLVendorImpl vendor, TableNameDirect table, ColumnSource columnSource)
            : base(vendor)
        {
            ArgumentValidator.ValidateNotNull(nameof(table), table);
            ArgumentValidator.ValidateNotNull(nameof(columnSource), columnSource);

            this._table        = table;
            this._columnSource = columnSource;
        }
Пример #2
0
        private static ColumnSource BitSetColumnSource(ColumnSource[] columns)
        {
            var nullableCount   = columns.Count(c => c.Metadata.Nullable);
            var bitsetColSource =
                ColumnMetadata.FromBitsetField(
                    new ColumnSerializerMetadata(EFieldType.BitSet, MetadataConstants.NULLS_FILE_NAME, null), nullableCount, columns.Length);

            var bitset =
                new ColumnSource(bitsetColSource,
                                 new QuoteBitsetColumnStub(columns.Select(c => c.Column).ToArray(), new[] { 0, 2 }), columns.Length);

            return(bitset);
        }
Пример #3
0
 public override InsertStatement NewInsertStatement(TableNameDirect table, ColumnSource columnSource)
 {
     return(((PostgreSQLVendor)this.vendor).PgSQLSpecificFactory.NewInsertStatement(table, columnSource));
 }
Пример #4
0
 public PgSQLInsertStatement NewInsertStatement(TableNameDirect table, ColumnSource columnSource, SelectColumnClause returning = null)
 {
     return(new PgSQLInsertStatementImpl((PostgreSQLVendorImpl)this.vendor, table, columnSource, returning));
 }
Пример #5
0
        private ColumnSource[] CreateColumnsFromColumnMetadata(IList <ColumnMetadata> columns,
                                                               IColumnStorage columnStorage, PartitionConfig configOverride, int partitionID)
        {
            var resultColumns = new ColumnSource[columns.Count];
            var recordHint    = _settings.RecordHint;

            if (configOverride != null)
            {
                columns    = ParseColumns(columns.Select(c => c.SerializerMetadata), configOverride.Columns);
                recordHint = configOverride.RecordHint;
            }

            int fileID = 0;

            for (int columnID = 0; columnID < columns.Count; columnID++)
            {
                var cType = columns[columnID];
                // Build.
                IColumn column;
                if (cType.ColumnType == EFieldType.String)
                {
                    // String.
                    var data  = columnStorage.GetFile(cType, fileID++, EDataType.Data, recordHint);
                    var index = columnStorage.GetFile(cType, fileID++, EDataType.Index, recordHint);
                    column = new StringColumn(data, index, cType.MaxSize, GetPropertyName(cType.FileName));
                }
                else if (cType.ColumnType == EFieldType.BitSet)
                {
                    var data = columnStorage.GetFile(cType, fileID++, EDataType.Data, recordHint);
                    column = new BitsetColumn(data, cType.MaxSize);
                }
                else if (cType.ColumnType == EFieldType.Symbol)
                {
                    var colData           = columnStorage.GetFile(cType, fileID++, EDataType.Data, recordHint);
                    var symData           = columnStorage.GetFile(cType, fileID++, EDataType.Symd, recordHint);
                    var symi              = columnStorage.GetFile(cType, fileID++, EDataType.Symi, recordHint);
                    var symk              = columnStorage.GetFile(cType, fileID++, EDataType.Symrk, recordHint);
                    var symr              = columnStorage.GetFile(cType, fileID++, EDataType.Symrr, recordHint);
                    int maxLen            = cType.MaxSize;
                    int distinctHintCount = cType.HintDistinctCount;
                    if (cType.Indexed)
                    {
                        var colDataK = columnStorage.GetFile(cType, fileID++, EDataType.Datak, recordHint);
                        var colDataR = columnStorage.GetFile(cType, fileID++, EDataType.Datar, recordHint);
                        column = new SymbolMapColumn(
                            columnID,
                            partitionID,
                            data: colData,
                            datak: colDataK,
                            datar: colDataR,
                            symd: symData,
                            symi: symi,
                            symk: symk,
                            symr: symr,
                            propertyName: GetPropertyName(cType.FileName),
                            capacity: distinctHintCount,
                            recordCountHint: _settings.RecordHint,
                            maxLen: maxLen);
                    }
                    else
                    {
                        column = new SymbolMapColumn(
                            columnID,
                            partitionID,
                            data: colData,
                            symd: symData,
                            symi: symi,
                            symk: symk,
                            symr: symr,
                            propertyName: GetPropertyName(cType.FileName),
                            capacity: distinctHintCount,
                            maxLen: maxLen);
                    }
                }
                else if (cType.ColumnType == EFieldType.Binary)
                {
                    // Byte array.
                    var data  = columnStorage.GetFile(cType, fileID++, EDataType.Data, recordHint);
                    var index = columnStorage.GetFile(cType, fileID++, EDataType.Index, recordHint);
                    column = new BinaryColumn(data, index, cType.MaxSize, GetPropertyName(cType.FileName));
                }
                else
                {
                    // Fixed size.
                    var data = columnStorage.GetFile(cType, fileID++, EDataType.Data, recordHint);
                    column = new FixedColumn(data, cType.ColumnType, GetPropertyName(cType.FileName));
                }

                resultColumns[columnID] = new ColumnSource(cType, column, fileID);
            }
            return(resultColumns);
        }
Пример #6
0
 public virtual InsertStatement NewInsertStatement(TableNameDirect table, ColumnSource columnSource)
 {
     return(new InsertStatementImpl(this.vendor, table, columnSource));
 }
Пример #7
0
 public ModificationFactoryImpl(SQLVendorImpl vendor, ColumnSource defaults = null)
     : base(vendor)
 {
     this._defaults = defaults ?? new ColumnSources.Defaults(vendor);
 }
Пример #8
0
 internal PgSQLInsertStatementImpl(PostgreSQLVendorImpl vendor, TableNameDirect table, ColumnSource columnSource, SelectColumnClause returningClause)
     : base(vendor, table, columnSource)
 {
     this._returning = returningClause;
 }
Пример #9
0
 public InsertStatementBuilder SetColumnSource(ColumnSource source)
 {
     this._source = source;
     return(this);
 }