Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
django
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
django
Commits
2b039d96
Kaydet (Commit)
2b039d96
authored
Ara 30, 2014
tarafından
Tim Graham
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Removed obsolete SQL generation methods.
üst
7e8cf74d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1 addition
and
275 deletions
+1
-275
base.py
django/contrib/gis/db/backends/mysql/base.py
+0
-2
creation.py
django/contrib/gis/db/backends/mysql/creation.py
+0
-18
base.py
django/contrib/gis/db/backends/oracle/base.py
+0
-2
creation.py
django/contrib/gis/db/backends/oracle/creation.py
+0
-43
creation.py
django/contrib/gis/db/backends/postgis/creation.py
+0
-62
base.py
django/contrib/gis/db/backends/spatialite/base.py
+0
-2
creation.py
django/contrib/gis/db/backends/spatialite/creation.py
+0
-32
creation.py
django/db/backends/base/creation.py
+0
-0
creation.py
django/db/backends/mysql/creation.py
+0
-30
creation.py
django/db/backends/postgresql_psycopg2/creation.py
+0
-38
creation.py
django/db/backends/sqlite3/creation.py
+0
-8
tests.py
tests/indexes/tests.py
+1
-38
No files found.
django/contrib/gis/db/backends/mysql/base.py
Dosyayı görüntüle @
2b039d96
from
django.db.backends.mysql.base
import
DatabaseWrapper
as
MySQLDatabaseWrapper
from
.creation
import
MySQLCreation
from
.features
import
DatabaseFeatures
from
.introspection
import
MySQLIntrospection
from
.operations
import
MySQLOperations
...
...
@@ -13,6 +12,5 @@ class DatabaseWrapper(MySQLDatabaseWrapper):
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
DatabaseWrapper
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
self
.
features
=
DatabaseFeatures
(
self
)
self
.
creation
=
MySQLCreation
(
self
)
self
.
ops
=
MySQLOperations
(
self
)
self
.
introspection
=
MySQLIntrospection
(
self
)
django/contrib/gis/db/backends/mysql/creation.py
deleted
100644 → 0
Dosyayı görüntüle @
7e8cf74d
from
django.db.backends.mysql.creation
import
DatabaseCreation
class
MySQLCreation
(
DatabaseCreation
):
def
sql_indexes_for_field
(
self
,
model
,
f
,
style
):
from
django.contrib.gis.db.models.fields
import
GeometryField
output
=
super
(
MySQLCreation
,
self
)
.
sql_indexes_for_field
(
model
,
f
,
style
)
if
isinstance
(
f
,
GeometryField
)
and
f
.
spatial_index
:
qn
=
self
.
connection
.
ops
.
quote_name
db_table
=
model
.
_meta
.
db_table
idx_name
=
'
%
s_
%
s_id'
%
(
db_table
,
f
.
column
)
output
.
append
(
style
.
SQL_KEYWORD
(
'CREATE SPATIAL INDEX '
)
+
style
.
SQL_TABLE
(
qn
(
idx_name
))
+
style
.
SQL_KEYWORD
(
' ON '
)
+
style
.
SQL_TABLE
(
qn
(
db_table
))
+
'('
+
style
.
SQL_FIELD
(
qn
(
f
.
column
))
+
');'
)
return
output
django/contrib/gis/db/backends/oracle/base.py
Dosyayı görüntüle @
2b039d96
from
django.db.backends.oracle.base
import
DatabaseWrapper
as
OracleDatabaseWrapper
from
.creation
import
OracleCreation
from
.features
import
DatabaseFeatures
from
.introspection
import
OracleIntrospection
from
.operations
import
OracleOperations
...
...
@@ -14,5 +13,4 @@ class DatabaseWrapper(OracleDatabaseWrapper):
super
(
DatabaseWrapper
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
self
.
features
=
DatabaseFeatures
(
self
)
self
.
ops
=
OracleOperations
(
self
)
self
.
creation
=
OracleCreation
(
self
)
self
.
introspection
=
OracleIntrospection
(
self
)
django/contrib/gis/db/backends/oracle/creation.py
deleted
100644 → 0
Dosyayı görüntüle @
7e8cf74d
from
django.db.backends.oracle.creation
import
DatabaseCreation
from
django.db.backends.utils
import
truncate_name
class
OracleCreation
(
DatabaseCreation
):
def
sql_indexes_for_field
(
self
,
model
,
f
,
style
):
"Return any spatial index creation SQL for the field."
from
django.contrib.gis.db.models.fields
import
GeometryField
output
=
super
(
OracleCreation
,
self
)
.
sql_indexes_for_field
(
model
,
f
,
style
)
if
isinstance
(
f
,
GeometryField
):
gqn
=
self
.
connection
.
ops
.
geo_quote_name
qn
=
self
.
connection
.
ops
.
quote_name
db_table
=
model
.
_meta
.
db_table
output
.
append
(
style
.
SQL_KEYWORD
(
'INSERT INTO '
)
+
style
.
SQL_TABLE
(
'USER_SDO_GEOM_METADATA'
)
+
' (
%
s,
%
s,
%
s,
%
s)
\n
'
%
tuple
(
map
(
qn
,
[
'TABLE_NAME'
,
'COLUMN_NAME'
,
'DIMINFO'
,
'SRID'
]))
+
style
.
SQL_KEYWORD
(
' VALUES '
)
+
'(
\n
'
+
style
.
SQL_TABLE
(
gqn
(
db_table
))
+
',
\n
'
+
style
.
SQL_FIELD
(
gqn
(
f
.
column
))
+
',
\n
'
+
style
.
SQL_KEYWORD
(
"MDSYS.SDO_DIM_ARRAY"
)
+
'(
\n
'
+
style
.
SQL_KEYWORD
(
"MDSYS.SDO_DIM_ELEMENT"
)
+
(
"('LONG',
%
s,
%
s,
%
s),
\n
"
%
(
f
.
_extent
[
0
],
f
.
_extent
[
2
],
f
.
_tolerance
))
+
style
.
SQL_KEYWORD
(
"MDSYS.SDO_DIM_ELEMENT"
)
+
(
"('LAT',
%
s,
%
s,
%
s)
\n
),
\n
"
%
(
f
.
_extent
[
1
],
f
.
_extent
[
3
],
f
.
_tolerance
))
+
'
%
s
\n
);'
%
f
.
srid
)
if
f
.
spatial_index
:
# Getting the index name, Oracle doesn't allow object
# names > 30 characters.
idx_name
=
truncate_name
(
'
%
s_
%
s_id'
%
(
db_table
,
f
.
column
),
30
)
output
.
append
(
style
.
SQL_KEYWORD
(
'CREATE INDEX '
)
+
style
.
SQL_TABLE
(
qn
(
idx_name
))
+
style
.
SQL_KEYWORD
(
' ON '
)
+
style
.
SQL_TABLE
(
qn
(
db_table
))
+
'('
+
style
.
SQL_FIELD
(
qn
(
f
.
column
))
+
') '
+
style
.
SQL_KEYWORD
(
'INDEXTYPE IS '
)
+
style
.
SQL_TABLE
(
'MDSYS.SPATIAL_INDEX'
)
+
';'
)
return
output
django/contrib/gis/db/backends/postgis/creation.py
Dosyayı görüntüle @
2b039d96
...
...
@@ -2,68 +2,6 @@ from django.db.backends.postgresql_psycopg2.creation import DatabaseCreation
class
PostGISCreation
(
DatabaseCreation
):
geom_index_type
=
'GIST'
geom_index_ops
=
'GIST_GEOMETRY_OPS'
geom_index_ops_nd
=
'GIST_GEOMETRY_OPS_ND'
def
sql_indexes_for_field
(
self
,
model
,
f
,
style
):
"Return any spatial index creation SQL for the field."
from
django.contrib.gis.db.models.fields
import
GeometryField
output
=
super
(
PostGISCreation
,
self
)
.
sql_indexes_for_field
(
model
,
f
,
style
)
if
isinstance
(
f
,
GeometryField
):
gqn
=
self
.
connection
.
ops
.
geo_quote_name
qn
=
self
.
connection
.
ops
.
quote_name
db_table
=
model
.
_meta
.
db_table
if
f
.
geography
or
self
.
connection
.
ops
.
geometry
:
# Geography and Geometry (PostGIS 2.0+) columns are
# created normally.
pass
else
:
# Geometry columns are created by `AddGeometryColumn`
# stored procedure.
output
.
append
(
style
.
SQL_KEYWORD
(
'SELECT '
)
+
style
.
SQL_TABLE
(
'AddGeometryColumn'
)
+
'('
+
style
.
SQL_TABLE
(
gqn
(
db_table
))
+
', '
+
style
.
SQL_FIELD
(
gqn
(
f
.
column
))
+
', '
+
style
.
SQL_FIELD
(
str
(
f
.
srid
))
+
', '
+
style
.
SQL_COLTYPE
(
gqn
(
f
.
geom_type
))
+
', '
+
style
.
SQL_KEYWORD
(
str
(
f
.
dim
))
+
');'
)
if
not
f
.
null
:
# Add a NOT NULL constraint to the field
output
.
append
(
style
.
SQL_KEYWORD
(
'ALTER TABLE '
)
+
style
.
SQL_TABLE
(
qn
(
db_table
))
+
style
.
SQL_KEYWORD
(
' ALTER '
)
+
style
.
SQL_FIELD
(
qn
(
f
.
column
))
+
style
.
SQL_KEYWORD
(
' SET NOT NULL'
)
+
';'
)
if
f
.
spatial_index
:
# Spatial indexes created the same way for both Geometry and
# Geography columns.
# PostGIS 2.0 does not support GIST_GEOMETRY_OPS. So, on 1.5
# we use GIST_GEOMETRY_OPS, on 2.0 we use either "nd" ops
# which are fast on multidimensional cases, or just plain
# gist index for the 2d case.
if
f
.
geography
:
index_ops
=
''
elif
self
.
connection
.
ops
.
geometry
:
if
f
.
dim
>
2
:
index_ops
=
' '
+
style
.
SQL_KEYWORD
(
self
.
geom_index_ops_nd
)
else
:
index_ops
=
''
else
:
index_ops
=
' '
+
style
.
SQL_KEYWORD
(
self
.
geom_index_ops
)
output
.
append
(
style
.
SQL_KEYWORD
(
'CREATE INDEX '
)
+
style
.
SQL_TABLE
(
qn
(
'
%
s_
%
s_id'
%
(
db_table
,
f
.
column
)))
+
style
.
SQL_KEYWORD
(
' ON '
)
+
style
.
SQL_TABLE
(
qn
(
db_table
))
+
style
.
SQL_KEYWORD
(
' USING '
)
+
style
.
SQL_COLTYPE
(
self
.
geom_index_type
)
+
' ( '
+
style
.
SQL_FIELD
(
qn
(
f
.
column
))
+
index_ops
+
' );'
)
return
output
def
sql_table_creation_suffix
(
self
):
if
self
.
connection
.
template_postgis
is
not
None
:
...
...
django/contrib/gis/db/backends/spatialite/base.py
Dosyayı görüntüle @
2b039d96
...
...
@@ -9,7 +9,6 @@ from django.db.backends.sqlite3.base import (
from
django.utils
import
six
from
.client
import
SpatiaLiteClient
from
.creation
import
SpatiaLiteCreation
from
.features
import
DatabaseFeatures
from
.introspection
import
SpatiaLiteIntrospection
from
.operations
import
SpatiaLiteOperations
...
...
@@ -41,7 +40,6 @@ class DatabaseWrapper(SQLiteDatabaseWrapper):
self
.
features
=
DatabaseFeatures
(
self
)
self
.
ops
=
SpatiaLiteOperations
(
self
)
self
.
client
=
SpatiaLiteClient
(
self
)
self
.
creation
=
SpatiaLiteCreation
(
self
)
self
.
introspection
=
SpatiaLiteIntrospection
(
self
)
def
get_new_connection
(
self
,
conn_params
):
...
...
django/contrib/gis/db/backends/spatialite/creation.py
deleted
100644 → 0
Dosyayı görüntüle @
7e8cf74d
from
django.db.backends.sqlite3.creation
import
DatabaseCreation
class
SpatiaLiteCreation
(
DatabaseCreation
):
def
sql_indexes_for_field
(
self
,
model
,
f
,
style
):
"Return any spatial index creation SQL for the field."
from
django.contrib.gis.db.models.fields
import
GeometryField
output
=
super
(
SpatiaLiteCreation
,
self
)
.
sql_indexes_for_field
(
model
,
f
,
style
)
if
isinstance
(
f
,
GeometryField
):
gqn
=
self
.
connection
.
ops
.
geo_quote_name
db_table
=
model
.
_meta
.
db_table
output
.
append
(
style
.
SQL_KEYWORD
(
'SELECT '
)
+
style
.
SQL_TABLE
(
'AddGeometryColumn'
)
+
'('
+
style
.
SQL_TABLE
(
gqn
(
db_table
))
+
', '
+
style
.
SQL_FIELD
(
gqn
(
f
.
column
))
+
', '
+
style
.
SQL_FIELD
(
str
(
f
.
srid
))
+
', '
+
style
.
SQL_COLTYPE
(
gqn
(
f
.
geom_type
))
+
', '
+
style
.
SQL_KEYWORD
(
str
(
f
.
dim
))
+
', '
+
style
.
SQL_KEYWORD
(
str
(
int
(
not
f
.
null
)))
+
');'
)
if
f
.
spatial_index
:
output
.
append
(
style
.
SQL_KEYWORD
(
'SELECT '
)
+
style
.
SQL_TABLE
(
'CreateSpatialIndex'
)
+
'('
+
style
.
SQL_TABLE
(
gqn
(
db_table
))
+
', '
+
style
.
SQL_FIELD
(
gqn
(
f
.
column
))
+
');'
)
return
output
django/db/backends/base/creation.py
Dosyayı görüntüle @
2b039d96
This diff is collapsed.
Click to expand it.
django/db/backends/mysql/creation.py
Dosyayı görüntüle @
2b039d96
...
...
@@ -11,33 +11,3 @@ class DatabaseCreation(BaseDatabaseCreation):
if
test_settings
[
'COLLATION'
]:
suffix
.
append
(
'COLLATE
%
s'
%
test_settings
[
'COLLATION'
])
return
' '
.
join
(
suffix
)
def
sql_for_inline_foreign_key_references
(
self
,
model
,
field
,
known_models
,
style
):
"All inline references are pending under MySQL"
return
[],
True
def
sql_destroy_indexes_for_fields
(
self
,
model
,
fields
,
style
):
if
len
(
fields
)
==
1
and
fields
[
0
]
.
db_tablespace
:
tablespace_sql
=
self
.
connection
.
ops
.
tablespace_sql
(
fields
[
0
]
.
db_tablespace
)
elif
model
.
_meta
.
db_tablespace
:
tablespace_sql
=
self
.
connection
.
ops
.
tablespace_sql
(
model
.
_meta
.
db_tablespace
)
else
:
tablespace_sql
=
""
if
tablespace_sql
:
tablespace_sql
=
" "
+
tablespace_sql
field_names
=
[]
qn
=
self
.
connection
.
ops
.
quote_name
for
f
in
fields
:
field_names
.
append
(
style
.
SQL_FIELD
(
qn
(
f
.
column
)))
index_name
=
"
%
s_
%
s"
%
(
model
.
_meta
.
db_table
,
self
.
_digest
([
f
.
name
for
f
in
fields
]))
from
..utils
import
truncate_name
return
[
style
.
SQL_KEYWORD
(
"DROP INDEX"
)
+
" "
+
style
.
SQL_TABLE
(
qn
(
truncate_name
(
index_name
,
self
.
connection
.
ops
.
max_name_length
())))
+
" "
+
style
.
SQL_KEYWORD
(
"ON"
)
+
" "
+
style
.
SQL_TABLE
(
qn
(
model
.
_meta
.
db_table
))
+
";"
,
]
django/db/backends/postgresql_psycopg2/creation.py
Dosyayı görüntüle @
2b039d96
from
django.db.backends.base.creation
import
BaseDatabaseCreation
from
django.db.backends.utils
import
truncate_name
class
DatabaseCreation
(
BaseDatabaseCreation
):
...
...
@@ -12,40 +11,3 @@ class DatabaseCreation(BaseDatabaseCreation):
if
test_settings
[
'CHARSET'
]:
return
"WITH ENCODING '
%
s'"
%
test_settings
[
'CHARSET'
]
return
''
def
sql_indexes_for_field
(
self
,
model
,
f
,
style
):
output
=
[]
db_type
=
f
.
db_type
(
connection
=
self
.
connection
)
if
db_type
is
not
None
and
(
f
.
db_index
or
f
.
unique
):
qn
=
self
.
connection
.
ops
.
quote_name
db_table
=
model
.
_meta
.
db_table
tablespace
=
f
.
db_tablespace
or
model
.
_meta
.
db_tablespace
if
tablespace
:
tablespace_sql
=
self
.
connection
.
ops
.
tablespace_sql
(
tablespace
)
if
tablespace_sql
:
tablespace_sql
=
' '
+
tablespace_sql
else
:
tablespace_sql
=
''
def
get_index_sql
(
index_name
,
opclass
=
''
):
return
(
style
.
SQL_KEYWORD
(
'CREATE INDEX'
)
+
' '
+
style
.
SQL_TABLE
(
qn
(
truncate_name
(
index_name
,
self
.
connection
.
ops
.
max_name_length
())))
+
' '
+
style
.
SQL_KEYWORD
(
'ON'
)
+
' '
+
style
.
SQL_TABLE
(
qn
(
db_table
))
+
' '
+
"(
%
s
%
s)"
%
(
style
.
SQL_FIELD
(
qn
(
f
.
column
)),
opclass
)
+
"
%
s;"
%
tablespace_sql
)
if
not
f
.
unique
:
output
=
[
get_index_sql
(
'
%
s_
%
s'
%
(
db_table
,
f
.
column
))]
# Fields with database column types of `varchar` and `text` need
# a second index that specifies their operator class, which is
# needed when performing correct LIKE queries outside the
# C locale. See #12234.
if
db_type
.
startswith
(
'varchar'
):
output
.
append
(
get_index_sql
(
'
%
s_
%
s_like'
%
(
db_table
,
f
.
column
),
' varchar_pattern_ops'
))
elif
db_type
.
startswith
(
'text'
):
output
.
append
(
get_index_sql
(
'
%
s_
%
s_like'
%
(
db_table
,
f
.
column
),
' text_pattern_ops'
))
return
output
django/db/backends/sqlite3/creation.py
Dosyayı görüntüle @
2b039d96
...
...
@@ -8,14 +8,6 @@ from django.utils.six.moves import input
class
DatabaseCreation
(
BaseDatabaseCreation
):
def
sql_for_pending_references
(
self
,
model
,
style
,
pending_references
):
"SQLite3 doesn't support constraints"
return
[]
def
sql_remove_table_constraints
(
self
,
model
,
references_to_delete
,
style
):
"SQLite3 doesn't support constraints"
return
[]
def
_get_test_db_name
(
self
):
test_database_name
=
self
.
connection
.
settings_dict
[
'TEST'
][
'NAME'
]
if
test_database_name
and
test_database_name
!=
':memory:'
:
...
...
tests/indexes/tests.py
Dosyayı görüntüle @
2b039d96
from
unittest
import
skipUnless
from
django.core.management.color
import
no_style
from
django.db
import
connection
from
django.test
import
TestCase
,
ignore_warnings
from
django.utils.deprecation
import
RemovedInDjango20Warning
from
django.test
import
TestCase
from
.models
import
Article
,
ArticleTranslation
,
IndexTogetherSingleList
@ignore_warnings
(
category
=
RemovedInDjango20Warning
)
class
CreationIndexesTests
(
TestCase
):
"""
Test index handling by the to-be-deprecated connection.creation interface.
"""
def
test_index_together
(
self
):
index_sql
=
connection
.
creation
.
sql_indexes_for_model
(
Article
,
no_style
())
self
.
assertEqual
(
len
(
index_sql
),
1
)
def
test_index_together_single_list
(
self
):
# Test for using index_together with a single list (#22172)
index_sql
=
connection
.
creation
.
sql_indexes_for_model
(
IndexTogetherSingleList
,
no_style
())
self
.
assertEqual
(
len
(
index_sql
),
1
)
@skipUnless
(
connection
.
vendor
==
'postgresql'
,
"This is a postgresql-specific issue"
)
def
test_postgresql_text_indexes
(
self
):
"""Test creation of PostgreSQL-specific text indexes (#12234)"""
from
.models
import
IndexedArticle
index_sql
=
connection
.
creation
.
sql_indexes_for_model
(
IndexedArticle
,
no_style
())
self
.
assertEqual
(
len
(
index_sql
),
5
)
self
.
assertIn
(
'("headline" varchar_pattern_ops)'
,
index_sql
[
1
])
self
.
assertIn
(
'("body" text_pattern_ops)'
,
index_sql
[
3
])
# unique=True and db_index=True should only create the varchar-specific
# index (#19441).
self
.
assertIn
(
'("slug" varchar_pattern_ops)'
,
index_sql
[
4
])
@skipUnless
(
connection
.
vendor
==
'postgresql'
,
"This is a postgresql-specific issue"
)
def
test_postgresql_virtual_relation_indexes
(
self
):
"""Test indexes are not created for related objects"""
index_sql
=
connection
.
creation
.
sql_indexes_for_model
(
Article
,
no_style
())
self
.
assertEqual
(
len
(
index_sql
),
1
)
class
SchemaIndexesTests
(
TestCase
):
"""
Test index handling by the db.backends.schema infrastructure.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment