powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
5 сообщений из 5, страница 1 из 1
По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
    #39131422
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я до определенной поры думал, что эта команда, как и другие, идет через парсер, тем более, что в parse.y она обрабатывается с созданием нода AlterDatabaseNode. Долго-долго втыкал в этот нод, не поимая, где, собственно работа.
И тут выяснил, что в isql для нее (и для коннект дб) существует отдельное заднее килирисо со своим маленьким товаровэдсинтаксическим разбором, которое заканчивается практически напрямую вызовом JProvider::createDatabase. И, кажется, fbserver делает тоже самое. Причем этот маленький разбор выполняется аж в fbclient.
Вопросы
1) Это так?
2) fbserevr в конце концов тот же метод JProvider::createDatabase
3) Существующая обработка команды в parse.y с созданием нода AlterDatabaseNode - она зачем?
4) В моем примитивном представлении пакет от клиента к серверу содержал строку команды (+ служебная инфо, типа имя клиенты и тд.). А если синт.разбор на клиенте выполняется, что тогда в пакете? Или fbclient с сервером ваще по другому общаются? Где можно это узнать?
...
Рейтинг: 0 / 0
По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
    #39131423
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
2) fbserver в конце концов тот же метод JProvider::createDatabase дергает?
...
...
Рейтинг: 0 / 0
По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
    #39131431
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы создать БД, нужно как минимум выделить из запроса имя хоста и имя файла БД.
Т.е. минимальный парсинг на клиенте нужен, без него никак.
Однако парсер не обязан знать дополнительных необязательных параметров, указываемых при создании БД.
Тем более, если на той стороне провода более новый сервер, умеющий новые штуки.

Посему, запрос CREATE DATABASE обрабатывается в две стадии:

1. простой препарсинг выделяет известные ему параметры, заполняет DPB и вызывает isc_create_database (или IProvider::createDatabase в новом АПИ 3-ки). Если этот вызов завершился успешно, то

2. весь запрос снова выполняется в уже созданном коннекте к новой БД - там он обрабатывается (фактически как ALTER DATABASE) движком, который знает и понимает все дополнительные параметры.
Если что-то пойдёт не так, то БД дропается и возвращается ошибка.
...
Рейтинг: 0 / 0
По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
    #39131442
Izya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е фактически БД создается вызовом JProvider::createDatabase? И системные таблица в ней - тоже?
...
Рейтинг: 0 / 0
По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
    #39131445
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Izya,

да
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / По сорсу FB3 разрешите сомнения по поводу CREATE DATABASE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]