الوصف
RowBinaryWithNamesAndTypes، ولكن مع بايت إضافي قبل كل خلية يحدّد ما إذا كان ينبغي استخدام القيمة DEFAULT الخاصة بالعمود — تمامًا كما في تنسيق RowBinaryWithDefaults. يدعم هذا الدمج عمليات INSERT القابلة للتكيّف مع تغيّر المخطط: إذ يمكن للكاتب حذف أعمدة من الترويسة (فتأخذ القيمة DEFAULT الخاصة بالعمود الهدف)، وبالنسبة إلى أي عمود يرسله، يمكنه تعليم خلايا منفردة على أنها “استخدم القيمة DEFAULT الخاصة بالعمود” من دون الخلط بين ذلك وبين NULL.
هذا التنسيق مخصّص للإدخال فقط.
التنسيق السلكي
RowBinaryWithNamesAndTypes:
- قيمة
VarUIntتتضمن عدد الأعمدةN. Nمن قيمStringالمسبوقة بالطول، وتحتوي على أسماء الأعمدة.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
Nullable مستقلان عن بعضهما. ويمكن إرسال عمود Nullable(UInt32) DEFAULT 42 بثلاث طرق مختلفة لكل صف:
تطور المخطط
مثال للاستخدام
Query
Response
- تحتوي الترويسة على عمود واحد باسم
xمن النوعNullable(UInt32). - تستخدم الخلية الوحيدة الوسم
0x01، ما يعني “استخدامDEFAULT 42”.
إعدادات التنسيق
RowBinary.