环境:PostgreSQL 9.1
TEXT
在 pg 9.0 之前,可以通过从 pg_largeobject
表中选择相应的记录来获取大对象字段的实际数据。但是从 pg 9.0 开始,非超级用户不再允许访问该表。
但是,通过使用hibernate,相同的非超级用户帐户可以访问该TEXT
字段的实际数据。所以我相信使用非超级用户帐户也可以“选择”该TEXT字段的实际内容。我该怎么做?
正如克雷格所建议的,我通过设置打开日志收集,log_statement = 'all'
相关的日志是:
SELECT p.proname,p.oid
FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n
WHERE p.pronamespace=n.oid AND n.nspname='pg_catalog'
AND ( proname = 'lo_open' or proname = 'lo_close' or proname = 'lo_creat' or proname = 'lo_unlink'
or proname = 'lo_lseek' or proname = 'lo_tell' or proname = 'loread' or proname = 'lowrite'
or proname = 'lo_truncate')
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_open" (OID 952)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_open" (OID 952)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_lseek" (OID 956)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_tell" (OID 958)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_lseek" (OID 956)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_tell" (OID 958)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_lseek" (OID 956)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "loread" (OID 954)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "loread" (OID 954)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "loread" (OID 954)
2012-08-31 09:27:05 HKT LOG: fastpath function call: "lo_close" (OID 953)
它调用了几个 lo_XXX() 函数,但我不知道如何将其作为 PL/pgSQL 函数,以便我可以在 select 语句中简单地调用它。
谢谢。