1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // +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()
- }
|