Skip to main content



      Home
Home » Modeling » EMF » [CDO] Support for big strings
[CDO] Support for big strings [message #1230603] Sun, 12 January 2014 09:33 Go to next message
Eclipse UserFriend
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 Go to previous messageGo to next message
Eclipse UserFriend
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 Go to previous message
Eclipse UserFriend
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)
>
Previous Topic:New Ecore Tools
Next Topic:Why its happening? "Internal error occurred during Validation Job. Property is invalid."
Goto Forum:
  


Current Time: Sun Jul 27 00:35:21 EDT 2025

Powered by FUDForum. Page generated in 0.04391 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top