Гы-гы! Я это уже позавчера узнал :) Теперь у меня другая проблема - как сделать все красиво. Вариант "if (majorVersion == 2 && minorVersion == 1)" не предлагать.

   Чем проверка на существование RDB$PROCEDURE_TYPE не подходит ?

Ну, во-первых, я не буду делать 4 раундтрипа к серверу, читать метаданые только для того чтоб узнать что там есть, а чего там нет.

Но я имел ввиду другое. Есть два варианта:

а) иметь один клас и в нем делать проверку на версию сервера, и исполнять запрос с RDB$PROCEDURE_TYPE или нет, в зависимости от версии. Дешево и сердито, но некрасиво в дальнейшей перспективе.

б) иметь несколько классов с различной ф-циональностью (классический ОО с перекрытием методов), в самом начале работы с базой определятся, какие классы грузить. Ну что-то типа провайдерной архитектуры, но в драйвере и с другой стороны. Красиво, но сложно.

Ну вот и спрашиваю, а может есть и третий вариант :)

Роман

Ответить