[BUGS] BUG #6395: Invalid XPath expression
The following bug has been logged on the website: Bug reference: 6395 Logged by: Franco Ricci Email address: franco.ri...@phys.uniroma1.it PostgreSQL version: 9.1.2 Operating system: FreeBSD 9 Description: Query at bottom returns: "ERROR: invalid XPath expression DETAIL: Invalid expression ** Error ** ERROR: invalid XPath expression SQL state: XX000 Detail: Invalid expression" The same query on PostgreSQL 9.x works fine! -- SELECT xpath('/llrp:RO_ACCESS_REPORT/llrp:TagReportData/llrp:*[contains(name(),\"EPC\")]/llrp:EPC/text()', 'http://www.llrp.org/ltk/schema/core/encoding/xml/1.0"; Version="1" MessageID="8"> 04954524D0004980B0DF0001 100 '::xml , ARRAY[ARRAY['llrp', 'http://www.llrp.org/ltk/schema/core/encoding/xml/1.0']]) -- -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
Re: [BUGS] BUG #6395: Invalid XPath expression
On 12-1-2012 4:58 PM, Florian Weimer wrote: * franco ricci: The same query on PostgreSQL 9.x works fine! I think you mean 9.0. Yes, I mean 9.0.5 xpath('/llrp:RO_ACCESS_REPORT/llrp:TagReportData/llrp:*[contains(name(),\"EPC\")]/llrp:EPC/text()', Does it work if you drop the '\'? Thanks a lot. Without '\' it works!! PostgreSQL 9.1 defaults to standard_conforming_strings=on. See the release notes for details. Regards Franco Ricci -- Franco Ricci LabIT Sviluppo Servizi Informatici Dipartimento di Fisica Università di Roma "La Sapienza" Piazzale Aldo Moro, 5 00185 Roma Italy tel +390649913449 fax +39064463158 <> -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
[BUGS] BUG #7586: PL/Perl problem
The following bug has been logged on the website: Bug reference: 7586 Logged by: Franco Ricci Email address: franco.ri...@phys.uniroma1.it PostgreSQL version: 9.0.10 Operating system: FreeBSD 9.0 Description: I wrote the following function in Perl to make some operations with LLRP command in a RFID application: CREATE OR REPLACE FUNCTION llrp_command.llrpenc_bytea(xml) RETURNS bytea AS $BODY$ use strict; use RFID::LLRP::Builder qw(encode_message); my $llrp_xml = shift; my $llrp_bin = encode_message($llrp_xml); my $tmp = ""; for(my $i = 0; $i < length($llrp_bin); $i = $i + 1) { my $val = substr($llrp_bin, $i, 1); $tmp = $tmp . sprintf("\\%03o",ord($val)); } $llrp_bin = $tmp; return $llrp_bin; $BODY$ LANGUAGE plperlu IMMUTABLE STRICT COST 100; ALTER FUNCTION llrp_command.llrpenc_bytea(xml) OWNER TO "LLRP"; COMMENT ON FUNCTION llrp_command.llrpenc_bytea(xml) IS 'Encode a xml LLRP message in LLRP binary format and escape it into bytea'; Until version 9.0.8 all works fine. Version 9.0.8, 9.0.9, 9.0.10 and 9.1.6 have some troubles. In particular when I call llrpenc_bytea function: SELECT llrp_command.llrpenc_bytea('http://www.llrp.org/ltk/schema/core/encoding/xml/1.0"; Version="1" MessageID="2"> 0 Periodic 3 '); it returns: - ERROR: Entity: line 1: parser error : Document is empty ^ Entity: line 1: parser error : Start tag expected, '<' not found ^ Compilation failed in require at line 3. BEGIN failed--compilation aborted at line 3. CONTEXT: compilation of PL/Perl function "llrpenc_bytea" ** Error ** ERROR: Entity: line 1: parser error : Document is empty ^ Entity: line 1: parser error : Start tag expected, '<' not found ^ Compilation failed in require at line 3. BEGIN failed--compilation aborted at line 3. SQL state: 42601 Context: compilation of PL/Perl function "llrpenc_bytea" I tried to run the same script as a perl script and it runs fine so I think the problem is not Perl. Postgresql version 9.1.2 has no problem. I think the bug is about as postgresql passes xml argument to perl interpreter. The same function with a text argument works well: REATE OR REPLACE FUNCTION llrp_command.llrpenc_bytea(text) RETURNS bytea AS $BODY$ use strict; use RFID::LLRP::Builder qw(encode_message); my $llrp_xml = shift; my $llrp_bin = encode_message($llrp_xml); my $tmp = ""; for(my $i = 0; $i < length($llrp_bin); $i = $i + 1) { my $val = substr($llrp_bin, $i, 1); $tmp = $tmp . sprintf("\\%03o",ord($val)); } $llrp_bin = $tmp; return $llrp_bin; $BODY$ LANGUAGE plperlu IMMUTABLE STRICT COST 100; ALTER FUNCTION llrp_command.llrpenc_bytea(text) OWNER TO "LLRP"; COMMENT ON FUNCTION llrp_command.llrpenc_bytea(text) IS 'Encode a xml LLRP message in LLRP binary format and escape it into bytea'; Thanks a lot for your great work Regards Franco Ricci -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
Re: [BUGS] BUG #7586: PL/Perl problem
Thanks a lot for explanation. I'm planing to upgrade to pgsql 9.2 even for other reasons. If I need to use earlier postgresql versions I'll fix my functions using a text arguments instead of xml one. I tried and It seams to work fine. Regards Franco Ricci On 7-10-2012 7:06 PM, Tom Lane wrote: franco.ri...@phys.uniroma1.it writes: I wrote the following function in Perl to make some operations with LLRP command in a RFID application: CREATE OR REPLACE FUNCTION llrp_command.llrpenc_bytea(xml) RETURNS bytea AS $BODY$ use strict; use RFID::LLRP::Builder qw(encode_message); I don't know anything about RFID::LLRP::Builder, but some quick googling suggests that it accesses libxml2 under the hood. If so, and if it relies on being able to fetch external entities, you're going to need to use PG 9.2 to make this work. The fix for CVE-2012-3489 broke such cases in earlier branches. Sorry about that, but the alternatives were worse; and in any case, pre-9.2 versions never made any serious effort to allow other uses of libxml2 inside the backend. It's mostly luck that it worked for you before, I think. regards, tom lane -- Franco Ricci LabIT Sviluppo Servizi Informatici Dipartimento di Fisica Università di Roma "La Sapienza" Piazzale Aldo Moro, 5 00185 Roma Italy tel +390649913449 fax +39064463158 <> -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs