|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
вопрос из серии "то ли лыжи не едут, то ли глаз замылился" Не могу найти в разборе FROM clause простейшего случая, который бы приводит к FROM table_name. Ветка JOINED_TABLE обязательно приводит к сложным выражениям с обязательным JOIN, Ветка DERIVED_TABLE - обязательный SELECT в скобках Ветка TABLE_PROC чисто синтаксически подходит, но она приводит к обязательному созданию ProcedureSourceNode Я посмотрел v.2.54 - та же история. И везде правило table_name дано в разделе FROM (т.е. вроде бы по месту оно имеет прямое отношение к источникам рел.данных), но не используется там вообще (поиск по тексту находит, как оно используется в других местах, но не для FROM) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2016, 14:19 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
U-gene, что сделать то хочешь? Из чего тебе SELECT ... FROM ... не хватает? Из того что есть в стандарте и не реализовано в FB вспоминается только ROW VALUE CONSTRUCTOR как Derived table. Ну и LATERAL JOIN, хотя это не твой случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2016, 14:27 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
Симонов Денис, Я пытаюсь понять как устроена обработка контекстов в CompilerScratch для производных контекстов, мне это нужно для обработки нового типа контекстов. Для этого я разбираю, как и для каких рекордсорсов эти производные контексты возникают, что привело меня в parse.y. И тут я наткнулся, что не могу понять, как там простейший RelationSourceNode. Вроде всяко должно быть (как я думал), а я в упор не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2016, 14:41 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
U-gene, это жди dimitr или hvlad. Вот мне собственно и интересно что это за новый тип контекста. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2016, 14:51 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
Симонов Денис, я писал тут уже http://www.sql.ru/forum/1218402/po-sorsam-vopros?hl= http://www.sql.ru/forum/1207166/fb3-neponyatka?hl= ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2016, 14:57 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
Наверное я вопрос не сформулировал. Формулирую. Правильно ли я понимаю, что в простейшем случае FROM table_name этот table_name (и вообще любое имя таблицы) будет парситься в ProcedureSourceNode? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2016, 13:53 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
U-gene, см dsqlPassRelProc(), она вызывается из ProcedureSourceNode::dsqlPass и из RelationSourceNode::dsqlPass и может вызвать PASS1_relation(), которая возвращает новый настоящий объект ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2016, 23:27 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
hvlad, Спасибо Сразу не заметил, увяз тут в "этих ваших" :) контекстах и стримах (это ж скока поллитров надо, никакое здоровье не выдержит!). Правильно я понимаю, что 1)каждому упомянутому в команде "отношению" (в самом широком смысле) в dsql-фазе ставится в соотвествие некое число "номер контекста" и там же каждое упомянутое поле привязывается к соответсвющему контексту, и все эти номера пишуться в блр? 2) на стадии pass1 отталкиваясь от того, что реально представляются "отношения", и от нумерации контекстов, строяться потоки. Если "отношение" является видом, то ему будет соотвествоваь несколько потоков. Например StoreNode::pass1Store анализирует куда мы вставляем запись, в таблицу или обновляемое представлениеи может в конце концов сгенерить несколько потоков. Общий вопрос, из dsql-фазы в блр-фазу инфа только через блр буфер передается? Или есть какие привязанные к тому же csb структуры данных (про те же контексты), которые создаются в dsql-фазе и потом используются в блр-фазе? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 13:04 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
... и еще один вопрос, риторический. Вышел на ф-ию postTriggerAccess(). Вот, думаю, редкая ф-ия с развернутым комментарием, где аж 15 строк объясняют, как она работает. Читаю. В конце "код больше не соответствует этому комментарию"... ну как так то? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 14:00 |
|
Вопрос по сорсам v.3 (parce.y //FROM clause)
|
|||
---|---|---|---|
#18+
U-geneПравильно я понимаю, что ...Да - на оба вопроса U-geneОбщий вопрос, из dsql-фазы в блр-фазу инфа только через блр буфер передается? Или есть какие привязанные к тому же csb структуры данных (про те же контексты), которые создаются в dsql-фазе и потом используются в блр-фазе?DSQL видит текст запроса, парсит его, строит дерево разбора и генерирует BLR. Движок работает только с BLR, парсит его, строит дерево выполнения, даёт оптимизатору для "доработки", и в итоге выполоняет его. Так что - нет, никакого прямого взаимодействия между DSQL и парсером BLR нет. PS В IB6 DSQL слой работал "над" y-valve, т.е. полностью изолированно и независимо от движка (отсюда можно предположить, что ещё раньше, он был частью клиента, а не сервера). Позже мы внесли DSL "под" y-valve. Джим Старки время от времени пинает нас в сторону отказа от BLR, но задача эта не первоочередная и никто этим не занимается. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:17 |
|
|
start [/forum/topic.php?fid=40&msg=39323822&tid=1561916]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 416ms |
0 / 0 |