aboutsummaryrefslogtreecommitdiffstats
path: root/include/dba
Commit message (Collapse)AuthorAgeFilesLines
* include/dba: Make Dba driver transaction aware.Harald Eilertsen2024-02-261-0/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduced database transaction support to the Dba driver via the DbaTransaction class. The goal of this is to allow the driver control over the creation and finalization of database transactions. Until now code that has needed transaction support has done so directly by issuing "BEGIN", "ROLLBACK" and "COMMIT" commands to the underlying database directly. This has several disadvantages: - We do have no control or knowledge of whether any transactions being active. - Since transactions can not be nested, we run the risk of unrelated code trying to create a transaction when one is already active. - Code using transactions are not testable, as the test runner wraps all tests within a transaction to begin with. This patch should eliminate all these problems. A transaction is started by instantiating the DbaTransaction class: $my_transaction = new \DbaTransaction(); The transaction will automatically be _rolled back_ if it has not been committed before the instance is destroyed. (When the variable holding it goes out of scope, i.e when the containing function returns.) A transaction is committed like this: $my_transaction->commit(); This will immediately commit the changes in the transaction, and the transaction will be marked as committed, so it will not be attempted to be rolled back on destruction. I have chosen to "ignore" the problem of nested transactions by having the DbaTransaction class _not_ initiate a new transaction if one is already active. This also makes the rollback and commit actions of the DbaTransaction class into no-ops. An alternative would be to simulate nested transactions by using save points if a transaction is already active. However, I'm unsure about wether there's any safe way to avoid all potential pitfalls when doing that. In any case, nested transactions should preferably be avoided, and afaict we don't rely on that in any of the existing code. The reason we need to support it in some way is that it's needed for testing where the code under test is creating a transaction on it's own. (Since each test is run within a db transaction to begin with.) Also, I have taken the liberty to assume a PDO based db driver for this stuff. I don't think that's going to be a problem, as that's the only thing supported by the rest of the code in any case.
* prevent duplicate definitionsMario Vavti2023-04-131-3/+11
|
* allow to override the DB charset via the $db_charset variable in .htconfig.phpMario2022-02-102-9/+9
|
* pdo: add the charset to the connection stringMario2022-02-091-0/+7
|
* get devHilmar R2021-03-012-0/+0
|
* we need 24h formatMario2020-01-181-1/+1
|
* introduce db_str_to_date()Mario2020-01-182-0/+13
|
* port db_indexes() from zapMario Vavti2019-05-131-0/+25
|
* Fix infinite loop using postgres as backendDaniel Lowe2019-04-211-12/+6
| | | | | | unescapebin is handed a string in some cases, and it causes an infinite loop when it does. This ensures that the argument is a resource before loading its contents.
* Fix use UNIX socket file to connect DBMax Kostikov2019-04-101-1/+1
|
* Remove DNS check for database connection during installation. Causes ↵Andrew Manning2018-11-091-9/+9
| | | | friction with Docker deployment.
* refine stream filter and forum notification behaviour (mostly for ↵Mario Vavti2018-10-241-1/+1
| | | | performance). personal posts will be displayed in unthreaded mode and clicking a forum notification will show only the unseen items of the forum in unthreaded mode. group the filters in the widget - threaded at the top, unthreaded beneath.
* The channel import page seems to have missed the big theme cleanup of the ↵zotlabs2018-05-011-0/+25
| | | | last couple of years.
* never mind. dbg(1) now gives you the basic debug result and dbg(2) gives you ↵zotlabs2018-04-141-1/+1
| | | | the verbose debug option with all the results.
* allow dbg(2) to only return the canonical SQL used in the query and the ↵zotlabs2018-04-141-1/+3
| | | | number of results, but not log every single result. Maybe we should use 1 for this and 2 for the full results, but I didn't really want to change the way people do things today. If anybody has a strong opinion about doing this, go ahead and change it and send a note to the developer forum.
* :white_check_mark: Add tests for non existent tables.Klaus Weidenbach2018-01-281-1/+2
| | | | Prevent PHP warnings "Undefined variable" in dba_pdo::q();
* :fire: Cleanup old database related files.Klaus Weidenbach2018-01-285-332/+60
| | | | | Remove non used database drivers, remove unused methods. Improve documentation.
* query optimisations for notifications - use a specific index onlyMario Vavti2018-01-282-0/+13
|
* Change dsn port handling in dba_pdo.Klaus Weidenbach2018-01-181-2/+2
|
* turn platform name and std_version into config variableszotlabs2017-07-131-2/+3
|
* remove unused page_widgets.php include and provide a general function for ↵zotlabs2017-06-221-0/+14
| | | | loading sql from file to use in the cdav migration
* remove php version checks for older ( < 5.4) code incompatibilitieszotlabs2017-05-231-5/+2
|
* Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_mergezotlabs2017-05-221-1/+1
|\
| * silence php warning during installMario Vavti2017-05-171-1/+1
| |
| * provide platform specific install scriptzotlabs2017-03-311-3/+5
| |
* | provide platform specific install scriptzotlabs2017-03-251-3/+5
| |
* | db issueszotlabs2017-03-121-7/+7
|/
* use array_shift - it's cleanerzotlabs2016-12-151-1/+1
|
* issue #606, postgres binary data handling under PDO and HHVM when passed nullzotlabs2016-11-301-1/+1
|
* missed this from the earlier checkinzotlabs2016-11-291-1/+1
|
* dba_pdo: return false on q() DB error like the old driver didzotlabs2016-11-171-1/+1
|
* change log string on pdo log messageszotlabs2016-10-271-3/+3
|
* put all dns checking into one function, allow it to be ignoredzotlabs2016-10-251-1/+1
|
* first cut at edit activitieszotlabs2016-10-251-1/+1
|
* pdo - fetch assoc onlyzotlabs2016-10-251-1/+1
|
* set port if non-zero (instead of non-null)zotlabs2016-10-242-2/+2
|
* this seems to work, but there are unanswered questions and is still ↵zotlabs2016-10-231-5/+8
| | | | undergoing investigation. It appears that the data stored with os_content = 1 is not being escaped in all circumstances or the scaled image data is being escaped twice.
* fetch bytea as streamzotlabs2016-10-231-1/+2
|
* pdo hackszotlabs2016-10-232-4/+18
|
* allow a dsn override to the database via the server argument. This could be ↵zotlabs2016-10-202-15/+21
| | | | used to allow unix domain sockets and other unusual configurations.
* pdo - cleanupzotlabs2016-10-201-7/+3
|
* more pdo tweakszotlabs2016-10-201-3/+24
|
* pdo testingzotlabs2016-10-202-7/+17
|
* use pdo for postgres alsozotlabs2016-10-195-17/+32
|
* pdo fixeszotlabs2016-10-191-4/+4
|
* pdo changes first cutzotlabs2016-10-192-30/+27
|
* some pdo workzotlabs2016-10-171-6/+12
|
* additional array checkingzotlabs2016-10-131-0/+13
|
* remove the rest of the backticks from sql queries; replace with TQUOT const ↵zotlabs2016-10-122-1/+9
| | | | which is driver dependent
* fix dbescdate()Mario Vavti2016-09-281-3/+3
|