Title: [664] trunk/activerecord-jdbc: Make sure PG only returns columns from a table in the current schema
- Revision
- 664
- Author
- olabini
- Date
- 2007-07-05 06:35:08 -0400 (Thu, 05 Jul 2007)
Log Message
Make sure PG only returns columns from a table in the current schema
Modified Paths
Diff
Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_postgre.rb (663 => 664)
--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_postgre.rb 2007-07-04 23:48:05 UTC (rev 663)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_postgre.rb 2007-07-05 10:35:08 UTC (rev 664)
@@ -147,6 +147,10 @@
id_value || last_insert_id(table, sequence_name || default_sequence_name(table, pk))
end
+ def columns(table_name, name=nil)
+ super(table_name, name, "public")
+ end
+
def last_insert_id(table, sequence_name)
Integer(select_value("SELECT currval('#{sequence_name}')"))
end
Modified: trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java (663 => 664)
--- trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java 2007-07-04 23:48:05 UTC (rev 663)
+++ trunk/activerecord-jdbc/src/java/JdbcAdapterInternalService.java 2007-07-05 10:35:08 UTC (rev 664)
@@ -227,20 +227,25 @@
try {
DatabaseMetaData metadata = c.getMetaData();
String schemaName = null;
+ if(args.length>2) {
+ schemaName = args[2].toString();
+ }
if(metadata.storesUpperCaseIdentifiers()) {
table_name = table_name.toUpperCase();
} else if(metadata.storesLowerCaseIdentifiers()) {
table_name = table_name.toLowerCase();
}
- ResultSet schemas = metadata.getSchemas();
- String username = metadata.getUserName();
- while(schemas.next()) {
- if(schemas.getString(1).equalsIgnoreCase(username)) {
- schemaName = schemas.getString(1);
- break;
+ if(schemaName == null) {
+ ResultSet schemas = metadata.getSchemas();
+ String username = metadata.getUserName();
+ while(schemas.next()) {
+ if(schemas.getString(1).equalsIgnoreCase(username)) {
+ schemaName = schemas.getString(1);
+ break;
+ }
}
+ schemas.close();
}
- schemas.close();
ResultSet results = metadata.getColumns(c.getCatalog(),schemaName,table_name,null);
return unmarshal_columns(recv, metadata, results);
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel