The R Project SVN R-packages

Rev

Rev 3419 | Rev 3684 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3419 Rev 3473
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));