cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ivan Chang <ivan.ch...@medigy.com>
Subject Re: Querying columns return strange characters
Date Mon, 15 Jun 2009 16:40:58 GMT
Thank you so much for the tip, it works!

On Mon, Jun 15, 2009 at 12:34 PM, Jonathan Ellis <jbellis@gmail.com> wrote:

> byte[].toString is not the inverse of String.getBytes; you need to use
> new String(byte[]) for that.
>
> fyi, the characters you see are
>
> [: this is an array
> B: of bytes
> dcb03b: memory address
>
> this will let you recognize such output in the future :)
>
> -Jonathan
>
> On Mon, Jun 15, 2009 at 11:26 AM, Ivan Chang<ivan.chang@medigy.com> wrote:
> > I modified some test cases in the Cassandra distribution.  Specifically
> in
> > the unit test package I modified ServerTest.java, basically just tried to
> > insert some columns and retrieve them.  Here's part of the code:
> >
> >         RowMutation rm = new RowMutation("Table1", "partner0");
> >         ColumnFamily cf = new ColumnFamily("Standard1", "Standard");
> >         long now = Calendar.getInstance().getTimeInMillis();
> >         System.out.println(now);
> >         cf.addColumn("firstname", "John".getBytes(), now);
> >         cf.addColumn("lastname", "Doe".getBytes(), now);
> >         rm.add(cf);
> >         try {
> >             rm.apply();
> >         } catch (Exception e) {
> >         }
> >
> >         Table table = Table.open("Table1");
> >
> >         try {
> >             Row result = table.getRow("partner0", "Standard1");
> >             System.out.println(result.toString());
> >             ColumnFamily cres = result.getColumnFamily("Standard1");
> >             Map cols = cres.getColumns();
> >             System.out.println(cols.size());
> >             Set c = cols.keySet();
> >             Iterator it = c.iterator();
> >             while (it.hasNext()) {
> >                 String cn = (String) it.next();
> >                 System.out.println(cn);
> >                 //Byt/eArrayOutputStream baos = new
> ByteArrayOutputStream();
> >                 /DataOutputStream dos = new DataOutputStream(baos);
> >
> //cres.getColumnSerializer().serialize(cres.getColumn(cn),
> > dos);
> >                 //dos.flush();
> >                 //System.out.println(dos.size());
> >                 //System.out.println(dos.toString());
> >
> System.out.println(cres.getColumn(cn).value().toString());
> >             }
> >
> > //System.out.println(cres.getColumn("firstname").value().toString());
> >         } catch (Exception e) {
> >             System.out.println(e.getMessage());
> >         }
> >
> > In summary, it's a very simple code that inserts a row (key "partner0")
> with
> > two columns: firstname (value "John"), lastname (value "Doe") to the
> > Standard1 column family.  When I execute the test, I got the following
> > output:
> >
> >    [testng] 1245082940509
> >    [testng] Row(partner0 [ColumnFamily(Standard1
> > [firstname:false:4@1245082940509, lastname:false:3@1245082940509]))]
> >    [testng] 2
> >    [testng] lastname
> >    [testng] [B@dcb03b
> >    [testng] firstname
> >    [testng] [B@b60b93
> >
> > Everything looks fine, the columns were inserted.  However, the retrieved
> > values were [B@dcb03b for lastname and [B@b60b93 for firstname, instead
> of
> > what's inserted by the code ("Doe", "John").
> >
> > Anyone could give a clue as to why this happened?
> >
> > Thanks!
> >
> > Ivan
> >
>

Mime
View raw message