code: func SqTables(db models.XODB, schema string, relkind string) ([]*models.Table, error) {
  	var err error
  
  	// get the tables
  	rows, err := models.SqTables(db, relkind)
  	if err != nil {
  		return nil, err
  	}
  
  	// get the SQL for the Autoincrement detection
  	autoIncrements, err := models.SqAutoIncrements(db)
  	if err != nil {
  		// Set it to an empty set on error.
  		autoIncrements = []*models.SqAutoIncrement{}
  	}
  
  	// Add information about manual FK.
  	var tables []*models.Table
  	for _, row := range rows {
  		manualPk := true
  		// Look for a match in the table name where it contains the autoincrement
  		// keyword for the given table in the SQL.
  		for _, autoInc := range autoIncrements {
  			lSQL := strings.ToLower(autoInc.SQL)
  			if autoInc.TableName == row.TableName && strings.Contains(lSQL, "autoincrement") {
  				manualPk = false
  			} else {
  				cols, err := SqTableColumns(db, schema, row.TableName)
  				if err != nil {
  					return nil, err
  				}
  				for _, col := range cols {
  					if col.IsPrimaryKey == true {
  						dt := strings.ToUpper(col.DataType)
  						if dt == "INTEGER" {
  							manualPk = false
  						}
  						break
  					}
  				}
  			}
  		}
  		tables = append(tables, &models.Table{
  			TableName: row.TableName,
  			Type:      row.Type,
  			ManualPk:  manualPk,
  		})
  	}
  
  	return tables, nil
  }
docs: // SqTables returns the sqlite tables with the manual PK information added.
  // ManualPk is true when the table's primary key is not autoincrement.