52.10. Сводка изменений по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿ÑоÑоколом веÑÑии 2.0
Ð ÑÑом Ñазделе пÑедÑÑавлен кÑаÑкий ÑпиÑок изменений к ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ ÑазÑабоÑÑиков, желаÑÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÑнизиÑоваÑÑ ÑÑÑеÑÑвÑÑÑие клиенÑÑкие библиоÑеки до пÑоÑокола 3.0.
РнаÑалÑном ÑÑаÑÑовом пакеÑе вмеÑÑо ÑикÑиÑованного ÑоÑмаÑа пÑименÑеÑÑÑ Ð³Ð¸Ð±ÐºÐ¸Ð¹ ÑоÑÐ¼Ð°Ñ ÑпиÑка ÑÑÑок. ÐамеÑÑÑе, ÑÑо ÑепеÑÑ ÑеанÑовÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑов вÑемени вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно в ÑÑаÑÑовом пакеÑе. (ÐообÑе, ÑÑо можно бÑло делаÑÑ Ð¸ ÑанÑÑе, иÑполÑзÑÑ Ð¿Ð¾Ð»Ðµ options, но из-за огÑаниÑенного ÑазмеÑа options и невозможноÑÑи задаваÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ñ Ð¿Ñобелами, ÑÑо ваÑÐ¸Ð°Ð½Ñ Ð±Ñл не оÑÐµÐ½Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм.)
Ðо вÑÐµÑ ÑообÑениÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно за байÑом Ñипа ÑообÑÐµÐ½Ð¸Ñ ÑледÑÐµÑ ÑÑÑÑÑик Ð´Ð»Ð¸Ð½Ñ (за иÑклÑÑением ÑÑаÑÑовÑÑ Ð¿Ð°ÐºÐµÑов, в коÑоÑÑÑ Ð½ÐµÑ Ð±Ð°Ð¹Ñа Ñипа). Также замеÑÑÑе, ÑÑо Ð±Ð°Ð¹Ñ Ñипа ÑепеÑÑ ÐµÑÑÑ Ð² ÑообÑении PasswordMessage.
СообÑÐµÐ½Ð¸Ñ ErrorResponse и NoticeResponse ('E' и 'N') могÑÑ ÑодеÑжаÑÑ Ð½ÐµÑколÑко полей, из коÑоÑÑÑ
клиенÑÑкий код Ð¼Ð¾Ð¶ÐµÑ ÑобÑаÑÑ ÑообÑение об оÑибке желаемого ÑÑÐ¾Ð²Ð½Ñ Ð´ÐµÑализаÑии. ÐамеÑÑÑе, ÑÑо ÑекÑÑ Ð¾ÑделÑнÑÑ
полей обÑÑно не завеÑÑаеÑÑÑ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑÑокой, Ñогда как в ÑÑаÑом пÑоÑоколе одиноÑÐ½Ð°Ñ ÑÑÑока вÑегда завеÑÑалаÑÑ Ñак.
СообÑение ReadyForQuery ('Z') вклÑÑÐ°ÐµÑ Ð¸Ð½Ð´Ð¸ÐºÐ°ÑÐ¾Ñ ÑÑаÑÑÑа ÑÑанзакÑии.
РазлиÑие Ð¼ÐµÐ¶Ð´Ñ Ñипами даннÑÑ BinaryRow и DataRow ÑÑло; один Ñип ÑообÑений DataRow позволÑÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð´Ð°Ð½Ð½Ñе во вÑÐµÑ ÑоÑмаÑÐ°Ñ . ÐамеÑÑÑе, ÑÑо ÑоÑÐ¼Ð°Ñ DataRow бÑл изменÑн Ð´Ð»Ñ ÑпÑоÑÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ ÑазбоÑа. Также изменилоÑÑ Ð¿ÑедÑÑавление двоиÑнÑÑ Ð·Ð½Ð°Ñений: оно болÑÑе не пÑивÑзано к внÑÑÑÐµÐ½Ð½ÐµÐ¼Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑеÑвеÑа.
РпÑоÑоколе поÑвилÑÑ Ð½Ð¾Ð²Ñй Ñаздел «ÑаÑÑиÑеннÑй пÑоÑокол запÑоÑов», в коÑоÑом Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ ÑÐ¸Ð¿Ñ ÑообÑений Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ Parse, Bind, Execute, Describe, Close, Flush и Sync, а Ñакже ÑÐ¸Ð¿Ñ ÑеÑвеÑнÑÑ ÑообÑений ParseComplete, BindComplete, PortalSuspended, ParameterDescription, NoData и CloseComplete. СÑÑеÑÑвÑÑÑие клиенÑÑ Ð¼Ð¾Ð³ÑÑ Ð½Ðµ подÑÑÑаиваÑÑÑÑ Ð¿Ð¾Ð´ ÑÑÐ¾Ñ Ñаздел пÑоÑокола, но еÑли они задейÑÑвÑÐµÑ ÐµÐ³Ð¾, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑлÑÑÑиÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð¸Ð»Ð¸ ÑÑнкÑионалÑноÑÑÑ.
ÐаннÑе COPY ÑепеÑÑ Ð²Ð½ÐµÐ´ÑÑÑÑÑÑ Ð² ÑообÑÐµÐ½Ð¸Ñ CopyData и CopyDone. ÐÑÑÑ ÑÑÑко опÑеделÑннÑй ÑпоÑоб воÑÑÑановиÑÑ ÑабоÑÑ Ð² ÑлÑÑае оÑибок в пÑоÑеÑÑе COPY. СпеÑиалÑÐ½Ð°Ñ Ð¿Ð¾ÑледнÑÑ ÑÑÑока «\.» болÑÑе не нÑжна, она не пеÑедаÑÑÑÑ Ð¿Ñи вÑполнении COPY OUT. (Ðна по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð²Ð¾ÑпÑинимаеÑÑÑ ÐºÐ°Ðº завеÑÑаÑÑÐ°Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð² поÑоке COPY IN, но ÑÑо ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим ÑпоÑобом завеÑÑениÑ, и в конÑе конÑов он бÑÐ´ÐµÑ Ð¸ÑклÑÑÑн.) ÐоддеÑживаеÑÑÑ COPY в двоиÑном Ñежиме. СообÑÐµÐ½Ð¸Ñ CopyInResponse и CopyOutResponse вклÑÑаÑÑ Ð¿Ð¾Ð»Ñ, опÑеделÑÑÑие ÑиÑло ÑÑолбÑов и ÑоÑÐ¼Ð°Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа.
ÐзменилаÑÑ ÑÑÑÑкÑÑÑа ÑообÑений FunctionCall и FunctionCallResponse. СообÑение FunctionCall ÑепеÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿ÐµÑедаваÑÑ ÑÑнкÑиÑм аÑгÑменÑÑ NULL. ÐÑÑ Ð² нÑм могÑÑ Ð¿ÐµÑедаваÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ Ð¸ полÑÑаÑÑÑÑ ÑезÑлÑÑаÑÑ Ð² ÑекÑÑовом или двоиÑном ÑоÑмаÑе. Ðе оÑÑалоÑÑ Ð¿Ð¾Ð²Ð¾Ð´Ð° ÑÑиÑаÑÑ ÑообÑение FunctionCall поÑенÑиалÑно небезопаÑнÑм, Ñак как оно не даÑÑ Ð¿ÑÑмого доÑÑÑпа к внÑÑÑенней пÑезенÑаÑии даннÑÑ Ð½Ð° ÑеÑвеÑе.
СеÑÐ²ÐµÑ Ð¾ÑпÑавлÑÐµÑ ÑообÑÐµÐ½Ð¸Ñ ParameterStatus ('S') пÑи попÑÑке подклÑÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð²ÑеÑ
паÑамеÑÑов, коÑоÑÑе он ÑÑиÑÐ°ÐµÑ Ð¸Ð½ÑеÑеÑнÑми Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½ÑÑкой библиоÑеки. Ðак ÑледÑÑвие, пÑи лÑбом изменении акÑивного знаÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из ÑÑиÑ
паÑамеÑÑов Ñакже вÑдаÑÑÑÑ ÑообÑение ParameterStatus.
СообÑение RowDescription ('T') ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð»Ñ Ñ OID ÑаблиÑÑ Ð¸ номеÑом ÑÑолбÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа опиÑÑваемой ÑÑÑоки. РнÑм Ñакже пеÑедаÑÑÑÑ ÐºÐ¾Ð´ ÑоÑмаÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа.
СеÑÐ²ÐµÑ Ð±Ð¾Ð»ÐµÐµ не вÑдаÑÑ ÑообÑение CursorResponse ('P').
Ð ÑообÑении NotificationResponse ('A') добавилоÑÑ ÐµÑÑ Ð¾Ð´Ð½Ð¾ ÑÑÑоковое поле, в коÑоÑом Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ ÑÑÑока «ÑообÑениÑ» Ð¾Ñ Ð¾ÑпÑавиÑÐµÐ»Ñ ÑобÑÑÐ¸Ñ NOTIFY.
РанÑÑе ÑообÑение EmptyQueryResponse ('I') вклÑÑало пÑÑÑой ÑÑÑоковÑй паÑамеÑÑ; ÑепеÑÑ Ð¾Ð½ ликвидиÑован.