/usr/local/lib/python3.9/site-packages/django/db/backends/sqlite3/__pycache__
a Ӱ�hAB � @ 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 lmZ d dlmZmZmZ d dlmZ G d d� de�ZdS )� N)� lru_cache)�chain)�settings)� FieldError)� DatabaseError�NotSupportedError�models)�BaseDatabaseOperations)� OnConflict)�Col)�timezone)� parse_date�parse_datetime� parse_time)�cached_propertyc s� e Zd ZdZddd�ZdZeg d��Zdd� Zdd � Z d d� Z dd � Zdd� ZdWdd�Z dXdd�Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� Zed-d.� �Zd/d/d0�d1d2�Zd3d4� Zd5d6� Zd7d8� Z � fd9d:�Z!d;d<� Z"d=d>� Z#d?d@� Z$dAdB� Z%dCdD� Z&dEdF� Z'dGdH� Z(� fdIdJ�Z)dKdL� Z*dMdN� Z+dOdP� Z,dY� fdQdR� Z-dSdT� Z.� fdUdV�Z/� Z0S )Z�DatabaseOperations�textZTEXT)� DateField� DateTimeFieldzEXPLAIN QUERY PLAN)�null�false�truec C s: t |�dkrdS t |�dkr.| jjjt |� S t |�S dS )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� N)�len� connection�featuresZmax_query_params)�self�fieldsZobjs� r �O/usr/local/lib/python3.9/site-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||�rp|� � D ]8}z |j }W n ttfyZ Y q60 t||�r6t d��q6t|t j�r�|jr�t|j�dkr�t d��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 � TimeFieldZSumZAvgZVarianceZStdDev� isinstanceZget_source_expressions�output_field�AttributeErrorr r Z AggregateZdistinctr Zsource_expressions)r � expressionZ bad_fieldsZbad_aggregates�exprr# r r r �check_expression_support, s* � ����z+DatabaseOperations.check_expression_supportc C s d|� d�|� � g|�R fS )z� Support EXTRACT with a user-defined function django_date_extract() that's registered in connect(). Use single quotes because this is a string and could otherwise cause a collision with a field name. zdjango_date_extract(%s, �)��lower�r �lookup_type�sql�paramsr r r �date_extract_sqlH s z#DatabaseOperations.date_extract_sqlc C s |� � S )z� Given a cursor object that has just performed an INSERT...RETURNING statement into a table, return the list of returned data. )�fetchall)r �cursorr r r �fetch_returned_insert_rowsP s z-DatabaseOperations.fetch_returned_insert_rowsc C s |S )z>Do nothing since formatting is handled in the custom function.r )r r- r r r �format_for_duration_arithmeticW s z1DatabaseOperations.format_for_duration_arithmeticNc C s&