3 ms·
> 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? FWI
by 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);