﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
29304	"QuerySet.bulk_create() fails with ""ORA-01790: expression must have same datatype as corresponding expression"""	isergey	nobody	"I have two models:
{{{
class Record(models.Model):
    hash = models.CharField(max_length=32)
    source = models.ForeignKey(Source, on_delete=models.CASCADE)
    create_date = models.DateTimeField(db_index=True)
    update_date = models.DateTimeField(db_index=True)
    deleted = models.BooleanField(default=False, db_index=True)


class RecordContent(models.Model):
    record = models.OneToOneField(Record, primary_key=True, on_delete=models.CASCADE)
    content = models.TextField(max_length=100 * 1024)
}}}
In MySQL this function works fine:
{{{
def _create_records(record_containers):
    records = []
    record_contents = []
    for record_container in record_containers:
        records.append(record_container['record'])
        record_contents.append(record_container['content'])

    models.Record.objects.bulk_create(records)
    models.RecordContent.objects.bulk_create(record_contents) # in Oracle ORA-01790: expression must have same datatype as corresponding expression
}}}
But in Oracle this code thows exception: ORA-01790: expression must have same datatype as corresponding expression

If refactor the function _create_records:
{{{
def _create_records(record_containers):
    for record_container in record_containers:
        models.Record.objects.bulk_create([record_container['record']])
        models.RecordContent.objects.bulk_create([record_container['content']])
}}}
there is no exception is thrown.

What happens?

"	Bug	closed	Database layer (models, ORM)	2.0	Normal	duplicate		Mariusz Felisiak	Unreviewed	0	0	0	0	0	0
