Exemple #1
0
    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
    }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
 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;
 }
Exemple #6
0
 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);
 }
Exemple #7
0
    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());
    }