| Line 74... |
Line 74... |
| 74 |
_expand_buf(0, buflen0 + strlen(colname) + 10);
|
74 |
_expand_buf(0, buflen0 + strlen(colname) + 10);
|
| 75 |
buflen0 += sprintf(g_sql_buf[0]+buflen0, ",[%s] int", colname);
|
75 |
buflen0 += sprintf(g_sql_buf[0]+buflen0, ",[%s] int", colname);
|
| 76 |
|
76 |
|
| 77 |
_expand_buf(1, buflen1 + colname_len + 10);
|
77 |
_expand_buf(1, buflen1 + colname_len + 10);
|
| 78 |
buflen1 += sprintf(g_sql_buf[1]+buflen1, ",[%s]", colname);
|
78 |
buflen1 += sprintf(g_sql_buf[1]+buflen1, ",[%s]", colname);
|
| 79 |
} else if (strstr(type, "char") || strcmp(type, "text")) {
|
79 |
} else if (strstr(type, "char") || strcmp(type, "text") == 0) {
|
| 80 |
_expand_buf(0, buflen0 + strlen(colname) + 10);
|
80 |
_expand_buf(0, buflen0 + strlen(colname) + 10);
|
| 81 |
buflen0 += sprintf(g_sql_buf[0]+buflen0, ",[%s] int", colname);
|
81 |
buflen0 += sprintf(g_sql_buf[0]+buflen0, ",[%s] int", colname);
|
| 82 |
|
82 |
|
| 83 |
_expand_buf(1, buflen1 + colname_len + iname_len + 20);
|
83 |
_expand_buf(1, buflen1 + colname_len + iname_len + 20);
|
| 84 |
buflen1 += sprintf(g_sql_buf[1]+buflen1, ",[%s].[factor %s].level",
|
84 |
buflen1 += sprintf(g_sql_buf[1]+buflen1, ",[%s].[factor %s].level",
|
| Line 86... |
Line 86... |
| 86 |
|
86 |
|
| 87 |
/* create factor table */
|
87 |
/* create factor table */
|
| 88 |
_create_factor_table2(iname, "factor", colname);
|
88 |
_create_factor_table2(iname, "factor", colname);
|
| 89 |
|
89 |
|
| 90 |
/* insert factor levels and labels */
|
90 |
/* insert factor levels and labels */
|
| 91 |
sprintf(g_sql_buf[2], "insert into [%s].[factor %s] (label, level)"
|
91 |
sprintf(g_sql_buf[2], "insert into [%s].[factor %s] (label)"
|
| 92 |
" select distinct [%s], cumsum(1) from [@@import@@].[%s]",
|
92 |
" select distinct [%s] from [@@import@@].[%s]",
|
| 93 |
iname, colname, colname, tblname);
|
93 |
iname, colname, colname, tblname);
|
| 94 |
res = _sqlite_exec(g_sql_buf[2]);
|
94 |
res = _sqlite_exec(g_sql_buf[2]);
|
| 95 |
_sqlite_error(res);
|
95 |
_sqlite_error(res);
|
| 96 |
|
96 |
|
| - |
|
97 |
_init_sqlite_function_accumulator();
|
| - |
|
98 |
sprintf(g_sql_buf[2], "update [%s].[factor %s] set level=cumsum(1)",
|
| - |
|
99 |
iname, colname);
|
| - |
|
100 |
res = _sqlite_exec(g_sql_buf[2]);
|
| - |
|
101 |
_sqlite_error(res);
|
| - |
|
102 |
|
| 97 |
/* add join clause to from clause */
|
103 |
/* add join clause to from clause */
|
| 98 |
_expand_buf(3, buflen3 + colname_len * 3 + iname_len * 2 + strlen(tblname) + 32);
|
104 |
_expand_buf(3, buflen3 + colname_len * 3 + iname_len * 2 + strlen(tblname) + 32);
|
| 99 |
buflen3 += sprintf(g_sql_buf[3] + buflen3, " join [%s].[factor %s] "
|
105 |
buflen3 += sprintf(g_sql_buf[3] + buflen3, " join [%s].[factor %s] "
|
| 100 |
"on [@@import@@].[%s].[%s] = [%s].[factor %s].label",
|
106 |
"on [@@import@@].[%s].[%s] = [%s].[factor %s].label",
|
| 101 |
iname, colname, tblname, colname, iname, colname);
|
107 |
iname, colname, tblname, colname, iname, colname);
|
| 102 |
} else if (strcmp(type, "blob") || !*type) {
|
108 |
} else if (strcmp(type, "blob") == 0 || !*type) {
|
| 103 |
/* not supported */
|
109 |
/* not supported */
|
| 104 |
Rprintf("Warning: skipping column %s because it is a blob.\n", colname);
|
110 |
warning("skipping column %s because it is a blob.\n", colname);
|
| 105 |
} else { /* numeric / float / real / ... */
|
111 |
} else { /* numeric / float / real / ... */
|
| 106 |
_expand_buf(0, buflen0 + strlen(colname) + 10);
|
112 |
_expand_buf(0, buflen0 + strlen(colname) + 10);
|
| 107 |
buflen0 += sprintf(g_sql_buf[0]+buflen0, ",[%s] double", colname);
|
113 |
buflen0 += sprintf(g_sql_buf[0]+buflen0, ",[%s] double", colname);
|
| 108 |
|
114 |
|
| 109 |
_expand_buf(1, buflen1 + colname_len + 10);
|
115 |
_expand_buf(1, buflen1 + colname_len + 10);
|
| Line 120... |
Line 126... |
| 120 |
if (_sqlite_error(res)) {
|
126 |
if (_sqlite_error(res)) {
|
| 121 |
sdf_detach_sdf(mkString(iname));
|
127 |
sdf_detach_sdf(mkString(iname));
|
| 122 |
goto sdf_import_sqlite_table__out;
|
128 |
goto sdf_import_sqlite_table__out;
|
| 123 |
}
|
129 |
}
|
| 124 |
|
130 |
|
| - |
|
131 |
/* execute insert-select script */
|
| - |
|
132 |
_init_sqlite_function_accumulator();
|
| 125 |
_expand_buf(0, buflen1 + buflen3 + iname_len + 32 );
|
133 |
_expand_buf(0, buflen1 + buflen3 + iname_len + 32 );
|
| 126 |
sprintf(g_sql_buf[0], "insert into [%s].sdf_data %s %s", iname, g_sql_buf[1], g_sql_buf[3]);
|
134 |
sprintf(g_sql_buf[0], "insert into [%s].sdf_data %s %s", iname, g_sql_buf[1], g_sql_buf[3]);
|
| 127 |
res = _sqlite_exec(g_sql_buf[0]);
|
135 |
res = _sqlite_exec(g_sql_buf[0]);
|
| 128 |
if (_sqlite_error(res)) {
|
136 |
if (_sqlite_error(res)) {
|
| 129 |
sdf_detach_sdf(mkString(iname));
|
137 |
sdf_detach_sdf(mkString(iname));
|