code: func (adapter *PostgresAdapter) CreateTableQuery(tableName string, columns []*types.SQLTableColumn) (string, string) {
  	// build query
  	columnsDef := ""
  	primaryKey := ""
  	dictionaryValues := ""
  
  	for i, column := range columns {
  		secureColumn := adapter.SecureName(column.Name)
  		sqlType, _ := adapter.TypeMapping(column.Type)
  		pKey := 0
  
  		if columnsDef != "" {
  			columnsDef += ", "
  			dictionaryValues += ", "
  		}
  
  		columnsDef += Cleanf("%s %s", secureColumn, sqlType)
  
  		if column.Length > 0 {
  			columnsDef += Cleanf("(%v)", column.Length)
  		}
  
  		if column.Primary {
  			pKey = 1
  			columnsDef += " NOT NULL"
  			if primaryKey != "" {
  				primaryKey += ", "
  			}
  			primaryKey += secureColumn
  		}
  
  		dictionaryValues += Cleanf("('%s','%s',%d,%d,%d,%d)",
  			tableName,
  			column.Name,
  			column.Type,
  			column.Length,
  			pKey,
  			i)
  	}
  
  	query := Cleanf("CREATE TABLE %s.%s (%s", adapter.Schema, adapter.SecureName(tableName), columnsDef)
  	if primaryKey != "" {
  		query += "," + Cleanf("CONSTRAINT %s_pkey PRIMARY KEY (%s)", tableName, primaryKey)
  	}
  	query += ");"
  
  	dictionaryQuery := Cleanf("INSERT INTO %s.%s (%s,%s,%s,%s,%s,%s) VALUES %s;",
  		adapter.Schema, types.SQLDictionaryTableName,
  		types.SQLColumnLabelTableName, types.SQLColumnLabelColumnName,
  		types.SQLColumnLabelColumnType, types.SQLColumnLabelColumnLength,
  		types.SQLColumnLabelPrimaryKey, types.SQLColumnLabelColumnOrder,
  		dictionaryValues)
  
  	return query, dictionaryQuery
  }
docs: // CreateTableQuery builds query for creating a new table