Skip to content

Commit 894f875

Browse files
committed
Fix compiler warnings (possible switch() case statement failover).
1 parent 8d6df2c commit 894f875

File tree

2 files changed

+83
-64
lines changed

2 files changed

+83
-64
lines changed

devapi/result.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ Type Column::getType() const
186186
case cdk::Format<cdk::TYPE_FLOAT>::DOUBLE: return Type::DOUBLE;
187187
case cdk::Format<cdk::TYPE_FLOAT>::FLOAT: return Type::FLOAT;
188188
case cdk::Format<cdk::TYPE_FLOAT>::DECIMAL: return Type::DECIMAL;
189+
default:
190+
THROW("Unrecognized float value encoding format");
189191
}
190192
}
191193

@@ -200,6 +202,8 @@ Type Column::getType() const
200202
return Type::TIMESTAMP;
201203
case cdk::Format<cdk::TYPE_DATETIME>::DATETIME:
202204
return fd.m_format.has_time() ? Type::DATETIME : Type::DATE;
205+
default:
206+
THROW("Unrecognized temporal value encoding format");
203207
}
204208
}
205209

xapi/result.cc

Lines changed: 79 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,12 @@ const char *mysqlx_result_t::column_get_info_char(uint32_t pos, col_info_type in
170170
return NULL;
171171
}
172172

