00001
00002
00003
00004
00005
00006 #include "simpleQuery.h"
00007 #include "icatHighLevelRoutines.h"
00008
00009 int
00010 rsSimpleQuery (rsComm_t *rsComm, simpleQueryInp_t *simpleQueryInp,
00011 simpleQueryOut_t **simpleQueryOut)
00012 {
00013 rodsServerHost_t *rodsServerHost;
00014 int status;
00015
00016 status = getAndConnRcatHost(rsComm, MASTER_RCAT, NULL, &rodsServerHost);
00017 if (status < 0) {
00018 return(status);
00019 }
00020
00021 if (rodsServerHost->localFlag == LOCAL_HOST) {
00022 #ifdef RODS_CAT
00023 status = _rsSimpleQuery (rsComm, simpleQueryInp, simpleQueryOut);
00024 #else
00025 status = SYS_NO_RCAT_SERVER_ERR;
00026 #endif
00027 }
00028 else {
00029 status = rcSimpleQuery(rodsServerHost->conn,
00030 simpleQueryInp, simpleQueryOut);
00031 }
00032
00033 if (status < 0 && status != CAT_NO_ROWS_FOUND) {
00034 rodsLog (LOG_NOTICE,
00035 "rsSimpleQuery: rcSimpleQuery failed, status = %d", status);
00036 }
00037 return (status);
00038 }
00039
00040 #ifdef RODS_CAT
00041 int
00042 _rsSimpleQuery (rsComm_t *rsComm, simpleQueryInp_t *simpleQueryInp,
00043 simpleQueryOut_t **simpleQueryOut)
00044 {
00045 int status;
00046
00047 int control;
00048
00049 int maxBufSize;
00050 char *outBuf;
00051
00052 simpleQueryOut_t *myQueryOut;
00053
00054 control = simpleQueryInp->control;
00055
00056 maxBufSize = simpleQueryInp->maxBufSize;
00057
00058 outBuf = (char*)malloc(maxBufSize);
00059
00060 status = chlSimpleQuery(rsComm, simpleQueryInp->sql,
00061 simpleQueryInp->arg1,
00062 simpleQueryInp->arg2,
00063 simpleQueryInp->arg3,
00064 simpleQueryInp->arg4,
00065 simpleQueryInp->form,
00066 &control, outBuf, maxBufSize);
00067 if (status < 0 ) {
00068 if (status != CAT_NO_ROWS_FOUND) {
00069 rodsLog (LOG_NOTICE,
00070 "_rsSimpleQuery: simpleQuery for %s, status = %d",
00071 simpleQueryInp->sql, status);
00072 }
00073 return (status);
00074 }
00075
00076 myQueryOut = (simpleQueryOut_t*)malloc(sizeof(simpleQueryOut_t));
00077 myQueryOut->control = control;
00078 myQueryOut->outBuf = outBuf;
00079
00080 *simpleQueryOut = myQueryOut;
00081
00082 return (status);
00083 }
00084 #endif