Fix broken scraping and indexing

This commit is contained in:
Dan Stillman 2006-10-02 01:29:09 +00:00
parent 508b35f6d1
commit f27d748246
2 changed files with 12 additions and 10 deletions

View File

@ -545,25 +545,26 @@ Scholar.Item.prototype.save = function(){
sql = "SELECT COUNT(*) FROM itemData WHERE itemID=? AND fieldID=?"; sql = "SELECT COUNT(*) FROM itemData WHERE itemID=? AND fieldID=?";
var countStatement = Scholar.DB.getStatement(sql); var countStatement = Scholar.DB.getStatement(sql);
countStatement.bindInt32Parameter(0, this.getID());
sql = "UPDATE itemData SET value=? WHERE itemID=? AND fieldID=?"; sql = "UPDATE itemData SET value=? WHERE itemID=? AND fieldID=?";
var updateStatement = Scholar.DB.getStatement(sql); var updateStatement = Scholar.DB.getStatement(sql);
updateStatement.bindInt32Parameter(1, this.getID());
sql = "INSERT INTO itemData VALUES (?,?,?)"; sql = "INSERT INTO itemData VALUES (?,?,?)";
var insertStatement = Scholar.DB.getStatement(sql); var insertStatement = Scholar.DB.getStatement(sql);
insertStatement.bindInt32Parameter(0, this.getID());
for (fieldID in this._changedItemData.items){ for (fieldID in this._changedItemData.items){
if (this.getField(fieldID)){ if (this.getField(fieldID)){
// Oh, for an INSERT...ON DUPLICATE KEY UPDATE // Oh, for an INSERT...ON DUPLICATE KEY UPDATE
countStatement.bindInt32Parameter(0, this.getID());
countStatement.bindInt32Parameter(1, fieldID); countStatement.bindInt32Parameter(1, fieldID);
countStatement.executeStep(); countStatement.executeStep();
var exists = countStatement.getInt64(0); var exists = countStatement.getInt64(0);
countStatement.reset();
// Update // Update
if (exists){ if (exists){
updateStatement.bindInt32Parameter(1, this.getID());
Scholar.History.modify('itemData', 'itemID-fieldID', Scholar.History.modify('itemData', 'itemID-fieldID',
[this.getID(), fieldID]); [this.getID(), fieldID]);
@ -587,7 +588,7 @@ Scholar.Item.prototype.save = function(){
this.getField(fieldID)); this.getField(fieldID));
} }
updateStatement.bindInt32Parameter(2, fieldID); updateStatement.bindInt32Parameter(2, fieldID);
updateStatement.executeStep(); updateStatement.execute();
} }
} }
@ -596,6 +597,7 @@ Scholar.Item.prototype.save = function(){
Scholar.History.add('itemData', 'itemID-fieldID', Scholar.History.add('itemData', 'itemID-fieldID',
[this.getID(), fieldID]); [this.getID(), fieldID]);
insertStatement.bindInt32Parameter(0, this.getID());
insertStatement.bindInt32Parameter(1, fieldID); insertStatement.bindInt32Parameter(1, fieldID);
if (Scholar.ItemFields.getID('accessDate')==fieldID if (Scholar.ItemFields.getID('accessDate')==fieldID
@ -617,7 +619,7 @@ Scholar.Item.prototype.save = function(){
this.getField(fieldID)); this.getField(fieldID));
} }
insertStatement.executeStep(); insertStatement.execute();
} }
} }
} }
@ -714,13 +716,13 @@ Scholar.Item.prototype.save = function(){
// Use manual bound parameters to speed things up // Use manual bound parameters to speed things up
var statement = var statement =
Scholar.DB.getStatement("INSERT INTO itemData VALUES (?,?,?)"); Scholar.DB.getStatement("INSERT INTO itemData VALUES (?,?,?)");
statement.bindInt32Parameter(0, this.getID());
for (fieldID in this._changedItemData.items){ for (fieldID in this._changedItemData.items){
if (!this.getField(fieldID)){ if (!this.getField(fieldID)){
continue; continue;
} }
statement.bindInt32Parameter(0, this.getID());
statement.bindInt32Parameter(1, fieldID); statement.bindInt32Parameter(1, fieldID);
if (Scholar.ItemFields.getID('accessDate')==fieldID if (Scholar.ItemFields.getID('accessDate')==fieldID
@ -736,7 +738,7 @@ Scholar.Item.prototype.save = function(){
else { else {
statement.bindUTF8StringParameter(2, this.getField(fieldID)); statement.bindUTF8StringParameter(2, this.getField(fieldID));
} }
statement.executeStep(); statement.execute();
} }
Scholar.History.add('itemData', 'itemID-fieldID', Scholar.History.add('itemData', 'itemID-fieldID',

View File

@ -90,7 +90,6 @@ Scholar.Fulltext = new function(){
// Handle bound parameters manually for optimal speed // Handle bound parameters manually for optimal speed
var statement1 = Scholar.DB.getStatement("INSERT INTO fulltextWords (word) VALUES (?)"); var statement1 = Scholar.DB.getStatement("INSERT INTO fulltextWords (word) VALUES (?)");
var statement2 = Scholar.DB.getStatement("INSERT OR IGNORE INTO fulltextItems VALUES (?,?)"); var statement2 = Scholar.DB.getStatement("INSERT OR IGNORE INTO fulltextItems VALUES (?,?)");
statement2.bindInt32Parameter(1, itemID);
for each(var word in words){ for each(var word in words){
if (existing['_' + word]){ if (existing['_' + word]){
@ -98,12 +97,13 @@ Scholar.Fulltext = new function(){
} }
else { else {
statement1.bindUTF8StringParameter(0, word); statement1.bindUTF8StringParameter(0, word);
statement1.executeStep() statement1.execute()
var wordID = Scholar.DB.getLastInsertID(); var wordID = Scholar.DB.getLastInsertID();
} }
statement2.bindInt32Parameter(0, wordID); statement2.bindInt32Parameter(0, wordID);
statement2.executeStep(); statement2.bindInt32Parameter(1, itemID);
statement2.execute();
} }
statement1.reset(); statement1.reset();