Skip to content

Commit

Permalink
fix #41 #43
Browse files Browse the repository at this point in the history
error when trying to apply migrations to another database
  • Loading branch information
jayvynl committed Sep 12, 2023
1 parent ab2d68d commit 4e16435
Show file tree
Hide file tree
Showing 17 changed files with 91 additions and 94 deletions.
5 changes: 0 additions & 5 deletions .github/workflows/base-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ jobs:
python -m pip install tox
- name: Lint code
run: tox -e lint
- name: Cache docker image
uses: actions/cache@v3
with:
path: /var/lib/docker/image/overlay2
key: docker-image-${{ hashFiles('compose.yaml') }}
- name: Start clickhouse cluster
run: docker compose up -d --wait
- name: Run test
Expand Down
5 changes: 2 additions & 3 deletions clickhouse-config/node1/network-and-logging.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
<listen_host>0.0.0.0</listen_host>
<listen_try>1</listen_try>

<!--
<logger>
<console>1</console>
<level>warning</level>
<console>1</console>
</logger>
-->
</clickhouse>
5 changes: 2 additions & 3 deletions clickhouse-config/node2/network-and-logging.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
<listen_host>0.0.0.0</listen_host>
<listen_try>1</listen_try>

<!--
<logger>
<console>1</console>
<level>warning</level>
<console>1</console>
</logger>
-->
</clickhouse>
5 changes: 2 additions & 3 deletions clickhouse-config/node3/network-and-logging.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
<listen_host>0.0.0.0</listen_host>
<listen_try>1</listen_try>

<!--
<logger>
<console>1</console>
<level>warning</level>
<console>1</console>
</logger>
-->
</clickhouse>
5 changes: 2 additions & 3 deletions clickhouse-config/node4/network-and-logging.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
<listen_host>0.0.0.0</listen_host>
<listen_try>1</listen_try>

<!--
<logger>
<console>1</console>
<level>warning</level>
<console>1</console>
</logger>
-->
</clickhouse>
2 changes: 1 addition & 1 deletion clickhouse_backend/patch/migrations.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def __str__(self):
class Migration(django_models.Model):
app = django_models.CharField(max_length=255)
name = django_models.CharField(max_length=255)
applied = models.DateTimeField(default=now)
applied = django_models.DateTimeField(default=now)

class Meta:
apps = Apps()
Expand Down
2 changes: 0 additions & 2 deletions compose.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
x-base-service: &base-service
image: clickhouse/clickhouse-server:23.6.2.18
restart: always
environment:
- "CLICKHOUSE_DB=other"
ulimits:
nofile:
soft: 262144
Expand Down
10 changes: 4 additions & 6 deletions tests/aggregation/models.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from django.db import models

from clickhouse_backend.models import ClickhouseModel


class Author(ClickhouseModel):
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
friends = models.ManyToManyField("self", blank=True)
Expand All @@ -13,15 +11,15 @@ def __str__(self):
return self.name


class Publisher(ClickhouseModel):
class Publisher(models.Model):
name = models.CharField(max_length=255)
num_awards = models.IntegerField()

def __str__(self):
return self.name


class Book(ClickhouseModel):
class Book(models.Model):
isbn = models.CharField(max_length=9)
name = models.CharField(max_length=255)
pages = models.IntegerField()
Expand All @@ -36,7 +34,7 @@ def __str__(self):
return self.name


class Store(ClickhouseModel):
class Store(models.Model):
name = models.CharField(max_length=255)
books = models.ManyToManyField(Book)
original_opening = models.DateTimeField()
Expand Down
18 changes: 8 additions & 10 deletions tests/aggregation_regress/models.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
from django.db import models

from clickhouse_backend.models import ClickhouseModel


class Author(ClickhouseModel):
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
friends = models.ManyToManyField("self", blank=True)


class Publisher(ClickhouseModel):
class Publisher(models.Model):
name = models.CharField(max_length=255)
num_awards = models.IntegerField()


class Book(ClickhouseModel):
class Book(models.Model):
isbn = models.CharField(max_length=9)
name = models.CharField(max_length=255)
pages = models.IntegerField()
Expand All @@ -29,7 +27,7 @@ class Meta:
ordering = ("name",)


class Store(ClickhouseModel):
class Store(models.Model):
name = models.CharField(max_length=255)
books = models.ManyToManyField(Book)
original_opening = models.DateTimeField()
Expand All @@ -40,20 +38,20 @@ class HardbackBook(Book):


# Models for ticket #21150
class Alfa(ClickhouseModel):
class Alfa(models.Model):
name = models.CharField(max_length=10, null=True)


class Bravo(ClickhouseModel):
class Bravo(models.Model):
pass


class Charlie(ClickhouseModel):
class Charlie(models.Model):
alfa = models.ForeignKey(Alfa, models.SET_NULL, null=True)
bravo = models.ForeignKey(Bravo, models.SET_NULL, null=True)


