/// <summary>
 ///
 /// </summary>
 /// <param name="importer"></param>
 /// <param name="data"></param>
 /// <param name="npgsqlDbType"></param>
 private static void BinaryImportWrite(NpgsqlBinaryImporter importer,
                                       object data,
                                       NpgsqlDbType?npgsqlDbType)
 {
     if (data == null)
     {
         importer.WriteNull();
     }
     else
     {
         if (npgsqlDbType != null)
         {
             if (data is Enum)
             {
                 if (npgsqlDbType == NpgsqlDbType.Integer ||
                     npgsqlDbType == NpgsqlDbType.Bigint ||
                     npgsqlDbType == NpgsqlDbType.Smallint)
                 {
                     data = Convert.ToInt32(data);
                 }
                 else if (npgsqlDbType == NpgsqlDbType.Text)
                 {
                     data = Convert.ToString(data);
                 }
             }
             importer.Write(data, npgsqlDbType.Value);
         }
         else
         {
             importer.Write(data);
         }
     }
 }
Esempio n. 2
0
 public void Save(NpgsqlBinaryImporter writer)
 {
     writer.StartRow();
     writer.Write(this["firstname"], NpgsqlTypes.NpgsqlDbType.Varchar);
     writer.Write(this["lastname"], NpgsqlTypes.NpgsqlDbType.Varchar);
     writer.Write(DateTime.Parse(this["date-of-birth"]), NpgsqlTypes.NpgsqlDbType.Date);
     writer.Write(this["phone"], NpgsqlTypes.NpgsqlDbType.Varchar);
 }
 public static void WriteNullableDouble(this NpgsqlBinaryImporter importer, double?val)
 {
     if (val.HasValue)
     {
         importer.Write(val.Value, NpgsqlDbType.Double);
     }
     else
     {
         importer.Write <double?>(null, NpgsqlDbType.Double);
     }
 }
Esempio n. 4
0
 public static void WriteValue(this NpgsqlBinaryImporter importer, string value, int len)
 {
     if (string.IsNullOrEmpty(value))
     {
         importer.Write(DBNull.Value, NpgsqlDbType.Varchar);
     }
     else
     {
         importer.Write(value, NpgsqlDbType.Varchar);
     }
 }
 public static void WriteNullableLong(this NpgsqlBinaryImporter importer, long?val)
 {
     if (val.HasValue)
     {
         importer.Write(val.Value, NpgsqlDbType.Bigint);
     }
     else
     {
         importer.Write <long?>(null, NpgsqlDbType.Bigint);
     }
 }
Esempio n. 6
0
 public static void WriteValue(this NpgsqlBinaryImporter importer, string value)
 {
     if (string.IsNullOrEmpty(value))
     {
         importer.Write(string.Empty, NpgsqlDbType.Text);
     }
     else
     {
         importer.Write(value, NpgsqlDbType.Text);
     }
 }
Esempio n. 7
0
 private void WriteLevel(NpgsqlBinaryImporter writer, LogEvent logEvent)
 {
     if (_columnOptions.Level.StoreAsSmallint)
     {
         var level = (int)logEvent.Level;
         writer.Write(level, NpgsqlDbType.Smallint);
     }
     else
     {
         var level = logEvent.Level.ToString();
         writer.Write(level, NpgsqlDbType.Text);
     }
 }
Esempio n. 8
0
 // This method may be used instead of NpgsqlBulkCodeBuilder
 private void WriteRow <T>(T item, MappingInfo[] mapInfos, NpgsqlBinaryImporter importer)
 {
     foreach (var mapItem in mapInfos)
     {
         var value = mapItem.Property.GetValue(item);
         importer.Write(value, mapItem.NpgsqlType);
     }
 }
