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

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

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


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

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

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

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

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

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

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

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

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

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


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