Commit Graph

344 Commits

Author SHA1 Message Date
Sam Minnee
79c2b5ad42 FIX: Use DELETE FROM instead of TRUNCATE for clearTable
clearTable is mainly used for clearing data between tests. In this case,
there are very few or zero records, and DELETE FROM is quicker than
TRUNCATE, which works by deleting and recreating the table.

This materially speeds up test execution, at least on MySQL.

Implemented in SS3 at 815da76b056a716c8831d22bbf93528912cbcb28
2018-10-02 18:00:38 +13:00
Sam Minnee
f2cbc1dfbb FIX: Don’t use USE_FRM in MySQL repair. Fixes #6300.
USE_FRM is a sufficiently dangerous option that it should require
manual DBA activity to carry out.

See http://dev.mysql.com/doc/refman/5.7/en/repair-table.html for more
info.
2018-10-02 10:48:47 +13:00
Sam Minnee
ad87890b2e FIX: Don’t change state in ArrayList::getIterator()
This prevents the map-to-ArrayData conversion from changing object
state and making the result of toArray() non-deterministic.

Fixes #2636. Other solutions were suggested on that ticket, but there is
no way of putting special code in for a SSViewer-specific iterator, and
having object state pre-emptively converted to ArrayData would
be an SS5-level change.
2018-10-02 09:56:09 +13:00
Robbie Averill
ac1fe5e9d5 FIX joinClass's default_sort is used when nothing else has been set already 2018-09-28 15:39:24 +02:00
Robbie Averill
4d14e9b6b1
Merge pull request #8421 from creative-commoners/pulls/4.3/psr-5-deprecations
Update deprecation PHPDocs to be PSR-5 compliant
2018-09-28 14:18:54 +02:00
Robbie Averill
e4768e44b0 Use splat over call_user_func_array and reduce calls to func_get_args() 2018-09-28 12:32:20 +02:00
Robbie Averill
f842ee2eec Update deprecation PHPDocs to be PSR-5 compliant
See: https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md#55-deprecated
2018-09-28 10:49:14 +02:00
Robbie Averill
1b0293d8c5 Replace array syntax, use some strict comparison and remove unnecessary elseif 2018-09-27 17:37:37 +02:00
Robbie Averill
adb4d1f92d MINOR Reduce some code complexity, update array syntax and injected SQLSelect etc 2018-09-27 16:40:23 +02:00
Robbie Averill
f5929d87e0 DOCS Update do blocks for DataQuery::having() to reflect correct input types 2018-09-25 17:46:42 +02:00
Sam Minnée
5b7a84141b NEW: Add Hierarchy::prepopulate_numchildren_cache() (#8380)
* NEW: Add Hierarchy::prepopulate_numchildren_cache()
API: Hierarchy::stageChildren() customisations must be applied to the base class and not include record-specific behaviour.

Adds the ability to prepopulate the cache for Hierarchy::numChildren()
in a batch.

Note that this optimisation means that stageChildren() is not called on
each record in order to calculate numChildren(). This means that the
structure of the stageChildren() query must be the same for all records
and the behaviour cannot be customised only for a subclass of the base
data class. For example, apply your customisations to SiteTree and not
a subclass.

This is an useful part of optimising the query count on tree generation.
See https://github.com/silverstripe/silverstripe-framework/issues/8379

* NEW: Add Hierarchy::prepopulateTreeDataCache()

This provides a more extensible way of preopulating caches for optimised
tree generation.

Fixes https://github.com/silverstripe/silverstripe-framework/issues/8391
2018-09-25 12:25:23 +12:00
Sam Minnee
40dde226fd NEW: Add ?showqueries=backtrace
This variant of showqueries will include a backtrace after each query.
This is extremely verbose but can be helpful when diagnosing where
queries have come from.

This is something that I have frequently added as a local hack on my
environment, I figured that exposing it as a formal feature would be
useful.
2018-09-19 14:28:40 +12:00
Robbie Averill
373a8afeb5 Merge branch '4.2' into 4 2018-09-06 13:26:46 +02:00
Robbie Averill
270aba4007 Merge branch '4.1' into 4.2 2018-09-06 13:26:31 +02:00
Robbie Averill
b6ff21f72a Merge branch '4.0' into 4.1 2018-09-06 13:26:13 +02:00
Guy Marriott
610f17282f
DOCS Updating DataObject config documentation 2018-08-29 14:53:05 +12:00
Maxime Rainville
dd3379e68f
Merge pull request #8075 from creative-commoners/pulls/4.0/remap-polymorphics
FIX Polymorphic relationship class columns have obsolete class names remapped
2018-08-28 17:03:39 +12:00
Robbie Averill
d651d0fbfc FIX Use base class (not remapping target class) when looking up whether object is versioned 2018-08-28 14:15:02 +12:00
Robbie Averill
953153500d FIX Polymorphic relationship class columns have obsolete class names remapped 2018-08-15 10:40:51 +12:00
Daniel Hensby
d0598c02c5
Merge branch '4.2' into 4 2018-07-30 11:07:15 +01:00
Daniel Hensby
ec5640cbd9
Merge tag '4.2.0' into 4.2
Release 4.2.0
2018-07-30 11:04:57 +01:00
Will Rossiter
9ec77ab9d3 Check database has table before altering.
Work around to prevent several issues with silverstripe-framework#4451 and cwp#0031726.

Throws a LogicException if the table does not exist.
2018-07-30 13:14:03 +12:00
Mark Muller
e154aa170c
Make removeDuplicates() chainable
Added the return to allow removeDuplicates to be chained.
2018-07-24 13:50:37 +01:00
Ingo Schommer
0f5420b6a5
Removed unused classes 2018-07-23 19:09:11 +01:00
Daniel Hensby
cc0320b2a7
Merge branch '4.2' into 4 2018-07-23 17:42:43 +01:00
Daniel Hensby
793aafae91
FIX Transaction depth should error if not implemented by child classes 2018-07-23 14:03:20 +01:00
Robbie Averill
1048520fbe
Restore check for zero or negative transaction nesting 2018-07-23 14:01:22 +01:00
Daniel Hensby
cbdf547c1b
Address feedback 2018-07-23 14:01:22 +01:00
Damian Mooyman
8ea3bb36a0
Maybe fix it? 2018-07-23 14:01:21 +01:00
Damian Mooyman
225e61dc67
BUG FIx manual resetDBSchema() calls breaking the database 2018-07-23 14:01:21 +01:00
Damian Mooyman
95bcac796a
ENHANCEMENT Ensure test DB is flushed on either DDL or transaction-disabled tests
Fixes #8182
2018-07-23 14:01:20 +01:00
Daniel Hensby
b984959170
Merge branch '4.1' into 4.2 2018-07-23 13:30:49 +01:00
Daniel Hensby
1a634f5ba6
Merge pull request #8244 from altwohill/column-not-distinct
Make column query not distinct
2018-07-16 13:01:32 +01:00
Al Twohill
3292a8b773
NEW Add columnUnique API SS_List classes. 2018-07-16 12:16:17 +01:00
Al Twohill
91068c23b5
FIX Make column query not distinct
When selecting a column, it doesn't  make sense to have it distinct.

As an alternative, the API could be changed to give the end user the option
(eg `->column($field, $distinct = false)`)
However if we did that, we would need to make sure we do something
similar with `SilverStripe\ORM\UnsavedRelationList` to ensure consistency.
2018-07-16 11:38:41 +01:00
Robbie Averill
d122995652 FIX Duplicate config values for cascade_duplicates no longer duplicate their duplicates
Previously you could define identical values for this config prop via a DataExtension and on the base
class, resulting in double duplication
2018-07-16 12:04:56 +12:00
Harsh Chokshi
6af736a9e1 Change DBCurrency scaffolded form field to CurrencyField (fixes #8246)
Add test ensuring DBCurrency scaffolds CurrencyField
2018-07-09 10:57:01 +12:00
Luke Edwards
fbf30ee747 Message reflect previous return type change 2018-07-04 10:55:20 +12:00
Luke Edwards
9ee84fd515 MINOR: DataObject->fieldLabels() will only return an array 2018-07-02 13:53:59 +12:00
Robbie Averill
a39a221c4c Merge branch '4.2' into 4 2018-06-25 13:45:03 +12:00
Daniel Hensby
27b60ae989
FIX Transaction depth should error if not implemented by child classes 2018-06-21 14:26:21 +01:00
Robbie Averill
df257686c1 Restore check for zero or negative transaction nesting 2018-06-20 14:46:50 +12:00
Daniel Hensby
d8430f549d Address feedback 2018-06-20 14:46:50 +12:00
Damian Mooyman
6da72d686f Maybe fix it? 2018-06-20 14:46:50 +12:00
Damian Mooyman
a116b5dad8 BUG FIx manual resetDBSchema() calls breaking the database 2018-06-20 14:46:50 +12:00
Damian Mooyman
fbfd454d65 ENHANCEMENT Ensure test DB is flushed on either DDL or transaction-disabled tests
Fixes #8182
2018-06-20 14:46:50 +12:00
Daniel Hensby
a7a45559f0
Merge pull request #8188 from gelysis/array-lib
Tweaks on the ArrayLib class
2018-06-19 15:06:39 +01:00
Aaron Carlino
05edb372f1 Revise per tractorcow review 2018-06-18 16:00:17 +12:00
jovenden
b0863fee91 Ensure tables are properly named on dontRequireTable() 2018-06-18 16:00:17 +12:00
Andreas Gerhards
59fe36ba04 Tweaked the other flattening method as well, allowing keys to be preserved 2018-06-18 11:16:20 +12:00
Andreas Gerhards
1753bb2d07 Improved speed on the recursive array flattening 2018-06-18 10:37:20 +12:00
Andreas Gerhards
f45cf75407 Implemented improved associative array check 2018-06-18 08:45:22 +12:00
Damian Mooyman
53dded8cff
API Remove @internal from new 4.2 methods 2018-06-15 13:14:42 +12:00
Robbie Averill
5fa5abf295 Merge branch '4.1' into 4
# Conflicts:
  #	src/Forms/DateField.php
2018-06-15 11:52:07 +12:00
Damian Mooyman
b636587945
Respect semver and add tests 2018-06-15 11:04:12 +12:00
Damian Mooyman
310a259c5f
Add locale to Format
Fix up some regressions
2018-06-14 17:28:16 +12:00
Damian Mooyman
3ce8ab3adc
Improve handling of deprecated apis 2018-06-14 13:01:27 +12:00
Damian Mooyman
687d0a6af1
Refactor everything out of HTTP and into separate middlewares 2018-06-13 17:56:47 +12:00
Damian Mooyman
02ae2e7ed0
BUG Fix internal date formatting inheriting default locale
Fixes #8097
2018-06-13 13:32:11 +12:00
Daniel Hensby
ec956a682d API Moving tests to use transactions 2018-06-13 09:35:45 +12:00
Damian Mooyman
77a45c0dbc
Merge remote-tracking branch 'origin/4.1' into 4
# Conflicts:
#	src/Forms/HTMLEditor/HTMLEditorSanitiser.php
#	src/ORM/DataObjectSchema.php
#	src/ORM/Queries/SQLSelect.php
#	src/View/Parsers/ShortcodeParser.php
2018-06-11 10:19:04 +12:00
Robbie Averill
d842225df6 FIX Codesniffer style violations with comments 2018-06-11 09:55:18 +12:00
Daniel Hensby
e260319823
Merge branch '4.0' into 4.1 2018-06-08 23:05:24 +01:00
Daniel Hensby
e1450b5e82
Merge pull request #8147 from kinglozzer/mysql-pdo-attr
FIX: Only set MYSQL_ATTR_INIT_COMMAND when using mysql driver (fixes #8103)
2018-06-08 13:06:03 +01:00
Damian Mooyman
29f9b1c18f
Fix linting issues 2018-06-08 11:38:36 +12:00
Loz Calver
66f57bd4da FIX: Only set MYSQL_ATTR_INIT_COMMAND when using mysql driver (fixes #8103) 2018-06-07 10:26:00 +01:00
Damian Mooyman
0aa13da0d9
BUG Backport bugfix for belongs_many_many with many_many through.
Partial backport of #7928
Fixes #8131
2018-06-06 09:43:04 +12:00
Damian Mooyman
2510935b53
Merge pull request #8065 from dhensby/pulls/4/mmtl-jointable
NEW Add getJoinTable to MMTL
2018-06-01 10:33:46 +12:00
Robbie Averill
e0993043f8 Merge branch '4.1' into 4 2018-05-30 15:08:39 +12:00
Robbie Averill
c8b0bc0ad7 Merge branch '4.0' into 4.1
# Conflicts:
  #	src/ORM/DataObject.php
  #	tests/php/ORM/DataObjectDuplicationTest.php
  #	tests/php/ORM/DataObjectDuplicationTest/Class1.php
2018-05-30 14:52:07 +12:00
Robbie Averill
ea16e28aa7 Merge branch '4.1' into 4 2018-05-28 18:33:56 +12:00
Robbie Averill
6d98a912c9 Merge branch 'heads/4.1.1' into 4.1 2018-05-28 18:26:20 +12:00
Robbie Averill
3a537bc745 Merge branch 'heads/4.0.4' into 4.0 2018-05-28 17:50:07 +12:00
Robbie Averill
722202fef4 Merge remote-tracking branch 'origin/4.0.4' into 4.1.1
# Conflicts:
  #	src/Control/Director.php
2018-05-24 15:41:11 +12:00
Daniel Hensby
1a57c7c1d0
NEW Add getJoinTable to MMTL 2018-05-14 11:19:24 +01:00
Robbie Averill
cd716fb61b Switch check for is_string 2018-05-14 17:05:31 +12:00
Damian Mooyman
2e13ae746f [ss-2018-006] Prevent code execution in template value resolution 2018-05-14 17:05:31 +12:00
Daniel Hensby
d5e2d3fa67
Merge branch '3.6' into 4.0 2018-05-01 21:47:17 +01:00
JorisDebonnet
1d3e83838d
Fix phpdoc for relation method (namespace) 2018-04-30 02:10:33 +02:00
UndefinedOffset
d17f424541 Changed checked for UnsavedRelationList to ManyManyList 2018-04-18 12:15:16 -03:00
UndefinedOffset
fe4b90edc0 FIX: Duplicating many_many relationships looses the extra fields in 4.0 2018-04-18 11:49:20 -03:00
Damian Mooyman
be8287fef8 BUG Prevent failover / extensions interfering with composite field properties (#7988) 2018-04-06 14:48:24 +12:00
Damian Mooyman
5ff6874dbc
Merge remote-tracking branch 'origin/4.1' into 4 2018-04-04 17:38:26 +12:00
Damian Mooyman
99426cdb05
Merge remote-tracking branch 'origin/4.0' into 4.1 2018-04-04 17:36:45 +12:00
Damian Mooyman
878dc1f86d
BUG Change inverse polymorphic inference to silent-empty instead of explicit error 2018-03-29 09:38:07 +13:00
Andreas Lindahl
dd44deacb4 Fix for "too few parameters" error when using DBMultiEnum 2018-03-28 16:42:12 +02:00
Damian Mooyman
257ff69e32 API Implement many_many through polymorphic (from only) (#7928)
* API Support many_many through polymorphic relations (from side only)
Fixes #7911
Fixes #3136

* Add extra docs and allow optional arguments

* ENHANCEMENT Enable quiet to be turned off

* BUG Fix issue with manymanythroughlist duplication
2018-03-22 10:26:25 +13:00
Daniel Hensby
fb945690b1
Merge pull request #7875 from sminnee/devbuild-record-count
Suggested feature: dev/build record count
2018-03-14 14:26:49 +00:00
Daniel Hensby
fd449618b2
Merge branch '4.1' into 4 2018-03-14 14:11:03 +00:00
Daniel Hensby
ec6ff71107
Merge branch '4.0' into 4.1 2018-03-14 14:09:40 +00:00
Daniel Hensby
d28a1b5cfc
Merge branch '3.6' into 4.0 2018-03-14 14:08:41 +00:00
Damian Mooyman
8b9c292509
Merge remote-tracking branch 'origin/4.1' into 4 2018-03-13 14:26:39 +13:00
Damian Mooyman
625f7b4eee
Merge remote-tracking branch 'origin/4.0' into 4.1 2018-03-13 14:26:18 +13:00
Damian Mooyman
4d424dd340
ENHANCEMENT get_by_id: alternate signature to allow MyDataObject::get_by_id($id) 2018-03-01 14:02:40 +00:00
Roman Schmid
40c2e299a0 Fix "mb_stripos(): Empty delimiter" warning when no search-keywords are given for DBText::ContextSummary.
Add unit-test to cover that case.
2018-03-01 11:39:30 +01:00
Daniel Hensby
9006daf20b
Cleaning up PR and adding tests 2018-02-28 13:31:56 +00:00
Joris Debonnet
559254407f
get_by_id: alternate signature to allow MyDataObject::get_by_id($id) 2018-02-28 13:09:12 +00:00
Daniel Hensby
dace2f179d
Merge branch '4.1' into 4 2018-02-21 13:58:45 +00:00
Daniel Hensby
c04ff8c55a
Merge branch '4.0' into 4.1 2018-02-21 13:40:30 +00:00
Damian Mooyman
0e26c06644
BUG Fix behaviour towards versioned but unstagable records 2018-02-20 12:20:18 +13:00