@@ -97,6 +97,7 @@ JoinKind reverseJoinKind(JoinKind kind)
9797void serializeJoinKind (JoinKind kind, WriteBuffer & out)
9898{
9999 uint8_t val = uint8_t (kind);
100+ chassert (val <= JoinKindMax);
100101 writeIntBinary (val, out);
101102}
102103
@@ -105,27 +106,16 @@ JoinKind deserializeJoinKind(ReadBuffer & in)
105106 uint8_t val;
106107 readIntBinary (val, in);
107108
108- if (val == uint8_t (JoinKind::Inner))
109- return JoinKind::Inner;
110- if (val == uint8_t (JoinKind::Left))
111- return JoinKind::Left;
112- if (val == uint8_t (JoinKind::Right))
113- return JoinKind::Right;
114- if (val == uint8_t (JoinKind::Full))
115- return JoinKind::Full;
116- if (val == uint8_t (JoinKind::Cross))
117- return JoinKind::Cross;
118- if (val == uint8_t (JoinKind::Comma))
119- return JoinKind::Comma;
120- if (val == uint8_t (JoinKind::Paste))
121- return JoinKind::Paste;
122-
123- throw Exception (ErrorCodes::INCORRECT_DATA, " Cannot convert {} to JoinKind" , UInt16 (val));
109+ if (val > JoinKindMax)
110+ throw Exception (ErrorCodes::INCORRECT_DATA, " Cannot convert {} to JoinKind" , val);
111+
112+ return static_cast <JoinKind>(val);
124113}
125114
126115void serializeJoinStrictness (JoinStrictness strictness, WriteBuffer & out)
127116{
128117 uint8_t val = uint8_t (strictness);
118+ chassert (val <= JoinStrictnessMax);
129119 writeIntBinary (val, out);
130120}
131121
@@ -134,43 +124,27 @@ JoinStrictness deserializeJoinStrictness(ReadBuffer & in)
134124 uint8_t val;
135125 readIntBinary (val, in);
136126
137- if (val == uint8_t (JoinStrictness::Unspecified))
138- return JoinStrictness::Unspecified;
139- if (val == uint8_t (JoinStrictness::RightAny))
140- return JoinStrictness::RightAny;
141- if (val == uint8_t (JoinStrictness::Any))
142- return JoinStrictness::Any;
143- if (val == uint8_t (JoinStrictness::All))
144- return JoinStrictness::All;
145- if (val == uint8_t (JoinStrictness::Asof))
146- return JoinStrictness::Asof;
147- if (val == uint8_t (JoinStrictness::Semi))
148- return JoinStrictness::Semi;
149- if (val == uint8_t (JoinStrictness::Anti))
150- return JoinStrictness::Anti;
151-
152- throw Exception (ErrorCodes::INCORRECT_DATA, " Cannot convert {} to JoinStrictness" , UInt16 (val));
127+ if (val > JoinStrictnessMax)
128+ throw Exception (ErrorCodes::INCORRECT_DATA, " Cannot convert {} to JoinStrictness" , val);
129+
130+ return static_cast <JoinStrictness>(val);
153131}
154132
155133void serializeJoinLocality (JoinLocality locality, WriteBuffer & out)
156134{
157135 uint8_t val = uint8_t (locality);
136+ chassert (val <= JoinLocalityMax);
158137 writeIntBinary (val, out);
159138}
160139JoinLocality deserializeJoinLocality (ReadBuffer & in)
161140{
162141 uint8_t val;
163142 readIntBinary (val, in);
164143
165- if (val == uint8_t (JoinLocality::Unspecified))
166- return JoinLocality::Unspecified;
167- if (val == uint8_t (JoinLocality::Local))
168- return JoinLocality::Local;
169- if (val == uint8_t (JoinLocality::Global))
170- return JoinLocality::Global;
171-
144+ if (val > JoinLocalityMax)
145+ throw Exception (ErrorCodes::INCORRECT_DATA, " Cannot convert {} to JoinLocality" , UInt16 (val));
172146
173- throw Exception (ErrorCodes::INCORRECT_DATA, " Cannot convert {} to JoinLocality" , UInt16 (val) );
147+ return static_cast < JoinLocality> (val);
174148}
175149
176150}
0 commit comments