OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "sql/connection.h" | 5 #include "sql/connection.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 int Connection::OnSqliteError(int err, sql::Statement *stmt) { | 853 int Connection::OnSqliteError(int err, sql::Statement *stmt) { |
854 UMA_HISTOGRAM_SPARSE_SLOWLY("Sqlite.Error", err); | 854 UMA_HISTOGRAM_SPARSE_SLOWLY("Sqlite.Error", err); |
855 AddTaggedHistogram("Sqlite.Error", err); | 855 AddTaggedHistogram("Sqlite.Error", err); |
856 | 856 |
857 // Always log the error. | 857 // Always log the error. |
858 LOG(ERROR) << "sqlite error " << err | 858 LOG(ERROR) << "sqlite error " << err |
859 << ", errno " << GetLastErrno() | 859 << ", errno " << GetLastErrno() |
860 << ": " << GetErrorMessage(); | 860 << ": " << GetErrorMessage(); |
861 | 861 |
862 if (!error_callback_.is_null()) { | 862 if (!error_callback_.is_null()) { |
863 error_callback_.Run(err, stmt); | 863 // Fire from a copy of the callback in case of reentry into |
| 864 // re/set_error_callback(). |
| 865 // TODO(shess): <http://crbug.com/254584> |
| 866 ErrorCallback(error_callback_).Run(err, stmt); |
864 return err; | 867 return err; |
865 } | 868 } |
866 | 869 |
867 // The default handling is to assert on debug and to ignore on release. | 870 // The default handling is to assert on debug and to ignore on release. |
868 if (!ShouldIgnore(err)) | 871 if (!ShouldIgnore(err)) |
869 DLOG(FATAL) << GetErrorMessage(); | 872 DLOG(FATAL) << GetErrorMessage(); |
870 return err; | 873 return err; |
871 } | 874 } |
872 | 875 |
873 // TODO(shess): Allow specifying integrity_check versus quick_check. | 876 // TODO(shess): Allow specifying integrity_check versus quick_check. |
(...skipping 25 matching lines...) Expand all Loading... |
899 } | 902 } |
900 | 903 |
901 // Best effort to put things back as they were before. | 904 // Best effort to put things back as they were before. |
902 const char kNoWritableSchema[] = "PRAGMA writable_schema = OFF"; | 905 const char kNoWritableSchema[] = "PRAGMA writable_schema = OFF"; |
903 ignore_result(Execute(kNoWritableSchema)); | 906 ignore_result(Execute(kNoWritableSchema)); |
904 | 907 |
905 return ret; | 908 return ret; |
906 } | 909 } |
907 | 910 |
908 } // namespace sql | 911 } // namespace sql |
OLD | NEW |