'\" t .\" Title: psql .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026 .\" Manual: PostgreSQL 18.6 Documentation .\" Source: PostgreSQL 18.6 .\" Language: English .\" .TH "PSQL" "1" "2026" "PostgreSQL 18.6" "PostgreSQL 18.6 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" psql \- ترمینال تعاملی PostgreSQL .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBpsql\fR\ 'u \fBpsql\fR [\fIoption\fR...] [\fIdbname\fR\ [\fIusername\fR]] .SH "توضیحات (DESCRIPTION)" .PP دستور psql یک واسط کاربری متنی (front\-end) برای PostgreSQL است\&. این ابزار به شما امکان می‌دهد پرس‌وجوها را به‌صورت تعاملی تایپ کرده، آن‌ها را به PostgreSQL ارسال نمایید و نتایج پرس‌وجو را مشاهده کنید\&. همچنین، ورودی می‌تواند از یک فایل یا از آرگومان‌های خط فرمان تأمین شود\&. علاوه بر این، psql تعدادی فرادستور (meta\-command) و قابلیت‌های گوناگون شبیه به پوسته ارائه می‌دهد تا نوشتن اسکریپت‌ها و خودکارسازی طیف وسیعی از وظایف تسهیل گردد\&. .SH "گزینه‌ها (OPTIONS)" .PP \fB\-a\fR .br \fB\-\-echo\-all\fR .RS 4 تمام خطوط ورودی غیرخالی را به محض خوانده شدن در خروجی استاندارد چاپ می‌کند\&. (این گزینه برای خطوطی که به‌صورت تعاملی خوانده می‌شوند اعمال نمی‌گردد\&.) این معادل تنظیم متغیر \fIECHO\fR روی all است\&. .RE .PP \fB\-A\fR .br \fB\-\-no\-align\fR .RS 4 به حالت خروجی غیرتراز (unaligned) تغییر وضعیت می‌دهد\&. (حالت خروجی پیش‌فرض aligned است\&.) این معادل \fB\epset format unaligned\fR می‌باشد\&. .RE .PP \fB\-b\fR .br \fB\-\-echo\-errors\fR .RS 4 دستورات ناموفق SQL را در خروجی خطای استاندارد چاپ می‌کند\&. این معادل تنظیم متغیر \fIECHO\fR روی errors است\&. .RE .PP \fB\-c \fR\fB\fIcommand\fR\fR .br \fB\-\-command=\fR\fB\fIcommand\fR\fR .RS 4 مشخص می‌کند که psql باید رشته دستور داده‌شده، یعنی \fIcommand\fR را اجرا کند\&. این گزینه می‌تواند تکرار شده و به هر ترتیبی با گزینه \fB\-f\fR ترکیب شود\&. هنگامی که یکی از گزینه‌های \fB\-c\fR یا \fB\-f\fR مشخص شده باشد، psql دستورات را از ورودی استاندارد نمی‌خواند؛ بلکه پس از پردازش تمام گزینه‌های \fB\-c\fR و \fB\-f\fR به ترتیب، خاتمه می‌یابد\&. .sp \fIcommand\fR باید یا یک رشته دستور باشد که کاملاً توسط سرور قابل تجزیه است (یعنی شامل هیچ‌کدام از قابلیت‌های اختصاصی psql نیست)، یا یک دستور بک‌اسلش منفرد باشد\&. بنابراین نمی‌توانید دستورات SQL و فرادستورهای psql را درون یک گزینه \fB\-c\fR ترکیب کنید\&. برای دستیابی به این هدف، می‌توانید از گزینه‌های تکراری \fB\-c\fR استفاده کرده یا رشته را به psql پایپ کنید؛ برای مثال: .sp .if n \{\ .RS 4 .\} .nf psql \-c \*(Aq\ex\*(Aq \-c \*(AqSELECT * FROM foo;\*(Aq .fi .if n \{\ .RE .\} .sp یا .sp .if n \{\ .RS 4 .\} .nf echo \*(Aq\ex \e\e SELECT * FROM foo;\*(Aq | psql .fi .if n \{\ .RE .\} .sp (\e\e فرادستور جداکننده است\&.) .sp هر رشته دستور SQL که به \fB\-c\fR داده می‌شود، به عنوان یک درخواست واحد به سرور ارسال می‌گردد\&. به همین دلیل، سرور آن را حتی اگر رشته شامل چندین دستور SQL باشد به عنوان یک تراکنش واحد اجرا می‌کند، مگر اینکه دستورات صریح \fBBEGIN\fR/\fBCOMMIT\fR در رشته گنجانده شده باشند تا آن را به چندین تراکنش تقسیم کنند\&. (برای جزئیات بیشتر درباره نحوه رسیدگی سرور به رشته‌های چندپرس‌وجویی، بخش Section\ \&54.2.2.1 را ببینید\&.) .sp اگر مایل نیستید چند دستور در یک تراکنش اجرا شوند، از دستورات تکراری \fB\-c\fR استفاده کنید یا چندین دستور را به ورودی استاندارد psql هدایت نمایید؛ چه با استفاده از echo همان‌طور که در بالا نشان داده شد، یا از طریق یک here\-document در پوسته؛ برای مثال: .sp .if n \{\ .RS 4 .\} .nf psql <\& ارائه می‌دهد\&. برای مثال: .sp .if n \{\ .RS 4 .\} .nf $ \fBpsql testdb\fR psql (18\&.6) Type "help" for help\&. testdb=> .fi .if n \{\ .RE .\} .PP در خط اعلان، کاربر می‌تواند دستورهای SQL را وارد کند\&. به طور معمول، خطوط ورودی زمانی به سرور ارسال می‌شوند که یک نقطه\-ویرگول پایان‌دهنده فرمان وارد شود\&. پایان خط باعث اتمام فرمان نمی‌شود\&. بنابراین می‌توان دستورها را برای وضوح بیشتر در چندین خط توزیع کرد\&. اگر فرمان ارسال شده و بدون خطا اجرا شود، نتایج فرمان بر روی صفحه نمایش داده می‌شوند\&. .PP اگر کاربران غیرقابل‌اعتماد به پایگاه داده‌ای دسترسی دارند که از الگوی استفاده امن از شِما (secure schema usage pattern) پیروی نکرده است، نشست خود را با حذف شِماهای با قابلیت نوشتن همگانی از \fIsearch_path\fR آغاز کنید\&. می‌توان options=\-csearch_path= را به رشته اتصال اضافه کرد یا دستور SELECT pg_catalog\&.set_config(\*(Aqsearch_path\*(Aq, \*(Aq\*(Aq, false) را پیش از سایر دستورهای SQL اجرا نمود\&. این نکته مختص psql نیست؛ بلکه در مورد هر رابطی برای اجرای دستورهای دلخواه SQL صدق می‌کند\&. .PP هر زمان که فرمانی اجرا شود، psql همچنین رویدادهای اعلان ناهمگام (asynchronous notification events) تولید شده توسط \fBLISTEN\fR و \fBNOTIFY\fR را بررسی می‌کند\&. .PP در حالی که کامنت‌های بلوکی سبک C برای پردازش و حذف به سرور ارسال می‌شوند، کامنت‌های استاندارد SQL توسط psql حذف می‌گردند\&. .SS "متادستورها (Meta\-Commands)" .PP هر چیزی که در psql وارد کنید و با یک بک‌اسلش بدون علامت نقل‌قول آغاز شود، یک متادستور psql است که توسط خود psql پردازش می‌شود\&. این دستورها psql را برای امور مدیریتی یا اسکریپت‌نویسی کاربردی‌تر می‌کنند\&. متادستورها اغلب دستورهای اسلش یا بک‌اسلش نامیده می‌شوند\&. .PP قالب یک دستور psql عبارت است از بک‌اسلش، که بلافاصله با فعل فرمان، و سپس هرگونه آرگومان دنبال می‌شود\&. آرگومان‌ها با هر تعداد نویسه فاصله خالی از فعل فرمان و از یکدیگر جدا می‌شوند\&. .PP برای گنجاندن فاصله خالی در یک آرگومان می‌توانید آن را با نقل‌قول تکی محصور کنید\&. برای گنجاندن یک نقل‌قول تکی در یک آرگومان، دو نقل‌قول تکی متوالی درون متن محصور با نقل‌قول تکی بنویسید\&. هر آنچه درون نقل‌قول‌های تکی قرار دارد علاوه بر این مشمول جایگزینی‌های سبک C برای \en (خط جدید)، \et (تب)، \eb (پس‌بر)، \er (بازگشت به ابتدای سطر)، \ef (برگه‌شمار)، \e\fIdigits\fR (هشت‌هشتی)، و \ex\fIdigits\fR (شانزده‌شانزدهی) می‌شود\&. یک بک‌اسلش قبل از هر نویسه دیگر در متن محصور با نقل‌قول تکی، آن نویسه را، هر چه که باشد، نقل‌قول (بی‌اثر) می‌کند\&. .PP اگر یک دونقطه بدون علامت نقل‌قول (:) همراه با نام یک متغیر psql درون یک آرگومان ظاهر شود، همان‌طور که در بخش درج متغیرها در SQL (SQL Interpolation) در زیر توضیح داده شده، با مقدار آن متغیر جایگزین می‌شود\&. قالب‌های :\*(Aq\fIvariable_name\fR\*(Aq و :"\fIvariable_name\fR" که در آنجا شرح داده شده‌اند نیز عمل می‌کنند\&. نحو :{?\fIvariable_name\fR} امکان بررسی تعریف شدن یا نشدن یک متغیر را فراهم می‌کند\&. این عبارت با TRUE یا FALSE جایگزین می‌شود\&. فرار دادن (escape) دونقطه با یک بک‌اسلش، آن را از جایگزینی محافظت می‌کند\&. .PP درون یک آرگومان، متنی که در بک‌تیک (`) محصور شده است، به عنوان یک خط فرمان در نظر گرفته می‌شود که به شل ارسال می‌گردد\&. خروجی فرمان (با حذف هرگونه نویسه خط جدید در انتهای آن) جایگزین متن درون بک‌تیک می‌شود\&. درون متنی که در بک‌تیک محصور است، هیچ نقل‌قول ویژه یا پردازش دیگری رخ نمی‌دهد، به جز اینکه موارد :\fIvariable_name\fR که در آن‌ها \fIvariable_name\fR یک نام متغیر psql است با مقدار متغیر جایگزین می‌شوند\&. همچنین، موارد :\*(Aq\fIvariable_name\fR\*(Aq با مقدار متغیر جایگزین می‌شوند که به شکل مناسبی نقل‌قول شده تا به یک آرگومان واحد در فرمان شل تبدیل شود\&. (شکل دوم تقریباً همیشه ترجیح داده می‌شود، مگر اینکه کاملاً مطمئن باشید چه چیزی در متغیر قرار دارد\&.) به دلیل اینکه نویسه‌های بازگشت به ابتدای سطر (carriage return) و سطر جدید (line feed) در همه پلتفرم‌ها نمی‌توانند به شکل امن نقل‌قول شوند، قالب :\*(Aq\fIvariable_name\fR\*(Aq در صورت ظاهر شدن چنین نویسه‌هایی در مقدار، یک پیام خطا چاپ می‌کند و مقدار متغیر را جایگزین نمی‌نماید\&. .PP برخی از دستورها یک شناسه SQL (مانند نام جدول) را به عنوان آرگومان دریافت می‌کنند\&. این آرگومان‌ها از قواعد نحو SQL پیروی می‌کنند: حروف بدون نقل‌قول به حروف کوچک تبدیل می‌شوند، در حالی که نقل‌قول دوگانه (") حروف را از تبدیل بزرگ/کوچک محافظت می‌کند و امکان گنجاندن فاصله خالی را در شناسه فراهم می‌سازد\&. درون نقل‌قول دوگانه، دو نقل‌قول دوگانه جفت‌شده به یک نقل‌قول دوگانه منفرد در نام نهایی تقلیل می‌یابند\&. برای مثال، FOO"BAR"BAZ به صورت fooBARbaz تفسیر می‌شود، و "A weird"" name" تبدیل به A weird" name می‌گردد\&. .PP تجزیه آرگومان‌ها در انتهای خط، یا هنگامی که بک‌اسلش بدون نقل‌قول دیگری یافت شود، متوقف می‌شود\&. یک بک‌اسلش بدون نقل‌قول به عنوان شروع یک متادستور جدید تلقی می‌شود\&. دنباله ویژه \e\e (دو بک‌اسلش) پایان آرگومان‌ها را نشان می‌دهد و به تجزیه دستورهای SQL (در صورت وجود) ادامه می‌دهد\&. به این ترتیب دستورهای SQL و psql را می‌توان آزادانه در یک خط ترکیب کرد\&. اما در هر صورت، آرگومان‌های یک متادستور نمی‌توانند فراتر از انتهای خط ادامه پیدا کنند\&. .PP بسیاری از متادستورها بر روی بافر پرس‌وجوی جاری (current query buffer) عمل می‌کنند\&. این صرفاً بافری است که هر متن دستور SQL را که تایپ شده اما هنوز برای اجرا به سرور ارسال نشده است، نگهداری می‌کند\&. این شامل خطوط ورودی قبلی و همچنین هر متنی است که پیش از متادستور در همان خط قرار دارد\&. .PP بسیاری از متادستورها همچنین اجازه می‌دهند که x به عنوان یک گزینه به آن‌ها اضافه شود\&. این باعث می‌شود که نتایج در حالت گسترده (expanded mode) نمایش داده شوند، درست مانند اینکه از \fB\ex\fR یا \fB\epset expanded\fR استفاده شده باشد\&..PP متا‌دستورهای زیر تعریف شده‌اند: .PP \ea .RS 4 اگر قالب کنونی خروجی جدول ترازنشده باشد، به تراز‌شده تغییر می‌یابد\&. اگر ترازنشده نباشد، به ترازنشده تنظیم می‌شود\&. این دستور برای سازگاری با گذشته حفظ شده است\&. برای یک راهکار جامع‌تر، \fB\epset\fR را ببینید\&. .RE .PP \ebind [ \fIparameter\fR ] \&.\&.\&. .RS 4 پارامترهای پرس‌وجو را برای اجرای پرس‌وجوی بعدی تنظیم می‌کند، به‌طوری که پارامترهای مشخص‌شده برای هر جای‌نگه‌دار پارامتر ($1 و غیره) ارسال می‌شوند\&. .sp مثال: .sp .if n \{\ .RS 4 .\} .nf INSERT INTO tbl1 VALUES ($1, $2) \ebind \*(Aqfirst value\*(Aq \*(Aqsecond value\*(Aq \eg .fi .if n \{\ .RE .\} .sp این دستور علاوه بر \eg، برای سایر دستورهای اجرای پرس‌وجو مانند \egx و \egset نیز کار می‌کند\&. .sp این دستور بر خلاف عملکرد عادی psql که از پروتکل پرس‌وجوی ساده استفاده می‌کند، باعث به‌کارگیری پروتکل پرس‌وجوی گسترش‌یافته (ببینید: بخش\ \&54.1.2) می‌شود\&. بنابراین این دستور می‌تواند برای آزمایش پروتکل پرس‌وجوی گسترش‌یافته از طریق psql مفید باشد\&. (پروتکل پرس‌وجوی گسترش‌یافته حتی در صورتی که پرس‌وجو هیچ پارامتری نداشته باشد و این دستور صفر پارامتر تعیین کرده باشد نیز استفاده می‌شود\&.) این دستور تنها بر پرس‌وجوی بعدی که اجرا می‌شود تأثیر می‌گذارد؛ تمام پرس‌وجوهای بعدی به‌طور پیش‌فرض از پروتکل پرس‌وجوی ساده استفاده خواهند کرد\&. .RE .PP \ebind_named \fIstatement_name\fR [ \fIparameter\fR ] \&.\&.\&. .RS 4 دستور \ebind_named معادل \ebind است، با این تفاوت که نام یک عبارت آماده‌سازی‌شدهٔ موجود را به عنوان اولین پارامتر دریافت می‌کند\&. یک رشتهٔ خالی نشان‌دهندهٔ عبارت آماده‌سازی‌شدهٔ بی‌نام است\&. .sp مثال: .sp .if n \{\ .RS 4 .\} .nf INSERT INTO tbls1 VALUES ($1, $2) \eparse stmt1 \ebind_named stmt1 \*(Aqfirst value\*(Aq \*(Aqsecond value\*(Aq \eg .fi .if n \{\ .RE .\} .sp این دستور بر خلاف عملکرد عادی psql که از پروتکل پرس‌وجوی ساده استفاده می‌کند، باعث به‌کارگیری پروتکل پرس‌وجوی گسترش‌یافته (ببینید: بخش\ \&54.1.2) می‌شود\&. بنابراین این دستور می‌تواند برای آزمایش پروتکل پرس‌وجوی گسترش‌یافته از طریق psql مفید باشد\&. .RE .PP \ec یا \econnect [ \-reuse\-previous=\fIon|off\fR ] [ \fIdbname\fR [ \fIusername\fR ] [ \fIhost\fR ] [ \fIport\fR ] | \fIconninfo\fR ] .RS 4 یک اتصال جدید به یک سرور PostgreSQL برقرار می‌کند\&. پارامترهای اتصالِ مورد استفاده را می‌توان با یک نحو موضعی (یک یا چند مورد از نام پایگاه‌داده، کاربر، میزبان، و درگاه) یا با استفاده از یک رشتهٔ اتصال \fIconninfo\fR همان‌طور که در بخش\ \&32.1.1 شرح داده شده است، تعیین کرد\&. اگر هیچ آرگومانی داده نشود، اتصال جدیدی با استفاده از همان پارامترهای قبلی برقرار می‌شود\&. .sp تعیین هر یک از \fIdbname\fR، \fIusername\fR، \fIhost\fR یا \fIport\fR به صورت \- معادل با حذف آن پارامتر است\&. .sp اتصال جدید می‌تواند پارامترهای اتصال را از اتصال قبلی مجدداً استفاده کند؛ نه‌تنها نام پایگاه‌داده، کاربر، میزبان، و درگاه، بلکه سایر تنظیمات نظیر \fIsslmode\fR\&. به‌طور پیش‌فرض، پارامترها در نحو موضعی مجدداً استفاده می‌شوند، اما هنگام ارائهٔ رشتهٔ \fIconninfo\fR خیر\&. ارسال اولین آرگومان به صورت \-reuse\-previous=on یا \-reuse\-previous=off این حالت پیش‌فرض را لغو می‌کند\&. اگر پارامترها مجدداً استفاده شوند، هر پارامتری که به‌طور صریح به عنوان یک پارامتر موضعی یا در رشتهٔ \fIconninfo\fR مشخص نشده باشد، از پارامترهای اتصال موجود گرفته می‌شود\&. یک استثنا این است که اگر تنظیم \fIhost\fR از مقدار قبلی خود با استفاده از نحو موضعی تغییر کند، هرگونه تنظیم \fIhostaddr\fR موجود در پارامترهای اتصال کنونی حذف می‌شود\&. همچنین، هر گذرواژه‌ای که برای اتصال قبلی استفاده شده است، تنها در صورتی مجدداً استفاده خواهد شد که تنظیمات کاربر، میزبان، و درگاه تغییر نکرده باشند\&. هنگامی که دستور نه پارامتری را مشخص کند و نه مجدداً استفاده نماید، مقدار پیش‌فرض libpq به‌کار می‌رود\&. .sp اگر اتصال جدید با موفقیت برقرار شود، اتصال قبلی بسته می‌شود\&. اگر تلاش برای اتصال با شکست مواجه شود (نام کاربری اشتباه، رد دسترسی، و غیره)، در صورتی که psql در حالت تعاملی باشد، اتصال قبلی حفظ خواهد شد\&. اما هنگام اجرای یک اسکریپت غیرتعاملی، اتصال قدیمی بسته شده و یک خطا گزارش می‌شود\&. این ممکن است به پایان یافتن اسکریپت منجر بشود یا نشود؛ اگر نشود، تمام دستورهای دسترسی به پایگاه‌داده تا زمانی که دستور \econnect دیگری با موفقیت اجرا شود با شکست مواجه خواهند شد\&. این تمایز از یک سو برای راحتی کاربر در برابر اشتباهات تایپی و از سوی دیگر به عنوان یک سازوکار ایمنی انتخاب شده تا اسکریپت‌ها به‌طور تصادفی روی پایگاه‌دادهٔ اشتباه عمل نکنند\&. توجه داشته باشید که هر زمان دستور \econnect تلاش می‌کند پارامترها را مجدداً استفاده کند، مقادیر بازاستفاده‌شده متعلق به آخرین اتصال موفق هستند، نه تلاش‌های ناموفقی که پس از آن صورت گرفته‌اند\&. با این حال، در صورت شکست یک \econnect غیرتعاملی، هیچ پارامتری اجازهٔ استفادهٔ مجدد بعدی را ندارد، چرا که اسکریپت احتمالاً انتظار بازاستفاده از مقادیر حاصل از \econnect شکست‌خورده را خواهد داشت\&. .sp مثال‌ها: .sp .if n \{\ .RS 4 .\} .nf => \ec mydb myuser host\&.dom 6432 => \ec service=foo => \ec "host=localhost port=5432 dbname=mydb connect_timeout=10 sslmode=disable" => \ec \-reuse\-previous=on sslmode=require \-\- changes only sslmode => \ec postgresql://tom@localhost/mydb?application_name=myapp .fi .if n \{\ .RE .\} .RE .PP \eC [ \fItitle\fR ] .RS 4 عنوان هر جدولی را که به عنوان نتیجهٔ یک پرس‌وجو چاپ می‌شود تنظیم کرده یا هرگونه عنوان این‌چنینی را حذف می‌کند\&. این دستور معادل \epset title \fItitle\fR است\&. (نام این دستور از \(lqcaption\(rq گرفته شده است، زیرا قبلاً فقط برای تعیین عنوان در جدول HTML به‌کار می‌رفت\&.) .RE .PP \ecd [ \fIdirectory\fR ] .RS 4 دایرکتوری کاری فعلی را به \fIdirectory\fR تغییر می‌دهد\&. بدون آرگومان، به دایرکتوری خانگی کاربر جاری تغییر می‌یابد\&. برای جزئیات در مورد نحوهٔ یافتن دایرکتوری‌های خانگی، ببینید: بخش\ \&32.16\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای چاپ دایرکتوری کاری فعلی خود، از \e! pwd استفاده کنید\&. .sp .5v .RE .RE .PP \eclose_prepared \fIprepared_statement_name\fR .RS 4 عبارت آماده‌سازی‌شدهٔ مشخص را می‌بندد\&. یک رشتهٔ خالی نشان‌دهندهٔ عبارت آماده‌سازی‌شدهٔ بی‌نام است\&. اگر هیچ عبارت آماده‌سازی‌شده‌ای با این نام وجود نداشته باشد، این عملیات هیچ اثری نخواهد داشت (no-op)\&. .sp مثال: .sp .if n \{\ .RS 4 .\} .nf SELECT $1 \eparse stmt1 \eclose_prepared stmt1 .fi .if n \{\ .RE .\} .sp این دستور بر خلاف عملکرد عادی psql که از پروتکل پرس‌وجوی ساده استفاده می‌کند، باعث به‌کارگیری پروتکل پرس‌وجوی گسترش‌یافته می‌شود\&. بنابراین این دستور می‌تواند برای آزمایش پروتکل پرس‌وجوی گسترش‌یافته از طریق psql مفید باشد\&. .RE .PP \econninfo .RS 4 اطلاعاتی را دربارهٔ اتصال فعلی به پایگاه‌داده، شامل اطلاعات مربوط به SSL در صورت استفاده از SSL، در خروجی نمایش می‌دهد\&. .sp توجه داشته باشید که فیلد Client User کاربر را در زمان برقراری اتصال نشان می‌دهد، در حالی که فیلد Superuser مشخص می‌کند که آیا کاربر فعلی (در بافت اجرایی جاری) از امتیازات مدیر سیستم (superuser) برخوردار است یا خیر\&. این کاربران معمولاً یکسان هستند، اما می‌توانند متفاوت باشند، برای مثال اگر کاربر فعلی با دستور \fBSET ROLE\fR تغییر کرده باشد\&. .RE .PP \ecopy { \fItable\fR [ ( \fIcolumn_list\fR ) ] } from { \fI\*(Aqfilename\*(Aq\fR | program \fI\*(Aqcommand\*(Aq\fR | stdin | pstdin } [ [ with ] ( \fIoption\fR [, \&.\&.\&.] ) ] [ where \fIcondition\fR ] .br \ecopy { \fItable\fR [ ( \fIcolumn_list\fR ) ] | ( \fIquery\fR ) } to { \fI\*(Aqfilename\*(Aq\fR | program \fI\*(Aqcommand\*(Aq\fR | stdout | pstdout } [ [ with ] ( \fIoption\fR [, \&.\&.\&.] ) ] .RS 4 یک کپی سمت کلاینت (فرانت‌اند) انجام می‌دهد\&. این عملیاتی است که یک دستور \fBCOPY\fR در SQL را اجرا می‌کند، اما به جای اینکه سرور فایل مشخص‌شده را بخواند یا بنویسد، psql فایل را می‌خواند یا می‌نویسد و داده‌ها را میان سرور و سیستم فایل محلی هدایت می‌کند\&. این بدان معناست که دسترسی‌پذیری و امتیازات فایل متعلق به کاربر محلی است، نه سرور، و هیچ نیازی به امتیازات مدیر سیستم در SQL نیست\&. .sp هنگامی که program مشخص شده باشد، \fIcommand\fR توسط psql اجرا می‌شود و داده‌های ارسال‌شده از یا به \fIcommand\fR میان سرور و کلاینت هدایت می‌شوند\&. مجدداً، امتیازات اجرا متعلق به کاربر محلی است نه سرور، و نیازی به امتیازات مدیر سیستم در SQL نیست\&. .sp برای \ecopy \&.\&.\&. from stdin، سطرهای داده از همان منبعی که دستور را صادر کرده خوانده می‌شوند، و تا زمانی که خطی فقط شامل \e\&. خوانده شود یا جریان داده به EOF برسد ادامه می‌یابد\&. این گزینه برای پر کردن جدول‌ها به‌صورت درخط در یک فایل اسکریپت SQL مفید است\&. برای \ecopy \&.\&.\&. to stdout، خروجی به همان جایی ارسال می‌شود که خروجی دستورهای psql فرستاده می‌شود، و وضعیت دستور COPY \fIcount\fR چاپ نمی‌شود (زیرا ممکن است با یک سطر داده اشتباه گرفته شود)\&. برای خواندن/نوشتن در ورودی یا خروجی استاندارد psql، بدون در نظر گرفتن منبع دستور جاری یا گزینهٔ \eo، عبارت from pstdin یا to pstdout را بنویسید\&. .sp نحو این دستور مشابه دستور \fBCOPY\fR در SQL است\&. تمام گزینه‌ها به غیر از مبدأ/مقصد داده، همانند مواردی هستند که برای \fBCOPY\fR مشخص شده‌اند\&. به همین دلیل، قواعد تجزیهٔ نحوی ویژه‌ای بر متا‌دستور \fB\ecopy\fR اعمال می‌شود\&. برخلاف اغلب متا‌دستورهای دیگر، کل باقی‌ماندهٔ خط همیشه به عنوان آرگومان‌های \fB\ecopy\fR در نظر گرفته می‌شود، و نه جای‌گذاری متغیر و نه بسط بک‌تیک در آرگومان‌ها انجام نمی‌شود\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br روش دیگر برای دستیابی به همان نتیجهٔ \ecopy \&.\&.\&. to، استفاده از دستور SQL به‌صورت COPY \&.\&.\&. TO STDOUT و پایان دادن به آن با \eg \fIfilename\fR یا \eg |\fIprogram\fR است\&. برخلاف \ecopy، این روش به دستور امکان می‌دهد که در چند خط گسترده شود؛ همچنین می‌توان از جای‌گذاری متغیرها و بسط بک‌تیک استفاده کرد\&. .sp .5v .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br این عملیات‌ها به اندازهٔ دستور \fBCOPY\fR در SQL با مبدأ یا مقصد دادهٔ فایلی یا برنامه‌ای کارآمد نیستند، چرا که تمام داده‌ها باید از طریق اتصال کلاینت/سرور عبور کنند\&. برای حجم زیادی از داده‌ها، ممکن است دستور SQL ارجحیت داشته باشد\&. .sp .5v .RE .RE.PP \ecopyright .RS 4 شرایط کپی‌رایت و توزیع PostgreSQL را نمایش می‌دهد\&. .RE .PP \ecrosstabview [ \fIcolV\fR [ \fIcolH\fR [ \fIcolD\fR [ \fIsortcolH\fR ] ] ] ] .RS 4 بافر پرسمان فعلی را (مانند \eg) اجرا کرده و نتایج را در یک جدول متقاطع (crosstab grid) نمایش می‌دهد\&. پرسمان باید حداقل سه ستون برگرداند\&. ستون خروجی مشخص‌شده توسط \fIcolV\fR به یک سرستون عمودی و ستون خروجی مشخص‌شده توسط \fIcolH\fR به یک سرستون افقی تبدیل می‌شود\&. \fIcolD\fR ستون خروجی جهت نمایش درون جدول را مشخص می‌کند\&. \fIsortcolH\fR یک ستون مرتب‌سازی اختیاری برای سرستون افقی تعیین می‌کند\&. .sp مشخصات هر ستون می‌تواند یک شماره ستون (شروع از ۱) یا یک نام ستون باشد\&. قواعد معمول SQL برای تبدیل حروف بزرگ و کوچک و استفاده از علامت نقل‌قول در نام ستون‌ها اعمال می‌شود\&. در صورت حذف، \fIcolV\fR به عنوان ستون ۱ و \fIcolH\fR به عنوان ستون ۲ در نظر گرفته می‌شود\&. \fIcolH\fR باید با \fIcolV\fR متفاوت باشد\&. اگر \fIcolD\fR مشخص نشده باشد، باید دقیقاً سه ستون در نتیجه پرسمان وجود داشته باشد، و ستونی که نه \fIcolV\fR است و نه \fIcolH\fR، به عنوان \fIcolD\fR در نظر گرفته می‌شود\&. .sp سرستون عمودی که در سمت چپ‌ترین ستون نمایش داده می‌شود، شامل مقادیر موجود در ستون \fIcolV\fR با همان ترتیب موجود در نتایج پرسمان، اما با حذف موارد تکراری است\&. .sp سرستون افقی که در سطر اول نمایش داده می‌شود، شامل مقادیر موجود در ستون \fIcolH\fR با حذف موارد تکراری است\&. به‌طور پیش‌فرض، این مقادیر با همان ترتیب موجود در نتایج پرسمان ظاهر می‌شوند\&. اما اگر آرگومان اختیاری \fIsortcolH\fR داده شود، ستونی را مشخص می‌کند که مقادیر آن باید اعداد صحیح باشند و مقادیر \fIcolH\fR در سرستون افقی، مرتب‌شده بر اساس مقادیر متناظر \fIsortcolH\fR ظاهر خواهند شد\&. .sp درون جدول متقاطع، برای هر مقدار متمایز x از \fIcolH\fR و هر مقدار متمایز y از \fIcolV\fR، خانه‌ای که در تقاطع (x,y) قرار دارد حاوی مقدار ستون colD در سطر نتیجه پرسمان است که در آن مقدار \fIcolH\fR برابر با x و مقدار \fIcolV\fR برابر با y است\&. اگر چنین سطری وجود نداشته باشد، خانه خالی می‌ماند\&. اگر چندین سطر این‌چنینی وجود داشته باشد، یک خطا گزارش می‌شود\&. .RE .PP \ed[Sx+] [ \fIpattern\fR ] .RS 4 برای هر رابطه (جدول، view، نمای مادی‌شده (materialized view)، ایندکس، دنباله یا جدول خارجی) یا نوع مرکب (composite type) که با \fIpattern\fR مطابقت داشته باشد، تمام ستون‌ها، نوع‌های آن‌ها، tablespace (در صورتی که پیش‌فرض نباشد) و هر ویژگی خاص مانند NOT NULL یا مقادیر پیش‌فرض را نشان می‌دهد\&. ایندکس‌ها، محدودیت‌ها (constraints)، قواعد (rules) و تریگرهای مرتبط نیز نمایش داده می‌شوند\&. برای جدول‌های خارجی، foreign server مرتبط نیز نشان داده می‌شود\&. (\(lqمطابقت با الگو\(rq در بخش Patterns در زیر تعریف شده است\&.) .sp برای برخی از انواع رابطه‌ها، \ed اطلاعات بیشتری را برای هر ستون نمایش می‌دهد: مقادیر ستون برای دنباله‌ها، عبارت‌های ایندکس‌شده برای ایندکس‌ها، و گزینه‌های foreign data wrapper برای جدول‌های خارجی\&. .sp شکل دستوری \ed+ مشابه است، با این تفاوت که اطلاعات بیشتری نمایش داده می‌شود: هرگونه یادداشت (comment) مرتبط با ستون‌های جدول نمایش داده می‌شود، همچنین حضور OIDها در جدول، تعریف view در صورتی که رابطه یک view باشد، تنظیمات غیرپیش‌فرض replica identity و در صورتی که رابطه دارای روش دسترسی باشد، نام access method نمایش داده می‌شود\&. .sp به‌طور پیش‌فرض، فقط اشیاء ایجادشده توسط کاربر نمایش داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا اصلاح‌کننده S را ارائه دهید\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBیادداشت\fR .ps -1 .br اگر \fB\ed\fR بدون آرگومان \fIpattern\fR استفاده شود، معادل \fB\edtvmsE\fR خواهد بود که فهرستی از تمام جدول‌ها، viewها، viewهای مادی‌شده، دنباله‌ها و جدول‌های خارجی قابل مشاهده را نمایش می‌دهد\&. این فقط یک قابلیت برای راحتی کار است\&. .sp مانند بسیاری از دستورهای دیگر، اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده (expanded mode) نمایش داده می‌شوند، اما توجه داشته باشید که این ویژگی تنها زمانی اعمال می‌شود که \fB\ed\fR بدون آرگومان \fIpattern\fR استفاده شود، و اصلاح‌کننده x نمی‌تواند بلافاصله بعد از \fB\ed\fR بیاید (زیرا \fB\edx\fR دستور متفاوتی است)؛ اصلاح‌کننده x تنها می‌تواند پس از اصلاح‌کننده S یا + قرار گیرد\&. برای مثال، \fB\ed+x\fR معادل \fB\edtvmsE+x\fR است و فهرستی از تمام رابطه‌ها را در حالت گسترده نمایش خواهد داد\&. .sp .5v .RE .RE .PP \eda[Sx] [ \fIpattern\fR ] .RS 4 توابع تجمعی (aggregate functions) را به همراه نوع بازگشتی و نوع‌های داده‌ای که روی آن‌ها عمل می‌کنند فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط توابع تجمعی که نام آن‌ها با الگو مطابقت دارد نمایش داده می‌شوند\&. به‌طور پیش‌فرض، فقط اشیاء ایجادشده توسط کاربر نمایش داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا اصلاح‌کننده S را ارائه دهید\&. اگر x به انتهای نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. .RE .PP \edA[x+] [ \fIpattern\fR ] .RS 4 روش‌های دسترسی (access methods) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط روش‌های دسترسی که نام آن‌ها با الگو مطابقت دارد نمایش داده می‌شوند\&. اگر x به انتهای نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور افزوده شود، هر روش دسترسی به همراه تابع گرداننده (handler function) و توضیحات مرتبط با آن فهرست می‌شود\&. .RE .PP \edAc[x+] [\fIaccess\-method\-pattern\fR [\fIinput\-type\-pattern\fR]] .RS 4 کلاس‌های عملگر (operator classes) را فهرست می‌کند (بخش\ \&36.16.1 را ببینید)\&. اگر \fIaccess\-method\-pattern\fR مشخص شده باشد، فقط کلاس‌های عملگر مرتبط با روش‌های دسترسی که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر \fIinput\-type\-pattern\fR مشخص شده باشد، فقط کلاس‌های عملگر مرتبط با نوع‌های ورودی که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور افزوده شود، هر کلاس عملگر به همراه خانواده عملگر (operator family) و مالک مربوطه‌اش فهرست می‌شود\&. .RE .PP \edAf[x+] [\fIaccess\-method\-pattern\fR [\fIinput\-type\-pattern\fR]] .RS 4 خانواده‌های عملگر (operator families) را فهرست می‌کند (بخش\ \&36.16.5 را ببینید)\&. اگر \fIaccess\-method\-pattern\fR مشخص شده باشد، فقط خانواده‌های عملگر مرتبط با روش‌های دسترسی که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر \fIinput\-type\-pattern\fR مشخص شده باشد، فقط خانواده‌های عملگر مرتبط با نوع‌های ورودی که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور افزوده شود، هر خانواده عملگر به همراه مالک آن فهرست می‌شود\&. .RE .PP \edAo[x+] [\fIaccess\-method\-pattern\fR [\fIoperator\-family\-pattern\fR]] .RS 4 عملگرهای مرتبط با خانواده‌های عملگر را فهرست می‌کند (بخش\ \&36.16.2 را ببینید)\&. اگر \fIaccess\-method\-pattern\fR مشخص شده باشد، فقط اعضای خانواده‌های عملگر مرتبط با روش‌های دسترسی که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر \fIoperator\-family\-pattern\fR مشخص شده باشد، فقط اعضای خانواده‌های عملگر که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور افزوده شود، هر عملگر به همراه خانواده عملگر مرتب‌سازی آن (در صورتی که یک عملگر ترتیبی باشد)، و این که آیا تابع زیربنایی آن ضد نشت (leakproof) است یا خیر، فهرست می‌شود\&. .RE.PP \edAp[x+] [\fIaccess\-method\-pattern\fR [\fIoperator\-family\-pattern\fR]] .RS 4 توابع پشتیبان مرتبط با خانواده‌های عملگر (operator families) را فهرست می‌کند (بخش\ \&36.16.3 را ببینید)\&. اگر \fIaccess\-method\-pattern\fR مشخص شده باشد، تنها توابع مربوط به خانواده‌های عملگری که با روش‌های دسترسی منطبق با آن الگو در ارتباط هستند فهرست می‌شوند\&. اگر \fIoperator\-family\-pattern\fR مشخص شده باشد، تنها توابع مربوط به خانواده‌های عملگری که نام آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده (expanded mode) نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، توابع با جزئیات کامل و همراه با فهرست پارامترهای واقعی‌شان نمایش داده می‌شوند\&. .RE .PP \edb[x+] [ \fIpattern\fR ] .RS 4 فضاهای جدول (tablespaces) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها فضاهای جدولی که نام آن‌ها با الگو مطابقت دارد نمایش داده می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، هر فضای جدول به همراه گزینه‌های مرتبط، اندازه روی دیسک، مجوزها و توضیحات آن فهرست می‌شود\&. .RE .PP \edc[Sx+] [ \fIpattern\fR ] .RS 4 تبدیل‌ها میان کدگذاری‌های مجموعه نویسه (character\-set encodings) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها تبدیل‌هایی که نام آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. به‌طور پیش‌فرض، تنها اشیای ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیای سیستمی، یک الگو یا اصلاح‌کنندهٔ S را ارائه دهید\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، هر شیء به همراه توضیحات مرتبط با آن فهرست می‌شود\&. .RE .PP \edconfig[x+] [ \fIpattern\fR ] .RS 4 پارامترهای پیکربندی سرور و مقادیر آن‌ها را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها پارامترهایی که نام آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. بدون \fIpattern\fR، تنها پارامترهایی که روی مقادیری غیر از پیش‌فرض تنظیم شده‌اند فهرست می‌شوند\&. (برای مشاهدهٔ تمام پارامترها از \edconfig * استفاده کنید\&.) اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، هر پارامتر به همراه نوع داده، زمینه‌ای (context) که پارامتر در آن قابل تنظیم است و مجوزهای دسترسی (در صورتی که مجوزهای دسترسی غیرپیش‌فرض اعطا شده باشد) فهرست می‌شود\&. .RE .PP \edC[x+] [ \fIpattern\fR ] .RS 4 تبدیل‌های نوع داده (type casts) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها تبدیل‌هایی که نوع مبدأ یا مقصد آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، اطلاعات تکمیلی درباره هر تبدیل نوع نشان داده می‌شود، از جمله این‌که آیا تابع زیربنایی آن leakproof است یا خیر، و همچنین توضیحات تبدیل نوع\&. .RE .PP \edd[Sx] [ \fIpattern\fR ] .RS 4 توضیحات اشیایی از نوع constraint، operator class، operator family، rule، و trigger را نشان می‌دهد\&. سایر کامنت‌ها را می‌توان با دستورهای بک‌اسلش مربوط به آن انواع شیء مشاهده کرد\&. .sp \edd توضیحات مربوط به اشیای منطبق با \fIpattern\fR، یا در صورت عدم ارائه آرگومان، اشیای قابل مشاهده از نوع مناسب را نمایش می‌دهد\&. اما در هر دو حالت، تنها اشیایی که دارای توضیحات هستند فهرست می‌شوند\&. به‌طور پیش‌فرض، تنها اشیای ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیای سیستمی، یک الگو یا اصلاح‌کنندهٔ S را ارائه دهید\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. .sp توضیحات اشیاء را می‌توان با دستور SQL \fBCOMMENT\fR ایجاد کرد\&. .RE .PP \edD[Sx+] [ \fIpattern\fR ] .RS 4 دامنه‌ها (domains) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها دامنه‌هایی که نام آن‌ها با الگو مطابقت دارد نمایش داده می‌شوند\&. به‌طور پیش‌فرض، تنها اشیای ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیای سیستمی، یک الگو یا اصلاح‌کنندهٔ S را ارائه دهید\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، هر شیء به همراه مجوزها و توضیحات مرتبط با آن فهرست می‌شود\&. .RE .PP \eddp[x] [ \fIpattern\fR ] .RS 4 تنظیمات پیش‌فرض مجوزهای دسترسی را فهرست می‌کند\&. برای هر نقش (و در صورت کاربرد، طرح‌واره) که تنظیمات مجوز پیش‌فرض آن نسبت به مقادیر پیش‌فرض توکار تغییر کرده است، یک مدخل نمایش داده می‌شود\&. اگر \fIpattern\fR مشخص شده باشد، تنها مدخل‌هایی که نام نقش یا نام طرح‌وارهٔ آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. .sp دستور \fBALTER DEFAULT PRIVILEGES\fR برای تنظیم مجوزهای دسترسی پیش‌فرض به کار می‌رود\&. مفهوم نحوهٔ نمایش مجوزها در بخش\ \&5.8 توضیح داده شده است\&. .RE .PP \edE[Sx+] [ \fIpattern\fR ] .br \edi[Sx+] [ \fIpattern\fR ] .br \edm[Sx+] [ \fIpattern\fR ] .br \eds[Sx+] [ \fIpattern\fR ] .br \edt[Sx+] [ \fIpattern\fR ] .br \edv[Sx+] [ \fIpattern\fR ] .RS 4 در این گروه از دستورها، حروف E، i، m، s، t، و v به ترتیب نشان‌دهندهٔ foreign table، index، materialized view، sequence، table و view هستند\&. می‌توانید هر یک یا تمام این حروف را، با هر ترتیبی، برای دریافت فهرستی از اشیایی از این نوع‌ها مشخص کنید\&. به عنوان مثال، \edti جدول‌ها و شاخص‌ها را فهرست می‌کند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، هر شیء به همراه وضعیت ماندگاری آن (permanent، temporary، یا unlogged)، اندازهٔ فیزیکی روی دیسک، و توضیحات مرتبط (در صورت وجود) فهرست می‌شود\&. اگر \fIpattern\fR مشخص شده باشد، تنها اشیایی که نام آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. به‌طور پیش‌فرض، تنها اشیای ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیای سیستمی، یک الگو یا اصلاح‌کنندهٔ S را ارائه دهید\&. .RE .PP \edes[x+] [ \fIpattern\fR ] .RS 4 سرورهای خارجی (foreign servers؛ سرواژهٔ یادیار: \(lqexternal servers\(rq) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها سرورهایی که نام آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، شرح کاملی از هر سرور نمایش داده می‌شود، شامل مجوزهای دسترسی سرور، نوع، نسخه، گزینه‌ها و توضیحات آن\&. .RE .PP \edet[x+] [ \fIpattern\fR ] .RS 4 جدول‌های خارجی (foreign tables؛ سرواژهٔ یادیار: \(lqexternal tables\(rq) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها مدخل‌هایی که نام جدول یا نام طرح‌وارهٔ آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، گزینه‌های عمومی و توضیحات جدول خارجی نیز نمایش داده می‌شوند\&. .RE .PP \edeu[x+] [ \fIpattern\fR ] .RS 4 نگاشت‌های کاربر (user mappings؛ سرواژهٔ یادیار: \(lqexternal users\(rq) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها نگاشت‌هایی که نام کاربری آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، اطلاعات تکمیلی درباره هر نگاشت نمایش داده می‌شود\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBاحتیاط\fR .ps -1 .br \edeu+ ممکن است نام کاربری و گذرواژهٔ کاربر دوردست را نیز نمایش دهد، بنابراین باید احتیاط شود تا آن‌ها فاش نشوند\&. .sp .5v .RE .RE .PP \edew[x+] [ \fIpattern\fR ] .RS 4 پوشش‌های داده‌های خارجی (foreign\-data wrappers؛ سرواژهٔ یادیار: \(lqexternal wrappers\(rq) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها پوشش‌های داده‌های خارجی که نام آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور افزوده شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور افزوده شود، مجوزهای دسترسی، گزینه‌ها و توضیحات foreign\-data wrapper نیز نشان داده می‌شوند\&. .RE.PP \edf[anptwSx+] [ \fIpattern\fR [ \fIarg_pattern\fR \&.\&.\&. ] ] .RS 4 توابع را همراه با انواع داده‌ای نتیجه، انواع داده‌ای آرگومان، و انواع تابع فهرست می‌کند که در دسته‌های \(lqagg\(rq (تجمیعی یا aggregate)، \(lqnormal\(rq، \(lqprocedure\(rq، \(lqtrigger\(rq یا \(lqwindow\(rq طبقه‌بندی می‌شوند\&. برای نمایش تنها توابع با نوع (یا انواع) خاص، حروف متناظر a، n، p، t یا w را به دستور اضافه کنید\&. اگر \fIpattern\fR مشخص شده باشد، تنها توابعی که نامشان با الگو مطابقت دارد نشان داده می‌شوند\&. هر آرگومان اضافی، الگوی نام نوع داده است که با نام نوع آرگومان‌های اول، دوم و به همین ترتیبِ تابع مطابقت داده می‌شود\&. (توابع منطبق می‌توانند آرگومان‌های بیشتری نسبت به آنچه مشخص کرده‌اید داشته باشند؛ برای جلوگیری از آن، یک خط تیره \- را به عنوان آخرین \fIarg_pattern\fR بنویسید\&.) به‌طور پیش‌فرض، فقط اشیاء ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا تغییردهندهٔ S را ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده (expanded mode) نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، اطلاعات بیشتری درباره هر تابع نشان داده می‌شود، از جمله تغییرپذیری (volatility)، ایمنی اجرای موازی (parallel safety)، مالک، دسته‌بندی امنیتی، نشت‌ناپذیر بودن (leakproof)، امتیازات دسترسی، زبان، نام داخلی (تنها برای توابع C و داخلی)، و توضیحات\&. کد منبع یک تابع خاص را می‌توان با استفاده از \esf مشاهده کرد\&. .RE .PP \edF[x+] [ \fIpattern\fR ] .RS 4 پیکربندی‌های جستجوی متن (text search configurations) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها پیکربندی‌هایی که نامشان با الگو مطابقت دارد نمایش داده می‌شوند\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، توضیحات کامل هر پیکربندی شامل تجزیه‌کنندهٔ جستجوی متن (text search parser) زیرین و فهرست واژه‌نامه‌ها برای هر نوع نشانه (token type) تجزیه‌کننده نمایش داده می‌شود\&. .RE .PP \edFd[x+] [ \fIpattern\fR ] .RS 4 واژه‌نامه‌های جستجوی متن (text search dictionaries) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها واژه‌نامه‌هایی که نامشان با الگو مطابقت دارد نمایش داده می‌شوند\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، اطلاعات بیشتری درباره هر واژه‌نامهٔ انتخاب‌شده، از جمله الگوی جستجوی متن زیرین و مقادیر گزینه‌ها نمایش داده می‌شود\&. .RE .PP \edFp[x+] [ \fIpattern\fR ] .RS 4 تجزیه‌کننده‌های جستجوی متن (text search parsers) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، تنها تجزیه‌کننده‌هایی که نامشان با الگو مطابقت دارد نشان داده می‌شوند\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، شرح کاملی از هر تجزیه‌کننده شامل توابع زیرین و فهرست انواع نشانه‌های شناخته‌شده نمایش داده می‌شود\&. .RE .PP \edFt[x+] [ \fIpattern\fR ] .RS 4 الگوهای جستجوی متن (text search templates) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط الگوهایی که نامشان با الگو مطابقت دارد نمایش داده می‌شوند\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، اطلاعات بیشتری درباره هر الگو از جمله نام توابع زیرین نمایش داده می‌شود\&. .RE .PP \edg[Sx+] [ \fIpattern\fR ] .RS 4 نقش‌های پایگاه‌داده (database roles) را فهرست می‌کند\&. (از آنجا که مفاهیم \(lqusers\(rq و \(lqgroups\(rq در \(lqroles\(rq ادغام شده‌اند، این دستور اکنون معادل \edu است\&.) به‌طور پیش‌فرض، فقط نقش‌های ایجادشده توسط کاربر نشان داده می‌شوند؛ تغییردهندهٔ S را برای گنجاندن نقش‌های سیستمی ارائه دهید\&. اگر \fIpattern\fR مشخص شده باشد، فقط نقش‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، اطلاعات بیشتری درباره هر نقش نشان داده می‌شود؛ در حال حاضر این گزینه توضیح (comment) مربوط به هر نقش را اضافه می‌کند\&. .RE .PP \edl[x+] .RS 4 این یک نام مستعار برای \fB\elo_list\fR است که فهرستی از اشیاء بزرگ (large objects) را نشان می‌دهد\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، هر شیء بزرگ همراه با مجوزهای مربوط به آن (در صورت وجود) فهرست می‌شود\&. .RE .PP \edL[Sx+] [ \fIpattern\fR ] .RS 4 زبان‌های رویه‌ای (procedural languages) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط زبان‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. به‌طور پیش‌فرض، فقط زبان‌های ایجادشده توسط کاربر نشان داده می‌شوند؛ تغییردهندهٔ S را برای گنجاندن اشیاء سیستمی ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، هر زبان همراه با گرداننده فراخوانی (call handler)، اعتبارسنج (validator)، امتیازات دسترسی، و اینکه آیا یک شیء سیستمی است یا خیر فهرست می‌شود\&. .RE .PP \edn[Sx+] [ \fIpattern\fR ] .RS 4 طرحواره‌ها یا اسکیماها (فضاهای نام) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط طرحواره‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. به‌طور پیش‌فرض، فقط اشیاء ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا تغییردهندهٔ S را ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، هر شیء همراه با مجوزها و توضیحات مربوطه‌اش (در صورت وجود) فهرست می‌شود\&. .RE .PP \edo[Sx+] [ \fIpattern\fR [ \fIarg_pattern\fR [ \fIarg_pattern\fR ] ] ] .RS 4 عملگرها را همراه با نوع عملوندها و نتایجشان فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط عملگرهایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر یک \fIarg_pattern\fR مشخص شده باشد، فقط عملگرهای پیشوندی که نام نوع آرگومان راست آن‌ها با آن الگو مطابقت دارد فهرست می‌شوند\&. اگر دو \fIarg_pattern\fR مشخص شده باشد، فقط عملگرهای دودویی که نام نوع آرگومان‌های آن‌ها با آن الگوها مطابقت دارد فهرست می‌شوند\&. (به عنوان جایگزین، برای آرگومان استفاده‌نشدهٔ یک عملگر یکانی، یک \- بنویسید\&.) به‌طور پیش‌فرض، فقط اشیاء ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا تغییردهندهٔ S را ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، اطلاعات بیشتری درباره هر عملگر نشان داده می‌شود، از جمله نام تابع زیرین و نشت‌ناپذیر بودن (leakproof) آن\&. .RE .PP \edO[Sx+] [ \fIpattern\fR ] .RS 4 ترتیب‌های تطبیق (collations) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط ترتیب‌های تطبیقی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. به‌طور پیش‌فرض، فقط اشیاء ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا تغییردهندهٔ S را ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، هر ترتیب تطبیق همراه با توضیحات مرتبط با آن (در صورت وجود) فهرست می‌شود\&. توجه داشته باشید که فقط ترتیب‌های تطبیقِ قابل استفاده با کدگذاری پایگاه‌دادهٔ فعلی نمایش داده می‌شوند، بنابراین نتایج ممکن است در پایگاه‌های دادهٔ مختلف از یک نصب یکسان متفاوت باشد\&. .RE .PP \edp[Sx] [ \fIpattern\fR ] .RS 4 جدول‌ها، نماها (views) و دنباله‌ها (sequences) را همراه با امتیازات دسترسی مربوطه‌شان فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط جدول‌ها، نماها و دنباله‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. به‌طور پیش‌فرض فقط اشیاء ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا تغییردهندهٔ S را ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. .sp دستورهای \fBGRANT\fR و \fBREVOKE\fR برای تعیین امتیازات دسترسی استفاده می‌شوند\&. معنای نمایش امتیازات در بخش\ \&5.8 توضیح داده شده است\&. .RE .PP \edP[itnx+] [ \fIpattern\fR ] .RS 4 رابطه‌های افرازبندی‌شده (partitioned relations) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شده باشد، فقط مدخل‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. تغییردهنده‌های t (جدول‌ها) و i (شاخص‌ها) می‌توانند به دستور افزوده شوند و نوع رابطه‌ها را برای فهرست کردن فیلتر کنند\&. به‌طور پیش‌فرض، جدول‌ها و شاخص‌های افرازبندی‌شده فهرست می‌شوند\&. .sp اگر تغییردهندهٔ n (\(lqnested\(rq) استفاده شود، یا یک الگو مشخص شده باشد، آن‌گاه رابطه‌های افرازبندی‌شده غیرریشه گنجانده می‌شوند، و ستونی نمایش داده می‌شود که والد هر رابطهٔ افرازبندی‌شده را نشان می‌دهد\&. .sp اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به نام دستور ضمیمه شود، مجموع اندازهٔ پارتیشن‌های هر رابطه نیز همراه با توضیحات رابطه نمایش داده می‌شود\&. اگر n با + ترکیب شود، دو اندازه نشان داده می‌شود: یکی شامل اندازه کل پارتیشن‌های برگ مستقیماً متصل، و دیگری اندازه کل همه پارتیشن‌ها از جمله زیرپارتیشن‌های غیرمستقیم متصل را نمایش می‌دهد\&. .RE.PP \edrds[x] [ \fIrole\-pattern\fR [ \fIdatabase\-pattern\fR ] ] .RS 4 تنظیمات پیکربندی تعریف‌شده را فهرست می‌کند\&. این تنظیمات می‌توانند مختص به نقش (role\-specific)، مختص به پایگاه‌داده (database\-specific)، یا هر دو باشند\&. \fIrole\-pattern\fR و \fIdatabase\-pattern\fR به ترتیب برای انتخاب نقش‌ها و پایگاه‌های دادهٔ مشخص جهت فهرست شدن به کار می‌روند\&. در صورت حذف یا در صورتی که * مشخص شود، همهٔ تنظیمات، از جمله مواردی که به ترتیب مختص به نقش یا مختص به پایگاه‌داده نیستند، فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده (expanded mode) نمایش داده می‌شوند\&. .sp دستورهای \fBALTER ROLE\fR و \fBALTER DATABASE\fR برای تعریف تنظیمات پیکربندی به‌ازای هر نقش و به‌ازای هر پایگاه‌داده به کار می‌روند\&. .RE .PP \edrg[Sx] [ \fIpattern\fR ] .RS 4 اطلاعات مربوط به هر عضویت نقش اعطاشده را به همراه گزینه‌های تخصیص‌یافته (ADMIN، INHERIT و/یا SET) و اعطاکننده (grantor) فهرست می‌کند\&. برای کسب اطلاعات دربارهٔ عضویت‌های نقش، دستور \fBGRANT\fR را ببینید\&. .sp به‌طور پیش‌فرض، فقط اعطاها به نقش‌های ایجادشده توسط کاربر نشان داده می‌شوند؛ تغییردهندهٔ S را برای گنجاندن نقش‌های سیستمی اضافه کنید\&. اگر \fIpattern\fR مشخص شود، تنها اعطاها به نقش‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. .RE .PP \edRp[x+] [ \fIpattern\fR ] .RS 4 انتشارهای همانندسازی (replication publications) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شود، تنها انتشارهایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، جدول‌ها و طرحواره‌های (schemas) مرتبط با هر انتشار نیز نشان داده می‌شوند\&. .RE .PP \edRs[x+] [ \fIpattern\fR ] .RS 4 اشتراک‌های همانندسازی (replication subscriptions) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شود، تنها اشتراک‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، ویژگی‌های بیشتری از اشتراک‌ها نشان داده می‌شوند\&. .RE .PP \edT[Sx+] [ \fIpattern\fR ] .RS 4 انواع داده را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شود، تنها انواعی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور افزوده شود، هر نوع همراه با نام و اندازهٔ داخلی آن، مقادیر مجاز در صورتی که یک نوع enum باشد، و مجوزهای مرتبط با آن فهرست می‌شود\&. به‌طور پیش‌فرض، تنها اشیاء ایجادشده توسط کاربر نشان داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا تغییردهندهٔ S را ارائه دهید\&. .RE .PP \edu[Sx+] [ \fIpattern\fR ] .RS 4 نقش‌های پایگاه‌داده را فهرست می‌کند\&. (از آنجا که مفاهیم \(lqکاربران\(rq و \(lqگروه‌ها\(rq در \(lqنقش‌ها\(rq ادغام شده‌اند، این دستور اکنون معادل \edg است\&.) به‌طور پیش‌فرض، تنها نقش‌های ایجادشده توسط کاربر نشان داده می‌شوند؛ تغییردهندهٔ S را برای گنجاندن نقش‌های سیستمی اضافه کنید\&. اگر \fIpattern\fR مشخص شود، تنها نقش‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، اطلاعات بیشتری دربارهٔ هر نقش نشان داده می‌شود؛ در حال حاضر این گزینه توضیح (comment) مربوط به هر نقش را اضافه می‌کند\&. .RE .PP \edx[x+] [ \fIpattern\fR ] .RS 4 افزونه‌های نصب‌شده را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شود، تنها افزونه‌هایی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، تمام اشیاء متعلق به هر افزونهٔ منطبق فهرست می‌شوند\&. .RE .PP \edX[x] [ \fIpattern\fR ] .RS 4 آمارهای گسترش‌یافته (extended statistics) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شود، تنها آمارهای گسترش‌یافته‌ای که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. .sp وضعیت هر نوع از آمارهای گسترش‌یافته در ستونی به نام همان نوع آمار (مانند Ndistinct) نشان داده می‌شود\&. مقدار defined به این معنی است که هنگام ایجاد آمار درخواست شده بوده است، و مقدار NULL به این معنی است که درخواست نشده بوده است\&. اگر مایلید بدانید که آیا \fBANALYZE\fR اجرا شده و آمارها در دسترس برنامه‌ریز (planner) هستند یا خیر، می‌توانید از pg_stats_ext استفاده کنید\&. .RE .PP \edy[x+] [ \fIpattern\fR ] .RS 4 تریگرهای رویداد (event triggers) را فهرست می‌کند\&. اگر \fIpattern\fR مشخص شود، تنها تریگرهای رویدادی که نامشان با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، هر شیء به همراه توضیحات مرتبط با آن فهرست می‌شود\&. .RE .PP \ee یا \eedit [ \fIfilename\fR ] [ \fIline_number\fR ] .RS 4 اگر \fIfilename\fR مشخص شود، فایل ویرایش می‌شود؛ پس از خروج از ویرایشگر، محتوای فایل در بافر پرسمان جاری کپی می‌شود\&. اگر هیچ \fIfilename\fR داده نشود، بافر پرسمان جاری به یک فایل موقت کپی شده که سپس به همان شیوه ویرایش می‌شود\&. یا، در صورتی که بافر پرسمان جاری خالی باشد، آخرین پرسمان اجراشده در یک فایل موقت کپی شده و به همان شیوه ویرایش می‌شود\&. .sp اگر فایلی یا پرسمان قبلی را ویرایش کنید، و بدون تغییر دادن فایل از ویرایشگر خارج شوید، بافر پرسمان پاک می‌شود\&. در غیر این صورت، محتوای جدید بافر پرسمان طبق قواعد معمول psql و با رفتار با کل بافر به عنوان یک خط واحد، مجدداً تجزیه می‌شود\&. هر پرسمانِ کامل بلافاصله اجرا می‌شود؛ به این معنی که اگر بافر پرسمان حاوی یک نقطه ویرگول (semicolon) باشد یا با آن پایان یابد، همه چیز تا آن نقطه اجرا شده و از بافر پرسمان حذف می‌شود\&. هر آنچه در بافر پرسمان باقی بماند دوباره نمایش داده می‌شود\&. نقطه ویرگول یا \eg را برای ارسال آن تایپ کنید، یا \er را برای لغو آن از طریق پاک کردن بافر پرسمان وارد نمایید\&. .sp رفتار با بافر به عنوان یک تک‌خط، عمدتاً بر متادستورها تأثیر می‌گذارد: هر آنچه پس از یک متادستور در بافر قرار گیرد به عنوان آرگومان(های) آن متادستور در نظر گرفته می‌شود، حتی اگر در چندین خط گسترده شده باشد\&. (بنابراین نمی‌توانید از این طریق اسکریپت‌هایی با متادستور بسازید\&. برای این کار از \fB\ei\fR استفاده کنید\&.) .sp اگر شمارهٔ خط مشخص شده باشد، psql مکان‌نما را روی خط مشخص‌شده از فایل یا بافر پرسمان قرار می‌دهد\&. توجه داشته باشید که اگر یک تک‌آرگومانِ کاملاً عددی داده شود، psql آن را شمارهٔ خط فرض می‌کند، نه نام فایل\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای نحوهٔ پیکربندی و سفارشی‌سازی ویرایشگر خود، بخش Environment در ادامه را ببینید\&. .sp .5v .RE .RE .PP \eecho \fItext\fR [ \&.\&.\&. ] .RS 4 آرگومان‌های ارزیابی‌شده را در خروجی استاندارد چاپ می‌کند که با فاصله از هم جدا شده و به دنبال آن‌ها یک خط جدید قرار می‌گیرد\&. این دستور می‌تواند برای درج اطلاعات در بین خروجی اسکریپت‌ها مفید باشد\&. به عنوان مثال: .sp .if n \{\ .RS 4 .\} .nf => \fB\eecho `date`\fR Tue Oct 26 21:40:57 CEST 1999 .fi .if n \{\ .RE .\} .sp اگر نخستین آرگومان یک \-n بدون نقل‌قول باشد، خط جدید انتهایی نوشته نمی‌شود (و آرگومان نخست نیز نوشته نمی‌شود)\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br اگر از دستور \fB\eo\fR برای تغییر مسیر خروجی پرسمان خود استفاده می‌کنید، ممکن است بخواهید به جای این دستور از \fB\eqecho\fR استفاده کنید\&. همچنین \fB\ewarn\fR را ببینید\&. .sp .5v .RE .RE.PP \eef [ \fIfunction_description\fR [ \fIline_number\fR ] ] .RS 4 این دستور تعریف تابع یا رویهٔ (procedure) مشخص‌شده را در قالب یک دستور \fBCREATE OR REPLACE FUNCTION\fR یا \fBCREATE OR REPLACE PROCEDURE\fR واکشی کرده و برای ویرایش باز می‌کند\&. ویرایش به همان روش دستور \eedit انجام می‌شود\&. اگر ویرایشگر را بدون ذخیره کردن ترک کنید، عبارت نادیده گرفته می‌شود\&. اگر ذخیره کرده و خارج شوید، در صورتی که یک نقطه‌ویرگول (semicolon) به آن اضافه کرده باشید، دستور به‌روزرسانی‌شده بی‌درنگ اجرا می‌شود\&. در غیر این صورت دوباره نمایش داده می‌شود؛ برای ارسال آن یک نقطه‌ویرگول یا \eg را وارد کنید، یا برای لغو آن \er را بزنید\&. .sp تابع هدف را می‌توان تنها با نام، یا با نام و آرگومان‌ها، برای نمونه foo(integer, text) مشخص کرد\&. اگر بیش از یک تابع با نام یکسان وجود داشته باشد، نوع آرگومان‌ها باید ذکر شود\&. .sp اگر هیچ تابعی مشخص نشود، یک قالب خالی \fBCREATE FUNCTION\fR برای ویرایش ارائه می‌شود\&. .sp اگر شمارهٔ خط تعیین شده باشد، psql مکان‌نما را در خط مشخص‌شده از بدنهٔ تابع قرار می‌دهد\&. (توجه داشته باشید که بدنهٔ تابع معمولاً در خط اول فایل آغاز نمی‌شود\&.) .sp برخلاف اکثر فرادستورهای دیگر، تمام دنبالهٔ خط همواره به عنوان آرگومان(های) \fB\eef\fR در نظر گرفته می‌شود و هیچ‌گونه درونیابی متغیر یا بسط نقل‌قول معکوس روی آرگومان‌ها انجام نمی‌شود\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای چگونگی پیکربندی و سفارشی‌سازی ویرایشگر خود، بخش «محیط» را در ادامه ببینید\&. .sp .5v .RE .RE .PP \eencoding [ \fIencoding\fR ] .RS 4 کدبندی (encoding) مجموعه نویسه‌های کلاینت را تنظیم می‌کند\&. بدون آرگومان، این دستور کدبندی فعلی را نشان می‌دهد\&. .RE .PP \eerrverbose .RS 4 جدیدترین پیام خطای سرور را با بیشترین جزئیات تکرار می‌کند، گویی \fIVERBOSITY\fR روی verbose و \fISHOW_CONTEXT\fR روی always تنظیم شده باشد\&. .RE .PP \eev [ \fIview_name\fR [ \fIline_number\fR ] ] .RS 4 این دستور تعریف نمای (view) مشخص‌شده را در قالب یک دستور \fBCREATE OR REPLACE VIEW\fR واکشی کرده و برای ویرایش باز می‌کند\&. ویرایش به همان روش دستور \eedit انجام می‌شود\&. اگر ویرایشگر را بدون ذخیره کردن ترک کنید، عبارت نادیده گرفته می‌شود\&. اگر ذخیره کرده و خارج شوید، در صورتی که یک نقطه‌ویرگول به آن افزوده باشید، دستور به‌روزرسانی‌شده بی‌درنگ اجرا می‌شود\&. در غیر این صورت دوباره نمایش داده می‌شود؛ برای ارسال آن یک نقطه‌ویرگول یا \eg را وارد کنید، یا برای لغو آن \er را بزنید\&. .sp اگر هیچ نمایی مشخص نشود، یک قالب خالی \fBCREATE VIEW\fR برای ویرایش ارائه می‌شود\&. .sp اگر شمارهٔ خط مشخص شده باشد، psql مکان‌نما را در خط مشخص‌شده از تعریف نما قرار می‌دهد\&. .sp برخلاف بیشتر فرادستورهای دیگر، تمام دنبالهٔ خط همواره به عنوان آرگومان(های) \fB\eev\fR در نظر گرفته می‌شود و هیچ‌گونه درونیابی متغیر یا بسط نقل‌قول معکوس روی آرگومان‌ها انجام نمی‌شود\&. .RE .PP \ef [ \fIstring\fR ] .RS 4 جداکنندهٔ فیلد را برای خروجی ترازنشدهٔ پرس‌وجو تنظیم می‌کند\&. مقدار پیش‌فرض خط عمودی (|) است\&. این دستور معادل \fB\epset fieldsep\fR است\&. .RE .PP \eg [ (\fIoption\fR=\fIvalue\fR [\&.\&.\&.]) ] [ \fIfilename\fR ] .br \eg [ (\fIoption\fR=\fIvalue\fR [\&.\&.\&.]) ] [ |\fIcommand\fR ] .RS 4 بافر پرس‌وجوی فعلی را برای اجرا به سرور ارسال می‌کند\&. .sp اگر پس از \eg پرانتز قرار گیرد، نشان‌دهندهٔ فهرستی از بندهای گزینه‌های قالب‌بندی \fIoption\fR=\fIvalue\fR است که با فاصله از هم جدا شده‌اند؛ این بندها همانند دستورهای \epset \fIoption\fR \fIvalue\fR تفسیر می‌شوند، اما تنها برای مدت‌زمان اجرای این پرس‌وجو معتبر خواهند بود\&. در این فهرست، وجود فاصله در اطراف علامت‌های = مجاز نیست، اما بین بندهای گزینه‌ها الزامی است\&. اگر =\fIvalue\fR حذف شود، \fIoption\fR نام‌برده به همان شیوه‌ای تغییر می‌کند که در دستور \epset \fIoption\fR بدون \fIvalue\fR صریح عمل می‌شود\&. .sp اگر آرگومان \fIfilename\fR یا |\fIcommand\fR داده شود، خروجی پرس‌وجو به جای نمایش معمول، در فایل مشخص‌شده نوشته می‌شود یا به دستور شل داده‌شده هدایت (pipe) می‌گردد\&. نوشتن در فایل یا ارسال به دستور تنها در صورتی صورت می‌گیرد که پرس‌وجو با موفقیت صفر یا چند تاپل (tuple) برگرداند، نه در مواقعی که پرس‌وجو ناموفق باشد یا یک دستور SQL باشد که داده‌ای بازنمی‌گرداند\&. .sp اگر بافر پرس‌وجوی فعلی خالی باشد، پرس‌وجوی ارسال‌شدهٔ اخیر دوباره اجرا می‌شود\&. به جز این مورد، دستور \eg بدون آرگومان اساساً معادل با یک نقطه‌ویرگول است\&. همراه با آرگومان‌ها، \eg یک جایگزین \(lqیک‌باره\(rq برای دستور \fB\eo\fR فراهم می‌سازد و افزون بر آن، امکان تغییر یک‌بارهٔ گزینه‌های قالب‌بندی خروجی را که معمولاً با \epset تنظیم می‌شوند فراهم می‌کند\&. .sp هنگامی که آخرین آرگومان با | آغاز شود، تمام دنبالهٔ خط به عنوان \fIcommand\fR برای اجرا تلقی می‌شود و هیچ‌گونه درونیابی متغیر یا بسط نقل‌قول معکوس روی آن انجام نمی‌شود\&. باقی‌ماندهٔ خط عینا به شل منتقل خواهد شد\&. .RE .PP \egdesc .RS 4 توصیف (یعنی نام ستون‌ها و نوع داده‌ها) نتیجهٔ بافر پرس‌وجوی فعلی را نمایش می‌دهد\&. پرس‌وجو در عمل اجرا نمی‌شود؛ با این حال، چنانچه دارای نوعی خطای نگارشی (syntax error) باشد، آن خطا به شیوهٔ معمول گزارش داده می‌شود\&. .sp اگر بافر پرس‌وجوی فعلی خالی باشد، پرس‌وجوی ارسال‌شدهٔ اخیر توصیف می‌شود\&. .RE .PP \egetenv \fIpsql_var\fR \fIenv_var\fR .RS 4 مقدار متغیر محیطی \fIenv_var\fR را دریافت کرده و آن را به متغیر psql با نام \fIpsql_var\fR اختصاص می‌دهد\&. اگر \fIenv_var\fR در محیط فرایند psql تعریف نشده باشد، \fIpsql_var\fR تغییری نخواهد کرد\&. مثال: .sp .if n \{\ .RS 4 .\} .nf => \fB\egetenv home HOME\fR => \fB\eecho :home\fR /home/postgres .fi .if n \{\ .RE .\} .RE .PP \egexec .RS 4 بافر پرس‌وجوی فعلی را به سرور می‌فرستد، سپس با هر ستون از هر سطر خروجی پرس‌وجو (در صورت وجود) به عنوان یک دستور SQL که باید اجرا شود رفتار می‌کند\&. برای نمونه، جهت ایجاد یک نمایه (index) روی هر ستون از my_table: .sp .if n \{\ .RS 4 .\} .nf => \fBSELECT format(\*(Aqcreate index on my_table(%I)\*(Aq, attname)\fR \-> \fBFROM pg_attribute\fR \-> \fBWHERE attrelid = \*(Aqmy_table\*(Aq::regclass AND attnum > 0\fR \-> \fBORDER BY attnum\fR \-> \fB\egexec\fR CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX .fi .if n \{\ .RE .\} .sp پرس‌وجوهای تولیدشده به ترتیبی که سطرها بازگردانده می‌شوند، و از چپ به راست در هر سطر در صورتی که بیش از یک ستون وجود داشته باشد، اجرا می‌شوند\&. فیلدهای NULL نادیده گرفته می‌شوند\&. پرس‌وجوهای تولیدشده دقیقاً و به شکل عین عبارت برای پردازش به سرور ارسال می‌شوند، بنابراین نمی‌توانند فرادستورهای psql بوده یا حاوی ارجاعات متغیر psql باشند\&. در صورت بروز خطا در هر پرس‌وجوی جداگانه، اجرای سایر پرس‌وجوها ادامه می‌یابد مگر آنکه \fION_ERROR_STOP\fR تنظیم شده باشد\&. اجرای هر پرس‌وجو تابع پردازش \fIECHO\fR است\&. (تنظیم \fIECHO\fR روی all یا queries هنگام استفاده از \fB\egexec\fR غالباً توصیه می‌شود\&.) ثبت وقایع پرس‌وجو، حالت تک‌مرحله‌ای، زمان‌بندی و سایر قابلیت‌های اجرای پرس‌وجو روی هر پرس‌وجوی تولیدشده نیز اعمال خواهند شد\&. .sp اگر بافر پرس‌وجوی فعلی خالی باشد، پرس‌وجوی ارسال‌شدهٔ اخیر دوباره اجرا می‌شود\&. .RE.PP \egset [ \fIprefix\fR ] .RS 4 بافر پرس‌وجوی جاری را به سرور ارسال می‌کند و خروجی پرس‌وجو را در متغیرهای psql ذخیره می‌کند (بخش Variables در زیر را ببینید)\&. پرس‌وجوی مورد اجرا باید دقیقاً یک سطر بازگرداند\&. هر ستون سطر در یک متغیر جداگانه هم‌نام با آن ستون ذخیره می‌شود\&. برای مثال: .sp .if n \{\ .RS 4 .\} .nf => \fBSELECT \*(Aqhello\*(Aq AS var1, 10 AS var2\fR \-> \fB\egset\fR => \fB\eecho :var1 :var2\fR hello 10 .fi .if n \{\ .RE .\} .sp اگر یک \fIprefix\fR مشخص کنید، آن رشته به ابتدای نام‌های ستون‌های پرس‌وجو افزوده می‌شود تا نام متغیرهای مورد استفاده ایجاد شوند: .sp .if n \{\ .RS 4 .\} .nf => \fBSELECT \*(Aqhello\*(Aq AS var1, 10 AS var2\fR \-> \fB\egset result_\fR => \fB\eecho :result_var1 :result_var2\fR hello 10 .fi .if n \{\ .RE .\} .sp اگر نتیجهٔ یک ستون NULL باشد، متغیر متناظر به‌جای مقداردهی، بازنشانی (unset) می‌شود\&. .sp اگر پرس‌وجو با شکست مواجه شود یا دقیقاً یک سطر بازنگرداند، هیچ متغیری تغییر نمی‌کند\&. .sp اگر بافر پرس‌وجوی جاری خالی باشد، در عوض پرس‌وجویی که اخیراً ارسال شده بود دوباره اجرا می‌شود\&. .RE .PP \egx [ (\fIoption\fR=\fIvalue\fR [\&.\&.\&.]) ] [ \fIfilename\fR ] .br \egx [ (\fIoption\fR=\fIvalue\fR [\&.\&.\&.]) ] [ |\fIcommand\fR ] .RS 4 \egx معادل \eg است، با این تفاوت که حالت خروجی گسترش‌یافته (expanded) را برای این پرس‌وجو اجباری می‌کند، گویی که expanded=on در فهرست گزینه‌های \epset گنجانده شده باشد\&. همچنین \ex را ببینید\&. .RE .PP \eh or \ehelp [ \fIcommand\fR ] .RS 4 راهنمای نحو (syntax) دستور SQL مشخص‌شده را ارائه می‌دهد\&. اگر \fIcommand\fR مشخص نشده باشد، psql تمام دستوراتی را که راهنمای نحو برای آن‌ها موجود است فهرست می‌کند\&. اگر \fIcommand\fR یک ستاره (*) باشد، راهنمای نحو تمام دستورات SQL نشان داده می‌شود\&. .sp برخلاف بیشتر فرادستورهای دیگر، تمام باقی‌ماندهٔ خط همیشه به عنوان آرگومان(های) \fB\ehelp\fR در نظر گرفته می‌شود، و نه جای‌گذاری متغیرها و نه بسط بک‌تیک در آرگومان‌ها انجام نمی‌شوند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای ساده‌تر کردن تایپ، نیازی نیست دستوراتی که از چند کلمه تشکیل شده‌اند درون نقل‌قول قرار گیرند\&. بنابراین نوشتن \fB\ehelp alter table\fR کاملاً مجاز است\&. .sp .5v .RE .RE .PP \eH or \ehtml .RS 4 قالب خروجی پرس‌وجوی HTML را فعال می‌کند\&. اگر قالب HTML از قبل فعال باشد، به قالب متنی تراز‌شدهٔ پیش‌فرض برگردانده می‌شود\&. این دستور برای سازگاری و سهولت کار است، اما برای تنظیم سایر گزینه‌های خروجی، \fB\epset\fR را ببینید\&. .RE .PP \ei or \einclude \fIfilename\fR .RS 4 ورودی را از فایل \fIfilename\fR می‌خواند و آن را طوری اجرا می‌کند که گویی روی صفحه‌کلید تایپ شده است\&. .sp اگر \fIfilename\fR برابر با \- (خط پیوند) باشد، ورودی استاندارد تا رسیدن به نشانگر EOF یا فرادستور \fB\eq\fR خوانده می‌شود\&. از این قابلیت می‌توان برای آمیختن ورودی تعاملی با ورودی فایل‌ها استفاده کرد\&. توجه داشته باشید که رفتار Readline تنها در صورتی استفاده خواهد شد که در بیرونی‌ترین سطح فعال باشد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br اگر می‌خواهید خطوط را هنگام خوانده شدن روی صفحه مشاهده کنید، باید متغیر \fIECHO\fR را روی all تنظیم کنید\&. .sp .5v .RE .RE .PP \eif \fIexpression\fR .br \eelif \fIexpression\fR .br \eelse .br \eendif .RS 4 این گروه از دستورات، بلوک‌های شرطی تودرتو را پیاده‌سازی می‌کنند\&. یک بلوک شرطی باید با یک \fB\eif\fR شروع شده و با یک \fB\eendif\fR پایان یابد\&. در این بین می‌تواند هر تعداد بند \fB\eelif\fR وجود داشته باشد، که می‌تواند به‌صورت اختیاری با یک بند تکی \fB\eelse\fR دنبال شود\&. پرس‌وجوهای عادی و انواع دیگر دستورات بک‌اسلش می‌توانند (و معمولاً همین‌گونه است) بین دستوراتی که یک بلوک شرطی را تشکیل می‌دهند ظاهر شوند\&. .sp دستورات \fB\eif\fR و \fB\eelif\fR آرگومان(های) خود را خوانده و آن‌ها را به عنوان یک عبارت بولی ارزیابی می‌کنند\&. اگر عبارت مقدار true به دست دهد، پردازش به‌طور عادی ادامه می‌یابد؛ در غیر این صورت، خطوط نادیده گرفته می‌شوند تا زمانی که یک \fB\eelif\fR، \fB\eelse\fR یا \fB\eendif\fR مطابق پیدا شود\&. هنگامی که یک بررسی \fB\eif\fR یا \fB\eelif\fR موفق شد، آرگومان‌های دستورات \fB\eelif\fR بعدی در همان بلوک ارزیابی نمی‌شوند بلکه به عنوان false در نظر گرفته می‌شوند\&. خطوط پس از یک \fB\eelse\fR تنها در صورتی پردازش می‌شوند که هیچ \fB\eif\fR یا \fB\eelif\fR مطابق قبلی موفق نشده باشد\&. .sp آرگومان \fIexpression\fR یک دستور \fB\eif\fR یا \fB\eelif\fR درست مانند هر آرگومان دستور بک‌اسلش دیگری، مشمول جای‌گذاری متغیرها و بسط بک‌تیک می‌شود\&. پس از آن، مانند مقدار یک متغیر گزینهٔ روشن/خاموش (on/off) ارزیابی می‌شود\&. بنابراین مقدار معتبر، هر تطابق بدون ابهام و غیرحساس به بزرگی و کوچکی حروف برای یکی از این موارد است: true، false، 1، 0، on، off، yes، no\&. برای نمونه، t، T و tR همگی به عنوان true در نظر گرفته خواهند شد\&. .sp عبارت‌هایی که به‌درستی به true یا false ارزیابی نشوند، یک هشدار تولید کرده و با آن‌ها مانند false برخورد می‌شود\&. .sp خطوطی که رد می‌شوند، برای شناسایی پرس‌وجوها و دستورات بک‌اسلش به‌طور عادی تجزیه می‌شوند، اما پرس‌وجوها به سرور فرستاده نمی‌شوند و دستورات بک‌اسلش به جز دستورات شرطی (\fB\eif\fR، \fB\eelif\fR، \fB\eelse\fR، \fB\eendif\fR) نادیده گرفته می‌شوند\&. دستورات شرطی فقط برای تودرتویی معتبر بررسی می‌شوند\&. ارجاعات به متغیرها در خطوط ردشده بسط داده نمی‌شوند و بسط بک‌تیک نیز انجام نمی‌شود\&. .sp همهٔ دستورات بک‌اسلش یک بلوک شرطی داده‌شده باید در همان فایل منبع قرار گیرند\&. اگر در فایل ورودی اصلی یا یک فایل واردشده با \fB\einclude\fR پیش از بسته شدن تمام بلوک‌های \fB\eif\fR محلی، به EOF برسد، آنگاه psql یک خطا صادر خواهد کرد\&. .sp در اینجا یک مثال آمده است: .sp .if n \{\ .RS 4 .\} .nf \-\- check for the existence of two separate records in the database and store \-\- the results in separate psql variables SELECT EXISTS(SELECT 1 FROM customer WHERE customer_id = 123) as is_customer, EXISTS(SELECT 1 FROM employee WHERE employee_id = 456) as is_employee \egset \eif :is_customer SELECT * FROM customer WHERE customer_id = 123; \eelif :is_employee \eecho \*(Aqis not a customer but is an employee\*(Aq SELECT * FROM employee WHERE employee_id = 456; \eelse \eif yes \eecho \*(Aqnot a customer or employee\*(Aq \eelse \eecho \*(Aqthis will never print\*(Aq \eendif \eendif .fi .if n \{\ .RE .\} .RE.PP \eir یا \einclude_relative \fIfilename\fR .RS 4 دستور \eir مشابه \ei است، اما نام فایل‌های نسبی را به شیوه متفاوتی برطرف می‌کند\&. هنگام اجرا در حالت تعاملی، هر دو دستور رفتار یکسانی دارند\&. با این حال، هنگامی که از درون یک اسکریپت فراخوانی شود، \eir نام فایل‌ها را نسبت به دایرکتوری محل قرارگیری اسکریپت تفسیر می‌کند، نه دایرکتوری کاری جاری\&. .RE .PP \el[x+] یا \elist[x+] [ \fIpattern\fR ] .RS 4 پایگاه‌های داده موجود در سرور را فهرست کرده و نام‌ها، مالکان، کدبندی‌های مجموعه نویسه و امتیازات دسترسی آن‌ها را نشان می‌دهد\&. اگر \fIpattern\fR مشخص شده باشد، تنها پایگاه‌های داده‌ای که نام آن‌ها با الگو مطابقت دارد فهرست می‌شوند\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، اندازه پایگاه‌های داده، tablespaceهای پیش‌فرض و توضیحات نیز نمایش داده می‌شوند\&. اطلاعات اندازه برای پایگاه‌های داده‌ای در دسترس است که کاربر جاری روی آن‌ها امتیاز CONNECT داشته باشد، یا اینکه کاربر جاری یک مدیر سیستم (superuser) بوده یا دارای امتیازات نقش pg_read_all_stats باشد\&. .RE .PP \elo_export \fIloid\fR \fIfilename\fR .RS 4 شیء بزرگ با OID \fIloid\fR را از پایگاه داده خوانده و آن را در \fIfilename\fR می‌نویسد\&. توجه داشته باشید که این دستور تفاوت ظریفی با تابع سمت سرور \fBlo_export\fR دارد، چرا که آن تابع با مجوزهای کاربری که سرور پایگاه داده با آن اجرا می‌شود و روی سیستم‌فایل سرور عمل می‌کند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای یافتن OID شیء بزرگ، از \fB\elo_list\fR استفاده کنید\&. .sp .5v .RE .RE .PP \elo_import \fIfilename\fR [ \fIcomment\fR ] .RS 4 فایل را در یک شیء بزرگ PostgreSQL ذخیره می‌کند\&. در صورت تمایل، یادداشت داده‌شده را به شیء اختصاص می‌دهد\&. مثال: .sp .if n \{\ .RS 4 .\} .nf foo=> \fB\elo_import \*(Aq/home/peter/pictures/photo\&.xcf\*(Aq \*(Aqa picture of me\*(Aq\fR lo_import 152801 .fi .if n \{\ .RE .\} .sp پاسخ نشان می‌دهد که شیء بزرگ شناسه شیء 152801 را دریافت کرده است، که می‌تواند در آینده برای دسترسی به شیء بزرگ تازه ایجادشده استفاده شود\&. برای خوانایی بهتر، توصیه می‌شود همیشه یک یادداشت خوانا برای انسان به هر شیء اختصاص دهید\&. هم OIDها و هم یادداشت‌ها با دستور \fB\elo_list\fR قابل مشاهده هستند\&. .sp توجه داشته باشید که این دستور تفاوت ظریفی با دستور سمت سرور \fBlo_import\fR دارد زیرا به عنوان کاربر محلی روی سیستم‌فایل محلی عمل می‌کند، نه به عنوان کاربر و روی سیستم‌فایل سرور\&. .RE .PP \elo_list[x+] .RS 4 فهرستی از تمام اشیاء بزرگ PostgreSQL که در حال حاضر در پایگاه داده ذخیره شده‌اند را به همراه هرگونه یادداشت ارائه‌شده برای آن‌ها نمایش می‌دهد\&. اگر x به انتهای نام دستور اضافه شود، نتایج در حالت گسترده نمایش داده می‌شوند\&. اگر + به انتهای نام دستور اضافه شود، هر شیء بزرگ به همراه مجوزهای مرتبط با آن (در صورت وجود) فهرست می‌شود\&. .RE .PP \elo_unlink \fIloid\fR .RS 4 شیء بزرگ با OID \fIloid\fR را از پایگاه داده حذف می‌کند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای یافتن OID شیء بزرگ، از \fB\elo_list\fR استفاده کنید\&. .sp .5v .RE .RE .PP \eo یا \eout [ \fIfilename\fR ] .br \eo یا \eout [ |\fIcommand\fR ] .RS 4 ترتیبی می‌دهد که نتایج پرس‌وجوهای آینده در فایل \fIfilename\fR ذخیره شوند یا از طریق لوله به دستور شل \fIcommand\fR هدایت شوند\&. اگر هیچ آرگومانی مشخص نشود، خروجی پرس‌وجو به خروجی استاندارد بازنشانی می‌شود\&. .sp اگر آرگومان با | آغاز شود، تمام باقیمانده خط به عنوان \fIcommand\fR جهت اجرا در نظر گرفته می‌شود و هیچ‌یک از فرایندهای جایگزینی متغیر یا بسط بک‌تیک در آن صورت نمی‌گیرد\&. باقیمانده خط صرفاً به صورت لفظی به شل ارسال می‌شود\&. .sp \(lqنتایج پرس‌وجو\(rq شامل همه جدول‌ها، پاسخ‌های دستور و اعلان‌های دریافت‌شده از سرور پایگاه داده، و همچنین خروجی دستورهای مختلف بک‌اسلش است که پایگاه داده را پرس‌وجو می‌کنند (مانند \fB\ed\fR)؛ اما پیام‌های خطا را در بر نمی‌گیرد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br برای قرار دادن خروجی متنی در میان نتایج پرس‌وجو، از \fB\eqecho\fR استفاده کنید\&. .sp .5v .RE .RE .PP \ep یا \eprint .RS 4 بافر پرس‌وجوی جاری را در خروجی استاندارد چاپ می‌کند\&. اگر بافر پرس‌وجوی جاری خالی باشد، آخرین پرس‌وجوی اجراشده به جای آن چاپ می‌شود\&. .RE .PP \eparse \fIstatement_name\fR .RS 4 یک عبارت آماده (prepared statement) را از روی بافر پرس‌وجوی جاری، بر اساس نام شیء عبارت آماده مقصد ایجاد می‌کند\&. یک رشته خالی نشان‌دهنده عبارت آماده بدون نام است\&. .sp مثال: .sp .if n \{\ .RS 4 .\} .nf SELECT $1 \eparse stmt1 .fi .if n \{\ .RE .\} .sp این دستور موجب می‌شود پروتکل پرس‌وجوی گسترده (extended query protocol) مورد استفاده قرار گیرد، برخلاف عملکرد عادی psql که از پروتکل پرس‌وجوی ساده استفاده می‌کند\&. یک پیام Parse (F) توسط این دستور صادر خواهد شد، بنابراین می‌تواند برای آزمایش پروتکل پرس‌وجوی گسترده از طریق psql مفید باشد\&. این دستور تنها روی پرس‌وجوی بعدی که اجرا می‌شود تأثیر می‌گذارد؛ همه پرس‌وجوهای بعدی به طور پیش‌فرض از پروتکل پرس‌وجوی ساده استفاده خواهند کرد\&. .RE .PP \epassword [ \fIusername\fR ] .RS 4 رمز عبور کاربر مشخص‌شده را تغییر می‌دهد (به‌طور پیش‌فرض، کاربر جاری)\&. این دستور رمز عبور جدید را درخواست می‌کند، آن را رمزنگاری کرده و به عنوان دستور \fBALTER ROLE\fR به سرور ارسال می‌کند\&. این امر تضمین می‌کند که رمز عبور جدید به صورت متن خام در تاریخچه دستورها، لاگ سرور یا جاهای دیگر ظاهر نشود\&. .RE .PP \eprompt [ \fItext\fR ] \fIname\fR .RS 4 از کاربر می‌خواهد متنی را وارد کند، که به متغیر \fIname\fR اختصاص می‌یابد\&. یک رشته اعلان اختیاری، \fItext\fR، می‌تواند مشخص شود\&. (برای اعلان‌های چندکلمه‌ای، متن را میان علامت‌های نقل‌قول تکی قرار دهید\&.) .sp به صورت پیش‌فرض، \eprompt از ترمینال برای ورودی و خروجی استفاده می‌کند\&. با این حال، اگر گزینه خط فرمان \fB\-f\fR استفاده شده باشد، \eprompt از ورودی استاندارد و خروجی استاندارد استفاده می‌کند\&. .RE.PP \epset [ \fIoption\fR [ \fIvalue\fR ] ] .RS 4 این دستور گزینه‌های اثرگذار بر خروجی جدول‌های نتایج پرسمان را تنظیم می‌کند\&. \fIoption\fR مشخص می‌کند کدام گزینه باید تنظیم شود\&. معنای \fIvalue\fR بسته به گزینهٔ انتخاب‌شده متغیر است\&. برای برخی گزینه‌ها، حذف \fIvalue\fR باعث تغییر وضعیت (toggle) یا لغو تنظیم آن گزینه می‌شود، همان‌گونه که ذیل آن گزینه توضیح داده شده است\&. اگر چنین رفتاری ذکر نشده باشد، حذف \fIvalue\fR تنها منجر به نمایش تنظیمات فعلی خواهد شد\&. .sp \fB\epset\fR بدون هیچ آرگومانی، وضعیت فعلی تمام گزینه‌های چاپ را نمایش می‌دهد\&. .sp گزینه‌های چاپ قابل تنظیم عبارتند از: .PP border .RS 4 مقدار \fIvalue\fR باید یک عدد باشد\&. به‌طور کلی، هرچه این عدد بزرگ‌تر باشد، جدول حاشیه‌ها و خطوط بیشتری خواهد داشت، اما جزئیات آن به قالب خاص بستگی دارد\&. در قالب HTML، این مقدار مستقیماً به صفت border=\&.\&.\&. ترجمه می‌شود\&. در اکثر قالب‌های دیگر تنها مقادیر 0 (بدون حاشیه)، 1 (خطوط جداکننده داخلی)، و 2 (کادر دور جدول) معنادار هستند، و مقادیر بزرگ‌تر از 2 مشابه با border = 2 در نظر گرفته می‌شوند\&. قالب‌های latex و latex\-longtable علاوه بر این، مقدار 3 را نیز برای افزودن خطوط جداکننده میان سطرهای داده مجاز می‌دانند\&. .RE .PP columns .RS 4 عرض هدف را برای قالب wrapped و همچنین حد عرض را برای تعیین اینکه آیا خروجی به اندازهٔ کافی عریض است که به صفحه‌بند (pager) نیاز داشته باشد یا به نمایش عمودی در حالت expanded خودکار جابه‌جا شود، تنظیم می‌کند\&. مقدار صفر (پیش‌فرض) باعث می‌شود عرض هدف توسط متغیر محیطی \fBCOLUMNS\fR یا در صورت تنظیم نبودن \fBCOLUMNS\fR، توسط عرض شناسایی‌شده برای صفحه نمایش کنترل شود\&. افزون بر این، اگر columns صفر باشد، قالب wrapped تنها بر خروجی صفحه نمایش تأثیر می‌گذارد\&. اگر columns غیرصفر باشد، خروجی فایل و لوله (pipe) نیز به همان عرض پیچیده (wrap) می‌شود\&. .RE .PP csv_fieldsep .RS 4 جداکنندهٔ فیلد را برای استفاده در قالب خروجی CSV مشخص می‌کند\&. اگر نویسهٔ جداکننده در مقدار یک فیلد ظاهر شود، طبق قواعد استاندارد CSV، آن فیلد درون گیومه مضاعف در خروجی قرار می‌گیرد\&. پیش‌فرض کاما است\&. .RE .PP expanded (یا x) .RS 4 در صورت مشخص شدن \fIvalue\fR، باید on یا off (که حالت گسترش‌یافته را فعال یا غیرفعال می‌کند) یا auto باشد\&. اگر \fIvalue\fR حذف شود، دستور میان حالت‌های on و off جابه‌جا می‌شود\&. هنگامی که حالت گسترش‌یافته فعال است، نتایج پرسمان در دو ستون نمایش داده می‌شوند؛ با نام ستون در سمت چپ و داده در سمت راست\&. این حالت زمانی مفید است که داده‌ها در حالت عادی \(lqافقی\(rq در صفحه جا نشوند\&. در تنظیم auto، هر زمان خروجی پرسمان بیش از یک ستون داشته و عریض‌تر از صفحه نمایش باشد، حالت گسترش‌یافته به کار گرفته می‌شود؛ در غیر این صورت، از حالت عادی استفاده می‌شود\&. تنظیم auto تنها در قالب‌های aligned و wrapped مؤثر است\&. در سایر قالب‌ها، همواره رفتاری مشابه با غیرفعال (off) بودن حالت گسترش‌یافته دارد\&. .RE .PP fieldsep .RS 4 جداکنندهٔ فیلد را برای استفاده در قالب خروجی unaligned مشخص می‌کند\&. از این طریق می‌توان برای نمونه، خروجی جداشده با تب (tab\-separated) ایجاد کرد که ممکن است برنامه‌های دیگر آن را ترجیح دهند\&. برای تنظیم تب به عنوان جداکننده فیلد، بنویسید: \epset fieldsep \*(Aq\et\*(Aq\&. جداکنندهٔ فیلد پیش‌فرض \*(Aq|\*(Aq (خط عمودی) است\&. .RE .PP fieldsep_zero .RS 4 جداکنندهٔ فیلد مورد استفاده در قالب خروجی unaligned را روی یک بایت صفر (zero byte) تنظیم می‌کند\&. .RE .PP footer .RS 4 اگر \fIvalue\fR مشخص شده باشد، باید on یا off باشد که نمایش پاورقی جدول (شمارش (\fIn\fR rows)) را فعال یا غیرفعال می‌کند\&. در صورت حذف \fIvalue\fR، دستور نمایش پاورقی را بین روشن (on) یا خاموش (off) تغییر می‌دهد\&. .RE .PP format .RS 4 قالب خروجی را روی یکی از موارد aligned، asciidoc، csv، html، latex، latex\-longtable، troff\-ms، unaligned یا wrapped تنظیم می‌کند\&. اختصارهای یکتا مجاز هستند\&. .sp قالب aligned خروجی متنی استاندارد، خوانا برای انسان و با قالب‌بندی مرتب است؛ این حالت پیش‌فرض است\&. .sp قالب unaligned تمام ستون‌های یک سطر را در یک خط می‌نویسد که با جداکننده فیلد فعال فعلی جدا می‌شوند\&. این ویژگی برای ایجاد خروجی‌هایی که قرار است توسط برنامه‌های دیگر خوانده شوند، برای مثال قالب‌های جداشده با تب یا ویرگول، مفید است\&. با این حال، اگر نویسهٔ جداکنندهٔ فیلد در مقدار یک ستون ظاهر شود، رفتار خاصی با آن صورت نمی‌گیرد؛ بنابراین قالب CSV ممکن است برای چنین مقاصدی مناسب‌تر باشد\&. .sp قالب csv مقادیر ستون‌ها را با کاما جدا کرده و قواعد نقل‌قول شرح‌داده‌شده در \m[blue]\fBRFC 4180\fR\m[] را اعمال می‌کند\&. این خروجی با قالب CSV دستور \fBCOPY\fR سرور سازگار است\&. یک خط سرایند با نام ستون‌ها تولید می‌شود مگر اینکه پارامتر tuples_only روی on باشد\&. عناوین و پاورقی‌ها چاپ نمی‌شوند\&. هر سطر به نویسهٔ پایان خط وابسته به سیستم ختم می‌شود، که معمولاً برای سیستم‌های شبه یونیکس یک خط‌جدید یکتا (\en) یا برای Microsoft Windows توالی بازگشت به سطر و خط‌جدید (\er\en) است\&. نویسه‌های جداکننده فیلد غیر از ویرگول را می‌توان با \fB\epset csv_fieldsep\fR انتخاب کرد\&. .sp قالب wrapped مانند aligned است اما مقادیر داده‌های عریض را بین خطوط می‌پیچد تا خروجی در عرض ستون هدف بگنجد\&. عرض هدف همان‌طور که ذیل گزینهٔ columns شرح داده شد تعیین می‌شود\&. توجه داشته باشید که psql برای شکستن و پیچیدن عناوین سرایند ستون تلاشی نمی‌کند؛ بنابراین اگر کل عرض مورد نیاز برای سرایند ستون‌ها از مقدار هدف فراتر رود، قالب wrapped مشابه aligned رفتار می‌کند\&. .sp قالب‌های asciidoc، html، latex، latex\-longtable و troff\-ms جدول‌هایی را تولید می‌کنند که برای گنجانده شدن در اسناد با استفاده از زبان نشانه‌گذاری مربوطه طراحی شده‌اند\&. این‌ها اسناد کامل نیستند! ممکن است این موضوع در HTML ضروری نباشد، اما در LaTeX باید یک پوشش سند کامل داشته باشید\&. قالب latex از محیط tabular در LaTeX استفاده می‌کند\&. قالب latex\-longtable به بسته‌های longtable و booktabs در LaTeX نیاز دارد\&. .RE .PP linestyle .RS 4 سبک رسم خطوط حاشیه را روی یکی از گزینه‌های ascii، old\-ascii یا unicode تنظیم می‌کند\&. اختصارهای یکتا مجاز هستند\&. (به این معنی که یک حرف کافی خواهد بود\&.) تنظیم پیش‌فرض ascii است\&. این گزینه تنها بر قالب‌های خروجی aligned و wrapped تأثیر می‌گذارد\&. .sp سبک ascii از نویسه‌های سادهٔ ASCII استفاده می‌کند\&. خطوط جدید درون داده‌ها با یک نماد + در حاشیه سمت راست نمایش داده می‌شوند\&. هنگامی که قالب wrapped داده‌ها را از یک خط به خط بعدی بدون نویسهٔ خط‌جدید می‌پیچد، یک نقطه (\&.) در حاشیه سمت راست خط اول و مجدداً در حاشیه سمت چپ خط بعدی نشان داده می‌شود\&. .sp سبک old\-ascii از نویسه‌های سادهٔ ASCII با سبک قالب‌بندی مورد استفاده در PostgreSQL نسخهٔ 8\&.4 و پیش از آن استفاده می‌کند\&. خطوط جدید در داده‌ها با استفاده از نماد : به جای جداکنندهٔ ستون در سمت چپ نمایش داده می‌شوند\&. وقتی داده‌ها بدون نویسهٔ خط‌جدید از یک خط به خط بعدی پیچیده می‌شوند، یک نماد ; به جای جداکننده ستون سمت چپ به کار می‌رود\&. .sp سبک unicode از نویسه‌های رسم جعبه (box\-drawing) یونیکد بهره می‌برد\&. خطوط جدید در داده‌ها با نماد بازگشت به ابتدای سطر (carriage return) در حاشیه سمت راست نمایش داده می‌شوند\&. هنگامی که داده‌ها بدون نویسهٔ خط‌جدید از یک خط به خط بعدی می‌پیچند، یک نماد سه‌نقطه در حاشیه سمت راست خط اول و مجدداً در حاشیه سمت چپ خط بعدی نمایش داده می‌شود\&. .sp هنگامی که مقدار تنظیم border بزرگ‌تر از صفر باشد، گزینهٔ linestyle نویسه‌هایی را که خطوط حاشیه با آن‌ها رسم می‌شوند نیز تعیین می‌کند\&. نویسه‌های سادهٔ ASCII در همه جا کار می‌کنند، اما نویسه‌های یونیکد در نمایشگرهایی که آن‌ها را پشتیبانی می‌کنند زیباتر دیده می‌شوند\&. .RE.PP null .RS 4 رشته‌ای را تعیین می‌کند که به جای یک مقدار null چاپ می‌شود\&. حالت پیش‌فرض این است که چیزی چاپ نشود، که می‌تواند به سادگی با یک رشته خالی اشتباه گرفته شود\&. برای نمونه، ممکن است فردی ترجیح دهد از \epset null \*(Aq(null)\*(Aq\& استفاده کند\&. .RE .PP numericlocale .RS 4 اگر \fIvalue\fR مشخص شده باشد باید یا on یا off باشد که نمایش نویسه مختص محلی‌سازی را برای جداسازی گروه‌های ارقام در سمت چپ ممیز اعشاری فعال یا غیرفعال می‌کند\&. اگر \fIvalue\fR حذف شود، این دستور خروجی عددی را بین حالت معمولی و مختص محلی‌سازی تغییر وضعیت می‌دهد\&. .RE .PP pager .RS 4 استفاده از یک برنامه صفحه‌بند (pager) را برای خروجی پرس‌وجو و راهنمای psql کنترل می‌کند\&. هنگامی که گزینه pager بر روی off باشد، از برنامه صفحه‌بند استفاده نمی‌شود\&. زمانی که گزینه pager بر روی on باشد، صفحه‌بند در صورت نیاز استفاده می‌شود؛ یعنی زمانی که خروجی به یک ترمینال ارسال می‌شود و در صفحه جا نمی‌شود\&. گزینه pager همچنین می‌تواند روی always تنظیم شود، که باعث می‌شود صفحه‌بند برای تمام خروجی‌های ترمینال، صرف نظر از اینکه در صفحه جا می‌شوند یا خیر، استفاده گردد\&. \epset pager بدون \fIvalue\fR استفاده از صفحه‌بند را بین روشن و خاموش تغییر وضعیت می‌دهد\&. .sp اگر متغیر محیطی \fBPSQL_PAGER\fR یا \fBPAGER\fR تنظیم شده باشد، خروجی مورد نظر برای صفحه‌بندی به برنامه مشخص‌شده هدایت (pipe) می‌شود\&. در غیر این صورت، از یک برنامه پیش‌فرض وابسته به پلتفرم (مانند more) استفاده می‌شود\&. .sp هنگام استفاده از دستور \ewatch برای اجرای مکرر یک پرس‌وجو در سیستم‌های یونیکس، متغیر محیطی \fBPSQL_WATCH_PAGER\fR به جای آن برای یافتن برنامه صفحه‌بند استفاده می‌شود\&. این متغیر به طور جداگانه پیکربندی می‌شود زیرا ممکن است صفحه‌بندهای سنتی را دچار سردرگمی کند، اما می‌تواند برای ارسال خروجی به ابزارهایی که قالب خروجی psql را می‌فهمند (مانند pspg \-\-stream) استفاده شود\&. .RE .PP pager_min_lines .RS 4 اگر pager_min_lines روی عددی بزرگتر از ارتفاع صفحه تنظیم شده باشد، برنامه صفحه‌بند فراخوانی نخواهد شد مگر اینکه دست‌کم این تعداد خط خروجی برای نمایش وجود داشته باشد\&. مقدار پیش‌فرض 0 است\&. .RE .PP recordsep .RS 4 جداکننده رکورد (خط) را برای استفاده در قالب خروجی ترازنشده (unaligned) مشخص می‌کند\&. مقدار پیش‌فرض یک نویسه خط جدید (newline) است\&. .RE .PP recordsep_zero .RS 4 جداکننده رکورد را برای استفاده در قالب خروجی ترازنشده روی یک بایت صفر تنظیم می‌کند\&. .RE .PP tableattr (یا T) .RS 4 در قالب HTML، این گزینه مشخصه‌هایی را تعیین می‌کند که باید درون برچسب table قرار گیرند\&. این می‌تواند به عنوان مثال cellpadding یا bgcolor باشد\&. توجه داشته باشید که احتمالاً نیازی نیست border را در اینجا مشخص کنید، زیرا این مورد از قبل توسط \epset border مدیریت شده است\&. اگر هیچ \fIvalue\fR داده نشود، مشخصه‌های جدول لغو می‌شوند\&. .sp در قالب latex\-longtable، این گزینه عرض متناسب هر ستونی را که شامل نوع داده چپ‌چین است کنترل می‌کند\&. این ویژگی به عنوان فهرستی از مقادیر جداشده با فاصله مشخص می‌شود، مانند \*(Aq0\&.2 0\&.2 0\&.6\*(Aq\&. ستون‌های خروجی مشخص‌نشده از آخرین مقدار مشخص‌شده استفاده می‌کنند\&. .RE .PP title (یا C) .RS 4 عنوان جدول را برای تمامی جدول‌هایی که پس از این چاپ می‌شوند تنظیم می‌کند\&. از این گزینه می‌توان برای دادن برچسب‌های توصیفی به خروجی استفاده کرد\&. اگر هیچ \fIvalue\fR ارائه نشود، عنوان حذف می‌شود\&. .RE .PP tuples_only (یا t) .RS 4 اگر \fIvalue\fR مشخص شده باشد باید یا on یا off باشد که حالت فقط\-تاپل (tuples\-only) را فعال یا غیرفعال می‌کند\&. اگر \fIvalue\fR حذف شود، این دستور وضعیت خروجی را بین حالت عادی و فقط\-تاپل تغییر می‌دهد\&. خروجی عادی شامل اطلاعات اضافی مانند سرستون‌ها، عناوین و پاورقی‌های مختلف است\&. در حالت فقط\-تاپل، تنها داده‌های واقعی جدول نمایش داده می‌شوند\&. .RE .PP unicode_border_linestyle .RS 4 سبک رسم حاشیه را برای سبک خطوط unicode روی یکی از مقادیر single یا double تنظیم می‌کند\&. .RE .PP unicode_column_linestyle .RS 4 سبک رسم ستون را برای سبک خطوط unicode روی یکی از مقادیر single یا double تنظیم می‌کند\&. .RE .PP unicode_header_linestyle .RS 4 سبک رسم سرستون را برای سبک خطوط unicode روی یکی از مقادیر single یا double تنظیم می‌کند\&. .RE .PP xheader_width .RS 4 حداکثر عرض سرستون را برای خروجی گسترش‌یافته روی یکی از گزینه‌های full (مقدار پیش‌فرض)، column، page یا یک \fIinteger value\fR تنظیم می‌کند\&. .sp full: سرستون گسترش‌یافته کوتاه (قطع) نمی‌شود و به پهنای عریض‌ترین خط خروجی خواهد بود\&. .sp column: خط سرستون را تا پهنای ستون اول کوتاه می‌کند\&. .sp page: خط سرستون را تا پهنای ترمینال کوتاه می‌کند\&. .sp \fIinteger value\fR: حداکثر پهنای دقیق خط سرستون را مشخص می‌کند\&. .RE .sp نمونه‌هایی از چگونگی ظاهر این قالب‌های مختلف را می‌توان در بخش مثال‌ها، در ادامه مشاهده کرد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br دستورهای میانبر گوناگونی برای \fB\epset\fR وجود دارند\&. بخش‌های \fB\ea\fR، \fB\eC\fR، \fB\ef\fR، \fB\eH\fR، \fB\et\fR، \fB\eT\fR و \fB\ex\fR را ببینید\&. .sp .5v .RE .RE .PP \eq یا \equit .RS 4 از برنامه psql خارج می‌شود\&. در یک فایل اسکریپت، تنها اجرای آن اسکریپت خاتمه می‌یابد\&. .RE .PP \eqecho \fItext\fR [ \&.\&.\&. ] .RS 4 این دستور همسان با \fB\eecho\fR است، به جز اینکه خروجی در کانال خروجی پرس‌وجو، طبق آنچه با \fB\eo\fR تنظیم شده، نوشته خواهد شد\&. .RE.PP \er or \ereset .RS 4 بافر پرس‌وجو را بازنشانی (پاک) می‌کند\&. .RE .PP \erestrict \fIrestrict_key\fR .RS 4 با کلید ارائه‌شده وارد حالت «محدودشده» (restricted) می‌شود\&. در این حالت، تنها متادستور مجاز برای خروج از حالت محدودشده، \fB\eunrestrict\fR است\&. کلید فقط می‌تواند شامل نویسه‌های الفبایی\-عددی باشد\&. .sp این دستور در درجه اول برای استفاده در نسخه‌های پشتیبان متنی (plain\-text dumps) ایجاد شده توسط pg_dump، pg_dumpall و pg_restore در نظر گرفته شده است، اما ممکن است در جاهای دیگر نیز مفید باشد\&. .RE .PP \es [ \fIfilename\fR ] .RS 4 تاریخچه خط فرمان psql را در \fIfilename\fR چاپ می‌کند\&. اگر \fIfilename\fR ذکر نشود، تاریخچه در خروجی استاندارد نوشته می‌شود (در صورت لزوم با استفاده از پیجر)\&. اگر psql بدون پشتیبانی از Readline ساخته شده باشد، این دستور در دسترس نیست\&. .RE .PP \eset [ \fIname\fR [ \fIvalue\fR [ \&.\&.\&. ] ] ] .RS 4 متغیر psql با نام \fIname\fR را با مقدار \fIvalue\fR تنظیم می‌کند، یا اگر بیش از یک مقدار داده شود، آن را به الحاق تمام آن‌ها تنظیم می‌کند\&. اگر تنها یک آرگومان داده شود، متغیر با یک مقدار رشته‌ای خالی تنظیم می‌شود\&. برای لغو تنظیم یک متغیر، از دستور \fB\eunset\fR استفاده کنید\&. .sp \fB\eset\fR بدون هیچ آرگومانی، نام و مقدار تمام متغیرهای تنظیم‌شده کنونی psql را نمایش می‌دهد\&. .sp نام‌های معتبر متغیرها می‌توانند شامل حروف، ارقام و زیرخط باشند\&. برای جزئیات به Variables در زیر مراجعه کنید\&. نام متغیرها به حروف بزرگ و کوچک حساس هستند\&. .sp برخی از متغیرها خاص هستند، به این صورت که رفتار psql را کنترل می‌کنند یا به‌طور خودکار برای بازتاب وضعیت اتصال تنظیم می‌شوند\&. این متغیرها در Variables در زیر مستند شده‌اند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br این دستور ارتباطی با دستور SQL یعنی \fBSET\fR ندارد\&. .sp .5v .RE .RE .PP \esetenv \fIname\fR [ \fIvalue\fR ] .RS 4 متغیر محیطی \fIname\fR را به \fIvalue\fR تنظیم می‌کند، یا اگر \fIvalue\fR ارائه نشود، متغیر محیطی را لغو تنظیم می‌کند\&. مثال: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\esetenv PAGER less\fR testdb=> \fB\esetenv LESS \-imx4F\fR .fi .if n \{\ .RE .\} .RE .PP \esf[+] \fIfunction_description\fR .RS 4 این دستور، تعریف تابع یا رویهٔ (procedure) نام‌برده‌شده را در قالب یک دستور \fBCREATE OR REPLACE FUNCTION\fR یا \fBCREATE OR REPLACE PROCEDURE\fR واکشی کرده و نشان می‌دهد\&. تعریف در کانال خروجی پرس‌وجوی جاری، مطابق با تنظیمات \fB\eo\fR چاپ می‌شود\&. .sp تابع هدف را می‌توان تنها با نام، یا با نام و آرگومان‌ها مشخص کرد، به عنوان مثال foo(integer, text)\&. در صورتی که بیش از یک تابع با همین نام وجود داشته باشد، انواع آرگومان‌ها حتماً باید مشخص شوند\&. .sp اگر + به انتهای نام دستور اضافه شود، خطوط خروجی شماره‌گذاری می‌شوند و اولین خط از بدنه تابع، خط شماره ۱ خواهد بود\&. .sp برخلاف اکثر متادستورهای دیگر، کل ادامه خط همیشه به عنوان آرگومان(های) \fB\esf\fR در نظر گرفته می‌شود، و نه درون‌یابی متغیرها و نه بسط علامت نقل‌قول وارون روی آرگومان‌ها اعمال نمی‌شود\&. .RE .PP \esv[+] \fIview_name\fR .RS 4 این دستور، تعریف نمای (view) نام‌برده‌شده را در قالب یک دستور \fBCREATE OR REPLACE VIEW\fR واکشی کرده و نشان می‌دهد\&. تعریف در کانال خروجی پرس‌وجوی جاری، مطابق با تنظیمات \fB\eo\fR چاپ می‌شود\&. .sp اگر + به انتهای نام دستور اضافه شود، خطوط خروجی از ۱ شماره‌گذاری می‌شوند\&. .sp برخلاف اکثر متادستورهای دیگر، کل ادامه خط همیشه به عنوان آرگومان(های) \fB\esv\fR در نظر گرفته می‌شود، و نه درون‌یابی متغیرها و نه بسط علامت نقل‌قول وارون روی آرگومان‌ها اعمال نمی‌شود\&. .RE .PP \estartpipeline .br \esendpipeline .br \esyncpipeline .br \eendpipeline .br \eflushrequest .br \eflush .br \egetresults [ \fInumber_results\fR ] .RS 4 این گروه از دستورها قابلیت خط‌لوله‌سازی (pipelining) دستورهای SQL را پیاده‌سازی می‌کند\&. یک خط‌لوله (pipeline) باید با \fB\estartpipeline\fR آغاز شده و با \fB\eendpipeline\fR پایان یابد\&. در این میان می‌تواند هر تعداد دستور \fB\esyncpipeline\fR وجود داشته باشد که یک پیام همگام‌سازی (sync message) را بدون پایان دادن به خط‌لوله در حال اجرا و با تخلیه بافر ارسال، می‌فرستد\&. در حالت خط‌لوله، دستورها بدون منتظر ماندن برای نتایج دستورهای قبلی به سرور ارسال می‌شوند\&. برای جزئیات بیشتر به Section\ \&32.5 مراجعه کنید\&. .sp تمام پرس‌وجوهایی که در حین اجرای خط‌لوله اجرا می‌شوند از پروتکل پرس‌وجوی توسعه‌یافته (extended query protocol) استفاده می‌کنند\&. پرس‌وجوها در صورتی که با یک نقطه‌ویرگول (semicolon) پایان یابند، به خط‌لوله الحاق می‌شوند\&. متادستورهای \ebind، \ebind_named، \eclose_prepared یا \eparse می‌توانند در یک خط‌لوله در حال اجرا استفاده شوند\&. در زمان فعال بودن خط‌لوله، \esendpipeline بافر پرس‌وجوی جاری را به خط‌لوله الحاق می‌کند\&. سایر متادستورها مانند \eg، \egx یا \egdesc در حالت خط‌لوله مجاز نیستند\&. .sp دستور \fB\eflushrequest\fR یک دستور تخلیه (flush) را به خط‌لوله الحاق می‌کند که امکان خواندن نتایج با \fB\egetresults\fR را بدون صدور همگام‌سازی (sync) یا پایان دادن به خط‌لوله فراهم می‌آورد\&. دستور \fB\egetresults\fR به‌طور خودکار داده‌های ارسال‌نشده را به سرور منتقل (push) می‌کند\&. برای انتقال دستی داده‌های ارسال‌نشده می‌توان از \fB\eflush\fR استفاده کرد\&. .sp دستور \fB\egetresults\fR یک پارامتر اختیاری \fInumber_results\fR را می‌پذیرد\&. در صورت ارائه، تنها تعداد \fInumber_results\fR نتیجهٔ اول در انتظار خوانده خواهند شد\&. در صورت ارائه نشدن یا مقدار 0، تمام نتایج در انتظار خوانده می‌شوند\&. .sp هنگامی که حالت خط‌لوله فعال است، یک متغیر اعلان (prompt) اختصاصی برای گزارش وضعیت خط‌لوله در دسترس است\&. برای جزئیات بیشتر به %P مراجعه کنید\&. .sp دستور \fBCOPY\fR در هنگام قرار داشتن در حالت خط‌لوله پشتیبانی نمی‌شود\&. .sp مثال: .sp .if n \{\ .RS 4 .\} .nf \estartpipeline SELECT * FROM pg_class; SELECT 1 \ebind \esendpipeline \eflushrequest \egetresults \eendpipeline .fi .if n \{\ .RE .\} .sp .RE.PP \et .RS 4 نمایش سرستون‌های نام ستون‌های خروجی و پانویس تعداد سطرها را تغییر وضعیت می‌دهد (روشن/خاموش می‌کند)\&. این دستور معادل با \epset tuples_only بوده و برای راحتی بیشتر فراهم شده است\&. .RE .PP \eT \fItable_options\fR .RS 4 ویژگی‌هایی را مشخص می‌کند که در قالب خروجی HTML درون تگ table قرار می‌گیرند\&. این دستور معادل با \epset tableattr \fItable_options\fR است\&. .RE .PP \etiming [ \fIon\fR | \fIoff\fR ] .RS 4 با یک پارامتر، نمایش مدت‌زمان اجرای هر عبارت SQL را روشن یا خاموش می‌کند\&. بدون پارامتر، نمایش را بین روشن و خاموش تغییر وضعیت می‌دهد\&. این زمان بر حسب میلی‌ثانیه نمایش داده می‌شود؛ بازه‌های طولانی‌تر از ۱ ثانیه در قالب minutes:seconds نیز نشان داده می‌شوند و در صورت نیاز فیلدهای ساعت و روز نیز اضافه خواهند شد\&. .RE .PP \eunrestrict \fIrestrict_key\fR .RS 4 از حالت «محدودشده» (restricted - یعنی حالتی که در آن تمام فرادستورهای دیگر مسدود می‌شوند) خارج می‌شود، مشروط بر آنکه کلید مشخص‌شده با کلیدی که هنگام ورود به حالت محدودشده به \fB\erestrict\fR داده شده بود، مطابقت داشته باشد\&. .sp این دستور در درجهٔ اول برای استفاده در رونوشت‌های متن‌ساده (plain\-text dumps) تولیدشده توسط pg_dump، pg_dumpall و pg_restore در نظر گرفته شده است، اما ممکن است در جاهای دیگر نیز سودمند باشد\&. .sp برخلاف اغلب فرادستورهای دیگر، کل باقی‌ماندهٔ سطر همیشه به عنوان آرگومانِ \fB\eunrestrict\fR در نظر گرفته می‌شود، و نه درون‌یابی متغیرها و نه بسط بک‌تیک در آن انجام نمی‌گیرد\&. .RE .PP \eunset \fIname\fR .RS 4 متغیرِ psql با نام \fIname\fR را حذف (تنظیم‌نشده) می‌کند\&. .sp بیشتر متغیرهایی که رفتار psql را کنترل می‌کنند نمی‌توانند حذف شوند؛ در عوض، دستور \eunset به صورت بازگرداندن آن‌ها به مقادیر پیش‌فرضشان تفسیر می‌شود\&. بخش Variables در زیر را ببینید\&. .RE .PP \ew یا \ewrite \fIfilename\fR .br \ew یا \ewrite |\fIcommand\fR .RS 4 بافر پرس‌وجوی جاری را در فایل \fIfilename\fR می‌نویسد یا آن را به دستور پوستهٔ \fIcommand\fR پایپ می‌کند\&. اگر بافر پرس‌وجوی جاری خالی باشد، آخرین پرس‌وجوی اجراشده به جای آن نوشته می‌شود\&. .sp اگر آرگومان با | آغاز شود، آنگاه کل باقی‌ماندهٔ سطر به عنوان \fIcommand\fR برای اجرا در نظر گرفته می‌شود و نه درون‌یابی متغیرها و نه بسط بک‌تیک در آن انجام نمی‌گیرد\&. بقیه سطر صرفاً به صورت لفظی و بدون تغییر به پوسته ارسال می‌شود\&. .RE .PP \ewarn \fItext\fR [ \&.\&.\&. ] .RS 4 این دستور مشابه با \fB\eecho\fR است، به جز اینکه خروجی به جای خروجی استاندارد، در کانال خطای استاندارد psql نوشته خواهد شد\&. .RE .PP \ewatch [ i[nterval]=\fIseconds\fR ] [ c[ount]=\fItimes\fR ] [ m[in_rows]=\fIrows\fR ] [ \fIseconds\fR ] .RS 4 بافر پرس‌وجوی جاری را به‌طور مکرر اجرا می‌کند (مشابه با کاری که \eg انجام می‌دهد) تا زمانی که متوقف شود، یا پرس‌وجو با خطا مواجه گردد، یا به محدودیت تعداد اجرا (در صورت تعیین) برسد، یا پرس‌وجو دیگر حداقل تعداد ردیف‌ها را برنگرداند\&. بین اجراها به تعداد ثانیه‌های مشخص‌شده (پیش‌فرض ۲) درنگ می‌کند\&. زمان درنگ پیش‌فرض را می‌توان با متغیر \fIWATCH_INTERVAL\fR تغییر داد\&. جهت سازگاری با نسخه‌های پیشین، \fIseconds\fR می‌تواند همراه با پیشوند interval= یا بدون آن مشخص شود\&. هر نتیجهٔ پرس‌وجو همراه با یک سربرگ نمایش داده می‌شود که شامل رشتهٔ \epset title (در صورت وجود)، زمان شروع پرس‌وجو، و بازهٔ زمانی تأخیر است\&. .sp اگر بافر پرس‌وجوی جاری خالی باشد، آخرین پرس‌وجوی ارسال‌شده به جای آن دوباره اجرا می‌شود\&. .RE .PP \ex [ \fIon\fR | \fIoff\fR | \fIauto\fR ] .RS 4 حالت قالب‌بندی گسترش‌یافتهٔ جدول (expanded table formatting) را تنظیم کرده یا تغییر وضعیت می‌دهد\&. از این حیث، معادل با \epset expanded است\&. .RE .PP \ez[Sx] [ \fIpattern\fR ] .RS 4 جدول‌ها، نماها و دنباله‌ها را به همراه امتیازات دسترسی مربوط به آنها فهرست می‌کند\&. اگر یک \fIpattern\fR مشخص شود، تنها جدول‌ها، نماها و دنباله‌هایی که نامشان با الگو مطابقت داشته باشد فهرست می‌شوند\&. به‌طور پیش‌فرض تنها اشیاء ساخته‌شده توسط کاربر نمایش داده می‌شوند؛ برای گنجاندن اشیاء سیستمی، یک الگو یا اصلاح‌کنندهٔ S را ارائه دهید\&. اگر x به نام دستور ضمیمه شود، نتایج در حالت گسترش‌یافته نمایش داده می‌شوند\&. .sp این یک نام مستعار (alias) برای \fB\edp\fR (\(lqdisplay privileges\(rq) است\&. .RE .PP \e! [ \fIcommand\fR ] .RS 4 بدون هیچ آرگومانی، به یک زیرپوسته (sub\-shell) منتقل می‌شود؛ با خروج از زیرپوسته، اجرای psql از سر گرفته می‌شود\&. همراه با یک آرگومان، دستور پوستهٔ \fIcommand\fR را اجرا می‌کند\&. .sp برخلاف بیشتر فرادستورهای دیگر، کل باقی‌ماندهٔ سطر همیشه به عنوان آرگومان(های) \fB\e!\fR در نظر گرفته می‌شود، و در آرگومان‌ها نه درون‌یابی متغیر و نه بسط بک‌تیک انجام نمی‌گیرد\&. بقیه سطر صرفاً به صورت لفظی به پوسته ارسال می‌شود\&. .RE .PP \e? [ \fItopic\fR ] .RS 4 اطلاعات راهنما را نمایش می‌دهد\&. پارامتر اختیاری \fItopic\fR (با مقدار پیش‌فرض commands) مشخص می‌کند که کدام بخش از psql توضیح داده شود: commands دستورهای بک‌اسلشِ psql را شرح می‌دهد؛ options گزینه‌های خط فرمانی را که می‌توان به psql ارسال کرد توضیح می‌دهد؛ و variables راهنمای مربوط به متغیرهای پیکربندی psql را نمایش می‌دهد\&. .RE .PP \e; .RS 4 بک‌اسلش-نقطه‌ویرگول مانند دستورات قبلی یک فرادستور نیست؛ بلکه صرفاً باعث می‌شود بدون هیچ‌گونه پردازش دیگری، یک نقطه‌ویرگول به بافر پرس‌وجو افزوده شود\&. .sp به‌طور معمول، psql به محض رسیدن به نقطه‌ویرگولِ پایان‌دهندهٔ دستور، حتی اگر ورودی بیشتری در سطر جاری باقی مانده باشد، دستور SQL را به سرور ارسال می‌کند\&. بنابراین برای مثال وارد کردن: .sp .if n \{\ .RS 4 .\} .nf select 1; select 2; select 3; .fi .if n \{\ .RE .\} .sp منجر به ارسال جداگانهٔ این سه دستور SQL به سرور می‌شود، به‌طوری که نتایج هر یک پیش از ادامه به دستور بعدی نمایش داده خواهد شد\&. با این حال، نقطه‌ویرگولی که به صورت \e; وارد شود، پردازش دستور را آغاز نمی‌کند؛ در نتیجه دستورِ پیش از آن و دستورِ پس از آن عملاً با یکدیگر ترکیب شده و در قالب یک درخواست به سرور ارسال می‌شوند\&. بنابراین برای مثال: .sp .if n \{\ .RS 4 .\} .nf select 1\e; select 2\e; select 3; .fi .if n \{\ .RE .\} .sp منجر به ارسال هر سه دستور SQL به سرور در یک درخواست واحد می‌شود، زمانی که به نقطه‌ویرگولِ بدون بک‌اسلش رسیده شود\&. سرور چنین درخواستی را به عنوان یک تراکنش واحد اجرا می‌کند، مگر آنکه دستورهای صریح \fBBEGIN\fR/\fBCOMMIT\fR در رشته گنجانده شده باشند تا آن را به چندین تراکنش تقسیم کنند\&. (برای جزئیات بیشتر دربارهٔ نحوهٔ مدیریت رشته‌های چندپرس‌وجویی توسط سرور، Section\ \&54.2.2.1 را ببینید\&.) .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBالگوها (Patterns)\fR .RS 4 .PP دستورهای مختلف \ed یک پارامتر \fIpattern\fR را برای تعیین نام شیء (یا اشیاء) برای نمایش می‌پذیرند\&. در ساده‌ترین حالت، یک الگو صرفاً همان نام دقیق شیء است\&. نویسه‌های درون یک الگو معمولاً مانند نام‌ها در SQL به حروف کوچک تبدیل می‌شوند؛ برای مثال، \edt FOO جدولی به نام foo را نمایش می‌دهد\&. همانند نام‌های SQL، قرار دادن علامت نقل‌قول دوتایی (double quotes) در دو طرف یک الگو، مانع از تبدیل آن به حروف کوچک می‌شود\&. در صورتی که نیاز به گنجاندن یک نویسهٔ نقل‌قول دوتایی واقعی درون یک الگو داشته باشید، آن را به صورت یک جفت نقل‌قول دوتایی در یک توالی نقل‌قول دوتایی بنویسید؛ این موضوع نیز مطابق با قواعد شناسه‌های نقل‌قول‌شدهٔ SQL است\&. برای نمونه، \edt "FOO""BAR" جدولی به نام FOO"BAR (نه foo"bar) را نمایش می‌دهد\&. برخلاف قواعد معمول نام‌های SQL، می‌توانید علامت نقل‌قول دوتایی را تنها در اطراف بخشی از یک الگو قرار دهید، برای مثال \edt FOO"FOO"BAR جدولی به نام fooFOObar را نمایش خواهد داد\&..PP هر زمان که پارامتر \fIpattern\fR به‌طور کامل حذف شود، دستورهای \ed تمام اشیائی را که در مسیر جستجوی شِمای جاری قابل رؤیت هستند نمایش می‌دهند \(em این معادل استفاده از * به عنوان الگو است\&. (گفته می‌شود یک شیء قابل رؤیت است اگر شِمای دربردارنده آن در مسیر جستجو قرار داشته باشد و هیچ شیء دیگری از همان نوع و با همان نام جلوتر در مسیر جستجو ظاهر نشده باشد\&. این بدان معناست که شیء می‌تواند با نام خود و بدون قید صریح شِما مورد ارجاع قرار گیرد\&.) برای مشاهده همه اشیاء پایگاه داده بدون در نظر گرفتن قابلیت رؤیت، از *\&.* به عنوان الگو استفاده کنید\&. .PP درون یک الگو، * با هر توالی از نویسه‌ها (شامل هیچ نویسه‌ای هم) تطابق می‌یابد و ? با هر تک‌نویسه‌ای مطابقت می‌کند\&. (این نشانه‌گذاری با الگوهای نام فایل در پوسته Unix قابل مقایسه است\&.) برای مثال، \edt int* جدول‌هایی را که نام آن‌ها با int آغاز می‌شود نمایش می‌دهد\&. اما درون نقل‌قول‌های دوتایی، * و ? این معانی خاص را از دست می‌دهند و صرفاً به صورت لفظی مطابقت داده می‌شوند\&. .PP الگوی رابطه‌ای که شامل یک نقطه (\&.) باشد، به عنوان یک الگوی نام شِما که به دنبال آن یک الگوی نام شیء آمده تفسیر می‌شود\&. برای مثال، \edt foo*\&.*bar* تمام جدول‌هایی را نمایش می‌دهد که نام جدول شامل bar بوده و در شِماهایی قرار دارند که نام شِمای آن‌ها با foo آغاز می‌شود\&. هنگامی که نقطه‌ای وجود نداشته باشد، الگو تنها با اشیائی مطابقت پیدا می‌کند که در مسیر جستجوی شِمای جاری قابل رؤیت باشند\&. باز هم، یک نقطه درون نقل‌قول‌های دوتایی معنای خاص خود را از دست می‌دهد و به صورت لفظی تطبیق داده می‌شود\&. الگوی رابطه‌ای که شامل دو نقطه (\&.) باشد، به عنوان یک نام پایگاه داده که پس از آن الگوی نام شِما و به دنبال آن الگوی نام شیء قرار گرفته تفسیر می‌گردد\&. با بخش نام پایگاه داده به عنوان الگو رفتار نمی‌شود و باید دقیقاً با نام پایگاه داده‌ای که هم‌اکنون به آن متصل هستید مطابقت داشته باشد، در غیر این صورت خطایی رخ خواهد داد\&. .PP الگوی شِمایی که شامل یک نقطه (\&.) باشد، به عنوان نام پایگاه داده که به دنبال آن الگوی نام شِما آمده است تفسیر می‌شود\&. برای مثال، \edn mydb\&.*foo* همه شِماهایی را نمایش می‌دهد که نام شِمای آن‌ها شامل foo است\&. با بخش نام پایگاه داده به عنوان الگو برخورد نخواهد شد و باید با نام پایگاه داده‌ای که در حال حاضر به آن متصل هستید مطابقت داشته باشد، در غیر این صورت خطا صادر می‌شود\&. .PP کاربران پیشرفته می‌توانند از نشانه‌گذاری‌های عبارت باقاعده (regular\-expression) مانند رده‌های نویسه، برای مثال [0\-9] جهت مطابقت با هر رقمی استفاده کنند\&. تمام نویسه‌های خاص عبارت‌های باقاعده همان‌طور که در بخش\ \&9.7.3 مشخص شده عمل می‌کنند، به جز \&. که همان‌طور که در بالا ذکر شد به عنوان جداکننده در نظر گرفته می‌شود، * که به نشانه‌گذاری عبارت باقاعده \&.* ترجمه می‌شود، ? که به \&. ترجمه می‌شود، و $ که به صورت لفظی مطابقت می‌یابد\&. شما می‌توانید در صورت نیاز این نویسه‌های الگو را با نوشتن ? به جای \&.، (\fIR\fR+|) به جای \fIR\fR*، یا (\fIR\fR|) به جای \fIR\fR? شبیه‌سازی کنید\&. به $ به عنوان یک نویسه عبارت باقاعده نیازی نیست، چرا که بر خلاف تفسیر معمول از عبارت‌های باقاعده، الگو باید با کل نام مطابقت داشته باشد (به عبارت دیگر، $ به طور خودکار به انتهای الگوی شما پیوست می‌شود)\&. اگر نمی‌خواهید الگو لنگراندازی (anchored) شود، * را در ابتدا و/یا انتهای آن قرار دهید\&. توجه داشته باشید که درون نقل‌قول دوتایی، همه نویسه‌های خاص عبارت باقاعده معانی خاص خود را از دست می‌دهند و به صورت لفظی مطابقت می‌یابند\&. همچنین، نویسه‌های خاص عبارت باقاعده در الگوهای نام عملگر (یعنی آرگومانِ \edo) به صورت لفظی مطابقت داده می‌شوند\&. .RE .SS "ویژگی‌های پیشرفته (Advanced Features)" .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBمتغیرها (Variables)\fR .RS 4 .PP دستور psql قابلیت‌های جایگزینی متغیر را مشابه پوسته‌های خط فرمان متداول Unix فراهم می‌کند\&. متغیرها صرفاً جفت‌های نام/مقدار هستند که در آن‌ها مقدار می‌تواند هر رشته‌ای با هر طولی باشد\&. نام متغیر باید از حروف (شامل حروف غیرلاتین)، ارقام، و زیرخط‌ها تشکیل شده باشد\&. .PP برای تنظیم یک متغیر، از فرافرمان psql با نام \fB\eset\fR استفاده کنید\&. برای مثال، .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\eset foo bar\fR .fi .if n \{\ .RE .\} .sp متغیر foo را روی مقدار bar تنظیم می‌کند\&. برای بازیابی محتوای متغیر، یک دو‌نقطه پیش از نام آن قرار دهید، برای مثال: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\eecho :foo\fR bar .fi .if n \{\ .RE .\} .sp این قابلیت هم در دستورهای عادی SQL و هم در فرافرمان‌ها کار می‌کند؛ جزئیات بیشتر در بخش «درون‌یابی SQL» (SQL Interpolation) در زیر آمده است\&. .PP اگر \fB\eset\fR را بدون آرگومان دوم فراخوانی کنید، متغیر روی یک مقدار رشته تهی تنظیم می‌شود\&. برای لغو تنظیم (یعنی حذف) یک متغیر، از دستور \fB\eunset\fR استفاده کنید\&. برای نمایش مقادیر تمام متغیرها، \fB\eset\fR را بدون هیچ آرگومانی فراخوانی کنید\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته (Note)\fR .ps -1 .br .PP آرگومان‌های \fB\eset\fR مشمول همان قواعد جایگزینی سایر دستورها هستند\&. بدین ترتیب می‌توانید ارجاع‌های جالبی مانند \eset :foo \*(Aqsomething\*(Aq بسازید و به ترتیب به \(lqپیوندهای نرم\(rq یا \(lqمتغیرهای متغیری\(rq معروف در Perl یا PHP دست یابید\&. متأسفانه (یا خوشبختانه؟)، هیچ راهی برای انجام کار مفیدی با این ساختارها وجود ندارد\&. از سوی دیگر، \eset bar :foo روشی کاملاً معتبر برای رونوشت برداشتن از یک متغیر است\&. .sp .5v .RE .PP تعدادی از این متغیرها توسط psql به شکلی ویژه مدیریت می‌شوند\&. آن‌ها تنظیمات گزینه‌ای خاصی را نشان می‌دهند که می‌توانند در زمان اجرا با تغییر دادن مقدار متغیر دگرگون شوند، یا در برخی موارد نمایانگر وضعیت قابل تغییر psql هستند\&. طبق قرارداد، نام تمام متغیرهایی که با آن‌ها به‌طور خاص رفتار می‌شود، همگی از حروف بزرگ ASCII (و احتمالاً ارقام و زیرخط‌ها) تشکیل شده‌اند\&. برای اطمینان از حداکثر سازگاری در آینده، از استفاده از چنین نام‌هایی برای مقاصد شخصی خود خودداری کنید\&. .PP متغیرهایی که رفتار psql را کنترل می‌کنند عموماً نمی‌توانند لغو تنظیم (unset) شوند یا روی مقادیر نامعتبر تنظیم گردند\&. اجرای دستور \eunset مجاز است اما به عنوان تنظیم متغیر روی مقدار پیش‌فرض آن تفسیر می‌شود\&. دستور \eset بدون آرگومان دوم، برای متغیرهای کنترلی که مقدار on را می‌پذیرند، به عنوان تنظیم متغیر روی on تفسیر می‌شود و برای بقیه متغیرها رد خواهد شد\&. همچنین، متغیرهای کنترلی که مقادیر on و off را می‌پذیرند، سایر نگارش‌های متداول مقادیر بولی مانند true و false را نیز خواهند پذیرفت\&. .PP متغیرهایی که به‌طور ویژه مدیریت می‌شوند عبارتند از: .PP \fIAUTOCOMMIT\fR .RS 4 هنگامی که روی on (پیش‌فرض) باشد، هر دستور SQL به محض تکمیل موفقیت‌آمیز به طور خودکار تثبیت (commit) می‌شود\&. برای به تعویق انداختن تثبیت در این حالت، باید دستور SQL با نام \fBBEGIN\fR یا \fBSTART TRANSACTION\fR را وارد کنید\&. هنگامی که روی off باشد یا لغو تنظیم شده باشد، دستورهای SQL تا زمانی که صراحتاً \fBCOMMIT\fR یا \fBEND\fR را صادر نکنید تثبیت نمی‌شوند\&. حالت autocommit\-off با صادر کردن یک \fBBEGIN\fR ضمنی برای شما کار می‌کند؛ این کار درست قبل از هر دستوری صورت می‌گیرد که پیش‌تر درون یک بلوک تراکنش قرار نداشته و خودش دستور \fBBEGIN\fR یا سایر دستورهای کنترل تراکنش نبوده و همچنین از دستورهایی نباشد که نمی‌توان آن‌ها را درون یک بلوک تراکنش اجرا کرد (مانند \fBVACUUM\fR)\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته (Note)\fR .ps -1 .br در حالت autocommit\-off، باید هر تراکنش ناموفق را با وارد کردن \fBABORT\fR یا \fBROLLBACK\fR صراحتاً رها کنید\&. همچنین به یاد داشته باشید که اگر بدون تثبیت کردن از نشست خارج شوید، کارهای شما از بین خواهد رفت\&. .sp .5v .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته (Note)\fR .ps -1 .br حالت autocommit\-on رفتار سنتی PostgreSQL است، اما حالت autocommit\-off به مشخصات استاندارد SQL نزدیک‌تر است\&. اگر autocommit\-off را ترجیح می‌دهید، ممکن است بخواهید آن را در فایل سراسری psqlrc سیستم یا فایل شخصی ~/\&.psqlrc خود تنظیم کنید\&. .sp .5v .RE .RE.PP \fICOMP_KEYWORD_CASE\fR .RS 4 مشخص می‌کند که هنگام تکمیل خودکار یک کلمه کلیدی SQL، از کدام حالت حروف بزرگ یا کوچک (letter case) استفاده شود\&. اگر روی lower یا upper تنظیم شود، کلمه تکمیل‌شده به‌ترتیب با حروف کوچک یا بزرگ خواهد بود\&. اگر روی preserve\-lower یا preserve\-upper (پیش‌فرض) تنظیم شود، کلمه تکمیل‌شده حالت حروفی را که تا کنون وارد شده است حفظ می‌کند، اما کلماتی که بدون وارد کردن نویسه‌ای تکمیل شوند، به‌ترتیب با حروف کوچک یا بزرگ خواهند بود\&. .RE .PP \fIDBNAME\fR .RS 4 نام پایگاه داده‌ای که در حال حاضر به آن متصل هستید\&. این متغیر هر بار که به یک پایگاه داده متصل می‌شوید (از جمله هنگام راه‌اندازی برنامه) مقداردهی می‌شود، اما می‌توان آن را تغییر داد یا لغو کرد\&. .RE .PP \fIECHO\fR .RS 4 اگر روی all تنظیم شود، تمام خطوط ورودی غیرخالی به محض خوانده شدن در خروجی استاندارد چاپ می‌شوند\&. (این امر بر خطوطی که به صورت تعاملی خوانده می‌شوند اعمال نمی‌گردد\&.) برای انتخاب این رفتار در هنگام راه‌اندازی برنامه، از سوئیچ \fB\-a\fR استفاده کنید\&. اگر روی queries تنظیم شود، psql هر پرس‌وجو را در هنگام ارسال به سرور، در خروجی استاندارد چاپ می‌کند\&. سوئیچ برای انتخاب این رفتار \fB\-e\fR است\&. اگر روی errors تنظیم شود، تنها پرس‌وجوهای ناموفق در خروجی خطای استاندارد نمایش داده می‌شوند\&. سوئیچ این رفتار \fB\-b\fR است\&. اگر روی none (پیش‌فرض) تنظیم شود، هیچ پرس‌وجویی نمایش داده نمی‌شود\&. .RE .PP \fIECHO_HIDDEN\fR .RS 4 هنگامی که این متغیر روی on تنظیم شده باشد و یک دستور ممیز وارونه (backslash command) از پایگاه داده پرس‌وجو کند، ابتدا آن پرس‌وجو نشان داده می‌شود\&. این ویژگی به شما در مطالعه سازوکارهای درونی PostgreSQL و ارائه قابلیت‌های مشابه در برنامه‌های خودتان کمک می‌کند\&. (برای انتخاب این رفتار هنگام راه‌اندازی برنامه، از سوئیچ \fB\-E\fR استفاده کنید\&.) اگر این متغیر را روی مقدار noexec تنظیم کنید، پرس‌وجوها فقط نمایش داده می‌شوند اما در عمل به سرور ارسال و اجرا نمی‌شوند\&. مقدار پیش‌فرض off است\&. .RE .PP \fIENCODING\fR .RS 4 کدگذاری فعلی مجموعه نویسه‌های کلاینت\&. این متغیر هر بار که به یک پایگاه داده متصل می‌شوید (شامل راه‌اندازی برنامه) و نیز زمانی که کدگذاری را با \eencoding تغییر می‌دهید تنظیم می‌شود، اما می‌توان آن را تغییر داد یا مقدارش را لغو کرد\&. .RE .PP \fIERROR\fR .RS 4 در صورت شکست آخرین پرس‌وجوی SQL مقدار true و در صورت موفقیت آن مقدار false است\&. همچنین \fISQLSTATE\fR را ببینید\&. .RE .PP \fIFETCH_COUNT\fR .RS 4 اگر این متغیر روی یک مقدار عددی صحیح بزرگ‌تر از صفر تنظیم شود، نتایج پرس‌وجوهای \fBSELECT\fR به جای رفتار پیش‌فرضِ جمع‌آوری کل مجموعه نتایج پیش از نمایش، در گروه‌هایی به همان تعداد سطر واکشی و نمایش داده می‌شوند\&. بنابراین، فارغ از اندازه مجموعه نتایج، تنها مقدار محدودی از حافظه مصرف می‌شود\&. هنگام فعال‌سازی این ویژگی، معمولاً مقادیر ۱۰۰ تا ۱۰۰۰ استفاده می‌شوند\&. به یاد داشته باشید که هنگام استفاده از این ویژگی، ممکن است یک پرس‌وجو پس از نمایش چند سطر با شکست مواجه شود\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br اگرچه می‌توانید از هر قالب خروجی با این ویژگی استفاده کنید، قالب پیش‌فرض aligned معمولاً ظاهر مناسبی پیدا نمی‌کند زیرا هر گروه از سطرهای \fIFETCH_COUNT\fR به صورت جداگانه قالب‌بندی می‌شوند، که باعث ایجاد عرض‌های متغیر برای ستون‌ها در بین گروه‌های سطر خواهد شد\&. سایر قالب‌های خروجی عملکرد بهتری دارند\&. .sp .5v .RE .RE .PP \fIHIDE_TABLEAM\fR .RS 4 اگر این متغیر روی true تنظیم شود، جزئیات روش دسترسی جدول (access method) نمایش داده نمی‌شود\&. این متغیر عمدتاً برای آزمون‌های رگرسیون مفید است\&. .RE .PP \fIHIDE_TOAST_COMPRESSION\fR .RS 4 اگر این متغیر روی true تنظیم شود، جزئیات روش فشرده‌سازی ستون نمایش داده نمی‌شود\&. این متغیر عمدتاً برای آزمون‌های رگرسیون مفید است\&. .RE .PP \fIHISTCONTROL\fR .RS 4 اگر این متغیر روی ignorespace تنظیم شود، خطوطی که با فاصله (space) آغاز می‌شوند در فهرست تاریخچه ثبت نمی‌شوند\&. اگر روی مقدار ignoredups تنظیم شود، خطوطی که با خط قبلی تاریخچه یکسان باشند وارد نمی‌شوند\&. مقدار ignoreboth ترکیبی از هر دو گزینه است\&. اگر روی none (پیش‌فرض) تنظیم شود، تمامی خطوط خوانده‌شده در حالت تعاملی در فهرست تاریخچه ذخیره می‌شوند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBیادداشت\fR .ps -1 .br این ویژگی بی‌شرمانه از Bash کپی‌برداری شده است\&. .sp .5v .RE .RE .PP \fIHISTFILE\fR .RS 4 نام فایلی که برای ذخیره فهرست تاریخچه استفاده خواهد شد\&. در صورت عدم تنظیم، نام فایل از متغیر محیطی \fBPSQL_HISTORY\fR گرفته می‌شود\&. اگر آن هم تنظیم نشده باشد، مقدار پیش‌فرض ~/\&.psql_history، یا در Windows برابر با %APPDATA%\epostgresql\epsql_history است\&. برای مثال، قرار دادن: .sp .if n \{\ .RS 4 .\} .nf \eset HISTFILE ~/\&.psql_history\-:DBNAME .fi .if n \{\ .RE .\} .sp در ~/\&.psqlrc باعث خواهد شد psql یک تاریخچه جداگانه برای هر پایگاه داده نگهداری کند\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBیادداشت\fR .ps -1 .br این ویژگی بی‌شرمانه از Bash کپی‌برداری شده است\&. .sp .5v .RE .RE .PP \fIHISTSIZE\fR .RS 4 حداکثر تعداد دستوراتی که در تاریخچه دستورات ذخیره می‌شوند (پیش‌فرض ۵۰۰)\&. اگر روی یک مقدار منفی تنظیم شود، هیچ محدودیتی اعمال نمی‌گردد\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBیادداشت\fR .ps -1 .br این ویژگی بی‌شرمانه از Bash کپی‌برداری شده است\&. .sp .5v .RE .RE .PP \fIHOST\fR .RS 4 میزبان سرور پایگاه داده‌ای که در حال حاضر به آن متصل هستید\&. این متغیر هر بار که به یک پایگاه داده متصل می‌شوید (از جمله هنگام راه‌اندازی برنامه) مقداردهی می‌شود، اما می‌توان آن را تغییر داد یا مقدارش را لغو کرد\&. .RE .PP \fIIGNOREEOF\fR .RS 4 اگر روی ۱ یا کمتر تنظیم شود، ارسال یک نویسهٔ EOF (معمولاً Control+D) به یک نشست تعاملی psql باعث خروج از برنامه می‌شود\&. اگر روی یک مقدار عددی بزرگ‌تر تنظیم شود، باید همان تعداد نویسهٔ EOF متوالی وارد شود تا نشست تعاملی خاتمه یابد\&. اگر متغیر روی یک مقدار غیرعددی تنظیم شود، به عنوان ۱۰ تفسیر می‌گردد\&. مقدار پیش‌فرض ۰ است\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBیادداشت\fR .ps -1 .br این ویژگی بی‌شرمانه از Bash کپی‌برداری شده است\&. .sp .5v .RE .RE.PP \fILASTOID\fR .RS 4 مقدار آخرین OID تأثیرپذیرفته، همان‌گونه که از یک دستور \fBINSERT\fR یا \fB\elo_import\fR بازگردانده شده است\&. معتبر بودن این متغیر تنها تا پیش از نمایش نتیجهٔ دستور SQL بعدی تضمین می‌شود\&. سرورهای PostgreSQL از نسخهٔ 12 به بعد دیگر از ستون‌های سیستمی OID پشتیبانی نمی‌کنند، بنابراین هنگام کار با این سرورها، مقدار LASTOID پس از \fBINSERT\fR همواره 0 خواهد بود\&. .RE .PP \fILAST_ERROR_MESSAGE\fR .br \fILAST_ERROR_SQLSTATE\fR .RS 4 پیام خطای اصلی و کد SQLSTATE مرتبط برای تازه‌ترین پرس‌وجوی شکست‌خورده در نشست کنونی psql، یا یک رشتهٔ خالی و 00000 در صورتی که هیچ خطایی در نشست فعلی رخ نداده باشد\&. .RE .PP \fION_ERROR_ROLLBACK\fR .RS 4 هنگامی که روی on تنظیم شود، اگر دستوری در یک بلوک تراکنش خطایی ایجاد کند، خطا نادیده گرفته شده و تراکنش ادامه می‌یابد\&. هنگامی که روی interactive تنظیم شود، چنین خطاهایی فقط در نشست‌های تعاملی نادیده گرفته می‌شوند، و نه هنگام خواندن فایل‌های اسکریپت\&. هنگامی که روی off (پیش‌فرض) تنظیم شود، دستوری در یک بلوک تراکنش که خطایی تولید کند، کل تراکنش را لغو (abort) می‌کند\&. حالت بازگردانی خطا با اجرای یک \fBSAVEPOINT\fR ضمنی درست پیش از هر دستور درون یک بلوک تراکنش کار می‌کند، و در صورت شکست دستور، به آن نقطهٔ ذخیره (savepoint) بازمی‌گردد\&. .RE .PP \fION_ERROR_STOP\fR .RS 4 به‌طور پیش‌فرض، پردازش دستورها پس از بروز خطا ادامه می‌یابد\&. هنگامی که این متغیر روی on تنظیم شود، پردازش بلافاصله متوقف خواهد شد\&. در حالت تعاملی، psql به اعلان خط فرمان بازخواهد گشت؛ در غیر این صورت، psql خارج شده و کد خطای 3 را بازمی‌گرداند تا این حالت از شرایط خطای مهلک (fatal) که با کد خطای 1 گزارش می‌شوند متمایز گردد\&. در هر دو حالت، هر اسکریپت در حال اجرا (اسکریپت سطح بالا، در صورت وجود، و هر اسکریپت دیگری که ممکن است فراخوانی کرده باشد) بلافاصله خاتمه خواهد یافت\&. اگر رشتهٔ دستور سطح بالا شامل چندین دستور SQL باشد، پردازش در دستور فعلی متوقف خواهد شد\&. .RE .PP \fIPIPELINE_COMMAND_COUNT\fR .RS 4 تعداد دستورهای صف‌بندی‌شده در یک پایپ‌لاین در حال اجرا\&. .RE .PP \fIPIPELINE_RESULT_COUNT\fR .RS 4 تعداد دستورهای یک پایپ‌لاینِ در حال اجرا که به دنبال آن‌ها یک \fB\eflushrequest\fR یا یک \fB\esyncpipeline\fR آمده و سرور را وادار به ارسال نتایج کرده است\&. این نتایج را می‌توان با \fB\egetresults\fR دریافت کرد\&. .RE .PP \fIPIPELINE_SYNC_COUNT\fR .RS 4 تعداد پیام‌های sync صف‌بندی‌شده در یک پایپ‌لاین در حال اجرا\&. .RE .PP \fIPORT\fR .RS 4 پورت سرور پایگاه داده که در حال حاضر به آن متصل هستید\&. این مقدار هر بار که به یک پایگاه داده متصل می‌شوید (از جمله هنگام راه‌اندازی برنامه) تنظیم می‌شود، اما می‌تواند تغییر داده شده یا لغو (unset) شود\&. .RE .PP \fIPROMPT1\fR .br \fIPROMPT2\fR .br \fIPROMPT3\fR .RS 4 این متغیرها تعیین می‌کنند اعلان‌هایی (prompts) که psql نمایش می‌دهد چه ظاهری داشته باشند\&. بخش Prompting را در زیر ببینید\&. .RE .PP \fIQUIET\fR .RS 4 تنظیم این متغیر روی on معادل گزینهٔ خط فرمان \fB\-q\fR است\&. این گزینه احتمالاً در حالت تعاملی کاربرد چندانی ندارد\&. .RE .PP \fIROW_COUNT\fR .RS 4 تعداد سطرهای بازگردانده شده یا تأثیرپذیرفته از آخرین پرس‌وجوی SQL، یا 0 در صورتی که پرس‌وجو شکست خورده باشد یا تعداد سطرها را گزارش نکرده باشد\&. .RE .PP \fISERVER_VERSION_NAME\fR .br \fISERVER_VERSION_NUM\fR .RS 4 شمارهٔ نسخهٔ سرور به صورت رشته، برای مثال 9\&.6\&.2، 10\&.1 یا 11beta1، و به شکل عددی، برای مثال 90602 یا 100001\&. این مقادیر هر بار که به یک پایگاه داده متصل می‌شوید (از جمله هنگام راه‌اندازی برنامه) تنظیم می‌شوند، اما می‌توان آن‌ها را تغییر داد یا لغو (unset) کرد\&. .RE .PP \fISERVICE\fR .RS 4 نام سرویس، در صورت وجود\&. .RE .PP \fISHELL_ERROR\fR .RS 4 اگر آخرین دستور پوسته شکست بخورد مقدار true، و اگر با موفقیت انجام شود مقدار false خواهد بود\&. این متغیر برای دستورهای پوسته‌ای اعمال می‌شود که از طریق فرادستورهای \e!، \eg، \eo، \ew و \ecopy، و همچنین بسط بک‌تیک (`) فراخوانی شده‌اند\&. توجه داشته باشید که برای \eo، این متغیر زمانی به‌روزرسانی می‌شود که پایپ خروجی توسط دستور \eo بعدی بسته شود\&. همچنین ببینید: \fISHELL_EXIT_CODE\fR\&. .RE .PP \fISHELL_EXIT_CODE\fR .RS 4 وضعیت خروج بازگردانده شده توسط آخرین دستور پوسته\&. بازهٔ 0\(en127 نشان‌دهندهٔ کدهای خروج برنامه است، 128\(en255 نشان‌دهندهٔ پایان یافتن توسط یک سیگنال است، و \-1 نشان‌دهندهٔ عدم موفقیت در اجرای برنامه یا دریافت وضعیت خروج آن است\&. این متغیر برای دستورهای پوسته‌ای اعمال می‌شود که از طریق فرادستورهای \e!، \eg، \eo، \ew و \ecopy، و همچنین بسط بک‌تیک (`) فراخوانی شده‌اند\&. توجه داشته باشید که برای \eo، این متغیر زمانی به‌روزرسانی می‌شود که پایپ خروجی توسط دستور \eo بعدی بسته شود\&. همچنین ببینید: \fISHELL_ERROR\fR\&. .RE .PP \fISHOW_ALL_RESULTS\fR .RS 4 هنگامی که این متغیر روی off تنظیم شود، به جای نمایش همهٔ نتایج، تنها آخرین نتیجهٔ یک پرس‌وجوی ترکیبی (\e;) نشان داده می‌شود\&. مقدار پیش‌فرض on است\&. رفتار off برای سازگاری با نسخه‌های قدیمی‌تر psql در نظر گرفته شده است\&. .RE .PP \fISHOW_CONTEXT\fR .RS 4 این متغیر را می‌توان روی مقادیر never، errors یا always تنظیم کرد تا کنترل شود که آیا فیلدهای CONTEXT در پیام‌های دریافتی از سرور نمایش داده شوند یا خیر\&. پیش‌فرض errors است (به این معنی که context در پیام‌های خطا نمایش داده خواهد شد، اما در پیام‌های notice یا هشدار نمایش داده نمی‌شود)\&. این تنظیم هنگامی که \fIVERBOSITY\fR روی terse یا sqlstate تنظیم شده باشد هیچ اثری ندارد\&. (همچنین \fB\eerrverbose\fR را ببینید، برای مواردی که نسخهٔ پرجزئیات‌تری از خطایی که به تازگی دریافت کرده‌اید می‌خواهید\&.) .RE .PP \fISINGLELINE\fR .RS 4 تنظیم این متغیر روی on معادل گزینهٔ خط فرمان \fB\-S\fR است\&. .RE .PP \fISINGLESTEP\fR .RS 4 تنظیم این متغیر روی on معادل گزینهٔ خط فرمان \fB\-s\fR است\&. .RE .PP \fISQLSTATE\fR .RS 4 کد خطا (پیوست\ \&A را ببینید) مرتبط با شکست آخرین پرس‌وجوی SQL، یا 00000 در صورت موفقیت آن\&. .RE.PP \fIUSER\fR .RS 4 کاربر پایگاه‌داده‌ای که هم‌اکنون با آن متصل هستید\&. این مقدار هر بار که به پایگاه‌داده متصل می‌شوید (از جمله هنگام آغاز برنامه) مقداردهی می‌شود، اما می‌توان آن را تغییر داد یا لغو کرد (unset)\&. .RE .PP \fIVERBOSITY\fR .RS 4 این متغیر می‌تواند روی مقادیر default، verbose، terse، یا sqlstate تنظیم شود تا میزان جزئیات گزارش‌های خطا را کنترل کند\&. (همچنین ببینید \fB\eerrverbose\fR، برای مواردی که نسخه مفصل‌تری از خطای تازه دریافت شده را می‌خواهید\&.) .RE .PP \fIVERSION\fR .br \fIVERSION_NAME\fR .br \fIVERSION_NUM\fR .RS 4 این متغیرها هنگام آغاز برنامه برای نمایش نسخهٔ psql تنظیم می‌شوند؛ به ترتیب به‌صورت یک رشته مفصل، یک رشته کوتاه (مانند 9\&.6\&.2، 10\&.1، یا 11beta1)، و یک عدد (مانند 90602 یا 100001)\&. این متغیرها را می‌توان تغییر داد یا لغو کرد (unset)\&. .RE .PP \fIWATCH_INTERVAL\fR .RS 4 این متغیر بازه زمانی پیش‌فرض را برحسب ثانیه تعیین می‌کند که \fB\ewatch\fR بین اجرای مجدد پرس‌وجوها منتظر می‌ماند\&. مقدار پیش‌فرض ۲ ثانیه است\&. تعیین بازه زمانی در خود دستور، این متغیر را نادیده می‌گیرد\&. .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBدرون‌یابی در SQL (SQL Interpolation)\fR .RS 4 .PP یکی از ویژگی‌های کلیدی متغیرهای psql این است که می‌توانید آن‌ها را در دستورات عادی SQL و همچنین آرگومان‌های فرادستورها جایگزین («درون‌یابی») کنید\&. علاوه بر این، psql امکاناتی فراهم می‌کند تا اطمینان حاصل شود مقادیر متغیرهای مورد استفاده به‌عنوان لیترال‌ها و شناسه‌های SQL به‌درستی درون علامت نقل‌قول (quote) قرار می‌گیرند\&. نحوِ درون‌یابی یک مقدار بدون هیچ‌گونه نقل‌قول، قرار دادن دونقطه (:) قبل از نام متغیر است\&. برای نمونه، .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\eset foo \*(Aqmy_table\*(Aq\fR testdb=> \fBSELECT * FROM :foo;\fR .fi .if n \{\ .RE .\} .sp از جدول my_table پرس‌وجو می‌کند\&. توجه داشته باشید که این کار ممکن است ناامن باشد: مقدار متغیر به‌صورت لفظی کپی می‌شود، بنابراین می‌تواند حاوی نقل‌قول‌های نامتوازن یا حتی دستورات ممیز وارونه (backslash) باشد\&. باید مطمئن شوید مقداری که قرار می‌دهید در آن جایگاه معنای درستی دارد\&. .PP هنگامی که قرار است مقداری به‌عنوان یک لیترال یا شناسهٔ SQL استفاده شود، ایمن‌ترین روش این است که در نقل‌قول قرار داده شود\&. برای نقل‌قول کردن مقدار یک متغیر به‌عنوان یک لیترال SQL، یک دونقطه و سپس نام متغیر را درون گیومهٔ تکی (single quote) بنویسید\&. برای نقل‌قول کردن مقدار به‌عنوان یک شناسهٔ SQL، یک دونقطه و سپس نام متغیر را درون گیومهٔ دوتایی (double quote) بنویسید\&. این ساختارها به‌درستی با نقل‌قول‌ها و سایر نویسه‌های خاصِ درون مقدار متغیر برخورد می‌کنند\&. مثال قبلی را می‌توان با ایمنی بیشتر به این شکل نوشت: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\eset foo \*(Aqmy_table\*(Aq\fR testdb=> \fBSELECT * FROM :"foo";\fR .fi .if n \{\ .RE .\} .PP درون‌یابی متغیر در لیترال‌ها و شناسه‌های نقل‌قول‌شدهٔ SQL انجام نخواهد شد\&. بنابراین، ساختاری مانند \*(Aq:foo\*(Aq برای تولید یک لیترال نقل‌قول‌شده از مقدار متغیر کارایی ندارد (و حتی در صورت کارایی نیز ناامن می‌بود، زیرا نمی‌توانست نقل‌قول‌های نهفته در مقدار را به‌درستی مدیریت کند)\&. .PP یک نمونه کاربرد این سازوکار، کپی کردن محتوای یک فایل درون یک ستون از جدول است\&. ابتدا فایل را درون یک متغیر بارگذاری کرده و سپس مقدار متغیر را به‌عنوان یک رشتهٔ نقل‌قول‌شده درج کنید: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\eset content `cat my_file\&.txt`\fR testdb=> \fBINSERT INTO my_table VALUES (:\*(Aqcontent\*(Aq);\fR .fi .if n \{\ .RE .\} .sp (توجه داشته باشید که اگر my_file\&.txt حاوی بایت‌های NUL باشد، این روش کار نخواهد کرد\&. psql از بایت‌های NUL درون مقادیر متغیرها پشتیبانی نمی‌کند\&.) .PP از آنجا که علامت دونقطه می‌تواند به‌طور قانونی در دستورات SQL ظاهر شود، تلاشی ظاهری برای درون‌یابی (یعنی :name، :\*(Aqname\*(Aq، یا :"name") جایگزین نخواهد شد مگر اینکه متغیرِ نام‌برده در حال حاضر تنظیم شده باشد\&. در هر صورت، می‌توانید با یک ممیز وارونه (backslash) علامت دونقطه را گریزدهی (escape) کنید تا از جایگزینی محافظت شود\&. .PP نحو ویژهٔ :{?\fIname\fR} بسته به وجود یا عدم وجود متغیر، مقدار TRUE یا FALSE برمی‌گرداند و بنابراین همیشه جایگزین می‌شود، مگر اینکه دونقطه با ممیز وارونه گریزدهی شده باشد\&. .PP نحو دونقطه برای متغیرها، استاندارد SQL برای زبان‌های پرس‌وجوی تعبیه‌شده (مانند ECPG) است\&. نحوهای دونقطه برای برش‌های آرایه (array slices) و تبدیل نوع‌ها (type casts) از افزونه‌های PostgreSQL هستند که گاهی ممکن است با کاربرد استاندارد تداخل داشته باشند\&. نحو دونقطه-گیومه برای گریزدهی مقدار یک متغیر به‌عنوان یک لیترال یا شناسهٔ SQL، از افزونه‌های ویژهٔ psql است\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBاعلان‌ها (Prompting)\fR .RS 4 .PP اعلان‌هایی (prompts) که psql صادر می‌کند را می‌توان مطابق با اولویت‌های خود سفارشی کرد\&. سه متغیر \fIPROMPT1\fR، \fIPROMPT2\fR، و \fIPROMPT3\fR شامل رشته‌ها و توالی‌های گریز ویژه‌ای هستند که ظاهر اعلان را توصیف می‌کنند\&. اعلان ۱، اعلان عادی است که هنگام درخواست یک دستور جدید توسط psql نمایش داده می‌شود\&. اعلان ۲ زمانی ظاهر می‌شود که در هنگام ورود دستور به ورودی بیشتری نیاز باشد؛ برای نمونه به این دلیل که دستور با نقطه‌ویرگول (semicolon) خاتمه نیافته یا یک گیومه بسته نشده است\&. اعلان ۳ زمانی نمایش داده می‌شود که در حال اجرای دستور SQL به صورت \fBCOPY FROM STDIN\fR هستید و باید مقادیر ردیف را در ترمینال تایپ کنید\&. .PP مقدار متغیرِ اعلانِ انتخاب‌شده به‌صورت لفظی چاپ می‌شود، مگر در جایی که علامت درصد (%) وجود داشته باشد\&. بسته به نویسهٔ بعدی، متن مشخص دیگری به‌جای آن جایگزین می‌شود\&. جایگزینی‌های تعریف‌شده عبارتند از: .PP %M .RS 4 نام کامل میزبان (همراه با نام دامنه) سرور پایگاه‌داده، یا [local] اگر اتصال از طریق یک سوکت دامنه یونیکس (Unix domain socket) باشد، یا [local:\fI/dir/name\fR]، اگر سوکت دامنه یونیکس در مکان پیش‌فرض کامپایل‌شده نباشد\&. .RE .PP %m .RS 4 نام میزبان سرور پایگاه‌داده، که در اولین نقطه کوتاه شده است، یا [local] اگر اتصال از طریق یک سوکت دامنه یونیکس باشد\&. .RE .PP %> .RS 4 شماره پورتی که سرور پایگاه‌داده روی آن به درخواست‌ها گوش می‌دهد\&. .RE .PP %n .RS 4 نام کاربری نشست پایگاه‌داده\&. (گسترش این مقدار ممکن است در طول نشست پایگاه‌داده در نتیجهٔ اجرای دستور \fBSET SESSION AUTHORIZATION\fR تغییر کند\&.) .RE .PP %s .RS 4 نام سرویس\&. .RE .PP %/ .RS 4 نام پایگاه‌دادهٔ فعلی\&. .RE .PP %~ .RS 4 مانند %/، اما اگر پایگاه‌داده همان پایگاه‌دادهٔ پیش‌فرض شما باشد، خروجی ~ (تیلدا) خواهد بود\&. .RE .PP %# .RS 4 اگر کاربر نشست، یک مدیر سیستم (superuser) پایگاه‌داده باشد علامت #، و در غیر این صورت >\&. (گسترش این مقدار ممکن است در طول نشست پایگاه‌داده در نتیجهٔ اجرای دستور \fBSET SESSION AUTHORIZATION\fR تغییر کند\&.) .RE.PP %p .RS 4 شناسه فرایند (PID) پس‌زمینه‌ای (backend) که هم‌اکنون به آن متصل است\&. .RE .PP %P .RS 4 وضعیت خط‌لوله (pipeline): off هنگامی که درون یک خط‌لوله نیست، on هنگامی که درون یک خط‌لولهٔ در حال اجرا است، یا abort هنگامی که درون یک خط‌لولهٔ لغوشده (aborted) قرار دارد\&. .RE .PP %R .RS 4 در اعلان ۱ معمولاً =، اما @ اگر نشست در یک شاخهٔ غیرفعال از یک بلوک شرطی باشد، یا ^ اگر در حالت تک‌خطی باشد، یا ! اگر اتصال نشست از پایگاه‌داده قطع شده باشد (که می‌تواند در صورت شکست خوردن \fB\econnect\fR رخ دهد)\&. در اعلان ۲ %R با نویسه‌ای جایگزین می‌شود که بستگی دارد به این که چرا psql منتظر ورودی بیشتر است: \- اگر دستور صرفاً هنوز پایان نیافته است، اما * اگر یک کامنت ناتمام /* \&.\&.\&. */ وجود داشته باشد، یک نقل‌قول تکی (single quote) اگر یک رشتهٔ نقل‌قول‌شدهٔ ناتمام باشد، یک نقل‌قول دوتایی (double quote) اگر یک شناسهٔ نقل‌قول‌شدهٔ ناتمام باشد، یک علامت دلار اگر یک رشتهٔ dollar\-quoted ناتمام باشد، یا ( اگر یک پرانتز باز (چپ) بدون جفت وجود داشته باشد\&. در اعلان ۳ %R هیچ چیزی تولید نمی‌کند\&. .RE .PP %x .RS 4 وضعیت تراکنش: یک رشتهٔ خالی هنگامی که در یک بلوک تراکنش نیست، یا * هنگامی که در یک بلوک تراکنش قرار دارد، یا ! هنگامی که در یک بلوک تراکنش شکست‌خورده است، یا ? هنگامی که وضعیت تراکنش نامشخص است (برای مثال، به این دلیل که اتصالی برقرار نیست)\&. .RE .PP %l .RS 4 شمارهٔ خط در عبارت فعلی، با شروع از 1\&. .RE .PP %\fIdigits\fR .RS 4 نویسه با کد هشت‌هشتی (octal) مشخص‌شده جایگزین می‌شود\&. .RE .PP %:\fIname\fR: .RS 4 مقدار متغیر \fIname\fR در psql\&. برای جزئیات بیشتر بخش «متغیرها» در بالا را ببینید\&. .RE .PP %`\fIcommand\fR` .RS 4 خروجی \fIcommand\fR، مشابه جایگزینی معمول \(lqبک‌تیک\(rq (back\-tick)\&. .RE .PP %[ \&.\&.\&. %] .RS 4 اعلان‌ها می‌توانند شامل نویسه‌های کنترلی پایانه باشند که برای مثال، رنگ، پس‌زمینه یا سبک متن اعلان را تغییر می‌دهند، یا عنوان پنجرهٔ پایانه را عوض می‌کنند\&. برای اینکه ویژگی‌های ویرایش خط Readline به‌درستی کار کنند، این نویسه‌های کنترلیِ غیرقابل چاپ باید با قرار گرفتن بین %[ و %] به عنوان نامرئی مشخص شوند\&. چندین جفت از این‌ها می‌تواند درون اعلان قرار گیرد\&. برای مثال: .sp .if n \{\ .RS 4 .\} .nf testdb=> \eset PROMPT1 \*(Aq%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# \*(Aq .fi .if n \{\ .RE .\} .sp در پایانه‌های سازگار با VT100 و با قابلیت نمایش رنگ، منجر به یک اعلان پررنگ (1;) با رنگ زرد روی مشکی (33;40) می‌شود\&. .RE .PP %w .RS 4 فاصلهٔ خالی (whitespace) با همان عرض آخرین خروجیِ \fIPROMPT1\fR\&. می‌توان از این به عنوان تنظیمات \fIPROMPT2\fR استفاده کرد تا دستورات چندخطی با خط اول تراز شوند، اما اعلان ثانویهٔ قابل‌مشاهده‌ای وجود نداشته باشد\&. .RE برای درج یک علامت درصد در اعلان خود، بنویسید %%\&. اعلان‌های پیش‌فرض عبارتند از \*(Aq%/%R%x%# \*(Aq برای اعلان‌های ۱ و ۲، و \*(Aq>> \*(Aq برای اعلان ۳\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br .PP این قابلیت بی‌شرمانه از tcsh کپی‌برداری شده است\&. .sp .5v .RE .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBویرایش خط فرمان (Command-Line Editing)\fR .RS 4 .PP psql در صورت در دسترس بودن، از کتابخانهٔ Readline یا libedit برای ویرایش و بازیابی راحت خطوط استفاده می‌کند\&. تاریخچهٔ دستورها هنگام خروج psql به طور خودکار ذخیره شده و هنگام راه‌اندازی مجدد psql دوباره بارگذاری می‌شود\&. کلید جهت‌نمای رو به بالا یا control\-P را برای بازیابی خطوط پیشین فشار دهید\&. .PP شما همچنین می‌توانید از تکمیل خودکار با کلید تب (tab completion) برای پر کردن کلیدواژه‌ها و نام اشیاء SQL که ناتمام تایپ شده‌اند در بسیاری از زمینه‌ها (نه الزاماً همهٔ موارد) استفاده کنید\&. برای مثال، در ابتدای یک دستور، تایپ کردن ins و فشردن TAB عبارت insert into را تکمیل می‌کند\&. سپس، با تایپ چند نویسه از نام جدول یا طرحواره (schema) و زدن TAB، نام ناتمام تکمیل می‌شود یا در صورتی که بیش از یک مورد وجود داشته باشد، منویی از گزینه‌های ممکن پیشنهاد می‌گردد\&. (بسته به کتابخانهٔ مورد استفاده، ممکن است برای دریافت منو نیاز باشد TAB را بیش از یک بار فشار دهید\&.) .PP تکمیل با تب برای نام اشیاء SQL نیازمند ارسال پرس‌وجوهایی به سرور جهت یافتن موارد منطبق است\&. در برخی شرایط این کار می‌تواند با سایر عملیات تداخل پیدا کند\&. برای مثال، پس از \fBBEGIN\fR، اگر در این میان یک پرس‌وجوی تکمیل تب ارسال شود، صدور \fBSET TRANSACTION ISOLATION LEVEL\fR بسیار دیر خواهد بود\&. اگر اصلاً مایل به استفاده از تکمیل خودکار با تب نیستید، می‌توانید با قرار دادن این دستورها در فایلی به نام \&.inputrc در دایرکتوری خانگی خود، آن را برای همیشه غیرفعال کنید: .sp .if n \{\ .RS 4 .\} .nf $if psql set disable\-completion on $endif .fi .if n \{\ .RE .\} .sp (این ویژگی متعلق به psql نیست بلکه قابلیتی از Readline است\&. برای جزئیات بیشتر مستندات آن را مطالعه کنید\&.) .PP گزینهٔ خط فرمان \fB\-n\fR (\fB\-\-no\-readline\fR) نیز می‌تواند برای غیرفعال کردن استفاده از Readline تنها برای یک بار اجرای psql مفید باشد\&. این گزینه مانع از تکمیل با تب، استفاده یا ثبت تاریخچهٔ خط فرمان، و ویرایش دستورهای چندخطی می‌شود\&. این ویژگی به‌ویژه زمانی سودمند است که نیاز به رونوشت و جای‌گذاری (copy-and-paste) متنی دارید که شامل نویسه‌های TAB است\&. .RE.SH "محیط (ENVIRONMENT)" .PP \fBCOLUMNS\fR .RS 4 اگر \epset columns صفر باشد، عرض را برای قالب wrapped و همچنین عرض جهت تعیین اینکه آیا خروجی عریض نیازمند صفحه‌بندی‌کننده است یا باید در حالت خودکار گسترش‌یافته به قالب عمودی تغییر وضعیت دهد، کنترل می‌کند\&. .RE .PP \fBPGDATABASE\fR .br \fBPGHOST\fR .br \fBPGPORT\fR .br \fBPGUSER\fR .RS 4 پارامترهای اتصال پیش‌فرض (بخش\ \&32.15 را ببینید)\&. .RE .PP \fBPG_COLOR\fR .RS 4 مشخص می‌کند که آیا در پیام‌های عیب‌یابی از رنگ استفاده شود یا خیر\&. مقادیر ممکن عبارتند از always، auto و never\&. .RE .PP \fBPSQL_EDITOR\fR .br \fBEDITOR\fR .br \fBVISUAL\fR .RS 4 ویرایشگر مورداستفاده توسط دستورهای \fB\ee\fR، \fB\eef\fR و \fB\eev\fR\&. این متغیرها به ترتیبی که فهرست شده‌اند بررسی می‌شوند؛ نخستین متغیری که تنظیم شده باشد استفاده می‌شود\&. اگر هیچ‌یک از آن‌ها تنظیم نشده باشند، مقدار پیش‌فرض استفاده از vi در سیستم‌های یونیکس یا notepad\&.exe در سیستم‌های ویندوز است\&. .RE .PP \fBPSQL_EDITOR_LINENUMBER_ARG\fR .RS 4 هنگامی که \fB\ee\fR، \fB\eef\fR یا \fB\eev\fR همراه با یک آرگومان شماره خط استفاده شوند، این متغیر آرگومان خط فرمانی را که برای انتقال شماره خط آغازین به ویرایشگر کاربر استفاده می‌شود، مشخص می‌کند\&. برای ویرایشگرهایی مانند Emacs یا vi، این مقدار یک علامت مثبت است\&. چنانچه نیاز است بین نام گزینه و شماره خط فاصله وجود داشته باشد، یک فاصله انتهایی در مقدار متغیر قرار دهید\&. مثال‌ها: .sp .if n \{\ .RS 4 .\} .nf PSQL_EDITOR_LINENUMBER_ARG=\*(Aq+\*(Aq PSQL_EDITOR_LINENUMBER_ARG=\*(Aq\-\-line \*(Aq .fi .if n \{\ .RE .\} .sp مقدار پیش‌فرض در سیستم‌های یونیکس + است (مطابق با ویرایشگر پیش‌فرض vi، و مفید برای بسیاری از ویرایشگرهای رایج دیگر)؛ اما در سیستم‌های ویندوز هیچ مقدار پیش‌فرضی وجود ندارد\&. .RE .PP \fBPSQL_HISTORY\fR .RS 4 مکان جایگزین برای فایل تاریخچه دستورها\&. بسط تیلدا (~) انجام می‌شود\&. .RE .PP \fBPSQL_PAGER\fR .br \fBPAGER\fR .RS 4 اگر نتایج یک پرس‌وجو در صفحه جا نشود، از طریق لوله‌کشی (pipe) به این دستور فرستاده می‌شوند\&. مقادیر متداول more یا less هستند\&. استفاده از صفحه‌بندی‌کننده را می‌توان با تنظیم \fBPSQL_PAGER\fR یا \fBPAGER\fR روی یک رشته خالی، یا با تنظیم گزینه‌های مربوط به صفحه‌بندی‌کننده در دستور \fB\epset\fR غیرفعال کرد\&. این متغیرها به ترتیبی که فهرست شده‌اند بررسی می‌شوند؛ نخستین متغیری که مقداردهی شده باشد استفاده می‌شود\&. اگر هیچ‌کدام تنظیم نشده باشند، پیش‌فرض استفاده از more در بیشتر پلتفرم‌ها است، اما در Cygwin پیش‌فرض less می‌باشد\&. .RE .PP \fBPSQL_WATCH_PAGER\fR .RS 4 هنگامی که یک پرس‌وجو به‌طور مکرر با دستور \fB\ewatch\fR اجرا می‌شود، به‌طور پیش‌فرض از صفحه‌بندی‌کننده استفاده نمی‌شود\&. این رفتار را می‌توان در سیستم‌های یونیکس با تنظیم \fBPSQL_WATCH_PAGER\fR روی یک دستور صفحه‌بندی‌کننده تغییر داد\&. صفحه‌بندی‌کننده pspg (که بخشی از PostgreSQL نیست اما در بسیاری از توزیع‌های نرم‌افزاری متن‌باز در دسترس است) چنانچه با گزینه \-\-stream اجرا شود، می‌تواند خروجی \fB\ewatch\fR را نمایش دهد\&. .RE .PP \fBPSQLRC\fR .RS 4 مکان جایگزین فایل \&.psqlrc کاربر\&. بسط تیلدا (~) انجام می‌شود\&. .RE .PP \fBSHELL\fR .RS 4 دستور اجراشده توسط دستور \fB\e!\fR\&. .RE .PP \fBTMPDIR\fR .RS 4 دایرکتوری برای ذخیره فایل‌های موقت\&. مقدار پیش‌فرض /tmp است\&. .RE .PP این ابزار، مانند اکثر ابزارهای دیگر PostgreSQL، از متغیرهای محیطی پشتیبانی‌شده توسط libpq نیز استفاده می‌کند (بخش\ \&32.15 را ببینید)\&..SH "فایل‌ها (FILES)" .PP psqlrc و ~/\&.psqlrc .RS 4 مگر اینکه گزینهٔ \fB\-X\fR مشخص شده باشد، psql پس از اتصال به پایگاه‌داده اما پیش از پذیرش دستورهای عادی، تلاش می‌کند دستورها را ابتدا از فایل راه‌اندازی سراسری سیستم (psqlrc) و سپس فایل راه‌اندازی شخصی کاربر (~/\&.psqlrc) بخواند و اجرا کند\&. این فایل‌ها می‌توانند برای پیکربندی کلاینت و/یا سرور بر اساس نیاز، معمولاً با دستورهای \fB\eset\fR و \fBSET\fR مورد استفاده قرار گیرند\&. .sp فایل راه‌اندازی سراسری سیستم psqlrc نام دارد\&. به‌طور پیش‌فرض در دایرکتوری \(lqپیکربندی سیستم\(rq محل نصب جستجو می‌شود که مطمئن‌ترین روش شناسایی آن، اجرای pg_config \-\-sysconfdir است\&. معمولاً این دایرکتوری نسبت به دایرکتوری حاوی فایل‌های اجرایی PostgreSQL، در مسیر \&.\&./etc/ قرار دارد\&. دایرکتوری مورد نظر برای جستجو را می‌توان صراحتاً از طریق متغیر محیطی \fBPGSYSCONFDIR\fR تعیین کرد\&. .sp فایل راه‌اندازی شخصی کاربر \&.psqlrc نام دارد و در دایرکتوری خانگی کاربر فراخواننده جستجو می‌شود\&. در Windows، فایل راه‌اندازی شخصی در عوض %APPDATA%\epostgresql\epsqlrc\&.conf نام دارد\&. در هر دو حالت، می‌توان این مسیر پیش‌فرض فایل را با تنظیم متغیر محیطی \fBPSQLRC\fR تغییر داد\&. .sp هر دو فایل راه‌اندازی سراسری سیستم و فایل راه‌اندازی شخصی کاربر را می‌توان با الحاق یک خط تیره و شناسهٔ نسخهٔ اصلی یا فرعی PostgreSQL به نام فایل، مختص نسخهٔ psql کرد؛ برای مثال ~/\&.psqlrc\-18 یا ~/\&.psqlrc\-18\&.6\&. فایلی که دقیق‌ترین تطابق نسخه را داشته باشد، با اولویت نسبت به فایل بدون نسخه خوانده خواهد شد\&. این پسوندهای نسخه پس از تعیین مسیر فایل به‌گونه‌ای که در بالا توضیح داده شد، اضافه می‌شوند\&. .RE .PP \&.psql_history .RS 4 تاریخچهٔ خط فرمان در فایل ~/\&.psql_history، یا در Windows در %APPDATA%\epostgresql\epsql_history ذخیره می‌شود\&. .sp محل فایل تاریخچه را می‌توان صراحتاً از طریق متغیر psql به نام \fIHISTFILE\fR یا متغیر محیطی \fBPSQL_HISTORY\fR تعیین کرد\&. .RE .SH "نکات (NOTES)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} psql با سرورهایی از همان نسخهٔ اصلی یا نسخه‌های قدیمی‌تر، بهترین کارکرد را دارد\&. در صورتی که سرور از نسخه‌ای جدیدتر از خودِ psql باشد، دستورهای بک‌اسلش به‌ویژه ممکن است با شکست مواجه شوند\&. با این وجود، دستورهای بک‌اسلش خانوادهٔ \ed باید با سرورهایی تا نسخه‌های قدیمی‌تر مانند 9\&.2 کار کنند، هرچند نه لزوماً با سرورهای جدیدتر از خودِ psql\&. قابلیت کلی اجرای دستورهای SQL و نمایش نتایج پرس‌وجو نیز باید با سرورهای دارای نسخهٔ اصلی جدیدتر کار کند، اما این موضوع در همهٔ موارد تضمین‌شده نیست\&. .sp اگر می‌خواهید از psql برای اتصال به چندین سرور با نسخه‌های اصلی متفاوت استفاده کنید، توصیه می‌شود از جدیدترین نسخهٔ psql استفاده کنید\&. متناوباً، می‌توانید نسخه‌ای از psql را برای هر نسخهٔ اصلی نگه دارید و مطمئن شوید که از نسخه‌ای متناسب با سرور مربوطه استفاده می‌کنید\&. اما در عمل، این پیچیدگی مضاعف نباید لازم باشد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پیش از PostgreSQL 9\&.6، گزینهٔ \fB\-c\fR به‌طور ضمنی شامل \fB\-X\fR (\fB\-\-no\-psqlrc\fR) بود؛ اما دیگر چنین نیست\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پیش از PostgreSQL 8\&.4، psql اجازه می‌داد اولین آرگومانِ یک دستور بک‌اسلشِ تک‌حرفی، مستقیماً پس از دستور و بدون هیچ فاصلهٔ خالی (whitespace) آغاز شود\&. اکنون، وجود فاصله الزامی است\&. .RE .SH "نکات برای کاربران ویندوز (NOTES FOR WINDOWS USERS)" .PP psql به عنوان یک \(lqبرنامهٔ کنسول\(rq ساخته شده است\&. از آنجا که پنجره‌های کنسول Windows از کدگذاری متفاوتی نسبت به سایر بخش‌های سیستم استفاده می‌کنند، باید هنگام استفاده از نویسه‌های ۸\-بیتی درون psql توجه ویژه‌ای داشته باشید\&. در صورتی که psql یک صفحهٔ کد کنسول مشکل‌ساز را تشخیص دهد، در زمان راه‌اندازی هشدار خواهد داد\&. برای تغییر صفحهٔ کد کنسول، دو اقدام لازم است: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} تنظیم صفحهٔ کد با وارد کردن \fBcmd\&.exe /c chcp 1252\fR\&. (1252 صفحهٔ کدی است که برای زبان آلمانی مناسب است؛ آن را با مقدار مناسب برای خود جایگزین کنید\&.) اگر از Cygwin استفاده می‌کنید، می‌توانید این دستور را در /etc/profile قرار دهید\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} تنظیم قلم کنسول بر روی Lucida Console، زیرا قلم شطرنجی (raster font) با صفحهٔ کد ANSI کار نمی‌کند\&. .RE.SH "مثال‌ها (EXAMPLES)" .PP نخستین مثال نشان می‌دهد چگونه می‌توان یک دستور را در چندین خط ورودی گسترش داد\&. به تغییر اعلان توجه کنید: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fBCREATE TABLE my_table (\fR testdb(> \fB first integer not null default 0,\fR testdb(> \fB second text)\fR testdb\-> \fB;\fR CREATE TABLE .fi .if n \{\ .RE .\} .sp اکنون دوباره به تعریف جدول نگاه کنید: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\ed my_table\fR Table "public\&.my_table" Column | Type | Collation | Nullable | Default \-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\- first | integer | | not null | 0 second | text | | | .fi .if n \{\ .RE .\} .sp اکنون اعلان را به چیزی جالب‌تر تغییر می‌دهیم: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\eset PROMPT1 \*(Aq%n@%m %~%R%# \*(Aq\fR peter@localhost testdb=> .fi .if n \{\ .RE .\} .sp فرض کنید جدول را با داده‌ها پر کرده‌اید و می‌خواهید نگاهی به آن بیندازید: .sp .if n \{\ .RS 4 .\} .nf peter@localhost testdb=> SELECT * FROM my_table; first | second \-\-\-\-\-\-\-+\-\-\-\-\-\-\-\- 1 | one 2 | two 3 | three 4 | four (4 rows) .fi .if n \{\ .RE .\} .sp می‌توانید با استفاده از دستور \fB\epset\fR جدول‌ها را به روش‌های گوناگونی نمایش دهید: .sp .if n \{\ .RS 4 .\} .nf peter@localhost testdb=> \fB\epset border 2\fR Border style is 2\&. peter@localhost testdb=> \fBSELECT * FROM my_table;\fR +\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+ | first | second | +\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+ | 1 | one | | 2 | two | | 3 | three | | 4 | four | +\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+ (4 rows) peter@localhost testdb=> \fB\epset border 0\fR Border style is 0\&. peter@localhost testdb=> \fBSELECT * FROM my_table;\fR first second \-\-\-\-\- \-\-\-\-\-\- 1 one 2 two 3 three 4 four (4 rows) peter@localhost testdb=> \fB\epset border 1\fR Border style is 1\&. peter@localhost testdb=> \fB\epset format csv\fR Output format is csv\&. peter@localhost testdb=> \fB\epset tuples_only\fR Tuples only is on\&. peter@localhost testdb=> \fBSELECT second, first FROM my_table;\fR one,1 two,2 three,3 four,4 peter@localhost testdb=> \fB\epset format unaligned\fR Output format is unaligned\&. peter@localhost testdb=> \fB\epset fieldsep \*(Aq\et\*(Aq\fR Field separator is " "\&. peter@localhost testdb=> \fBSELECT second, first FROM my_table;\fR one 1 two 2 three 3 four 4 .fi .if n \{\ .RE .\} .sp به‌عنوان روشی جایگزین، از دستورهای کوتاه استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf peter@localhost testdb=> \fB\ea \et \ex\fR Output format is aligned\&. Tuples only is off\&. Expanded display is on\&. peter@localhost testdb=> \fBSELECT * FROM my_table;\fR \-[ RECORD 1 ]\- first | 1 second | one \-[ RECORD 2 ]\- first | 2 second | two \-[ RECORD 3 ]\- first | 3 second | three \-[ RECORD 4 ]\- first | 4 second | four .fi .if n \{\ .RE .\} .PP همچنین، این گزینه‌های قالب خروجی را می‌توان با استفاده از \eg تنها برای یک پرس‌وجو تنظیم کرد: .sp .if n \{\ .RS 4 .\} .nf peter@localhost testdb=> \fBSELECT * FROM my_table\fR peter@localhost testdb\-> \fB\eg (format=aligned tuples_only=off expanded=on)\fR \-[ RECORD 1 ]\- first | 1 second | one \-[ RECORD 2 ]\- first | 2 second | two \-[ RECORD 3 ]\- first | 3 second | three \-[ RECORD 4 ]\- first | 4 second | four .fi .if n \{\ .RE .\} .PP در اینجا مثالی از کاربرد دستور \fB\edf\fR برای یافتن توابعی آمده است که نام آن‌ها با int*pl مطابقت دارد و آرگومان دوم آن‌ها از نوع bigint است: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\edf int*pl * bigint\fR List of functions Schema | Name | Result data type | Argument data types | Type \-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\- pg_catalog | int28pl | bigint | smallint, bigint | func pg_catalog | int48pl | bigint | integer, bigint | func pg_catalog | int8pl | bigint | bigint, bigint | func (3 rows) .fi .if n \{\ .RE .\}.PP در اینجا، گزینهٔ + برای نمایش اطلاعات تکمیلی دربارهٔ یکی از این توابع و x برای نمایش نتایج در حالت گسترده (expanded mode) استفاده شده است: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fB\edf+x int*pl integer bigint\fR List of functions \-[ RECORD 1 ]\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- Schema | pg_catalog Name | int48pl Result data type | bigint Argument data types | integer, bigint Type | func Volatility | immutable Parallel | safe Owner | postgres Security | invoker Leakproof? | no Access privileges | Language | internal Internal name | int48pl Description | implementation of + operator .fi .if n \{\ .RE .\} .PP در صورت مناسب بودن، نتایج پرس‌وجو را می‌توان با دستور \fB\ecrosstabview\fR به‌صورت نمای متقاطع (crosstab) نمایش داد: .sp .if n \{\ .RS 4 .\} .nf testdb=> \fBSELECT first, second, first > 2 AS gt2 FROM my_table;\fR first | second | gt2 \-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-+\-\-\-\-\- 1 | one | f 2 | two | f 3 | three | t 4 | four | t (4 rows) testdb=> \fB\ecrosstabview first second\fR first | one | two | three | four \-\-\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\- 1 | f | | | 2 | | f | | 3 | | | t | 4 | | | | t (4 rows) .fi .if n \{\ .RE .\} .sp این مثال دوم یک جدول ضرب را نشان می‌دهد که در آن سطرها بر اساس ترتیب عددی معکوس مرتب شده‌اند و ستون‌ها دارای ترتیبی عددی، صعودی و مستقل هستند\&. .sp .if n \{\ .RS 4 .\} .nf testdb=> \fBSELECT t1\&.first as "A", t2\&.first+100 AS "B", t1\&.first*(t2\&.first+100) as "AxB",\fR testdb\-> \fBrow_number() over(order by t2\&.first) AS ord\fR testdb\-> \fBFROM my_table t1 CROSS JOIN my_table t2 ORDER BY 1 DESC\fR testdb\-> \fB\ecrosstabview "A" "B" "AxB" ord\fR A | 101 | 102 | 103 | 104 \-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-+\-\-\-\-\- 4 | 404 | 408 | 412 | 416 3 | 303 | 306 | 309 | 312 2 | 202 | 204 | 206 | 208 1 | 101 | 102 | 103 | 104 (4 rows) .fi .if n \{\ .RE .\}