2950
2947
return &my_charset_utf8_general_ci;
2954
xtPublic xtBool myxt_use_blobs(XTOpenTablePtr ot, void **ret_pbms_table, xtWord1 *rec_buf)
2957
XTTable *tab = ot->ot_table;
2962
char in_url[PBMS_BLOB_URL_SIZE];
2965
if (!xt_pbms_open_table(&pbms_table, tab->tab_name->ps_path))
2968
for (idx=0; idx<tab->tab_dic.dic_blob_count; idx++) {
2969
field = tab->tab_dic.dic_blob_cols[idx];
2970
if ((blob_ref = mx_get_length_and_data(field, (char *) rec_buf, &len)) && len) {
2971
xt_strncpy(PBMS_BLOB_URL_SIZE, in_url, blob_ref, len);
2973
if (!xt_pbms_use_blob(pbms_table, &out_url, in_url, field->field_index)) {
2974
xt_pbms_close_table(pbms_table);
2979
len = strlen(out_url);
2980
mx_set_length_and_data(field, (char *) rec_buf, len, out_url);
2984
*ret_pbms_table = pbms_table;
2988
xtPublic void myxt_unuse_blobs(XTOpenTablePtr XT_UNUSED(ot), void *pbms_table)
2990
xt_pbms_close_table(pbms_table);
2993
xtPublic xtBool myxt_retain_blobs(XTOpenTablePtr XT_UNUSED(ot), void *pbms_table, xtRecordID rec_id)
2996
PBMSEngineRefRec eng_ref;
2998
memset(&eng_ref, 0, sizeof(PBMSEngineRefRec));
2999
XT_SET_DISK_8(eng_ref.er_data, rec_id);
3000
ok = xt_pbms_retain_blobs(pbms_table, &eng_ref);
3001
xt_pbms_close_table(pbms_table);
3005
xtPublic void myxt_release_blobs(XTOpenTablePtr ot, xtWord1 *rec_buf, xtRecordID rec_id)
3008
XTTable *tab = ot->ot_table;
3013
char in_url[PBMS_BLOB_URL_SIZE];
3014
PBMSEngineRefRec eng_ref;
3016
memset(&eng_ref, 0, sizeof(PBMSEngineRefRec));
3017
XT_SET_DISK_8(eng_ref.er_data, rec_id);
3019
if (!xt_pbms_open_table(&pbms_table, tab->tab_name->ps_path))
3022
for (idx=0; idx<tab->tab_dic.dic_blob_count; idx++) {
3023
field = tab->tab_dic.dic_blob_cols[idx];
3024
if ((blob_ref = mx_get_length_and_data(field, (char *) rec_buf, &len)) && len) {
3025
xt_strncpy(PBMS_BLOB_URL_SIZE, in_url, blob_ref, len);
3027
xt_pbms_release_blob(pbms_table, in_url, field->field_index, &eng_ref);
3031
xt_pbms_close_table(pbms_table);
3033
#endif // XT_STREAMING
3035
2950
xtPublic void *myxt_create_thread()
3037
2952
#ifdef DRIZZLED