Я расширил адаптер JDBC и использовал фабрику пользовательских схем конфигурации model.json с 1 исходной схемой и 2 производными схемами для добавления правил, и это сработало, правила выполнялись на исходной схеме во время планирования, но их конечный результат не был полученВыбранный как лучший вариант планировщиком вулкана, потому что это слишком дорого.Правила преобразовали RelNode для выполнения на 2 производных схемах.Более подробная информация приведена ниже и в коде.
1) Могу ли я указать планировщику Volcano игнорировать 1 из 3 схем, которые я прошел через пользовательский JDBC SchemaFactory?
Я хочу, чтобы анализатор работал с этим 1исходная схема, но планировщик никогда не должен предлагать оптимальный (самый дешевый) план в этой схеме (только 2 другие производные схемы).1 исходная схема всегда отображается 1-в-1 с другими 2 производными схемами, поэтому RelNode, который возвращает мое правило, всегда семантически эквивалентен, просто дороже (по соображениям безопасности).
2) Если это не сработает, как я могу вызвать HepPlanner вместо планировщика вулканов по умолчанию из SchemaFactory, установленного в model.json, поскольку это моя отправная точка?
Вы можете найтиВесь мой код на GitHub, я сделал его общедоступным, чтобы каждый мог иметь лучшую отправную точку с Calcite, чем я.
Вот ссылка: https://github.com/igrgurina/multicloud_rewriter
Calciteбиблиотека удивительна, но в нее действительно трудно войти, потому что в ней отсутствуют примеры и учебные пособия для общих задач.
В идеале, я бы хотел, чтобы HepPlanner выполнял мои правила, преобразующие их в семантически эквивалентные выражения, использующие 2 производные схемы вместо1 оригинальная схема (у меня есть правило, которое это делает), и затем планировщик Volcano оптимизирует это, используя только 2 производные схемы, не имея представления о том, что 1 оригинальная схема существует, по соображениям безопасности.
У меня нет 'Я нашел какие-либо разумные примеры, которые демонстрируют, как это сделать, поэтому любая помощь будет оценена (пожалуйста, неst ссылки на пример Druid, или веб-сайт Apache Calcite docs, я просматривал их тысячу раз).