Please ignore, it is a permission issue. The user had not rights in the schema, and since I used search_path, it didn't generate a permission denied error, it just didn't look there and generated a does not exist error.
Sorry about the noise. Things seem to work as expected. - Ian On 3/26/09, Ian Harding <harding....@gmail.com> wrote: > On Wed, Mar 25, 2009 at 5:10 PM, Stephen Deasey <sdea...@gmail.com> wrote: >> On Wed, Mar 25, 2009 at 10:56 PM, Ian Harding <harding....@gmail.com> >> wrote: >>> I am in a situation where I'd like to be able to set the search_path >>> on each page request. In AOLServer I would have just made a db handle >>> getter function that would call ns_db gethandle, issue a quick SET >>> command, and pass the handle back to the caller. > > <snip> > >> Alternatively, you could set the max number of handles to 0, in which >> case the driver switches to handle-per-thread mode (See docs). In >> this case, when each command 'gets' a handle it will always get the >> same one, as it is never actually returned to the pool but cached for >> the thread. > > OK, so my maxhandles is 0, per the default, so I should always get the > same handle in repeated calls. I'm apparently not because when I > issue > > dbi_dml {set search_path to test,public} > dbi_rows {select * from tableintestbutnotpublic} > > I get an error stating that the table does not exist. > > Here's my postgres log > > LOG: statement: set client_encoding to 'UTF8' > LOG: execute dbipg_0: set session client_encoding = 'UTF8' > LOG: execute dbipg_1: set session timezone = 'UTC' > LOG: execute dbipg_2: set session datestyle = 'ISO' > LOG: execute dbipg_3: set search_path to test,public > ERROR: relation "classification" does not exist > STATEMENT: SELECT classification > FROM classification > ORDER BY classification > > but it does exist... > > test=# \dt test.classification > List of relations > Schema | Name | Type | Owner > --------+----------------+-------+------- > test | classification | table | user > (1 row) > > So I wrote a test that goes like this > > if {[catch { > > catch {dbi_dml {drop table test}} > catch {dbi_dml {drop schema test cascade}} > > dbi_dml { > create schema test > } > > dbi_dml { > create table test ( > a integer not null, > b varchar not null, > c bytea, > test varchar > ) > } > dbi_dml {insert into test (a, b, test) values (1, 'x', 'test1')} > dbi_dml {insert into test (a, b, test) values (2, 'y', 'test2')} > > } err]} { > ns_log error $err > } else { > testConstraint table true > } > > > test schema-1 {bad search path} -constraints table -body { > dbi_dml {set search_path to test} > dbi_rows {select * from test} > } -returnCodes error -result {relation "test" does not exist} > > test schema-2 {bad search path same thread} -constraints table -body { > dbi_rows {select * from test} > } -returnCodes error -result {relation "test" does not exist} > > test schema-3 {good search path} -constraints table -body { > dbi_dml {set search_path to public} > dbi_rows {select * from test where a = 99} > } -result {} > > Which passes when run with make test. > > So, what could be my problem here? My config file is being used, and > it does say maxhandles=0... > > ns_section "ns/server/${server}/module/dbpg" > ns_param default true > ns_param maxhandles 0 > ns_param timeout 10 > > - Ian > ------------------------------------------------------------------------------ _______________________________________________ naviserver-devel mailing list naviserver-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/naviserver-devel