| ÐокÑменÑаÑÐ¸Ñ Ð¿Ð¾ PostgreSQL 9.4.1 | |||
|---|---|---|---|
| ÐÑед. | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | Ðлава 30. РегÑеÑÑионнÑе ÑеÑÑÑ | След. |
30.2. ÐÑенка ÑезÑлÑÑаÑов ÑеÑÑиÑованиÑ
ÐекоÑоÑÑе пÑавилÑно ÑÑÑановленнÑе и полноÑÑÑÑ ÑÑнкÑионалÑнÑе PostgreSQL инÑÑаллÑÑии могÑÑ "даваÑÑ Ñбой" пÑи пÑÐ¾Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ð¸ некоÑоÑÑÑ ÑегÑеÑÑионнÑÑ ÑеÑÑов из-за оÑобенноÑÑей, пÑиÑÑÑÐ¸Ñ Ñой или иной плаÑÑоÑме, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº ÑазлиÑное пÑедÑÑавление ÑиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой и ÑоÑмÑлиÑовкой ÑообÑений. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑезÑлÑÑаÑÑ ÑеÑÑов оÑениваÑÑÑÑ Ð¿ÑоÑÑÑм diff ÑÑавнением Ñ Ð²Ñводом, ÑделаннÑм в ÑÑалонной ÑиÑÑеме, поÑÑÐ¾Ð¼Ñ ÑезÑлÑÑаÑÑ ÑÑвÑÑвиÑелÑÐ½Ñ Ðº неболÑÑим оÑлиÑиÑм Ð¼ÐµÐ¶Ð´Ñ ÑиÑÑемами. Ðогда ÑеÑÑ Ð·Ð°Ð²ÐµÑÑаеÑÑÑ Ñо "Ñбоем", вÑегда иÑÑледÑйÑе ÑазниÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñм и полÑÑеннÑм ÑезÑлÑÑаÑом; возможно, Ð²Ñ Ð¾Ð±Ð½Ð°ÑÑжиÑе, ÑÑо ÑазниÑа не ÑÑÐ¾Ð»Ñ Ñж ÑÑÑеÑÑвенна. Тем не менее, Ð¼Ñ ÑÑÑемимÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑ ÑÑалоннÑе ÑÐ°Ð¹Ð»Ñ Ð½Ð° вÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаемÑÑ Ð¿Ð»Ð°ÑÑоÑÐ¼Ð°Ñ , ÑÑÐ¾Ð±Ñ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло ожидаÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑеÑÑов.
ÐкÑÑалÑнÑе иÑоговÑе ÑезÑлÑÑаÑÑ ÑегÑеÑÑионного ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ ÑанÑÑÑÑ Ð² каÑалоге src/test/regress/results. ТеÑÑовÑй ÑкÑÐ¸Ð¿Ñ Ð¸ÑполÑзÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ diff, ÑÑÐ¾Ð±Ñ ÑÑавниÑÑ ÐºÐ°Ð¶Ð´Ñй иÑоговÑй Ñайл Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñми ÑезÑлÑÑаÑами, коÑоÑÑе Ñ ÑанÑÑÑÑ Ð² каÑалоге src/test/regress/expected. ÐÑе ÑазлиÑÐ¸Ñ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð² src/test/regress/regression.diffs Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑей пÑовеÑки. (ÐÑли пÑоводилÑÑ ÑеÑÑ Ð½Ðµ из оÑновного пакеÑа, Ñо его ÑезÑлÑÑаÑÑ Ð¿Ð¾ÑвÑÑÑÑ Ð² ÑооÑвеÑÑÑвÑÑÑем подкаÑалоге, а не в src/test/regress.)
ÐÑли вам не нÑавиÑÑÑ Ð¸ÑполÑзÑÐµÐ¼Ð°Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° diff, ÑÑÑановиÑе пеÑеменнÑÑ ÑÑÐµÐ´Ñ PG_REGRESS_DIFF_OPTS, напÑÐ¸Ð¼ÐµÑ PG_REGRESS_DIFF_OPTS='-u'. (Ðли, еÑли Ñ Ð¾ÑиÑе, запÑÑÑиÑе diff ÑамоÑÑоÑÑелÑно.)
ÐÑли по какой-Ñо пÑиÑине какаÑ-Ñо конкÑеÑÐ½Ð°Ñ Ð¿Ð»Ð°ÑÑоÑма генеÑиÑÑÐµÑ "Ñбой" Ð´Ð»Ñ Ð¾ÑделÑного ÑеÑÑа, но изÑÑение его ÑезÑлÑÑаÑа ÑÐ±ÐµÐ¶Ð´Ð°ÐµÑ Ð²Ð°Ñ, ÑÑо ÑезÑлÑÑÐ°Ñ Ð¿ÑавилÑнÑй, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе добавиÑÑ Ð½Ð¾Ð²Ñй Ñайл ÑÑавнениÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¼Ð°ÑкиÑоваÑÑ Ð¾ÑÑÑÑ Ð¾Ð± оÑибке Ð´Ð»Ñ Ð¿Ð¾ÑледÑÑÑего пÑÐ¾Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÑеÑÑа. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº Ð Ð°Ð·Ð´ÐµÐ»Ñ 30.3.
30.2.1. РазлиÑÐ¸Ñ Ð² ÑообÑениÑÑ Ð¾Ð± оÑибке
ÐекоÑоÑÑе ÑегÑеÑÑионнÑе ÑеÑÑÑ Ð¿Ð¾Ð´ÑÑавлÑÑÑ Ð·Ð°Ð²ÐµÐ´Ð¾Ð¼Ð¾ невеÑнÑе Ð²Ñ Ð¾Ð´Ð½Ñе знаÑениÑ. СообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке могÑÑ Ð²ÑдаваÑÑÑÑ ÐºÐ°Ðº PostgreSQL, Ñак и Ñамой опеÑаÑионной ÑиÑÑемой. РпоÑледнем ÑлÑÑае, ÑоÑма ÑообÑений Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑлиÑаÑÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑмÑ, но оÑÑажаÑÑ Ð¾Ð½Ð¸ Ð¾Ð´Ð½Ñ Ð¸ ÑÑ Ð¶Ðµ инÑоÑмаÑиÑ. ÐÐ¾Ñ ÑÑа ÑазниÑа в ÑообÑениÑÑ Ð¸ пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº "ÑбоÑм" ÑегÑеÑÑионного ÑеÑÑа, коÑоÑÑе можно ÑÑÑÑаниÑÑ Ð¿Ñи пÑовеÑке.
30.2.2. РазниÑа локалей
ÐÑли Ð²Ñ Ð¿ÑоводиÑе ÑеÑÑиÑование на ÑеÑвеÑе, коÑоÑÑй бÑл ÑÑÑановлен Ñ Ð»Ð¾ÐºÐ°Ð»ÑÑ, имеÑÑей поÑÑдок ÑопоÑÑавлениÑ, оÑлиÑнÑй Ð¾Ñ Ð¡, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑÑолкнÑÑÑÑÑ Ñ ÑазлиÑиÑми в поÑÑдке ÑоÑÑиÑовки и, как ÑледÑÑвие, Ñ Ð¿Ð¾ÑледÑÑÑими ÑбоÑми. ÐÐ°ÐºÐµÑ ÑегÑеÑÑионнÑÑ ÑеÑÑов ÑеÑÐ°ÐµÑ ÑÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿ÑÑÑм налиÑÐ¸Ñ Ð°Ð»ÑÑеÑнаÑивнÑÑ Ñайлов ÑезÑлÑÑаÑа, коÑоÑÑе ÑпоÑÐ¾Ð±Ð½Ñ ÑпÑавиÑÑÑÑ Ñ Ð±Ð¾Ð»ÑÑим колиÑеÑÑвом локалей.
ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе меÑод ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° вÑеменной инÑÑаллÑÑии, Ñо ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑеÑÑиÑование на дÑÑгой локали, иÑполÑзÑйÑе Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÑÑ Ð¿ÐµÑеменнÑÑ ÑÑедÑ, оÑноÑÑÑÑÑÑÑ Ðº локали, в командной ÑÑÑоке make, напÑимеÑ:
make check LANG=de_DE.utf8
(ÐÑÐ°Ð¹Ð²ÐµÑ ÑегÑеÑÑионного ÑеÑÑа обнÑлÑÐµÑ LC_ALL, поÑÑÐ¾Ð¼Ñ Ð²ÑÐ±Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ поÑÑедÑÑвом данной пеÑеменной не ÑабоÑаеÑ.) ЧÑÐ¾Ð±Ñ Ð½Ðµ иÑполÑзоваÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ, либо обнÑлиÑе вÑе пеÑеменнÑе ÑÑедÑ, оÑноÑÑÑиеÑÑ Ðº локали, либо ÑÑÑановиÑе Ð¸Ñ Ð² C) или иÑполÑзÑйÑе ÑледÑÑÑÑÑ ÑпеÑиалÑнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ:
make check NO_LOCALE=1
Ðогда ÑеÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð´Ð¸Ñ Ð½Ð° ÑÑÑеÑÑвÑÑÑей инÑÑаллÑÑии, ÑÑÑановки локали опÑеделÑÑÑÑÑ ÑÑой инÑÑаллÑÑией. ЧÑÐ¾Ð±Ñ ÑÑо измениÑÑ, иниÑиализиÑÑйÑе клаÑÑÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ñ Ð¸Ð½Ð¾Ð¹ локалÑÑ, пеÑедав ÑооÑвеÑÑÑвÑÑÑие паÑамеÑÑÑ initdb.
Ð Ñелом, ÑекомендÑеÑÑÑ Ð¿Ð¾ возможноÑÑи пÑоводиÑÑ ÑегÑеÑÑионнÑе ÑеÑÑÑ Ð¿Ñи ÑÐ°ÐºÐ¸Ñ ÑÑÑÐ°Ð½Ð¾Ð²ÐºÐ°Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸, коÑоÑÑе бÑдÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð² ÑабоÑе, Ñогда в ÑезÑлÑÑаÑе ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑдÑÑ Ð¿ÑовеÑÐµÐ½Ñ Ð°ÐºÑÑалÑнÑе ÑÑаÑÑки кода, оÑноÑÑÑиеÑÑ Ðº локали и кодиÑовке. РзавиÑимоÑÑи Ð¾Ñ Ð¾ÐºÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑÑолкнÑÑÑÑÑ Ñо ÑбоÑми, но Ð²Ñ Ñ Ð¾ÑÑ Ð±Ñ Ð±ÑдеÑе знаÑÑ, какого Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸ можно ожидаÑÑ Ð¿Ñи ÑабоÑе Ñ ÑеалÑнÑми пÑиложениÑми.
30.2.3. РазниÑа в даÑе и вÑемени
ÐолÑÑÐ°Ñ ÑаÑÑÑ ÑезÑлÑÑаÑов пÑовеÑки даÑÑ Ð¸ вÑемени завиÑÐ¸Ñ Ð¾Ñ ÑаÑового поÑÑа окÑÑжениÑ. ÐÑалоннÑе ÑÐ°Ð¹Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾ÑÑа PST8PDT (ÐеÑкли, ÐалиÑоÑниÑ), поÑÑÐ¾Ð¼Ñ ÐµÑли пÑоводиÑÑ ÑеÑÑÑ Ð½Ðµ Ñ ÑÑим ÑаÑовÑм поÑÑом, пÑоÑвÑÑÑÑ Ð¼Ð½Ð¸Ð¼Ñе оÑибки. ÐÑÐ°Ð¹Ð²ÐµÑ ÑегÑеÑÑионного ÑеÑÑа задаÑÑ Ð¿ÐµÑеменнÑÑ ÑÑÐµÐ´Ñ PGTZ как PST8PDT, ÑÑо позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÐºÐ¾ÑÑекÑнÑй ÑезÑлÑÑаÑ.
30.2.4. РазниÑа в ÑиÑÐ»Ð°Ñ Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой
ÐекоÑоÑÑе ÑеÑÑÑ Ð¿ÑименÑÑÑ 64-биÑное вÑÑиÑление ÑиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей запÑÑой (double precision) из ÑÑолбÑов ÑаблиÑÑ. ÐаблÑдаÑÑÑÑ ÑазлиÑÐ¸Ñ Ð² ÑезÑлÑÑаÑÐ°Ñ Ð¿Ñи иÑполÑзовании маÑемаÑиÑеÑÐºÐ¸Ñ ÑÑнкÑий Ð´Ð»Ñ ÑÑолбÑов double precision. ТеÑÑÑ float8 и geometry оÑобенно ÑÑвÑÑвиÑелÑÐ½Ñ Ðº неболÑÑим ÑазлиÑиÑм Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð»Ð°ÑÑоÑмами и даже Ñежимами опÑимизаÑии компилÑÑоÑа. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ ÑеалÑнÑÑ Ð·Ð½Ð°ÑимоÑÑÑ ÑÑÐ¸Ñ ÑазлиÑий, нÑжно ÑÑавниÑÑ Ð¸Ñ Ð³Ð»Ð°Ð·Ð°Ð¼Ð¸, поÑколÑÐºÑ Ð¾Ð±ÑÑно они ÑаÑполагаÑÑÑÑ Ñ Ð´ÐµÑÑÑого ÑазÑÑда ÑпÑава Ð¾Ñ Ð´ÐµÑÑÑиÑной ÑоÑки.
ÐекоÑоÑÑе ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваÑÑ Ð¼Ð¸Ð½ÑÑ Ð½Ð¾Ð»Ñ ÐºÐ°Ðº -0, Ñогда как дÑÑгие показÑваÑÑ Ð¿ÑоÑÑо 0.
ÐекоÑоÑÑе ÑиÑÑÐµÐ¼Ñ ÑигнализиÑÑÑÑ Ð¾Ð± оÑибкаÑ
в pow() и exp() не Ñак, как пÑÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ ÑекÑÑий PostgreSQL код.
30.2.5. РазниÑа в ÑоÑÑиÑовке ÑÑÑок
Ðногда наблÑдаÑÑÑÑ ÑазлиÑÐ¸Ñ Ð² Ñом, ÑÑо одни и Ñе же ÑÑÑоки вÑводÑÑÑÑ Ð² ином поÑÑдке, нежели в конÑÑолÑном Ñайле. РболÑÑинÑÑве ÑлÑÑаев ÑÑо не ÑвлÑеÑÑÑ, ÑÑÑого говоÑÑ, оÑибкой. ÐÑÐ½Ð¾Ð²Ð½Ð°Ñ ÑаÑÑÑ ÑкÑипÑов ÑегÑеÑÑионнÑÑ ÑеÑÑов не ÑÑÐ¾Ð»Ñ Ð¿ÐµÐ´Ð°Ð½ÑиÑна, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ ORDER BY Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ SELECT, и поÑÑÐ¾Ð¼Ñ Ð² ÑезÑлÑÑаÑе поÑÑдок ÑÑÑок не гаÑанÑиÑован ÑоглаÑно ÑпеÑиÑикаÑии SQL. Ðа пÑакÑике Ð¼Ñ Ð²Ð¸Ð´Ð¸Ð¼, как одинаковÑе запÑоÑÑ, вÑполнÑемÑе Ð´Ð»Ñ Ð¾Ð´Ð½Ð¸Ñ Ð¸ ÑÐµÑ Ð¶Ðµ даннÑÑ Ð½Ð° одном и Ñом же пÑогÑаммном обеÑпеÑении, вÑдаÑÑ ÑезÑлÑÑаÑÑ Ð² одинаковом поÑÑдке Ð´Ð»Ñ Ð²ÑÐµÑ Ð¿Ð»Ð°ÑÑоÑм, в ÑвÑзи Ñ Ñем оÑÑÑÑÑÑвие ORDER BY не ÑвлÑеÑÑÑ Ð¿Ñоблемой. Ðднако некоÑоÑÑе запÑоÑÑ Ð²ÑÑвлÑÑÑ Ð¼ÐµÐ¶Ð¿Ð»Ð°ÑÑоÑменнÑе ÑазлиÑÐ¸Ñ Ð² ÑоÑÑиÑовке. Ðогда ÑеÑÑиÑование Ð¸Ð´ÐµÑ Ð½Ð° Ñже ÑÑÑановленном ÑеÑвеÑе, ÑазлиÑÐ¸Ñ Ð² ÑоÑÑиÑовке могÑÑ Ð±ÑÑÑ ÑледÑÑвием Ñого, ÑÑо Ð»Ð¾ÐºÐ°Ð»Ñ ÑÑÑановлена в оÑлиÑное Ð¾Ñ Ð¡ знаÑение, или некоÑоÑÑе паÑамеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ñ Ð½Ðµ по ÑмолÑаниÑ, Ñакие как work_mem или ÑÑоимоÑÑнÑе паÑамеÑÑÑ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика.
ÐоÑÑомÑ, еÑли Ð²Ñ Ð²Ð¸Ð´Ð¸Ñе ÑазлиÑÐ¸Ñ Ð² ÑоÑÑиÑовке ÑÑÑок, не ÑÑÐ¾Ð¸Ñ Ð²Ð¾Ð»Ð½Ð¾Ð²Ð°ÑÑÑÑ, еÑли ÑолÑко запÑÐ¾Ñ Ð½Ðµ иÑполÑзÑÐµÑ ORDER BY. Тем не менее, ÑообÑайÑе нам о ÑÐ°ÐºÐ¸Ñ ÑлÑÑаÑÑ , ÑÑÐ¾Ð±Ñ Ð¼Ñ Ð¼Ð¾Ð³Ð»Ð¸ добавиÑÑ ORDER BY в конкÑеÑнÑй запÑоÑ, ÑÑÐ¾Ð±Ñ Ð¸ÑклÑÑиÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾Ñибки в бÑдÑÑÐ¸Ñ ÑÐµÐ»Ð¸Ð·Ð°Ñ .
ÐÑ Ð¼Ð¾Ð¶ÐµÑе задаÑÑ Ð²Ð¾Ð¿ÑоÑ, поÑÐµÐ¼Ñ Ð¼Ñ Ñвно не добавили ORDER BY во вÑе запÑоÑÑ ÑегÑеÑÑионнÑÑ ÑеÑÑов, ÑÑÐ¾Ð±Ñ Ð¸Ð·Ð±Ð°Ð²Ð¸ÑÑÑÑ Ð¾Ñ ÑÐ°ÐºÐ¸Ñ Ð¾Ñибок Ñаз и навÑегда. ÐÑиÑина в Ñом, ÑÑо ÑÑо ÑÐ½Ð¸Ð·Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ÑÑÑ ÑегÑеÑÑионнÑÑ ÑеÑÑов, поÑколÑÐºÑ Ð¾Ð½Ð¸ бÑдÑÑ Ð¸Ð¼ÐµÑÑ ÑенденÑÐ¸Ñ Ðº пÑовеÑке планов запÑоÑов иÑполÑзÑÑÑÐ¸Ñ ÑоÑÑиÑовкÑ, за ÑÑÑÑ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов без ÑоÑÑиÑовки.
30.2.6. ÐедоÑÑаÑоÑÐ½Ð°Ñ Ð³Ð»Ñбина ÑÑека
ÐÑли оÑибки ÑеÑÑа пÑиводÑÑ Ðº поломке ÑеÑвеÑа пÑи вÑполнении ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ select infinite_recurse(), ÑÑо ознаÑаеÑ, ÑÑо пÑедел плаÑÑоÑÐ¼Ñ Ð´Ð»Ñ ÑазмеÑа ÑÑека менÑÑе, Ñем показÑÐ²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑ max_stack_depth. ÐÑоблема Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑеÑена запÑÑком ÑеÑвеÑа Ñ Ð±Ð¾Ð»ÑÑим ÑазмеÑом ÑÑека (Ñекомендованное знаÑение max_stack_depth по ÑмолÑÐ°Ð½Ð¸Ñ - 4 Ðб). ÐÑли Ð²Ñ Ð½Ðµ можеÑе ÑÑого ÑделаÑÑ, в каÑеÑÑве алÑÑеÑнаÑÐ¸Ð²Ñ ÑменÑÑиÑе знаÑение max_stack_depth.
Ðа плаÑÑоÑмаÑ
, поддеÑживаÑÑиÑ
ÑÑнкÑÐ¸Ñ getrlimit(), ÑеÑÐ²ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ авÑомаÑиÑеÑки вÑбиÑаÑÑ Ð·Ð½Ð°Ñение пеÑеменной max_stack_depth; поÑÑомÑ, еÑли Ð²Ñ Ð½Ðµ пеÑепиÑÑвали ÑÑо знаÑение вÑÑÑнÑÑ, Ñбой Ñакого Ñипа â пÑоÑÑо деÑекÑ, коÑоÑÑй нÑжно заÑегиÑÑÑиÑоваÑÑ.
30.2.7. ТеÑÑ "ÑлÑÑайнÑÑ Ð·Ð½Ð°Ñений"
ТеÑÑовÑй ÑкÑÐ¸Ð¿Ñ random подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÑÑение ÑлÑÑайнÑÑ Ð·Ð½Ð°Ñений. РоÑÐµÐ½Ñ ÑÐµÐ´ÐºÐ¸Ñ ÑлÑÑаÑÑ ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑбоÑм в ÑегÑеÑÑионном ÑеÑÑиÑовании. ÐÑполнение
diff results/random.out expected/random.out
должно вÑводиÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð»Ð¸ неÑколÑко ÑÑÑок ÑазлиÑий. ÐÐµÑ Ð¿ÑиÑин Ð´Ð»Ñ Ð±ÐµÑпокойÑÑва, до ÑÐµÑ Ð¿Ð¾Ñ Ð¿Ð¾ÐºÐ° Ñбои в ÑÑом ÑеÑÑе не повÑоÑÑÑÑÑÑ Ð¿Ð¾ÑÑоÑнно.
30.2.8. ÐаÑамеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии
Ðогда ÑеÑÑиÑование пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ Ð½Ð° ÑÑÑеÑÑвÑÑÑей инÑÑаллÑÑии, некоÑоÑÑе неÑÑандаÑÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов могÑÑ Ð¿ÑивеÑÑи к ÑбоÑм в ÑеÑÑе. ÐапÑимеÑ, изменение ÑÐ°ÐºÐ¸Ñ Ð¿Ð°ÑамеÑÑов конÑигÑÑаÑии, как enable_seqscan или enable_indexscan могÑÑ Ð¿ÑивеÑÑи к ÑÐ°ÐºÐ¾Ð¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑиÑÑемÑ, коÑоÑое ÑÐ¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð´ÐµÐ¹ÑÑвоваÑÑ Ð½Ð° ÑезÑлÑÑаÑÑ ÑеÑÑов, иÑполÑзÑÑÑÐ¸Ñ EXPLAIN.
| ÐÑед. | ÐаÑало | След. |
| ÐÑполнение ÑеÑÑов | УÑÐ¾Ð²ÐµÐ½Ñ Ð²ÑÑе | ÐаÑиаÑивнÑе ÑÑавниÑелÑнÑе ÑÐ°Ð¹Ð»Ñ |