MCPcopy
hub / github.com/django/django / _create_index_sql

Method _create_index_sql

django/db/backends/base/schema.py:1569–1621  ·  view source on GitHub ↗

Return the SQL statement to create the index for one or several fields or expressions. `sql` can be specified if the syntax differs from the standard (GIS indexes, ...).

(
        self,
        model,
        *,
        fields=None,
        name=None,
        suffix="",
        using="",
        db_tablespace=None,
        col_suffixes=(),
        sql=None,
        opclasses=(),
        condition=None,
        include=None,
        expressions=None,
    )

Source from the content-addressed store, hash-verified

1567 )
1568
1569 def _create_index_sql(
1570 self,
1571 model,
1572 *,
1573 fields=None,
1574 name=None,
1575 suffix="",
1576 using="",
1577 db_tablespace=None,
1578 col_suffixes=(),
1579 sql=None,
1580 opclasses=(),
1581 condition=None,
1582 include=None,
1583 expressions=None,
1584 ):
1585 """
1586 Return the SQL statement to create the index for one or several fields
1587 or expressions. `sql` can be specified if the syntax differs from the
1588 standard (GIS indexes, ...).
1589 """
1590 fields = fields or []
1591 expressions = expressions or []
1592 compiler = Query(model, alias_cols=False).get_compiler(
1593 connection=self.connection,
1594 )
1595 tablespace_sql = self._get_index_tablespace_sql(
1596 model, fields, db_tablespace=db_tablespace
1597 )
1598 columns = [field.column for field in fields]
1599 sql_create_index = sql or self.sql_create_index
1600 table = model._meta.db_table
1601
1602 def create_index_name(*args, **kwargs):
1603 nonlocal name
1604 if name is None:
1605 name = self._create_index_name(*args, **kwargs)
1606 return self.quote_name(name)
1607
1608 return Statement(
1609 sql_create_index,
1610 table=Table(table, self.quote_name),
1611 name=IndexName(table, columns, suffix, create_index_name),
1612 using=using,
1613 columns=(
1614 self._index_columns(table, columns, col_suffixes, opclasses)
1615 if columns
1616 else Expressions(table, expressions, compiler, self.quote_value)
1617 ),
1618 extra=tablespace_sql,
1619 condition=self._index_condition_sql(condition),
1620 include=self._index_include_sql(model, include),
1621 )
1622
1623 def _delete_index_sql(self, model, name, sql=None):
1624 statement = Statement(

Callers 4

alter_index_togetherMethod · 0.95
_alter_fieldMethod · 0.95
_field_indexes_sqlMethod · 0.95
create_sqlMethod · 0.45

Calls 10

_index_columnsMethod · 0.95
_index_condition_sqlMethod · 0.95
_index_include_sqlMethod · 0.95
QueryClass · 0.90
StatementClass · 0.90
TableClass · 0.90
IndexNameClass · 0.90
ExpressionsClass · 0.90
get_compilerMethod · 0.80

Tested by

no test coverage detected