Пишем функции для PostgreSQL на… BASIC? 😳
Пишем функции для PostgreSQL на… BASIC? 😳 Сегодня, в качестве "поста выходного дня" хочу рассказать Вам об одном довольно необычном расширении для СУБД на базе PostgreSQL. Сейчас уже никого не удивить тем, что хранимую логику в PostgreSQL можно писать не только на PL/pgSQL, но и на Java или C#. Однако иногда сообщество PostgreSQL создаёт воистину необычные вещи, от которых у старшего поколения разработчиков наворачивается ностальгическая слеза, а у младшего — удивленно округляются глаза. Встречайте: PL/CBMBASIC — расширение, которое позволяет писать функции для PostgreSQL на Commodore 64 BASIC V2. Внутри расширения работает настоящий интерпретатор BASIC образца 1982 года, извлеченный из ПЗУ Commodore 64. Каждый вызов функции — это, по сути, «перезагрузка» виртуального компьютера: обнуляется 64 КБ памяти, сбрасываются регистры, и управление передаётся по адресу $E394. Всё это занимает около 15–20 микросекунд — примерно в тысячу раз быстрее, чем на настоящем C64. Номера строк обязательны, а на имена переменных действуют в точности те же ограничения, что и в "оригинале". Выглядит это так: ```sql CREATE EXTENSION plcbmbasic; CREATE FUNCTION hello(who text) RETURNS text AS $$ 10 PRINT "HELLO, ";WHO$;"!" $$ LANGUAGE plcbmbasic; ``` Если хотите сильно удивить коллег или подшутить над ними — «запилите» кусочек хранимой логики столь экзотическим образом. Правда, есть риск, что в качестве «ответки» Вам прилетит хранимая функция на языке BrainF*ck 🤦