private void RunAssertionInsertWhereOMStaggered(EventRepresentationEnum eventRepresentationEnum) { IDictionary <String, object> dataType = MakeMap(new object[][] { new object[] { "a", typeof(string) }, new object[] { "b", typeof(int) } }); epService.EPAdministrator.Configuration.AddEventType("MyMap", dataType); string stmtTextCreateOne = eventRepresentationEnum.GetAnnotationText() + " create window MyWindow.win:keepall() as select a, b from MyMap"; EPStatement stmtCreateOne = epService.EPAdministrator.CreateEPL(stmtTextCreateOne); Assert.AreEqual(eventRepresentationEnum.GetOutputClass(), stmtCreateOne.EventType.UnderlyingType); stmtCreateOne.AddListener(listeners[0]); // create insert into string stmtTextInsertOne = "insert into MyWindow select a, b from MyMap"; epService.EPAdministrator.CreateEPL(stmtTextInsertOne); // populate some data epService.EPRuntime.SendEvent(MakeMap(new object[][] { new object[] { "a", "E1" }, new object[] { "b", 2 } }), "MyMap"); epService.EPRuntime.SendEvent(MakeMap(new object[][] { new object[] { "a", "E2" }, new object[] { "b", 10 } }), "MyMap"); epService.EPRuntime.SendEvent(MakeMap(new object[][] { new object[] { "a", "E3" }, new object[] { "b", 10 } }), "MyMap"); // create window with keep-all using OM EPStatementObjectModel model = new EPStatementObjectModel(); eventRepresentationEnum.AddAnnotation(model); Expression where = Expressions.Eq("b", 10); model.CreateWindow = CreateWindowClause.Create("MyWindowTwo", View.Create("win", "keepall")).SetInsert(true).SetInsertWhereClause(where); model.SelectClause = SelectClause.CreateWildcard(); model.FromClause = FromClause.Create(FilterStream.Create("MyWindow")); string text = eventRepresentationEnum.GetAnnotationText() + " create window MyWindowTwo.win:keepall() as select * from MyWindow insert where b=10"; Assert.AreEqual(text.Trim(), model.ToEPL()); EPStatementObjectModel modelTwo = epService.EPAdministrator.CompileEPL(text); Assert.AreEqual(text.Trim(), modelTwo.ToEPL()); EPStatement stmt = epService.EPAdministrator.Create(modelTwo); EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), "a,b".Split(','), new object[][] { new object[] { "E2", 10 }, new object[] { "E3", 10 } }); // test select individual fields and from an insert-from named window stmt = epService.EPAdministrator.CreateEPL(eventRepresentationEnum.GetAnnotationText() + " create window MyWindowThree.win:keepall() as select a from MyWindowTwo insert where a = 'E2'"); EPAssertionUtil.AssertPropsPerRow(stmt.GetEnumerator(), "a".Split(','), new object[][] { new object[] { "E2" } }); epService.EPAdministrator.DestroyAllStatements(); epService.EPAdministrator.Configuration.RemoveEventType("MyWindow", true); epService.EPAdministrator.Configuration.RemoveEventType("MyWindowTwo", true); epService.EPAdministrator.Configuration.RemoveEventType("MyWindowThree", true); }