diff --git a/meson.build b/meson.build index b59855a712538143a20cb5c55292790450125ccc..74234a1fc6bb3e73bb9893c6609f648de05b3513 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ # -*- mode: conf -*- project('zero-pinyin-service', ['c', 'cpp'], - version: '0.2.0', + version: '0.2.1', license: 'GPL', default_options: [ 'warning_level=2', diff --git a/zero-pinyin-service.c b/zero-pinyin-service.c index ddc17a6d7993304906579c3c7f4cabc1aba89f02..17545320eeac201de4a6f46337706870325bce87 100644 --- a/zero-pinyin-service.c +++ b/zero-pinyin-service.c @@ -85,9 +85,10 @@ build_sql_for_n_pinyin (GList* pylist, const guint n, const guint limit) { + /* always keep one space after current term */ GString* sql = NULL; gchar* where_clause = NULL; - sql = g_string_new ("SELECT user_freq, phrase, freq FROM ("); + sql = g_string_new (NULL); g_string_append_printf ( sql, "SELECT 0 AS user_freq, phrase, freq FROM " "maindb.py_phrase_%u WHERE ", n - 1); @@ -95,13 +96,13 @@ build_sql_for_n_pinyin (GList* pylist, g_assert_nonnull (where_clause); g_message ("where_clause=%s", where_clause); sql = g_string_append (sql, where_clause); - sql = g_string_append (sql, " UNION "); + sql = g_string_append (sql, "UNION "); g_string_append_printf ( sql, "SELECT user_freq, phrase, freq FROM " "userdb.py_phrase_%u WHERE ", n - 1); sql = g_string_append (sql, where_clause); - sql = g_string_append (sql, ") GROUP BY phrase ORDER BY user_freq DESC, freq DESC "); - g_string_append_printf (sql, "LIMIT %u", limit); + sql = g_string_append (sql, "GROUP BY phrase ORDER BY user_freq DESC, freq DESC "); + g_string_append_printf (sql, "LIMIT %u;", limit); char* result = sql->str; g_free (where_clause); g_string_free (sql, FALSE); @@ -149,13 +150,13 @@ get_candidates_for_n_pinyin (sqlite3* db, const char* unused; Candidate* c = NULL; r = sqlite3_prepare_v2 (db, sql, -1, &stmt, &unused); - g_free (sql); g_assert_nonnull (unused); g_assert_cmpstr (unused, ==, ""); if (strlen (unused)) { g_warning ("part of sql is unused \"%s\" length=%zu", unused, strlen (unused)); } + g_free (sql); while (TRUE) { r = sqlite3_step (stmt); if (r == SQLITE_DONE) {