docs | ||
urql | ||
utilities | ||
LICENSE | ||
README.md |
urQL
Scripting language grammar and parser for an Urbit RDBMS.
Pull Requests are appreciated, but you should start a discussion before you proceed. If green-lit then open an issue.
Actively seeking contributors to add/improve the following functionality:
- speed-up INSERT parsing
- FROM clause to support AS OF
- parse CREATE VIEW
- parse DROP VIEW
- create uql/hoon mark file
Usage
Build the library.
=parse -build-file /=urql=/lib/parse/hoon
Submit a command for parsing in the dojo.
(parse:parse(default-database 'db1') "FROM foo SELECT TOP 10 *")
Successful commands will return a typed list of commands parsed into their respective data structures.
Sample database
urQL scripts for the Animal Shelter sample database are in the folder urql/gen/animal-shelter.
To parse the entire DDL and load script:
=uql `tape`(reel .^(wain %cx /=urql=/gen/animal-shelter/all-animal-shelter/txt) |=([a=cord b=tape] (weld (trip a) b)))
(parse:parse(default-database 'db1') uql)
This will likely take about a minute as parsing the 22K rows of calendar table insert urQL is slow (looking for contributors to speed insert parsing).
Utilities
Error messages and failed tests return untyped hoon data, which looks like a blizard of big numbers. To make it suitable for human viewing there is a utility to change the atom big numbers to cords for all the urQL key words, type-tags, and many of the variable names.
- Install the latest dotnet. Works on Linux and Mac.
- Save the noun the dojo gave you to a file.
- The utility will add '2' to the file name and save it (e.g. input.txt becomes input.txt2)
> dotnet fsi display-hoon.fsx input.txt
> cat input.txt2
[[%selected-aggregate COUNT %qualified-column [%qualified-object 0 'UNKNOWN' 'COLUMN-OR-CTE' %foo] %foo 0] %as CountFoo]