Bug #2675
closedcolumn "infinity" does not exist
0%
Description
When uploading certain xml files to metacat via the ecogrid, I get a message that says:
<error>
ERROR: column "infinity" does not exist
</error>
I'm not sure why it's looking for this column. You can reproduce it from kepler by trying to upload the Current Time actor to the library. Here is a full error from kepler:
Here's the full error:
[java] got lsid client
[java] checking if lsid urn:lsid:kepler-project.org:actor:2:1 is already registered
[java] EcogridUtils: The time to create instance is =========== 0
[java] is registered? false
[java] Creating transport KAR file at /Users/berkley/.kepler/cache/tmp/tmp.kar
[java] done writing KAR file to /Users/berkley/.kepler/cache/tmp/tmp.kar
[java] uploading kar file with id urn:lsid:kepler-project.org:kar:7:1
[java] session id: 4EB5CA645287A4E729BCD30072EBCABA
[java] EcogridUtils: The time to create instance is =========== 0
[java] uploaded kar file with id urn:lsid:kepler-project.org:kar:7:1
[java] uploading actor metadata with id urn:lsid:kepler-project.org:actor:2:1
[java] session id: 4EB5CA645287A4E729BCD30072EBCABA
[java] EcogridUtils: The time to create instance is =========== 0
[java] repository: name=keplerRepository, repository=localhost:8080, username=uid=kepler,o=unaffiliated,dc=ecoinformatics,dc=org
[java] org.kepler.objectmanager.repository.RepositoryException: java.rmi.RemoteException:
[java] <error>
[java] ERROR: column "infinity" does not exist
[java] </error>
[java] at org.kepler.objectmanager.repository.EcogridRepository.put(EcogridRepository.java:176)
[java] at org.kepler.gui.UploadToRepository.upload(UploadToRepository.java:273)
[java] at org.kepler.gui.UploadToRepository.access$000(UploadToRepository.java:75)
[java] at org.kepler.gui.UploadToRepository$UploadSwingWorker.construct(UploadToRepository.java:449)
[java] at util.SwingWorker$2.run(SwingWorker.java:122)
[java] at java.lang.Thread.run(Thread.java:613)
Updated by Jing Tao almost 18 years ago
This bug was caused by "infinity" is one of reserved word in Java Double class. In xml_nodes table, we have a new attribute to indicate if the node value is a number or not. The testing method we are using is to use the node value to generate Double object. If the generation is successfully, we will treat this node value as number in sql. If the generation gets an exception, we will treat this node value as string. If a node value has "infinity" (Current Time actor has this value in moml file), the generation for this node value will be successfull since "infinity" is a reserved word in Double class. So we will treat "infinity" as a number in sql command. But sql command don't consider "infinity" as a number. So the inserting will fail and we will get the error message.
In previous code, we only consider "NaN" as a reserved word. Now we add "infinity" and this fixed the bug.