[BUGS] BUG #6395: Invalid XPath expression

2012-01-12 Thread franco . ricci
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

2012-01-12 Thread Franco Ricci

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

2012-10-07 Thread franco . ricci
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

2012-10-08 Thread Franco Ricci

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