Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Abstract syntax tree  [new]
Swv
Member

Откуда:
Сообщений: 120
Вопрос по abstract syntax tree применительно к sql.
Допустим есть такой запрос

Select a+b,c from table where d =3

Тут все относительно просто. Выбираются из таблицы a,b,c,d, делается фильтр по d, считается выражение. Все.

допустим есть такой запрос.

Select max(a+b), c from table
Как я понимаю все будет выглядеть так.
Выборка a,b,c. Считается выражение, потом сортировка, группировка и вычисление max.

А вот если так.

Select max(a+b)-min(d),u from table group by u
Опять же. Как я представляю .
Выборка a,b,d,u
Вычисление a+b
Сортировка,группировка по u и вычисление агрегатов.
А уже потом вычитание одного агрегата из другого.
Как выполнение организовать последнего запроса более менее понятно .
А вот как будет в этом случае выглядеть ast?
23 фев 19, 16:24    [21817876]     Ответить | Цитировать Сообщить модератору
 Re: Abstract syntax tree  [new]
mayton
Member

Откуда: loopback
Сообщений: 40510
Swv, здесь звучит сразу 2 вопроса. Как будет выглядеть синтексическое дерево и как будет выглядеть план выполнения
запроса в БД. Это два очень разные вопроса и их надо задавать отдельно.

Все что связанно с сортировкой и группировкой к AST имеет очень очень мало отношения. Это разные уровни приложения
и их не надо смешивать.
23 фев 19, 16:36    [21817885]     Ответить | Цитировать Сообщить модератору
 Re: Abstract syntax tree  [new]
Anatoly Moskovsky
Member

Откуда: Odessa
Сообщений: 6351
mayton
Как будет выглядеть синтексическое дерево и как будет выглядеть план выполнения
запроса в БД. Это два очень разные вопроса и их надо задавать отдельно.

Возможно ТС имеет в виду АСТ как раз для представления плана выполнения, как некоторого внутреннего языка движка SQL.
23 фев 19, 17:06    [21817896]     Ответить | Цитировать Сообщить модератору
 Re: Abstract syntax tree  [new]
Dima T
Member

Откуда:
Сообщений: 13634
ИМХО sql декларативный язык, он описывает что надо получить, а как - это на усмотрение движка СУБД. Т.е. данный вопрос нужно ставить применительно к какой-то конкретной СУБД.
23 фев 19, 18:33    [21817937]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить