[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] [PATCH] Resurrect Glorp
From: |
Paolo Bonzini |
Subject: |
[Help-smalltalk] [PATCH] Resurrect Glorp |
Date: |
Tue, 14 Aug 2007 13:37:10 +0200 |
User-agent: |
Thunderbird 2.0.0.6 (Macintosh/20070728) |
Ditto. The tests take too much for putting them into 'make check'.
Maybe later.
Found out that #isBits had been deleted by mistake.
Paolo
* looking for address@hidden/smalltalk--devo--2.2--patch-521 to compare with
* comparing to address@hidden/smalltalk--devo--2.2--patch-521
M packages/glorp/package.xml
M packages/glorp/Glorp.st
M packages/glorp/GlorpMySQL.st
M packages/glorp/GlorpPort.st
M packages/glorp/GlorpTest.st
M packages/mysql/MySQL.st
M kernel/Behavior.st
* modified files
--- orig/kernel/Behavior.st
+++ mod/kernel/Behavior.st
@@ -829,6 +829,10 @@ scopeHas: name ifTrue: aBlock
!Behavior methodsFor: 'testing the form of the instances'!
+isBits
+ ^self shape notNil and: [ self isPointers not ]
+!
+
isPointers
"Answer whether the instance variables of the receiver's instances
are objects"
--- orig/packages/glorp/Glorp.st
+++ mod/packages/glorp/Glorp.st
@@ -1,5 +1,3 @@
-Namespace current: Smalltalk!
-
Smalltalk.Object subclass: #GlorpHelper
instanceVariableNames: ''
classVariableNames: ''
@@ -20,10 +18,6 @@ Instance Variables:
'!
-
-Smalltalk addSubspace: #Glorp!
-Namespace current: Glorp!
-
Smalltalk.Object subclass: #CachePolicy
instanceVariableNames: 'expiryAction numberOfElements '
classVariableNames: ''
@@ -11353,11 +11347,6 @@ atIndex: anInteger
"For compatibility with Dolphin and VA data base rows."
^self at: anInteger.! !
-!Smalltalk.Collection methodsFor: 'streams'!
-
-writeStream
- ^AddingWriteStream on: self.! !
-
!Smalltalk.Time methodsFor: 'printing'!
glorpPadToTwoDigits: anInteger
@@ -11426,7 +11415,7 @@ needsWork: aString
todo
"marker"! !
-!Smalltalk.GlorpHelper methodsFor: 'glorp'!
+!GlorpHelper class methodsFor: 'glorp'!
glorpBaseExpressionClass
"This is to work around Dolphin's obnoxious insistence on absolute
prerequisite enforcement. We have to define extension methods on blocks for
asGlorpExpression. These need to create a messageArchiver. Those have to be in
the dialect-specific prereq, but since that gets loaded before anything else it
can't reference Glorp classes. So have it send a message instead"
@@ -11476,14 +11465,14 @@ glorpIsCollection
glorpPrintSQLOn: aStream
aStream nextPut: $(.
- GlorpHelper do: [:each | each glorpPrintSQLOn: aStream]
+ Glorp.GlorpHelper do: [:each | each glorpPrintSQLOn: aStream]
for: self
separatedBy: [aStream nextPutAll: ', '].
aStream nextPut: $)!
glorpPrintSQLOn: aStream for: aType
aStream nextPut: $(.
- GlorpHelper
+ Glorp.GlorpHelper
do: [:each | aType print: each on: aStream]
for: self
separatedBy: [aStream nextPutAll: ', '].
@@ -11500,5 +11489,3 @@ glorpRegisterCollectionInternalsIn: anOb
ifFalse: [anObjectTransaction register: (self
instVarAt: index)]]! !
Glorp.FunctionExpression initialize!
-
-Namespace current: Smalltalk!
--- orig/packages/glorp/GlorpMySQL.st
+++ mod/packages/glorp/GlorpMySQL.st
@@ -1,8 +1,6 @@
'From VisualWorks®, Pre-Release 7 of June 3, 2002 on August 23, 2002 at
9:50:56 pm'!
"Package GlorpDatabase(0.2.11,aknight)="!
-Namespace current: Glorp!
-
DatabasePlatform subclass: #MySQLPlatform
instanceVariableNames: ''
classVariableNames: 'NewTableType'
@@ -141,6 +139,10 @@ dropConstraint: aConstraint
dropTableNamed: aString
self executeSQLString: 'DROP TABLE IF EXISTS ' , aString!
+dropTableNamed: aString ifAbsent: aBlock
+ self doCommand: [self executeSQLString: 'DROP TABLE ' , aString]
+ ifError: aBlock!
+
executeSQLString: aString
| statement result resultSet rows row numColumns |
statement := connection createStatement.
@@ -256,8 +258,8 @@ printTimestamp: aTimestamp for: aType
convertBooleanToDBBoolean: aBoolean for: aType
aBoolean isNil ifTrue: [^nil].
- aBoolean isInteger ifTrue: [ ^aBoolean ].
- ^aBoolean ifTrue: [1] ifFalse: [0]!
+ aBoolean isInteger ifTrue: [ ^aBoolean ~= 0].
+ ^aBoolean!
convertDBBooleanToBoolean: aBoolean for: aType
aBoolean isInteger ifFalse: [^aBoolean].
--- orig/packages/glorp/GlorpPort.st
+++ mod/packages/glorp/GlorpPort.st
@@ -1,6 +1,3 @@
-Smalltalk addSubspace: #Glorp!
-Namespace current: Glorp!
-
nil subclass: #ProtoObject
instanceVariableNames: ''
classVariableNames: ''
@@ -64,16 +61,16 @@ isBlock
!BlockClosure methodsFor: 'glorp'!
asGlorpExpression
- ^self asGlorpExpressionOn: GlorpHelper glorpBaseExpressionClass new.!
+ ^self asGlorpExpressionOn: Glorp.GlorpHelper glorpBaseExpressionClass new.!
asGlorpExpressionForDescriptor: aDescriptor
| base |
- base := GlorpHelper glorpBaseExpressionClass new.
+ base := Glorp.GlorpHelper glorpBaseExpressionClass new.
base descriptor: aDescriptor.
^self asGlorpExpressionOn: base.!
asGlorpExpressionOn: anExpression
- ^(self value: GlorpHelper glorpMessageArchiverClass new)
asGlorpExpressionOn: anExpression!
+ ^(self value: Glorp.GlorpHelper glorpMessageArchiverClass new)
asGlorpExpressionOn: anExpression!
isBlock
^true! !
@@ -118,3 +115,14 @@ glorpPrintSQLOn: stream
next: (self second < 10 ifTrue: [ 1 ] ifFalse: [ 0 ]) put: $0;
print: self second;
nextPut: $'! !
+!Smalltalk.OrderedCollection methodsFor: 'testing'!
+
+writeStream
+ "For our purposes, these aren't collections, but rather a simple database
type"
+ ^Glorp.AddingWriteStream on: self.! !
+
+!Smalltalk.Collection methodsFor: 'streams'!
+
+writeStream
+ ^Glorp.AddingWriteStream on: self.! !
+
--- orig/packages/glorp/GlorpTest.st
+++ mod/packages/glorp/GlorpTest.st
@@ -1,5 +1,4 @@
Smalltalk addSubspace: #GlorpTestNamespace!
-Namespace current: Glorp!
TestCase subclass: #GlorpTestCase
instanceVariableNames: ''
@@ -2224,8 +2223,8 @@ defaultMysqlLogin
^(Login new)
database: MySQLPlatform new;
- username: '';
- password: '';
+ username: 'root';
+ password: 'root';
connectString: 'test'.! !
!GlorpDatabaseLoginResource class methodsFor: 'LICENSE'!
@@ -7014,10 +7013,12 @@ helpTestValue: anObject
self helpTestValue: anObject
compareModelWith: [:read :original |
read notNil and: [
- (original class isKindOf: Float)
+ (original isKindOf: Float)
or: [ original class == Dialect doublePrecisionFloatClass
or: [ read test = original ]]]]
- compareWith: [:read :original | read = original].!
+ compareWith: [:read :original |
+ (original isKindOf: Float)
+ or: [ read = original ] ].!
helpTestValue: anObject compareWith: aBlock
self
@@ -8004,6 +8005,9 @@ testCreateTable
| selectResult |
[[self accessor beginTransaction.
self accessor
+ dropTableNamed: 'GLORP_TEST_CREATE'
+ ifAbsent: [:ex | ex return: nil].
+ self accessor
executeSQLString: 'CREATE TABLE GLORP_TEST_CREATE (ID varchar(4))']
ensure: [self accessor commitTransaction].
selectResult := self accessor
@@ -10726,5 +10730,3 @@ resources
unfinished
"indicates an unfinished test"! !
-
-Namespace current: Smalltalk!
--- orig/packages/glorp/package.xml
+++ mod/packages/glorp/package.xml
@@ -2,10 +2,17 @@
<name>Glorp</name>
<prereq>MySQL</prereq>
<prereq>SUnit</prereq>
+
+ <namespace>Glorp</namespace>
+
<filein>GlorpPort.st</filein>
<filein>Glorp.st</filein>
<filein>GlorpMySQL.st</filein>
- <filein>GlorpTest.st</filein>
+
+ <test>
+ <sunit>Glorp.GlorpTestCase*</sunit>
+ <filein>GlorpTest.st</filein>
+ </test>
<file>GlorpPort.st</file>
<file>Glorp.st</file>
--- orig/packages/mysql/MySQL.st
+++ mod/packages/mysql/MySQL.st
@@ -868,10 +868,8 @@ on: aConnection
!JdmServerVersion methodsFor: 'reading'!
readFrom: aStream
- fileFormat := Integer readFrom: aStream.
- aStream next.
- release := Integer readFrom: aStream.
- aStream next.
+ fileFormat := aStream upTo: $..
+ release := aStream upTo: $..
version := Integer readFrom: aStream.
! !
@@ -1076,17 +1074,23 @@ JdmColumn class
!JdmColumn class methodsFor: 'constants-types'!
+bitType
+ ^16!
+
blobType
^252!
datetimeType
^12!
+newDateType
+ ^14!
+
dateType
^10!
oldDecimalType
- ^246!
+ ^0!
decimalType
^246!
@@ -1142,6 +1146,9 @@ tinyBlobType
tinyType
^1!
+varCharType
+ ^15!
+
varStringType
^253!
@@ -1266,6 +1273,11 @@ withNumColumns: anInteger
!JdmFieldConverter methodsFor: 'converting-smalltalk'!
+writeBoolean: aBoolean on: aStream
+ aBoolean
+ ifTrue: [ aStream nextPutAll: 'True' ]
+ ifFalse: [ aStream nextPutAll: 'False' ]!
+
writeDate: aDate on: aStream
JdmTimestampWriter printMysqlDate: aDate on: aStream!
@@ -1351,6 +1363,10 @@ convertToMysql: aValue on: aStream
!JdmFieldConverter methodsFor: 'converting'!
+toBoolean: aString column: aColumn
+ aString isNil ifTrue: [ ^nil ].
+ ^aString first value = 1!
+
toByteArray: aString column: aColumn
^aColumn isBinary
ifTrue: [aString isNil
@@ -1409,6 +1425,7 @@ toTimestamp: aString column: aColumn
buildConversionMap
converterSelectors := IdentityDictionary new.
converterSelectors
+ at: #Boolean put: #writeBoolean:on:;
at: #FloatD put: #writeDouble:on:;
at: #FloatE put: #writeFloat:on:;
at: #Time put: #writeQuotedTime:on:;
@@ -1419,6 +1436,7 @@ buildConversionMap
buildTypeMap
types := Dictionary new.
types
+ at: JdmColumn bitType put: #toBoolean:column:;
at: JdmColumn tinyType put: #toInteger:column:;
at: JdmColumn shortType put: #toInteger:column:;
at: JdmColumn longType put: #toInteger:column:;
@@ -1428,6 +1446,7 @@ buildTypeMap
at: JdmColumn doubleType put: #toDouble:column:;
at: JdmColumn oldDecimalType put: #toDouble:column:;
at: JdmColumn decimalType put: #toDouble:column:;
+ at: JdmColumn newDateType put: #toDate:column:;
at: JdmColumn dateType put: #toDate:column:;
at: JdmColumn datetimeType put: #toDateTime:column:;
at: JdmColumn timeType put: #toTime:column:;
@@ -1438,6 +1457,7 @@ buildTypeMap
at: JdmColumn mediumBlobType put: #toByteArray:column:;
at: JdmColumn longBlobType put: #toByteArray:column:;
at: JdmColumn blobType put: #toByteArray:column:;
+ at: JdmColumn varCharType put: #toString:column:;
at: JdmColumn varStringType put: #toString:column:;
at: JdmColumn stringType put: #toString:column:! !
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Help-smalltalk] [PATCH] Resurrect Glorp,
Paolo Bonzini <=