void CouchbaseRowBuilder::getDataResult(const RtlFieldInfo *field, size32_t &len, void * &result) { const char * value = nextField(field); if (!value || !*value) { NullFieldProcessor p(field); rtlStrToDataX(len, result, p.resultChars, p.stringResult); return; } rtlStrToDataX(len, result, strlen(value), value); // This feels like it may not work to me - will preallocate rather larger than we want }
void CouchbaseEmbedFunctionContext::getDataResult(size32_t &len, void * &result) { auto value = nextResultScalar(); if (value && *value) { rtlStrToDataX(len, result, strlen(value), value); // This feels like it may not work to me - will preallocate rather larger than we want } else { NullFieldProcessor p(NULL); rtlStrToDataX(len, result, p.resultChars, p.stringResult); } }
static void getDataResult(const RtlFieldInfo *field, const MYSQL_BIND &bound, size32_t &chars, void * &result) { if (*bound.is_null) { NullFieldProcessor p(field); rtlStrToDataX(chars, result, p.resultChars, p.stringResult); return; } if (isString(bound.buffer_type)) rtlStrToDataX(chars, result, *bound.length, bound.buffer); // This feels like it may not work to me - will preallocate rather larger than we want else typeError("blob", field); }
static void getDataResult(const RtlFieldInfo *field, sqlite3_value *val, size32_t &chars, void * &result) { assertex(val); if (isNull(val)) { NullFieldProcessor p(field); rtlStrToDataX(chars, result, p.resultChars, p.stringResult); return; } if (sqlite3_value_type(val) != SQLITE_BLOB && sqlite3_value_type(val) != SQLITE_TEXT) typeError("blob", field); const void *blob = sqlite3_value_blob(val); int bytes = sqlite3_value_bytes(val); rtlStrToDataX(chars, result, bytes, blob); }
virtual void processData(unsigned len, const void *value, const RtlFieldInfo * field) { size32_t bytes; void *data; rtlStrToDataX(bytes, data, len, value); MYSQL_BIND &bindInfo = createBindBuffer(MYSQL_TYPE_BLOB, 0); bindInfo.buffer = data; bindInfo.buffer_length = bytes; bindInfo.length = &bindInfo.buffer_length; }
void CouchbaseEmbedFunctionContext::bindDataParam(const char *name, size32_t len, const void *val) { checkNextParam(name); VStringBuffer cbPlaceholder("$%s", name); size32_t bytes; void *data; rtlStrToDataX(bytes, data, len, val); auto status = m_pQcmd->named_param(cbPlaceholder.str(), (char *)data); if (!status.success()) failx("Could not bind Param: %s val: %s", cbPlaceholder.str(), (char *)data); }
void bindDataParam(unsigned len, const void *value, const RtlFieldInfo * field, Couchbase::QueryCommand * pQcmd) { VStringBuffer cbPlaceholder("$%s", field->name->queryStr()); if (pQcmd) { size32_t bytes; void *data; rtlStrToDataX(bytes, data, len, value); auto status = pQcmd->named_param(cbPlaceholder.str(), (char *)data); if (!status.success()) failx("Could not bind Param: %s val: %s", cbPlaceholder.str(), (char *)data); } else failx("Internal error: detected invalid CouchbaseQueryCommand while attempting to bind to field: %s", cbPlaceholder.str()); }