File: //usr/lib/python3/dist-packages/django/db/backends/sqlite3/__pycache__/operations.cpython-310.pyc
o
3�aV: � @ s� d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl m
Z
d dlmZm
Z
mZ d dlmZ d dlmZ d d lmZ d d
lmZmZmZ d dlmZ G dd
� d
e�ZdS )� N)� lru_cache)�chain)�settings)�
FieldError)�
DatabaseError�NotSupportedError�models)�BaseDatabaseOperations)�Col)�timezone)�
parse_date�parse_datetime�
parse_time)�cached_propertyc s` e Zd ZdZddd�ZdZdd� Zdd� Zd d
� Zdd� Z dPdd�Z
dPdd�Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zed*d+� �Zd,d,d-�d.d/�Zd0d1� Zd2d3� Zd4d5� Z� fd6d7�Zd8d9� Zd:d;� Z d<d=� Z!d>d?� Z"d@dA� Z#dBdC� Z$dDdE� Z%� fdFdG�Z&dHdI� Z'dJdK� Z(dLdM� Z)dQ� fdNdO� Z*� Z+S )R�DatabaseOperations�text�TEXT)� DateField�
DateTimeFieldzEXPLAIN QUERY PLANc C s6 t |�dkrdS t |�dkr| jjjt |� S t |�S )z�
SQLite has a compile-time default (SQLITE_LIMIT_VARIABLE_NUMBER) of
999 variables per query.
If there's only a single field to insert, the limit is 500
(SQLITE_MAX_COMPOUND_SELECT).
� i� )�len�
connection�features�max_query_params)�self�fields�objs� r �G/usr/lib/python3/dist-packages/django/db/backends/sqlite3/operations.py�bulk_batch_size s
z"DatabaseOperations.bulk_batch_sizec
C s� t jt jt jf}t jt jt jt jf}t||�r8|� � D ]}z|j
}W n ttfy- Y qw t||�r7t
d��qt|t j�rL|jrNt|j�dkrPt
d��d S d S d S )Nz{You cannot use Sum, Avg, StdDev, and Variance aggregations on date/time fields in sqlite3 since date/time is saved as text.r zTSQLite doesn't support DISTINCT on aggregate functions accepting multiple arguments.)r r r � TimeField�Sum�Avg�Variance�StdDev�
isinstance�get_source_expressions�output_field�AttributeErrorr r � Aggregate�distinctr �source_expressions)r �
expression�
bad_fields�bad_aggregates�exprr'