51.9. ФоÑмаÑÑ ÑообÑений логиÑеÑкой ÑепликаÑии
Ð ÑÑом Ñазделе подÑобно опиÑÑваеÑÑÑ ÑоÑÐ¼Ð°Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑообÑÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии. ÐÑи ÑообÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ вÑдаÑÑÑÑ ÑеÑез SQL-инÑеÑÑÐµÐ¹Ñ ÑлоÑа ÑепликаÑии или пеÑедаÑÑÑÑ Ð¿ÑоÑеÑÑом walsender. Ðогда Ð¸Ñ Ð¿ÐµÑедаÑÑ walsender, они помеÑаÑÑÑÑ Ð²Ð½ÑÑÑÑ WAL-ÑообÑений пÑоÑокола ÑепликаÑии, опиÑаннÑÑ Ð² Разделе 51.4, и в обÑем ÑледÑÑÑ ÑÐ¾Ð¼Ñ Ð¶Ðµ поÑÐ¾ÐºÑ ÑообÑений, ÑÑо и ÑообÑÐµÐ½Ð¸Ñ ÑизиÑеÑкой ÑепликаÑии.
- Begin
- Byte1('B')
УказÑваеÑ, ÑÑо ÑÑо наÑалÑное ÑообÑение.
- Int64
ÐконÑаÑелÑнÑй LSN ÑÑанзакÑии.
- Int64
ÐÑÐµÐ¼Ñ ÑикÑаÑии ÑÑанзакÑии. ÐнаÑение задаÑÑÑÑ Ð² микÑоÑекÑÐ½Ð´Ð°Ñ , пÑоÑедÑÐ¸Ñ Ñ Ð½Ð°Ñала ÑÐ¿Ð¾Ñ Ð¸ Postgres Pro (2000-01-01).
- Int32
ÐденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии.
- Commit
- Byte1('C')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение о ÑикÑаÑии.
- Int8
Флаги; в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ иÑполÑзÑÑÑÑÑ (поле должно ÑодеÑжаÑÑ 0).
- Int64
LSN запиÑи ÑикÑаÑии.
- Int64
ÐонеÑнÑй LSN ÑÑанзакÑии.
- Int64
ÐÑÐµÐ¼Ñ ÑикÑаÑии ÑÑанзакÑии. ÐнаÑение задаÑÑÑÑ Ð² микÑоÑекÑÐ½Ð´Ð°Ñ , пÑоÑедÑÐ¸Ñ Ñ Ð½Ð°Ñала ÑÐ¿Ð¾Ñ Ð¸ Postgres Pro (2000-01-01).
- Origin
- Byte1('O')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение об иÑÑоÑнике.
- Int64
LSN запиÑи ÑикÑаÑии на ÑеÑвеÑе-иÑÑоÑнике.
- String
ÐÐ¼Ñ Ð¸ÑÑоÑника.
ÐамеÑÑÑе, ÑÑо внÑÑÑи одной ÑÑанзакÑии Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑколÑко ÑообÑений Origin.
- Relation
- Byte1('R')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение об оÑноÑении.
- Int32
ÐденÑиÑикаÑÐ¾Ñ Ð¾ÑноÑениÑ.
- String
ÐÑоÑÑÑанÑÑво имÑн (пÑÑÑÐ°Ñ ÑÑÑока длÑ
pg_catalog).- String
ÐÐ¼Ñ Ð¾ÑноÑениÑ.
- Int8
СвойÑÑво иденÑиÑикаÑии Ñеплики Ð´Ð»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ (Ñо же, ÑÑо и
relreplidentвpg_class).- Int16
ЧиÑло ÑÑолбÑов.
ÐаÑем Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа идÑÑ ÑледÑÑÑий блок ÑообÑениÑ:
- Int8
Флаги ÑÑолбÑа. РнаÑÑоÑÑее вÑÐµÐ¼Ñ ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ 0 (Ñлагов неÑ) или 1 (ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ð¾Ð¼ÐµÑаеÑÑÑ ÐºÐ°Ðº ÑаÑÑÑ ÐºÐ»ÑÑа).
- String
ÐÐ¼Ñ ÑÑолбÑа.
- Int32
ÐденÑиÑикаÑÐ¾Ñ Ñипа даннÑÑ ÑÑолбÑа.
- Int32
ÐодиÑикаÑÐ¾Ñ Ñипа ÑÑолбÑа (
atttypmod).
- Тип
- Byte1('Y')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение о Ñипе.
- Int32
ÐденÑиÑикаÑÐ¾Ñ Ñипа даннÑÑ .
- String
ÐÑоÑÑÑанÑÑво имÑн (пÑÑÑÐ°Ñ ÑÑÑока длÑ
pg_catalog).- String
ÐÐ¼Ñ Ñипа даннÑÑ .
- Insert
- Byte1('I')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение о добавлении даннÑÑ .
- Int32
ÐденÑиÑикаÑÐ¾Ñ Ð¾ÑноÑениÑ, ÑооÑвеÑÑÑвÑÑÑий иденÑиÑикаÑоÑÑ Ð² ÑообÑении об оÑноÑении.
- Byte1('N')
ÐбознаÑÐ°ÐµÑ ÑледÑÑÑее ÑообÑение TupleData как ÑодеÑжаÑее новÑй коÑÑеж.
- TupleData
Ðлок ÑообÑÐµÐ½Ð¸Ñ TupleData, пÑедÑÑавлÑÑÑий ÑодеÑжимое нового коÑÑежа.
- Update
- Byte1('U')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение об изменении даннÑÑ .
- Int32
ÐденÑиÑикаÑÐ¾Ñ Ð¾ÑноÑениÑ, ÑооÑвеÑÑÑвÑÑÑий иденÑиÑикаÑоÑÑ Ð² ÑообÑении об оÑноÑении.
- Byte1('K')
УказÑваеÑ, ÑÑо ÑледÑÑÑий блок TupleData ÑодеÑÐ¶Ð¸Ñ ÐºÐ»ÑÑ. ÐÑо поле ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑм и пÑиÑÑÑÑÑвÑеÑ, ÑолÑко еÑли изменение заÑÑонÑло ÑÑолбÑÑ, ÑвлÑÑÑиеÑÑ ÑаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑа REPLICA IDENTITY.
- Byte1('O')
УказÑваеÑ, ÑÑо ÑледÑÑÑий блок TupleData ÑодеÑÐ¶Ð¸Ñ ÑÑаÑÑй коÑÑеж. ÐÑо поле ÑвлÑеÑÑÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑм и пÑиÑÑÑÑÑвÑеÑ, ÑолÑко еÑли Ñ ÑаблиÑÑ, в коÑоÑой пÑоизоÑло изменение, ÑвойÑÑво REPLICA IDENTITY Ñавно FULL.
- TupleData
Ðлок ÑообÑÐµÐ½Ð¸Ñ TupleData, пÑедÑÑавлÑÑÑий ÑодеÑжимое ÑÑаÑого коÑÑежа или пеÑвиÑного клÑÑа. ÐÑиÑÑÑÑÑвÑеÑ, ÑолÑко еÑли пеÑед ним идÑÑ Ð¿Ñизнак 'O' или 'K'.
- Byte1('N')
ÐбознаÑÐ°ÐµÑ ÑледÑÑÑее ÑообÑение TupleData как ÑодеÑжаÑее новÑй коÑÑеж.
- TupleData
Ðлок ÑообÑÐµÐ½Ð¸Ñ TupleData, пÑедÑÑавлÑÑÑий ÑодеÑжимое нового коÑÑежа.
СообÑение Update Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð»Ð¸Ð±Ð¾ блок 'K', либо блок 'O', либо ни один из Ð½Ð¸Ñ , но не оба ÑÑазÑ.
- Delete
- Byte1('D')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение об Ñдалении даннÑÑ .
- Int32
ÐденÑиÑикаÑÐ¾Ñ Ð¾ÑноÑениÑ, ÑооÑвеÑÑÑвÑÑÑий иденÑиÑикаÑоÑÑ Ð² ÑообÑении об оÑноÑении.
- Byte1('K')
УказÑваеÑ, ÑÑо ÑледÑÑÑий блок TupleData ÑодеÑÐ¶Ð¸Ñ ÐºÐ»ÑÑ. ÐÑо поле пÑиÑÑÑÑÑвÑеÑ, еÑли ÑаблиÑа, в коÑоÑой пÑоизоÑло Ñдаление, иÑполÑзÑÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð² каÑеÑÑве REPLICA IDENTITY.
- Byte1('O')
УказÑваеÑ, ÑÑо ÑледÑÑÑий блок TupleData ÑодеÑÐ¶Ð¸Ñ ÑÑаÑÑй коÑÑеж. ÐÑо поле пÑиÑÑÑÑÑвÑеÑ, еÑли Ñ ÑаблиÑÑ, в коÑоÑой пÑоизоÑло Ñдаление, ÑвойÑÑво REPLICA IDENTITY Ñавно FULL.
- TupleData
Ðлок ÑообÑÐµÐ½Ð¸Ñ TupleData, пÑедÑÑавлÑÑÑий ÑодеÑжимое ÑÑаÑого коÑÑежа или пеÑвиÑного клÑÑа, в завиÑимоÑÑи Ð¾Ñ Ð¿ÑедÑдÑÑего полÑ.
СообÑение Delete Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð»Ð¸Ð±Ð¾ блок 'K', либо блок 'O', но не оба ÑÑазÑ.
- Truncate
- Byte1('T')
УказÑваеÑ, ÑÑо ÑÑо ÑообÑение об ÑÑеÑении оÑноÑений.
- Int32
ЧиÑло оÑноÑений.
- Int8
ÐиÑовÑе Ñлаги длÑ
TRUNCATE: 1 ÑооÑвеÑÑÑвÑÐµÑ ÑказаниÑCASCADE, 2 âRESTART IDENTITY.- Int32
ÐденÑиÑикаÑÐ¾Ñ Ð¾ÑноÑениÑ, ÑооÑвеÑÑÑвÑÑÑий иденÑиÑикаÑоÑÑ Ð² ÑообÑении об оÑноÑении. ÐÑо поле повÑоÑÑÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ оÑноÑениÑ.
ÐпиÑаннÑе вÑÑе ÑообÑÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÑÑ ÑледÑÑÑие обÑие блоки.
- TupleData
- Int16
ЧиÑло ÑÑолбÑов.
ÐаÑем Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа ÑледÑÐµÑ Ð¾Ð´Ð¸Ð½ из ÑледÑÑÑÐ¸Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа:
- Byte1('n')
ÐбознаÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе как знаÑение NULL.
Ðли
- Byte1('u')
ÐбознаÑÐ°ÐµÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ñнное знаÑение TOAST (Ñамо знаÑение не пеÑедаÑÑÑÑ).
Ðли
- Byte1('t')
ÐбознаÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе как знаÑение в ÑекÑÑовом ÑоÑмаÑе.
- Int32
Ðлина знаÑÐµÐ½Ð¸Ñ ÑÑолбÑа.
- Byte
n ÐнаÑение ÑÑолбÑа в ÑекÑÑовом ÑоÑмаÑе. (РбÑдÑÑÐ¸Ñ Ð²ÑпÑÑÐºÐ°Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð¸ дÑÑгие ÑоÑмаÑÑ.) ÐдеÑÑ
nâ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÑÑе длина.