22
33#include < ydb/core/tablet_flat/flat_database.h>
44#include < ydb/core/util/tuples.h>
5- #include < ydb/core/util/templates.h>
65#include < ydb/core/base/blobstorage_common.h>
76
87#include < util/system/type_name.h>
@@ -647,6 +646,18 @@ enum class EMaterializationMode {
647646 NonExisting,
648647};
649648
649+ namespace NDetail {
650+ namespace SFINAE {
651+ template <typename >
652+ struct type_check {
653+ using type = int ;
654+ };
655+
656+ struct general {};
657+ struct special : general {};
658+ }
659+ }
660+
650661struct Schema {
651662 template <typename T>
652663 struct Precharger {
@@ -1437,7 +1448,7 @@ struct Schema {
14371448 }
14381449
14391450 template <typename ColumnType>
1440- auto GetValueOrDefault (typename ColumnType::Type defaultValue = GetDefaultValue<ColumnType>(SFINAE::special())) const {
1451+ auto GetValueOrDefault (typename ColumnType::Type defaultValue = GetDefaultValue<ColumnType>(NDetail:: SFINAE::special())) const {
14411452 Y_DEBUG_ABORT_UNLESS (IsReady (), " Rowset is not ready" );
14421453 Y_DEBUG_ABORT_UNLESS (IsValid (), " Rowset is not valid" );
14431454 typename ColumnType::Type value (HaveValue<ColumnType>() ? GetColumnValue<ColumnType>() : defaultValue);
@@ -1462,23 +1473,23 @@ struct Schema {
14621473 return DbgPrintTuple (Iterator.GetKey (), typeRegistry) + " -> " + DbgPrintTuple (Iterator.GetValues (), typeRegistry);
14631474 }
14641475
1465- template <typename ColumnType, typename SFINAE::type_check<decltype (ColumnType::Default)>::type = 0 >
1466- static decltype (ColumnType::Default) GetNullValue(SFINAE::special) {
1476+ template <typename ColumnType, typename NDetail:: SFINAE::type_check<decltype (ColumnType::Default)>::type = 0 >
1477+ static decltype (ColumnType::Default) GetNullValue(NDetail:: SFINAE::special) {
14671478 return ColumnType::Default;
14681479 }
14691480
14701481 template <typename ColumnType>
1471- static typename ColumnType::Type GetNullValue (SFINAE::general) {
1482+ static typename ColumnType::Type GetNullValue (NDetail:: SFINAE::general) {
14721483 return typename ColumnType::Type ();
14731484 }
14741485
1475- template <typename ColumnType, typename SFINAE::type_check<decltype (ColumnType::Default)>::type = 0 >
1476- static decltype (ColumnType::Default) GetDefaultValue(SFINAE::special) {
1486+ template <typename ColumnType, typename NDetail:: SFINAE::type_check<decltype (ColumnType::Default)>::type = 0 >
1487+ static decltype (ColumnType::Default) GetDefaultValue(NDetail:: SFINAE::special) {
14771488 return ColumnType::Default;
14781489 }
14791490
14801491 template <typename ColumnType>
1481- static typename ColumnType::Type GetDefaultValue (SFINAE::general) {
1492+ static typename ColumnType::Type GetDefaultValue (NDetail:: SFINAE::general) {
14821493 return typename ColumnType::Type ();
14831494 }
14841495
@@ -1499,7 +1510,7 @@ struct Schema {
14991510 auto & cell = tuple.Columns [index];
15001511 auto type = tuple.Types [index];
15011512 if (cell.IsNull ())
1502- return GetNullValue<ColumnType>(SFINAE::special ());
1513+ return GetNullValue<ColumnType>(NDetail:: SFINAE::special ());
15031514 return TConvert<ColumnType, typename ColumnType::Type>::Convert (TRawTypeValue (cell.Data (), cell.Size (), type));
15041515 }
15051516
0 commit comments