Project

General

Profile

Actions

Defect #19149

closed

TinyTDS generates SQL for wrong version of MS SQL

Added by Serghei Zagorinyak over 9 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
Database
Target version:
-
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Affected version:

Description

After upgrading an instance of Redmine 2.6.0 to 3.0.0 I have encountered the following problem: while running on MS SQL 2008 server, Redmine generates queries for MS SQL 2012 which results in syntax errors.

Example:

TinyTds::Error: Incorrect syntax near 'OFFSET'.: EXEC sp_executesql N'SELECT [settings].* FROM [settings] WHERE [settings].[name] = @0 
ORDER BY [settings].[id] DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY', N'@0 nvarchar(255)', @0 = N'rest_api_enabled'

Extracted source (around line 246):

#app/models/setting.rb
name = name.to_s
raise "There's no setting named #{name}" unless available_settings.has_key?(name)
setting = where(:name => name).order(:id => :desc).first
unless setting
setting = new
setting.name = name

The OFFSET option is unavailable in MS SQL 2008

Actions #1

Updated by Serghei Zagorinyak over 9 years ago

Found out that activerecord 4.2 supports only MS SQL 2012 and higher. Still this is an issue cause Redmine can't run on earlier versions of MS SQL

Actions #2

Updated by Toshi MARUYAMA over 9 years ago

  • Status changed from New to Closed

Serghei Zagorinyak wrote:

Found out that activerecord 4.2 supports only MS SQL 2012 and higher.

Indeed.
https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/v4.2.3/README.md#activerecord-sql-server-adapter-for-sql-server-2012-and-higher

I have updated RedmineInstall to version 233.

Actions

Also available in: Atom PDF