mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.2 KiB
74 lines
1.2 KiB
// +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() |
|
}
|
|
|