Страница 1 из 1

Mapserver + Mysql хранимка

Добавлено: 27 фев 2013, 20:28
AntonAD
В данный момент один из слоев Mapserver рисует на основании данных от MySQL.

Код: Выделить всё

DATA 		"SELECT id, feature FROM layer WHERE .......", где feature - пространственные данные.
Потребовалось внести достаточно сложную логику в запрос, для чего была написана хранимка, которая отдает данные по запросу. Сама хранимка работает, проверено ручными запросами, однако попытка ее вызова

Код: Выделить всё

DATA 		"call MyPROCEDURE(unix_timestamp(now()))"
Приводит к

Код: Выделить всё

msOGRFileOpen(): OGR error. GetLayer(call MyPROCEDURE(unix_timestamp(now()))) failed for OGR connection 
Возможно вызывать хранимки в данном случае надо как то иначе или проблемы в чем то ином.
Буду благодарен за подсказку.

Re: Mapserver + Mysql хранимка

Добавлено: 03 мар 2013, 15:41
Denis Rykov
Может что-то с правами?

Re: Mapserver + Mysql хранимка

Добавлено: 04 мар 2013, 04:11
AntonAD
Denis Rykov писал(а):Может что-то с правами?
Нет, запускаю под рутом, под рутом же пробовал запускать хранимку из под MySqlQueryBrowserб все работает.

Re: Mapserver + Mysql хранимка

Добавлено: 04 мар 2013, 04:57
Denis Rykov
Никогда не работал с MySQL, поэтому может быть вопросы глупые, но:
1) В первом варианте используется SELECT, а во втором его почему-то нет, вместо него call;
2) Что возвращает ваша функция, геометрии?

Re: Mapserver + Mysql хранимка

Добавлено: 04 мар 2013, 05:15
AntonAD
Denis Rykov писал(а):Никогда не работал с MySQL, поэтому может быть вопросы глупые, но:
1) В первом варианте используется SELECT, а во втором его почему-то нет, вместо него call;
2) Что возвращает ваша функция, геометрии?
Сам не так силен в этом, может ошибаюсь, но
1. Насколько понимаю это стандартный вызов хранимой процедуры (SELECT уже внутри).
2. Геометрии и некоторые их свойства (id, название). проверял без свойств, только геометрии - результат тот же.

Re: Mapserver + Mysql хранимка

Добавлено: 04 мар 2013, 06:12
trir
Может "спрятать" процедуру в View?

Re: Mapserver + Mysql хранимка

Добавлено: 04 мар 2013, 15:50
Tokha
А умеет ли MapServer вызывать хранимые процедуры, в виде call или exec?

У меня MSSQL. Соответственно, процедуру нельзя вызвать конструкцией select ID, GeomCol from MyPROCEDURE.
Несмотря на сложные запросы, пришлось пожертвовать некоторыми вещами и использовать VIEW.

А теперь возможно, что и от VIEW придется отказываться, т.к. в этом случае MSSQL почему-то не подхватывает пространственный индекс, в отличие от простого SELECT, где индекс подхватывается без проблем. Но с этим еще нужно детальнее разбираться.