func()

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
}