| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 28. ¸®±×·¿¼ÇÅ×½ºÆ® | Fast Forward | Next |
ÀûÀýÇÏ°Ô ¼³Ä¡µÇ¾î, ¸ðµç ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Â °Í °°Àº PostgreSQL ¼³Ä¡¿©µµ, ´Ù¾çÇÑ ºÎµ¿ ¼Ò¼öÁ¡ÀÇ Ç¥ÇöÀ̳ª ¸Þ¼¼Áö¿Í °°Àº, ¾î´À Ç÷§Æû ƯÀ¯ÀÇ ¿ÀÂ÷¸¦ ¶§¹®¿¡ ¸®½º·¹¼Ç Å×½ºÆ®¸¦ "½ÇÆÐ"ÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÇöÀçÀÇ Å×½ºÆ®´Â ´Ü¼øÇϰÔ, ·¹ÆÛ·±½º ½Ã½ºÅÛ¿¡¼ »ý¼ºÇÑ Ãâ·Â°ú diff¸¦ ºñ±³ÇÏ¿© °á°ú¸¦ °ËÁõÇϰí Àֱ⠶§¹®¿¡, »ç¼ÒÇÑ ½Ã½ºÅÛÀÇ Â÷ÀÌ¿¡µµ ¹ÝÀÀÇÕ´Ï´Ù. °á°ú°¡ "½ÇÆÐ"·Î ³ªÅ¸³ª¸é, Ç×»ó ¿¹ÃøÇß´ø °á°ú¿Í ½ÇÁ¦ °á°úÀÇ Â÷À̸¦ »ìÆìº¸¾Æ ÁÖ¼¼¿ä. ±×·¯ÇÑ Â÷À̰¡ Áß´ëÇÏÁö ¾Ê´Â °ÍÀ¸·Î ÆÇ¸íµÇ±âµµ ÇÕ´Ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó, ¸ðµç Å×½ºÆ®°¡ ¼º°øÇϵµ·Ï, Áö¿øÇÏ´Â ¸ðµç Ç÷§Æû¿¡ ´ëÇÑ Á¤È®ÇÑ ÂüÁ¶ ÆÄÀÏÀÇ º¸¼ö¿¡ ³ë·ÂÇϰí ÀÖ½À´Ï´Ù.
½ÇÁ¦ÀÇ ¸®±×·¿¼ÇÅ×½ºÆ®ÀÇ Ãâ·Â¹°Àº src/test/regress/resultsµð·ºÅ丮³»ÀÇ ÆÄÀÏ¿¡ ÀÖ½À´Ï´Ù. Å×½ºÆ® ½ºÅ©¸³Æ®´Â diff¸¦ »ç¿ëÇØ, °¢ Ãâ·Â ÆÄÀϰú src/test/regress/expectedµð·ºÅ丮³»ÀÇ ÂüÁ¶¿ë Ãâ·ÂÀ» ºñ±³ÇÕ´Ï´Ù. ¸ðµç Â÷ÀÌ´Â °Ë»çÀ» À§ÇØ src/test/regress/regression.diffs¿¡ º¸Á¸µË´Ï´Ù (ȤÀº, ½º½º·Î diff¸¦ ½ÇÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù).
¾î¶°ÇÑ ÀÌÀ¯·Î, ƯÁ¤ÀÇ Ç÷§ÆûÀÌ ÁöÁ¤ÇÑ Å×½ºÆ®°¡ "½ÇÆÐ"ÇßÀ» ¶§, ±× Ãâ·ÂÀÇ °Ë»ç °á°ú°¡ À¯È¿ÇÏ´Ù°í È®½ÅÇÒ °æ¿ì, »õ·Î¿î ºñ±³¿ë ÆÄÀÏÀ» Ãß°¡ÇØ, ÇâÈÄÀÇ Å×½ºÆ®¿¡¼ ½ÇÆÐ º¸°í°¡ ¹ß»ýÇÏÁö ¾Ê°Ô ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Section 28.3À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
¸®±×·¿¼ÇÅ×½ºÆ®ÀÇ ¸î °³´Â °íÀÇ·Î ¹«È¿ÀÎ ÀԷ°ªÀ» »ç¿ëÇÕ´Ï´Ù. ¿¡·¯ ¸Þ¼¼Áö´Â PostgreSQLÀÇ Äڵ峪 »ç¿ëÇϰí ÀÖ´Â Ç÷§ÆûÀÇ ÇÔ¼ö¿¡ ÀÇÇÏ´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ÈÄÀÚÀÇ °æ¿ì, Ç÷§Æû¿¡ ÀÇÇØ Â÷À̰¡ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù¸¸, ºñ½ÁÇÑ ³»¿ëÀÏ °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼¼ÁöÀÇ Â÷ÀÌ¿¡ ÀÇÇØ ¸®±×·¿¼ÇÅ×½ºÆ®°¡ "½ÇÆÐ"ÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù¸¸, À̰͵éÀº Å×½ºÆ®·Î È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ¹Ì ¼³Ä¡µÈ C·ÎÄÉÀÏ ÀÌ¿ÜÀÇ Á¶ÇÕ¼ø¼ ·ÎÄÉÀÏ·Î ÃʱâÈµÈ ¼¹ö¿¡ ´ëÇØ¼ Å×½ºÆ®¸¦ ½ÇÇàÇÏ·Á¸é , Á¤·Ä¼ø¼³ª Æú·Î ¾÷ÀÇ ½ÇÆÐ¿¡ ÀÇÇØ Â÷À̰¡ »ý±æ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¸®±×·¿¼ÇÅ×½ºÆ®½ºÀ§Æ®´Â ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ, ¸¹Àº ·ÎÄÉÀÏÀ» ó¸®Çϱâ À§ÇÑ ´ëü °á°ú ÆÄÀÏÀ» Á¦°øÇϵµ·Ï ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù.
´ëºÎºÐÀÇ ÀÏÀÚ¿Í ½Ã°£ÀÇ °á°ú´Â ½Ã°£´ëÀÇ È¯°æ¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. ÂüÁ¶ °á°úÀÇ ÆÄÀÏÀº PST8PDT½Ã°£´ë(͏®Æ÷´Ï¾ÆÁÖ ¹öÅ© ·¹ÀÌ)¸¦ ±âÁØ¿¡ »ý¼ºµÇ°í ÀÖ½À´Ï´Ù. µû¶ó¼, Å×½ºÆ®°¡ ÀÌ ½Ã°£´ë¿¡ ½ÇÇàµÇÁö ¾ÊÀ¸¸é ºÐ¸íÈ÷ ½ÇÆÐ·Î ³¡³¯ °ÍÀÔ´Ï´Ù. ¸®±×·¿¼ÇÅ×½ºÆ®ÀÇ µå¶óÀ̹ö´Â °á°ú°¡ ¹Ù¸£°Ô µÇµµ·Ï, PGTZȯ°æ º¯¼ö¸¦ PST8PDT·Î ¼³Á¤ÇÕ´Ï´Ù.
64 ºñÆ®(double precisionÇü)ÀÇ ºÎµ¿ ¼Ò¼öÁ¡¼ö(½Ç¼ö)Ä¡¸¦ Å×À̺íÀÇ ¿·ÎºÎÅÍ ²¨³» °è»êÇÏ´Â Å×½ºÆ®°¡ ÀÖ½À´Ï´Ù. double precision¿¿¡ ÀÖ¾î¼ÀÇ ¼öÇÐ ¿¬»ê ÇÔ¼ö¿¡¼´Â, ´Ù¸¥ °á°ú°¡ ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. float8¿Í geometryÅ×½ºÆ®´Â ƯÈ÷, Ç÷§Æû °£ ¶Ç´Â ÄÄÆÄÀÏ·¯ÀÇ ÃÖÀûÈ ¿É¼Ç¿¡ ÀÇÇÑ ÀÛÀº Â÷À̰¡ ÀϾ±â ½±½À´Ï´Ù. ÀÌ·¯ÇÑ Â÷À̰¡ Áß¿äÇÑÁö ¾Æ´Ï¸é ¹«½ÃÇÒ ¼ö ÀÖ´ÂÁö´Â, »ç¶÷ÀÇ ´«À¸·Î ½ÇÁ¦·Î È®ÀÎÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. Åë»óÀûÀ¸·Î´Â ¼Ò¼öÁ¡ ÀÌÇÏ 10 ÀÚ¸®¼ö°°¡ µÉ °ÍÀÔ´Ï´Ù.
½Ã½ºÅÛ¿¡ µû¶ó ¸¶À̳ʽº 0À» -0À̶ó°í Ç¥½ÃÇϸç, 0¸¸À¸·Îµµ Ç¥½ÃÇϱ⵵ ÇÕ´Ï´Ù.
½Ã½ºÅÛ¿¡ µû¶ó¼ ÇöÀçÀÇ PostgreSQLÀÇ Äڵ尡 »óÁ¤ÇÏ´Â ¸ÞÄ¿´ÏÁò°ú ´Ù¸£±â ¶§¹®¿¡,
pow()¿Í exp()ÀÇ ¿¡·¯¸¦ ¹ß»ýÇϱ⵵ ÇÕ´Ï´Ù.
°°Àº ÇàÀÇ Ãâ·ÂÀÌ ¿¹»óµÈ ÆÄÀÏÀÇ ¼ø¼¿Í ´Ù¸¥ °æ¿ì°¡ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, À̰ÍÀº ¾ö¹ÐÇÏ°Ô ¸»ÇØ ¹ö±×°¡ ¾Æ´Õ´Ï´Ù. ´ëºÎºÐÀÇ ¸®±×·¿¼ÇÅ×½ºÆ®´Â °¢ SELECT¹®¿¡ ´ëÇØ¼ ORDER BY¸¦ »ç¿ëÇÏ´Â ±ÔÄ¢ÀÌ ¾î·ÆÁö ¾Ê°í, ±× ¶§¹®¿¡, °á°úÀÇ ÇàÀÇ ¼ø¼´Â SQLÀÇ »ç¾ç¿¡ µû¶ó ¸íÈ®ÇÏ°Ô Á¤ÇØÁ® ÀÖÁö ¾Ê½À´Ï´Ù. ½ÇÁ¦·Î´Â, °°Àº ¼ÒÇÁÆ®¿þ¾î·Î °°Àº µ¥ÀÌÅ͸¦ °°Àº Äõ¸®·Î ÂüÁ¶Çϰí ÀÖÀ¸¹Ç·Î ¸ðµç Ç÷§Æû¿¡¼ °°Àº ¼ø¼ÀÇ °á°ú°¡ ³ª¿À±â ¶§¹®¿¡, ORDER BY°¡ ¾ø´Â °ÍÀÌ ¹®Á¦´Â ¾Æ´Ï¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, Äõ¸®¿¡ µû¶ó¼´Â, Ç÷§Æû °£ÀÇ ¼ø¼ÀÇ Â÷À̰¡ ÀϾ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¼³Ä¡°¡ ³¡³ ¼¹ö¿¡ ´ëÇØ¼ Å×½ºÆ®¸¦ ½Ç½ÃÇÏ´Â °æ¿ì, C ÀÌ¿ÜÀÇ ·ÎÄÉÀÏ, ±×¸®°í µ¶ÀÚÀûÀÎ work_mem³ª µ¶ÀÚÀûÀÎ Ç÷¡³ÊÀÇ ºñ¿ë ¸Å°³º¯¼ö µî°ú °°Àº ±âº»°ª ÀÌ¿ÜÀÇ ¸Å°³º¯¼ö ¼³Á¤¿¡ ÀÇÇØ ¼ø¼ÀÇ Â÷À̰¡ »ý±æ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
µû¶ó¼, ¼ø¼ÀÇ Â÷À̰¡ ÀϾÀ» ¶§, Äõ¸®¿¡ ORDER BY°¡ Æ÷ÇԵǾî ÀÖ¾î ¼ø¼¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â °æ¿ì À̿ܿ¡´Â ½Å°æ¾²Áö ¸»¾Æ ÁÖ¼¼¿ä. ±×·¯³ª, ƯÁ¤ÀÇ Äõ¸®¿¡ ORDER BY¸¦ Ãß°¡ÇØ, ÇâÈÄ ¸±¸®½º¿¡ °ÅÁþ "½ÇÆÐ"¸¦ ¾ø¾Ö±â À§Çؼ º¸°íÇØÁÖ¼¼¿ä.
¸®±×·¿¼ÇÅ×½ºÆ®ÀÇ Äõ¸®¿¡ ¼ø¼ °ü·ÃÀÇ ¸í·ÉÀ» »ðÀÔÇÏÁö ¾Ê´Â °ÍÀº, Çʿ䰡 ¾ø´Â Äõ¸®¿¡ ´ëÇØ¼µµ Äõ¸® °èȹÇüÀ» ½ÇÇàÇÏ·Á°í ÇÏ´Â °Í µî°ú °°Àº ¸®±×·¿¼ÇÅ×½ºÆ®ÀÇ ÀÇÀǸ¦ ¹Ý´ë·Î ¹Ý°¨½ÃŰ´Â ÀÌÀ¯ ¶§¹®ÀÔ´Ï´Ù.
errors°¡ select infinite_recurse()¸í·ÉÀ¸·Î ¼¹ö¸¦ Å©·¡½¬ ½ÃÄ×À» °æ¿ì, Ç÷§ÆûÀÇ ÇÁ·Î¼¼½º ½ºÅà »çÀÌÁî°¡ max_stack_depth ¸Å°³º¯¼ö°¡ °¡¸®Å°´Â °ªº¸´Ù ÀÛÀº °ÍÀ» ÀǹÌÇÕ´Ï´Ù. À̰ÍÀº, ½ºÅà »çÀÌÁî Á¦ÇÑÀ» ³ô°Ô ÇØ ¼¹ö¸¦ ½ÇÇàÇÏ´Â °ÍÀ¸·Î ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù(max_stack_depthÀÇ ±âº»°ªÀÇ Ãßõ°ªÀº 4 ¸Þ°¡¹ÙÀÌÆ®). À̰ÍÀ» ½Ç½ÃÇÒ ¼ö°¡ ¾ø´Â °æ¿ì, max_stack_depthÀÇ °ªÀ» ÁÙÀÌ´Â °ÍÀÌ ´ë¾ÈÀÔ´Ï´Ù.
randomÅ×½ºÆ® ½ºÅ©¸³Æ®´Â, ¹«ÀÛÀ§ °á°ú¸¦ »ý¼ºÇÏ´Â °ÍÀ» ¸ñÀûÀ¸·Î Çϰí ÀÖ½À´Ï´Ù. ·£´ý ¸®±×·¿¼ÇÅ×½ºÆ®´Â µå¹°°Ô ½ÇÆÐ·Î ³¡³³´Ï´Ù. ´ÙÀ½°ú °°ÀÌ,
diff results/random.out expected/random.out
¶ó°í ÀÔ·ÂÇϸé, ´ÜÁö ¸î ÁÙÀÇ Â÷À̰¡ »ý±æ °ÍÀÔ´Ï´Ù. ¹Ýº¹ÀûÀ¸·Î ½ÇÆÐÇÏÁö ¾Ê´Â ÇÑ, ½Å°æ ¾µ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.