Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix context leaking to query cache #4229

Merged
merged 17 commits into from Sep 3, 2023
Merged

Fix context leaking to query cache #4229

merged 17 commits into from Sep 3, 2023

Conversation

MaceWindu
Copy link
Contributor

Fix taken from #3401

Issue details: query context instance included into query cache as part of query expression. While it is not a big issue in general (we never received complains and context object is usually small), this is a big issue for large queries, when context.LastSql contained big SQL strings.

(cherry picked from commit 96edfec)

# Conflicts:
#	Source/LinqToDB/Linq/Builder/ExpressionBuilder.QueryBuilder.cs
#	Tests/Base/TestBase.AssertQuery.cs
@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

No commit pushedDate could be found for PR 4229 in repo linq2db/linq2db

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

No commit pushedDate could be found for PR 4229 in repo linq2db/linq2db

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Shane32
Shane32 previously approved these changes Jul 29, 2023
viceroypenguin
viceroypenguin previously approved these changes Jul 29, 2023
Source/LinqToDB/Linq/TableT.cs Outdated Show resolved Hide resolved
sdanyliv
sdanyliv previously approved these changes Jul 29, 2023
igor-tkachev
igor-tkachev previously approved these changes Jul 29, 2023
Copy link
Member

@igor-tkachev igor-tkachev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have ExpressionBuilder.DataContextParam. Should we merge it with ExpressionConstants.DataContextParam?

@MaceWindu
Copy link
Contributor Author

@igor-tkachev ExpressionConstants.DataContextParam moved to new place by this PR (and origin PR)

viceroypenguin
viceroypenguin previously approved these changes Jul 30, 2023
@MaceWindu MaceWindu marked this pull request as draft July 30, 2023 12:29
@MaceWindu
Copy link
Contributor Author

@sdanyliv review plz

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu MaceWindu marked this pull request as ready for review September 1, 2023 17:19
@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu MaceWindu marked this pull request as draft September 2, 2023 10:21
@MaceWindu
Copy link
Contributor Author

/azp run test-all

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@MaceWindu MaceWindu marked this pull request as ready for review September 2, 2023 21:27
@MaceWindu MaceWindu merged commit 3cff244 into master Sep 3, 2023
66 checks passed
MaceWindu pushed a commit to linq2db/linq2db.baselines that referenced this pull request Sep 3, 2023
* [Windows / Access ACE (OLEDB/ODBC) x86] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQL CE] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / Access ACE (ODBC-only) x64] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / Access ACE (OLEDB/ODBC) x86] baselines

* [Windows / SQL Server 2005] baselines

* [Windows / SQL Server 2005] baselines

* [Windows / SQL Server 2008] baselines

* [Windows / SQL Server 2008] baselines

* [Windows / SQL Server 2014] baselines

* [Windows / SQL Server 2017] baselines

* [Windows / SQL Server 2017] baselines

* [Windows / SQL Server 2016] baselines

* [Windows / SQL Server 2019] baselines

* [Linux / DB2 LUW 11.5] baselines

* [Linux / Firebird 3.0] baselines

* [Linux / Informix 14.10] baselines

* [Windows / SQL Server EXTRAS] baselines

* [Linux / Firebird 2.5] baselines

* [Windows / SQL Server 2019] baselines

* [Linux / Firebird 4.0] baselines

* [Linux / MariaDB] baselines

* [Windows / SQL Server 2022] baselines

* [Linux / MySQL 8 (both providers)] baselines

* [Linux / MySQL 5.5 (both providers)] baselines

* [Linux / PostgreSQL 10] baselines

* [Linux / Oracle 11g XE] baselines

* [Linux / ClickHouse] baselines

* [Windows / SQL Server EXTRAS] baselines

* [Linux / PostgreSQL 11] baselines

* [Linux / Oracle 21c] baselines

* [Linux / PostgreSQL 14] baselines

* [Linux / PostgreSQL 13] baselines

* [Linux / PostgreSQL 12] baselines

* [Linux / Oracle 12c] baselines

* [Linux / PostgreSQL 15] baselines

* [Linux / Oracle 18c] baselines

* [Linux / Oracle 23c] baselines

* [Linux / Oracle 19c] baselines

* [Linux / Sybase ASE 16] baselines

* [Linux / SAP HANA 2] baselines

* [Windows / SQL Server 2012] baselines

* [Windows / SQL Server 2012] baselines

* [Linux / SQL Server 2019] baselines

* [Linux / Oracle 21c] baselines

* [Linux / Oracle 21c] baselines

* [Linux / Oracle 23c] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQL Server 2005] baselines

* [Windows / Access MDB (Jet/ODBC)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / Access ACE (ODBC-only) x64] baselines

* [Windows / SQL Server 2008] baselines

* [Windows / Access ACE (OLEDB/ODBC) x86] baselines

