void SqlBulkInsert::flush() { if (_pending.size() > 0) { double start = Tgs::Time::getTime(); QString sql; // the value 22 was found experimentally sql.reserve(_pending.size() * _columns.size() * 22); sql.append(QLatin1Literal("INSERT INTO ") % _tableName % QLatin1Literal(" (") % _columns.join(",") % QLatin1Literal(") VALUES ")); QLatin1String firstOpenParen("("), openParen(",("), closeParen(")"), comma(","); for (int i = 0; i < _pending.size(); i++) { if (i == 0) { sql.append(firstOpenParen); } else { sql.append(openParen); } for (int j = 0; j < _columns.size(); j++) { if (j == 0) { sql.append(_escape(_pending[i][j])); } else { sql.append(comma % _escape(_pending[i][j])); } } sql.append(closeParen); } //LOG_VAR(sql.size()); QSqlQuery q(_db); if (q.exec(sql) == false) { throw HootException(QString("Error executing bulk insert: %1 (%2)").arg(q.lastError().text()). arg(sql)); } q.finish(); _pending.clear(); double elapsed = Tgs::Time::getTime() - start; _time += elapsed; } }
void _strfail(const char *a, const char *e, int len) { char *ae, *ee; if (len < 0) { len = strlen(a); if (strlen(e) > (size_t) len) len = strlen(e); } ae = _escape(a, len); ee = _escape(e, len); printf("Expected: %s\nActual : %s\n", ee, ae); free(ae); free(ee); }
inline void _debugOut(const char* msg, TransliterationRule* rule, const Replaceable& theText, UTransPosition& pos) { UnicodeString buf(msg, ""); if (rule) { UnicodeString r; rule->toRule(r, TRUE); buf.append((UChar)32).append(r); } buf.append(UnicodeString(" => ", "")); UnicodeString* text = (UnicodeString*)&theText; _formatInput(buf, *text, pos); UnicodeString esc; _escape(buf, esc); CharString cbuf(esc); printf("%s\n", (const char*) cbuf); }
void _appendValue(exlib::string& str, v8::Local<v8::Value>& v, bool mysql) { bool bNumber = v->IsNumber() || v->IsNumberObject(); if (bNumber) { v8::String::Utf8Value s1(v); str.append(*s1, s1.length()); } else { exlib::string s; str += '\''; if (v->IsDate()) { date_t d = v; d.sqlString(s); } else { v8::String::Utf8Value s1(v); _escape(*s1, s1.length(), mysql, s); } str.append(s); str += '\''; } }
result_t db_base::escape(exlib::string str, bool mysql, exlib::string& retVal) { _escape(str.c_str(), (int32_t)str.length(), mysql, retVal); return 0; }