in xray/sql_go110.go [76:101]
func (c *driverConnector) getAttr(ctx context.Context) (*dbAttribute, error) {
c.mu.RLock()
attr := c.attr
c.mu.RUnlock()
if attr != nil {
return attr, nil
}
c.mu.Lock()
defer c.mu.Unlock()
if c.attr != nil {
return c.attr, nil
}
conn, err := c.Connector.Connect(ctx)
if err != nil {
return nil, err
}
defer conn.Close()
attr, err = newDBAttribute(ctx, c.driver.baseName, c.driver.Driver, conn, c.name, c.filtered)
if err != nil {
return nil, err
}
c.attr = attr
return attr, nil
}