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

Categories:

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

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

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

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

  • Дыбрики 2021

    Получили с женой вторую дозу вакцины - она на следующий день чувствовала себя не очень (пришлось отменить прогулку в окрестностях стольного града…

  • Тряхнул стариной (и немного новизной)

    Для нового проекта в области DevOps учу кучу незнакомых вещей: все эти IPMI, DCMI, SNMP и прочая, и прочая. В одной из под-задачек понадобилось…

  • Установлены чипы от Билла Гейтса

    Согласно Михалкову, получил первую дозу чипирования. Укололи в плечевую мышцу (медицинских терминов не знаю, у спортсменов это латеральная дельта).…

  • 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