virtual void processUnicode(unsigned len, const UChar *value, const RtlFieldInfo * field) { size32_t utf8chars; char *utf8; rtlUnicodeToUtf8X(utf8chars, utf8, len, value); MYSQL_BIND &bindInfo = createBindBuffer(MYSQL_TYPE_STRING, 0); bindInfo.buffer = utf8; bindInfo.buffer_length = rtlUtf8Size(utf8chars, utf8); bindInfo.length = &bindInfo.buffer_length; }
void ViewFieldUnicodeTransformer::transform(unsigned & lenTarget, char * & target, unsigned lenSource, const char * source) { unsigned lenUnicodeSrc; unsigned lenUnicodeTarget; rtlDataAttr unicodeSrc; rtlDataAttr unicodeTarget; rtlUtf8ToUnicodeX(lenUnicodeSrc, unicodeSrc.refustr(), lenSource, source); (*function)(lenUnicodeTarget, unicodeTarget.refustr(), lenUnicodeSrc, unicodeSrc.getustr()); rtlUnicodeToUtf8X(lenTarget, target, lenUnicodeTarget, unicodeTarget.getustr()); }
void CouchbaseEmbedFunctionContext::bindUnicodeParam(const char *name, size32_t chars, const UChar *val) { checkNextParam(name); VStringBuffer cbPlaceholder("$%s", name); size32_t utf8chars; char *utf8; rtlUnicodeToUtf8X(utf8chars, utf8, chars, val); auto status = m_pQcmd->named_param(cbPlaceholder.str(), utf8); if (!status.success()) failx("Could not bind Param: %s val: %s", cbPlaceholder.str(), utf8); }
void bindUnicodeParam(unsigned chars, const UChar *value, const RtlFieldInfo * field, Couchbase::QueryCommand * pQcmd) { VStringBuffer cbPlaceholder("$%s", field->name->queryStr()); if (pQcmd) { size32_t utf8chars; char *utf8; rtlUnicodeToUtf8X(utf8chars, utf8, chars, value); auto status = pQcmd->named_param(cbPlaceholder.str(), utf8); if (!status.success()) failx("Could not bind Param: %s val: %s", cbPlaceholder.str(), utf8); } else failx("Internal error: detected invalid CouchbaseQueryCommand while attempting to bind to field: %s", cbPlaceholder.str()); }