* [Windows / SQL Server 2014] baselines

* [Windows / SQL Server 2012] baselines

* [Windows / SQL Server 2012] baselines

* [Windows / SQL Server 2014] baselines

* [Windows / SQL Server 2017] baselines

* [Windows / SQL Server 2016] baselines

* [Linux / DB2 LUW 11.5] baselines

* [Linux / Firebird 2.5] baselines

* [Linux / Firebird 3.0] baselines

* [Windows / SQL Server 2019] baselines

* [Linux / Firebird 4.0] baselines

* [Linux / MariaDB] baselines

* [Linux / Informix 14.10] baselines

* [Windows / SQL Server EXTRAS] baselines

* [Windows / SQL Server 2022] baselines

* [Linux / MySQL 5.5 (both providers)] baselines

* [Windows / SQL Server EXTRAS] baselines

* [Linux / MySQL 8 (both providers)] baselines

* [Windows / SQL Server 2019] baselines

* [Linux / PostgreSQL 10] baselines

* [Linux / Oracle 11g XE] baselines

* [Linux / PostgreSQL 11] baselines

* [Linux / PostgreSQL 12] baselines

* [Linux / PostgreSQL 15] baselines

* [Linux / Oracle 21c] baselines

* [Linux / PostgreSQL 13] baselines

* [Linux / Oracle 12c] baselines

* [Linux / PostgreSQL 14] baselines

* [Linux / Oracle 23c] baselines

* [Linux / Oracle 18c] baselines

* [Linux / Oracle 19c] baselines

* [Linux / Sybase ASE 16] baselines

* [Linux / SAP HANA 2] baselines

* [Linux / SQL Server 2019] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQL CE] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / Access MDB (Jet/ODBC)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / SQL Server 2005] baselines

* [Windows / Access ACE (ODBC-only) x64] baselines

* [Windows / SQL Server 2008] baselines

* [Windows / SQL Server 2012] baselines

* [Windows / SQL Server 2005] baselines

* [Windows / Access MDB (Jet/ODBC)] baselines

* [Windows / SQL Server 2014] baselines

* [Windows / SQL Server 2008] baselines

* [Windows / SQL Server 2012] baselines

* [Windows / SQL Server 2016] baselines

* [Windows / SQL Server 2017] baselines

* [Windows / SQL Server 2017] baselines

* [Linux / Firebird 2.5] baselines

* [Windows / SQL Server 2019] baselines

* [Linux / Firebird 3.0] baselines

* [Linux / DB2 LUW 11.5] baselines

* [Linux / MariaDB] baselines

* [Linux / Informix 14.10] baselines

* [Linux / MySQL 5.5 (both providers)] baselines

* [Linux / Firebird 4.0] baselines

* [Linux / MySQL 8 (both providers)] baselines

* [Linux / ClickHouse] baselines

* [Windows / SQL Server 2022] baselines

* [Windows / SQL Server 2019] baselines

* [Linux / Oracle 11g XE] baselines

* [Linux / PostgreSQL 10] baselines

* [Windows / SQL Server EXTRAS] baselines

* [Linux / PostgreSQL 11] baselines

* [Linux / PostgreSQL 12] baselines

* [Linux / PostgreSQL 13] baselines

* [Linux / Oracle 12c] baselines

* [Linux / Oracle 21c] baselines

* [Linux / PostgreSQL 14] baselines

* [Linux / PostgreSQL 15] baselines

* [Linux / Oracle 23c] baselines

* [Linux / Oracle 19c] baselines

* [Linux / Sybase ASE 16] baselines

* [Linux / SAP HANA 2] baselines

* [Linux / SQL Server 2019] baselines

* [Linux / Oracle 18c] baselines

* [Windows / SQL Server EXTRAS] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Windows / SQLite (both providers)] baselines

* [Windows / SQLite (specialized tests)] baselines

* [Linux / Oracle 21c] baselines

* [Linux / Oracle 23c] baselines

---------

Co-authored-by: Azure Pipelines Bot <azp@linq2db.com>
@MaceWindu MaceWindu deleted the issue/context_leak branch September 3, 2023 09:06
igor-tkachev added a commit that referenced this pull request Jan 23, 2024
Revert "Fix context leaking to query cache (#4229)"

This reverts commit 3cff244.
MaceWindu added a commit that referenced this pull request Jan 31, 2024
* test for issue #4337

* Update nugets

Revert "Fix context leaking to query cache (#4229)"

This reverts commit 3cff244.

* Fixed #4337.

* Fixed #4337.

* Redo a cached ExpressionInstance, and fix a few more places

* missed a few places where the constant expression could be used

* requested fixes in code styling from pull request

---------

Co-authored-by: Igor Tkachev <igor.tkachev@gmail.com>
Co-authored-by: MaceWindu <MaceWindu@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants