コード例 #1
3
ファイル: CopyTests.cs プロジェクト: neisbut/npgsql
        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));
            }
        }
コード例 #2
2
		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));
					}
				}
			}
		}
コード例 #3
1
ファイル: CopyTests.cs プロジェクト: neisbut/npgsql
        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));
        }
コード例 #4
0
ファイル: CopyTests.cs プロジェクト: neisbut/npgsql
        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");
            }
        }
コード例 #5
0
ファイル: CopyTests.cs プロジェクト: neisbut/npgsql
        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();
                }
            }
        }