«Чистое зло»: разработчик перечислил недостатки Oracle SQL
«Мне нравится Oracle, но иногда он заставляет меня лезть на стену», — такими словами начал свой пост разработчик с сайта CodingToFreedom, который, мягко говоря, недоволен этой технологией и называет ее, вероятно в шутку, «чистым злом». Последней каплей стал момент, когда специалисту пришлось вести с программой «битвы эпических масштабов», в результате чего он потратил несколько месяцев на решение ошибок, устранение которых должно занимать не более пяти минут.
Вот почему автор недолюбливает Oracle.
Каждый, кто когда-либо работал с Oracle SQL, знает, как программа сообщает об ошибках. Уведомления вроде «Invalid SQL statement» или «Missing Right Paranthesis» неинформативны, особенно, если в них нет информации о номерах строк с ошибкой.
В моем представлении Oracle — это парень, который работает на компанию уже десять лет и даже не пытается выполнять свои обязанности как положено, он просто делает какой-то минимум, которого достаточно, чтобы его не уволили.
Уведомления от Oracle настолько же бесполезны, как если вы попросите у кого-то помощи и вас отправят искать решение в Google.
Представьте, что в коде есть функция, которая должна вносить некоторые значения в таблицу базы данных. Вроде бы все просто, да? Но внезапно вы получаете сообщение с ошибкой «Table or view not found», что означает, что какой-то сервис-провайдер обращается к таблице, которой еще нет.
Это не самая сложная ошибка, но чтобы ее устранить нужно определить, почему недостаточно существующих привилегий, а также отладить всю программу. И все это делается для того, чтобы в конечном итоге выяснить, что проблема не в представлениях, а в последовательностях, используемых для увеличения ID столбца, которому нужны привилегии для пользователя.
Такое сообщение об ошибке хуже ошибки без описания, потому что оно дезинформирует и пускает по ложному пути. Мне пришлось устранять ту ошибку, которую указала программа.
Каждый раз, когда пользователь пытается задать программе вопрос, она отвечает как тот парень из магазина, которого вы можете случайно перепутать с продавцом-консультантом — «извините, но я здесь не работаю».
За решением можно пойти на форум программ, но искать помощи там, это все равно, что ждать внятного и быстрого ответа на свой вопрос на Quora. Конечно, пока ищите, вы узнаете много нового, но решение вашей проблемы будет где-то в недрах комментариев на StackOverflow. Причем сообщение будет помечено как дубликат, с кучей апвоутов и не будет отвечать на основной вопрос треда.
Посмотрите на этот код. Что вы видите?
Кроме того, что это выглядит безобразно и является возможным источником SQL-инъекции, сначала может показаться, что это рабочий код, но это не так. Хотя, если скопировать его в редактор и запустить, он запустится. Почему? Проблема в точке с запятой в конце скрипта. Функция EXECUTE IMMEDIATE везде работает по-разному.
Представьте, вы работает над кодом, который по всем правилам должен работать, но не работает. В отчаянии вы начинаете добавлять после каждого вызова функции логи, чтобы выяснить, где скрипт перестает работать (потому что, конечно, Oracle просто так вам об этом не скажет). Вы находите все баги и надеетесь, что теперь цикл пройдет без ошибок, но внезапно вы замечаете увеличение переменной счетчика. А затем он останавливается после 459-й итерации из примерно 900.
Как оказалось, Oracle настолько не любит предоставлять пользователям вывод логов, что сам оператор ведения логов может привести к сбою скрипта, когда внутренний буфер вывода логов будет переполнен. Эта ошибка стала последней каплей моего терпения. На отладку у меня ушло несколько часов, а решение этой ошибки было довольно-таки простым:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…