| // +build ignore |
| |
| // Generate the table of OID values |
| // Run with 'go run gen.go'. |
| package main |
| |
| import ( |
| "database/sql" |
| "fmt" |
| "log" |
| "os" |
| "os/exec" |
| |
| _ "github.com/lib/pq" |
| ) |
| |
| func main() { |
| datname := os.Getenv("PGDATABASE") |
| sslmode := os.Getenv("PGSSLMODE") |
| |
| if datname == "" { |
| os.Setenv("PGDATABASE", "pqgotest") |
| } |
| |
| if sslmode == "" { |
| os.Setenv("PGSSLMODE", "disable") |
| } |
| |
| db, err := sql.Open("postgres", "") |
| if err != nil { |
| log.Fatal(err) |
| } |
| cmd := exec.Command("gofmt") |
| cmd.Stderr = os.Stderr |
| w, err := cmd.StdinPipe() |
| if err != nil { |
| log.Fatal(err) |
| } |
| f, err := os.Create("types.go") |
| if err != nil { |
| log.Fatal(err) |
| } |
| cmd.Stdout = f |
| err = cmd.Start() |
| if err != nil { |
| log.Fatal(err) |
| } |
| fmt.Fprintln(w, "// generated by 'go run gen.go'; do not edit") |
| fmt.Fprintln(w, "\npackage oid") |
| fmt.Fprintln(w, "const (") |
| rows, err := db.Query(` |
| SELECT typname, oid |
| FROM pg_type WHERE oid < 10000 |
| ORDER BY oid; |
| `) |
| if err != nil { |
| log.Fatal(err) |
| } |
| var name string |
| var oid int |
| for rows.Next() { |
| err = rows.Scan(&name, &oid) |
| if err != nil { |
| log.Fatal(err) |
| } |
| fmt.Fprintf(w, "T_%s Oid = %d\n", name, oid) |
| } |
| if err = rows.Err(); err != nil { |
| log.Fatal(err) |
| } |
| fmt.Fprintln(w, ")") |
| w.Close() |
| cmd.Wait() |
| } |