struct hash *jkSorting(struct sqlConnection *conn, char *table)
/* Grab contents of bed table into chrom-hashed range lists, 
 * using slSort() to sort by start; then merge ranges and 
 * convert to chrom-hashed rbTrees with normal rbTreeAdd. */
{
char *query = makeQuery(table, FALSE);
struct sqlResult *sr = NULL;
struct hash *chromTrees = NULL;
int startMs = 0, endMs = 0, totalMs = 0;

sqlUpdate(conn, "reset query cache");
startMs = clock1000();
sr = sqlGetResult(conn, query);
endMs = clock1000();
verbose(1, "jkSorting: Took %dms to do plain query.\n", endMs - startMs);
printf("%d\t", endMs - startMs);
totalMs += (endMs - startMs);

startMs = clock1000();
chromTrees = resultsToTrees(sr, TRUE);
endMs = clock1000();
verbose(1, "jkSorting: Took %dms to build, sort, merge, and convert.\n",
       endMs - startMs);
printf("%d\t", endMs - startMs);
totalMs += (endMs - startMs);

verbose(1, "jkSorting: Took %dms total.\n\n", totalMs);
printf("%d\t", totalMs);
freeMem(query);
sqlFreeResult(&sr);
return chromTrees;
}
struct hash *rbMerging(struct sqlConnection *conn, char *table)
/* Grab contents of bed table ordered by chrom but not sorted, 
 * then convert to chrom-hashed rbmTrees to handle merging of 
 * overlapping ranges. */
{
char *query = makeQuery(table, FALSE);
struct sqlResult *sr = NULL;
struct hash *chromTrees = NULL;
int startMs = 0, endMs = 0, totalMs = 0;

sqlUpdate(conn, "reset query cache");
startMs = clock1000();
sr = sqlGetResult(conn, query);
endMs = clock1000();
verbose(1, "rbMerging: Took %dms to do plain query.\n", endMs - startMs);
printf("%d\t", endMs - startMs);
totalMs += (endMs - startMs);

startMs = clock1000();
chromTrees = resultsToMergedTrees(sr);
endMs = clock1000();
verbose(1, "rbMerging: Took %dms to make merged trees.\n", endMs - startMs);
printf("%d\t", endMs - startMs);
totalMs += (endMs - startMs);

verbose(1, "rbMerging: Took %dms total.\n\n", totalMs);
printf("%d\n", totalMs);
freeMem(query);
sqlFreeResult(&sr);
return chromTrees;
}
    int reap(OperationContext* opCtx) override {
        auto const coord = mongo::repl::ReplicationCoordinator::get(opCtx);

        Handler handler(opCtx, *_collection);
        if (!handler.initialize()) {
            return 0;
        }

        AutoGetCollection autoColl(
            opCtx, NamespaceString::kSessionTransactionsTableNamespace, MODE_IS);

        // Only start reaping if the shard or config server node is currently the primary
        if (!coord->canAcceptWritesForDatabase(
                opCtx, NamespaceString::kSessionTransactionsTableNamespace.db())) {
            return 0;
        }

        DBDirectClient client(opCtx);

        auto query = makeQuery(opCtx->getServiceContext()->getFastClockSource()->now());
        auto cursor = client.query(
            NamespaceString::kSessionTransactionsTableNamespace, query, 0, 0, &kIdProjection);

        while (cursor->more()) {
            auto transactionSession = SessionsCollectionFetchResultIndividualResult::parse(
                "TransactionSession"_sd, cursor->next());

            handler.handleLsid(transactionSession.get_id());
        }

        // Before the handler goes out of scope, flush its last batch to disk and collect stats.
        return handler.finalize();
    }