173+
173174
/*
174175
Get metadata information such as column precision, flags, etc that could
175176
be represented by numbers
176177
*/
178+
177179
uint32_t mysqlx_result_t::column_get_info_int(uint32_t pos, col_info_type info_type)
178180
{
179181
if (!m_cursor || !m_cursor->col_count() || pos >= m_cursor->col_count())
@@ -182,90 +184,103 @@ uint32_t mysqlx_result_t::column_get_info_int(uint32_t pos, col_info_type info_t
182184
//if ((cdk::Format<cdk::TYPE_INTEGER>)m_cursor->format(pos)).is_unsigned()))
183185
switch (info_type)
184186
{
185-
case COL_INFO_TYPE:
186-
switch (m_cursor->type(pos))
187+
case COL_INFO_TYPE:
188+
switch (m_cursor->type(pos))
189+
{
190+
case cdk::TYPE_INTEGER:
187191
{
188-
case cdk::TYPE_INTEGER:
189-
{
190-
cdk::Format<cdk::TYPE_INTEGER> format(m_cursor->format(pos));
191-
if (format.length() == 1)
192-
return MYSQLX_TYPE_BOOL;
192+
cdk::Format<cdk::TYPE_INTEGER> format(m_cursor->format(pos));
193+
if (format.length() == 1)
194+
return MYSQLX_TYPE_BOOL;
193195

194-
if (format.is_unsigned())
195-
return MYSQLX_TYPE_UINT;
196+
if (format.is_unsigned())
197+
return MYSQLX_TYPE_UINT;
196198

197-
return MYSQLX_TYPE_SINT;
198-
}
199-
case cdk::TYPE_FLOAT:
200-
{
201-
cdk::Format<cdk::TYPE_FLOAT> format(m_cursor->format(pos));
202-
203-
if (format.type() == cdk::Format<cdk::TYPE_FLOAT>::FLOAT)
204-
return MYSQLX_TYPE_FLOAT;
205-
else if (format.type() == cdk::Format<cdk::TYPE_FLOAT>::DOUBLE)
206-
return MYSQLX_TYPE_DOUBLE;
207-
else
208-
return MYSQLX_TYPE_DECIMAL;
209-
}
210-
case cdk::TYPE_DATETIME:
211-
{
212-
cdk::Format<cdk::TYPE_DATETIME> format(m_cursor->format(pos));
213-
switch(format.type())
214-
{
215-
case cdk::Format<cdk::TYPE_DATETIME>::TIME:
216-
return MYSQLX_TYPE_TIME;
217-
case cdk::Format<cdk::TYPE_DATETIME>::TIMESTAMP:
218-
return MYSQLX_TYPE_TIMESTAMP;
219-
default:
220-
return MYSQLX_TYPE_DATETIME;
221-
}
222-
break;
223-
}
224-
// TODO: differ the blob types by their length
225-
case cdk::TYPE_BYTES:
226-
{
227-
// TODO: use it when GEOMETRY type is supported by CDK
228-
// cdk::Format<cdk::TYPE_BYTES> format(m_cursor->format(pos));
229-
return MYSQLX_TYPE_BYTES;
230-
}
231-
case cdk::TYPE_STRING:
232-
{
233-
cdk::Format<cdk::TYPE_STRING> format(m_cursor->format(pos));
234-
if (format.is_enum())
235-
return MYSQLX_TYPE_ENUM;
236-
else if (format.is_set())
237-
return MYSQLX_TYPE_SET;
199+
return MYSQLX_TYPE_SINT;
200+
}
201+
break;
202+
203+
case cdk::TYPE_FLOAT:
204+
{
205+
cdk::Format<cdk::TYPE_FLOAT> format(m_cursor->format(pos));
206+
207+
if (format.type() == cdk::Format<cdk::TYPE_FLOAT>::FLOAT)
208+
return MYSQLX_TYPE_FLOAT;
209+
else if (format.type() == cdk::Format<cdk::TYPE_FLOAT>::DOUBLE)
210+
return MYSQLX_TYPE_DOUBLE;
211+
else
212+
return MYSQLX_TYPE_DECIMAL;
213+
}
214+
break;
238215

239-
return MYSQLX_TYPE_STRING;
216+
case cdk::TYPE_DATETIME:
217+
{
218+
cdk::Format<cdk::TYPE_DATETIME> format(m_cursor->format(pos));
219+
switch(format.type())
220+
{
221+
case cdk::Format<cdk::TYPE_DATETIME>::TIME:
222+
return MYSQLX_TYPE_TIME;
223+
case cdk::Format<cdk::TYPE_DATETIME>::TIMESTAMP:
224+
return MYSQLX_TYPE_TIMESTAMP;
225+
default:
226+
return MYSQLX_TYPE_DATETIME;
240227
}
241-
case cdk::TYPE_DOCUMENT:
242-
return MYSQLX_TYPE_JSON;
243-
case cdk::TYPE_GEOMETRY:
244-
return MYSQLX_TYPE_GEOMETRY;
245-
default:
246-
return m_cursor->type(pos);
247228
}
229+
break;
248230

249-
case COL_INFO_LENGTH: return m_cursor->col_info(pos).length();
250-
case COL_INFO_PRECISION: return m_cursor->col_info(pos).decimals();
231+
// TODO: differ the blob types by their length
232+
case cdk::TYPE_BYTES:
233+
// TODO: use it when GEOMETRY type is supported by CDK
234+
// cdk::Format<cdk::TYPE_BYTES> format(m_cursor->format(pos));
235+
return MYSQLX_TYPE_BYTES;
251236

252-
// TODO: collation and flags should be added later
253-
case COL_INFO_FLAGS:
254-
case COL_INFO_COLLATION: return 0;
255-
default: // the rest of info types are processed in column_get_info_char
237+
case cdk::TYPE_STRING:
238+
{
239+
cdk::Format<cdk::TYPE_STRING> format(m_cursor->format(pos));
240+
if (format.is_enum())
241+
return MYSQLX_TYPE_ENUM;
242+
else if (format.is_set())
243+
return MYSQLX_TYPE_SET;
244+
245+
return MYSQLX_TYPE_STRING;
246+
}
256247
break;
248+
249+
case cdk::TYPE_DOCUMENT:
250+
return MYSQLX_TYPE_JSON;
251+
252+
case cdk::TYPE_GEOMETRY:
253+
return MYSQLX_TYPE_GEOMETRY;
254+
255+
default:
256+
return m_cursor->type(pos);
257+
};
258+
break;
259+
260+
case COL_INFO_LENGTH: return m_cursor->col_info(pos).length();
261+
case COL_INFO_PRECISION: return m_cursor->col_info(pos).decimals();
262+
263+
// TODO: collation and flags should be added later
264+
case COL_INFO_FLAGS:
265+
case COL_INFO_COLLATION: return 0;
266+
267+
default: // the rest of info types are processed in column_get_info_char
268+
break;
257269
}
258270

259271
return 0;
260272
}
261273

274+
262275
void mysqlx_result_t::set_table_list_mask(uint32_t mask)
263276
{ m_filter_mask = mask; }
264277

278+
265279
/*
266280
The method which can filter out rows returned by the server on the client side.
267281
Returns true if the row is allowed to go through or false otherwise.
268282
*/
283+
269284
bool mysqlx_result_t::row_filter(mysqlx_row_t *row)
270285
{
271286
if (m_crud.op_type() != OP_ADMIN_LIST || row->row_size() < 2)
@@ -541,7 +556,7 @@ const char * mysqlx_result_t::get_next_doc_id()
541556
mysqlx_error_t * mysqlx_result_t::get_error()
542557
{
543558
mysqlx_error_t *err = Mysqlx_diag::get_error();
544-
559+
545560
if (err)
546561
return err; // return the error if there is any
547562

0 commit comments

Comments
 (0)