환경 사용하여 가져 오기 : PostgreSQL의 9.1큰 객체의 실제 데이터가 아닌 수퍼 유저 계정을
pg_largeobject
에서 해당 레코드를 선택하여 TEXT
필드가 할 수있는 큰 개체의 실제 데이터를 받고, 9.0 PG에 앞서 테이블 하지만 9.0 이후에는 수퍼 유저가 아닌 사용자가이 테이블에 더 이상 액세스 할 수 없습니다.
그러나 최대 절전 모드를 사용하면 동일한 수퍼 유저가 아닌 계정이이 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 답변이 제안 사항으로 업데이트되었습니다. –