Exemplo n.º 4
0
int GenericQuery::
makeQuery (ExprTree *&tree)
{
	MyString req;
	int status = makeQuery(req);
	if (status != Q_OK) return status;

	// If there are no constraints, then we match everything.
	if (req.empty()) req = "TRUE";

	// parse constraints and insert into query ad
	if (ParseClassAdRvalExpr (req.Value(), tree) > 0) return Q_PARSE_ERROR;

	return Q_OK;
}
Exemplo n.º 5
0
//-------------------------------------------------------------
bool MainData::checkUser()
{
    settings_data* sd=MainData::Instance()->getSettingsData();
    QSqlQuery query;
    QString q_str="select `professor_admin`,`professor_id` from `professor` where `professor_login`='"+sd->username;
    q_str+="' and `professor_pass`='"+sd->password+"'";
    bool made=false;
    query=makeQuery(q_str,made);
    if(made)
    {
        QVariant adm = query.value(0);
        sd->isAdmin=adm.toBool();
        sd->professor_id=query.value(1).toInt();
        return true;
    }
    else
        return false;
}
Exemplo n.º 6
0
YY_ACTION(void) yy_1_suffix(char *yytext, int yyleng)
{
  yyprintf((stderr, "do yy_1_suffix\n"));
   push(makeQuery(pop())); ;
}
 void ExplanationsFixture::bqtest(const String& queryText, Collection<int32_t> expDocNrs)
 {
     bqtest(makeQuery(queryText), expDocNrs);
 }
 QueryPtr ExplanationsFixture::reqB(const String& q)
 {
     return reqB(makeQuery(q));
 }
Exemplo n.º 9
0
YY_ACTION(void) yy_1_suffix(GREG *G, char *yytext, int yyleng, yythunk *thunk, YY_XTYPE YY_XVAR)
{
  yyprintf((stderr, "do yy_1_suffix\n"));
   push(makeQuery(pop())); ;
}
/**
 * マクロから呼び出されるエントリポイント。
 * @param [in] text 検索文字列
 * @return 戻り値に意味はない
 */
EXPORT int search(const char *text) {
	if (!IsHidemaruMail()) {
#ifndef _DEBUG
		MessageBox(NULL, "このマクロは秀丸からは起動できません。", NULL, MB_OK);
		return 0;
#endif
	}
	HWND hwnd = reinterpret_cast<HWND>(MainWnd());

	if (hwnd == NULL) {
		MessageBox(NULL, "秀丸メール本体が起動してなければなりません。", NULL, MB_OK);
		return 0;
	}

	if (strlen(text) != 0) {
		std::string oneLine = text;
		size_t pos;
		if ((pos = oneLine.find("\r\n")) != std::string.npos) {
			oneLine[pos] = '\0';
		}
		if (oneLine.find(' ') != std::string.npos) {
			selectedText = "\"";
			selectedText += YenEncode(oneLine.c_str());
			selectedText += "\"";
		} else {
			selectedText = YenEncode(oneLine.c_str());
		}
	}

// SetQuietMode を使用すると、検索結果ウィンドウが手前に来ない
//	SetQuietMode(1);
	int rc = (int)DialogBox(hInst, (LPCTSTR)IDD_HIDEMARUMAILSEARCH_DIALOG, hwnd, (DLGPROC)DialogProc);
//	SetQuietMode(0);

	if (rc == IDOK) {
		const char *account = NULL;
		const char *folder = NULL;

		switch (selectedRadioButton) {
		case IDC_RADIO1:
		case IDC_RADIO2:
			account = (const char *)ExecAtMain("CurrentAccount");
			if (IsHidemaruMailMain() || IsHidemaruMailGrep()) {
				folder = CurrentFolder();
			} else {
				folder = (const char *)ExecAtMain("CurrentFolder");
			}
			break;

		case IDC_RADIO3:
			account = (const char *)ExecAtMain("CurrentAccount");
			if (selectedCheckBox) {
				folder = "";
			} else {
				folder = "受信+送信済み+ユーザー";
			}
			break;

		case IDC_RADIO4:
			account = "";
			if (selectedCheckBox) {
				folder = "";
			} else {
				folder = "受信+送信済み+ユーザー";
			}
			break;
		}

#ifdef _DEBUG
switch (selectedRadioButton) {
case IDC_RADIO1:
case IDC_RADIO2:
case IDC_RADIO3:
	if (account == NULL || strlen(account) == 0) {
		MessageBox(NULL, "秀丸メールにアカウントが見つかりませんでした。\nこのエラーが頻発するようなら作者に連絡してください。", "HidemaruMailSearch", MB_OK);
	}
	break;
}
#endif

		std::string inputText = history[0].c_str();
		std::string query;
		trim(inputText);

		// お気に入りの保存と読み込み
		if (inputText.find("fav:") == 0) {
			size_t pos = inputText.find(' ');
			if (pos != std::string::npos) {
				size_t len = strlen("fav:");
				if (pos != len) {
					std::string favname = inputText.substr(len, pos - len);
					std::string favval = inputText.substr(pos + 1);

					if (favval == "\"\"") {
						iniFile->write("Favorite", favname.c_str(), NULL);
						return 0;
					} else {
						iniFile->write("Favorite", favname.c_str(), favval.c_str());
						return 0;
					}
				}
			} else {
				char *favval = iniFile->read("Favorite", inputText.substr(strlen("fav:")).c_str());
				if (favval != NULL) {
					inputText = favval;
					free(favval);
				}

			}
		}
		if (inputText.compare("help:") == 0) {
			if (helpCmd == "") {
				char *temp;
				char *work = NULL;
				DWORD type;
	
				if ((temp = (char *)get_reg_value(hideinstloc, &type)) == NULL) {
					// 秀丸がインストールされていないなら、メモ帳
					helpCmd = "notepad.exe ";
					work = (char *)get_reg_value(turukamedir, &type);
					helpCmd += "\"";
					helpCmd += work;
					helpCmd += "\\HidemaruMailSearch.txt\"";
				} else {
					helpCmd = "\"";
					helpCmd += temp;
					helpCmd += "\\Hidemaru.exe\" \"";
					helpCmd += "/j";
					helpCmd += HELPFILE_LINE;
					helpCmd += " ";
					if ((work = (char *)get_reg_value(macropath, &type)) == NULL) {
						// マクロパスが存在しなければ秀丸の InstallLocation がホーム
						helpCmd += temp;
					} else {
						helpCmd += work;
					}
					helpCmd += "\\HidemaruMailSearch.txt\"";
				}
				if (temp != NULL) {
					free(temp);
				}
				if (work != NULL) {
					free(work);
				}
			}
			PROCESS_INFORMATION pi;
			STARTUPINFO si;
			memset(&si, 0, sizeof(STARTUPINFO));
			si.cb = sizeof(STARTUPINFO);
			CreateProcess(NULL, (LPSTR)helpCmd.c_str(), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
			return 0;
		} else if (inputText.find("debug:") == 0) {
			query = inputText.substr(strlen("debug:"));
		} else {
			std::string flag;
			
			trim(inputText);
			while (inputText.size() != 0) {
				int tagKind = findTag(inputText);
				if (tagKind == TARGET_SMALLHEADERBODY && inputText.find(colon_targets[TARGET_SMALLHEADERBODY]) != 0) {
					inputText = colon_targets[TARGET_SMALLHEADERBODY] + inputText;
				}
				rc = makeQuery(tagKind, inputText, query, flag);
				trim(inputText);
			}
		
			if (flag.size() != 0) {
				if (query.size() != 0) {
					query += ",";
				}
				query += flag;
			}

			// サブフォルダを検索対称にするかどうか
			if (selectedRadioButton == IDC_RADIO2) {
				query += ",subfolder=1";
			} else {
				query += ",subfolder=0";
			}

			// 常にハイライト
			query += ",hilight=1";
		}

#ifdef _DEBUG
		println("■アカウント");
		println(account);
		println("■フォルダ");
		println(folder);
		println("■検索式");
		println(query);
		println("■入力");
		println(history[0]);
#endif
		if (IsHidemaruMailMain() || IsHidemaruMailGrep()) {
			SetFindPack(query.c_str());
			StartDoGrep(account, folder);
			PushFindPack();
		} else {
			ExecAtMain("SetFindPack", query.c_str());
			ExecAtMain("StartDoGrep", account, folder);
			ExecAtMain("PushFindPack");
		}
	}
	return 0;
}