Esempio n. 9
0
 private void WriteTags(NpgsqlBinaryImporter writer, OsmGeo item, Action <Tag> processTag = null)
 {
     if (item.Tags != null)
     {
         List <string> tags = new List <string>(item.Tags.Count);
         foreach (var tag in item.Tags)
         {
             tags.Add($"{tag.Key}={tag.Value}");
             processTag?.Invoke(tag);
         }
         writer.Write(tags.ToArray(), NpgsqlTypes.NpgsqlDbType.Array | NpgsqlTypes.NpgsqlDbType.Text);
     }
     else
     {
         writer.Write <string[]>(null, NpgsqlTypes.NpgsqlDbType.Array | NpgsqlTypes.NpgsqlDbType.Text);
     }
 }
Esempio n. 10
0
        private void WriteRegularColumns(NpgsqlBinaryImporter writer, LogEvent logEvent)
        {
            foreach (var column in _columnOptions.Store)
            {
                switch (column)
                {
                case StandardColumn.Message:
                    var message = logEvent.RenderMessage(_formatProvider);
                    writer.WriteNullable(message, NpgsqlDbType.Text);
                    break;

                case StandardColumn.MessageTemplate:
                    var messageTemplate = logEvent.MessageTemplate.Text;
                    writer.WriteNullable(messageTemplate, NpgsqlDbType.Text);
                    break;

                case StandardColumn.Level:
                    WriteLevel(writer, logEvent);
                    break;

                case StandardColumn.TimeStamp:
                    var timestamp = _columnOptions.TimeStamp.ConvertToUtc ? logEvent.Timestamp.DateTime.ToUniversalTime() : logEvent.Timestamp.DateTime;
                    writer.Write(timestamp, NpgsqlDbType.TimestampTZ);
                    break;

                case StandardColumn.Exception:
                    var exception = logEvent.Exception?.ToString();
                    writer.WriteNullable(exception, NpgsqlDbType.Text);
                    break;

                case StandardColumn.Properties:
                    var propertiesJson = ConvertPropertiesToJsonStructure(logEvent.Properties);
                    writer.Write(propertiesJson, NpgsqlDbType.Jsonb);
                    break;

                case StandardColumn.LogEvent:
                    var logEventJson = LogEventToJson(logEvent);
                    writer.Write(logEventJson, NpgsqlDbType.Jsonb);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
 /// <summary>
 /// For __RepoDb_OrderColumn
 /// </summary>
 /// <param name="importer"></param>
 /// <param name="identityBehavior"></param>
 /// <param name="index"></param>
 private static void EnsureCustomizedOrderColumn(NpgsqlBinaryImporter importer,
                                                 BulkImportIdentityBehavior identityBehavior,
                                                 int index)
 {
     if (identityBehavior == BulkImportIdentityBehavior.ReturnIdentity)
     {
         importer.Write(index, NpgsqlDbType.Integer);
     }
 }
        /// <summary>
        /// Пишет значение в импортер
        /// </summary>
        protected virtual void WriteValue(NpgsqlBinaryImporter writer, object value, bool valueSpecified, NpgsqlDbType?type = null)
        {
            if (!valueSpecified || value == null || value == DBNull.Value)
            {
                writer.WriteNull();
            }
            else if (type.HasValue)
            {
                writer.Write(value, type.Value);
            }
            else
            {
                writer.Write(value);
            }

            //Запись о том что столбец передан
            writer.Write(valueSpecified);
        }
Esempio n. 13
0
 /// <summary>
 /// Writes text value in bulk manner.
 /// </summary>
 public static void WriteNullable(this NpgsqlBinaryImporter writer, string?value, NpgsqlDbType dbType)
 {
     if (value != null)
     {
         writer.Write(value, dbType);
     }
     else
     {
         writer.WriteNull();
     }
 }
Esempio n. 14
0
 protected void Write <T>(NpgsqlBinaryImporter importer, T value, NpgsqlDbType type)
 {
     if (value == null)
     {
         importer.WriteNull();
     }
     else
     {
         importer.Write(value, type);
     }
 }
Esempio n. 15
0
 protected void Write <T>(NpgsqlBinaryImporter importer, T?value, NpgsqlDbType type) where T : struct
 {
     if (value == null)
     {
         importer.WriteNull();
     }
     else
     {
         importer.Write(value.Value, type);
     }
 }
Esempio n. 16
0
 /// <summary>
 /// Writes nullable structure in bulk manner.
 /// </summary>
 public static void WriteNullable <T>(this NpgsqlBinaryImporter writer, T?value, NpgsqlDbType dbType) where T : struct
 {
     if (value.HasValue)
     {
         writer.Write(value.Value, dbType);
     }
     else
     {
         writer.WriteNull();
     }
 }
Esempio n. 17
0
 public static void WriteValue(this NpgsqlBinaryImporter binaryImporter, StatusEnum?value)
 {
     if (value.HasValue)
     {
         binaryImporter.Write((byte)value.Value, NpgsqlDbType.Smallint);
     }
     else
     {
         binaryImporter.WriteNull();
     }
 }
 public static void WriteNullable <T>(this NpgsqlBinaryImporter writer, T value, NpgsqlDbType npgsqlDbType)
 {
     if (value == null)
     {
         writer.WriteNull();
     }
     else
     {
         writer.Write(value, npgsqlDbType);
     }
 }
Esempio n. 19
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var table = new DataTable("practicetable2");

            table.Columns.Add("num", typeof(int));
            table.Columns.Add("numstring", typeof(string));
            table.Columns.Add("description", typeof(string));
            table.Columns.Add("someid", typeof(Guid));

            for (int i = 0; i < 10; i++)
            {
                var row = table.NewRow();
                row["num"]       = i;
                row["numstring"] = i.ToString();
                // Commented below line to test for null case.
                // row["description"] = "sfsdf";
                row["someid"] = Guid.NewGuid();
                table.Rows.Add(row);
            }
            for (int i = 0; i < table.Columns.Count; i++)
            {
                var column = table.Columns[i];
                Console.WriteLine($"full name: {column.DataType.FullName}");
            }

            using (var conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;Database=joyn_fdgcommon_dev;User Id=postgres;Password=admin;"))
            {
                conn.Open();
                using (NpgsqlBinaryImporter writer = conn.BeginBinaryImport("copy stage.practicetable2 from stdin(FORMAT BINARY)"))
                {
                    for (int i = 0; i < table.Rows.Count; i++)
                    {
                        DataRow row = table.Rows[i];
                        writer.StartRow();
                        for (int j = 0; j < table.Columns.Count; j++)
                        {
                            var column = table.Columns[j];
                            var value  = row[column.ColumnName];
                            if (value != null)
                            {
                                writer.Write(row[column.ColumnName]);
                            }
                            else
                            {
                                Console.WriteLine("writing null");
                                writer.WriteNull();
                            }
                        }
                    }
                    writer.Complete();
                }
            }
        }
Esempio n. 20
0
 public static void WriteValue(this NpgsqlBinaryImporter binaryImporter, long?value)
 {
     if (value.HasValue)
     {
         binaryImporter.Write(value.Value, NpgsqlDbType.Bigint);
     }
     else
     {
         binaryImporter.WriteNull();
     }
 }
Esempio n. 21
0
 /// <summary>
 /// when used within npgsql conn BeginBinaryImport allow to write safely nullable as null
 /// </summary>
 public static void SafeWrite <T>(this NpgsqlBinaryImporter wr, T obj)
 {
     if (obj == null)
     {
         wr.WriteNull();
     }
     else
     {
         wr.Write(obj);
     }
 }
 public static void SerializeColumn(Column c, object value, NpgsqlBinaryImporter importer)
 {
     if (value == DBNull.Value)
     {
         importer.WriteNull();
     }
     else
     {
         var type = GetPgType(c.Type, c.IsMax);
         var s    = value as string;
         if (s == null)
         {
             importer.Write(value, type);
         }
         else
         {
             s = Regex.Replace(s, "\0", ""); //null characters are not allowed in Postgres
             importer.Write(s, type);
         }
     }
 }
Esempio n. 23
0
        private void WriteToStream(NpgsqlBinaryImporter writer, IEnumerable <LogEvent> entities)
        {
            foreach (var entity in entities)
            {
                writer.StartRow();

                foreach (var columnKey in _columnOptions.Keys)
                {
                    writer.Write(_columnOptions[columnKey].GetValue(entity, _formatProvider), _columnOptions[columnKey].DbType);
                }
            }
        }
Esempio n. 24
0
 public static void SetValuesBinaryImporter <T>(this NpgsqlBinaryImporter importer, IEnumerable <T> o) where T : class
 {
     foreach (var entity in o)
     {
         importer.StartRow();
         var props = entity.GetType().GetProperties();
         foreach (var prop in props)
         {
             var type = GetNpgsqlDbType(prop.PropertyType);
             importer.Write(prop, type);
         }
     }
 }
        /// <summary>
        ///     Writes to the stream.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="entities">The entities.</param>
        private void WriteToStream(NpgsqlBinaryImporter writer, IEnumerable <LogEvent> entities)
        {
            foreach (var entity in entities)
            {
                writer.StartRow();

                foreach (var columnKey in this.ColumnNamesWithoutSkipped())
                {
                    writer.Write(
                        this.columnOptions[columnKey].GetValue(entity, this.formatProvider),
                        this.columnOptions[columnKey].DbType);
                }
            }
        }
Esempio n. 26
0
 /// <summary>
 ///     Mapping values from properties which have a corresponding data row.
 ///     Matching is done based on Column name and property key
 /// </summary>
 private void WriteAdditionalColumns(NpgsqlBinaryImporter writer, LogEvent logEvent)
 {
     foreach (var column in _columnOptions.AdditionalDataColumns)
     {
         logEvent.Properties.TryGetValue(column.PropertyName, out LogEventPropertyValue propertyValue);
         var scalarValue = propertyValue as ScalarValue;
         if (scalarValue != null)
         {
             writer.Write(scalarValue.ToString(), column.ColumnType);
         }
         else
         {
             writer.WriteNull();
         }
     }
 }
Esempio n. 27
0
 public static void WriteValue(this NpgsqlBinaryImporter importer, short value)
 {
     importer.Write(value, NpgsqlDbType.Smallint);
 }
Esempio n. 28
0
 public static void WriteValue(this NpgsqlBinaryImporter importer, DateTime value)
 {
     importer.Write(value, NpgsqlDbType.Timestamp);
 }
        private static void AddToTxImporter(NpgsqlBinaryImporter txImporter, long txInternalId, byte[] txExternalId, byte[] txPayload, DateTime?receivedAt, string callbackUrl,
                                            string callbackToken, string callbackEncryption, bool?merkleProof, string merkleFormat, bool?dsCheck,
                                            long?n, byte[] prevTxId, long?prevN, bool unconfirmedAncestor)
        {
            txImporter.StartRow();

            txImporter.Write(txInternalId, NpgsqlTypes.NpgsqlDbType.Bigint);
            txImporter.Write(txExternalId, NpgsqlTypes.NpgsqlDbType.Bytea);
            txImporter.Write((object)txPayload ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Bytea);
            txImporter.Write((object)receivedAt ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Timestamp);
            txImporter.Write((object)callbackUrl ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Varchar);
            txImporter.Write((object)callbackToken ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Varchar);
            txImporter.Write((object)callbackEncryption ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Varchar);
            txImporter.Write((object)merkleProof ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Boolean);
            txImporter.Write((object)merkleFormat ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Varchar);
            txImporter.Write((object)dsCheck ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Boolean);
            txImporter.Write((object)n ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Bigint);
            txImporter.Write((object)prevTxId ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Bytea);
            txImporter.Write((object)prevN ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Bigint);
            txImporter.Write((object)unconfirmedAncestor ?? DBNull.Value, NpgsqlTypes.NpgsqlDbType.Boolean);
        }
Esempio n. 30
0
 public static void WriteValue(this NpgsqlBinaryImporter importer, OperationType value)
 {
     importer.Write((byte)value, NpgsqlDbType.Smallint);
 }