coolwolf0 - Северный наблюдатель (coolwolf0) wrote,
coolwolf0 - Северный наблюдатель
coolwolf0

Categories:

Какая же это гадость, ваша заливная рыба

Увы, по долгу службы приходится иногда программировать на языке, который если не мой ровесник, то почти (он - 1974 года рождения). И то, что его всячески облагородили в некоей Корпорации Добра, не делает SQL языком программирования. Это какой-то монстр, годный только для Job security на старости лет.

Приведу сегодняшний пример. На Оракловском SQL написана функция, которая должна вернуть простой битовый ответ да/нет на вопрос о членстве пользователя в некой группе. Данные собираются из двух таблиц и результат суммируется через COUNT(*). Всё было бы кошерно, если бы не одно "но": у некоторых пользователей функция упорно возвращает нолик, хотя запустив саму query получаем туеву хучу результатов (многие тыщи). Начали копать, ковырять и мучать эту функцию. Запустили дебаггер (слава яйцам, Корпорация Добра приделала к функциям такую возможность). И что же всплыло? После выполнения запроса функция вылетает по EXCEPTION! Ну какое может быть событие, вызывающее падение тупого запроса (который спокойно работает вне функции)? Копаем дальше - результат запроса попадает в целочисленную переменную... И тут Штирлица осенило: переменная была описана как NUMBER(5), поэтому результат туда иногда не помещался! Проверили - действительно страдающие от дискриминации пользователи получали 6-значное значение. Исправили на NUMBER(10) - нехай тот хомяк подавится - и всё заработало. Да, криворукость автора функции тут тоже присутствует, но бросать EXCEPTION без объяснения причин - свинство.

PS Коллега теперь считает меня колдуном - найти такой баг буквально анализируя сорсы...
Tags: дыбр, программирование, работа
Subscribe

  • Новая винда - впечатления с выражением

    У сына лептоп с официальной виндой. Мой рабочий лептоп мне ничего насчёт новой версии не предлагает, - наши администраторы не спешат приобрести…

  • С переменным успехом

    Мой сайт для записи списка продуктов оказался внезапно очень важным для всей семьи. Ещё бы: без обзвонов, диктовки, согласования и прочей ботвы,…

  • Холивара псто (и немного о деле)

    По образованию и по специальности я - автоматизатор. Это значит, что всякие повторяющиеся ручные процессы бросают мне вызов не только в личном, но и…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments