aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/visitors
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove deprecated calls from the testsRafael Mendonça França2013-12-051-2/+2
|
* Remove deprecated calls to using `UpdateManager` without setting ↵Vipul A M2013-11-101-11/+1
| | | | `UpdateManager#key`
* Fix warning of shadowing variableRafael Mendonça França2013-10-241-2/+2
|
* Merge pull request #211 from yahonda/support_columns_for_distinct_oracleAaron Patterson2013-10-211-2/+2
|\ | | | | Support `columns_for_distinct` with Oracle adapter
| * Support `columns_for_distinct`Yasuo Honda2013-10-141-2/+2
| |
* | fix one deprecation warningAaron Patterson2013-10-141-1/+1
|/
* Cache visitor dispatch on a per-visitor basisColin Jones2013-08-141-3/+6
|
* Make visitors threadsafe by removing @last_columnErnie Miller2013-04-2815-381/+385
| | | | | | | | | | | | | | | | | | | | | | The last_column feature of the ToSql visitor and its descendants is what enabled quoting based on the column last visited -- in other words, if you have a standard condition like an equality with a string attribute on the left side and an integer on the right side, then when ARel visits the node, it'll first visit the left side attribute, setting the column of the string attribute as the last column, and resulting in the right side of the condition getting the appropriate quoting. The downside is that this means that visitors can't be shared between threads, because of the state mutation. It also makes for some really weird behavior in the event that the visitor visits a node that happens to contain an attribute you weren't expecting to be there, since it'll potentially quote something based on that attribute. So, it prevents reversing an equality condition. column = value will work, but not value = column, since the last column wouldn't be the column you're hoping for. This is a first pass at fixing this by changing the signature of the visit methods to accept the currently-relevant attribute, if any.
* ARel -> ArelXavier Noria2013-04-142-2/+2
| | | | | | | The project uses "Arel" most of the time, but there were a few "ARel" here and there. I checked with @brynary back in 2010 to pick one for the Rails documentation guidelines and "Arel" was chosen and documented. This patch chooses "Arel" vs "ARel" based on that.
* Revert issue #99 fixesEduardo Mourao2013-03-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two commits involving issue #99 which should be reverted. First of all, #99 is not an issue in Arel at all. Second, the fix provides pretty much destroys the purpose of pagination by cause full table scans. The original code (it seems I can't simply revert the commits) is 900 times slower than this one. ``` SELECT * FROM ( SELECT raw_sql_.*, rownum raw_rnum_ FROM (SELECT "LANCAMENTOS".* FROM "LANCAMENTOS" ) raw_sql_ ) WHERE raw_rnum_ between 1 and 30 ---------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 4636K| 2701M| 23442 (2)| 00:04:42 | |* 1 | VIEW | | 4636K| 2701M| 23442 (2)| 00:04:42 | | 2 | COUNT | | | | | | | 3 | TABLE ACCESS FULL| LANCAMENTOS | 4636K| 738M| 23442 (2)| 00:04:42 | ----------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("RAW_RNUM_"<=30 AND "RAW_RNUM_">=1) Statistics ----------------------------------------------------------- 4 user calls 13 physical read total multi block requests 202588160 physical read total bytes 202588160 cell physical IO interconnect bytes 0 commit cleanout failures: block lost 0 IMU commits 0 IMU Flushes 0 IMU contention 0 IMU bind flushes 0 IMU mbu flush SELECT * FROM ( SELECT raw_sql_.*, rownum raw_rnum_ FROM (SELECT "LANCAMENTOS".* FROM "LANCAMENTOS" ) raw_sql_ WHERE rownum <= 30 ) WHERE raw_rnum_ >= 0 ----------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 30 | 18330 | 2 (0)| 00:00:01 | |* 1 | VIEW | | 30 | 18330 | 2 (0)| 00:00:01 | |* 2 | COUNT STOPKEY | | | | | | | 3 | TABLE ACCESS FULL| LANCAMENTOS | 30 | 5010 | 2 (0)| 00:00:01 | ----------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter("RAW_RNUM_">=0) 2 - filter(ROWNUM<=30) Statistics ----------------------------------------------------------- 4 user calls 0 physical read total multi block requests 0 physical read total bytes 0 cell physical IO interconnect bytes 0 commit cleanout failures: block lost 0 IMU commits 0 IMU Flushes 0 IMU contention 0 IMU bind flushes 0 IMU mbu flush ```
* call the columns hash methodAaron Patterson2013-03-141-3/+3
|
* Merge pull request #161 from Noemj/masterAaron Patterson2013-02-051-0/+10
|\ | | | | Mysql2 prepared statements bind substitution fix
| * Fixed the bind param visiting for mysql2 prepared statements caseNoemj2013-02-041-0/+10
| |
* | Merge pull request #160 from t0m/issue_99_oracle_optimizationRafael Mendonça França2013-01-311-1/+1
|\ \ | | | | | | Small change to oracle paging code to trigger stopkey optimization
| * | Add oracle paging optimization discussed in issue 99tom2013-01-081-1/+1
| | |
* | | fixing bind param visiting in the dot visitorAaron Patterson2013-01-301-1/+1
| |/ |/|
* | Denied the quoting of SqlLiteralsNoemj2013-01-291-0/+1
|/
* avoid extra string objects in the inner join caseAaron Patterson2012-10-151-1/+6
|
* more roflscaling strings in the visitorAaron Patterson2012-10-121-8/+26
|
* adding some roflscale to the sql visitorAaron Patterson2012-10-121-13/+96
|
* Merge pull request #140 from sunaku/GH-139Aaron Patterson2012-09-241-4/+4
|\ | | | | bugfix: some aggregations lacked DISTINCT emission
| * GH-139: some aggregations lacked DISTINCT emissionSuraj N. Kurapati2012-09-211-4/+4
| |
* | to_sql: add support for emitting SQL subqueriesSuraj N. Kurapati2012-09-221-0/+4
|/
* Fix in [] to be false, in [] to be trueErnie Miller2012-06-141-2/+10
| | | | This is in response to discussion on 62207fa
* Do not generate NOT IN (NULL) when empty rightSantiago Pastorino2012-06-131-1/+1
|
* Adds visit_Arel_Nodes_InfixOperation to Arel::Visitors::DepthFirstBenedikt Deicke2012-03-221-0/+1
|
* Patch Informix Visitor so that it includes joinsJordan2012-02-291-1/+1
|
* Add #extract, which produces ANSI SQL function EXTRACT(<field> from <expr>).Alexander Staubo2012-02-232-0/+10
|
* Support ANSI SQL2003 window functions.Alexander Staubo2012-02-223-0/+75
|
* added a module for visiting and transforming bind valuesAaron Patterson2012-02-212-2/+26
|
* bind parameters can be differentiated from sql literalsAaron Patterson2012-02-203-0/+3
|
* Oracle limit and offset issue when query is ordered, issue #99 solved.babinho2012-02-171-2/+1
|
* bumping to 3.0.0Aaron Patterson2012-01-121-1/+1
|
* Ensure @last_column is cleared after visiting objectNorman Clarke2012-01-071-1/+1
|
* calling cache methods against the connectionAaron Patterson2011-11-191-18/+12
|
* Support locking by default and disable it only for SQLite.Edgars Beigarts2011-08-265-13/+6
|
* Support locking in OracleEdgars Beigarts2011-08-261-0/+4
|
* Make it the responsibility of the connection to hold on to a visitor for ↵Jon Leighton2011-08-081-4/+2
| | | | generating SQL, rather than the TreeManager. (There is a related commit coming in Active Record.)
* Support update statements containing joinsJon Leighton2011-08-081-4/+1
|
* Add nodes for boolean constantsDaniel Cadenas2011-08-031-0/+8
| | | | | | | | | | | | This is useful for dynamically created predicates e.g: expr1 = table.create_false expr2 = table.create_false expr1 = create_a_predicate() if some_condition expr2 = create_another_predicate() if some_other_condition table.where(expr1.and(expr2))
* Merge pull request #69 from thedarkone/oracle-order-by-updateAaron Patterson2011-07-261-0/+12
|\ | | | | Oracle does not allow ORDER BY/LIMIT in UPDATE queries
| * Oracle does not allow ORDER BY/LIMIT in UPDATE queries.thedarkone2011-07-261-0/+12
| |
* | supressing nested parenthesis in multiple unions on mysql. thanks jhtwong. ↵Aaron Patterson2011-07-201-0/+22
| | | | | | | | fixes #58
* | fix depth first visitor to support ascending and descending nodesAaron Patterson2011-06-291-0/+2
| |
* | Merge branch 'master' into Khronos/masterAaron Patterson2011-06-275-18/+76
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: visitors can define their own cache strategy for dispatch. fixes #57 Break Ordering into Ascending/Descending nodes, allow reversal remove unnecessary guarding agains literal LIMIT and OFFSET support for MS SQL Include Arel::Predicates to Arel::Nodes::Function so you can do table[:id].count.eq(2) updating spec zomg prep release make sure thread runs do not cache sql literal values no longer use this instance variable
| * | visitors can define their own cache strategy for dispatch. fixes #57Aaron Patterson2011-06-271-4/+8
| | |
| * | Merge pull request #60 from arkadiyk/masterAaron Patterson2011-06-241-9/+59
| |\ \ | | | | | | | | Better support for MSSQL
| | * | remove unnecessary guarding agains literalarkadiy kraportov2011-06-101-10/+0
| | | |
| | * | LIMIT and OFFSET support for MS SQLarkadiy kraportov2011-06-091-9/+69
| | |/
| * / Break Ordering into Ascending/Descending nodes, allow reversalErnie Miller2011-06-153-4/+7
| |/