| 2 |
* |
* |
| 3 |
* $Revision$ |
* $Revision$ |
| 4 |
* $Log$ |
* $Log$ |
| 5 |
|
* Revision 1.53 2005/01/27 08:30:35 youi |
| 6 |
|
* getIndexIDByItemIDを定義した. |
| 7 |
|
* |
| 8 |
* Revision 1.52 2005/01/25 06:46:50 aga |
* Revision 1.52 2005/01/25 06:46:50 aga |
| 9 |
* ・Bindersを含むindexはdeleteIndex不可. |
* ・Bindersを含むindexはdeleteIndex不可. |
| 10 |
* ・getItemsがエラーを出すことがあるのを修正. |
* ・getItemsがエラーを出すことがあるのを修正. |
| 406 |
result_t ret = RES_ERROR; |
result_t ret = RES_ERROR; |
| 407 |
SQLRETURN sqlcode; |
SQLRETURN sqlcode; |
| 408 |
SQLHANDLE hstmt = NULL; |
SQLHANDLE hstmt = NULL; |
| 409 |
|
|
| 410 |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 411 |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), strlen( sql.c_str() ) ) ) == SQL_SUCCESS ){ |
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), strlen( sql.c_str() ) ) ) == SQL_SUCCESS ){ |
| 412 |
SQLUINTEGER sInt = 0; |
SQLUINTEGER sInt = 0; |
| 5784 |
ret = RES_ERROR; |
ret = RES_ERROR; |
| 5785 |
} |
} |
| 5786 |
}else { |
}else { |
| 5787 |
string s( "SQLAllocHandle in updateIndex "); |
string s( "SQLAllocHandle in getChangeLogs "); |
| 5788 |
s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode ); |
s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode ); |
| 5789 |
setLastErrorString( s.c_str( ) ); |
setLastErrorString( s.c_str( ) ); |
| 5790 |
ret = RES_ERROR; |
ret = RES_ERROR; |
| 6305 |
} |
} |
| 6306 |
return ret; |
return ret; |
| 6307 |
} |
} |
| 6308 |
|
|
| 6309 |
|
|
| 6310 |
|
result_t getIndexIDByItemID( sessionid_t sid, itemid_t itemid, const indexid_t** xids, int* xidsLen ) |
| 6311 |
|
{ |
| 6312 |
|
if( hdbc == NULL ) return RES_DB_NOT_INITIALIZED; |
| 6313 |
|
if( !isValidSessionID( sid ) ) return RES_NO_SUCH_SESSION; |
| 6314 |
|
if( !getItemPermission( sid, itemid, item::OP_READ ) ) return RES_NO_READ_ACCESS_RIGHT; |
| 6315 |
|
|
| 6316 |
|
result_t ret = RES_ERROR; |
| 6317 |
|
SQLRETURN sqlcode; |
| 6318 |
|
SQLHANDLE hstmt = NULL; |
| 6319 |
|
SQLINTEGER count = 0; |
| 6320 |
|
string sql; |
| 6321 |
|
indexid_t xid = 0; |
| 6322 |
|
SQLINTEGER len = 0; |
| 6323 |
|
|
| 6324 |
|
sql = "SELECT index_id FROM " + dbprefix + "_xnpaccount_index_item_link" |
| 6325 |
|
+ " WHERE item_id=" + unsignedIntToString( itemid ); |
| 6326 |
|
if( countResultRows( sql.c_str(), &count ) == RES_OK ){ |
| 6327 |
|
indexid_t* xids_ = new indexid_t[ count ]; |
| 6328 |
|
if( ( sqlcode = SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) ) == SQL_SUCCESS ) { |
| 6329 |
|
if( ( sqlcode = SQLExecDirect( hstmt, (SQLCHAR*)sql.c_str(), sql.length() ) ) == SQL_SUCCESS ){ |
| 6330 |
|
SQLBindCol( hstmt, 1, SQL_C_ULONG, &xid, 0, &len ); |
| 6331 |
|
for( *xidsLen=0; ( sqlcode = SQLFetch( hstmt ) ) == SQL_SUCCESS && *xidsLen < count ; (*xidsLen)++ ){ |
| 6332 |
|
*( xids_ + *xidsLen ) = xid; |
| 6333 |
|
} |
| 6334 |
|
*xids = xids_; |
| 6335 |
|
ret = RES_OK; |
| 6336 |
|
}else{ |
| 6337 |
|
string s( "SQLExecDirect in getIndexIDByItemID "); |
| 6338 |
|
s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode ); |
| 6339 |
|
s += string( ", sql=" ) + string( sql ); |
| 6340 |
|
setLastErrorString( s.c_str( ) ); |
| 6341 |
|
ret = RES_ERROR; |
| 6342 |
|
} |
| 6343 |
|
}else { |
| 6344 |
|
string s( "SQLAllocHandle in getIndexIDByItemID "); |
| 6345 |
|
s += odbcDiagString( SQL_HANDLE_STMT, hstmt, sqlcode ); |
| 6346 |
|
setLastErrorString( s.c_str( ) ); |
| 6347 |
|
ret = RES_ERROR; |
| 6348 |
|
} |
| 6349 |
|
} |
| 6350 |
|
return ret; |
| 6351 |
|
} |