@Override public boolean isMultiSource(Object modelId) throws QueryMetadataException, TeiidComponentException { return multiSourceModels.containsKey(getFullName(modelId)); }
public ProcessorPlan helpTestMultiSourcePlan(QueryMetadataInterface metadata, String userSql, String multiModel, int sourceCount, ProcessorDataManager dataMgr, List<?>[] expectedResults, VDBMetaData vdb) throws Exception { return helpTestMultiSourcePlan(metadata, userSql, multiModel, sourceCount, dataMgr, expectedResults, vdb, null, null); }
public MultiSourceDataManager() { setMustRegisterCommands(false); }
@Test public void testProcedure() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "exec MultiModel.proc('b', 'a')"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(1)}; final MultiSourceDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(true); dataMgr.addData("EXEC MultiModel.proc('b')", new List<?>[] {Arrays.asList(1)}); //$NON-NLS-1$ helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Override protected QueryMetadataInterface createDesignTimeMetadata() { return new MultiSourceMetadataWrapper(actualMetadata.getDesignTimeMetadata(), multiSourceModels); }
@Test public void testNoReplacement() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "SELECT * FROM MultiModel.Phys WHERE SOURCE_NAME = 'bogus'"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 2; final List<?>[] expected = new List[0]; final ProcessorDataManager dataMgr = new MultiSourceDataManager(); helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Test public void testInsertNotMatching() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "INSERT INTO MultiModel.Phys(a, SOURCE_NAME) VALUES ('a', 'x')"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(0)}; final MultiSourceDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(true); helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Override public List<?> getElementIDsInGroupID(Object groupID) throws TeiidComponentException, QueryMetadataException { MultiSourceGroup msg = getMultiSourceGroup(groupID); if (msg != null) { return msg.columns; } return actualMetadata.getElementIDsInGroupID(groupID); }
@Test public void testMultiUpdateAll() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "update MultiModel.Phys set a = '1' where b = 'z'"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(3)}; final MultiSourceDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(true); dataMgr.addData("UPDATE MultiModel.Phys SET a = '1' WHERE b = 'z'", new List<?>[] {Arrays.asList(1)}); //$NON-NLS-1$ helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Override protected QueryMetadataInterface createDesignTimeMetadata() { return new MultiSourceMetadataWrapper(actualMetadata.getDesignTimeMetadata(), multiSourceModels); }
@Test public void testMultiReplacement() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "SELECT * FROM MultiModel.Phys"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(new Object[] { null, null}), Arrays.asList(new Object[] { null, null}), Arrays.asList(new Object[] { null, null})}; final ProcessorDataManager dataMgr = new MultiSourceDataManager(); helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Override public boolean isMultiSource(Object modelId) throws QueryMetadataException, TeiidComponentException { return multiSourceModels.containsKey(getFullName(modelId)); }
@Override public List<?> getElementIDsInGroupID(Object groupID) throws TeiidComponentException, QueryMetadataException { MultiSourceGroup msg = getMultiSourceGroup(groupID); if (msg != null) { return msg.columns; } return actualMetadata.getElementIDsInGroupID(groupID); }
@Test public void testInsertMatching() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "INSERT INTO MultiModel.Phys(a, SOURCE_NAME) VALUES ('a', 'a')"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(1)}; final MultiSourceDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(true); dataMgr.addData("INSERT INTO MultiModel.Phys (a) VALUES ('a')", new List<?>[] {Arrays.asList(1)}); //$NON-NLS-1$ helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Test public void testSingleReplacementInDynamicCommand() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "exec Virt.sq1('a')"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(new Object[] { null, null}), }; final ProcessorDataManager dataMgr = new MultiSourceDataManager(); helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Override public List<?> getElementIDsInGroupID(Object groupID) throws TeiidComponentException, QueryMetadataException { MultiSourceGroup msg = getMultiSourceGroup(groupID); if (msg != null) { return msg.columns; } return actualMetadata.getElementIDsInGroupID(groupID); }
@Test public void testTempInsert() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "INSERT INTO #x select * from MultiModel.Phys"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(3)}; final MultiSourceDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(true); dataMgr.addData("SELECT g_0.a, g_0.b FROM MultiModel.Phys AS g_0", new List<?>[] {Arrays.asList("a", "b")}); //$NON-NLS-1$ helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Test public void testSingleReplacementInDynamicCommandNullValue() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "exec Virt.sq1(null)"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List[0]; final ProcessorDataManager dataMgr = new MultiSourceDataManager(); helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Test public void testProcedureAll() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "exec MultiModel.proc(\"in\"=>'b')"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 3; final List<?>[] expected = new List<?>[] { Arrays.asList(1), Arrays.asList(1), Arrays.asList(1)}; final MultiSourceDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(true); dataMgr.addData("EXEC MultiModel.proc('b')", new List<?>[] {Arrays.asList(1)}); //$NON-NLS-1$ helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB()); }
@Test public void testPreparedReplacement() throws Exception { final QueryMetadataInterface metadata = RealMetadataFactory.exampleMultiBinding(); final String userSql = "SELECT * FROM MultiModel.Phys WHERE SOURCE_NAME = ?"; //$NON-NLS-1$ final String multiModel = "MultiModel"; //$NON-NLS-1$ final int sources = 2; final List<?>[] expected = new List<?>[] { Arrays.asList(new Object[] { null, null}) }; final HardcodedDataManager dataMgr = new MultiSourceDataManager(); dataMgr.setMustRegisterCommands(false); helpTestMultiSourcePlan(metadata, userSql, multiModel, sources, dataMgr, expected, RealMetadataFactory.exampleMultiBindingVDB(), Arrays.asList("a"), null); }