環境:PostgreSQL的9.1獲取使用非超級用戶帳戶大對象的實際數據
爲pg 9.0,通過從pg_largeobject
選擇相應的記錄得到TEXT
字段可以做一個大對象的實際數據之前表。但是從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語句中調用它。
謝謝。
很好的建議克雷格。它調用了幾個lo_XXX()函數,但我不知道如何在PL/pgSQL函數中使用它們,以便我可以在select語句中簡單地調用它。 –
@KenChan回答更新了建議 –