11package postgresql
22
33import (
4+ "database/sql"
45 "fmt"
56
67 "github.com/hashicorp/errwrap"
@@ -11,6 +12,7 @@ import (
1112func resourcePostgreSQLExtension () * schema.Resource {
1213 return & schema.Resource {
1314 Create : resourcePostgreSQLExtensionCreate ,
15+ Read : resourcePostgreSQLExtensionRead ,
1416 Delete : resourcePostgreSQLExtensionDelete ,
1517
1618 Schema : map [string ]* schema.Schema {
@@ -41,7 +43,31 @@ func resourcePostgreSQLExtensionCreate(d *schema.ResourceData, meta interface{})
4143
4244 d .SetId (extensionName )
4345
44- return resourcePostgreSQLRoleRead (d , meta )
46+ return resourcePostgreSQLExtensionRead (d , meta )
47+ }
48+
49+ func resourcePostgreSQLExtensionRead (d * schema.ResourceData , meta interface {}) error {
50+ client := meta .(* Client )
51+ conn , err := client .Connect ()
52+ if err != nil {
53+ return err
54+ }
55+ defer conn .Close ()
56+
57+ extensionName := d .Get ("name" ).(string )
58+
59+ var hasExtension bool
60+ err = conn .QueryRow ("SELECT 1 from pg_extension d WHERE extname=$1" , extensionName ).Scan (& hasExtension )
61+ switch {
62+ case err == sql .ErrNoRows :
63+ d .SetId ("" )
64+ return nil
65+ case err != nil :
66+ return errwrap .Wrapf ("Error reading extension: {{err}}" , err )
67+ default :
68+ d .Set ("extension" , hasExtension )
69+ return nil
70+ }
4571}
4672
4773func resourcePostgreSQLExtensionDelete (d * schema.ResourceData , meta interface {}) error {
0 commit comments