I have a table containing a protocol buffer (pb) attribute, and a stored procedure foo that tries to parse it and return the parsed value as a human-friendly string (not actual application code, just a minimal test case to demonstrate the problem). But running foo gives me nothing back. yang=# \d qapb Table "public.qapb" Column | Type | Modifiers --------+---------+----------- id | integer | pb | bytea | yang=# select * from qapb; id | pb ----+------------------------------------------------------------------------ 0 | \012\006hello?\020\000\030\000 \000*\014\012\006hello!\020\000\030\000 (1 row) yang=# create or replace function foo() returns text as $$ import sys, plpy if '/home/yang/work/pod/' not in sys.path: sys.path.append('/home/yang/work/pod/') from my_pb2 import * # this is a protobuf generated module rv = plpy.execute('select * from qapb') q = Q() q.ParseFromString(str(rv[0]['pb'])) return str(q); $$ language plpythonu; CREATE FUNCTION yang=# select foo(); foo ----- (1 row) >From a Python prompt, this works fine. I also verified that parsing works fine from a Python client that first pulls the blob out and parses client-side. >>> from my_pb2 import * >>> q=Q() >>> q.ParseFromString('\012\006hello?\020\000\030\000 \000*\014\012\006hello!\020\000\030\000') >>> print q a: "hello?" b: 0 c: 0 d: 0 e { a: "hello!" b: 0 c: 0 } Any hints on how I can get to the bottom of this? Thanks in advance. -- Yang Zhang http://yz.mit.edu/ -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general