public void CancelBinaryImport() { using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); using (var writer = conn.BeginBinaryImport("COPY data (field_text, field_int4) FROM STDIN BINARY")) { writer.StartRow(); writer.Write("Hello"); writer.Write(8); writer.Cancel(); } Assert.That(ExecuteScalar(@"SELECT COUNT(*) FROM data", conn), Is.EqualTo(0)); } }
private void CreateAndFillEvents() { var creator = new TableBuilder(PostgresFixture.ConnectionString); creator.CreateTable(typeof(Guid), StreamName); using (var connection = new NpgsqlConnection(PostgresFixture.ConnectionString)) { connection.Open(); var id = Guid.NewGuid(); var events = Enumerable .Range(0, TotalRecords) .Select(i => i.AsSequence()) .Select(seq => new TestEvent { AggregateID = id, Sequence = seq, Stamp = DefaultStamper.Now() }); using (var writer = connection.BeginBinaryImport("COPY importstream_events(aggregateid, sequence, eventtype, event) from STDIN (format binary)")) { foreach (var @event in events) { writer.StartRow(); writer.Write(@event.AggregateID.ToString(), NpgsqlDbType.Uuid); writer.Write((int)@event.Sequence); writer.Write(@event.GetType().AssemblyQualifiedName); writer.Write(Serializer.Serialize(@event)); } } } }
public void UnexpectedExceptionBinaryImport() { var conn = new NpgsqlConnection(ConnectionString); conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (blob BYTEA)", conn); var data = new byte[conn.BufferSize + 10]; var writer = conn.BeginBinaryImport("COPY data (blob) FROM STDIN BINARY"); ExecuteNonQuery(string.Format("SELECT pg_terminate_backend({0})", conn.ProcessID)); Thread.Sleep(50); Assert.That(() => { writer.StartRow(); writer.Write(data); writer.Dispose(); }, Throws.Exception.TypeOf<IOException>()); Assert.That(conn.FullState, Is.EqualTo(ConnectionState.Broken)); }
public void CloseDuringCopy() { // TODO: Check no broken connections were returned to the pool using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); conn.BeginBinaryImport("COPY data (field_text, field_int4) FROM STDIN BINARY"); } using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); conn.BeginBinaryExport("COPY data (field_text, field_int2) TO STDIN BINARY"); } using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); conn.BeginRawBinaryCopy("COPY data (field_text, field_int4) FROM STDIN BINARY"); } using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); conn.BeginRawBinaryCopy("COPY data (field_text, field_int4) TO STDIN BINARY"); } using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); conn.BeginTextImport("COPY data (field_text, field_int4) FROM STDIN"); } using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (field_text TEXT, field_int2 SMALLINT, field_int4 INTEGER)", conn); conn.BeginTextExport("COPY data (field_text, field_int4) TO STDIN"); } }
public void ImportDirectBuffer() { using (var conn = new NpgsqlConnection(ConnectionString)) { conn.Open(); ExecuteNonQuery("CREATE TEMP TABLE data (blob BYTEA)", conn); using (var writer = conn.BeginBinaryImport("COPY data (blob) FROM STDIN BINARY")) { // Big value - triggers use of the direct buffer optimization var data = new byte[conn.BufferSize + 10]; writer.StartRow(); writer.Write(data); writer.StartRow(); writer.Write(data); writer.Dispose(); } } }