Home » Modeling » EMF » [CDO] Support for big strings
[CDO] Support for big strings [message #1230603] |
Sun, 12 January 2014 09:33  |
Eclipse User |
|
|
|
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 10:03   |
Eclipse User |
|
|
|
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 10:56  |
Eclipse User |
|
|
|
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)
>
|
|
|
Goto Forum:
Current Time: Sun Jul 27 00:35:21 EDT 2025
Powered by FUDForum. Page generated in 0.04391 seconds
|