class SelfRefFK(ClickhouseModel):
class SelfRefFK(models.Model):
name = models.CharField(max_length=50)
parent = models.ForeignKey(
"self", models.SET_NULL, null=True, blank=True, related_name="children"
Expand Down
16 changes: 7 additions & 9 deletions tests/annotations/models.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
from django.db import models

from clickhouse_backend.models import ClickhouseModel


class Author(ClickhouseModel):
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
friends = models.ManyToManyField("self", blank=True)


class Publisher(ClickhouseModel):
class Publisher(models.Model):
name = models.CharField(max_length=255)
num_awards = models.IntegerField()


class Book(ClickhouseModel):
class Book(models.Model):
isbn = models.CharField(max_length=9)
name = models.CharField(max_length=255)
pages = models.IntegerField()
Expand All @@ -26,7 +24,7 @@ class Book(ClickhouseModel):
pubdate = models.DateField()


class Store(ClickhouseModel):
class Store(models.Model):
name = models.CharField(max_length=255)
books = models.ManyToManyField(Book)
original_opening = models.DateTimeField()
Expand All @@ -37,7 +35,7 @@ class DepartmentStore(Store):
chain = models.CharField(max_length=255)


class Employee(ClickhouseModel):
class Employee(models.Model):
# The order of these fields matter, do not change. Certain backends
# rely on field ordering to perform database conversions, and this
# model helps to test that.
Expand All @@ -49,12 +47,12 @@ class Employee(ClickhouseModel):
salary = models.DecimalField(max_digits=8, decimal_places=2)


class Company(ClickhouseModel):
class Company(models.Model):
name = models.CharField(max_length=200)
motto = models.CharField(max_length=200, null=True, blank=True)
ticker_name = models.CharField(max_length=10, null=True, blank=True)
description = models.CharField(max_length=200, null=True, blank=True)


class Ticket(ClickhouseModel):
class Ticket(models.Model):
active_at = models.DateTimeField()
36 changes: 17 additions & 19 deletions tests/backends/models.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
from django.db import models

from clickhouse_backend.models import ClickhouseModel


class Square(ClickhouseModel):
class Square(models.Model):
root = models.IntegerField()
square = models.PositiveIntegerField()

def __str__(self):
return "%s ** 2 == %s" % (self.root, self.square)


class Person(ClickhouseModel):
class Person(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)

Expand All @@ -24,15 +22,15 @@ def get_queryset(self):
return super().get_queryset().exclude(year=1000)


class SchoolClass(ClickhouseModel):
class SchoolClass(models.Model):
year = models.PositiveIntegerField()
day = models.CharField(max_length=9, blank=True)
last_updated = models.DateTimeField()

objects = SchoolClassManager()


class VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(ClickhouseModel):
class VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(models.Model):
primary_key_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = (
models.BigAutoField(primary_key=True)
)
Expand All @@ -44,11 +42,11 @@ class VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(ClickhouseMode
)


class Tag(ClickhouseModel):
class Tag(models.Model):
name = models.CharField(max_length=30)


class Reporter(ClickhouseModel):
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)

Expand All @@ -61,7 +59,7 @@ class Meta:
proxy = True


class Article(ClickhouseModel):
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, models.CASCADE)
Expand All @@ -76,7 +74,7 @@ def __str__(self):
return self.headline


class Item(ClickhouseModel):
class Item(models.Model):
name = models.CharField(max_length=30)
date = models.DateField()
time = models.TimeField()
Expand All @@ -86,7 +84,7 @@ def __str__(self):
return self.name


class Object(ClickhouseModel):
class Object(models.Model):
related_objects = models.ManyToManyField(
"self", db_constraint=False, symmetrical=False
)
Expand All @@ -96,47 +94,47 @@ def __str__(self):
return str(self.id)


class ObjectReference(ClickhouseModel):
class ObjectReference(models.Model):
obj = models.ForeignKey(Object, models.CASCADE, db_constraint=False)

def __str__(self):
return str(self.obj_id)


class ObjectSelfReference(ClickhouseModel):
class ObjectSelfReference(models.Model):
key = models.CharField(max_length=3, unique=True)
obj = models.ForeignKey("ObjectSelfReference", models.SET_NULL, null=True)


class CircularA(ClickhouseModel):
class CircularA(models.Model):
key = models.CharField(max_length=3, unique=True)
obj = models.ForeignKey("CircularB", models.SET_NULL, null=True)

def natural_key(self):
return (self.key,)


class CircularB(ClickhouseModel):
class CircularB(models.Model):
key = models.CharField(max_length=3, unique=True)
obj = models.ForeignKey("CircularA", models.SET_NULL, null=True)

def natural_key(self):
return (self.key,)


class RawData(ClickhouseModel):
class RawData(models.Model):
raw_data = models.BinaryField()


class Author(ClickhouseModel):
class Author(models.Model):
name = models.CharField(max_length=255, unique=True)


class Book(ClickhouseModel):
class Book(models.Model):
author = models.ForeignKey(Author, models.CASCADE, to_field="name")


class SQLKeywordsModel(ClickhouseModel):
class SQLKeywordsModel(models.Model):
id = models.BigAutoField(primary_key=True, db_column="select")
reporter = models.ForeignKey(Reporter, models.CASCADE, db_column="where")

Expand Down

0 comments on commit 4e16435

Please sign in to comment.