Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
ecf5d42
create a bucket for each `referencestable` column as well as the primary
Mar 3, 2018
d107c79
insert into the correct bucket
Mar 4, 2018
8d46343
I seem to have written some kind of code generator
Mar 4, 2018
aec4dde
flatten things out with the indent buffer, but var names are still
Mar 4, 2018
dc1da4f
different var naming strategy
Mar 4, 2018
3f879d4
better string rep. oooh generators
Mar 4, 2018
4f3c434
add pretty printing library
Mar 6, 2018
f8baf59
get rid of indent buffer
Mar 6, 2018
8a269bb
initial commit of language / interpreter
Mar 6, 2018
ef6f811
add functions and function calls; build out interpreter
Mar 6, 2018
36a964e
interpreter tests: variables, builtins, lambdas
Mar 6, 2018
13bad7f
tests for write to json
Mar 6, 2018
50a6250
add some Value#GetType tests
Mar 6, 2018
505872c
[wip] start getting table iterator from schema
Mar 6, 2018
d1bf8d7
iterate through a table!
Mar 7, 2018
fb5e7ed
successfully return table results as JSON!
Mar 8, 2018
780921c
lower-case type names
Mar 8, 2018
8cb1b20
map iterator basically works!
Mar 8, 2018
a8d9b03
add isConcrete function; clean up printlns
Mar 8, 2018
a1f00d8
try to check types of lambda bodies against their stated return type.
Mar 8, 2018
a476a89
ok somehow got everything to pass
Mar 8, 2018
44b3132
add pretty printed exprs to tests
Mar 8, 2018
85532ff
pretty print lib: String => Debug; Render => String
Mar 8, 2018
3fa0ab2
object => record
Mar 8, 2018
1913610
add table names to type scope; pretty print scopes
Mar 8, 2018
1033520
basic grammar structs and formatting
Feb 28, 2018
1855142
first basic parse yaaas
Feb 28, 2018
b3cf91b
implement regex matcher
Feb 28, 2018
4fbb699
break up files, return TRACES
Feb 28, 2018
9330563
working Opt rule
Feb 28, 2018
f53c4ef
test regexes and WhitespaceSeq
Feb 28, 2018
d28ee89
export constructor functions
Feb 28, 2018
ae915b1
actually parses a decent-looking indented sql query
Feb 28, 2018
5d85537
add where clauses
Feb 28, 2018
80934f0
update parsing benchmark
Feb 28, 2018
4e29c9f
get some basic completions working
Feb 28, 2018
e12bf4d
leave some todos for rule ids
Mar 1, 2018
cdbf6fa
basic server for web test harness
Mar 1, 2018
b9f1141
implement rule ids, making grammar serializable
Mar 1, 2018
6a6f7f1
add startpos to trace
Mar 1, 2018
063a0be
add empty react app (create-react-app)
Mar 1, 2018
8864aef
render trace and grammar in UI!
Mar 1, 2018
b4dc89c
log /completions service time
Mar 1, 2018
b672d94
trace tree yaaaas
Mar 1, 2018
817ef4f
trace view works while you type!!
Mar 1, 2018
515c495
basic grammar view
Mar 1, 2018
3eb795e
coloring for the grammar view
Mar 1, 2018
39d12b5
mouse over linkage between rule names in grammar view
Mar 1, 2018
90a6b28
syntax highlight and (partially) hoverify the trace view
Mar 1, 2018
8e9487b
syntax-highlighted source view reconstructed from trace
Mar 1, 2018
b617650
hover linkage on span between trace view and source view
Mar 1, 2018
ba8a82c
use grid layout for scrollability of treeview and source view
Mar 1, 2018
5c89142
remove accidental timeutil import
Mar 1, 2018
74e0215
linkage on rule id between trace and grammar
Mar 1, 2018
5108503
linkage between trace and grammar on rule id for seq & choice
Mar 1, 2018
c7749b0
nope, forgot one. linkage on rule id between source and trace.
Mar 1, 2018
5be71ca
add Makefile; serve static assets properly
Mar 1, 2018
df450b3
dial back source <=> trace linkage
Mar 1, 2018
c434c26
fix parse tests
Mar 1, 2018
c6139d0
tweak grammar: break out column_name
Mar 1, 2018
000cb4c
put parens around choices
Mar 1, 2018
b2ad8e1
make parser recover better!
Mar 1, 2018
b7c51e1
server error handling tweaks
Mar 1, 2018
5ffc61d
add basic parser for FP expressions
Mar 11, 2018
e2675cb
move system tables to their own file
Mar 11, 2018
0a0a6c2
start mapping parse trees to FP exprs
Mar 11, 2018
e7e2fae
parse record literals!
Mar 12, 2018
7d423db
parse func calls
Mar 12, 2018
7fd469d
actually parse func calls; parse lambdas!
Mar 12, 2018
ce66082
parse return types, sort of
Mar 12, 2018
a42e18a
parse param types (sort of)
Mar 12, 2018
6be2fcf
delete type expr
Mar 13, 2018
4fe9e37
leave a todo
Mar 14, 2018
f8a9782
package => pkg
Mar 14, 2018
ca0e444
first TreeSQL => FP query execution!
Mar 15, 2018
d99a95e
get tests to pass, by commenting out some things
Mar 15, 2018
2ef9450
un-export a bunch of stuff
Mar 15, 2018
6fb1881
prevent table names from colliding with builtin names
Mar 15, 2018
c0e40e7
add plan tests
Mar 15, 2018
37e9c61
pretty_print => prettyprint
Mar 15, 2018
45036c6
fix tests
Mar 28, 2018
3b81a44
add strEq and intEq
Mar 29, 2018
23777a1
plan queries with a WHERE
Mar 29, 2018
2f41e41
get a query with a filter to work
Mar 29, 2018
4815f71
wip
Mar 29, 2018
bbb276f
plan one-many joins correctly!
Mar 31, 2018
7f1c1b9
introduce Index type and `scan` function
Apr 1, 2018
a15d7b1
remove printlns; uncomment test that now works
Apr 1, 2018
f874714
get parserlib test harness to work again
vilterp Jun 11, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions cmd/parser_test_harness/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package main

