func init() { flag.Parse() // Register our Datasources in registry datasource.Register(sourceType, &StaticDataSource{}) if testing.Verbose() { u.SetupLogging("debug") u.SetColorOutput() } }
func main() { if sqlText == "" { u.Errorf("You must provide a valid select query in argument: --sql=\"select ...\"") return } // load all of our built-in functions builtins.LoadAllBuiltins() // Add a custom function to the VM to make available to SQL language expr.FuncAdd("email_is_valid", EmailIsValid) // Our file source of csv's is stdin stdIn, err := os.Open("/dev/stdin") if err != nil { u.Errorf("could not open stdin? %v", err) return } // We are registering the "csv" datasource, to show that // the backend/sources can be easily created/added. This csv // reader is an example datasource that is very, very simple. exit := make(chan bool) src, _ := datasource.NewCsvSource("stdin", 0, stdIn, exit) datasource.Register("csv", src) db, err := sql.Open("qlbridge", "csv:///dev/stdin") if err != nil { panic(err.Error()) } defer db.Close() rows, err := db.Query(sqlText) if err != nil { u.Errorf("could not execute query: %v", err) return } defer rows.Close() cols, _ := rows.Columns() // this is just stupid hijinx for getting pointers for unknown len columns readCols := make([]interface{}, len(cols)) writeCols := make([]string, len(cols)) for i, _ := range writeCols { readCols[i] = &writeCols[i] } fmt.Printf("\n\nScanning through CSV: (%v)\n\n", strings.Join(cols, ",")) for rows.Next() { rows.Scan(readCols...) fmt.Println(strings.Join(writeCols, ", ")) } fmt.Println("") }
func init() { //u.SetupLogging("debug") //u.SetColorOutput() datasource.Register("mockcsv", MockCsvGlobal) }
func init() { datasource.Register("mockcsv", &MockCsvSource{data: MockData}) }
func init() { datasource.Register("mockcsv", MockCsvGlobal) }
func init() { testutil.Setup() // Register our Datasources in registry datasource.Register(datasource.SchemaDbSourceType, datasource.NewSchemaDb(td.MockSchema)) }