MCPcopy Create free account
hub / github.com/PostHog/duckgres / main

Function main

scripts/test_binary.go:13–119  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

11)
12
13func main() {
14 // Connect with binary mode - the driver uses binary for prepared statements automatically
15 connStr := "host=127.0.0.1 port=35432 user=postgres password=postgres dbname=test sslmode=require"
16
17 db, err := sql.Open("postgres", connStr)
18 if err != nil {
19 slog.Error("Failed to open database.", "error", err)
20 os.Exit(1)
21 }
22 defer func() {
23 if err := db.Close(); err != nil {
24 slog.Warn("Failed to close database.", "error", err)
25 }
26 }()
27
28 // Test 1: Create a test table with various types
29 fmt.Println("=== Creating test table ===")
30 _, err = db.Exec(`DROP TABLE IF EXISTS binary_test`)
31 if err != nil {
32 slog.Warn("Drop table warning.", "error", err)
33 }
34
35 _, err = db.Exec(`
36 CREATE TABLE binary_test (
37 id INTEGER,
38 name TEXT,
39 price DOUBLE,
40 active BOOLEAN
41 )
42 `)
43 if err != nil {
44 slog.Error("Create table failed.", "error", err)
45 os.Exit(1)
46 }
47 fmt.Println("Table created successfully")
48
49 // Test 2: Insert data
50 fmt.Println("\n=== Inserting test data ===")
51 _, err = db.Exec(`
52 INSERT INTO binary_test VALUES
53 (1, 'Widget', 19.99, true),
54 (2, 'Gadget', 49.99, false),
55 (3, 'Gizmo', 9.99, true)
56 `)
57 if err != nil {
58 slog.Error("Insert failed.", "error", err)
59 os.Exit(1)
60 }
61 fmt.Println("Data inserted successfully")
62
63 // Test 3: Query with prepared statement (uses extended query protocol with binary)
64 fmt.Println("\n=== Querying with prepared statement ===")
65 rows, err := db.Query("SELECT id, name, price, active FROM binary_test WHERE id > $1", 0)
66 if err != nil {
67 slog.Error("Query failed.", "error", err)
68 os.Exit(1)
69 }
70 defer func() {

Callers

nothing calls this directly

Calls 7

CloseMethod · 0.65
ExecMethod · 0.65
QueryMethod · 0.65
NextMethod · 0.65
ScanMethod · 0.65
OpenMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected