Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Cтранный бехейвор резолвера идентификаторов, не так ли? :-/  [new]
RubinDm
Member

Откуда:
Сообщений: 461
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4286.0 (X64)   May 29 2013 15:04:02
Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64>
(Build 7601: Service Pack 1) (Hypervisor)
create table Docs
  ( [ID] int not null
  , [Rev] hierarchyid not null
  )
go

select [D].[ID], [Rev].[Rev]
from Docs [D]
cross apply
( select top (1) [X2].[Rev]
  from Docs [X2]
  where [X2].[ID] = [D].[ID]
  order by [X2].[Rev] desc
) [Rev]
go

drop table Docs
go

--Msg 209, Level 16, State 1, Line 2
--Ambiguous column name 'Rev'.
Опытным путем определено, что ошибка пропадает в том случае, если в определении таблицы вместо типа hierarchyid подставить, например, int. Это наводит на мысль о том, что сервер видит, что поле [Rev] определено CLR-типом с методами, и пытается интерпретировать выражение [Rev].[Rev] как вызов метода точка-[Rev] от значения в clr-поле [Rev]. Имхо это сабж, не так ли? :-/
15 дек 13, 20:18    [15295829]     Ответить | Цитировать Сообщить модератору
 Re: Cтранный бехейвор резолвера идентификаторов, не так ли? :-/  [new]
Crimean
Member

Откуда:
Сообщений: 13147
да, странно. и смена типа поля и смена алиаса для кросс-аплайного запроса также решает проблему.. как и смена алиаса для поля, возвращаемого кросс-аплаем..
бага..
15 дек 13, 20:48    [15295893]     Ответить | Цитировать Сообщить модератору
 Re: Cтранный бехейвор резолвера идентификаторов, не так ли? :-/  [new]
RubinDm
Member

Откуда:
Сообщений: 461
Crimean, согласен, это далеко не смертельно. Просто удивительно было нарваться на такое после изменения типа поля с int на hid. Хотя сам стиль кода воспроизведения, конечно, тож не образец, и в каком-то смысле способствует и усугубляет багу.
15 дек 13, 21:09    [15295944]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить