/*******************************************************************************
* oltpbenchmark.com
*
* Project Info: http://oltpbenchmark.com
* Project Members: Carlo Curino <carlo.curino@gmail.com>
* Evan Jones <ej@evanjones.ca>
* DIFALLAH Djellel Eddine <djelleleddine.difallah@unifr.ch>
* Andy Pavlo <pavlo@cs.brown.edu>
* CUDRE-MAUROUX Philippe <philippe.cudre-mauroux@unifr.ch>
* Yang Zhang <yaaang@gmail.com>
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation;
* either version 3.0 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
******************************************************************************/
package edu.brown.benchmark.wikipedia.procedures;
import org.voltdb.ProcInfo;
import org.voltdb.VoltProcedure;
import org.voltdb.SQLStmt;
import org.voltdb.VoltTable;
import org.voltdb.types.TimestampType;
import edu.brown.benchmark.wikipedia.WikipediaConstants;
@ProcInfo(
partitionInfo = "USERACCT.USER_ID: 0",
singlePartition = true
)
public class RemoveWatchList extends VoltProcedure {
public SQLStmt removeWatchList = new SQLStmt(
"DELETE FROM " + WikipediaConstants.TABLENAME_WATCHLIST +
" WHERE wl_user = ? " +
" AND wl_namespace = ? " +
" AND wl_page = ?"
);
public SQLStmt setUserTouched = new SQLStmt(
"UPDATE " + WikipediaConstants.TABLENAME_USER +
" SET user_touched = ? " +
" WHERE user_id = ? "
);
public VoltTable[] run(int userId, int nameSpace, long pageId) {
final TimestampType timestamp = new TimestampType();
if (userId > 0) {
voltQueueSQL(removeWatchList, userId, nameSpace, pageId);
if (nameSpace == 0) {
// if regular page, also remove a line of
// watchlist for the corresponding talk page
voltQueueSQL(removeWatchList, userId, 1, pageId);
}
voltQueueSQL(setUserTouched, timestamp, userId);
}
return (voltExecuteSQL(true));
}
}