示例#1
0
        public void Bug221MillisecondsFieldNotCopied()
        {
            // Test for https://github.com/npgsql/Npgsql/issues/221
            // The milliseconds field is not properly copied in NpgsqlCopySerializer.cs in method AddDateTime

            var cmd = new NpgsqlCommand("COPY data (field_timestamp) FROM STDIN", Conn);
            var npgsqlCopySerializer = new NpgsqlCopySerializer(Conn);
            var npgsqlCopyIn         = new NpgsqlCopyIn(cmd, Conn, npgsqlCopySerializer.ToStream);
            var testDate             = DateTime.Parse("2002-02-02 09:00:23.005");

            npgsqlCopyIn.Start();
            npgsqlCopySerializer.AddDateTime(testDate);
            npgsqlCopySerializer.EndRow();
            npgsqlCopySerializer.Flush();
            npgsqlCopyIn.End();

            NpgsqlDataReader dr = new NpgsqlCommand("select field_timestamp from data", Conn).ExecuteReader();

            dr.Read();

            Assert.AreEqual(testDate, dr[0]);
        }
 private void AddValueToSerializer(NpgsqlCopySerializer serializer, object value)
 {
     if (value.GetType() == typeof(Int32))
     {
         serializer.AddInt32((int)value);
     }
     if (value.GetType() == typeof(Int64))
     {
         serializer.AddInt64((Int64)value);
     }
     if (value.GetType() == typeof(string))
     {
         serializer.AddString(value.ToString());
     }
     if (value.GetType() == typeof(float))
     {
         serializer.AddNumber((float)value);
     }
     if (value.GetType() == typeof(double))
     {
         serializer.AddNumber((double)value);
     }
     if (value.GetType() == typeof(bool))
     {
         serializer.AddBool((bool)value);
     }
     if (value.GetType() == typeof(DateTime))
     {
         serializer.AddDateTime((DateTime)value);
     }
     if (value == null || value == DBNull.Value)
     {
         serializer.AddNull();
     }
     if (value.GetType() == typeof(Guid))
     {
         serializer.AddString(value.ToString());
     }
 }
示例#3
0
    // Serializer success test

    static public void CopyInWithSerializer()
    {
        NpgsqlCopySerializer sink = new NpgsqlCopySerializer(conn);
        String q = "COPY copy2(field_int4, field_int8, field_text, field_timestamp, field_bool) FROM STDIN";

        cin = new NpgsqlCopyIn(q, conn);
        cin.Start();
        if (!cin.IsActive)
        {
            throw new Exception("Copy started inactive");
        }
        sink.AddInt32(-13);
        sink.AddNull();
        sink.AddString("First row");
        sink.AddDateTime(new DateTime(2020, 12, 22, 23, 33, 45, 765));
        sink.AddBool(true);
        sink.EndRow();
        sink.AddNull();
        sink.AddNull();
        sink.AddString("Second row");
        sink.Close();
        Console.Out.WriteLine("Copy through serializer ok");
    }