powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по сорсам v.3 (parce.y //FROM clause)
10 сообщений из 10, страница 1 из 1
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39323797
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос из серии "то ли лыжи не едут, то ли глаз замылился"

Не могу найти в разборе FROM clause простейшего случая, который бы приводит к FROM table_name.

Ветка JOINED_TABLE обязательно приводит к сложным выражениям с обязательным JOIN,
Ветка DERIVED_TABLE - обязательный SELECT в скобках
Ветка TABLE_PROC чисто синтаксически подходит, но она приводит к обязательному созданию ProcedureSourceNode


Я посмотрел v.2.54 - та же история. И везде правило table_name дано в разделе FROM (т.е. вроде бы по месту оно имеет прямое отношение к источникам рел.данных), но не используется там вообще (поиск по тексту находит, как оно используется в других местах, но не для FROM)
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39323801
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

что сделать то хочешь? Из чего тебе SELECT ... FROM ... не хватает?

Из того что есть в стандарте и не реализовано в FB вспоминается только ROW VALUE CONSTRUCTOR как Derived table. Ну и LATERAL JOIN, хотя это не твой случай.
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39323813
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,
Я пытаюсь понять как устроена обработка контекстов в CompilerScratch для производных контекстов, мне это нужно для обработки нового типа контекстов. Для этого я разбираю, как и для каких рекордсорсов эти производные контексты возникают, что привело меня в parse.y. И тут я наткнулся, что не могу понять, как там простейший RelationSourceNode. Вроде всяко должно быть (как я думал), а я в упор не вижу.
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39323822
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

это жди dimitr или hvlad. Вот мне собственно и интересно что это за новый тип контекста.
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39323827
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39324495
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное я вопрос не сформулировал. Формулирую.

Правильно ли я понимаю, что в простейшем случае FROM table_name этот table_name (и вообще любое имя таблицы) будет парситься в ProcedureSourceNode?
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39325742
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

см dsqlPassRelProc(), она вызывается из ProcedureSourceNode::dsqlPass и из RelationSourceNode::dsqlPass и может вызвать PASS1_relation(), которая возвращает новый настоящий объект
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39328134
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, Спасибо

Сразу не заметил, увяз тут в "этих ваших" :) контекстах и стримах (это ж скока поллитров надо, никакое здоровье не выдержит!). Правильно я понимаю, что
1)каждому упомянутому в команде "отношению" (в самом широком смысле) в dsql-фазе ставится в соотвествие некое число "номер контекста" и там же каждое упомянутое поле привязывается к соответсвющему контексту, и все эти номера пишуться в блр?
2) на стадии pass1 отталкиваясь от того, что реально представляются "отношения", и от нумерации контекстов, строяться потоки. Если "отношение" является видом, то ему будет соотвествоваь несколько потоков. Например StoreNode::pass1Store анализирует куда мы вставляем запись, в таблицу или обновляемое представлениеи может в конце концов сгенерить несколько потоков.

Общий вопрос, из dsql-фазы в блр-фазу инфа только через блр буфер передается? Или есть какие привязанные к тому же csb структуры данных (про те же контексты), которые создаются в dsql-фазе и потом используются в блр-фазе?
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39328187
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и еще один вопрос, риторический.
Вышел на ф-ию postTriggerAccess(). Вот, думаю, редкая ф-ия с развернутым комментарием, где аж 15 строк объясняют, как она работает. Читаю. В конце "код больше не соответствует этому комментарию"... ну как так то? :)
...
Рейтинг: 0 / 0
Вопрос по сорсам v.3 (parce.y //FROM clause)
    #39329354
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneПравильно я понимаю, что ...Да - на оба вопроса

U-geneОбщий вопрос, из dsql-фазы в блр-фазу инфа только через блр буфер передается? Или есть какие привязанные к тому же csb структуры данных (про те же контексты), которые создаются в dsql-фазе и потом используются в блр-фазе?DSQL видит текст запроса, парсит его, строит дерево разбора и генерирует BLR.
Движок работает только с BLR, парсит его, строит дерево выполнения, даёт оптимизатору для "доработки", и в итоге выполоняет его.
Так что - нет, никакого прямого взаимодействия между DSQL и парсером BLR нет.

PS В IB6 DSQL слой работал "над" y-valve, т.е. полностью изолированно и независимо от движка (отсюда можно предположить, что ещё раньше, он был частью клиента, а не сервера).
Позже мы внесли DSL "под" y-valve. Джим Старки время от времени пинает нас в сторону отказа от BLR, но задача эта не первоочередная и никто этим не занимается.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по сорсам v.3 (parce.y //FROM clause)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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