github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/lib/pq/oid/gen.go (about) 1 // +build ignore 2 3 // Generate the table of OID values 4 // Run with 'go run gen.go'. 5 package main 6 7 import ( 8 "database/sql" 9 "fmt" 10 "log" 11 "os" 12 "os/exec" 13 14 _ "github.com/insionng/yougam/libraries/lib/pq" 15 ) 16 17 func main() { 18 datname := os.Getenv("PGDATABASE") 19 sslmode := os.Getenv("PGSSLMODE") 20 21 if datname == "" { 22 os.Setenv("PGDATABASE", "pqgotest") 23 } 24 25 if sslmode == "" { 26 os.Setenv("PGSSLMODE", "disable") 27 } 28 29 db, err := sql.Open("postgres", "") 30 if err != nil { 31 log.Fatal(err) 32 } 33 cmd := exec.Command("gofmt") 34 cmd.Stderr = os.Stderr 35 w, err := cmd.StdinPipe() 36 if err != nil { 37 log.Fatal(err) 38 } 39 f, err := os.Create("types.go") 40 if err != nil { 41 log.Fatal(err) 42 } 43 cmd.Stdout = f 44 err = cmd.Start() 45 if err != nil { 46 log.Fatal(err) 47 } 48 fmt.Fprintln(w, "// generated by 'go run gen.go'; do not edit") 49 fmt.Fprintln(w, "\npackage oid") 50 fmt.Fprintln(w, "const (") 51 rows, err := db.Query(` 52 SELECT typname, oid 53 FROM pg_type WHERE oid < 10000 54 ORDER BY oid; 55 `) 56 if err != nil { 57 log.Fatal(err) 58 } 59 var name string 60 var oid int 61 for rows.Next() { 62 err = rows.Scan(&name, &oid) 63 if err != nil { 64 log.Fatal(err) 65 } 66 fmt.Fprintf(w, "T_%s Oid = %d\n", name, oid) 67 } 68 if err = rows.Err(); err != nil { 69 log.Fatal(err) 70 } 71 fmt.Fprintln(w, ")") 72 w.Close() 73 cmd.Wait() 74 }