wiki:FAQ

Version 102 (modified by Dimitar Misev, 12 years ago) ( diff )

Rasdaman FAQ

Here you can find answers to some of the most frequently asked questions about rasdaman. If you have a question not answered on this page, you can ask it on the MailingLists. You may want to consult these sources of information in addition:


Contents

  1. Download
    1. Cannot download from git repository
  2. Installation
    1. Using automake I get an error message "directory should not contain /"
    2. ./configure complains that some further packages are required during installation
    3. ./configure complains about missing curses
    4. configure complains that some required files, like install-sh, cannot be found
    5. make complains about missing Makefiles
    6. I get C++ compilation errors.
    7. On a 64bit architecture I get linkage errors (e.g., when linking GDAL with the rasdaman driver) like "relocation R_X86_64_32 against `.bss' can not be used"
    8. I get Java compilation errors.
  3. PostgreSQL
    1. I get a link error, function ECPGget_connection cannot be found
    2. I want to use a different version of PostgreSQL. Is that possible?
    3. When running the script "create_db.sh", I get ''AdminIf related error
    4. I get "wrong connect string" error when first running rasdl
    5. Undefined reference to 'ECPGconnect' …
  4. Rasql queries
    1. I get syntax error unexpected name when using a floating point number
    2. My query which uses log doesn't work
    3. My insert query produces error 821 (cell type mismatch)
    4. How do I position a replacement array when updating a collection?
    5. How does the Storage Layout Language work?
    6. "Error: 100 Exception: Internal error: DL parse error."
    7. How can I import large images that don't fit into main memory?
  5. rasdaview
    1. rasdaview returns an error "no suitable servers started", although I have servers available
  6. Rasj and Java
    1. Overflow when unsigned bytes are retrieved with rasj
    2. I get class version incompatibility error messages
  7. WCPS / petascope
    1. Mixing trimming and slicing in WCPS fails
  8. Data formats
    1. HDF4 is said to be supported, but rasdaman reports an error
    2. NetCDF is said to be supported, but rasdaman reports an error
    3. The NetCDF generated by rasdaman is not recognized by NetCDF tools
  9. Helping
    1. I want to submit a patch, how do I do this?
    2. How to report a bug/problem
    3. Why do I have to accept the Rasdaman Contribution Agreement when providing a patch?


Download

Cannot download from git repository

  • Probably your provider does not allow port 9418 which git uses. See the download page for alternatives.

Installation

Using automake I get an error message "directory should not contain /"

  • Probably you have an outdated automake version installed, we have seen such problems with 1.7.9. Upgrade to at least 1.10.1.

./configure complains that some further packages are required during installation

./configure complains about missing curses

… although ncurses is there.

  • You have run into a bug in the ncurses package; in /usr/lib, manually create symlinks libcurses.a → libncurses.a and libcurses.so → libncurses.so.

configure complains that some required files, like install-sh, cannot be found

  • retry ./configure after running
    $ automake --add-missing
    

make complains about missing Makefiles

…such as in the time/ directory, and issues error messages like "No rule to make target ../time/libtime.a', needed by rasserver'. Stop.".

  • retry ./configure after running
    $ autoreconf
    $ automake
    

I get C++ compilation errors.

  • Make sure you use the proper compiler version (see RequiredPackages). GNU folks have a relaxed view on backwards compatibility even with minor release changes, and we have experienced problems related to this in the past.

On a 64bit architecture I get linkage errors (e.g., when linking GDAL with the rasdaman driver) like "relocation R_X86_64_32 against `.bss' can not be used"

  • Make sure you use the proper compiler version (see RequiredPackages). GNU folks have a relaxed view on backwards compatibility even with minor release changes, and we have experienced problems related to this in the past.
  • retry ./configure with these extra flags:
    $ ./configure CFLAGS=-fPIC CXXFLAGS=-fPIC LDFLAGS=-fPIC ...other options...
    $ make install
    

I get Java compilation errors.

  • If, during make, you get errors like this:
    javac -d bin src/org/odmg/*.java src/rasj/*.java src/rasj/global/*.java src/rasj/clientcommhttp/*.java src/rasj/odmg/*.java src/rasj/rnp/*.java
    Exception in thread "main" java.lang.NoSuchFieldError: java/util/zip/Inflater.strm
    ...many more lines...
    

then make sure you use the SUN Java 6 SDK and not the IBM one (which seems to come preinstalled on some distributions, and is buggy).

PostgreSQL

I get a link error, function ECPGget_connection cannot be found

  • What appears to have happened is that in PostgreSQL 8.3.0 they removed ECPGget_connection and they have reintroduced it by 8.3.7. So PostgreSQL versions 8.3.0 up to (but excluding) 8.3.7 cannot be used.

I want to use a different version of PostgreSQL. Is that possible?

  • You need to include a different JDBC postgresql driver (as a JAR) in the libraries folder and update the Makefile as needed. Then you can try out another PostgreSQL version, it may or may not work. Let us know your experiences to update this information!

When running the script "create_db.sh", I get ''AdminIf related error

…more specifically, Creating base RASBASE…Warning/error in AdminIf Connect: SQLSTATE: 08001 SQLCODE: -402

There are several possible reasons:

  1. Execution permissions. Run the script as the user owning the postgresql processes. Use only that user for further work with rasdaman (see Installation Guide). If you use Ubuntu and installed postgres with apt-get, then logging in as user postgres is an option; I personally like to have a separate user rasdaman for this purpose where I also can set paths etc. to the executables once and for all. (The postgres db does not allow full access to rasdaman tools, because they do not run under the administrative user that launched the db server process.)

Alternatively, make sure that the operating system user under which you run create_db.sh can be authenticated via the ident method, which can be set in pg_hba.conf. E.g. if user is "rasdaman", then in pg_hba.conf you should have at least:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         rasdaman                          ident
  1. Blocked incoming connections. Another cause of the problem might be that postgres does not allow incoming connections. If you have Postgres v8 or more recent, modify file "postgresl.conf" and set (uncomment) the option
    listen_addresses = 'localhost'
    
  2. TCP-IP connection. If you have Postgres v7, set (uncomment) the following option:
    tcpip_socket = true
    

I get "wrong connect string" error when first running rasdl

When I first try to run rasdl (or the rasdaman server, for that matter) against PostgreSQL after installation, the log says "server ok" but "wrong connect string"

  • There are several possible reasons:
    1. Port: Running a database cluster on a separate port requires proper setting of environment variable PGPORT to allow for communication between rasdaman and PostgreSQL. (thanks to Mario Uhlig!)
    2. Socket directory: using '/var/lock/postgresql' as socket directory makes rasdl fail for a reason still to be found. Switching back to the default socket dir '/var/run/postgresql' resolves the issue. (thanks to Alexander Herzig!)

Undefined reference to 'ECPGconnect' …

In Ubuntu you may get this error:

adminif.cc:(.text+0x4b): undefined reference to `ECPGconnect'
adminif.cc:(.text+0x71): undefined reference to `ECPGtrans'
adminif.cc:(.text+0x80): undefined reference to `ECPGdisconnect'
../reladminif/libreladminif.a(databaseif.o): In function `DatabaseIf::disconnect()':

mdddomaintype.cc:(.text+0x720): undefined reference to `ECPGdo'
collect2: ld returned 1 exit status
make[2]: *** [rasserver] Error 1
make[2]: Leaving directory `/home/rasdaman/rasdaman/server'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/rasdaman/rasdaman/server'
make: *** [install-recursive] Error 1

To fix it, set the libs explicitly at configure, e.g.

./configure --prefix=/home/rasdaman/install LIBS='-lecpg -lgdal1.7.0'

Rasql queries

I get syntax error unexpected name when using a floating point number

  • Floating point numbers must have a leading zero, for example; "0.9" instead of ".9".

My query which uses log doesn't work

for c in (rgb) return encode(log(c.0), "jpeg")
  • The log function needs positive numbers as arguments, and will return -Infinity if the argument is 0. You need to make sure that the input does not contain any zeros. You can check that using the query
    for c in (rgb) return count(c.0 = 0)
    
    Solution (depending on your overall formula): Add 1 to the input:
    for c in (rgb) return encode(log(c.0+1), "jpeg")
    

My insert query produces error 821 (cell type mismatch)

… although I provide a TIFF file with correct pixel type:

insert into FloatCollection values inv_tiff( $1 )
  • You need to provide an explicit cast (see section 9.8 in the Rasql Guide); a correct phrasing of this query is:
    insert into FloatCollection values (float) inv_tiff( $1 )
    

How do I position a replacement array when updating a collection?

  • In an update statement, the slice coordinates are specified with the set operator, however the 2D position of the replacement array is defined by the spatial domain of the array, which by default is [0:width,0:height], and can be modified with the shift operator or the —mdddomain option of rasql. For example a query to update the 3D collection C with a 2D image of size 255x210 that should replace the region at interval [10, 100:355, 100:310]:
    update C set [10, *:*, *:*] assign shift(inv_tiff($1), [100, 100])
    
    See wiki:PartialUpdates for more details.

Note that the shift vector applies to the second and third dimension (slice defined in the first dimension).

How does the Storage Layout Language work?

"Error: 100 Exception: Internal error: DL parse error."

What does this error returned by rasql mean?

  • You have likely inserted types to the database which names start with a rasdl reserved word. This is a known issue, see #121 for a workaround.

How can I import large images that don't fit into main memory?

rasdaview

rasdaview returns an error "no suitable servers started", although I have servers available

  • For historical reasons, rasdaview needs an RPC type rasserver running. See the Installation Guide for what this means and how such a server can be started.

Rasj and Java

Overflow when unsigned bytes are retrieved with rasj

If I send the query select max_cells(c.0) from rgb as c via command line (rasql utility), then the result is 255 as expected; if I send this query via RasJ, then the result is -1.

  • Java does not have an 8-bit unsigned data type. Byte is a signed 8 bit and hence 255 is represented as -1. What you can do is to transform bytes to char by adding 28 if the 27 bit is set. Tested, works. Alternatively, cast to a larger data type on server side:
    select (long) max_cells(c.0) from rgb as c
    

I get class version incompatibility error messages

I get weird error messages from the Java runtime system which seems to hint at class version incompatibilities, such as "Class version error" or "Class not found".

  • There might be a conflict with the locally provided libraries, to be found at directory $PETASCOPE/lib. Check them, and if you find a mismatch then remove them and use the resp. libraries of your local installation instead. Alternatively, consider upgrading your Java SDK to version 1.6.

WCPS / petascope

Mixing trimming and slicing in WCPS fails

  • A workaround until this ticket is fixed is to separate the two operations, e.g. instead of
    c[t(5),x(0:20),y(0:20)]
    
    use
    (c[x(0:20),y(0:20)])[t(5)]
    

Data formats

HDF4 is said to be supported, but rasdaman reports an error

…when trying to use hdf() or inv_hdf() - what can I do?

  • HDF4 needs to be compiled in explicitly. Re-generate rasdaman saying
    $ make clean
    $ autoreconf
    $ ./configure --with-hdf4 ...other options...
    $ make
    $ make install
    

NetCDF is said to be supported, but rasdaman reports an error

…when trying to use netcdf() or inv_netcdf() - what can I do?

  • NetCDF needs to be compiled in explicitly. Re-generate rasdaman saying
    $ make clean
    $ autoreconf
    $ ./configure --with-netcdf ...other options...
    $ make
    $ make install
    
    Supported NetCDF library version is 4.0+. It provides netcdf4 (including HDF, classic, and 64) and netcdf3 (as the API is backwards compatible). Limitations: only atomic cell types, but no struct types are supported at this moment; and metadata are not preserved (they have to be stored separately in PostgreSQL tables)

The NetCDF generated by rasdaman is not recognized by NetCDF tools

  • THe issue probably has to do with the pixel type. The 'char' type in rasdaman corresponds with the 'byte' type in netcdf. In netcdf, the 'char' type is used for the 8-bit characters intended for representing text. Therefore, the netcdf(char) result is in binary instead of ASCII. However, the netcdf(char) result is validated against the compliance checker. Note: netcdf(float) works fine.

Helping

I want to submit a patch, how do I do this?

  1. Set your credentials (ie, your name, YOUR_FULL_NAME, and email address, EMAIL):
    $ git config user.name "YOUR_FULL_NAME"
    $ git config user.email EMAIL
    
  2. When you commit your changes to your local copy put a meaningful message:
    $ git commit file1 file2 ... -m "commit message"
    
    It's best to always specify exactly the files that you want to commit, instead of committing everything with the -a option, so that you avoid submitting unnecessary changes in your patch.
  3. Then you can make the patch, e.g:
    $ git format-patch HEAD~1 
    
  4. Finally you can submit the generated patch to the rasdaman patchmanager

Important: avoid submitting generated files like configure, Makefile.in, etc. in your patch, unless the corresponding source has been really modified.

How to report a bug/problem

It's best if you report bugs by filling a new ticket. It's always good to include as much as possible information of the setup in which the bug occurred, so we can reproduce it. In general you should include:

  • gcc —version
  • OS and architecture
  • how was rasdaman configured/compiled
  • versions of PostgreSQL's or any other libraries that may be relevant
  • relevant parts of the server log files

Why do I have to accept the Rasdaman Contribution Agreement when providing a patch?

Because for legal reasons the project must have a trackable code provenance.

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.