Fix #894 - index User.username field
This commit sponsored by Emily O'Leary. Thank you!
This commit is contained in:
parent
ffbf9c8b43
commit
892eed590f
@ -19,7 +19,7 @@ import uuid
|
||||
|
||||
from sqlalchemy import (MetaData, Table, Column, Boolean, SmallInteger,
|
||||
Integer, Unicode, UnicodeText, DateTime,
|
||||
ForeignKey, Date)
|
||||
ForeignKey, Date, Index)
|
||||
from sqlalchemy.exc import ProgrammingError
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.sql import and_
|
||||
@ -789,3 +789,17 @@ def fix_privilege_user_association_table(db):
|
||||
privilege_user_assoc.c.core__privilege_id.alter(name="user")
|
||||
|
||||
db.commit()
|
||||
|
||||
@RegisterMigration(22, MIGRATIONS)
|
||||
def add_index_username_field(db):
|
||||
"""
|
||||
This indexes the User.username field which is frequently queried
|
||||
for example a user logging in. This solves the issue #894
|
||||
"""
|
||||
metadata = MetaData(bind=db.bind)
|
||||
user_table = inspect_table(metadata, "core__users")
|
||||
|
||||
new_index = Index("ix_core__users_uploader", user_table.c.username)
|
||||
new_index.create()
|
||||
|
||||
db.commit()
|
||||
|
@ -57,7 +57,7 @@ class User(Base, UserMixin):
|
||||
__tablename__ = "core__users"
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
username = Column(Unicode, nullable=False, unique=True)
|
||||
username = Column(Unicode, nullable=False, unique=True, index=True)
|
||||
# Note: no db uniqueness constraint on email because it's not
|
||||
# reliable (many email systems case insensitive despite against
|
||||
# the RFC) and because it would be a mess to implement at this
|
||||
|
Loading…
x
Reference in New Issue
Block a user