public async Task TestInsertIgnore() { var builder = ClientTestUtil.GetBasicSchema() .SetTableName(nameof(TestInsertIgnore)); var table = await _client.CreateTableAsync(builder); // Test insert ignore implements normal insert. var insert = ClientTestUtil.CreateBasicSchemaInsertIgnore(table, 1); await _client.WriteAsync(new[] { insert }); var rowStrings = await ClientTestUtil.ScanTableToStringsAsync(_client, table); var rowString = Assert.Single(rowStrings); Assert.Equal( "INT32 key=1, INT32 column1_i=2, INT32 column2_i=3, " + "STRING column3_s=a string, BOOL column4_b=True", rowString); // Test insert ignore does not return a row error. await _client.WriteAsync(new[] { insert }); rowStrings = await ClientTestUtil.ScanTableToStringsAsync(_client, table); rowString = Assert.Single(rowStrings); Assert.Equal( "INT32 key=1, INT32 column1_i=2, INT32 column2_i=3, " + "STRING column3_s=a string, BOOL column4_b=True", rowString); }
public async Task TestInsertAfterInsertIgnoreHasRowError() { var builder = ClientTestUtil.GetBasicSchema() .SetTableName(nameof(TestInsertAfterInsertIgnoreHasRowError)); var table = await _client.CreateTableAsync(builder); var rows = new[] { ClientTestUtil.CreateBasicSchemaInsertIgnore(table, 1), ClientTestUtil.CreateBasicSchemaInsert(table, 1) }; var exception = await Assert.ThrowsAsync <KuduWriteException>( () => _client.WriteAsync(rows)); var rowError = Assert.Single(exception.PerRowErrors); Assert.True(rowError.IsAlreadyPresent); var rowStrings = await ClientTestUtil.ScanTableToStringsAsync(_client, table); var rowString = Assert.Single(rowStrings); Assert.Equal( "INT32 key=1, INT32 column1_i=2, INT32 column2_i=3, " + "STRING column3_s=a string, BOOL column4_b=True", rowString); }
public async Task TestAlterAddColumns() { KuduTable table = await CreateTableAsync(); await InsertRowsAsync(table, 0, 100); Assert.Equal(100, await ClientTestUtil.CountRowsAsync(_client, table)); await _client.AlterTableAsync(new AlterTableBuilder(table) .AddColumn("addNonNull", KuduType.Int32, opt => opt .Nullable(false) .DefaultValue(100)) .AddColumn("addNullable", KuduType.Int32) .AddColumn("addNullableDef", KuduType.Int32, opt => opt .DefaultValue(200))); // Reopen table for the new schema. table = await _client.OpenTableAsync(_tableName); Assert.Equal(5, table.Schema.Columns.Count); // Add a row with addNullableDef=null var insert = table.NewInsert(); insert.SetInt32("c0", 101); insert.SetInt32("c1", 101); insert.SetInt32("addNonNull", 101); insert.SetInt32("addNullable", 101); insert.SetNull("addNullableDef"); await _session.EnqueueAsync(insert); await _session.FlushAsync(); // Check defaults applied, and that row key=101 var results = await ClientTestUtil.ScanTableToStringsAsync(_client, table); var expected = new List <string>(101); for (int i = 0; i < 100; i++) { expected.Add($"INT32 c0={i}, INT32 c1={i}, INT32 addNonNull=100, " + "INT32 addNullable=NULL, INT32 addNullableDef=200"); } expected.Add("INT32 c0=101, INT32 c1=101, INT32 addNonNull=101, " + "INT32 addNullable=101, INT32 addNullableDef=NULL"); Assert.Equal( expected.OrderBy(r => r), results.OrderBy(r => r)); }
public async Task TestDeleteIgnore() { var builder = ClientTestUtil.GetBasicSchema() .SetTableName(nameof(TestDeleteIgnore)); var table = await _client.CreateTableAsync(builder); // Test delete ignore does not return a row error. var delete = ClientTestUtil.CreateBasicSchemaDeleteIgnore(table, 1); await _client.WriteAsync(new[] { delete }); var insert = ClientTestUtil.CreateBasicSchemaInsert(table, 1); await _client.WriteAsync(new[] { insert }); Assert.Single(await ClientTestUtil.ScanTableToStringsAsync(_client, table)); // Test delete ignore implements normal delete. await _client.WriteAsync(new[] { delete }); Assert.Empty(await ClientTestUtil.ScanTableToStringsAsync(_client, table)); }
public async Task TestInsertIgnoreAfterInsertHasNoRowError() { var builder = ClientTestUtil.GetBasicSchema() .SetTableName(nameof(TestInsertIgnoreAfterInsertHasNoRowError)); var table = await _client.CreateTableAsync(builder); var rows = new[] { ClientTestUtil.CreateBasicSchemaInsert(table, 1), ClientTestUtil.CreateBasicSchemaUpsert(table, 1, 1, false), ClientTestUtil.CreateBasicSchemaInsertIgnore(table, 1) }; await _client.WriteAsync(rows); var rowStrings = await ClientTestUtil.ScanTableToStringsAsync(_client, table); var rowString = Assert.Single(rowStrings); Assert.Equal( "INT32 key=1, INT32 column1_i=1, INT32 column2_i=3, " + "STRING column3_s=a string, BOOL column4_b=True", rowString); }