elseiver: (I do IT)
[personal profile] elseiver
Вот примерно такое условие, как в сабже, встретил вчера в продакшен-коде, в двух местах.
Понятно, что таких ошибок от невнимательности и опечаток возникает масса, и я боюсь предположить, сколько их в нашей базе кода.

Посему вопрос: не встречались ли уважаемые колеги с автоматическими тулзами, умеющими такие косяки отлавливать, по схеме базы данных, например?
Хочется запустить что-то такое и ужаснуться. Самому писать не хочется:)

Date: 2013-08-06 04:25 pm (UTC)
From: [identity profile] torrio.livejournal.com
Тут немного сложнее. Тот пример, который я привел - такое тоже, конечно, случается, но в реальности, например, было написано вот так:

ON ProjectCarrier.ProjectId = ProjectId

Имелось в виду поле ProjectId из другой таблицы, но у парсера SQL свой взгляд на это:) И его нужно учитывать. Под "простой повтор" такая штука уже не подпадает...

Date: 2013-08-06 06:21 pm (UTC)
From: [identity profile] elder-george.livejournal.com
Хммм, мне SSMS выдал ошибку Msg 209, Level 16, State 1, Line 10
Ambiguous column name 'projectid'.
.

Пробовал вот так:


declare @ProjectCarrier table(
ProjectId INT NOT NULL
)

declare @Project table(
ProjectId INT NOT NULL
)

select * from @ProjectCarrier pc
inner join @project on pc.ProjectId = ProjectId


Ты что-то скрываешь!

Date: 2013-08-06 06:38 pm (UTC)
From: [identity profile] torrio.livejournal.com
Честное слово не вру! Ambiguous column name не возникло потому, что этот запрос был вложенный, и, видимо, ambiguity разрешилась за счёт более низкого приоритета таблицы из внешнего запроса...

Date: 2013-08-06 06:45 pm (UTC)
From: [identity profile] elder-george.livejournal.com
Коллеги подсказали, что есть, например, http://www.sqlcodeguard.com/ (плагин к SSMS) и http://www.ubitsoft.com/products/t-sql-analyzer/index.php (+ платная версия к нему). Может, ещё что-то подскажут…


Сам не пробовал. Ну и у нас SQL код отличный же =)

Date: 2013-08-06 06:48 pm (UTC)
From: [identity profile] torrio.livejournal.com
Спасибо!

Date: 2013-08-06 06:49 pm (UTC)
From: [identity profile] elder-george.livejournal.com
О, вот тут рассказывают, как гонять static analysis на SQL проектах. Правда, там тоже набор правил фиксированный, не факт, что покрывает твои сценарии.

November 2016

S M T W T F S
  12345
67 89101112
13 141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 25th, 2025 10:49 am
Powered by Dreamwidth Studios