Re: Opening view that uses a function - empty column - Mailing list pgsql-jdbc
From | Brady Mathis |
---|---|
Subject | Re: Opening view that uses a function - empty column |
Date | |
Msg-id | 41e1eec4-4734-4a0b-9ba7-a80e5b1fe1bd@googlegroups.com Whole thread Raw |
In response to | Re: Opening view that uses a function - empty column ("David Johnston" <polobo@yahoo.com>) |
List | pgsql-jdbc |
David J - Thanks for the pointers. I'm sure you can tell that these are (nearly) the first PG procedures that I have written. I didthe suggested refactoring. Could you elaborate a little on the "identity" problem? There is only one set of schemas on the server against which I am testing. I am using the same credentials to log in viaPGAdmin (local and remote) and Java. The only non-default configuration I have for PG (that I can think of now) are a few entries in pg_hba.conf as follows: host all all 127.0.0.1/32 md5 host postgres postgres 173.20.10.3/32 md5 hostssl postgres postgres 127.0.0.1/32 md5 hostssl postgres postgres 173.20.10.3/32 md5 I appreciate all your help, Brady On Monday, July 30, 2012 2:22:04 PM UTC-6, "David Johnston" wrote: > Couple of points - though they won't help the current question probably: > > > > >Brady's original > > ---------------my responses embedded > > > > > > > -----Original Message----- > > > From: pgsql-jdbc-owner@postgresql.org [mailto:pgsql-jdbc- > > > owner@postgresql.org] On Behalf Of Brady Mathis > > > Sent: Monday, July 30, 2012 1:38 PM > > > To: pgsql-jdbc@postgresql.org > > > Subject: Re: [JDBC] Opening view that uses a function - empty column > > > > > > Oh! And, I made another observation while cracking away at this: When I > > > connect to the DB using PGAdmin (1.14.3) from a remote workstation as > > > opposed to on the DB server itself, I see the same problem with the empty > > > external_id column when executing "select * from rhs.encounter;". > > > > ----------------Are you sure that when you connect to the server from > > "...the DB server itself" you are connecting to the same database as when > > you do so remotely? > > > > ----------------This really feels like an identity issue and not anything > > specifically related to the code you are showing us. That said...see below. > > > > > > > > Could this be a problem with how I have implemented my functions? There > > > are two functions calls actually used to fill the column - I included the > > > complete text of the functions below. > > > > > > get_valid_xml - ensures that content from pg_largeobject is valid xml > > > extract_from_extended - uses xmlparse and xpath to get one specific value > > > > > > Thanks...again! > > > > > > /* Function to validate xml for xpath use in SQL query */ CREATE OR > > REPLACE > > > FUNCTION rhs.get_valid_xml(x text) > > > RETURNS xml AS > > > $BODY$ > > > BEGIN > > > PERFORM XMLPARSE( DOCUMENT x ); > > > RETURN XMLPARSE( DOCUMENT x ); > > > > ------------It is unnecessary to call XMLPARSE twice, especially since you > > are doing so on the "no exception" code path. > > > > > EXCEPTION WHEN OTHERS THEN > > > RETURN XMLPARSE( DOCUMENT '<?xml version="1.0" > > > encoding="UTF-8"?><fields></fields>' ); END; $BODY$ > > > > > > ------------Whenever you are having difficulties you should avoid ignoring > > exceptions. At worse perform a RAISE NOTICE when one occurs it you still > > want to send back an empty document. However, raising the exception is also > > a valid and useful action. If you are debugging then raising an exception > > (and reviewing it) is even more worthwhile. > > > > > > > LANGUAGE plpgsql VOLATILE > > > COST 100; > > > ALTER FUNCTION rhs.get_valid_xml(text) OWNER TO postgres; > > > > > > > > > /* Function to allow extract of fields from _extended */ CREATE OR REPLACE > > > FUNCTION rhs.extract_from_extended(field_name text, menu_data_id > > > bigint) > > > RETURNS text AS > > > $BODY$ > > > select translate( xpath('//field[@name="'||$1||'" and > > > @type="String"]/text()', xmlparse(document ( rhs.get_valid_xml( > > > array_to_string( array(select lo.data from app.menu_data md, > > > pg_catalog.pg_largeobject lo where md.id = $2 and md.xml01 = lo.loid), > > '') ) > > > )))::text, '{}', ''); $BODY$ > > > > > > ------------Here you call XMLParse/Document on the result of > > "get_valid_xml(...)"; this seems redundant since "get_valid_xml(...)" > > already does this. > > > > > > > LANGUAGE sql VOLATILE > > > COST 100; > > > ALTER FUNCTION rhs.extract_from_extended(text, bigint) OWNER TO > > > postgres; > > > > > > > > > > > > -- > > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org) > > To make changes to your subscription: > > http://www.postgresql.org/mailpref/pgsql-jdbc
pgsql-jdbc by date: