view tests/Bug_PrepStmt_With_Errors_Jira292.java @ 391:f523727db392

Moved Java classes from packages starting with nl.cwi.monetdb.* to package org.monetdb.* This naming complies to the Java Package Naming convention as MonetDB's main website is www.monetdb.org.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 12 Nov 2020 22:02:01 +0100 (2020-11-12)
parents 54137aeb1f92
children bf9f6b6ecf40
line wrap: on
line source
/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0.  If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V.
 */

import java.sql.*;

public class Bug_PrepStmt_With_Errors_Jira292 {
	public static void main(String[] args) throws Exception {
		Connection con = null;
		Statement stmt = null;
		PreparedStatement pstmt = null;
		ParameterMetaData pmd = null;
		ResultSet rs = null;
		ResultSetMetaData rsmd = null;

		try {
			con = DriverManager.getConnection(args[0]);
			System.out.println("0. true\t" + con.getAutoCommit());
			con.setNetworkTimeout(null, (10 *1000));

			stmt = con.createStatement();
			stmt.executeUpdate("drop table if exists abacus;");
			stmt.executeUpdate("create table abacus ( \"'Zeitachse'\" date,\"'Abo_ID'\" int,\"'description'\" varchar(256),\"'Klassierungs-Typ'\" clob,\"'KlassierungApplikation'\" clob,\"'EP Netto'\" decimal,\"'Nettoumsatz'\" decimal,\"'validfrom'\" date,\"'validuntil'\" date,\"'Abo_aufgeschaltet'\" int,\"'Abo_deaktiviert'\" int,\"'Differenz'\" decimal,\"'User_ID'\" int,\"'UserName'\" varchar(256),\"'client'\" varchar(256),\"'Installations_ID'\" int,\"'InstallationsName'\" varchar(256),\"'Installationsprovider_ID'\" int,\"'InstallationsproviderName'\" varchar(256),\"'INR'\" bigint,\"'NAME'\" varchar(256),\"'PLZ'\" varchar(256),\"'ORT'\" varchar(256),\"'STAAT'\" varchar(256),\"'Reseller_ID'\" int,\"'ResellerName'\" varchar(256),\"'ET_ABO'\" clob,\"'UserName_1'\" varchar(256),\"'Anzahl_Abos'\" decimal,\"'Anzahl_User'\" decimal,\"'Jahr'\" decimal,\"'Monat'\" decimal,\"'Jahr_Monat'\" clob,\"'IFJ'\" clob,\"'RECNUM$'\" int,\"'InlineCalc_Year_Zeitachse'\" int);");
			stmt.executeUpdate("insert into abacus values ('2019-10-30',2239,'description','Klassierungs-Typ','Klassierung-Applikation',73.28,68.29,'2018-01-01','2018-12-01',563,63,56.3,852,'UserName','client',134,'InstallationsName',892,'InstallationsproviderName',9348,'NAME','PLZ','ORT','STAAT',934,'ResellerName','ET_ABO','UserName_1',849.2739,1742.718,395.824,39.824,'Jahr_Monat','IFJ',395824,3789);");

			System.out.println("1. table created and inserted 1 row");

			String qry = "SELECT \"'ResellerName'\" FROM abacus WHERE  ( ( (\"'InstallationsproviderName'\"='Bienz Pius Treuhand- und Revisions AG')) AND  ( (\"'validuntil'\"='2018-01-01' AND \"'description'\"='ABEA 2' AND (EXTRACT(YEAR FROM \"'Zeitachse'\")*100 + EXTRACT(MONTH FROM \"'Zeitachse'\"))/100.0='2019.010' AND \"'UserName'\"='AL - Astrid Lincke (Delphys)' AND \"'validfrom'\"='2016-12-01')) AND  ( (\"'IFJ'\"='ohne IFJ')) AND  ( (\"'InlineCalc_Year_Zeitachse'\"='2019'))) GROUP BY \"'ResellerName'\" LIMIT 1001 OFFSET 0;";
			try {
				System.out.println("2. before select query execution");
				rs = stmt.executeQuery(qry);
				System.out.println("2a. select query executed");
				if (rs != null) {
					if (rs.next()) {
						System.out.println("2b. select query returned: " + rs.getString(1));
					}
					rs.close();
					rs = null;
					System.out.println("2c. closed select query resultset");
				}
				System.out.println("2d. normal end of select query");
			} catch (SQLException se) {
				System.out.println("select query Exception: "+ se.getMessage());
				while ((se = se.getNextException()) != null)
					System.out.println("next Exception: "+ se.getMessage());
			}

			try {
				System.out.println("3. before creating a prepared select query");
				pstmt = con.prepareStatement(qry);
				System.out.println("3a. prepared select query");

				pmd = pstmt.getParameterMetaData();
				System.out.println("3b. Prepared Query has " + pmd.getParameterCount() + " parameters."); // "Type of first is: " + pmd.getParameterTypeName(1));
				rsmd = pstmt.getMetaData();
				System.out.println("3c. Prepared Query has " + rsmd.getColumnCount() + " columns. Type of first is: " + rsmd.getColumnTypeName(1));

				System.out.println("3d. before executing the prepared select query");
				rs = pstmt.executeQuery();
				System.out.println("3e. prepared select query executed");
				if (rs != null) {
					rsmd = rs.getMetaData();
					System.out.println("3f. prepared Query ResultSet has " + rsmd.getColumnCount() + " columns. Type of first is: " + rsmd.getColumnTypeName(1));

					if (rs.next()) {
						System.out.println("3g. prepared select query returned: " + rs.getString(1));
					}
					rs.close();
					rs = null;
					System.out.println("3h. closed prepared select query resultset");
				}
				System.out.println("3i. normal end of prepared select query");
			} catch (SQLException se) {
				System.out.println("prepared select query Exception: "+ se.getMessage());
				while ((se = se.getNextException()) != null)
					System.out.println("next Exception: "+ se.getMessage());
			}

			System.out.println("4. drop table");
			stmt.executeUpdate("drop table abacus");

			System.out.println("5. normal end of test");
		} catch (SQLException e) {
			System.out.println("FAILED :( "+ e.getMessage());
			while ((e = e.getNextException()) != null)
				System.out.println("FAILED :( " + e.getMessage());
			System.out.println("ABORTING TEST!!!");
		} finally {
			if (rs != null)    try { rs.close();    } catch (SQLException e) { /* ignore */ }
			if (pstmt != null) try { pstmt.close(); } catch (SQLException e) { /* ignore */ }
			if (stmt != null)  try { stmt.close();  } catch (SQLException e) { /* ignore */ }
			if (con != null)   try { con.close();   } catch (SQLException e) { /* ignore */ }
		}
	}
}