aboutsummaryrefslogtreecommitdiffstats
path: root/include/dba
Commit message (Collapse)AuthorAgeFilesLines
* Add an dba_pdo::update methodHarald Eilertsen2025-01-291-0/+37
| | | | | This is a convenience funcition to make it easier to update an existing row in a database table.
* Use returning clause on dba_pdo::insert where supportedHarald Eilertsen2025-01-291-3/+12
| | | | | | | | | By using the returning clause when inserting a new record, we get back the inserted record right away; thus saving us an extra roundtrip to the database. Both PostgreSQL and MariaDB supports this clause, but MySQL don't. In that case we fall back to manually fetching the last inserted row.
* Fetch the server version on dba_pdo::connect.Harald Eilertsen2025-01-291-0/+3
| | | | | | | The server version string is useful to among other things check whether we are running on a real MySQL system, or MariaDB. Instead of fetching it every time we need it, cache it in the dba_pdo object when we connect to the db.
* Fix return value from dba_pdo::q()Harald Eilertsen2025-01-291-5/+1
| | | | | | | According to the documentation, this function should never return null. Still that's what it did if a non-select query raised a PDOException. This patch fixes this, so that it so that the function conforms to the docs.
* Add an insert method to dba_pdoHarald Eilertsen2025-01-291-1/+64
| | | | | | | | | | | A common use case is to insert a record into a database table, but also instantiate an object from the inserted data. This requires that we know the value of any default or calculated columns that is filled in by the database when the row is inserter. This patch adds a `insert` method to pda_dbo that will insert a row, and immediately fetch the row back from the database – including the default and calculated values not specified by the insert itself.
* 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
|