activerecord-sqlanywhere-adapter 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +27 -23
- data/LICENSE +23 -23
- data/README +126 -125
- data/lib/active_record/connection_adapters/sqlanywhere_adapter.rb +572 -570
- data/test/connection.rb +25 -25
- metadata +62 -53
data/CHANGELOG
CHANGED
@@ -1,23 +1,27 @@
|
|
1
|
-
=CHANGE LOG
|
2
|
-
|
3
|
-
=====0.1.
|
4
|
-
-
|
5
|
-
-
|
6
|
-
|
7
|
-
|
8
|
-
-
|
9
|
-
-
|
10
|
-
-
|
11
|
-
-
|
12
|
-
-
|
13
|
-
- Fixed
|
14
|
-
|
15
|
-
|
16
|
-
-
|
17
|
-
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
1
|
+
=CHANGE LOG
|
2
|
+
|
3
|
+
=====0.1.3 -- 2010/02/01
|
4
|
+
- Added :encoding option to connection string
|
5
|
+
- Fixed bug associated with dangling connections in development mode (http://groups.google.com/group/sql-anywhere-web-development/browse_thread/thread/79fa81bdfcf84c13/e29074e5b8b7ad6a?lnk=gst&q=activerecord#e29074e5b8b7ad6a)
|
6
|
+
|
7
|
+
=====0.1.2 -- 2008/12/30
|
8
|
+
- Fixed bug in ActiveRecord::ConnectionAdapters::SQLAnywhereAdapter#table_structure SQL (Paul Smith)
|
9
|
+
- Added options for :commlinks and :connection_name to database.yml configuration (Paul Smith)
|
10
|
+
- Fixed ActiveRecord::ConnectionAdapters::SQLAnywhereColumn.string_to_binary and binary_to_string (Paul Smith)
|
11
|
+
- Added :time as a native datatype (Paul Smith)
|
12
|
+
- Override SQLAnywhereAdapter#active? to prevent stale connections (Paul Smith)
|
13
|
+
- 'Fixed' coding style to match Rails standards (Paul Smith)
|
14
|
+
- Added temporary option for timestamp_format
|
15
|
+
- Fixed bug to let migrations drop columns with indexes
|
16
|
+
- Formatted code
|
17
|
+
- Fixed bug to raise proper exceptions when a query with a bad column in executed
|
18
|
+
|
19
|
+
=====0.1.1 -- 2008/11/06
|
20
|
+
- Changed file permissions on archives
|
21
|
+
- Changed archives to be specific to platform (.zip on windows, .tar.gz
|
22
|
+
otherwise)
|
23
|
+
- Removed the default rake task
|
24
|
+
|
25
|
+
=====0.1.0 -- 2008/10/15
|
26
|
+
- Initial Release
|
27
|
+
|
data/LICENSE
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
/*====================================================
|
2
|
-
*
|
3
|
-
* Copyright 2008-2009 iAnywhere Solutions, Inc.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
*
|
10
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
*
|
12
|
-
* Unless required by applicable law or agreed to in writing, software
|
13
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
*
|
16
|
-
* See the License for the specific language governing permissions and
|
17
|
-
* limitations under the License.
|
18
|
-
*
|
19
|
-
* While not a requirement of the license, if you do modify this file, we
|
20
|
-
* would appreciate hearing about it. Please email sqlany_interfaces@sybase.com
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*====================================================*/
|
1
|
+
/*====================================================
|
2
|
+
*
|
3
|
+
* Copyright 2008-2009 iAnywhere Solutions, Inc.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
*
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
*
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
*
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* While not a requirement of the license, if you do modify this file, we
|
20
|
+
* would appreciate hearing about it. Please email sqlany_interfaces@sybase.com
|
21
|
+
*
|
22
|
+
*
|
23
|
+
*====================================================*/
|
data/README
CHANGED
@@ -1,125 +1,126 @@
|
|
1
|
-
=SQL Anywhere ActiveRecord Driver
|
2
|
-
|
3
|
-
This is a SQL Anywhere driver for Ruby ActiveRecord. This driver requires the
|
4
|
-
native SQL Anywhere Ruby driver. To get the native driver, use:
|
5
|
-
|
6
|
-
gem install sqlanywhere
|
7
|
-
|
8
|
-
This driver is designed for use with ActiveRecord 2.0.2 and greater.
|
9
|
-
|
10
|
-
This driver is licensed under the Apache License, Version 2.
|
11
|
-
|
12
|
-
==Making a Connection
|
13
|
-
|
14
|
-
The following code is a sample database configuration object.
|
15
|
-
|
16
|
-
ActiveRecord::Base.configurations = {
|
17
|
-
'arunit' => {
|
18
|
-
:adapter => 'sqlanywhere',
|
19
|
-
:database => 'arunit',
|
20
|
-
:server => 'arunit',
|
21
|
-
:username => 'dba',
|
22
|
-
:password => 'sql',
|
23
|
-
:
|
24
|
-
:
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
dbinit -c
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
dbisql -c "eng=arunit;dbn=
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
#
|
95
|
-
#
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
1
|
+
=SQL Anywhere ActiveRecord Driver
|
2
|
+
|
3
|
+
This is a SQL Anywhere driver for Ruby ActiveRecord. This driver requires the
|
4
|
+
native SQL Anywhere Ruby driver. To get the native driver, use:
|
5
|
+
|
6
|
+
gem install sqlanywhere
|
7
|
+
|
8
|
+
This driver is designed for use with ActiveRecord 2.0.2 and greater.
|
9
|
+
|
10
|
+
This driver is licensed under the Apache License, Version 2.
|
11
|
+
|
12
|
+
==Making a Connection
|
13
|
+
|
14
|
+
The following code is a sample database configuration object.
|
15
|
+
|
16
|
+
ActiveRecord::Base.configurations = {
|
17
|
+
'arunit' => {
|
18
|
+
:adapter => 'sqlanywhere',
|
19
|
+
:database => 'arunit', #equivalent to the "DatabaseName" parameter
|
20
|
+
:server => 'arunit', #equivalent to the "ServerName" parameter
|
21
|
+
:username => 'dba', #equivalent to the "UserID" parameter
|
22
|
+
:password => 'sql', #equivalent to the "Password" parameter
|
23
|
+
:encoding => 'Windows-1252', #equivalent to the "CharSet" parameter
|
24
|
+
:commlinks => 'TCPIP()', #equivalent to the "Commlinks" parameter
|
25
|
+
:connection_name => 'Rails' #equivalent to the "ConnectionName" parameter
|
26
|
+
}
|
27
|
+
|
28
|
+
==Running the ActiveRecord Unit Test Suite
|
29
|
+
|
30
|
+
1. Open <tt><ACTIVERECORD_INSTALL_DIR>/rakefile</tt> and modify the line:
|
31
|
+
|
32
|
+
for adapter in %w( mysql postgresql sqlite sqlite3 firebird db2 oracle sybase openbase frontbase )
|
33
|
+
|
34
|
+
to include <tt>sqlanywhere</tt>. It should now look like:
|
35
|
+
|
36
|
+
for adapter in %w( mysql postgresql sqlite sqlite3 firebird db2 oracle sybase openbase frontbase sqlanywhere )
|
37
|
+
|
38
|
+
2. Create directory to hold the connection definition:
|
39
|
+
|
40
|
+
mkdir <ACTIVERECORD_INSTALL_DIR>/test/connections/native_sqlanywhere
|
41
|
+
|
42
|
+
3. Copy <tt>test/connection.rb</tt> into the newly created directory.
|
43
|
+
|
44
|
+
NOTE: If using ActiveRecord 2.0.2, change the second line of the file from:
|
45
|
+
|
46
|
+
require_dependency 'models/course'
|
47
|
+
|
48
|
+
to:
|
49
|
+
|
50
|
+
require_dependency 'fixtures/course'
|
51
|
+
|
52
|
+
4. Create the two test databases. These can be created in any directory.
|
53
|
+
|
54
|
+
dbinit -c arunit
|
55
|
+
dbinit -c arunit2
|
56
|
+
dbsrv11 arunit arunit2
|
57
|
+
|
58
|
+
<b>If the commands cannot be found, make sure you have set up the SQL Anywhere environment variables correctly.</b> For more information review the online documentation here[http://dcx.sybase.com/index.php#http%3A%2F%2Fdcx.sybase.com%2F1100en%2Fdbadmin_en11%2Fda-envvar-sect1-3672410.html].
|
59
|
+
|
60
|
+
5. If you are using ActiveRecord 2.0.2, you must load the test tables.
|
61
|
+
|
62
|
+
dbisql -c "eng=arunit;dbn=arunit;uid=dba;pwd=sql" sqlanywhere.sql
|
63
|
+
dbisql -c "eng=arunit;dbn=arunit2;uid=dba;pwd=sql" sqlanywhere2.sql
|
64
|
+
|
65
|
+
If you are using a newer version of ActiveRecord, this schema is automatically
|
66
|
+
migrated for you.
|
67
|
+
|
68
|
+
6. Run the unit test suite from the ActiveRecord install directory:
|
69
|
+
|
70
|
+
rake test_sqlanywhere
|
71
|
+
|
72
|
+
<b>If the migration tests fail, make sure you have set up the SQL Anywhere environment variables correctly.</b> For more information review the online documentation here[http://dcx.sybase.com/index.php#http%3A%2F%2Fdcx.sybase.com%2F1100en%2Fdbadmin_en11%2Fda-envvar-sect1-3672410.html].
|
73
|
+
|
74
|
+
==Explaination of Test Results
|
75
|
+
|
76
|
+
As of ActiveRecord 2.2.2., it is expected that 6 tests will fail. The failed tests, along with an explaination, are identified below:
|
77
|
+
|
78
|
+
1. (CalculationsTest) - test_should_sum_expression
|
79
|
+
|
80
|
+
Explaination: Appears to be an error in the test.
|
81
|
+
|
82
|
+
This tests checks the results of the following statement:
|
83
|
+
|
84
|
+
assert_equal '636', Account.sum("2 * credit_limit")
|
85
|
+
|
86
|
+
According to the ActiveRecord documentation, the summation of a column should return a value of the same type as the column. In this case, <tt>credit_limit</tt> is an integer, and so the result should be a number type, not a string.
|
87
|
+
|
88
|
+
2. (MigrationTest) - test_add_table_with_decimals
|
89
|
+
|
90
|
+
Explaination: Requires special case.
|
91
|
+
|
92
|
+
From the comments regarding this test:
|
93
|
+
|
94
|
+
# This one is fun. The 'value_of_e' field is defined as 'DECIMAL' with
|
95
|
+
# precision/scale explicitly left out. By the SQL standard, numbers
|
96
|
+
# assigned to this field should be truncated but that's seldom respected.
|
97
|
+
|
98
|
+
There are already three special cases of this test. SQL Anywhere would require another special case to pass this test.
|
99
|
+
|
100
|
+
3. (NamedScopeTest) - test_should_use_where_in_query_for_named_scope
|
101
|
+
|
102
|
+
Explaination: Appears to be an error in the test.
|
103
|
+
|
104
|
+
This test issues a query that returns two rows. Because there is no ORDER BY in the query, the order that that rows are returned in is non-deterministic. SQL Anywhere returns the correct rows, but in a different order.
|
105
|
+
|
106
|
+
4. (QueryCacheTest) - test_cache_does_not_wrap_string_results_in_arrays
|
107
|
+
|
108
|
+
Explaination: Appears to be an error in the test.
|
109
|
+
|
110
|
+
This tests checks that the cached value of the following query is a string:
|
111
|
+
|
112
|
+
SELECT count(*) AS count_all FROM tasks
|
113
|
+
|
114
|
+
However, SQL Anywhere treats the values of a <tt>COUNT(*)</tt> opration as a fixnum, not a string. It would appear that the real intent of this test is to test that the value is NOT an array, rather than testing that the value is a string.
|
115
|
+
|
116
|
+
5. (SchemaDumperTest) - test_schema_dump_includes_limit_constraint_for_integer_columns
|
117
|
+
|
118
|
+
Explaination: SQL Anywhere does not have a 'limitless' integer type.
|
119
|
+
|
120
|
+
Any integer type will be given an implicit limit when instantiated. It would be possible to use another type such as <tt>NUMERIC</tt> to mimic this type, however this seems like a bad idea.
|
121
|
+
|
122
|
+
6. (ValidationsTest) - test_validate_case_sensitive_uniqueness
|
123
|
+
|
124
|
+
Explaination: By default, SQL Anywhere is case insensitive.
|
125
|
+
|
126
|
+
If a case sensitive database is required (as in this test), ensure the database is created with the <tt>-c</tt> switch to make it case sensitive.
|