Home » Modeling » EMF » [CDO] Support for big strings
[CDO] Support for big strings [message #1230603] |
Sun, 12 January 2014 14:33 |
Scott Dybiec Messages: 148 Registered: July 2009 |
Senior Member |
|
|
My model contains an String EAttribute that stores a logo image in a
Base64 string. When I attempt to save my model into an H2-based CDO
repository, I get the following error.
H2 supports VARCHAR up to 2GB, so I think that I just need to change the
DB schema.
Is there anyway to tell CDO that the DB schema it generates should
allocate an extra long VARCHAR column for an EAttribute.
org.eclipse.emf.cdo.util.CommitException: Rollback in DBStore:
org.eclipse.net4j.db.DBException: org.h2.jdbc.JdbcSQLException: Value
too long for column "LOGO VARCHAR(32672)":
"'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBQgMFBofBgYHCg0dHhwHBwgMFB0jHAcJCw8aLCgfCQsTHCI3NCcMEhwgKTQ5LhkgJyw0PTwzJC4wMTgyNDL/2wBDAQk...
(421928)"; SQL statement:
INSERT INTO REGATTA(CDO_ID, CDO_VERSION, CDO_BRANCH, CDO_CREATED,
CDO_REVISED, CDO_RESOURCE, CDO_CONTAINER, CDO_FEATURE, ABBREVIATEDNAME,
DURATION, REGATTAHOMEPAGE, REGISTEREDUSROWING, RESULTSURL,
LIFECYCLESTATE, INVITEONLY, ALLOWPREVIEW, LTWTNAMES, SCULLNAMES,
MASTERSINFO, NORMALIZEHANDICAPS, LOCORGANIZATION, LOCORGURL,
LOCBILLINGADDRESS, VENUE, MEDALSET, DESCRIPTION, OTHERCATEGORIES,
ENTRYWINDOWOPENDATE, ENTRYCLOSEDATE, ENTRIESLOCKEDDATE, ENTRYPACKETURL,
WAIVERURL, ENTRYOVERNIGHTADDRESS, CONTACTNAME, CONTACTEMAIL,
CONTACTPHONE, FEEDUE, BASEFEE, CHECKPAYABLETO, CUSTOMPROGRESSIONSYSTEM,
NAME, STARTDATE, PRIVATE, ROUNDHANDICAPTOTENTHS, HOSTORGANIZATIONNAME,
HOSTORGANIZATIONHYPERLINK, HOSTORGANIZATIONHYPERLINKDESC,
TEAMPOINTSCOMPUTATIONCLASSNAME, MAXENTRIESPERPACKET, SCRATCHDEADLINE,
FEECAP, HANDICAPHOMOGENOUSRACES, LOGO, RMLVERSION, RMLRELEASE,
RMLMODIFICATION, SINGLEENTRYCOST, DOUBLEENTRYCOST,
PAIRWITHOUTCOXSWAINENTRYCOST, PAIRWITHCOXSWAINENTRYCOST,
FOURWITHCOXSWAINENTRYCOST, FOURWITHOUTCOXSWAINENTRYCOST, QUADENTRYCOST,
EIGHTENTRYCOST, OCTUPLEENTRYCOST, RACEDESIGNTYPE,
RACERESULTSREPORTCOLLECTION, PRERACEREPORTCOLLECTION, REGATTAID,
CDO_SET_LTWTNAMES, CDO_SET_MASTERSINFO, EXPERIENCECATEGORIES,
GENDERCATEGORIES, SHELLCLASSCATEGORIES, AFFILIATIONCATEGORIES,
AGECATEGORIES, WEIGHTCATEGORIES, RACELENGTHCATEGORIES, EVENT,
ORGANIZATION, DAILYSCHEDULE, IMPORTEXCEPTION, COMPUTER,
MISSINGBOWNUMBERS) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-168]
at
org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalBranchingClassMapping.writeValues(HorizontalBranchingClassMapping.java:581)
at
org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalBranchingClassMapping.writeRevision(HorizontalBranchingClassMapping.java:751)
at
org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writeRevision(DBStoreAccessor.java:588)
at
org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writeRevisions(DBStoreAccessor.java:568)
at
org.eclipse.emf.cdo.spi.server.StoreAccessor.doWrite(StoreAccessor.java:98)
at
org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:150)
at
org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:612)
at
org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:46)
at
org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
at
org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
at
org.eclipse.emf.cdo.internal.server.Repository.commitUnsynced(Repository.java:993)
at
org.eclipse.emf.cdo.internal.server.Repository.commit(Repository.java:986)
at
org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:315)
at
org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:100)
at
org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:110)
at
org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:87)
at
org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:92)
at org.eclipse.net4j.signal.Signal.doInput(Signal.java:328)
at
org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:65)
at
org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:66)
at org.eclipse.net4j.signal.Signal.runSync(Signal.java:253)
at org.eclipse.net4j.signal.Signal.run(Signal.java:149)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
|
|
|
Re: [CDO] Support for big strings [message #1230610 is a reply to message #1230603] |
Sun, 12 January 2014 15:03 |
Scott Dybiec Messages: 148 Registered: July 2009 |
Senior Member |
|
|
Sorry for the premature question. My Google searches didn't turn
anything up, so I started browsing the Wiki site and found the answer here:
http://wiki.eclipse.org/Influence_DB_Store_mapping_by_using_annotations
Scott
On 1/12/2014 9:33 AM, scott@xxxxxxxx wrote:
>
> My model contains an String EAttribute that stores a logo image in a
> Base64 string. When I attempt to save my model into an H2-based CDO
> repository, I get the following error.
>
> H2 supports VARCHAR up to 2GB, so I think that I just need to change the
> DB schema.
>
> Is there anyway to tell CDO that the DB schema it generates should
> allocate an extra long VARCHAR column for an EAttribute.
>
>
> org.eclipse.emf.cdo.util.CommitException: Rollback in DBStore:
> org.eclipse.net4j.db.DBException: org.h2.jdbc.JdbcSQLException: Value
> too long for column "LOGO VARCHAR(32672)":
> "'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBQgMFBofBgYHCg0dHhwHBwgMFB0jHAcJCw8aLCgfCQsTHCI3NCcMEhwgKTQ5LhkgJyw0PTwzJC4wMTgyNDL/2wBDAQk...
> (421928)"; SQL statement:
> INSERT INTO REGATTA(CDO_ID, CDO_VERSION, CDO_BRANCH, CDO_CREATED,
> CDO_REVISED, CDO_RESOURCE, CDO_CONTAINER, CDO_FEATURE, ABBREVIATEDNAME,
> DURATION, REGATTAHOMEPAGE, REGISTEREDUSROWING, RESULTSURL,
> LIFECYCLESTATE, INVITEONLY, ALLOWPREVIEW, LTWTNAMES, SCULLNAMES,
> MASTERSINFO, NORMALIZEHANDICAPS, LOCORGANIZATION, LOCORGURL,
> LOCBILLINGADDRESS, VENUE, MEDALSET, DESCRIPTION, OTHERCATEGORIES,
> ENTRYWINDOWOPENDATE, ENTRYCLOSEDATE, ENTRIESLOCKEDDATE, ENTRYPACKETURL,
> WAIVERURL, ENTRYOVERNIGHTADDRESS, CONTACTNAME, CONTACTEMAIL,
> CONTACTPHONE, FEEDUE, BASEFEE, CHECKPAYABLETO, CUSTOMPROGRESSIONSYSTEM,
> NAME, STARTDATE, PRIVATE, ROUNDHANDICAPTOTENTHS, HOSTORGANIZATIONNAME,
> HOSTORGANIZATIONHYPERLINK, HOSTORGANIZATIONHYPERLINKDESC,
> TEAMPOINTSCOMPUTATIONCLASSNAME, MAXENTRIESPERPACKET, SCRATCHDEADLINE,
> FEECAP, HANDICAPHOMOGENOUSRACES, LOGO, RMLVERSION, RMLRELEASE,
> RMLMODIFICATION, SINGLEENTRYCOST, DOUBLEENTRYCOST,
> PAIRWITHOUTCOXSWAINENTRYCOST, PAIRWITHCOXSWAINENTRYCOST,
> FOURWITHCOXSWAINENTRYCOST, FOURWITHOUTCOXSWAINENTRYCOST, QUADENTRYCOST,
> EIGHTENTRYCOST, OCTUPLEENTRYCOST, RACEDESIGNTYPE,
> RACERESULTSREPORTCOLLECTION, PRERACEREPORTCOLLECTION, REGATTAID,
> CDO_SET_LTWTNAMES, CDO_SET_MASTERSINFO, EXPERIENCECATEGORIES,
> GENDERCATEGORIES, SHELLCLASSCATEGORIES, AFFILIATIONCATEGORIES,
> AGECATEGORIES, WEIGHTCATEGORIES, RACELENGTHCATEGORIES, EVENT,
> ORGANIZATION, DAILYSCHEDULE, IMPORTEXCEPTION, COMPUTER,
> MISSINGBOWNUMBERS) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-168]
> at
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalBranchingClassMapping.writeValues(HorizontalBranchingClassMapping.java:581)
>
> at
> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalBranchingClassMapping.writeRevision(HorizontalBranchingClassMapping.java:751)
>
> at
> org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writeRevision(DBStoreAccessor.java:588)
>
> at
> org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writeRevisions(DBStoreAccessor.java:568)
>
> at
> org.eclipse.emf.cdo.spi.server.StoreAccessor.doWrite(StoreAccessor.java:98)
> at
> org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:150)
>
> at
> org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:612)
>
> at
> org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:46)
>
> at
> org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
>
> at
> org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
>
> at
> org.eclipse.emf.cdo.internal.server.Repository.commitUnsynced(Repository.java:993)
>
> at
> org.eclipse.emf.cdo.internal.server.Repository.commit(Repository.java:986)
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:315)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:100)
>
> at
> org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:110)
>
> at
> org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:87)
>
> at
> org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:92)
>
> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:328)
> at
> org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:65)
>
> at
> org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:66)
>
> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:253)
> at org.eclipse.net4j.signal.Signal.run(Signal.java:149)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>
> at java.lang.Thread.run(Thread.java:744)
|
|
|
Re: [CDO] Support for big strings [message #1230624 is a reply to message #1230610] |
Sun, 12 January 2014 15:56 |
|
Am 12.01.2014 16:03, schrieb scott@xxxxxxxx:
> Sorry for the premature question. My Google searches didn't turn anything up, so I started browsing the Wiki site and
> found the answer here:
>
> http://wiki.eclipse.org/Influence_DB_Store_mapping_by_using_annotations
Good, but I'd recommend you consider to change your model to use CDOBlob or CDOClob as attribute types. You'd need to
load the Etypes.ecore model from the org.eclipse.emf.cdo plugin to be able to do that. The advantage would be that you
wouldn't load the image data along with all the other features of that class. Instead you get a streaming API similar to
IFile.getContents(). Here's an example:
http://git.eclipse.org/c/cdo/cdo.git/tree/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/LobTest.java
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
>
> Scott
>
> On 1/12/2014 9:33 AM, scott@xxxxxxxx wrote:
>>
>> My model contains an String EAttribute that stores a logo image in a
>> Base64 string. When I attempt to save my model into an H2-based CDO
>> repository, I get the following error.
>>
>> H2 supports VARCHAR up to 2GB, so I think that I just need to change the
>> DB schema.
>>
>> Is there anyway to tell CDO that the DB schema it generates should
>> allocate an extra long VARCHAR column for an EAttribute.
>>
>>
>> org.eclipse.emf.cdo.util.CommitException: Rollback in DBStore:
>> org.eclipse.net4j.db.DBException: org.h2.jdbc.JdbcSQLException: Value
>> too long for column "LOGO VARCHAR(32672)":
>> "'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBQgMFBofBgYHCg0dHhwHBwgMFB0jHAcJCw8aLCgfCQsTHCI3NCcMEhwgKTQ5LhkgJyw0PTwzJC4wMTgyNDL/2wBDAQk...
>>
>> (421928)"; SQL statement:
>> INSERT INTO REGATTA(CDO_ID, CDO_VERSION, CDO_BRANCH, CDO_CREATED,
>> CDO_REVISED, CDO_RESOURCE, CDO_CONTAINER, CDO_FEATURE, ABBREVIATEDNAME,
>> DURATION, REGATTAHOMEPAGE, REGISTEREDUSROWING, RESULTSURL,
>> LIFECYCLESTATE, INVITEONLY, ALLOWPREVIEW, LTWTNAMES, SCULLNAMES,
>> MASTERSINFO, NORMALIZEHANDICAPS, LOCORGANIZATION, LOCORGURL,
>> LOCBILLINGADDRESS, VENUE, MEDALSET, DESCRIPTION, OTHERCATEGORIES,
>> ENTRYWINDOWOPENDATE, ENTRYCLOSEDATE, ENTRIESLOCKEDDATE, ENTRYPACKETURL,
>> WAIVERURL, ENTRYOVERNIGHTADDRESS, CONTACTNAME, CONTACTEMAIL,
>> CONTACTPHONE, FEEDUE, BASEFEE, CHECKPAYABLETO, CUSTOMPROGRESSIONSYSTEM,
>> NAME, STARTDATE, PRIVATE, ROUNDHANDICAPTOTENTHS, HOSTORGANIZATIONNAME,
>> HOSTORGANIZATIONHYPERLINK, HOSTORGANIZATIONHYPERLINKDESC,
>> TEAMPOINTSCOMPUTATIONCLASSNAME, MAXENTRIESPERPACKET, SCRATCHDEADLINE,
>> FEECAP, HANDICAPHOMOGENOUSRACES, LOGO, RMLVERSION, RMLRELEASE,
>> RMLMODIFICATION, SINGLEENTRYCOST, DOUBLEENTRYCOST,
>> PAIRWITHOUTCOXSWAINENTRYCOST, PAIRWITHCOXSWAINENTRYCOST,
>> FOURWITHCOXSWAINENTRYCOST, FOURWITHOUTCOXSWAINENTRYCOST, QUADENTRYCOST,
>> EIGHTENTRYCOST, OCTUPLEENTRYCOST, RACEDESIGNTYPE,
>> RACERESULTSREPORTCOLLECTION, PRERACEREPORTCOLLECTION, REGATTAID,
>> CDO_SET_LTWTNAMES, CDO_SET_MASTERSINFO, EXPERIENCECATEGORIES,
>> GENDERCATEGORIES, SHELLCLASSCATEGORIES, AFFILIATIONCATEGORIES,
>> AGECATEGORIES, WEIGHTCATEGORIES, RACELENGTHCATEGORIES, EVENT,
>> ORGANIZATION, DAILYSCHEDULE, IMPORTEXCEPTION, COMPUTER,
>> MISSINGBOWNUMBERS) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
>> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
>> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
>> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-168]
>> at
>> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalBranchingClassMapping.writeValues(HorizontalBranchingClassMapping.java:581)
>>
>>
>> at
>> org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalBranchingClassMapping.writeRevision(HorizontalBranchingClassMapping.java:751)
>>
>>
>> at
>> org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writeRevision(DBStoreAccessor.java:588)
>>
>> at
>> org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writeRevisions(DBStoreAccessor.java:568)
>>
>> at
>> org.eclipse.emf.cdo.spi.server.StoreAccessor.doWrite(StoreAccessor.java:98)
>> at
>> org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:150)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:612)
>>
>> at
>> org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:46)
>>
>> at
>> org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
>>
>> at
>> org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.Repository.commitUnsynced(Repository.java:993)
>>
>> at
>> org.eclipse.emf.cdo.internal.server.Repository.commit(Repository.java:986)
>> at
>> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:315)
>>
>>
>> at
>> org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:100)
>>
>>
>> at
>> org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:110)
>>
>>
>> at
>> org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:87)
>>
>> at
>> org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:92)
>>
>> at org.eclipse.net4j.signal.Signal.doInput(Signal.java:328)
>> at
>> org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:65)
>>
>> at
>> org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:66)
>>
>> at org.eclipse.net4j.signal.Signal.runSync(Signal.java:253)
>> at org.eclipse.net4j.signal.Signal.run(Signal.java:149)
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>
>> at java.lang.Thread.run(Thread.java:744)
>
Cheers
/Eike
----
http://www.esc-net.de
http://thegordian.blogspot.com
http://twitter.com/eikestepper
|
|
|
Goto Forum:
Current Time: Thu Sep 26 01:28:42 GMT 2024
Powered by FUDForum. Page generated in 0.04819 seconds
|