Commit Graph

88 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) d86285fb80 MDL-35155 database: better sql_substr() impl. for mssql/sqlsrv + unit tests
MSSQL's substring() implementation is somehow silly/strict and unable to
perform implicit casts to integer both for the start and length parameters.

This hits Moodle badly because of another problems (MDL-23997) we decided
to cast to string all bound placeholders long ago.

So this commit just enforces the cast of the start and length parameters to
integer. And includes unit tests for using placeholders on all positions in
the sql_substr() method.
2015-01-12 18:26:58 +01:00
Simon Coggins 227b31ccbe MDL-35155: Fix MSSQL bug in sql_substr() 2015-01-08 08:14:19 +00:00
Tim Hunt 63e5416f5b MDL-45618 Fix @since PHPdoc tags. 2014-05-20 15:03:34 +08:00
Sam Hemelryk b2ca12e904 Merge branch 'MDL-43884-master' of git://github.com/ankitagarwal/moodle 2014-02-04 09:11:27 +13:00
Ankit Agarwal aa611d661c MDL-43884 database: Fix get_tables() api for external stores 2014-01-28 16:28:57 +08:00
Petr Skoda 3f17d7091b MDL-43761 refactor db manager code to send arrays of SQL to the dml driver 2014-01-24 13:45:07 +08:00
Dan Poltawski c582565a06 MDL-43395 dml: warn about invalid limit params
Help developers to find bugs by throwing a DEBUG_DEVELOPER message
rather than ignoring this case completely.
2014-01-13 08:42:07 +08:00
Sam Hemelryk 37f59a68bd Merge branch 'MDL-41359-master' of https://github.com/mr-russ/moodle 2013-12-18 10:08:33 +13:00
Russell Smith 9c7dfbe6ed MDL-41359 database: no table columns is a dml_excpeiton
When insert_record is called and it doesn't find any columns
to insert data into, that is a dml_exception as you need at least
one column in the database to insert into it.  This can happen
when you have created a zero column database table, or the table
does not exist.
2013-12-07 08:56:24 +11:00
Petr Škoda 6c3ae510f1 MDL-31625 fix multiple global search-replace issues
Includes following fixes:
* support for MS SQL Server
* optional trimming of of oversized VARCHAR fields
* conversion to forms library
* full localisation
* other cleanup
2013-12-06 09:51:49 +08:00
Ankit Agarwal e3359b87df MDL-41586 libraries: Fix scale issues
The default value of scale should be null not false in mssql, that is the
standard with other DBs
0 is a valid value for scale, don't change it in oracle
2013-11-06 16:12:15 +08:00
Petr Škoda 302506e03a MDL-42493 revert nasty DB meta caching hack that was trying to work around shutdown issues
The original problem was resolved via new core shutdown handler support.
2013-10-25 21:20:06 +02:00
Petr Škoda d79d5ac276 MDL-31501 rework user session architecture
List of changes:
 * New OOP API using PHP namespace \core\session\.
 * All handlers now update the sessions table consistently.
 * Experimental DB session support in Oracle.
 * Full support for session file handler (filesystem locking required).
 * New option for alternative session directory.
 * Official memcached session handler support.
 * Workaround for memcached version with non-functional gc.
 * Improved security - forced session id regeneration.
 * Improved compatibility with recent PHP releases.
 * Fixed borked CSS during install in debug mode.
 * Switched to file based sessions in new installs.
 * DB session setting disappears if DB does not support sessions.
 * DB session setting disappears if session handler specified in config.php.
 * Fast purging of sessions used in request only.
 * No legacy distinction -  file, database and memcached support the same functionality.
 * Session handler name included in performance info.
 * Fixed user_loggedin and user_loggedout event triggering.
 * Other minor bugfixing and improvements.
 * Fixed database session segfault if MUC disposed before $DB.

Limitations:
 * Session access time is now updated right after session start.
 * Support for $CFG->sessionlockloggedinonly was removed.
 * First request does not update userid in sessions table.
 * The timeouts may break badly if server hosting forces PHP.ini session settings.
 * The session GC is a lot slower, we do not rely on external session timeouts.
 * There cannot be any hooks triggered at the session write time.
 * File and memcached handlers do not support session lock acquire timeouts.
 * Some low level PHP session functions can not be used directly in Moodle code.
2013-09-21 13:11:56 +02:00
Petr Škoda bff1d60c05 MDL-40676 ignore null bytes 2013-09-02 12:25:02 +08:00
Simon Coggins be8c6d7bc8 MDL-39572: Fix sql_order_by_text() to use length argument correctly 2013-08-16 11:26:54 +12:00
Petr Škoda 656250de83 MDL-11270 use NVARCHAR(MAX) and VARBINARY(MAX) in SQL Server 2013-07-26 09:28:50 +02:00
Petr Škoda d11b8d0c63 MDL-40808 remove unused DML strings 2013-07-25 12:02:29 +02:00
Damyon Wiese b080d5b688 Merge branch 'wip-MDL-40490-master' of git://github.com/abgreeve/moodle 2013-07-09 10:03:22 +08:00
Adrian Greeve b1d31f49dc MDL-40490 - database: Fixed a check on database port options.
The addition of a port for the database means that an array
would be set regardless of whether it had any information or not.
The isset() function sees an array as being set and follows through
with the rest of the if statement concatenating a colon to the end
of the database host name and throwing a connection problem if no port
number is supplied.

The if statement has now been changed to if not empty. The empty
function does see zero as an empty value, but a port shouldn't have
a value of zero anyway.
2013-07-04 15:01:53 +08:00
Petr Škoda b983901d48 MDL-40266 improve emulate_bound_params() for sqlsrv driver
Looping over large numbers of items with array_shift() is expensive.
Reverse the array and fetch items from the top of the pile.

