Description:
see stack
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:397)
at com.mysql.jdbc.ResultSetMetaData.getColumnType(ResultSetMetaData.java:275)
at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:80)
at com.intalio.bpms.connector.jdbc.core.parameter.ParametersHelper.newParameters(ParametersHelper.java:211)
at com.intalio.bpms.connector.jdbc.vc.editors.SQLMultiPageEditorContributor$2.run(SQLMultiPageEditorContributor.java:223)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:499)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:441)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
How to repeat:
Create table:
create table TEST.SIMPLE_TYPES (
INTEGER_COLUMN INTEGER,
DOUBLE_COLUMN FLOAT(12),
BOOLEAN_COLUMN SMALLINT,
VARCHAR_COLUMN VARCHAR(255),
LONG_VARCHAR_COLUMN TEXT,
BINARY_COLUMN BLOB,
DECIMAL_COLUMN NUMERIC(15,2),
DATE_COLUMN DATE,
TIME_COLUMN TIME,
TIMESTAMP_COLUMN TIMESTAMP
)
run test:
public void testMySQLBug() throws SQLException{
Connection connection = TestHelper.getMySqlDataSource().getConnection();
String query = "SELECT * FROM test.simple_types\n" +
"WHERE (5 = n)\n" + // n is undefined variable
"#-- timestamp_column = ?\n" +
"#-- AND date_column = ?\n" +
"#-- AND time_column = ?\n" +
"#-- AND decimal_column = ?\n" +
"#-- AND double_column = ? \n" +
"#-- AND varchar_column = ?\n" +
"#--) OR 1=1\n";
PreparedStatement st = connection.prepareStatement(query);
ParameterMetaData md = st.getParameterMetaData();
int c = md.getParameterCount();
//assertEquals(0,c); // c == 6 but should be 0
for (int i = 1; i <= c; i++) {
try {
md.getParameterType( i );
} catch (RuntimeException e) {
e.printStackTrace();
}
}
}