الانتقال إلى المحتوى الرئيسي

الوصف

يشبه تنسيق RowBinaryWithNamesAndTypes، ولكن مع بايت إضافي قبل كل خلية يحدّد ما إذا كان ينبغي استخدام القيمة DEFAULT الخاصة بالعمود — تمامًا كما في تنسيق RowBinaryWithDefaults. يدعم هذا الدمج عمليات INSERT القابلة للتكيّف مع تغيّر المخطط: إذ يمكن للكاتب حذف أعمدة من الترويسة (فتأخذ القيمة DEFAULT الخاصة بالعمود الهدف)، وبالنسبة إلى أي عمود يرسله، يمكنه تعليم خلايا منفردة على أنها “استخدم القيمة DEFAULT الخاصة بالعمود” من دون الخلط بين ذلك وبين NULL. هذا التنسيق مخصّص للإدخال فقط.

التنسيق السلكي

الترويسة مطابقة لـ RowBinaryWithNamesAndTypes:
  1. قيمة VarUInt تتضمن عدد الأعمدة N.
  2. N من قيم String المسبوقة بالطول، وتحتوي على أسماء الأعمدة.
  3. N من أنواع الأعمدة — إما أسماء نصية أو ترميزًا ثنائيًا مضغوطًا، وذلك وفقًا لإعدادات output_format_binary_encode_types_in_binary_format / input_format_binary_decode_types_in_binary_format.
بعد الترويسة، يتكوّن كل صف من N خلية. ولكل خلية:
  • بايت وسم واحد من نوع UInt8.
    • 0x01 — استخدم التعبير DEFAULT الخاص بالعمود الهدف. ولا تتبعه أي بايتات للقيمة.
    • 0x00 — تتبعه قيمة، وتُسلسَل باستخدام مُسلسِل RowBinary الخاص بنوع العمود. بالنسبة إلى Nullable(T)، تبدأ بايتات القيمة ببايت NULL الخاص بـ Nullable (0 للقيم غير NULL، و1 لـ NULL)، ثم القيمة الداخلية إذا لم تكن NULL.

القيم الافتراضية مقابل NULL

مؤشر القيمة الافتراضية لكل خلية وبايت null المضمّن في Nullable مستقلان عن بعضهما. ويمكن إرسال عمود Nullable(UInt32) DEFAULT 42 بثلاث طرق مختلفة لكل صف:

تطور المخطط

مثال للاستخدام

Query
Response
  • تحتوي الترويسة على عمود واحد باسم x من النوع Nullable(UInt32).
  • تستخدم الخلية الوحيدة الوسم 0x01، ما يعني “استخدام DEFAULT 42”.

إعدادات التنسيق

الإعدادات التالية مشتركة بين جميع التنسيقات من نوع RowBinary.
آخر تعديل في ٢٥ يونيو ٢٠٢٦