mirror of
https://github.com/minio/minio.git
synced 2024-12-31 17:43:21 -05:00
e29009d347
Commit 5c13765168
removed postgre registration triggerd
by the automatic gofmt command but it was the only where pg is registered. This commit
fixes behavior and adds unit tests to check whether postgre & sql are registered or not.
94 lines
1.7 KiB
Go
94 lines
1.7 KiB
Go
// +build ignore
|
|
|
|
// Generate the table of OID values
|
|
// Run with 'go run gen.go'.
|
|
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
|
|
_ "github.com/lib/pq"
|
|
)
|
|
|
|
// OID represent a postgres Object Identifier Type.
|
|
type OID struct {
|
|
ID int
|
|
Type string
|
|
}
|
|
|
|
// Name returns an upper case version of the oid type.
|
|
func (o OID) Name() string {
|
|
return strings.ToUpper(o.Type)
|
|
}
|
|
|
|
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)
|
|
}
|
|
rows, err := db.Query(`
|
|
SELECT typname, oid
|
|
FROM pg_type WHERE oid < 10000
|
|
ORDER BY oid;
|
|
`)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
oids := make([]*OID, 0)
|
|
for rows.Next() {
|
|
var oid OID
|
|
if err = rows.Scan(&oid.Type, &oid.ID); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
oids = append(oids, &oid)
|
|
}
|
|
if err = rows.Err(); 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, "// Code generated by gen.go. DO NOT EDIT.")
|
|
fmt.Fprintln(w, "\npackage oid")
|
|
fmt.Fprintln(w, "const (")
|
|
for _, oid := range oids {
|
|
fmt.Fprintf(w, "T_%s Oid = %d\n", oid.Type, oid.ID)
|
|
}
|
|
fmt.Fprintln(w, ")")
|
|
fmt.Fprintln(w, "var TypeName = map[Oid]string{")
|
|
for _, oid := range oids {
|
|
fmt.Fprintf(w, "T_%s: \"%s\",\n", oid.Type, oid.Name())
|
|
}
|
|
fmt.Fprintln(w, "}")
|
|
w.Close()
|
|
cmd.Wait()
|
|
}
|