Ticket #1021 (closed patch: wontfix)
PostGIS layers lose the "public" schema in the table part of the URI
|Reported by:||smizuno||Owned by:||jef|
|Priority:||major: does not work as expected||Milestone:|
|Must Fix for Release:||No||Awaiting user input:||no|
Have found this problem in 0.9.1: when a table in the public schema has symbology set up or a where clause set, the schema portion of the table disappears from the "Source for this layer" item in properties/metadata. When a project is saved, then loaded, that layer won't load.
HEAD has the same behavior as far as the schema being cleared, but the project layer will load.
I believe that this would affect any table whose schema is the current schema in the database.
Have found in qgspostgresprovider.cpp: in the constructor, about line 160 when the current schema is tested and equals the table's schema, mUri.clearSchema() is called. Then setDataSourceUri(mUri) is called.
Several lines in this area are unnecessary as mCurrentSchema is tested/set here and never used anywhere else.
I believe the table's schema should be preserved throughout all operations; I don't see any particular advantage other than a slightly shorter query string being sent to the database.
summary of patch submitted:
1. qgspostgresprovider.cpp : in the constructor, removed "current_schema()" from the sql command that retrieves table privileges; removed the various tests and setting of variables relating to current_schema / mCurrentSchema; retained the setDataSourceUri() call
2. qgspostgresprovider.h : removed mCurrentSchema from the header