Details
- 
    
Bug
 - 
    Status: Closed (View Workflow)
 - 
    
Minor
 - 
    Resolution: Fixed
 - 
    2.1.1
 - 
    None
 
Description
When calling getParameterCount() from the ParameterMetaData of a PreparedStatement with incorrect SQL, it fails with "Parameter metadata not available for these statement" instead of "You have an error in your SQL syntax; ..."
For example:
Executing query: 
					S1ELECT * from duala WHERE a = ?  | 
		
fails with
					java.sql.SQLException: Parameter metadata not available for these statement
			 | 
		
Corrected version:
					S1ELECT * from duala WHERE a = ?  | 
		
fails with
					java.sql.SQLSyntaxErrorException: (conn=20657507) Error preparing query: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'S1ELECT * from duala WHERE a = ?' at line 1
			 | 
		
Attached example:
						PreparedStatement pstmt = connection.prepareStatement(sql);
			 | 
		
					final ParameterMetaData pmd = pstmt.getParameterMetaData();  | 
		
					//wrong error message:  | 
		
					final int count = pmd.getParameterCount();  | 
		
I think one possible workaround is to change setParametersData() method in 
 class org.mariadb.jdbc.MariaDbPreparedStatementClient to capture SQLSyntaxErrorException and to rethrow it
					private void setParametersData() throws SQLSyntaxErrorException {  | 
		
					try (MariaDbPreparedStatementServer ssps = new MariaDbPreparedStatementServer(connection, this.sqlQuery,  | 
		
								ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, Statement.NO_GENERATED_KEYS)) {
			 | 
		
							resultSetMetaData = ssps.getMetaData();
			 | 
		
							parameterMetaData = ssps.getParameterMetaData();
			 | 
		
					} catch (SQLSyntaxErrorException sqlsse) {  | 
		
					// syntax error thrown  | 
		
					throw sqlsse;  | 
		
					} catch (SQLException sqle) {  | 
		
					//if statement cannot be prepared  | 
		
					parameterMetaData = new MariaDbParameterMetaData(null);  | 
		
						}
			 | 
		
					}
			 |