add: LOG(L_ERR,"ERROR:dbtext: unsupported type %d in update\n",_t);
context: int dbt_row_update_val(dbt_row_p _drp, dbt_val_p _vp, int _t, int _idx){	if(!_drp || !_vp || _idx<0)		return -1;		_drp->fields[_idx].nul = _vp->nul;	_drp->fields[_idx].type = _t;		if(!_vp->nul)	{		switch(_t)		{			case DB_BLOB:			case DB_STR:				_drp->fields[_idx].type = DB_STR;				// free if already exists				if(_drp->fields[_idx].val.str_val.s)					shm_free(_drp->fields[_idx].val.str_val.s);							_drp->fields[_idx].val.str_val.s = 					(char*)shm_malloc(_vp->val.str_val.len*sizeof(char));				if(!_drp->fields[_idx].val.str_val.s)				{					_drp->fields[_idx].nul = 1;					return -1;				}				memcpy(_drp->fields[_idx].val.str_val.s, _vp->val.str_val.s,					_vp->val.str_val.len);				_drp->fields[_idx].val.str_val.len = _vp->val.str_val.len;			break;						case DB_STRING:				_drp->fields[_idx].type = DB_STR;				// free if already exists				if(_drp->fields[_idx].val.str_val.s)					shm_free(_drp->fields[_idx].val.str_val.s);				_drp->fields[_idx].type = DB_STR;				_drp->fields[_idx].val.str_val.len=strlen(_vp->val.string_val);								_drp->fields[_idx].val.str_val.s = 					(char*)shm_malloc(_drp->fields[_idx].val.str_val.len									  *sizeof(char));				if(!_drp->fields[_idx].val.str_val.s)				{					_drp->fields[_idx].nul = 1;					return -1;				}				memcpy(_drp->fields[_idx].val.str_val.s, _vp->val.string_val,					_drp->fields[_idx].val.str_val.len);			break;						case DB_DOUBLE:				_drp->fields[_idx].type = DB_DOUBLE;				_drp->fields[_idx].val.double_val = _vp->val.double_val;			break;						case DB_INT:				_drp->fields[_idx].type = DB_INT;				_drp->fields[_idx].val.int_val = _vp->val.int_val;			break;						default:				_drp->fields[_idx].nul = 1;				return -1;		}	}		return 0;}