39 int64_t line_offset, int64_t &rows);
44 bool starts_with (
const std::string &str,
const std::string &prefix);
49 bool ends_with (
const std::string &str,
const std::string &suffix);
54 void rtrim (std::string &str);
170 , syntax_check (false)
174 , disable_statistics (false)
175 , periodic_commit (0)
176 , verbose_commit (false)
177 , no_oid_hint (false)
182 , ignore_logging (false)
183 , compare_storage_order (false)
185 , ignore_class_file ()
187 , m_ignored_errors ()
252 size_t ignore_classes_size = 0;
256 for (
size_t i = 0;
i < ignore_classes_size; ++
i)
258 std::string ignore_class;
262 size_t ignore_errors_size = 0;
266 for (
size_t i = 0;
i < ignore_errors_size;
i++)
326 for (std::string line; std::getline (file, line);)
336 const char *fmt=
"%s";
337 std::string class_name (line.size (),
'\0');
340 sscanf (line.c_str (), fmt, class_name.c_str ());
361 , need_free_val (false)
376 , need_free_val (need_free_val)
396 , arg_list (arg_list)
404 , attr_list (attr_list)
405 , ctor_spec (ctor_spec)
429 : class_id (class_id)
430 , class_name (class_name)
431 , instance_number (
NULL)
438 , currency_type (currency_type)
506 int64_t current_line_;
530 : m_load_completed (false)
531 , m_load_failed (false)
587 s.pack (serializator);
597 size_t load_stats_size = 0;
601 for (
size_t i = 0;
i < load_stats_size; ++
i)
615 size += s.get_packed_size (serializator, size);
625 int64_t batch_rows = 0;
627 int batch_start_offset = 0;
630 std::string batch_buffer;
631 bool class_is_ignored =
false;
632 short single_quote_checker = 0;
634 if (object_file_name.empty ())
639 std::ifstream object_file (object_file_name, std::fstream::in | std::fstream::binary);
648 for (std::string line; std::getline (object_file, line); ++lineno)
653 if (is_id_line || is_class_line)
660 error_code =
handle_batch (b_handler, clsid, batch_buffer, batch_id, batch_start_offset, batch_rows);
663 object_file.close ();
674 batch c_batch (batch_id, clsid, line, lineno, 1);
675 error_code = c_handler (c_batch, class_is_ignored);
678 object_file.close ();
683 batch_start_offset = lineno + 1;
687 if (class_is_ignored)
702 batch_buffer.append (line);
705 batch_buffer.append (
"\n");
708 for (
const char &c: line)
712 single_quote_checker ^= 1;
724 if (single_quote_checker == 1)
732 if (batch_rows == batch_size)
734 error_code =
handle_batch (b_handler, clsid, batch_buffer, batch_id, batch_start_offset, batch_rows);
736 batch_start_offset = lineno + 1;
739 object_file.close ();
746 error_code =
handle_batch (b_handler, clsid, batch_buffer, batch_id, batch_start_offset, batch_rows);
748 object_file.close ();
757 if (batch_content.empty ())
763 batch batch_ (++batch_id, clsid, batch_content, line_offset, rows);
764 int error_code = handler (batch_);
767 batch_content.clear ();
776 return str.size () >= prefix.size () && 0 == str.compare (0, prefix.size (), prefix);
780 ends_with (
const std::string &str,
const std::string &suffix)
782 return str.size () >= suffix.size () && 0 == str.compare (str.size () - suffix.size (), suffix.size (), suffix);
788 str.erase (str.find_last_not_of (
" \t\f\v\n\r") + 1);
size_t get_packed_string_size(const std::string &str, const size_t curr_offset)
void rtrim(std::string &str)
stats & operator=(const stats &other)
int split(int batch_size, const std::string &object_file_name, class_handler &c_handler, batch_handler &b_handler)
void pack(cubpacking::packer &serializator) const override
#define ER_FILE_UNKNOWN_FILE
void pack_int(const int value)
int64_t get_rows_number() const
void unpack_bigint(std::int64_t &value)
std::string error_message
void unpack(cubpacking::unpacker &deserializator) override
std::string ignore_class_file
int parse_ignore_class_file()
batch & operator=(batch &&other) noexcept
int intl_identifier_lower(const char *src, char *dst)
size_t get_packed_int_size(size_t curr_offset)
void pack(cubpacking::packer &serializator) const override
void unpack_string(std::string &str)
std::atomic< int64_t > current_line
bool compare_storage_order
const batch_id NULL_BATCH_ID
std::function< int64_t(const batch &)> batch_handler
#define DB_MAX_IDENTIFIER_LENGTH
size_t get_packed_bool_size(size_t curr_offset)
void unpack(cubpacking::unpacker &deserializator) override
class_command_spec_type()=delete
const class_id FIRST_CLASS_ID
size_t get_packed_size(cubpacking::packer &serializator, std::size_t start_offset) const override
void pack(cubpacking::packer &serializator) const override
std::vector< stats > & get_load_stats()
load_status & operator=(load_status &&other) noexcept
std::vector< stats > m_load_stats
int64_t last_committed_line
void unpack_bool(bool &value)
constructor_spec_type()=delete
const std::string & get_content() const
void pack_bool(bool value)
static void error(const char *msg)
int64_t get_line_offset() const
size_t get_packed_size(cubpacking::packer &serializator, std::size_t start_offset) const override
int intl_identifier_lower_string_size(const char *src)
void unpack_int(int &value)
void pack_bigint(const std::int64_t &value)
bool starts_with(const std::string &str, const std::string &prefix)
size_t get_packed_size(cubpacking::packer &serializator, std::size_t start_offset) const override
const class_id NULL_CLASS_ID
bool ends_with(const std::string &str, const std::string &suffix)
void pack_string(const std::string &str)
void pack(cubpacking::packer &serializator) const override
std::function< int64_t(const batch &, bool &)> class_handler
class_id get_class_id() const
std::vector< std::string > ignore_classes
size_t get_packed_size(cubpacking::packer &serializator, std::size_t start_offset) const override
void unpack(cubpacking::unpacker &deserializator) override
int handle_batch(batch_handler &handler, class_id clsid, std::string &batch_content, batch_id &batch_id, int64_t line_offset, int64_t &rows)
size_t get_packed_bigint_size(size_t curr_offset)
std::vector< int > m_ignored_errors
void unpack(cubpacking::unpacker &deserializator) override