Credit goes to Martin Langhoff for original mysqli fix.
2013-07-01 08:51:35 +02:00
Eloy Lafuente (stronk7) 9043466103 MDL-39389 add databasemeta cache to ms/oci drivers 2013-04-28 18:12:38 +02:00
Eloy Lafuente (stronk7) a035bc9b6d Merge branch 'w14_MDL-39024_m25_mssqlseek' of git://github.com/skodak/moodle 2013-04-09 01:58:20 +02:00
Petr Škoda 4c97487728 MDL-39024 fix MSSQL seek past the end of recordset 2013-04-08 10:36:37 +02:00
Petr Škoda 7a755250df MDL-39022 fix MSSQL concat type conversion 2013-04-08 10:19:51 +02:00
Petr Škoda 46a86dbbc2 MDL-36211 do not lock sessions for guests and not-logged-in users 2012-11-17 10:42:47 +01:00
Dan Poltawski 609541df30 MDL-34081 dml: mssql driver was using case insensitve sql 2012-06-30 18:56:57 +08:00
Petr Skoda 00902cd974 MDL-32003 fix phpdocs and use __DIR__ for includes in dml layer
DML layer is not supposed to use $CFG,
it is better to rely on __DIR__ in self-contained libs…
2012-06-17 22:56:28 +02:00
Eloy Lafuente (stronk7) a3fa993212 MDL-33434 mssql: Improve handling of returned ids on insert.
This commit moves from the batch SCOPE_IDENTITY() way to return
the inserted ids to the OUTPUT alternative (supported and
recommended since 2005). Also the handling of possible return
values is improved, with all the alternatives leading to expected results.
2012-05-31 01:01:14 +02:00
Petr Skoda 54c5b1ad35 MDL32392 delete unused is_min_version() in some DB drivers 2012-04-15 19:40:07 +02:00
Eloy Lafuente (stronk7) 7b74fb7071 MDL-32392 cleanup: adding @todo about unused is_min_version() method 2012-04-10 21:26:00 +02:00
Eloy Lafuente (stronk7) 7f3f024d48 MDL-32365 mssql and sqlsrv: introspect metainfo to look for identities 2012-04-10 20:24:05 +02:00
Petr Skoda 62cd8cd9f5 MDL-32029 fix get_tables() when prefix empty in external database 2012-03-24 11:36:01 +01:00
Dan Poltawski d68c62fe12 Merge branch 'w12_MDL-29515_m23_deprdb' of git://github.com/skodak/moodle 2012-03-21 09:25:47 +08:00
Petr Skoda de640a2d3f MDL-29515 remove deprecated $DB->sql_ilike() and fix debug messages 2012-03-17 19:20:39 +01:00
Petr Skoda e618cdf3f6 MDL-29894 forbid objects in DML parameters
Objects with __toString we never fully supported as parameters in DML layer, this finally brings consistent behaviour.
2012-03-17 18:44:12 +01:00
Petr Skoda a681b6c0a9 MDL-31689 fix moodle_database:execute() description 2012-03-07 12:36:40 +01:00
Aparup Banerjee dafa20e85c MDL-30972 Documentation : improved @see as well as added appropriate uses of inline @link. 2012-02-16 10:29:45 +08:00
Aparup Banerjee a0eb2e97f9 MDL-30972 Documentation : Renamed DB engine drivers to "@package core" but moodle_*.php are "@subpackage dml_driver", all other dml/*.php are "@subpackage dml". 2012-02-09 10:01:42 +08:00
Aparup Banerjee 6df260107c MDL-30972 Documentation : clarified phpdocs for main public APIs in DML layer and touched up on some drivers 2012-02-09 10:01:42 +08:00
Eloy Lafuente (stronk7) d16b0197de MDL-30026 improve session lock - mssql workaround for bug with scalar returned values 2011-11-13 19:06:44 +01:00
Petr Skoda 2b0e3941e9 MDL-30026 improve session lock acquire timeouts and other minor cleanup
This is partially based on original patch by Tony Levi.
2011-11-06 17:52:15 +01:00
Petr Skoda 148c65bfc8 MDL-29295 do not use strtok in dml and ddl layers
This prevents clobbering of internal pointer when code calling DML
uses strtok too. Unit test added to prevent future uses.
2011-09-14 00:19:55 +02:00
Petr Skoda 94ff0f08f3 Merge branch 'MDL-26922' of git://github.com/stronk7/moodle 2011-03-21 19:02:16 +01:00
Eloy Lafuente (stronk7) f80de2f25c MDL-26922 dml - avoid PHP_INT_MAX overflow on limit queries 2011-03-21 18:49:08 +01:00
Petr Skoda cd278cd454 MDL-26842 fix invalid parameter mix discovered by the new test 2011-03-21 17:19:36 +01:00
Aparup Banerjee 000c881e98 lib MDL-25595 added dbport option handling to mssql connect() 2010-12-09 07:01:03 +00:00
Eloy Lafuente 6bfe81293f MDL-25268 dml - change whitespace capture in limitfrom/limitnum regexp. Fixes some border cases 2010-11-20 00:49:01 +00:00
Eloy Lafuente 9882b2c824 MDL-25276 dml - fix/implement sql_cast2int/real() across the 5 drivers. Tests passing. 2010-11-18 01:27:49 +00:00
Eloy Lafuente 3a55ee2f5e MDL-25268 dml - improved limitnum/limitfrom regexp in ms drivers + tests 2010-11-17 10:39:56 +00:00
Aparup Banerjee 4f8b9632f8 database MDL-24863 applied fix like MDL-23997 which converts number to string. 2010-11-17 07:36:02 +00:00