| 175 | } |
| 176 | |
| 177 | Status SqliteStatement::Step(bool* is_done) { |
| 178 | DCHECK(stmt_ != nullptr); |
| 179 | if (TF_PREDICT_FALSE(bind_error_ != SQLITE_OK)) { |
| 180 | *is_done = true; |
| 181 | return PrintfStatus(bind_error_, "Bind(%d) failed: %s: %s", |
| 182 | bind_error_parameter_, sqlite3_errstr(bind_error_), |
| 183 | sql()); |
| 184 | } |
| 185 | SqliteLock lock(*db_); |
| 186 | int rc = sqlite3_step(stmt_); |
| 187 | switch (rc) { |
| 188 | case SQLITE_ROW: |
| 189 | *is_done = false; |
| 190 | return Status::OK(); |
| 191 | case SQLITE_DONE: |
| 192 | *is_done = true; |
| 193 | return Status::OK(); |
| 194 | default: |
| 195 | *is_done = true; |
| 196 | return PrintfStatus(rc, "Step() failed: [%d] %s: %s", rc, db_->errmsg(), |
| 197 | sql()); |
| 198 | } |
| 199 | } |
| 200 | |
| 201 | bool SqliteStatement::StepOrDie() { |
| 202 | bool is_done; |