import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.PreparedStatement ;
import java.sql.ResultSet ;
import java.sql.SQLException ;
import java.sql.Statement ;
import java.sql.Types ;
import java.util.Properties ;
import org.postgresql.Driver ;
import org.postgresql.util.DriverInfo ;
public class BindUUID {
private static final String JDBC_URL
= "<your url>" ; private static final String SQL
= "select * from test_table where ? is null or ? = c_uuid" ;
static {
credentials.setProperty ( "user" , "<user>" ) ;
credentials.setProperty ( "password" , "<password>" ) ;
}
Class .forName ( "org.postgresql.Driver" ) ;
System .
out .
println ( "JDBC Driver Version: " + DriverInfo.
DRIVER_VERSION ) ;
// Create test table
try ( Statement statement
= connection.
createStatement ( ) ) { try ( ResultSet rs
= statement.
executeQuery ( "select version()" ) ) { rs.next ( ) ;
System .
out .
println ( "PostgreSQL version: " + rs.
getString ( 1 ) ) ; }
statement.execute ( "create table test_table (c_uuid uuid)" ) ;
}
// works but is not satisfying (hack)
statement.
setNull ( 1 ,
Types .
VARCHAR ) ; statement.setObject ( 2 , null ) ;
System .
out .
print ( "setNull(varchar) + setObject(null) => " ) ; statement.execute ( ) ;
System .
out .
println ( "fails (" + e.
getMessage ( ) + ")" ) ; }
// does not work, expected (untyped null)
statement.
setNull ( 1 ,
Types .
OTHER ) ; statement.
setNull ( 2 ,
Types .
OTHER ) ; System .
out .
print ( "setNull(other) + setNull(other) => " ) ; statement.execute ( ) ;
System .
out .
println ( "fails (" + e.
getMessage ( ) + ")" ) ; }
// does not work, but should
statement.
setNull ( 1 ,
Types .
OTHER ,
"uuid" ) ; statement.
setNull ( 2 ,
Types .
OTHER ,
"uuid" ) ; System .
out .
print ( "setNull(other, uuid) + setNull(other, uuid) => " ) ; statement.execute ( ) ;
System .
out .
println ( "fails (" + e.
getMessage ( ) + ")" ) ; }
// Drop test table
try ( Statement statement
= connection.
createStatement ( ) ) { statement.execute ( "drop table test_table" ) ;
}
}
}
}
aW1wb3J0IGphdmEuc3FsLkNvbm5lY3Rpb247CmltcG9ydCBqYXZhLnNxbC5Ecml2ZXJNYW5hZ2VyOwppbXBvcnQgamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQ7CmltcG9ydCBqYXZhLnNxbC5SZXN1bHRTZXQ7CmltcG9ydCBqYXZhLnNxbC5TUUxFeGNlcHRpb247CmltcG9ydCBqYXZhLnNxbC5TdGF0ZW1lbnQ7CmltcG9ydCBqYXZhLnNxbC5UeXBlczsKaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwoKaW1wb3J0IG9yZy5wb3N0Z3Jlc3FsLkRyaXZlcjsKaW1wb3J0IG9yZy5wb3N0Z3Jlc3FsLnV0aWwuRHJpdmVySW5mbzsKCnB1YmxpYyBjbGFzcyBCaW5kVVVJRCB7CgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEpEQkNfVVJMID0gIjx5b3VyIHVybD4iOwoJcHJpdmF0ZSBzdGF0aWMgZmluYWwgUHJvcGVydGllcyBjcmVkZW50aWFscyA9IG5ldyBQcm9wZXJ0aWVzKCk7Cglwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1FMID0gInNlbGVjdCAqIGZyb20gdGVzdF90YWJsZSB3aGVyZSA/IGlzIG51bGwgb3IgPyA9IGNfdXVpZCI7CgoJc3RhdGljIHsKCQljcmVkZW50aWFscy5zZXRQcm9wZXJ0eSgidXNlciIsICI8dXNlcj4iKTsKCQljcmVkZW50aWFscy5zZXRQcm9wZXJ0eSgicGFzc3dvcmQiLCAiPHBhc3N3b3JkPiIpOwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uLCBTUUxFeGNlcHRpb24gewoKCQlDbGFzcy5mb3JOYW1lKCJvcmcucG9zdGdyZXNxbC5Ecml2ZXIiKTsKCgkJU3lzdGVtLm91dC5wcmludGxuKCJKREJDIERyaXZlciBWZXJzaW9uOiAiICsgRHJpdmVySW5mby5EUklWRVJfVkVSU0lPTik7CgoJCXRyeSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uID0gRHJpdmVyTWFuYWdlci5nZXRDb25uZWN0aW9uKEpEQkNfVVJMLCBjcmVkZW50aWFscykpIHsKCgkJCS8vIENyZWF0ZSB0ZXN0IHRhYmxlCgkJCXRyeSAoU3RhdGVtZW50IHN0YXRlbWVudCA9IGNvbm5lY3Rpb24uY3JlYXRlU3RhdGVtZW50KCkpIHsKCQkJCXRyeSAoUmVzdWx0U2V0IHJzID0gc3RhdGVtZW50LmV4ZWN1dGVRdWVyeSgic2VsZWN0IHZlcnNpb24oKSIpKSB7CgkJCQkJcnMubmV4dCgpOwoJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUG9zdGdyZVNRTCB2ZXJzaW9uOiAiICsgcnMuZ2V0U3RyaW5nKDEpKTsKCQkJCX0KCQkJCXN0YXRlbWVudC5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdF90YWJsZSAoY191dWlkIHV1aWQpIik7CgkJCX0KCgkJCS8vIHdvcmtzIGJ1dCBpcyBub3Qgc2F0aXNmeWluZyAoaGFjaykKCQkJdHJ5IChQcmVwYXJlZFN0YXRlbWVudCBzdGF0ZW1lbnQgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoU1FMKSkgewoJCQkJc3RhdGVtZW50LnNldE51bGwoMSwgVHlwZXMuVkFSQ0hBUik7CgkJCQlzdGF0ZW1lbnQuc2V0T2JqZWN0KDIsIG51bGwpOwoJCQkJU3lzdGVtLm91dC5wcmludCgic2V0TnVsbCh2YXJjaGFyKSArIHNldE9iamVjdChudWxsKSA9PiAiKTsKCQkJCXN0YXRlbWVudC5leGVjdXRlKCk7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIndvcmtzIik7CgkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oImZhaWxzICgiICsgZS5nZXRNZXNzYWdlKCkgKyAiKSIpOwoJCQl9CgoJCQkvLyBkb2VzIG5vdCB3b3JrLCBleHBlY3RlZCAodW50eXBlZCBudWxsKQoJCQl0cnkgKFByZXBhcmVkU3RhdGVtZW50IHN0YXRlbWVudCA9IGNvbm5lY3Rpb24ucHJlcGFyZVN0YXRlbWVudChTUUwpKSB7CgkJCQlzdGF0ZW1lbnQuc2V0TnVsbCgxLCBUeXBlcy5PVEhFUik7CgkJCQlzdGF0ZW1lbnQuc2V0TnVsbCgyLCBUeXBlcy5PVEhFUik7CgkJCQlTeXN0ZW0ub3V0LnByaW50KCJzZXROdWxsKG90aGVyKSArIHNldE51bGwob3RoZXIpID0+ICIpOwoJCQkJc3RhdGVtZW50LmV4ZWN1dGUoKTsKCQkJCVN5c3RlbS5vdXQucHJpbnRsbigid29ya3MiKTsKCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiZmFpbHMgKCIgKyBlLmdldE1lc3NhZ2UoKSArICIpIik7CgkJCX0KCgkJCS8vIGRvZXMgbm90IHdvcmssIGJ1dCBzaG91bGQKCQkJdHJ5IChQcmVwYXJlZFN0YXRlbWVudCBzdGF0ZW1lbnQgPSBjb25uZWN0aW9uLnByZXBhcmVTdGF0ZW1lbnQoU1FMKSkgewoJCQkJc3RhdGVtZW50LnNldE51bGwoMSwgVHlwZXMuT1RIRVIsICJ1dWlkIik7CgkJCQlzdGF0ZW1lbnQuc2V0TnVsbCgyLCBUeXBlcy5PVEhFUiwgInV1aWQiKTsKCQkJCVN5c3RlbS5vdXQucHJpbnQoInNldE51bGwob3RoZXIsIHV1aWQpICsgc2V0TnVsbChvdGhlciwgdXVpZCkgPT4gIik7CgkJCQlzdGF0ZW1lbnQuZXhlY3V0ZSgpOwoJCQkJU3lzdGVtLm91dC5wcmludGxuKCJ3b3JrcyIpOwoJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKCJmYWlscyAoIiArIGUuZ2V0TWVzc2FnZSgpICsgIikiKTsKCQkJfQoKCQkJLy8gRHJvcCB0ZXN0IHRhYmxlCgkJCXRyeSAoU3RhdGVtZW50IHN0YXRlbWVudCA9IGNvbm5lY3Rpb24uY3JlYXRlU3RhdGVtZW50KCkpIHsKCQkJCXN0YXRlbWVudC5leGVjdXRlKCJkcm9wIHRhYmxlIHRlc3RfdGFibGUiKTsKCQkJfQoJCX0KCX0KfQ==
compilation info
Main.java:13: error: class BindUUID is public, should be declared in a file named BindUUID.java
public class BindUUID {
^
Main.java:10: error: package org.postgresql does not exist
import org.postgresql.Driver;
^
Main.java:11: error: package org.postgresql.util does not exist
import org.postgresql.util.DriverInfo;
^
Main.java:28: error: cannot find symbol
System.out.println("JDBC Driver Version: " + DriverInfo.DRIVER_VERSION);
^
symbol: variable DriverInfo
location: class BindUUID
4 errors
stdout