| 708 | } |
| 709 | |
| 710 | int cachedb_raw_query(str* cachedb_name, str* attr, cdb_raw_entry*** reply,int expected_kv_no,int *rpl_no) |
| 711 | { |
| 712 | cachedb_engine* cde; |
| 713 | str cde_engine,grp_name; |
| 714 | char *p; |
| 715 | cachedb_con *con; |
| 716 | int ret; |
| 717 | |
| 718 | if(cachedb_name == NULL || attr == NULL) |
| 719 | { |
| 720 | LM_ERR("null arguments\n"); |
| 721 | return -1; |
| 722 | } |
| 723 | |
| 724 | p = memchr(cachedb_name->s,':',cachedb_name->len); |
| 725 | if (p == NULL) { |
| 726 | cde_engine = *cachedb_name; |
| 727 | grp_name.s = NULL; |
| 728 | grp_name.len = 0; |
| 729 | LM_DBG("from script [%.*s] - no grp\n",cde_engine.len,cde_engine.s); |
| 730 | } else { |
| 731 | cde_engine.s = cachedb_name->s; |
| 732 | cde_engine.len = p - cde_engine.s; |
| 733 | grp_name.s = p+1; |
| 734 | grp_name.len = cachedb_name->len - cde_engine.len -1; |
| 735 | LM_DBG("from script [%.*s] - with grp [%.*s]\n",cde_engine.len, |
| 736 | cde_engine.s,grp_name.len,grp_name.s); |
| 737 | |
| 738 | } |
| 739 | |
| 740 | cde = lookup_cachedb(&cde_engine); |
| 741 | if(cde == NULL) |
| 742 | { |
| 743 | LM_ERR("Wrong argument <%.*s> - no cachedb system with" |
| 744 | " this name registered\n", |
| 745 | cde_engine.len,cde_engine.s); |
| 746 | return -1; |
| 747 | } |
| 748 | |
| 749 | if (!CACHEDB_CAPABILITY(&cde->cdb_func,CACHEDB_CAP_RAW)) { |
| 750 | LM_ERR("The backend does not support raw queries\n"); |
| 751 | return -1; |
| 752 | } |
| 753 | |
| 754 | con = cachedb_get_connection(cde,&grp_name); |
| 755 | if (con == NULL) { |
| 756 | LM_ERR("failed to get connection for grp name [%.*s] : check db_url\n", |
| 757 | grp_name.len,grp_name.s); |
| 758 | return -1; |
| 759 | } |
| 760 | |
| 761 | ret = cde->cdb_func.raw_query(con,attr,reply,expected_kv_no,rpl_no); |
| 762 | if (ret == 0) |
| 763 | ret++; |
| 764 | |
| 765 | return ret; |
| 766 | } |
| 767 |
no test coverage detected