def check_expression_support(self, expression): bad_fields = (fields.DateField, fields.DateTimeField, fields.TimeField) bad_aggregates = ( aggregates.Sum, aggregates.Avg, aggregates.Variance, aggregates.StdDev, ) if isinstance(expression, bad_aggregates): for expr in expression.get_source_expressions(): try: output_field = expr.output_field except FieldError: # Not every subexpression has an output_field which is fine # to ignore. pass else: if isinstance(output_field, bad_fields): raise utils.NotSupportedError( "You cannot use Sum, Avg, StdDev, and Variance " "aggregations on date/time fields in sqlite3 " "since date/time is saved as text.") if (isinstance(expression, aggregates.Aggregate) and len(expression.source_expressions) > 1): raise utils.NotSupportedError( "SQLite doesn't support DISTINCT on aggregate functions " "accepting multiple arguments.")
def for_update_sql(self, nowait=False, skip_locked=False, of=()): """ Return the FOR UPDATE SQL clause to lock rows for an update operation. """ # DB2 doesn't support nowait select for update if nowait: raise utils.NotSupportedError( "NOWAIT clause not supported by Db2 for iSeries") return 'FOR UPDATE%s%s' % ( ' OF %s' % ', '.join(of) if of else '', ' SKIP LOCKED DATA' if skip_locked else '', )
def check_expression_support(self, expression): bad_fields = (fields.DateField, fields.DateTimeField, fields.TimeField) bad_aggregates = (aggregates.Sum, aggregates.Avg, aggregates.Variance, aggregates.StdDev) if isinstance(expression, bad_aggregates): for expr in expression.get_source_expressions(): try: output_field = expr.output_field except FieldError: # Not every subexpression has an output_field which is fine # to ignore. pass else: if isinstance(output_field, bad_fields): raise utils.NotSupportedError( 'You cannot use Sum, Avg, StdDev, and Variance ' 'aggregations on date/time fields in sqlite3 ' 'since date/time is saved as text.')
def disable_constraint_checking(self): raise utils.NotSupportedError( "Db2 for iSeries currently supports no method of disabling constraints on a per-session basis." )