5 ms·
> I do not know of any success stories using Exceptions on Kernels or RDBMSs or even most server software. I think you need to get out more. Exceptions are ac
by cbsmith 9y ago
> I do not know of any success stories using Exceptions on Kernels or RDBMSs or even most server software.
I think you need to get out more.
Exceptions are actually pretty standard in the database world. ScyllaDB, arguably the top dog in terms of DB performance, has the "throw" keyword strewn throughout its code base. Oracle PL/SQL's error handling is done entirely through exceptions...
- jstimpfle 9y ago> Oracle PL/SQL's error handling Is this about the database engine itself? Or just the query parser? Or even just exceptions in the query language itself? FWIW, Scylla is not an RDBMS. I don't know about its architecture and am not interested in digging more. And that thing works reliably? I don't know - not my cup of tea. Why am I reminded of Node.js? Not cherry-picking here... future<file> sstable::open_file(component_type type, open_flags flags, file_open_options opts) { auto f = new_sstable_component_file(_read_error_handler, filename(type), flags, opts); if ((type != component_type::Data && type != component_type::Index) || get_config().extensions().sstable_file_io_extensions().empty()) { return f; } return f.then([this, type, flags](file f) { return do_with(std::move(f), [this, type, flags](file& f) { auto ext_range = get_config().extensions().sstable_file_io_extensions(); return do_for_each(ext_range.begin(), ext_range.end(), [this, &f, type, flags](auto& ext) { // note: we're potentially wrapping more than once. extension mechanism // is responsible for order being sane. In the 60s or so, people came up with this thing called scheduler. It allowed them to run things (virtually) at the same time, while not needing to make a mess of their code... They also invented cooperative multitasking, where the scheduler only kicks in when explicitly called. f = open_file_or_schedule(filepath); read_or_schedule(f, buf, size);