Ted,

Your first statement does not include the \\x in front of the literal, try :

INSERT INTO person (first name, last name, id) VALUES ('Ted', 'Petrosky', 
E'\\x021D57D63ED54328A5411B07442E262E')

See the PG doc for the binary data type: 
https://www.postgresql.org/docs/9.1/static/datatype-binary.html

I do not know how is interpreted the value without the \\x but is different and 
larger.

Maybe the \\x just trigger the encode function, I find it more compact and more 
similar to other engine syntax. FrontBase and MySQL uses X'someHex literal'

Samuel


> Le 28 juin 2016 à 09:52, Theodore Petrosky <[email protected]> a écrit :
> 
> 
> INSERT INTO person (firstname, lastname, id) VALUES ('Ted', 'Petrosky', 
> E'021D57D63ED54328A5411B07442E262E')
> 
> this is what shows up in the database:    
> \x3032314435374436334544353433323841353431314230373434324532363245
> 
> 
> INSERT INTO person (firstname, lastname, id) VALUES ('Ted', 'Petrosky', 
> decode(E'F84B2A6880C948F4959EDB5FCF5347FE', 'hex'))
> 
> this is what shows up in the database:     \xf84b2a6880c948f4959edb5fcf5347fe
> 
> 
> so, it looks like the full decode statement is necessary.
> 
> 
> Ted
> 
> 
>> On Jun 28, 2016, at 8:32 AM, Samuel Pelletier <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Ted,
>> 
>> They are probably 10 of other variations of this code but I do not think 
>> there is any best way, the data needs to be converted to hex for the SQL.
>> 
>> I'm sot sure if the "decode(E'...')" part is required, based on pg doc, byte 
>> constant can be written as "E'\\xDEADBEEF' <smb://xDEADBEEF'>" so 
>> "E'\\x <smb://x>" + UUIDUtilities.generateAsNSData()._hexString() + "'" 
>> should also works.
>> 
>> Samuel
>> 
>> 
>>> Le 28 juin 2016 à 06:09, Theodore Petrosky <[email protected] 
>>> <mailto:[email protected]>> a écrit :
>>> 
>>> I am starting a new little project and I want to use the UUIDs. My 
>>> migrations usually start up by inserting a few entities by executing some 
>>> SQL. 
>>> 
>>> The id column is not a ‘real’ postgresql UUID, it is a 128 bit bytea 
>>> column. I figured out a way to use UUIDUtilities.generateAsNSData use that 
>>> value to insert my entity.
>>> 
>>> String theSQL = "INSERT INTO person (active, firstname, creationdate, id) 
>>> VALUES " +
>>>     "(true, 'Ted', now(), decode(E'" + 
>>> UUIDUtilities.generateAsNSData()._hexString() + "', 'hex'))";
>>>             
>>> ERXJDBCUtilities.executeUpdate(database.adaptorChannel(),  theSQL);
>>> 
>>> It works, but is there a better way or more correct way to create the bytea 
>>> attribute to insert.
>>> 
>>> 
>>> 
>>> Ted
>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      ([email protected] 
>>> <mailto:[email protected]>)
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com 
>>> <https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com>
>>> 
>>> This email sent to [email protected] <mailto:[email protected]>
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to