public void Include_on_entity_with_composite_key_Many_To_One_bugs_925_926() { CreateDatabase925(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkNpgsql() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext925(serviceProvider)) { var query = ctx.Orders.Include(o => o.Customer); var result = query.ToList(); Assert.Equal(5, result.Count); Assert.NotNull(result[0].Customer); Assert.NotNull(result[1].Customer); Assert.NotNull(result[2].Customer); Assert.NotNull(result[3].Customer); Assert.NotNull(result[4].Customer); var expectedSql = @"SELECT ""o"".""Id"", ""o"".""CustomerFirstName"", ""o"".""CustomerLastName"", ""o"".""Name"", ""c"".""FirstName"", ""c"".""LastName"" FROM ""Order"" AS ""o"" LEFT JOIN ""Customer"" AS ""c"" ON (""o"".""CustomerFirstName"" = ""c"".""FirstName"") AND (""o"".""CustomerLastName"" = ""c"".""LastName"")"; Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql); } }
public void Include_on_entity_with_composite_key_One_To_Many_bugs_925_926() { CreateDatabase925(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkNpgsql() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext925(serviceProvider)) { var query = ctx.Customers.Include(c => c.Orders).OrderBy(c => c.FirstName).ThenBy(c => c.LastName); var result = query.ToList(); Assert.Equal(2, result.Count); Assert.Equal(2, result[0].Orders.Count); Assert.Equal(3, result[1].Orders.Count); var expectedSql = @"SELECT ""c"".""FirstName"", ""c"".""LastName"" FROM ""Customer"" AS ""c"" ORDER BY ""c"".""FirstName"", ""c"".""LastName"" SELECT ""o"".""Id"", ""o"".""CustomerFirstName"", ""o"".""CustomerLastName"", ""o"".""Name"" FROM ""Order"" AS ""o"" WHERE EXISTS ( SELECT 1 FROM ""Customer"" AS ""c"" WHERE (""o"".""CustomerFirstName"" = ""c"".""FirstName"") AND (""o"".""CustomerLastName"" = ""c"".""LastName"")) ORDER BY ""o"".""CustomerFirstName"", ""o"".""CustomerLastName"""; Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql); } }
public void Execute1742(CustomerDetails_1742 details) { CreateDatabase925(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkNpgsql() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext925(serviceProvider)) { var firstName = details.FirstName; ctx.Customers.Where(c => c.FirstName == firstName && c.LastName == details.LastName).ToList(); const string expectedSql = @"@__firstName_0: Foo @__8__locals1_details_LastName_1: Bar SELECT ""c"".""FirstName"", ""c"".""LastName"" FROM ""Customer"" AS ""c"" WHERE (""c"".""FirstName"" = @__firstName_0) AND (""c"".""LastName"" = @__8__locals1_details_LastName_1)"; Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql); } }
public void ThenInclude_with_interface_navigations_3409() { CreateDatabase3409(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var context = new MyContext3409(serviceProvider)) { var results = context.Parents .Include(p => p.ChildCollection) .ThenInclude(c => c.SelfReferenceCollection) .ToList(); Assert.Equal(1, results.Count); Assert.Equal(1, results[0].ChildCollection.Count); Assert.Equal(2, results[0].ChildCollection.Single().SelfReferenceCollection.Count); } using (var context = new MyContext3409(serviceProvider)) { var results = context.Children .Include(c => c.SelfReferenceBackNavigation) .ThenInclude(c => c.ParentBackNavigation) .ToList(); Assert.Equal(3, results.Count); Assert.Equal(2, results.Count(c => c.SelfReferenceBackNavigation != null)); Assert.Equal(1, results.Count(c => c.ParentBackNavigation != null)); } }
public virtual void Repro3101_coalesce_tracking() { CreateDatabase3101(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext3101(serviceProvider)) { var query = from eVersion in ctx.Entities join eRoot in ctx.Entities on eVersion.RootEntityId equals(int?) eRoot.Id into RootEntities from eRootJoined in RootEntities.DefaultIfEmpty() select new { eRootJoined, eVersion, foo = eRootJoined ?? eVersion }; var result = query.ToList(); var foo = ctx.ChangeTracker.Entries().ToList(); Assert.True(ctx.ChangeTracker.Entries().Count() > 0); } }
private static void CreateTestStore <TContext>( string databaseName, IServiceProvider serviceProvider, Func <IServiceProvider, DbContextOptions, TContext> contextCreator, Action <TContext> contextInitializer) where TContext : DbContext, IDisposable { var connectionString = NpgsqlTestStore.CreateConnectionString(databaseName); NpgsqlTestStore.GetOrCreateShared(databaseName, () => { var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseNpgsql(connectionString); using (var context = contextCreator(serviceProvider, optionsBuilder.Options)) { if (context.Database.EnsureCreated()) { contextInitializer(context); } TestSqlLoggerFactory.Reset(); } }); }
public InheritanceSqliteFixture() { _serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlite() .ServiceCollection() .AddSingleton(TestSqliteModelSource.GetFactory(OnModelCreating)) .AddInstance <ILoggerFactory>(new TestSqlLoggerFactory()) .BuildServiceProvider(); var testStore = SqliteTestStore.CreateScratch(); var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseSqlite(testStore.Connection); _options = optionsBuilder.Options; // TODO: Do this via migrations & update pipeline testStore.ExecuteNonQuery(@" DROP TABLE IF EXISTS Country; DROP TABLE IF EXISTS Animal; CREATE TABLE Country ( Id int NOT NULL PRIMARY KEY, Name nvarchar(100) NOT NULL ); CREATE TABLE Animal ( Species nvarchar(100) NOT NULL PRIMARY KEY, Name nvarchar(100) NOT NULL, CountryId int NOT NULL , IsFlightless bit NOT NULL, EagleId nvarchar(100), 'Group' int, FoundOn tinyint, Discriminator nvarchar(255), FOREIGN KEY(countryId) REFERENCES Country(Id), FOREIGN KEY(EagleId) REFERENCES Animal(Species) ); CREATE TABLE Plant ( Genus int NOT NULL, Species nvarchar(100) NOT NULL PRIMARY KEY, Name nvarchar(100) NOT NULL, CountryId int, HasThorns bit, FOREIGN KEY(countryId) REFERENCES Country(Id) ); "); using (var context = CreateContext()) { SeedData(context); } TestSqlLoggerFactory.Reset(); }
public void Include_on_entity_with_composite_key_Many_To_One_bugs_925_926() { CreateDatabase925(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext925(serviceProvider)) { var query = ctx.Orders.Include(o => o.Customer); var result = query.ToList(); Assert.Equal(5, result.Count); Assert.NotNull(result[0].Customer); Assert.NotNull(result[1].Customer); Assert.NotNull(result[2].Customer); Assert.NotNull(result[3].Customer); Assert.NotNull(result[4].Customer); var expectedSql = @"SELECT [o].[Id], [o].[CustomerFirstName], [o].[CustomerLastName], [o].[Name], [c].[FirstName], [c].[LastName] FROM [Order] AS [o] LEFT JOIN [Customer] AS [c] ON ([o].[CustomerFirstName] = [c].[FirstName]) AND ([o].[CustomerLastName] = [c].[LastName])"; Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql); } }
public virtual async Task Can_change_principal_instance_non_derived() { var options = Fixture.CreateOptions(); using (var context = new EmbeddedTransportationContext(options)) { var bike = await context.Vehicles.SingleAsync(v => v.Name == "Trek Pro Fit Madone 6 Series"); var newBike = new Vehicle { Name = "Trek Pro Fit Madone 6 Series", Operator = bike.Operator, SeatingCapacity = 2 }; context.Remove(bike); context.Add(newBike); TestSqlLoggerFactory.Clear(); await context.SaveChangesAsync(); } using (var context = new EmbeddedTransportationContext(options)) { var bike = await context.Vehicles.SingleAsync(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal(2, bike.SeatingCapacity); Assert.NotNull(bike.Operator); } }
public void Include_on_entity_with_composite_key_One_To_Many_bugs_925_926() { CreateDatabase925(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext925(serviceProvider)) { var query = ctx.Customers.Include(c => c.Orders).OrderBy(c => c.FirstName).ThenBy(c => c.LastName); var result = query.ToList(); Assert.Equal(2, result.Count); Assert.Equal(2, result[0].Orders.Count); Assert.Equal(3, result[1].Orders.Count); var expectedSql = @"SELECT [c].[FirstName], [c].[LastName] FROM [Customer] AS [c] ORDER BY [c].[FirstName], [c].[LastName] SELECT [o].[Id], [o].[CustomerFirstName], [o].[CustomerLastName], [o].[Name] FROM [Order] AS [o] INNER JOIN ( SELECT DISTINCT [c].[FirstName], [c].[LastName] FROM [Customer] AS [c] ) AS [c0] ON ([o].[CustomerFirstName] = [c0].[FirstName]) AND ([o].[CustomerLastName] = [c0].[LastName]) ORDER BY [c0].[FirstName], [c0].[LastName]"; Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql); } }
/// <summary> /// Initializes a <see cref="CompatibilityQueryNpgsqlFixure"/>. /// </summary> // ReSharper disable once UnusedMember.Global public CompatibilityQueryNpgsqlFixure() { TestSqlLoggerFactory = new TestSqlLoggerFactory(); _testStore = NpgsqlTestStore.CreateScratch(); using (CompatibilityContext context = CreateContext()) { context.Database.EnsureCreated(); context.CompatibilityTestEntities.AddRange( new CompatibilityTestEntity { Id = 1, DateTime = new DateTime(2018, 06, 23) }, new CompatibilityTestEntity { Id = 2, DateTime = new DateTime(2018, 06, 23) }, new CompatibilityTestEntity { Id = 3, DateTime = new DateTime(2018, 06, 23) }); context.SaveChanges(); } }
public void Keys_generated_in_batches(int count, int expected) { var loggerFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlServer() .ServiceCollection() .AddSingleton <ILoggerFactory>(loggerFactory) .BuildServiceProvider(); using (var context = new ConfiguredChipsContext(serviceProvider)) { context.Database.EnsureCreated(); for (var i = 0; i < count; i++) { context.Chips.Add(new KettleChips { BestBuyDate = DateTime.Now, Name = "Doritos Locos Tacos " + i }); } context.SaveChanges(); } Assert.Equal(expected, CountSqlLinesContaining("SELECT NEXT VALUE FOR")); }
public async System.Threading.Tasks.Task Stream_Generate_Insert_For_Single_Entity() { using (var testDatabase = SqlServerTestStore.Create(DatabaseName)) { var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); var optionsBuilder = new DbContextOptionsBuilder() .EnableSensitiveDataLogging() .UseSqlServer(testDatabase.ConnectionString, b => b.ApplyConfiguration()) .UseInternalServiceProvider(serviceProvider); using (var db = new BloggingContext(optionsBuilder.Options)) { await CreateBlogDatabaseAsync <Blog>(db); } loggingFactory.Clear(); using (var db = new BloggingContext(optionsBuilder.Options)) { var toAdd = db.Add(new Blog { Name = "Blog to Insert", George = true, TheGu = new Guid("0456AEF1-B7FC-47AA-8102-975D6BA3A9BF"), NotFigTime = new DateTime(1973, 9, 3, 0, 10, 33, 777), ToEat = 64, OrNothing = 0.123456789, Fuse = 777, WayRound = 9876543210, Away = 0.12345f, AndChew = new byte[16] }).Entity; var statement = ""; using (var stream = new MemoryStream()) { db.Generate(stream); stream.Seek(0, SeekOrigin.Begin); var streamReader = new StreamReader(stream); statement = await streamReader.ReadToEndAsync(); Assert.IsTrue(!string.IsNullOrEmpty(statement)); } var reader = new StringReader(statement); IList <ParseError> errors; var parser = new TSql140Parser(false); var parseResult = parser.Parse(reader, out errors); Assert.IsFalse(errors.Any()); } } }
public void Execute1742(CustomerDetails_1742 details) { CreateDatabase925(); var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlServer() .ServiceCollection() .AddInstance <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); using (var ctx = new MyContext925(serviceProvider)) { var firstName = details.FirstName; ctx.Customers.Where(c => c.FirstName == firstName && c.LastName == details.LastName).ToList(); const string expectedSql = @"@__firstName_0: Foo @__8__locals1_details_LastName_1: Bar SELECT [c].[FirstName], [c].[LastName] FROM [Customer] AS [c] WHERE ([c].[FirstName] = @__firstName_0) AND ([c].[LastName] = @__8__locals1_details_LastName_1)"; Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql); } }
public virtual void Can_change_principal_instance_non_derived() { using (CreateTestStore()) { using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); var newBike = new Vehicle { Name = "Trek Pro Fit Madone 6 Series", Operator = bike.Operator, SeatingCapacity = 2 }; var oldEntry = context.Remove(bike); var newEntry = context.Add(newBike); TestSqlLoggerFactory.Clear(); context.SaveChanges(); } using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal(2, bike.SeatingCapacity); Assert.NotNull(bike.Operator); } } }
public virtual void Can_change_nested_instance_non_derived() { using (CreateTestStore()) { using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); bike.Operator = new Operator { Name = "Chris Horner" }; context.ChangeTracker.DetectChanges(); bike.Operator = new LicensedOperator { Name = "repairman" }; TestSqlLoggerFactory.Clear(); context.SaveChanges(); } using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal("repairman", bike.Operator.Name); } } }
public virtual async Task Can_change_nested_instance_non_derived() { var options = Fixture.CreateOptions(); using (var context = new EmbeddedTransportationContext(options)) { var bike = await context.Vehicles.SingleAsync(v => v.Name == "Trek Pro Fit Madone 6 Series"); bike.Operator = new Operator { Name = "Chris Horner" }; context.ChangeTracker.DetectChanges(); bike.Operator = new LicensedOperator { Name = "repairman" }; TestSqlLoggerFactory.Clear(); await context.SaveChangesAsync(); } using (var context = new EmbeddedTransportationContext(options)) { var bike = await context.Vehicles.SingleAsync(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal("repairman", bike.Operator.Name); } }
public override void CreateTestStore() { using (var context = CreateContext()) { context.Database.EnsureClean(); Seed(context); TestSqlLoggerFactory.Reset(); } }
public static void AssertContains(this TestSqlLoggerFactory testSqlLoggerFactory, params string[] expected) { string[] expectedFixed = new string[expected.Length]; int i = 0; foreach (var item in expected) { expectedFixed[i++] = item.Replace("\r\n", "\n"); } testSqlLoggerFactory.AssertBaseline(expectedFixed, assertOrder: false); }
public override SqlServerTestStore CreateTestStore() { return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () => { using (var context = new LoadContext(_options)) { context.Database.EnsureCreated(); Seed(context); TestSqlLoggerFactory.Reset(); } })); }
public ExecutionStrategyTest(ExecutionStrategyFixture fixture) { Fixture = fixture; TestStore = SqlServerTestStore.GetOrCreateShared(DatabaseName, () => { using (var context = CreateContext()) { context.Database.EnsureCreated(); TestSqlLoggerFactory.Reset(); } }); }
public async System.Threading.Tasks.Task Stream_Generate_Delete_For_Single_Entity() { using (var testDatabase = SqlServerTestStore.Create(DatabaseName)) { var loggingFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggingFactory) .BuildServiceProvider(); var optionsBuilder = new DbContextOptionsBuilder() .EnableSensitiveDataLogging() .UseSqlServer(testDatabase.ConnectionString, b => b.ApplyConfiguration()) .UseInternalServiceProvider(serviceProvider); using (var db = new BloggingContext(optionsBuilder.Options)) { await CreateBlogDatabaseAsync <Blog>(db); } loggingFactory.Clear(); using (var db = new BloggingContext(optionsBuilder.Options)) { var toDelete = db.Blogs.Single(b => b.Name == "Blog2"); toDelete.Name = "Blog to delete"; var deletedId = toDelete.Id; db.Entry(toDelete).State = EntityState.Deleted; var statement = ""; using (var stream = new MemoryStream()) { db.Generate(stream); stream.Seek(0, SeekOrigin.Begin); var streamReader = new StreamReader(stream); statement = await streamReader.ReadToEndAsync(); Assert.IsTrue(!string.IsNullOrEmpty(statement)); } var reader = new StringReader(statement); IList <ParseError> errors; var parser = new TSql140Parser(false); var parseResult = parser.Parse(reader, out errors); Assert.IsFalse(errors.Any()); } } }
public override SqlServerTestStore CreateTestStore() { return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () => { using (var context = new ComplexNavigationsContext(_options)) { context.Database.EnsureCreated(); ComplexNavigationsModelInitializer.Seed(context); TestSqlLoggerFactory.Reset(); } })); }
protected override void CreateAndSeedDatabase(string databaseName, Func <MonsterContext> createContext, Action <MonsterContext> seed) { _testStore = NpgsqlTestStore.GetOrCreateShared(databaseName, () => { using (var context = createContext()) { context.Database.EnsureCreated(); seed(context); TestSqlLoggerFactory.Reset(); } }); }
public override SqliteTestStore CreateTestStore() { return(SqliteTestStore.GetOrCreateShared(DatabaseName, () => { using (var context = new GearsOfWarContext(_options)) { context.Database.EnsureClean(); GearsOfWarModelInitializer.Seed(context); TestSqlLoggerFactory.Reset(); } })); }
public virtual void Can_change_nested_instance_non_derived() { using (CreateTestStore( modelBuilder => { OnModelCreating(modelBuilder); modelBuilder.Entity <Engine>().ToContainer("TransportationContext"); modelBuilder.Entity <FuelTank>( eb => { eb.ToContainer("TransportationContext"); eb.HasOne(e => e.Engine) .WithOne(e => e.FuelTank) .HasForeignKey <FuelTank>(e => e.VehicleName) .OnDelete(DeleteBehavior.Restrict); }); modelBuilder.Ignore <SolidFuelTank>(); modelBuilder.Ignore <SolidRocket>(); })) { using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); bike.Operator = new Operator { Name = "Chris Horner" }; context.ChangeTracker.DetectChanges(); bike.Operator = new LicensedOperator { Name = "repairman", LicenseType = "Repair" }; TestSqlLoggerFactory.Clear(); context.SaveChanges(); } using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal("repairman", bike.Operator.Name); Assert.Equal("Repair", ((LicensedOperator)bike.Operator).LicenseType); } } }
public override SqlServerTestStore CreateTestStore() => SqlServerTestStore.GetOrCreateShared(DatabaseName, () => { var optionsBuilder = new DbContextOptionsBuilder() .UseSqlServer(_connectionString, b => b.ApplyConfiguration()) .UseInternalServiceProvider(_serviceProvider); using (var context = new DataAnnotationContext(optionsBuilder.Options)) { context.Database.EnsureCreated(); DataAnnotationModelInitializer.Seed(context); TestSqlLoggerFactory.Reset(); } });
public override SqliteTestStore CreateTestStore() => SqliteTestStore.GetOrCreateShared( DatabaseName, () => { using (var context = new UpdatesContext(new DbContextOptionsBuilder() .UseSqlite(_connectionString) .UseInternalServiceProvider(_serviceProvider).Options)) { context.Database.EnsureClean(); UpdatesModelInitializer.Seed(context); TestSqlLoggerFactory.Reset(); } });
public static void AssertSql(this TestSqlLoggerFactory testSqlLoggerFactory, params string[] expected) { string[] expectedFixed = new string[expected.Length]; int i = 0; foreach (var item in expected) { if (IgnoreStatement(item)) { return; } expectedFixed[i++] = item.Replace("\r\n", "\n"); } testSqlLoggerFactory.AssertBaseline(expectedFixed); }
public override SqlServerTestStore CreateTestStore() { return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () => { using (var context = new NullSemanticsContext(new DbContextOptionsBuilder() .UseSqlServer(_connectionString, b => b.ApplyConfiguration()) .UseInternalServiceProvider(_serviceProvider).Options)) { context.Database.EnsureCreated(); NullSemanticsModelInitializer.Seed(context); TestSqlLoggerFactory.Reset(); } })); }
public void Keys_generated_in_batches(int count, int expected) { var loggerFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlServer() .ServiceCollection() .AddInstance<ILoggerFactory>(loggerFactory) .AddSingleton<SqlServerModificationCommandBatchFactory, TestSqlServerModificationCommandBatchFactory>() .BuildServiceProvider(); using (var context = new ConfiguredChipsContext(serviceProvider, "KettleChips")) { context.Database.EnsureCreated(); for (int i = 0; i < count; i++) { context.Chips.Add(new KettleChips { BestBuyDate = DateTime.Now, Name = "Doritos Locos Tacos " + i }); } context.SaveChanges(); } Assert.Equal(expected, CountSqlLinesContaining("SELECT NEXT VALUE FOR")); }