comparison tests/Bug_PrepStmtSetString_6382.java @ 172:60063c67f9e7 embedded

Merged with default
author Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
date Tue, 19 Sep 2017 13:49:34 +0200 (2017-09-19)
parents 8ea360b612de
children 5b13ccaba741
comparison
equal deleted inserted replaced
171:0f95fee3cf29 172:60063c67f9e7
1 /*
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 *
6 * Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
7 */
8
9 import java.sql.*;
10
11 import nl.cwi.monetdb.jdbc.MonetINET;
12 import nl.cwi.monetdb.jdbc.MonetURL;
13
14 public class Bug_PrepStmtSetString_6382 {
15 public static void main(String[] args) throws Exception {
16 // Class.forName("nl.cwi.monetdb.jdbc.MonetDriver"); // not needed anymore for self registering JDBC drivers
17 Connection con = DriverManager.getConnection(args[0]);
18 System.out.println("0. true\t" + con.getAutoCommit());
19
20 Statement stmt = null;
21 PreparedStatement pstmt = null;
22 ParameterMetaData pmd = null;
23 ResultSet rs = null;
24 ResultSetMetaData rsmd = null;
25 try {
26 stmt = con.createStatement();
27 String tableName = "PrepStmtSetString_6382";
28 System.out.println("Creating table " + tableName);
29 stmt.executeUpdate("CREATE TABLE " + tableName + " (myint INT, myvarchar VARCHAR(15), myjson JSON, myuuid UUID, myurl URL, myinet INET)");
30
31 System.out.println("Inserting row 1");
32 stmt.executeUpdate("INSERT INTO " + tableName + " VALUES (1, 'row 1', '{}', uuid '34c8deb5-e608-406b-beda-6a951f73d455', 'https://www.monetdb.org/', '128.0.0.1')");
33
34 System.out.println("Inserting row 2");
35 stmt.executeUpdate("INSERT INTO " + tableName + " VALUES (2, 'row 2', '[]', NULL, NULL, NULL)");
36
37
38 System.out.println("Creating a prepared statement with 6 parameters and inserting rows using setInt(), setString(), setNull(), setNString(), setURL(), setObject().");
39 pstmt = con.prepareStatement("INSERT INTO " + tableName + " VALUES (?,?, ? ,?,? , ?)");
40 pmd = pstmt.getParameterMetaData();
41 int pcount = pmd.getParameterCount();
42 System.out.println("Prepared Statement has " + pcount + " parameters:" + (pcount != 6 ? " ERROR: Expected 6 parameters!" : ""));
43 for (int p = 1; p <= pcount; p++) {
44 System.out.println(" Parameter " + p + " type is: " + pmd.getParameterTypeName(p) + ". JDBC SQL type: " + pmd.getParameterType(p));
45 }
46
47 int row = 3;
48 pstmt.setInt(1, row);
49 pstmt.setString(2, "row " + row);
50 pstmt.setString(3, "{\"menu\": {\n \"id\": \"file\",\n \"value\": \"File\",\n \"popup\": {\n \"menuitem\": [\n {\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},\n {\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},\n {\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}\n ]\n }\n}}");
51 pstmt.setNull(4, 0);
52 pstmt.setNull(5, 0);
53 pstmt.setNull(6, 0);
54 System.out.println("Inserting row " + row);
55 int inserted = pstmt.executeUpdate();
56 System.out.println("Inserted " + inserted + " row");
57
58 row++; // row 4
59 pstmt.setShort(1, (short)row);
60 pstmt.setNString(2, "row " + row);
61 pstmt.setNull(3, 0);
62 pstmt.setString(4, "4a148b7d-8d47-4e1e-a21e-09a71abf2215");
63 System.out.println("Inserting row " + row);
64 inserted = pstmt.executeUpdate();
65 System.out.println("Inserted " + inserted + " row");
66
67 row++; // row 5
68 pstmt.setLong(1, row);
69 pstmt.setString(2, "row " + row);
70 pstmt.setNull(4, 0);
71 pstmt.setURL(5, new java.net.URL("https://www.cwi.nl/"));
72 System.out.println("Inserting row " + row);
73 inserted = pstmt.executeUpdate();
74 System.out.println("Inserted " + inserted + " row");
75
76 row++; // row 6
77 pstmt.setBigDecimal(1, new java.math.BigDecimal(row));
78 pstmt.setNString(2, "row " + row);
79 pstmt.setNull(5, 0);
80 pstmt.setString(6, "127.255.255.255");
81 System.out.println("Inserting row " + row);
82 inserted = pstmt.executeUpdate();
83 System.out.println("Inserted " + inserted + " row");
84
85 /* also test generic setObject(int, String) */
86 row++; // row 7
87 pstmt.setObject(1, new Integer(row));
88 pstmt.setObject(2, "row " + row);
89 pstmt.setObject(3, "{\"menu\": {\n \"header\": \"SVG Viewer\",\n \"items\": [\n {\"id\": \"Open\"},\n {\"id\": \"OpenNew\", \"label\": \"Open New\"},\n null,\n {\"id\": \"ZoomIn\", \"label\": \"Zoom In\"},\n {\"id\": \"ZoomOut\", \"label\": \"Zoom Out\"},\n {\"id\": \"OriginalView\", \"label\": \"Original View\"},\n null,\n {\"id\": \"Quality\"},\n {\"id\": \"Pause\"},\n {\"id\": \"Mute\"},\n null,\n {\"id\": \"Help\"},\n {\"id\": \"About\", \"label\": \"About Adobe CVG Viewer...\"}\n ]\n}}");
90 pstmt.setObject(4, "b39dc76e-4faf-4fd9-bc1e-17df48acf764");
91 pstmt.setObject(5, "https://en.wikipedia.org/wiki/IP_address");
92 pstmt.setObject(6, "223.255.255.255");
93 System.out.println("Inserting row " + row);
94 inserted = pstmt.executeUpdate();
95 System.out.println("Inserted " + inserted + " row");
96
97 row++; // row 8
98 pstmt.setObject(1, new java.math.BigDecimal(row));
99 pstmt.setObject(2, "row " + row);
100 pstmt.setObject(3, null);
101 pstmt.setObject(4, java.util.UUID.fromString("ff125769-b63c-4c3c-859f-5b84a9349e24"));
102 MonetURL myURL = new MonetURL("https://en.wikipedia.org/wiki/IP_address");
103 pstmt.setObject(5, myURL);
104 MonetINET myINET = new MonetINET("223.234.245.255");
105 pstmt.setObject(6, myINET);
106 System.out.println("Inserting row " + row);
107 inserted = pstmt.executeUpdate();
108 System.out.println("Inserted " + inserted + " row");
109
110
111 System.out.println("List contents of TABLE " + tableName + " after " + row + " rows inserted");
112 rs = stmt.executeQuery("SELECT * FROM " + tableName + " ORDER BY 1");
113 rsmd = rs.getMetaData();
114 int colcount = rsmd.getColumnCount();
115 System.out.println("Query has " + colcount + " output columns." + (colcount != 6 ? " ERROR: Expected 6 columns!" : ""));
116 row = 0;
117 while (rs.next()) {
118 System.out.print("row " + ++row);
119 for (int c = 1; c <= colcount; c++) {
120 System.out.print("\t" + rs.getString(c));
121 }
122 System.out.println();
123 }
124
125 System.out.println();
126 System.out.println("Cleanup TABLE " + tableName);
127 stmt.executeUpdate("DROP TABLE " + tableName);
128 System.out.println("Test completed successfully");
129 } catch (SQLException e) {
130 System.err.println("FAILED :( "+ e.getMessage());
131 while ((e = e.getNextException()) != null)
132 System.err.println("FAILED :( " + e.getMessage());
133 System.err.println("ABORTING TEST!!!");
134 } finally {
135 if (rs != null)
136 rs.close();
137 if (pstmt != null)
138 pstmt.close();
139 if (stmt != null)
140 stmt.close();
141 con.close();
142 }
143 }
144 }
145