ext/flydata/parser/mysql/sql_parser.cpp in flydata-0.5.13 vs ext/flydata/parser/mysql/sql_parser.cpp in flydata-0.5.14

- old
+ new

@@ -60,11 +60,11 @@ } else if (*current == 'N') { status = null_n; } else if (*current == '0') { mark = current; value_len = 1;//mark status = first_zero; - } else if ( (*current >= '1' && *current <= '9') || *current == '-' ) { + } else if ( (*current >= '1' && *current <= '9') || *current == '-' || *current == '+' || *current == '.') { mark = current; value_len = 1;//mark status = number; } else if (*current == ',') { status = value; } else if (*current == ')') { @@ -125,11 +125,11 @@ } break; case number: if ($DEBUG) std::cout << "number[" << *current << "]: " << std::endl << std::flush; - if ((*current >= '0' && *current <= '9') || *current == '.') { + if ((*current >= '0' && *current <= '9') || *current == '.' || *current == 'e' || *current == 'E' || *current == '-') { status = number; } else if (*current == ',') { ch.value_callback(mark, value_len - 1, true);//value_callback :end_value mark = 0; value_len = 0; //mark_reset status = value; @@ -387,13 +387,15 @@ status = first_char; } else if (*current == 'Z') { ch.value_callback("\x1a", 1, false);//value_callback '\Z' mark = 0; value_len = 0; status = first_char; - } else if (*current == '0') { - ch.value_callback("\0", 1, false);//value_callback '\0' - mark = 0; value_len = 0; - status = first_char; +// Disabled handling of \0 for now in order to keep it compatible with the old +// implementation. +// } else if (*current == '0') { +// ch.value_callback("\0", 1, false);//value_callback '\0' +// mark = 0; value_len = 0; +// status = first_char; } else { status = following_char; } break;