unhandled-exception / sophiadb Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
Одна из проблем, связанных с методом executeCreateIndex планиров- щика обновлений, заключается в том, что он создает пустой индекс, даже если индексируемая таблица содержит записи. Переделайте ме- тод так, чтобы он автоматически вставлял индексные записи для всех существующих записей в индексируемой таблице.
Код брал из темплейтов Го и правил по месту. Надо перевести на русский и поправить
Удалил лишнее из метода https://cs.opensource.google/go/go/+/master:src/text/template/parse/lex.go;l=630
Из главы 12 берем реализацию статического хеш индекса — по файлу на каждый бакет индекса. Добавляем поддержку индексов в планировщик.
Завести тикеты из доп-заданий:
В 11 главе книжки описывается овис-интерфейс. Нам нужен интерфейс для database/sql. Делаем современные методы с контекстом.
https://pkg.go.dev/database/sql/driver
в /pkg оставляем только пакет db.
Делаем простой токенайзер, выдающий три типа лексем: text, positional, named. Не ищем positional и named в строках и комментариях. Строки, комментарии и вайтспейсы выдаём в поток в виде text-лексем.
Глава 8. Обработка запросов
PR #34
Глава 10 книги «Планирование». Планы делаем в #45
Отдельный тикет? Добавить в выражение для индекса параметр типа индекса create index idx1 on table1 (field1, ...) [using btree|hash]
. В парсере временно выдавать ошибку, если нам передали несколько полей?
Проверить ,что токенайзер поддерживает lowerCaseMode. Если нет, то понять можно ли врапнуть или нужен пул в мейнстрим.
Глава 10 книги «Планирование». Планы — обёртки над образами сканирования.
Токенайзер из github.com/bzick/tokenizer для нас избыточен. Берем идею лексера из доклада Пайка — https://www.youtube.com/watch?v=HxaD_trXwRE&t=1567 и код из https://cs.opensource.google/go/go/+/master:src/text/template/parse/lex.go и делаем свой простой лексер
Оператор project принимает два аргумента: входную таблицу и набор имен полей. Выходная таблица включает все записи из входной таблицы, но ее схема содержит только указанные поля.
Реализуйте расширяемое хеширование.Выберите максимальную глубину, при которой создается каталог не более чем в двух дисковых блоках.
Глава 12.4
В #57 убрал внутренности базы из /pkg в /internal/pkg, но в /pkg/db мы светим планер из /internal/planner.
Разобраться, можно ли обертками скрыть planner или надо откатывать изменение структуры пакетов.
Два варианта:
Комментарии выкидываем из результирующего потока токенов.
Попутно можно ругаться, если нам передали несколько полей в индексе — в книге поддерживается только одно поле в индексе.
Методы executeDelete и executeUpdate в планировщике обновлений в SimpleDB используют образ сканирования для оператора селекции (SelectScan), чтобы найти требуемые записи. Однако образ можно по- строить и с поддержкой индекса (IndexSelectScan), если подходящий индекс существует.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.