উত্তর:
\df+
মধ্যে psql আপনি sourcecode দেয়।
\df
আপনার ফাংশনের নামটি খুঁজতে, তারপরে \x
প্রসারিত আউটপুট দেওয়ার জন্য ব্যবহার করার পরামর্শ দিই\df+ name_of_function
\df ltxtquery
।
\x ON
ট্রান্সপোজড ডিসপ্লের জন্য প্রয়োজনীয়
ফাংশনের জন্য:
আপনি নীচের মত, pg_proc ভিউ জিজ্ঞাসা করতে পারেন
select proname,prosrc from pg_proc where proname= your_function_name;
আরেকটি উপায় হ'ল কমেন্টটি কার্যকর করুন \df
এবং \ef
যা কার্যগুলি তালিকাবদ্ধ করতে পারে।
skytf=> \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+----------------------+------------------+------------------------------------------------+--------
public | pg_buffercache_pages | SETOF record | | normal
skytf=> \ef pg_buffercache_pages
এটি ফাংশনের উত্স কোডটি প্রদর্শন করবে।
ট্রিগারগুলির জন্য:
সোর্স কোড পাওয়ার কোনও প্রত্যক্ষ উপায় আছে কিনা তা আমি জানি না। কেবল নিম্নলিখিত পদ্ধতিটি জানুন, এটি আপনাকে সাহায্য করবে!
skytf => pg_trigger থেকে tgrelid নির্বাচন করুন যেখানে tgname = 'insert_tbl_tmp_trigger'; tgrelid --------- 26599 (1 সারি)
স্কাইটিএফ => ওড নির্বাচন করুন, pg_class থেকে পুনরায় নামকরণ করুন যেখানে oid = 26599; oid | relname ------- + + ----------------------------- 26599 | tbl_tmp (1 সারি)
skytf => t d tbl_tmp
এটি আপনাকে টেবিলের ট্রিগার সম্পর্কিত বিশদ প্রদর্শন করবে। সাধারণত একটি ট্রিগার একটি ফাংশন ব্যবহার করে। সুতরাং আপনি ট্রিগার ফাংশনের উত্স কোডটি ঠিক উপরে যেমনটি আমি উল্লেখ করেছি ঠিক তেমন পেতে পারেন!
পোস্টগ্র্রেএসকিউএল -9.5 থেকে কয়েকটি উদাহরণ এখানে রয়েছে
প্রদর্শন তালিকা:
\df+
\dy+
প্রদর্শন সংজ্ঞা:
postgres=# \sf
function name is required
postgres=# \sf pg_reload_conf()
CREATE OR REPLACE FUNCTION pg_catalog.pg_reload_conf()
RETURNS boolean
LANGUAGE internal
STRICT
AS $function$pg_reload_conf$function$
postgres=# \sf pg_encoding_to_char
CREATE OR REPLACE FUNCTION pg_catalog.pg_encoding_to_char(integer)
RETURNS name
LANGUAGE internal
STABLE STRICT
AS $function$PG_encoding_to_char$function$
\x
প্রসারিত ডিসপ্লে চালু করতে প্রথমে ব্যবহার করা পাঠযোগ্যতার সাথে সহায়তা করে।
অনেক সম্ভাবনা আছে। সহজ উপায় হ'ল কেবল পিজিএডমিন ব্যবহার করা এবং এসকিউএল উইন্ডো থেকে এটি পান। তবে আপনি যদি এই প্রোগ্রামটিমেটিকভাবে পেতে চান তবে পরীক্ষা করুন pg_proc
এবং pg_trigger
সিস্টেম ক্যাটালগ বা তথ্য স্কিমা থেকে routines
এবং triggers
ভিউগুলি (এটি এসকিউএল স্ট্যান্ডার্ড উপায়, তবে এটি সমস্ত বৈশিষ্ট্য বিশেষত PostgreSQL- নির্দিষ্ট করে নাও পারে)। উদাহরণ স্বরূপ:
SELECT
routine_definition
FROM
information_schema.routines
WHERE
specific_schema LIKE 'public'
AND routine_name LIKE 'functionName';
SELECT view_definition FROM information_schema.views WHERE table_schema = ? AND table_name = ?
pgproc.prosrc
কলাম দেখুন
কেবল ফাংশনটি প্রদর্শন করার চেয়ে সামান্য বেশি, কীভাবে সম্পাদনা-স্থান সুবিধা পাবেন।
\ef <function_name>
খুব সহজ। এটি সম্পাদনযোগ্য বিন্যাসে ফাংশনের উত্স কোডটি খুলবে। আপনি কেবল এটি দেখতে সক্ষম হবেন না, আপনি এটি সম্পাদনা করতে এবং চালিত করতে পারেন।
মাত্র \ef
ফাংশন_নাম ছাড়াই সম্পাদনাযোগ্য ক্রিয়েট ফাংশন টেম্পলেট খুলবে।
আরও রেফারেন্সের জন্য -> https://www.postgresql.org/docs/9.6/static/app-psql.html
\sf
পিএসকিএল-এ ফাংশন_নাম একক ফাংশনের সম্পাদনযোগ্য উত্স কোড দেয়।
Https://www.postgresql.org/docs/9.6/static/app-psql.html থেকে :
f sf [+] ফাংশন_ বিবরণ এই কমান্ডটি একটি ক্রিয়েট বা রিপ্লেস ফাংশন কমান্ড আকারে নামযুক্ত ফাংশনটির সংজ্ঞাটি আনে এবং দেখায়।
যদি + কমান্ডের নামের সাথে যুক্ত হয় তবে আউটপুট লাইনগুলি সংখ্যাযুক্ত হয়, ফাংশনটির প্রথম লাইনের সাথে লাইন 1 হয়।
@ ফ্র্যাঙ্কের উত্তরের পাশাপাশি আপনি এটি এসকিএল ইন্টারফেস থেকে ব্যবহার করতে পারেন:
select
prosrc
from pg_trigger, pg_proc
where
pg_proc.oid=pg_trigger.tgfoid
and pg_trigger.tgname like '<name>'
(এখান থেকে নেওয়া হয়েছে: http://www.postgresql.org/message-id/Pine.BSF.4.10.10009140858080.28013-100000@megazone23.bigpanda.com )
সংস্করণ থেকে: পিএসকিএল (9.6.17, সার্ভার 11.6)
আমি উপরের সমস্ত উত্তর চেষ্টা করেছি কিন্তু আমার জন্য
postgres=> \sf jsonb_extract_path_text
CREATE OR REPLACE FUNCTION pg_catalog.jsonb_extract_path_text(from_json jsonb, VARIADIC path_elems text[])
RETURNS text
LANGUAGE internal
IMMUTABLE PARALLEL SAFE STRICT
AS $function$jsonb_extract_path_text$function$
postgres=> \df+
ERROR: column p.proisagg does not exist
LINE 6: WHEN p.proisagg THEN 'agg'
^
HINT: Perhaps you meant to reference the column "p.prolang".
df আমার জন্য কাজ করে না বলে মনে হচ্ছে।
select * from pg_trigger;
যদিselect tgrelid::regclass, tgname from pg_trigger;