import (
"flag"

"github.com/vilterp/treesql/pkg/lang"
"github.com/vilterp/treesql/pkg/parserlib_test_harness"
)

var port = flag.String("port", "9999", "port to listen on")

func main() {
flag.Parse()

parserlib_test_harness.NewServer(*port, lang.Grammar, "expr")
}
39 changes: 25 additions & 14 deletions cmd/shell/shell.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"os"
"strings"

"log"

"github.com/chzyer/readline"
"github.com/robertkrimen/isatty"
"github.com/vilterp/treesql/pkg"
Expand All @@ -27,6 +29,9 @@ func main() {
}
defer client.Close()

// Wait for server closing
go waitForServerClose(client)

// check if is TTY
isInputTty := isatty.Check(os.Stdin.Fd())

Expand Down Expand Up @@ -82,30 +87,36 @@ func main() {
}
}

func waitForServerClose(client *treesql.Client) {
<-client.ServerClosed
log.Println("server closed the connection")
// TODO: just reset the connection
os.Exit(0)
}

func runLiveQuery(client *treesql.Client, query string) {
initialResult, channel, err := client.LiveQuery(query)
if err != nil {
fmt.Println("error:", err)
}
printJSON("init", initialResult.Data)
printJSON("init", initialResult.Value)
go handleMessages(channel)
}

func runStatement(client *treesql.Client, stmt string) {
channel := client.Statement(stmt)
channel := client.RunStatement(stmt)
firstUpdate := <-channel.Updates
printMessage(channel, firstUpdate)
go handleMessages(channel)
}

func handleMessages(channel *treesql.ClientChannel) {
for {
message := <-channel.Updates
for message := range channel.Updates {
printMessage(channel, message)
}
}

func printMessage(channel *treesql.ClientChannel, msg *treesql.MessageToClient) {
func printMessage(channel *treesql.ClientChannel, msg *treesql.BasicMessageToClient) {
fmt.Printf("chan %d: ", channel.StatementID)
if msg.AckMessage != nil {
fmt.Println("ack", *msg.AckMessage)
Expand All @@ -116,17 +127,17 @@ func printMessage(channel *treesql.ClientChannel, msg *treesql.MessageToClient)
return
}
if msg.InitialResultMessage != nil {
printJSON("init", msg.InitialResultMessage.Data)
return
}
if msg.RecordUpdateMessage != nil {
printJSON("record_update", msg.RecordUpdateMessage)
return
}
if msg.TableUpdateMessage != nil {
printJSON("table_update", msg.TableUpdateMessage)
printJSON("init", msg.InitialResultMessage.Value)
return
}
//if msg.RecordUpdateMessage != nil {
// printJSON("record_update", msg.RecordUpdateMessage)
// return
//}
//if msg.TableUpdateMessage != nil {
// printJSON("table_update", msg.TableUpdateMessage)
// return
//}
}

func printJSON(tag string, thing interface{}) {
Expand Down
2 changes: 1 addition & 1 deletion cmd/static-server/static-server.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func main() {

// open files LQ
res, channel, err := clientConn.LiveQuery(getFilesQuery(*appID))
log.Println("initial files:", res.Data)
log.Println("initial files:", res.Value)
if err != nil {
log.Fatal(err)
}
Expand Down
1 change: 0 additions & 1 deletion cmd/workload/workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"flag"
"fmt"
"log"

"math/rand"

"github.com/pkg/errors"
Expand Down
Loading