-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpacking_lang_java.html
136 lines (136 loc) · 8.63 KB
/
packing_lang_java.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>WiredTiger: Packing and Unpacking Data in Java</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="wiredtiger.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><a href="http://wiredtiger.com/"><img alt="Logo" src="LogoFinal-header.png" alt="WiredTiger" /></a></td>
<td style="padding-left: 0.5em;">
<div id="projectname">
 <span id="projectnumber">Version 2.9.2</span>
</div>
<div id="projectbrief"><!-- 2.9.2 --></div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="banner">
<a href="https://github.com/wiredtiger/wiredtiger">Fork me on GitHub</a>
<a class="last" href="http://groups.google.com/group/wiredtiger-users">Join my user group</a>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
<li><a href="community.html"><span>Community</span></a></li>
<li><a href="license.html"><span>License</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('packing_lang_java.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">Packing and Unpacking Data in Java </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>WiredTiger's data packing uses format strings similar to those specified in the Python struct module: <a href="http://docs.python.org/library/struct">http://docs.python.org/library/struct</a></p>
<p>The first character of the format string can be used to indicate the byte order, size and alignment of the packed data, according to the following table:</p>
<table class="doxtable">
<tr>
<th>Character</th><th>Byte order</th><th>Size</th><th>Alignment </th></tr>
<tr>
<td><code>.</code></td><td>big-endian</td><td>packed</td><td>none </td></tr>
<tr>
<td><code>></code></td><td>big-endian</td><td>standard</td><td>none </td></tr>
<tr>
<td><code><</code></td><td>little-endian</td><td>standard</td><td>none </td></tr>
<tr>
<td><code>@</code></td><td>native</td><td>native</td><td>native </td></tr>
</table>
<p>If the first character is not one of these, '.' (big-endian, packed) is assumed: it naturally sorts in lexicographic order, and the packed format uses variable-sized encoding of values to reduce the data size.</p>
<p>Note: <b> little-endian format</b> not yet supported in WiredTiger. Only the default big-endian, packed format is currently supported.</p>
<p>The remaining characters in the format string specify the type of each field to be packed into or unpacked from a byte array. See <a class="el" href="schema_lang_java.html#schema_column_types_lang_java">Column types</a> for the list of supported types.</p>
<p>In Java, data is packed and unpacked using cursor put* and get* operations, for example: </p><div class="fragment"><div class="line"> <span class="comment">/* Insert the records into the table. */</span></div>
<div class="line"> cursor = session.<a class="code" href="struct_w_t___s_e_s_s_i_o_n.html#afb5b4a69c2c5cafe411b2b04fdc1c75d">open_cursor</a>(<span class="stringliteral">"table:poptable"</span>, null, <span class="stringliteral">"append"</span>);</div>
<div class="line"> <span class="keywordflow">for</span> (PopRecord p : popData) {</div>
<div class="line"> cursor.putValueString(p.country);</div>
<div class="line"> cursor.putValueShort(p.year);</div>
<div class="line"> cursor.putValueLong(p.population);</div>
<div class="line"> ret = cursor.<a class="code" href="struct_w_t___c_u_r_s_o_r.html#aac90d9fbcc031570f924db55f8a1cee3">insert</a>();</div>
<div class="line"> }</div>
<div class="line"> ret = cursor.<a class="code" href="struct_w_t___c_u_r_s_o_r.html#aeea071f192cab12245a50fbe71c3460b">close</a>();</div>
<div class="line"></div>
<div class="line"> <span class="comment">/* Update records in the table. */</span></div>
<div class="line"> cursor = session.<a class="code" href="struct_w_t___s_e_s_s_i_o_n.html#afb5b4a69c2c5cafe411b2b04fdc1c75d">open_cursor</a>(<span class="stringliteral">"table:poptable"</span>, null, null);</div>
<div class="line"> <span class="keywordflow">while</span> ((ret = cursor.<a class="code" href="struct_w_t___c_u_r_s_o_r.html#a0503f16bd8f3d05aa3552f229b3a8e1b">next</a>()) == 0) {</div>
<div class="line"> recno = cursor.getKeyRecord();</div>
<div class="line"> country = cursor.getValueString();</div>
<div class="line"> year = cursor.getValueShort();</div>
<div class="line"> population = cursor.getValueLong();</div>
<div class="line"> cursor.putValueString(country);</div>
<div class="line"> cursor.putValueShort(year);</div>
<div class="line"> cursor.putValueLong(population + 1);</div>
<div class="line"> }</div>
<div class="line"> ret = cursor.<a class="code" href="struct_w_t___c_u_r_s_o_r.html#aeea071f192cab12245a50fbe71c3460b">close</a>();</div>
<div class="line"></div>
<div class="line"> <span class="comment">/* List the records in the table. */</span></div>
<div class="line"> cursor = session.<a class="code" href="struct_w_t___s_e_s_s_i_o_n.html#afb5b4a69c2c5cafe411b2b04fdc1c75d">open_cursor</a>(<span class="stringliteral">"table:poptable"</span>, null, null);</div>
<div class="line"> <span class="keywordflow">while</span> ((ret = cursor.<a class="code" href="struct_w_t___c_u_r_s_o_r.html#a0503f16bd8f3d05aa3552f229b3a8e1b">next</a>()) == 0) {</div>
<div class="line"> recno = cursor.getKeyRecord();</div>
<div class="line"> country = cursor.getValueString();</div>
<div class="line"> year = cursor.getValueShort();</div>
<div class="line"> population = cursor.getValueLong();</div>
<div class="line"> System.out.print(<span class="stringliteral">"ID "</span> + recno);</div>
<div class="line"> System.out.println(<span class="stringliteral">": country "</span> + country + <span class="stringliteral">", year "</span> + year +</div>
<div class="line"> <span class="stringliteral">", population "</span> + population);</div>
<div class="line"> }</div>
<div class="line"> ret = cursor.<a class="code" href="struct_w_t___c_u_r_s_o_r.html#aeea071f192cab12245a50fbe71c3460b">close</a>();</div>
</div><!-- fragment --></div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="index.html">Reference Guide</a></li><li class="navelem"><a class="el" href="programming_lang_java.html">Writing WiredTiger applications in Java</a></li><li class="navelem"><a class="el" href="schema_lang_java.html">Schema, Columns, Column Groups, Indices and Projections in Java</a></li>
<li class="footer">Copyright (c) 2008-2016 MongoDB, Inc. All rights reserved. Contact <a href="mailto:[email protected]">[email protected]</a> for more information.</li>
</ul>
</div>
</body>
</html>